一、前言
前面文章已经介绍Apache JMeter的基本概率和如果使用,但作为一个开发人员,自己写的代码都应该要好好的COD EREVIEW,好好的自测吧。但是有些场景比如高并发、负载和性能测试的时候,不借助工具是不好进行测试的。Jmter工具设计之初是用于做性能测试的,它在实现对各种接口的调用方面已经做的比较成熟,因此,本次直接使用Jmeter工具来完成对Http接口的测试,因此也建议大家使用这款工具进行测试,比如秒杀、高并发下送券送积分活动等。代码层面咱再另外分析,实际场景可定会更加复杂,这里先分享下自己的一次完整的测试用例。有不对的或者错误的地方还希望大家指正。
二、准备工作
2.1 新增一个测试积分,输入名称后点击保存到一个地方,我这里选的D盘
2.3 新增一个默认的HTTP Cookie 管理器,如果是服务器要验证登录信息等,可以添加对应的会员登录信息。
2.4 新增HTTP信息头管理器!参数Content-Type:application/json,表示你的POST请求是JSON格式的
2.5 HTTP请求默认值,这个管理器可以添加多个的,发起时可以组合成一个,非常方便
2.6 添加HTTP请求以及相应的监控器,这里因为配置了默认的HTTP默认参数,所有HTTP请求这里可以不填.
2.7 设置用户领取积分限额,这个在自己的代码层设置
point.setMaxTotalLimit(Long.valueOf(100000)); //总发送积分数
point.setMaxLimit(Long.valueOf(1000)); //每人最大领取数
point.setNumPerDay(Long.valueOf(10)); //每人每天最大领取数
point.setPoint(1); //单次发放积分数
三、测试结果
3.1 数据库查看成功领取积分数记录,这里查到正确领取次数为10次,并没有出现超发的情况!
四、总结
4.1 乱码问题,如果出现返回结果乱码问题,可以在D:\apache-jmeter-3.2\bin目录下的jmeter.properties文件 把sampleresult.default.encoding=UTF-8
4.2 Summary Report监听器相关参数解释:
-
- Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
- #Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
- Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间
- Median:中位数,也就是 50% 用户的响应时间
- 90% Line:90% 用户的响应时间
- Min:最小响应时间
- Max:最大响应时间
- Error%:本次测试中出现错误的请求的数量/请求的总数
- Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction perSecond 数
- KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec