[JM_03]JMeter性能测试基础实战之QPS检测过程解析
2018-07-29 本文已影响473人
Fighting_001
目录结构
一、测试需求
二、测试步骤
1.添加线程组
2.添加HTTP请求
3.设置QPS限制
4.添加监视器
5.运行脚本
6.聚合报告分析
一、测试需求
需求:测试20个用户访问Baidu首页(https://www.baidu.com),当负载达到30QPS时的平均响应时间。
QPS:Query Per Second,每秒查询率。是一台查询服务器每秒能够处理的查询次数,经常用QPS来衡量域名系统服务器性能。
以下先对整个测试流程作梳理,然后再作具体的实战检测:
二、测试步骤
1.添加线程组
Thread GroupThread Group(线程组),主要包含以下3个参数:
1)线程数:Number of Threads(users),虚拟用户数
1个虚拟用户占用1个进程or线程,需要多少个虚拟用户就设置对应数量的线程数。
2)准备时长:Ramp-Up Period(in seconds),表示设置的虚拟用户数全部启动所需的时间
如:线程数=20个,准备时长=10s ==> 20/10=2 (个/s),即每秒启动2个线程
3)循环次数:Loop Count,每个线程发送请求的次数
如:线程数=20个,循环次数=5次 ==> 总请求数目=20×5=100 (个)
PS:若勾选"forever",则线程会一直发送请求,直至选择停止运行脚本
2.添加HTTP请求
添加HTTP Request HTTP Request--Basic HTTP Request--AdvancedHTTP Request 配置参数
位置 | 参数名 | 配置说明 |
---|---|---|
顶部通栏 |
||
Name | 名称。用于标识一个取样器,建议使用一个有意义的名称 | |
Comments | 注释。对于测试没有影响,仅用于记录用户可读的注释信息 | |
Basic |
||
Web Server | Protocol | 协议。默认为http协议 |
Server Name or IP | 服务器名称/IP。表示HTTP请求发送的目标服务器名称/IP地址 | |
Port Number | 端口号。目标服务器的端口号,http请求默认端口为80,https请求默认端口为443 | |
HTTP Request | Method | 请求方法。发送HTTP请求的方法,如:GET、POST、PUT、OPTION、TRACE、DELETE |
Path | 路径。目标URL路径(不包括服务器地址和端口),如http//127.0.0.18001/dvwa/的Protocol为http,Server Name为127.0.0.1,端口8001,Path为/dvwa/ | |
Content encoding | 内容的编码方式,默认值为ISO8859 | |
Redirect Automatically | 自动重定向。选中则表示,当发送HTTP请求后若响应为301/302,Jmeter会自动重定向到对应的新页面,但不会记录重定向的请求和响应内容 | |
Follow Redirects | 跟随重定向。默认选中,表示响应为301/302时,会自动跳转到目标页,Jmeter会记录重定向过程中的所有请求和响应 | |
Use KeepAlive | 保持连接状态。默认选中此项,表示Jmeter和目标服务器之间使用Keep-Alive方式进行HTTP通信 | |
Use multipart/form-data for POST | 发送POST请求时,使用multipart/form-data方法发送 | |
Browser-compatible headers | 浏览器头部兼容设置 | |
Parameters | 通请求一起发送的URL参数。对于带参数的URL,可将所有参数设置在该表中,每一行代表一个参数值对 | |
Body Data | ||
Files Upload | 同请求一起发送的文件。在请求中发送文件,HTTP文件上传可通过此方式模拟 | |
Advanced |
||
Client implementation | Implementation | 客户端实现:HttpClient4、Java |
Timeouts(ms) | Connect | 连接超时时间(ms) |
Response | 响应超时时间(ms) | |
Embedded Resources from HTML Files | Retrieve All Embedded Resources | 从HTML文件获取所有的有内容资源。默认不选中,若选中则表示发出请求后获得响应的HTML文件内容,会对该HTML进行分析并获取其中的所有资源(图片、flash…) |
Parallel downloads.Number | ||
URLs must match | 获取页面中特定的资源。根据正则表达式获取匹配的资源 | |
Source address | IP/Hostname | |
Device | ||
Device IPv4 | ||
Device IPv6 | ||
Proxy Server | Server Name or IP | 代理服务器的服务器名称/IP |
Port Number | 端口号 | |
Username | ||
Password | ||
Optional Tasks | Save response as MD5 hash | 记录服务端响应数据MD5值,不记录完整的响应数据(适用于大数据量测试时可减少取样器记录响应数据的成本) |
3.设置QPS限制
JMeter提供了一个非常有用的定时器,常数吞吐量定时器(Constant Throughput Timer),可控制给定的取样器发送请求的吞吐量
image.pngConstant Throughput Timer属性:
属性名称 | 取值or选项 | 配置说明 |
---|---|---|
Name | 定时器名称 | |
Comments | 注释 | |
Delay before each affected sampler |
||
Target throughput (in samples per minute) |
目标吞吐量(请求数/60s)。实际填写数值为:QPS×60 [请求数/s] | |
Calculate Throuthput based on | 吞吐量所依赖的计算方式 | |
this thread only | 控制每个线程的吞吐量。此时,[总吞吐量=每线程吞吐量×线程数] | |
all active threads | 将设置的目标吞吐量分配在每个活跃的线程(同一时刻同时运行的线程,可能分布在不同的线程组)上,每个活跃线程在上一次运行结束后等待和合理的时间后再次运行 | |
all active threads in current thread group | 将设置的目标吞吐量分配在当前线程组每个活跃的线程上(若Test Plan中只有1个线程组,则此时和All active threads选项的效果一致) | |
all active threads(shared) | 每个活跃线程都会在所有活跃线程(分布在所有线程组)上一次运行结束后等待合理的时间后再次运行 | |
all active threads in current thread group(shared) | 每个活跃线程都会在所有活跃线程(分布在当前线程组)上一次运行结束后等待合理的时间后再次运行 |
4.添加监视器
JMeter使用监听器手机取样器记录的数据,并以可视化方式呈现。
如:聚合报告(Aggregate Report),可更为直观查看测试结果
5.运行脚本
RUN(Ctrl+R)
6.聚合报告分析
Term | Definition |
---|---|
Label | Jmeter中元件的Name属性值 |
Samples | 本次测试一共发出的请求数 (如:模拟10个用户,每个用户循环6次,则总请求数=10×6=60) |
Average | 平均响应时间(ms)。默认情况是每个Request的平均响应时间; 若使用Transaction Controller,则表示每个Transaction显示的平均响应时间 |
Median | 响应时间的中位数。表示50%用户的响应时间 |
90%Line | 90%用户的响应时间 |
Min | 最小响应时间 |
Max | 最大响应时间 |
Error% | 出现错误的请求数占比[(错误请求数/请求总数)×100%] |
Throughput | 吞吐量。默认表示每秒完成的请求数(Request per second); 若使用Transaction Controller,则表示每秒处理的事务数(Transaction per second) |
Received KB/sec | 每秒从服务端接收到的数据量 |
Sent KB/sec | 每秒向服务端发送的数据量 |
PS:
以上响应时间的单位为:毫秒(ms)