接口测试分为:功能测试、自动化测试、性能测试
一、接口功能测试:
1、制定测试计划、分配任务:环境搭建、测试接口
2、从api文档中提取接口清单:提取三要素:URL地址+请求方式、类型(JSON串)、状态码
3、设计接口测试用例并参数化覆盖测试用例:覆盖所有必选参数、组合可选参数、参数边界值、越界数据、参数取值范围是枚举变量,覆盖所有枚举值(性别、月份、周)、空数据、特殊字符、错误的数据、政治敏感词
4、编写脚本实现,导入设计的测试数据:csv数据文件/用户参数
5、测试结果汇总,BUG提交
二、接口自动化测试:
原则:
1、只测试重要或重复调用的接口
2、只设计正向测试用例
3、自动化脚本可重读执行
4、一个线程组只设置一个取样器,方便单个接口测试
jmeter接口自动化实现:
1、参数化生成测试数据,使用断言判断响应结果
2、使用setUp新增测试数据,tearDown最后删除自动化测试生成的数据
3、从setUp线程组的取样器中提取数据
4、跨线程组关联-调用函数:setProperty、Property
步骤(数据库-增删改查)跨线程组关联方式:
1、添加测试计划(勾选独立运行每个线程组)
2、添加http信息头管理器
3、添加http请求默认值
4、添加用户定义的变量(路径)
5、添加setUp线程组进行新增
6、setUp线程组下添加取样器:
a、改请求方式-post
b、路径填写变量名
c、消息体上传JSON串,将参数清空;
d、涉及到id可以用函数UUID生成后放到参数里,涉及到名字可以函数Random(随机数)需添加前缀,例:汪_函数
7、在新增取样器下添加响应断言:
a、设置为响应状态码,模式匹配规则选择Equals,返回预期结果填写201
b、设置为响应文本,模式匹配规则选择Substring,预期结果填写添加的前缀
8、在新增取样器下添加后置处理器-正则表达式提取器
a、设置新的引用变量名
b、正则表达式填写结果树下的格式:"xxxx":"(.*?)"
c、模板:$1$
d、匹配数字:0或者其他
e、缺省值没有就勾选后面的框
9、设置函数setProperty
a、属性名称,新设置,函数Property中会填写在属性名称中
b、填写正则表达式提取器中的变量名
c、生成后复制粘贴在BeanShell取样器中
10、在setUp线程组下添加BeanShell取样器
11、添加tearDown线程组删除测试数据
12、在tearDown线程组下添加取样器
a、改请求方式-delete
b、路径填写变量名+新增的id(需要用到上一个接口返回的数据那就用正则表达式提取器)
13、设置函数Property
a、函数setProperty的属性名
b、生成后复制粘贴在tearDown线程组下的取样器路径后面
14、在tearDown线程组下的取样器添加断言
a、设置为响应状态码,模式匹配规则选择Equals,返回预期结果填写204
15、添加普通线程组(改)
16、在改线程组下添加取样器
a、改请求方式-put
b、路径填写变量名+想要修改的id(调用Property函数)
c、消息体上传JSON串,将参数清空;
d、id调用Property函数,其余字段前缀update_+时间函数
17、在改线程组下的取样器下添加响应断言
a、设置为响应状态码,模式匹配规则选择Equals,返回预期结果填写200
b、设置为响应文本,模式匹配规则选择Substring,预期结果填写添加的前缀
18、添加普通线程组(查)
19、在查线程组下添加取样器
a、改请求方式-get
b、路径填写变量名+想要修改的id(调用Property函数)
20、在查线程组下的取样器下添加响应断言
a、设置为响应状态码,模式匹配规则选择Equals,返回预期结果填写200
b、设置为响应文本,模式匹配规则选择Substring,预期结果填写添加改的前缀
21添加结果树
步骤-发送sql语句方式:
1、测试计划下导入jar包
2、测试计划下添加配置元件-JDBC
a、定义变量名
b、url:jdbc:sqlite:数据库资源路径db.sqlite3
c、JDBC:org.sqlite.JDBC
3、在取样器下添加JDBC Request
a、输入配置元件-JDBC中变量名
b、编写sql语句:select 字段 from 表名 where 字段 like "查询的前缀_%"
c、Variable names:填写变量名,几个字段填写几个变量名
4、在取样器下添加线程组
a、改请求方式put/get/delete
b、路径填写变量名+想要修改的id/查询的id/删除的id
三、Jmeter性能测试
原则:
1、线程组:增删改查每个功能点都需要建立单独线程组,避免同一个线程组内添加多个取样器
2、参数化:尽量避免采用CSV,使用前缀_函数生成测试数据
3、查看结果数:一个测试计划就一个结果树
4、报告:添加聚合报告
5、分布式:数量过大采用分布式
6、新增/删除/修改:不要采用时间模式(集合点、QPS)压测,直接使用线程数和循环(特殊情况除外:双十一)
Jmeter性能实现
- 例:半个小时内依次启动1000个用户,要求平均响应时间在3000ms内且错误率为0
1、添加测试计划
2、添加线程组
a、线程数设置为1000
b、时间设置为1800
3、添加取样器
a、设置协议、ip、端口号、请求方式、路径、内容编码
4、测试计划下右击监听器下添加聚合报告/汇总报告(Std Dev偏差值:越小越好)看平均响应时间和错误率
- 例:100个用户同时访问服务器,要求平均响应时间在3000ms内且错误率为0(高并发)
1、添加测试计划
2、添加线程组
a、线程数设置为100
3、添加取样器
4、添加定时器:Synchronizng Time(同步定时器):高并发-多人同一时间进行某件事
a、第一行(一组用户数)设置数量(总用户数可以整除一组用户数)100;总用户数为集合数,这里设置的数为出发数,假如设置了50那就是分了2组50人出发,但是需求是100人同时
5、测试计划下右击监听器下添加聚合报告/汇总报告(Std Dev偏差值:越小越好)看平均响应时间和错误率
- 例:模拟2个用户以20QPS(20次每秒)的频率访问服务器持续10秒,要求平均响应时间在3000ms内且错误率为0(高频率)
1、添加测试计划
2、添加线程组
a、线程数设置为2
b、循环次数设置为200
3、添加取样器
4、添加定时器:Constant(常量吞吐定时器):高频率-一个人多次进行某件事
a、访问频率设置为1200(默认是分钟,其他单位需要换算)
5、测试计划下右击监听器下添加聚合报告/汇总报告(Std Dev偏差值:越小越好)看平均响应时间和错误率以及访问频率(40左右)