什么是接口自动化测试
接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查接口参数传递的正确性,接口功能实现的正确性,输出结果的正确性,以及对各种异常情况的容错处理的完整性和合理性。接口自动化测试就是借助于接口测试工具或自动化脚本完成接口测试。
为什么要做接口自动化测试
由于如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,而接口测试有如下好处:
自动化测试的优势:
- 更高效、更频繁的回归测试:在回归测试阶段,如果发版周期短,系统大量的功能点用手工测试会非常耗时、繁琐、枯燥、效率低下;完善的自动化测试可以替代人工测试,节省大量人力
- 一致性和重复性:每次运行的自动化测试具有一致性,就很容易发现被测软件的任何改变,人工是很难做到的
如何开展接口自动化测试
- 接口自动化测试开展条件
- 接口测试工具选择
常用的接口测试工具如Jmeter、Postman、SoapUI,各有千秋,根据接口协议类型选用合适的接口测试工具,能够快速地进行半自动化的接口测试,但是在扩展性、灵活性、测试报告生成等方面则不如基于编码实现的自动化测试框架。
- 目前实现的自动化测试框架
- 接口测试案例设计
测试工作必须能量化,才能真正保障软件质量,而测试用例就是将测试行为具体量化的方法之一。对一个系统做接口测试,识别出合理的测试对象才能保证接口测试达到预期效果。分析出系统的核心接口和关键模块,并对其进行完整的测试,能以最小的测试投入达到最好的测试效果。
- 接口测试案例设计方法
正向案例
根据该接口实现的功能分析出该接口的正常用例包括哪几种输入参数的组合,从而在用例中构造相应的参数组合来覆盖所有的正常分支。
输入参数:
Ø直接赋值
Ø接口传参:在调用被测接口前先调用其他接口,将其输出参数作为被测接口所需要的输入参数传入
Ø参数组合:
1.根据自然逻辑进行排列组合,排除无效的组合
2.划分等价类的组合进行合并同类项
3.从业务上分析有没有特殊的组合,此类用例往往不止涉及单一接口,而是涉及到根据某个特定业务流程而产生的接口调用流程,通过接口调用的方式模拟关键业务流程,可以在不用搭建辅助测试环境的情况下单纯的测试被测接口
输出参数:
对于正常用例的输出参数也需要在用例中明确写出预期值,作为用例是否成功执行的依据
反向案例
选取一条正常用例的数据作为基础数据,然后遍历所有的输入参数,针对每一个输入参数,分别使用等价类法、边界值法等用例设计方法枚举出该参数的所有异常值,该用例除了该参数为异常外,其余参数均保持正常值不变,以保证测试结果仅由异常的那一个参数导致。
注意点:
Ø接口应在任何时候都返回错误码,而不能存在未经处理,直接导致调用接口的程序异常退出,或者将底层错误信息直接返回给上一层调用程序。
Ø错误码的准确性对接口调用失败原因的定位有非常重要的意义,将极大降低后续维护成本,错误码的设置应当准确,无歧义,一种错误类型一个错误码,尽量将错误码编得更细,更有利于错误排查。比如:参数长度错误和参数类型错误应当为不同的错误码,而不应该是统一的参数错误的错误码。同时,错误码应当在接口设计文档中有明确定义,并且在不同接口中保持一致。
针对输入设计
常见参数类型有:
(1)数值型(int,long,float,double等)
(2)字符串类型
(3)数组或链表
针对逻辑设计
1、约束条件分析(约束条件的测试在接口测试中更为重要,可以绕过前端限制)
Ø数值限制:例如:要求积分50才可参与兑换活动。
Ø状态限制:登录状态、订单状态等。
Ø关系限制:绑定关系,好友关系等
Ø权限限制:管理员、订单所属权等
2、操作对象分析
例如用户绑定手机号,手机号就是操作对象,而这个手机号的话费、流量也是对象。
主要是针对合法和不合法的对象进行:如2096接口提交订单修改信息,发件人/收件人手机号非法
3、状态转换分析
被测逻辑可以想象成状态机,不同状态之间根据功能逻辑从这个状态切换到另一个状态。如果我们打乱了这个次序,从一个状态切换到一个下一状态集之外的状态,那么逻辑将会打乱,就会出现逻辑问题。
正常的状态切换:订单从待支付–>已完成,整个流程中订单状态正常切换
异常的状态切换:如2009接口更新订单状态–待支付订单直接更新为配送完成
针对输出设计
接口处理正确的结果只有一个,但是错误异常返回结果可能有很多情况或很多值。如果知道返回结果有哪些,就可以针对不同的返回结果设计测试用例。
(我们目前没有错误返回码的明细,所以该类型的设计是基于接口测试工具抓出来的,覆盖并不全面)
接口测试报告
Allure 是一种灵活的轻量级多语言测试报告工具,不仅可以以简洁的Web报告形式非常简洁地显示已测试的内容,也允许参与开发过程的每个人从日常测试中提取最大程度的有用信息 。从开发/质量保证的角度来看,Allure报告可以缩短常见缺陷的生命周期:可以将测试失败划分为bug和损坏的测试,还可以配置log,step,fixture,attachments,timings,历史记录以及与TMS的集成以及Bug跟踪系统,因此负责任的开发人员和测试人员将掌握所有信息 。从管理人员的角度来看,Allure提供了一个清晰的“全局”,涵盖了已涵盖的功能,缺陷聚集的位置,执行时间表的外观以及许多其他方便的事情。
下面是执行标记online标签的测试案例的执行结果,@pytest.mark.{tagname} 执行标记案例也是pytest框架灵活性的体现。
参考文献
[1] 王彦.移动互联网软件测试技术研究及应用[J].现代信息科技,2019,3(3):8-9,12.
[2] 邓松泉.软件测试技术分析[J].新商务周刊,2018,(21):192.
[3] 51Testing 2018软件测试行业现状调查报告.51Testing软件测试网,2019,4(30)
[4] 胡春美.Web项目接口测试[J].电子技术与软件工程,2018(20):45
[5] 何舒. API接口自动化测试系统设计及实现[D].电子科技大学,2018
[6] 赵斌.软件测试技术经典教程[M].科学出版社.2017:77-79.
[7] 顾翔.软件测试技术实战设计、工具及管理[M].人民邮电出版社.2017:71-72.
[8] 麦思博.软件测试之道:那些值得借鉴的实践案例[M].科学出版社.2017:11-12.