Python接口自动化实战 - 需求分析
前言:
随着产品的快速迭代,自动化测试几乎已经成为每个测试员都必须掌握的基本技能。大家都知道,产品在开发阶段是不适合用自动化,但是当产品趋于稳定状态,基本功能大体上不会改变的时候,自动化测试就会开始凸显他的优势。
这几个月工作一直在做一个即时通讯的产品(web端,安卓、Ios),产品迭代的速度很快,一周更新2次。每次发布版本,就要保证基本功能是正常的,也就是我们所说的回归测试,所以我决定要自己搭建一个接口自动化框架,来解决两个我目前遇到的问题:
1)在开发提交新的接口前进行冒烟测试,以保证系统是能够正常开展测试的
2)功能测试完成/bug回归完成后进行回归测试,保证bug修改完成后没有引入新的问题
有了这个想法,就要开始行动啦,接下来会把这几个月的学习和开发过程记录下来,也算是自己的一个小实战吧。
1.测试目的
随着公司项目的不断增大,接口的服务随之增多,回归的任务量越来越大,需要对接口进行定时回归测试来保证系统的稳定性。
1)在开发提交新的接口前进行冒烟测试,以保证系统是能够正常开展测试的
2)功能测试完成/bug回归完成后进行回归测试,保证bug修改完成后没有引入新的问题
2.测试方法
目前我们的接口都是使用的http协议,其测试的基本原理是模拟前端(客户端)向服务器发送数据,得到相应的响应数据,从而判断接口是否可以正常的进行数据交换。
根据开发人员提供的接口访问地址、入参格式、请求格式,进行接口请求数据拼接,并查看返回结果及返回报文、响应时间,检查返回Json内容是否符合接口定义规范,是否符合预期的返回结果。
3.测试框架实现过程
第一阶段:
1)基于python的unittest框架,完成单一接口的请求,并封装成类
2)添加异常处理
第二阶段:实现数据与代码的分离
1)测试用例设计:具体的测试思路在第四部分会提到
2)测试数据放在excel里面,利用openpyxl去读数据
3)将读取出来的测试数据用什么类型去存储?-字典
4)测试数据参数化?-ddt
5)写回实际结果和测试结果
第三阶段:
1)实现用例的可配置
2)日志设计,让每一步操作都有迹可循
3)生成测试报告-HTMLReport
4)实现持续集成- jenkins
框架结构图如下:
4.测试思路
首先根据接口文档,了解清楚被测接口对应的、入参、出参及返回数据的Json 结构规范,根据测试场景进行测试。
1)理解接口参数,熟悉接口参数的输入要求、输入值范围、必填项等;
2)理解接口输出,熟悉返回json的结构构成、返回值类别、返回值范围、返回data的不同类型等。
3)理解接口的逻辑、接口的业务关联,熟悉技术方案中的接口相互关联、依赖的关系,接口与接口之间的数据传递等。
4)寻找测试点,根据输入(参数名、取值范围)、输出(参数名、返回值范围)、关联关系,进行测试点分析。
4.1 正常场景测试
严格根据接口文档的定义,提供正确的参数名和参数,测试接口是否正常
4.2 异常场景测试
1)长度限制:如注册时,输入少于或大于11位的手机号
2)必填项判断:必要参数为空,如登录时,不输入密码
3)数据类型判断:如要求传入int类型,结果传入string类型
4)数据正确性的判断:如登录时,输入错误的手机号码
5)重复值判断:如注册时,输入一个已经存在的用户名
4.3 逻辑场景测试
4.4断言检查
检查接口请求返回的结果是否符合预期的结果:如状态码、数据库判断、数据值等等。
具体的断言检查需要根据业务场景来设定