jmeter进行的接口测试和压力测试
1.接口测试
接口测试的内容我们之前已经讲过,values-key形式和json串传参形式;
包括的协议有http,webservice(soap),jdbc数据库,java请求
2.参数化
定义:把固定的一个值,变成动态、可变的数组,把数组的值进行值传递。数组大小可控制。
1)使用函数助手的_random函数进行参数化设置;
2)使用配置原件CSV Data Set Config进行参数设置;
策略:
Sharing mode:参数化取值策略
All threads 唯一+每次迭代
Current thread group 基于每个线程组下的唯一+迭代取值(不同线程组是顺序取值,一个线程组是唯一取值)
Current thread 顺序+每次迭代 如果多线程之间值是重复的,那么就是顺序,每个线程之间没有重复,就是唯一
3.为什么参数化
1)数据库校验字段值的唯一性。(数据库修改字段的唯一性,可避免参数化)
2)应用程序不允许用一个值反复操作。(开发调整不允许一个值反复操作,可避免参数化)
3)避免数据库的查询缓存,保证测试结果的真实性。(数据库在执行一条SQL查询操作时,先进行语法检查、语义分析(写法是否正确、表是否存在、是否有权限),生成执行计划,按执行计划做查询操作,如果查询的数据在数据库内存,返回数据;如果不在内存,需要从硬盘里把数据放到硬盘,返回数据,同时会缓存这条SQL的执行计划和结果。如果同样的查询操作,就直接在查询缓存里返回)(数据库关掉缓存,可避免参数化)
3.关联
定义:将服务器返回的、动态的、变化的值,把它保存为一个参数,以便后面需要使用这个参数的地方进行使用
1)使用后置处理器正则表达式提取器
2)json实现,在body Data中输入json入参
4.为什么关联
1)服务器校验该值的合法性;
例子:session、cookie、token、时间戳(formhash等)、验证码(图片验证码、短信验证码、邮箱验证码等)等等。验证码(①.自己写JS,解析图片,获取验证码;②.改成万能验证码)。请求成功不代表业务测试成功,要注意看回放页面是否有报错。
2)数据库,后续需要对该值进行增删改查操作。(一定是int类型的数字)
例子:insert操作 插入的值需要与其他表的数据建立关联关系/对应关系,需要进行关联。
delete操作 看请求里非手动输入的ID有多少个即可确认是否需要做关联。
update操作 where条件
select操作 where条件
5.压力测试
1)首先接口脚本需要调试成功(增加断言,查看结果树等);
2)设置压力测试场景,可加远程负载机,设置并发,时间段;
3)添加聚合报告,运行场景,观察TPS,RT,并发,根据研发需求而评定,也可以使用2/8原则
6.上传文件
使用filed upload上传文件即可。