二、Jmeter Web压测

Jmeter Web压测

一、JMeter简介

Apache JMeter是一款开源的性能测试工具,主要用于对软件系统进行负载测试、压力测试和性能测试,它可以模拟大量用户并发访问Web应用程序等各种系统,以评估系统的性能、稳定性和资源利用情况。

二、安装JMeter

  1. 下载JMeter
  2. 配置环境(可选)
    • 对于Windows系统,解压后可以将JMeter的bin目录添加到系统环境变量的Path中,方便在命令行中直接启动JMeter。
    • 对于Linux系统,需要在解压后的目录下,编辑.bashrc或者.bash_profile文件,添加类似export PATH=$PATH:/path/to/jmeter/bin(其中/path/to/jmeter是JMeter的实际解压路径),然后执行source.bashrcsource.bash_profile使配置生效。
  3. 具体安装方法请看主页

三、使用JMeter进行Web压测的基本步骤

(一)创建测试计划
  1. 打开JMeter

    • 启动JMeter后,会看到一个空白的测试计划界面。测试计划是JMeter测试的最高级别元素,它包含了所有的测试配置和测试元素。
  2. 添加线程组

    • 右键点击测试计划,选择"添加"->"线程(用户)"->"线程组"。线程组用于定义模拟的用户数量、用户请求的频率等参数。

    • 在"线程组"配置界面中:

      • 线程数(用户数):例如设置为100,表示将模拟100个用户同时访问。
      • Ramp - Up时间(秒):用于设置所有线程启动的时间间隔。如果设置为10秒,那么100个线程会在10秒内逐步启动,平均每秒启动10个线程。这样可以模拟更真实的用户访问场景,避免所有用户同时请求对服务器造成过大冲击。
      • 循环次数 :可以设置每个线程发送请求的次数。如果设置为"永远",则线程会一直循环发送请求,直到手动停止测试。
(二)添加HTTP请求
  1. 添加HTTP请求默认值(可选)

    • 右键点击线程组,选择"添加"->"配置元件"->"HTTP请求默认值"。在这里可以设置服务器的IP地址或域名、端口号(默认HTTP为80,HTTPS为443)等公共信息。这样在后续添加具体的HTTP请求时,就不需要重复设置这些基本信息。
  2. 添加HTTP请求

    • 右键点击线程组,选择"添加"->"取样器"->"HTTP请求"。
    • 在"HTTP请求"配置界面中:
      • 协议:可以选择HTTP或者HTTPS。
      • 服务器名称或IP:填写要测试的Web服务器的域名或IP地址。
      • 端口号:根据实际情况填写,如果是HTTP默认是80,HTTPS默认是443。
      • 路径 :填写Web应用程序中的具体资源路径,如/index.html或者/api/user等。
(三)添加监听器
  1. 查看结果树

    • 右键点击线程组,选择"添加"->"监听器"->"查看结果树"。这个监听器可以让我们查看每个请求的详细信息,包括请求头、请求体、响应头、响应体等内容。在测试过程中,可以通过它来检查请求是否正确发送,以及服务器返回的响应是否符合预期。
  2. 汇总报告

    • 右键点击线程组,选择"添加"->"监听器"->"汇总报告"。汇总报告提供了测试的总体统计信息,如平均响应时间、最小响应时间、最大响应时间、吞吐量(每秒处理的请求数)等。这些统计信息可以帮助我们评估系统的性能。
(四)运行测试
  1. 保存测试计划
    • 在运行测试之前,最好先保存测试计划,方便以后再次使用和修改。选择"文件"->"保存",并选择一个合适的保存位置和文件名。
  2. 启动测试
    • 点击工具栏上的"启动"按钮或者选择"运行"->"启动"来开始测试。在测试过程中,可以通过监听器查看测试结果。
  3. 分析测试结果
    • 根据汇总报告中的数据,如响应时间过长或者吞吐量过低,可能表示系统存在性能瓶颈。可以进一步分析查看结果树中的请求和响应,查找可能的原因,如网络问题、服务器配置不足、代码逻辑复杂等。

四、高级应用

(一)添加断言
  1. 响应断言

    • 右键点击HTTP请求,选择"添加"->"断言"->"响应断言"。在响应断言中,可以设置预期的响应内容,如包含特定的文本、匹配某个正则表达式等。例如,可以断言响应中包含"success"字样,来验证请求是否成功处理。
  2. 断言结果

    • 为了查看断言的结果,需要添加"断言结果"监听器。右键点击线程组,选择"添加"->"监听器"->"断言结果"。在测试过程中,如果断言失败,会在断言结果监听器中显示相应的错误信息。
(二)参数化
  1. CSV数据文件设置

    • 右键点击线程组,选择"添加"->"配置元件"->"CSV数据文件设置"。通过配置CSV文件,可以将测试数据从文件中读取并用于请求参数。例如,在测试用户登录功能时,可以将用户名username和密码password存储在CSV文件中,每行代表一组用户名和密码,然后在变量名称中补充需要使用的变量名称,多个变量名用英文逗号隔开,HTTP请求中将参数设置为从CSV文件中读取的值,使用${变量名},例如${username}
  2. 用户自定义变量

    • 右键点击测试计划,选择"添加"->"配置元件"->"用户自定义变量"。在这里可以定义一些变量,如服务器的URL等,然后在HTTP请求等元素中引用这些变量。这样可以方便地修改测试配置,而不需要在多个地方进行修改。
(三)分布式测试
  1. 设置主从服务器
    • JMeter支持分布式测试,可以将测试负载分布到多个从服务器上执行。首先,在主服务器的JMeter安装目录下,编辑jmeter.properties文件,设置remote_hosts属性,指定从服务器的IP地址,多个IP地址之间用逗号分隔。
  2. 启动从服务器
    • 在从服务器上,进入JMeter的bin目录,执行jmeter -s -Jserver.rmi.ssl.disable=true(如果没有启用SSL)来启动从服务器。
  3. 在主服务器上运行分布式测试
    • 在主服务器的测试计划中,右键点击线程组,选择"远程启动"来启动分布式测试,测试请求会被分配到各个从服务器上执行,从而提高测试的负载能力。
  4. 详细分布式测试见主页

四、附图

相关推荐
m0_7482468720 分钟前
前端实现读取word文件,并将其进行原样式展示的几种方案
前端·word
桃园码工22 分钟前
11_HTML5 拖放 --[HTML5 API 学习之旅]
前端·html5·拖放
2402_8575893627 分钟前
便捷就医新引擎:SSM 医院预约挂号系统 Vue 实现方案设计
前端·javascript·vue.js
ADFVBM44 分钟前
后端使用Spring Boot框架 + 前端VUE 实现滑动模块验证码
前端·vue.js·spring boot
人才程序员1 小时前
【无标题】
c语言·前端·c++·qt·软件工程·qml·界面
m0_748233362 小时前
后端接口返回文件流,前端下载(java+vue)
java·前端·vue.js
ggggyyyyy09282 小时前
接口测试-Fidder及jmeter使用
测试工具·jmeter·fiddler·接口测试
m0_748238782 小时前
前端使用 Konva 实现可视化设计器(20)- 性能优化、UI 美化
前端·ui·性能优化
北京_宏哥2 小时前
python接口自动化(三十五)-封装与调用--流程类接口关联(详解)
前端·python·api
明月与玄武2 小时前
Jmeter 分布式压测部署--常见坑以及解决方案
分布式·jmeter