为啥要做接⼝测试?接⼝测试⽤例怎么写?哪些⼯具可以⽤?原⽂链接
⽬录
1. 为什么要做接⼝测试
在⽇常开发过程中,有⼈做前端开发,有⼈负责后端开发。接⼝就是连接前后台,由于前端开发和后端开发的速度可能不⼀样,例如后端开发好了,但是前端没有开发。那么我们是不是就不需要测试呢?⼤部分⼈都是做功能测试,很多是界⾯的功能测试。
如果你理解了接⼝测试,那么你就可以针对接⼝进⾏测试。
同时,接⼝测试也是后端测试常见的⼀种测试种类。
看看测试⾦字塔,接⼝测试是在中间部分,底层是单元测试,最顶端是界⾯测试。从三者的⾯积⼤⼩来看,单元测试和接⼝测试,才是重点,⽽界⾯测试真的是太少。这个⾯积,你可以理解为代码覆盖,也可以理解为测试的⼯作量。这⾥要提出⼀个观点:现在国内公司越来越重视接⼝测试,之前的⼏年,很多测试资源都放在了界⾯的测试,今后会逐步放在接⼝测试功能,性能,⾃动化和稳定性测试上⾯。⽩盒测试⽬前还是开发⾃⼰测试,有些⼤公司,注重软件产品质量,也会安排⼀些有代码能⼒的测试⼈员,去辅助和指导开发⼈员进⾏单元测试,共同保证软件的质量。
2.什么是接⼝测试
⼀般来说,测试接⼝,就是指测试接⼝的功能,性能和稳定性测试,当然可能还有安全性测试。
这个⼊门系列会让你掌握接⼝的功能测试。⼀般,来说我们听说到的接⼝基本上都是指HTTP或者HTTPS协议的接⼝测试,也就是⼀些web服务请求。⼀个软件项⽬中,有很多接⼝,少的有⼏⼗个,多的有⼏百上千个接⼝。这个时候,我们没有软件界⾯,没有具体的测试场景,只有⼀个接⼝描述⽂档。我们需要把接⼝这样抽象的东西,通过软件测试的理论和⽅法去测试接⼝,出接⼝的功能和安全性的缺陷。
接⼝有内部接⼝和外部接⼝。内部接⼝就是开发⼈员⾃⼰开发的接⼝。外部接⼝,好⽐⽹站调⽤⽀付和⽀付宝⽀付接⼝。还有⼀些模块与模块之间的接⼝。学习过Java或者⽤过selenium的⼈,应该
对接⼝有了解。你的⾃动化脚本调⽤了很多selenium的接⼝。
3.接⼝的分类
在开始做接⼝测试之前,有必要了解⼀下接⼝的分类。这⾥的分类,主要是HTTP请求⽅法分类。
HTTP请求⽅法()
根据HTTP标准,HTTP请求可以使⽤多种请求⽅法。
HTTP1.0定义了三种请求⽅法: GET, POST 和 HEAD⽅法。
HTTP1.1新增了五种请求⽅法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT ⽅法。
⽅法描述
1GET请求指定的页⾯信息,并返回实体主体。
2HEAD类似于get请求,只不过返回的响应中没有具体的内容,⽤于获取报头
3POST向指定资源提交数据进⾏处理请求(例如提交表单或者上传⽂件)。数据被包含在请求体中。POST请求可能会导致新的资源的建⽴和/或已有资源的修改。
4PUT从客户端向服务器传送的数据取代指定的⽂档的内容。
5DELETE请求服务器删除指定的页⾯。
6CONNECT HTTP/1.1协议中预留给能够将连接改为管道⽅式的代理服务器。
7OPTIONS允许客户端查看服务器的性能。
8TRACE回显服务器收到的请求,主要⽤于测试或诊断。
附:GET和POST的区别,可以参考另⼀篇⽂章,这个问题,⾯试中经常被提到。简单来说,可以从三个⽅⾯去回到这个区别:⽅式、⼤⼩、安全
1).⽅式
⽅式指的是参数的传⼊⽅式,GET⽅法⼀般是指获取服务器上的数据,参数直接跟着URL后边,直接
可以放到浏览器地址栏⾥,例如登录就是采⽤GET⽅法。⽽POST⽅法是指客户端给服务器上提交表单数据,所以POST是通过表单提交的,例如你⽹页上的调查问卷和答题就是采⽤POST⽅法。
2).⼤⼩selenium怎么使用
上⾯已经知道GET是直接在浏览器地址栏输⼊,由于浏览器有限制,⼀般整个URL的长度可以很长,但是不能超过2049KB的⼤⼩限制,⽽这个POST就没有⼤⼩限制。
3).安全性
由于GET的参数是在浏览器地址栏直接拼接,暴露在互联⽹中,肯定不安全。POST是通过表单数据提交,相对⽐GET⽅法更安全。
4、设计接⼝测试⽤例⽅法
前⾯我们已经介绍了什么是接⼝测试和接⼝测试的意义。在开始接⼝测试之前,我们来想⼀下,如何进⾏接⼝测试的准备⼯作。或者说,接⼝测试的流程是什么?有些⼈就很好奇,接⼝测试要流程⼲嘛?不就是拿着接⼝⽂档直接利⽤接⼝测试⼯具测试嘛。其实,如果只是三五个接⼝,你可以这么做⼀个临时的接⼝测试。但是,如果是上百个接⼝,或者,你们公司的这个项⽬,第⼀次做接⼝测试,那么,我们还是很有必要遵守测试的流程。
1.接⼝测试的流程
接⼝测试和功能测试⼀样,流程也⼤致遵守V模型,请看下图
⼀般来说,接⼝测试左边的每个阶段,每个公司可能都侧重点不同,例如有些公司就没有需求讨论和需求评审这个阶段。不管如何,⽤例设计,这个是少不了,⽽且是重点,要花时间的阶段。只有覆盖全⾯的接⼝测试⽤例,才能有⽐较好的测试接⼝覆盖率,才会出更多的接⼝的Bug.
2.为什么要写⽤例
功能测试⽤例,⼤家都写过。接⼝测试⽤例,很多⼈没有写过。在写之前,我们来讨论下,为什么要写接⼝⽤例。
1.          理清思路,避免漏测
2.          提⾼测试效率
3.          跟进测试进度
4.          告诉领导做过
5.          跟进重复性⼯作,回归功能使⽤
上⾯五点,结合⾃⼰测试实际经验,应该来说是很好理解和认同的。有⽤例,就有思路,避免漏掉测试点。跟着⽤例测试,避免随机测试那种没有⽬的性的测试,提⾼测试效率。有⽤例,上级问你完成的进度,你好⽤数据回答。有⽤例,⽤来标记你执⾏的结果,证明你做过测试。避免将来发⽣问题,⼈家说你没有测试,有数据和证据说话。接⼝测试也需要重复跑,跑⼏轮,或者⽤⾃动化天天跑。这样的重复性⼯作,⽤例可以保证每次重复做的是⼀样的情况。
3、接⼝主要设计⽤例点
主要从四个⽅⾯来设计接⼝⽤例:功能,逻辑业务,异常,安全
功能:
1)功能是否正常;
2)功能是否按照接⼝⽂档实现
举例:有些添加到购物车,需要登录才能添加。也就是业务要求不⽀持游客添加购物车功能,如果设计⼀个没有登录的⽤户,然后去测试添加购物车接⼝,结果接⼝能添加到购物车,说明功能不正常,不符合需求和接⼝⽂档描述。
逻辑业务:是否依赖业务;
举例:该接⼝调⽤之前,需要调⽤登录接⼝,如果不登录也能请求数据,不符合业务规则。
异常:参数异常和数据异常
参数异常:关键字参数,参数为空,多,少参数,错误参数
数据异常:关键字数据,数据为空,长度不⼀致,错误数据
举例:不管数据异常还是参数异常,测试点差不多,⼀个参数有key和value,key表⽰参数,value表⽰数据。第⼀,看看参数和数据能不能⽀持关键字,例如Java中的保留关键字等等。第⼆个就是参数和数据都为空,看看是否做了判断。第三个,参数多和少,例如有两个参数的接⼝,你需要设计⼀个三个参数的⽤例,⼀个只有⼀个参数的⽤例。数据那边长度不⼀致,例如设计很长的字符串是否⽀持,因为数据库创建表过程都设置好了每个字段的长度。输⼊错误的参数和数据,例如故意输出单词等等。
安全测试⽤例设计:
1. cookie:有cookie才能获取数据,如果不带cookie还有信息返回,说明有问题
2. header:正常接⼝带header信息,删除header看是否能够返回数据。
3. 唯⼀识别码:app⼿机识别码,⼀般是唯⼀的。
安全测试主要从上⾯三点检查。第三个是唯⼀识别码,主要是指app上⼿机的识别码,⼀般很少⽤到,除⾮很严格的接⼝测试,例如银⾏app登录,需要指纹,⽽指纹来源⼿机,⼀般有⼀个⼿机识别码判断过程。
4、接⼝测试的⼯具
⽬前,市场上有很多⽀持接⼝测试的⼯具。利⽤⼯具进⾏接⼝测试,能够提供测试效率。例如,加⼊让你⼀天完成100个接⼝测试任务,你觉得你加班能否完成。如果有⼯具,但是不是所有⼯具都能够⽀持你完成这个任务。下⾯我们就来挑选⼏个⼯具,简单介绍⼀下。
1.我画了⼀个图
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
不要以为LR只能做性能测试,loadrunner同样可以做接⼝⾃动化和接⼝压⼒测试。只是我们很多⼈,
不会利⽤LR的函数,进⾏开发接⼝测试⽤例。
8.JMeter
JMeter同loadrunner⼀样,都是以性能测试出名,⼀般⽤JMeter也是做接⼝性能测试。例如java+Jmeter+ant+jenkins做接⼝性能监听测试。JMeter如何做接⼝测试,请看我JMeter系列⽂章。
上⾯说了这么多⼯具,基本覆盖了接⼝功能测试,接⼝⾃动化测试,接⼝性能测试。这⾥提⼀下,在Python语⾔下有⼀个性能测试⼯具推荐:Locust。⾃⼰百度,安装下,很简单的web界⾯,感觉很不错,作为⼀个轻量级的协程测试⼯具。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。