安装

官网下载:Apache JMeter - Apache JMeter™

下载后直接解压到你想要的位置。进入文件夹中的 bin\下,运行批处理文件 jmeter.bat。

img

弹出小黑框后不要关,等一会后 GUI 界面就会显示出来。

参考:Jmeter开启_weixin_47227973的博客-CSDN博客_jmeter怎么打开

使用

项目的保存和项目的打开操作

QQ截图20220413153733.png (429×304)

项目的打开

QQ截图20220413000026.png (238×304) (haha)

添加线程组

打开后,添加线程组。

打开-1024x577.png (1024×577) (haha)

QQ截图20220412192551.png (811×374) (haha)

在线程组中,可以对线程组的线程数和循环次数进行设置。

QQ截图20220412192702.png (1007×856) (haha)

录制控制器的添加

录制控制器可以对录制的内容进行操作。

QQ截图20220412231809.png (707×432) (haha)

代理服务器的添加和使用

QQ截图20220412231948.png (647×276) (haha)

通过添加代理服务器实现录制操作。

设置端口,随便设,这里我设 8888。

此图片的alt属性为空;文件名为image-17-1024x358.png

打开电脑设置中的代理,开启代理:

此图片的alt属性为空;文件名为image-16-1024x691.png

开启代理后,你将无法访问互联网。这时把端口设为刚刚在 JMeter 设置的端口号 8888。保存。

返回 JMeter 的代理服务器,并开启。

QQ截图20220413000009-1024x536.png (1024×536) (haha)

所有通过代理服务器的网页动作都会被记录。会注意到 Recording Controller 左侧多了展开符号。如果出现没有操作被录制的问题,请检查自己在每次修改系统“代理”设置后,有没有点击“保存“按钮。

添加结果树

录制完成后,保留需要的内容。然后添加结果树以展示执行结果。

QQ截图20220413154123.png (761×689) (haha)

结果树.png (1022×698) (haha)

点击运行绿色的运行按钮,可展示执行结果。(在这个例子里,我只保留登录请求)

温馨提示:录制中如果存在密码输入问题,检查一下这个地方(下图),可能需要将加密内容(MD5)手动改为密码文本。

QQ截图20220413161408-1024x519.png (1024×519) (haha)

用户自定义变量的添加与使用

用户自定义变量.png (667×330) (haha)

添加自己定义的变量并使用:

image-18-1024x705.png (1024×705) (haha)

添加变量

QQ截图20220413164022-1-1024x493.png (1024×493) (haha)

使用变量

读取 CSV 文件

QQ截图20220413165052.png (712×219) (haha)

参数配置如下。注意,csv 变量名设置后,可在一个 HTTP Request 进行使用。

QQ截图20220413165506-1024x349.png (1024×349) (haha)

调整线程组中线程数,比如你的 CSV 文件里的记录数,点击绿色的执行按钮,即可在结果树中查看执行结果。

image-19.png (569×350) (haha)

断言

添加断言。在这里,我添加的是一个 BeanShell Assertion 断言。

QQ截图20220413171109.png (634×170) (haha)

通过断言我们可以对执行结果进行判断。例如检查登录情况:

1
2
3
4
5
6
7
8
String response = prev.getResponseDataAsString();
if(!response.contains("success")){
Failure=true;
FailureMessage="登录失败";
}
else{
Failure=false;
}

以上代码即检查相应中是否包含“success”文字,不包含即失败。

聚合报告

添加聚合报告的方法如下:

image-29.png (696×593) (haha)

image-33-1024x660.png (1024×660) (haha)

附:聚合报告分析 JMeter基础 — JMeter聚合报告详解_测试萌萌的博客-CSDN博客_jmeter聚合报告

生成 HTML 格式的性能报告

输入以下命令:

1
D:\apache-jmeter-5.4.3\bin\jmeter -n -t "Recording Controller.jmx" -l result.jtl -e -o .\ResultReport
  • 参数 D:\apache-jmeter-5.4.3\bin\jmeter 表示 jmeter 可执行文件的路径;
  • 参数 “Recording Controller.jmx” 表示项目文件,文件名有空格的记得加个双引号;
  • 参数 result.jtl 表示生成的 jtl 文件名;
  • 参数.\ResultReport 表示生成的目标文件夹。

例如,运行:

image-30-1024x20.png (1024×20) (haha)

有以下结果:

image-31.png (697×730) (haha)

image-32-1024x447.png (1024×447) (haha)

操作及图标信息详解参考:Jmeter(三十七) - 从入门到精通进阶篇 - 输出HTML格式的性能测试报告(详解教程) - 李荣洋 - 博客园 (cnblogs.com)

针对要做《软件测试》课程实验的 TJUers 温馨提示

LAMP

TJU 软件工程专业的《软件测试》课程”实验 6-Jmeter 压力测试“中要求自己搭建一个 LAMP 环境。

img实验 6 实验指导书节选

这里指路我的另一篇文章《个人(博客)建站经验分享【持续更新 -4.12 最新】 - 半方池水半方田 》“以供大家参考,里面就是一些阿里云的文档链接,我在服务器上搭 LAMP 时参考的就是这些内容。

如果你使用接下来介绍的“禅道”,使用一键安装包,不需要亲手搭 LAMP(也许)。

sysstat 工具的安装

Linux 下:

1
2
wget -c http://pagesperso-orange.fr/sebastien.godard/sysstat-11.7.3-1.x86_64.rpm
rpm -Uvh sysstat-11.7.3-1.x86_64.rpm

参考:sysstat命令的安装和使用_安澜仙王的博客-CSDN博客_sysstat

sysstat 工具详细说明(一)_ⅨⅦ的博客-CSDN博客_syss

禅道

待测系统部分我采用禅道项目管理软件,安装与操作指南见:linux用一键安装包 - 禅道开源版使用帮助 - 禅道开源项目管理软件 (zentao.net)。注意记住你开启的 Apache 端口和 Mysql 端口。比如这篇教程的 81 端口和 3307 端口。

突然发现,好像禅道的 Linux 一键安装包里面有 apache, php, mysql,是不是说 LAMP 其实不用搭…

如果你已经安了 LAMP,尝试看这篇安装禅道:使用源码包安装(各系统通用) - 禅道开源版使用帮助 - 禅道开源项目管理软件 (zentao.net)

正常打开的界面:

QQ截图20220411234927-1024x549.png (1024×549) (haha)

如果你在云服务器进行操作,别忘了在安全组打开端口。

QQ截图20220411234940-1024x47.png (1024×47) (haha)

增加/编辑项目

在这个实验中,我遇到的难题就是 JMeter 不能模拟增加 Bug,修改 Bug 标题的操作。花了一天,我用自己的野生智慧采用野生方法解决了问题。

就是在关键的、填写表单的 POST 请求中,表头增加 Cookie 字段即可。(提醒:此问题为多数童鞋普遍问题!!)

Cookie 的获取方法很多,这里提供我突然得到“启示”的步骤供参考:打开禅道管理页面,在准备提交表单之前,借助浏览器的开发者工具进行抓包(你也可以使用其他的抓包工具):

image-20-1024x159.png (1024×159) (haha)

在开启开发者模式下,模拟一遍“提 Bug”操作,筛选出想要的请求。

image-21-1024x546.png (1024×546) (haha)

在 JMeter 对应的记录中,往 Header 里再增加一项 Cookie:

img

正确的返回数据:

img

之前错误的返回数据(HTML):

img

灵感来源:使用fiddler+jmeter写登录禅道、提交bug的脚本_千与学程序的博客-CSDN博客 受到该文章中改 Header 的操作的启示。

禅道内批量导入用户数据(选做)

请看我的另一篇文章:《“禅道”的配置与数据库连接 - 半方池水半方田》

提醒中的提醒

问:使用 JMeter 录制不成功咋办?

答:

  • 检查 JMeter 代理服务器选上录制控制器了没。
  • 检查本机代理有没有开启成功,试着调换一下 JMeter HTTP 代理、本机网络代理的开启顺序
  • 录制到的 HTTP 请求是实时更新在 JM

祝大家实验顺利!