【python实践】之接口测试及其自动化

开篇:接口测试我的理解

1.写在前面

1.1 接口测试最重要的是什么?我的理解是参数,因为对接口的测试就是看不同的入参情况下接口的返回情况是否正确、合理,所以能够设计出覆盖率高的参数,接口测试便已事半功倍。

1.2 接口测试测哪些?我的理解是测参数校验+业务逻辑,前者比较通用且自动化的性价比高,后者和业务粘性大,自动化的性价比低,但是纯正向的,比如监控级别的推荐自动化。

1.3 接口测试怎么测?我的理解是:第一步对接口逻辑理解清楚,方法可以是参加评审+接口文档+开发代码静态走查;第二部是有针对性的设计参数集合;3.使用工具、脚本去批量测试,检查结果。以上所说的三步骤包含了手工测试和自动化测试

中篇:目前我们在做的接口自动化,使用的知识点:python+mysql+django

1. 已实现的功能:

(0).对returncode(配置值)比较、返回包参数完整性校验

(1).web页面编写接口测试用例,选择待执行的接口(单条、多条自由组合)提交执行,检查接口测试结果(统计结果、每条case执行结果)

(2).数据库存储case表、执行表、统计表

(3).初始化每种参数类型对应的常用参数值组合,页面组合接口参数时,只需要引入模板参数+适当修改,系统自动按照接口传参的实例构造接口参数,规避了人工输入接口参数。

2.有待改进的地方:

(1).由于每条case的预期结果都有不同,所以需要在生成好的测试用例汇中修改对应case的预期结果,如果case条数偏多,会较麻烦;

(2).case表的历史执行记录无法存储,目前只能在执行完成后导出到excel表格;

(3).接口业务逻辑测试如何实现,暂无性价比高的方法,未实现。

3.实现方式:

3.1 mysql数据库设计

(1).case_接口名称。用于存储每个接口所需要的参数,包括执行级别、接口地址、头文件、请求方式、请求参数、预期code结果、实际code结果、code比较结果、预期参数集、实际参数集、参数完整性比较结果;

(2).exe_module。用于存储前台页面添加的待执行任务集合(比如页面提交了一个任务,包含对3个接口进行测试),供工具调用;

(3).static_module。用于存储每个待执行任务集合下的接口执行统计情况,如code比较结果统计、参数完整性比较结果统计;

(4).config_total。配置表

3.2 django设计

(1).case表创建页面。用于为待执行测试接口创建case_接口名称数据库表;

(2).case表数据添加页面。用于给指定的case表添加该接口测试所需要的测试数据。该页面接口参数通过用户自己选择参数对应的数据类型匹配初始化的数据+手动修改,来完成对一个参数的参数化,多个参数多次参数化,一键生成该接口所需要的参数集合

举例:

a.接口A的入参是:phone=15100000000&type=web 接口参数定义phone是int型,type是string型

b.页面在选择phone字段+int型,就可以得到该字段预设值好的参数化类型,如["15100000000","test","测试","@#¥","055165344321","null"]

c.其后用户可手动去修改这些参数,作为phone字段最终的参数集合

d.依次给每个参数设置参数集合

e.最后提交时系统根据入参样例将每个参数的参数集合组装成新的接口参数。

(3).模块选择页面,该页面显示的是所有以case开头的表,用户可自己选择待执行的表明提交到exe_module表

(4).测试结果页面,展示已执行接口统计结果+失败case查看

3.3 python功能设计:

(1).http请求封装,底层是get、post、加解密方法;

(2).code校验、参数完整性校验封装;

(3).数据库操作封装;

结尾:接口表层的测试,可以将其设想为黑盒测试,但如果深层次的测试,还是要了解代码逻辑,知己知彼才能设计出有针对性的参数,才能真正覆盖接口场景,这是下一步我们需要加强的。

你可能感兴趣的:(【python实践】之接口测试及其自动化)