背景技术:
随着互联网行业的快速发展,越来越多的软件产品出现在应用市场,对软件质量要求也越来越严格,传统的功能测试已经难以满足系统发展的需求。根据历史模型推算,底层1个缺陷大约会引起上层8个缺陷,可见接口测试的重要性。测试人员常用的接口测试方法有jmeter,postman等测试工具、或者通过代码编写脚本进行接口测试验证。但在实际项目测试中会发现,通过代码编写接口用例对测试新手有一定的门槛,无法快速上手;而jmeter,postman虽然容易使用,但难以对测试用例进行管理。为此我们使用httprunner,fiddler抓包工具来实现接口自动化测试。测试人员只需使用fiddler抓包,然后将所抓取的包导出har格式,通过har2case命令转换成yml格式,再导入到httprunner中的方式来完成接口测试用例编写。我们还可以配置jenkins定时任务,生成测试报告通过邮箱或者企业微信发送给相关人员,更快更方面的监控接口的正常运行。
目的:
版本快速迭代更新,测试时间相对来说较短,除了新功能外同时还要保障旧版本的功能及版本接口兼容,需要花费大量时间去回归老功能的质量。所以进行接口自动化测试是非常必要的,在测试阶段可以提升测试人员的工作效率,版本发布成功之后,线上接口也可做定时监控,有问题及时告知开发人员。而常用的接口测试方法要么对测试新手有一定的门槛,无法快速上手,要么难以对测试用例进行管理。本发明的目的是使用httprunner,fiddler抓包工具来实现接口自动化测试。测试人员只需使用fiddler抓包,然后将所抓取的包导出har格式,通过har2case命令转换成yml格式,再导入到httprunner中的方式来完成接口测试用例编写,极大的降低脚本编写门槛,也提高了测试效率。同时httprunner支持完善的测试用例分层机制,充分实现测试用例的复用,测试前后支持完善的 hook 机制,响应结果支持丰富的校验机制,测试结果统计报告简洁清晰,附带详尽统计信息和日志记录。
实现方案:
1、安装python环境,并在python环境中使用pip install httprunner命令导入httprunner模块。
2、使用脚手架命令hrun --startproject xxx创建项目,包括api目录(用于存放用例的最小单元),debugtalk.py文件(用于定义python函数,进行相关处理),reports目录(用于存放测试报告),testcases目录(用于存放每个接口的用例,可设计测试步骤),testsuite目录(将测试用例整合起来执行),.env文件(用于定义环境变量,在全局调用)。
3、安装fiddler工具,通过fiddler进行抓包,保存成.har格式,并通过har2case命令将har格式的文件转成yml,然后导入到httprunner项目中的api目录下,生成测试脚本。
4、根据api目录下的接口编写测试用例,将全局参数放到.env文件下,对用例进行参数化,并将细化的测试用例放到testcase目录下,并对脚本进行调试。
5、在testsuite目录下对用例进行管理,分为线上冒烟用例,测试环境回归用例。通过--dot-env-path env/xx.env命令可指定不同环境进行脚本执行。
6、将脚本上传到git仓库,在jenkins上分别配置两个任务。一、测试环境回归任务,当开发提测时,可触发这个任务,跑一次接口脚本,并将测试结果通过邮件或者企业微信告知相关人员。二、线上健康检查,每隔2个小时跑一次接口脚本,当有失败用例时,并将测试结果通过邮件或者企业微信告知相关人员,以便损失最小化。