b15d81938a4e730bbfdbf07f35871692.png

目录结构

一、测试需求
二、测试步骤
    1.添加线程组
    2.添加HTTP请求
    3.设置QPS限制
    4.添加监视器
    5.运行脚本
    6.聚合报告分析

一、测试需求

需求:测试20个用户访问Baidu首页(https://www.baidu.com),当负载达到30QPS时的平均响应时间。

QPS:Query Per Second,每秒查询率。是一台查询服务器每秒能够处理的查询次数,经常用QPS来衡量域名系统服务器性能。

以下先对整个测试流程作梳理,然后再作具体的实战检测:

二、测试步骤

1.添加线程组

f187b1581b20fd91b18e6f3fc6cef3a9.png

Thread Group

Thread 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请求

d9c31f527aac208a56ae5d71d6723a7b.png

添加HTTP Request

5cc563c6c687007feea2be7929a38a4c.png

HTTP Request--Basic

4059706da916098a7e0ff25f3e8f930b.png

HTTP Request--Advanced

HTTP Request 配置参数

位置参数名配置说明
顶部通栏


Name名称。用于标识一个取样器,建议使用一个有意义的名称

Comments注释。对于测试没有影响,仅用于记录用户可读的注释信息
Basic

Web ServerProtocol协议。默认为http协议

Server Name or IP服务器名称/IP。表示HTTP请求发送的目标服务器名称/IP地址

Port Number端口号。目标服务器的端口号,http请求默认端口为80,https请求默认端口为443
HTTP RequestMethod请求方法。发送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 implementationImplementation客户端实现:HttpClient4、Java
Timeouts(ms)Connect连接超时时间(ms)

Response响应超时时间(ms)
Embedded Resources from HTML FilesRetrieve All Embedded Resources从HTML文件获取所有的有内容资源。默认不选中,若选中则表示发出请求后获得响应的HTML文件内容,会对该HTML进行分析并获取其中的所有资源(图片、flash…)

Parallel downloads.Number

URLs must match获取页面中特定的资源。根据正则表达式获取匹配的资源
Source addressIP/Hostname

Device

Device IPv4

Device IPv6
Proxy ServerServer Name or IP代理服务器的服务器名称/IP

Port Number端口号

Username

Password
Optional TasksSave response as MD5 hash记录服务端响应数据MD5值,不记录完整的响应数据(适用于大数据量测试时可减少取样器记录响应数据的成本)
3.设置QPS限制

JMeter提供了一个非常有用的定时器,常数吞吐量定时器(Constant Throughput Timer),可控制给定的取样器发送请求的吞吐量

9144e96d2a3a46cc0ae3360d981ab7d6.png

image.png

d95c9b67dc05733488bc658dc7ce4c15.png

Constant 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),可更为直观查看测试结果

74ed84060c956693dedd24e633129d1a.png

a18cca8fd4b1f1b5c3027ec35bd3690c.png

5.运行脚本

RUN(Ctrl+R)

b90a24d75508469726af6d64f84dd4ce.png

6.聚合报告分析

3470ff28342f1a7d5f28de48a0292108.png

TermDefinition
LabelJmeter中元件的Name属性值
Samples本次测试一共发出的请求数
(如:模拟10个用户,每个用户循环6次,则总请求数=10×6=60)
Average平均响应时间(ms)。默认情况是每个Request的平均响应时间;
若使用Transaction Controller,则表示每个Transaction显示的平均响应时间
Median响应时间的中位数。表示50%用户的响应时间
90%Line90%用户的响应时间
Min最小响应时间
Max最大响应时间
Error%出现错误的请求数占比[(错误请求数/请求总数)×100%]
Throughput吞吐量。默认表示每秒完成的请求数(Request per second);
若使用Transaction Controller,则表示每秒处理的事务数(Transaction per second)
Received KB/sec每秒从服务端接收到的数据量
Sent KB/sec每秒向服务端发送的数据量

PS:
以上响应时间的单位为:毫秒(ms)

转自:https://www.jianshu.com/p/b22c57ceb52b

7aa44c8d2be6ee22d0721916084a961c.png

80f45dce224be41c7b371202a9c87327.gif

回复干货】获取精选干货视频教程

回复加群】加入疑难问题攻坚交流群

回复mat】获取内存溢出问题分析详细文档教程

回复赚钱】获取用java写一个能赚钱的微信机器人

回复副业】获取程序员副业攻略一份

6f1fdc129ad3d7f2c17b0b9e84ac3785.png

好文请点赞+分享

5cc56eafe32ed2f5bf1611599fd107aa.gif

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐