Jmeter Web压测
-
- 一、JMeter简介
- 二、安装JMeter
- 三、使用JMeter进行Web压测的基本步骤
-
- (一)创建测试计划
- (二)添加HTTP请求
- (三)添加监听器
- (四)运行测试
- 四、高级应用
-
- (一)添加断言
- (二)参数化
- (三)分布式测试
- 四、附图
一、JMeter简介
Apache JMeter是一款开源的性能测试工具,主要用于对软件系统进行负载测试、压力测试和性能测试,它可以模拟大量用户并发访问Web应用程序等各种系统,以评估系统的性能、稳定性和资源利用情况。
二、安装JMeter
- 下载JMeter
- 可以从Apache JMeter官方网站(https://jmeter.apache.org/)下载最新版本的JMeter。根据操作系统选择合适的安装包,如Windows可以下载zip格式的压缩包,解压后即可使用;Linux可以下载tgz格式的压缩包,解压后配置环境变量来使用。
- 配置环境(可选)
- 对于Windows系统,解压后可以将JMeter的bin目录添加到系统环境变量的Path中,方便在命令行中直接启动JMeter。
- 对于Linux系统,需要在解压后的目录下,编辑.bashrc或者.bash_profile文件,添加类似
export PATH=$PATH:/path/to/jmeter/bin
(其中/path/to/jmeter
是JMeter的实际解压路径),然后执行source.bashrc
或source.bash_profile
使配置生效。
- 具体安装方法请看主页
三、使用JMeter进行Web压测的基本步骤
(一)创建测试计划
-
打开JMeter
- 启动JMeter后,会看到一个空白的测试计划界面。测试计划是JMeter测试的最高级别元素,它包含了所有的测试配置和测试元素。
- 启动JMeter后,会看到一个空白的测试计划界面。测试计划是JMeter测试的最高级别元素,它包含了所有的测试配置和测试元素。
-
添加线程组
-
右键点击测试计划,选择“添加”->“线程(用户)”->“线程组”。线程组用于定义模拟的用户数量、用户请求的频率等参数。
-
在“线程组”配置界面中:
- 线程数(用户数):例如设置为100,表示将模拟100个用户同时访问。
- Ramp - Up时间(秒):用于设置所有线程启动的时间间隔。如果设置为10秒,那么100个线程会在10秒内逐步启动,平均每秒启动10个线程。这样可以模拟更真实的用户访问场景,避免所有用户同时请求对服务器造成过大冲击。
- 循环次数:可以设置每个线程发送请求的次数。如果设置为“永远”,则线程会一直循环发送请求,直到手动停止测试。
-
(二)添加HTTP请求
-
添加HTTP请求默认值(可选)
- 右键点击线程组,选择“添加”->“配置元件”->“HTTP请求默认值”。在这里可以设置服务器的IP地址或域名、端口号(默认HTTP为80,HTTPS为443)等公共信息。这样在后续添加具体的HTTP请求时,就不需要重复设置这些基本信息。
- 右键点击线程组,选择“添加”->“配置元件”->“HTTP请求默认值”。在这里可以设置服务器的IP地址或域名、端口号(默认HTTP为80,HTTPS为443)等公共信息。这样在后续添加具体的HTTP请求时,就不需要重复设置这些基本信息。
-
添加HTTP请求
- 右键点击线程组,选择“添加”->“取样器”->“HTTP请求”。
- 在“HTTP请求”配置界面中:
- 协议:可以选择HTTP或者HTTPS。
- 服务器名称或IP:填写要测试的Web服务器的域名或IP地址。
- 端口号:根据实际情况填写,如果是HTTP默认是80,HTTPS默认是443。
- 路径:填写Web应用程序中的具体资源路径,如/index.html或者/api/user等。
(三)添加监听器
-
查看结果树
- 右键点击线程组,选择“添加”->“监听器”->“查看结果树”。这个监听器可以让我们查看每个请求的详细信息,包括请求头、请求体、响应头、响应体等内容。在测试过程中,可以通过它来检查请求是否正确发送,以及服务器返回的响应是否符合预期。
- 右键点击线程组,选择“添加”->“监听器”->“查看结果树”。这个监听器可以让我们查看每个请求的详细信息,包括请求头、请求体、响应头、响应体等内容。在测试过程中,可以通过它来检查请求是否正确发送,以及服务器返回的响应是否符合预期。
-
汇总报告
- 右键点击线程组,选择“添加”->“监听器”->“汇总报告”。汇总报告提供了测试的总体统计信息,如平均响应时间、最小响应时间、最大响应时间、吞吐量(每秒处理的请求数)等。这些统计信息可以帮助我们评估系统的性能。
- 右键点击线程组,选择“添加”->“监听器”->“汇总报告”。汇总报告提供了测试的总体统计信息,如平均响应时间、最小响应时间、最大响应时间、吞吐量(每秒处理的请求数)等。这些统计信息可以帮助我们评估系统的性能。
(四)运行测试
- 保存测试计划
- 在运行测试之前,最好先保存测试计划,方便以后再次使用和修改。选择“文件”->“保存”,并选择一个合适的保存位置和文件名。
- 启动测试
- 点击工具栏上的“启动”按钮或者选择“运行”->“启动”来开始测试。在测试过程中,可以通过监听器查看测试结果。
- 分析测试结果
- 根据汇总报告中的数据,如响应时间过长或者吞吐量过低,可能表示系统存在性能瓶颈。可以进一步分析查看结果树中的请求和响应,查找可能的原因,如网络问题、服务器配置不足、代码逻辑复杂等。
- 根据汇总报告中的数据,如响应时间过长或者吞吐量过低,可能表示系统存在性能瓶颈。可以进一步分析查看结果树中的请求和响应,查找可能的原因,如网络问题、服务器配置不足、代码逻辑复杂等。
四、高级应用
(一)添加断言
-
响应断言
- 右键点击HTTP请求,选择“添加”->“断言”->“响应断言”。在响应断言中,可以设置预期的响应内容,如包含特定的文本、匹配某个正则表达式等。例如,可以断言响应中包含“success”字样,来验证请求是否成功处理。
- 右键点击HTTP请求,选择“添加”->“断言”->“响应断言”。在响应断言中,可以设置预期的响应内容,如包含特定的文本、匹配某个正则表达式等。例如,可以断言响应中包含“success”字样,来验证请求是否成功处理。
-
断言结果
- 为了查看断言的结果,需要添加“断言结果”监听器。右键点击线程组,选择“添加”->“监听器”->“断言结果”。在测试过程中,如果断言失败,会在断言结果监听器中显示相应的错误信息。
- 为了查看断言的结果,需要添加“断言结果”监听器。右键点击线程组,选择“添加”->“监听器”->“断言结果”。在测试过程中,如果断言失败,会在断言结果监听器中显示相应的错误信息。
(二)参数化
-
CSV数据文件设置
- 右键点击线程组,选择“添加”->“配置元件”->“CSV数据文件设置”。通过配置CSV文件,可以将测试数据从文件中读取并用于请求参数。例如,在测试用户登录功能时,可以将用户名
username
和密码password
存储在CSV文件中,每行代表一组用户名和密码,然后在变量名称中补充需要使用的变量名称,多个变量名用英文逗号隔开,HTTP请求中将参数设置为从CSV文件中读取的值,使用${变量名}
,例如${username}
。
- 右键点击线程组,选择“添加”->“配置元件”->“CSV数据文件设置”。通过配置CSV文件,可以将测试数据从文件中读取并用于请求参数。例如,在测试用户登录功能时,可以将用户名
-
用户自定义变量
- 右键点击测试计划,选择“添加”->“配置元件”->“用户自定义变量”。在这里可以定义一些变量,如服务器的URL等,然后在HTTP请求等元素中引用这些变量。这样可以方便地修改测试配置,而不需要在多个地方进行修改。
- 右键点击测试计划,选择“添加”->“配置元件”->“用户自定义变量”。在这里可以定义一些变量,如服务器的URL等,然后在HTTP请求等元素中引用这些变量。这样可以方便地修改测试配置,而不需要在多个地方进行修改。
(三)分布式测试
- 设置主从服务器
- JMeter支持分布式测试,可以将测试负载分布到多个从服务器上执行。首先,在主服务器的JMeter安装目录下,编辑
jmeter.properties
文件,设置remote_hosts
属性,指定从服务器的IP地址,多个IP地址之间用逗号分隔。
- JMeter支持分布式测试,可以将测试负载分布到多个从服务器上执行。首先,在主服务器的JMeter安装目录下,编辑
- 启动从服务器
- 在从服务器上,进入JMeter的bin目录,执行
jmeter -s -Jserver.rmi.ssl.disable=true
(如果没有启用SSL)来启动从服务器。
- 在从服务器上,进入JMeter的bin目录,执行
- 在主服务器上运行分布式测试
- 在主服务器的测试计划中,右键点击线程组,选择“远程启动”来启动分布式测试,测试请求会被分配到各个从服务器上执行,从而提高测试的负载能力。
- 详细分布式测试见主页