测试积点老人 发表于 2018-11-29 15:09:05

互联网服务端接口自动化测试

本帖最后由 测试积点老人 于 2018-11-29 15:10 编辑

在飞速发展的互联网时代,服务端测试已经成为一个重要的产品保障手段。如何在互联网公司提供稳定的服务端接口测试,各个公司实施的方法和技术也不同,今天我们就此展开讨论学习。

互联网服务端接口自动化是各个公司都需要的一部分业务,如何快速高效地完成接口测试呢?以帮助大家实现高效的接口测试为出发点,本场 Chat 包含了我在互联网接口测试领域的一些方法和心得,希望大家一起讨论和分享,内容包括但不仅限于:


[*]互联网服务端接口测试介绍;
[*]接口测试常用的工具、平台、框架;
[*]接口测试的一些问题和实践。


下图是经典的测试金字塔,服务接口测试就在中间位置,并占据着承上启下的作用,从这个图可以看出,服务服务端接口测试的重要性。

互联网服务端接口测试介绍目前市场上有很多支持接口测试的工具。利用工具进行接口测试,能够提高测试效率。例如让你一天完成100个接口测试任务,你觉得你加班能否完成吗?你可能会说有工具可以帮忙呀,但不是所有工具都能支持你完成这个任务。下图是我挑选的几款工具,接下来对它们简单介绍一下。
1.fiddler首先,这是一个 HTTP 协议调试代理工具,说白了就是一个抓 HTTP 包的工具。Web 测试和手机测试都能用到这个工具。既然是 HTTP 协议,这个工具也能支持接口测试。稍后文章,我们会专门介绍 fiddler 这个工具。
2.postman这是一款 Google 工程师开发的一个插件,可以安装到 Chrome 浏览器上。支持不同接口测试请求,能够管理测试套件和自动化运行,弱点在于,自动化断言功能不强大。不能和 Jenkins、代码管理库进行持续集成测试。但是,它绝对是一个很好的半手工,半自动化测试工具。我一般在写自动化接口测试用例,会打开 postman 进行辅助测试和 Debug。这个工具稍后也会在文章中介绍。
3.wireshak这是一款抓包工具,支持抓各种包,对 TCP、UDP、HTTP 都支持。如果做底层网络数据测试,一般都需要用到它。作为接口测试,这个软件有点不友好。因为刷新数据太快,不好定位每个操作对应的接口。所以,在这里不准备过多介绍该工具。
4.soupUI这是一款提供有开源免费版和企业收费版的软件。在国外的接口测试中,使用较多。该工具能够支持接口自动化测试和接口性能测试,也支持和 Jenkins 做持续集成测试。了解一下就可以,可以下载一个社区免费版,做一个 Demo 试试。
5.Java 代码做接口测试为什么要用代码做接口自动化测试呢?一些工具功能是有限制,很多公司需要一些特定的功能,工具不支持,只好用代码进行开发。一般用 Java 做自动化测试,主要利用 httpclient.jar 包,然后利用 JUnit 或者 TestNG 这样的单元测试工具,进行测试用例的开发,接着在 Jenkins 上创建一个 job,进行持续集成测试。
6.Python 代码做接口测试和 Java 一样,用 Python 做接口测试,可以利用一个功能强大的第三方库 Requests,它能够方便地创建接口自动化用例。Python 下的单元测试框架,一般采用unittest。生成测试报告,一般选择 HTMLTestRunner.py。同样,可以结合 Jenkins 做持续集成测试。
7.LoadRunner不要以为 LoadRunner 只能做性能测试,它同样可以做接口自动化和接口压力测试。只是我们很多人,不会利用 LoadRunner 的函数,设计接口测试用例。
8.JMeterJMeter 同 LoadRunner 一样,都以性能测试出名,一般用 JMeter 也是做接口性能测试。例如 Java+Jmeter+Ant+Jenkins 做接口性能监听测试。JMeter 如何做接口测试,可以查阅官方文档和 CSDN 博客专栏《JMeter 性能测试》 。
上面说了这么多工具,基本覆盖了接口功能测试、接口自动化测试、接口性能测试。这里提一下,推荐 Python 语言下的一个性能测试工具 Locust。自己百度并安装下,很简单的 Web 界面,作为一个轻量级的协程测试工具,感觉很不错。
服务端测试也应该具备一些计算机基础知识的能力,例如下面几个领域的知识。
操作系统和网络互联网里最大的应用场景就是高并发、高可用、高性能的线上服务,做这类系统实际上考验的是我们对操作系统和网络的理解。任何一个系统最后都是运行在操作系统之上的,也都运行在网络之上的,包括分布式系统,所以,需要在操作系统和网络上一定要有较深的造诣,尤其是高并发和高性能。如果对操作系统原理一无所知,基本很难理解什么是并发和锁,很难理解高性能用什么指标来衡量,以及怎么实现高并发、高可用和高性能。
对于操作系统,我们必须了解 CPU 的多核体系结构、内存分页和缓存技术、磁盘 IO 的优略和网卡 IO 的情况,并且要理解计算机的工作原理,会根据这些指标粗略评估服务能够输出的性能。对于网络,必须理解理论上定义的7层模型,了解 TCP/IP 的三次握手。另外我们在分布式服务架构中多数使用应用层的HTTP协议,所以还需要对 HTTP 协议有很深刻的理解。
算法和数据结构应用层面的小伙伴们可能对算法和数据结构的应用比较少,即使有应用也比较简单,但是算法能力代表了一个人的逻辑思维和思考能力,能把各种基础算法理解的人智商都不会低,能够把程序写好的人逻辑思维一定很强。一般在面试小伙伴的时候,我都会考察一下他会不会高级算法,例如递归、剪枝、贪婪、动态规划。仔细想一下就会知道,会动态规划的人,他不是勤奋的就是聪明的,无论哪一样,你都有录取他的冲动。
线上高并发服务方向线上高并发服务是个强需求,无论你开发哪类应用和网站,线上服务都是必须的,有了服务才有了功能,才有了产品,我也主要从事互联网后台高并发服务的设计与实现。解决高并发服务其实并没有那么难,这些年高并发服务的技术栈也已经没有了门槛,只要投入足够的成本,构建可伸缩的服务不是问题,达到多大的 TPS 也都不是问题,核心思想就是“分而治之,大而化下,小而化了”。我们使用的缓存抗读、消息队列抗写、数据库分库分表、缓存分片、应用层伸缩、减少竞争、7层负载均衡、三四层负载均衡等,以及 CDN、DNS 轮训等等,这一切都是“分而治之”的思想。
大数据方向大数据是最近比较火的方向,大小公司都在使用大数据技术。大公司使用大数据分析技术从众多数据中分析出业务模型,得出有价值的结果,来帮助企业制定市场和销售策略,中小公司多数使用大数据出报表和做风控等。

页: [1]
查看完整版本: 互联网服务端接口自动化测试