目录
1.设计压力测试场景
2.Jmeter请求元件之并发场景(线程数)设置
3.Jmeter执行压力测试
3.1.测试的前期准备
3.2.测试执行
4.Jmeter GUI模式和非GUI模式的查看
5.Jmeter常用命令的学习使用
6.Jmeter使用命令行生成html报告
目标场景:前程贷的登录-投资-退出
核心业务:投资
并发用户数:目标100
脚本的录制,参照Jmeter学习笔记九:Jmeter录制WEB脚本
如何设置线程数?
线程数:就是并发数,如果目标100,会采用叠加的方式进行添加;
Ramp-Up Period(in seconds):全部线程启动的时间,比如100个线程,20秒,则表示20秒内100个线程都要启动完成,每秒启动5个线程;策略:想要服务器压力大点就时间少点,想要服务器的压力慢慢增加就时间长点;
循环次数:每个线程发送的次数,如果值为3,100个线程,则会发送300次请求;可以勾选永远循环,跟下面的持续时间配合使用;
调度器:配合永远循环使用,去设置持续时间;
3.1.1.添加“响应断言”
我们可以给登录接口和投资接口添加一个“响应断言”,来判断我们的登录接口和投资接口是否请求成功,如下所示:
3.1.2.添加“断言持续时间”
然后给登录接口,要投标的详情接口以及投资接口添加“断言持续时间”,并规定请求的响应时间不能超过2000毫秒;
对于响应时间的设置原则,参考性能测试二八原则,响应时间2/5/8原则
3.2.1.进行压力测试
由于此网站之前没有做过压力测试,所以并发数从1开始,往后10、20、30、40、50、60、70、80、90、100;
我们先设置线程数为1,循环次数为3,进行压力测试,然后查看聚合报告
Samples: 一共发出去多少请求,例如10个用户,循环10次,则是100
Average: 平均响应时间,默认情况下是单个Request的响应时间
Median: 中位数,也就是 50% 用户的响应时间
90% Line : 90% 用户的响应不会超过该时间 (90% of the samples took no more than this time. The remaining samples at least as long as this)
95% Line : 95% 用户的响应不会超过该时间
99% Line : 99% 用户的响应不会超过该时间
Min : 最小响应时间
Max : 最大响应时间
Error%:错误的请求的数量/请求的总数
Throughput: 吞吐量——默认情况下表示每秒完成的请求数(Request per Second) 可类比为qps
Received KB/Sec: 每秒接收数据量
3.2.2.查看压力测试结果
打开保存到本地的压力测试结果,中文全部为乱码,解决方法,参考Jmeter聚合报告导出后,打开乱码的解决方法
timeStamp:请求发出的绝对时间
elapsed:响应时间
label:Sampler的名称
responseCode:返回码
responseMessage:返回消息
threadName:请求所属的线程
dataType:数据类型
success:是否成功
failureMessage:失败消息
bytes:字节
Latency:响应时间
4.1.Jmeter的GUI模式
做一般的接口测试/脚本调试/压力测试,在脚本录制编写初期,我们一般都会选用GUI模式,因为这里不会涉及到压力测试,只是调试脚本,我们本身关注的也是结果是否通过 。更加关心的是如下几项:
4.2.Jmeter的非GUI模式
我们在启动Jmeter时,会看到下面的信息:
提示我们如果是做load testing,就不要使用GUI模式,而是要用非GUI模式。
GUI模式:界面模式
非GUI模式:命令模式
接下来我们来学习命令模式,如果是做压力测试,那么Jmeter脚本里的Debug Sampler,察看结果树以及聚合报告这些元件都要屏蔽掉,否则会影响性能测试结果。
如果在Jmeter GUI模式的聚合报告中指定了测试结果的保存路径,那么用命令执行测试脚本的时候,便不需要再次指定!
指定测试结果文件及日志路径的命令如下:
F:\apache-jmeter-3.3\bin>jmeter -n -t D:\develop\软件测试\软件测试练习\jmeter\day04\Jmeter压力测试.jmx -l D:\develop\软件测试\软件测试练习\jmeter\day04\聚合报告_线程数1循环次数3.csv -j D:\develop\软件测试\软件测试练习\jmeter\day04\log_01.log
Jmeter提供了一个用于生成HTML页面格式图形化报告的扩展模块,该模块支持通过两种方式生成多维度图形化测试报告:
通常情况下,我们使用第一种方式生成html报告!
6.1.基本配置
首先,需要在jmeter.properties或者user.properties确认如下配置项:
jmeter.save.saveservice.bytes = true
jmeter.save.saveservice.label = true
jmeter.save.saveservice.latency = true
jmeter.save.saveservice.response_code = true
jmeter.save.saveservice.response_message = true
jmeter.save.saveservice.successful = true
jmeter.save.saveservice.thread_counts = true
jmeter.save.saveservice.thread_name = true
jmeter.save.saveservice.time = true
# the timestamp format must include the time and should include the date.
# For example the default, which is milliseconds since the epoch:
jmeter.save.saveservice.timestamp_format = ms
# Or the following would also be suitable
jmeter.save.saveservice.timestamp_format = yyyy/MM/dd HH:mm:ss
如果希望在Errors报告中展示更详细数据,需要确保如下配置
jmeter.save.saveservice.assertion_results_failure_message = true
如果使用了事务控制器(Transaction Controller),确认Generate parent sample为未勾选状态
6.2.生成html测试报告
a.在压力测试结束时同时自动生成报告
jmeter -n -t
jmeter -n -t D:\develop\软件测试\软件测试练习\jmeter\day04\Jmeter压力测试.jmx -l D:\develop\软件测试\软件测试练习\jmeter\day04\聚合报告_线程数1循环次数3.csv -e -o ./output
参数:
-n :以非GUI形式运行Jmeter
-t :脚本路径
-l :指定结果文件路径(jtl或csv)
-e :在脚本运行结束后生成html报告
-o :保存html报告的路径, 此文件夹必须为空或者不存在
b. 使用已有的压力测试结果日志文件生成报告
jmeter -g
jmeter -g D:\develop\软件测试\软件测试练习\jmeter\day04\聚合报告_线程数1循环次数3.csv -o ./output
参数:
-g :specifies the existing result file 指定已存在的结果文件
以上两个样例都会在\apache-jmeter-3.0\bin\output目录下生成html测试报告!