一、创建线程组
右击-->添加-->Threads(Users)-->线程组
下面对比较重要的几个参数,讲解下:
名称: 就是给你这个线程组起名字。
线程数:指压力测试时候模拟几个用户测试接口。
Ramp-Up:这里指几秒运行完上面的模拟用户数。
循环次数:指循环几次线程数。
总的理解下:上面的意思是2秒内模拟5个用户请求API,循环2次。
同时,在这我也准备了一份软件测试视频教程(含接口、自动化、性能等),需要的可以直接在下方观看,或者直接关注VX公众号:互联网杂货铺,免费领取
软件测试视频教程观看处:
京东内部员工自动化测试培训课程!盲目自学真的会毁终生,27天学完,能救一个是一个...
二、添加HTTP
在线程组上右击-->添加-->Sampler-->HTTP请求
在java代码中添加API接口
@RequestMapping(value = "users", method = RequestMethod.GET)
public @ResponseBody Object users() {
List<String> userList = new ArrayList<>();
userList.add("张三");
userList.add("李四");
userList.add("王五");
System.out.println("获取用户接口......");
return userList;
}
三、查看结果树
在线程组上右击-->添加-->监听器-->察看结果树
运行JMter查看结果:
通过测试可以发现,已经向users接口请求10次,10次都成功,也都有返回数据。
四、响应断言
响应断言: 断言用于检查测试中得到的相应数据等是否符合预期,断言一般用来设置检查点,用以保证性能测试过程中的数据交互是否与预期一致。
增加断言: 在线程组上右击--> 添加--> 断言 --> 响应断言
apply to(应用范围):
Main sample only: 仅当前父取样器 进行断言,一般一个请求,如果发一个请求会触发多个,则就有sub sample(比较少用)
常用响应字段:
- 响应文本:即响应的数据,比如json等文本
- 响应代码:http的响应状态码,比如200,302,404这些
- 响应信息:http响应代码对应的响应信息,例如:OK, Found
- Response Header: 响应头
模式匹配规则:
- 包括:包含在里面就成功
- equals:完全匹配,区分大小写
再次运行JMeter,查看结果:
发现http请求报错,因为返回数据不包含断言中所设定的数据。(一般调试阶段可以设置断言,但真实压力测试情况下建议不要开启断言和查看结果树,因为会因为性能问题,使测试结果不十分准确)
五、聚合报告
线程组右击-->添加->监听器->聚合报告(Aggregate Report)
- lable:sampler的名称
- Samples:一共发出去多少请求,例如5个用户,循环2次,则是 10
- Average:平均响应时间
- Median:中位数,也就是 50% 用户的响应时间
- 90% Line:90% 用户的响应不会超过该时间 (90%的样本不超过这个时间。 剩下的样本至少与此一样长)
- 95% Line:95% 用户的响应不会超过该时间
- 99% Line:99% 用户的响应不会超过该时间
- min:最小响应时间
- max:最大响应时间
- Error%:错误的请求的数量/请求的总数
- Throughput: 吞吐量——默认情况下表示每秒完成的请求数(Request per Second) 可类比为qps
- KB/Sec:每秒接收数据量
六、自定义变量
为什么使用:很多变量在全局中都有使用,或者测试数据更改,可以在一处定义,四处使用比如服务器地址你如果每一个里面都手动输入127.0.0.1,那万一那天服务器地址变了,总不能在一个一个改服务器地址吧,那么这里我们可以写在全局配置文件中。
线程组->add -> Config Element(配置原件)-> User Definde Variable(用户定义的变量)
上面配置了两个全局变量:
引用方式${XXX},在接口中变量中使用:
七、CSV可变参数压测
作用:你在API接口传入参数的时候,不可能100次请求都传一样的参数,为了更真是的模拟用户,所传的参数当然也是随机的,这样才更真实。
线程组右击-->add -> Config Element(配置原件)--> CSV data set config (CSV数据文件设置)
比较关键的参数:
文件名:就是你引用的文件地址(因为大量的数据都会写在外部文件中)
变量名称:如果有多个用逗号隔开
分隔符:csv默认用逗号,如果是txt文件这个需要设置符号
1、user.csv文件
2、HTTP请求
3、API接口
@RequestMapping(value = "login", method = RequestMethod.POST)
public @ResponseBody Object login(String name, String pwd) {
List<String> userList = new ArrayList<>();
userList.add(name);
userList.add(pwd);
userList.add(name.length()+"");
//输出客户端传来的值
System.out.println("name:"+name+"----pwd:"+pwd);
return userList;
}
测试运行(看java控制台)
八、写在最后
PS:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近500个G。如需要软件测试学习资料,关注公众号(互联网杂货铺),后台回复1,整理不易,给个关注点个赞吧,谢谢各位大佬!
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。