安装

官网下载: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

祝大家实验顺利!