性能测试的准备
性能测试工具
性能测试的安装
JMeter需JDK环境。通过JMeter的官方网站(https://jmeter.apache.org/)下载
-
进入官网
-
安装和本地JDK对应的JMeter版本
我安装的是Jemeter5 官方提示对应的是8以上的jdk,所以需要找到对应的JDK8对应的Jemeter4版本(注意版本一定要按官方提示的对应,否则后期会受影响)。附上官网上提供的全部版本的链接
https://archive.apache.org/dist/jmeter/binaries/
-
点击下载之后,解下就是以下这个文件夹
bin 文件夹
内容:主要包含 JMeter 的可执行文件和脚本。
重要文件:
jmeter.bat:Windows 下启动 JMeter 的脚本。
jmeter.sh:Linux/Unix 下启动 JMeter 的脚本。
jmeter.properties:JMeter 的配置文件。
user.properties:用户自定义的配置文件。
system.properties:系统属性配置文件。
log4j2.xml:日志配置文件。
docs 文件夹
内容:包含 JMeter 的文档文件。
重要文件:
index.html:JMeter 的文档首页。
extras 文件夹
内容:一些额外的工具和脚本。
重要文件:
ant-jmeter-1.1.1.jar:用于与 Apache Ant 集成的 JAR 文件。
jmeter-server.bat:Windows 下的 JMeter 服务器脚本。
jmeter-server:Linux/Unix 下的 JMeter 服务器脚本。
lib 文件夹
内容:包含 JMeter 所需的所有库文件。
子文件夹:
ext:包含 JMeter 扩展插件和库文件。
junit:包含 JUnit 测试相关的库文件。
test:包含用于测试的库文件。
licenses 文件夹
内容:包含与 JMeter 一起分发的所有第三方库的许可证文件。
printable_docs 文件夹
内容:包含 JMeter 的可打印文档版本(PDF 格式)。
src 文件夹
内容:包含 JMeter 的源代码文件(如果下载了源代码版本)。 -
配置环境变量
计算机---->右键,属性---->高级系统设置---->高级---->环境变量
(1)新建系统变量
变量名:JMETER_HOME
变量值:Jmeter安装地址,我的地址为 D:\project\apache-jmeter-4.0
(2)编辑系统变量CLASSPATH
变量名:CLASSPATH 变量值:在原来的后面添加 :
;%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar -
启动Jmeter
找到Jmeter解压路径(D:\apache-jmeter-4.0\bin)下jmeter.bat 文件,双击,并且在提示框点击”运行“,此时会弹出两个界面,一个是命令窗口,一个是JMeter窗口,意味着JMeter已经安装成功了。如下图所示
jmeter界面介绍
我们实际上是可以设置中文的。
性能测试的第一个简单案例
- 如下图所示,右击“测试计划”>添加>Threads(Users)>线程组。 “线程组”的意思:JMeter是由Java实现的,并且使用一个Java线程来模拟一个用户,因此线程组(Thread Group)就是指一组用户的意思,换句话说一个线程组就是一组虚拟用户(virtual users),这些虚拟用户用来模拟访问被测系统。
“线程组”中常用到的一些设置:
(1) 线程数:这里就是指虚拟用户数,默认的输入是“1”,则表明模拟一个虚拟用户访问被测系统,如果想模拟100个用户,则此处输入100。
(2) Ramp-Up Period (in seconds): 虚拟用户增长时长。不明白别着急,给你举个栗子:比如你测试的是一个考勤系统,那么实际用户登录使用考勤系统的时候并不是大家喊1、2、3 - 走起,然后一起登录。实际使用场景可能是9点钟上班,那么从8:30开始,考勤系统会陆陆续续有人开始登录,直到9:10左右,那么如果完全按照用户的使用场景,设计该测试的时候此处应输入40(分钟)* 60(秒)= 2400。但是实际测试一般不会设置如此长的Ramp-Up时间,原因嘛,难道你做一次测试要先等上40分钟做登录操作?一般情况下,可以估计出登录频率最高的时间长度,比如此处可能从8:55到9:00登录的人最多,那这里设置成300秒,如果“线程数”输入为100,则意味着在5分钟内100用户登录完毕。
**(3) 循环次数:**该处设置一个虚拟用户做多少次的测试。默认为1,意味着一个虚拟用户做完一遍事情之后,该虚拟用户停止运行。如果选中“永远”,则意味着测试运行起来之后就根本停不下来了,除非你把它强制终止。
- 增加被测试页面
接下来的一步就是要加入实际被测页面,右击“线程组” > “取样器” > “HTTP请求”。
(1) 添加“HTTP请求”
(2) 设置HTTP请求的属性
- 名称:输入“百度”,就是被测试网页的描述性文字
- 服务器名称或IP:被测服务器的网站名字,也可以是IP地址。剩下的属性可以按照被测系统的属性按需配置,现在都可以为空。
(3) 保存与运行测试
现在的测试脚本已经可以运行了,先点击下面如图所示的第一步:点击保存脚本按钮;然后点击如图所示的第二步:点击运行测试按钮。
(4) 测试日志视图
点击“选项” > “Log Viewer”看看运行的日志。日志视图中可以看到“线程组 1-1”的启动和结束时间,表明测试已经跑完。
- 添加结果监听器
如下图所示,右击“线程组” > “监听器” > “察看结果树”来查看性能测试过程中请求和响应信息。添加完毕后,保存测试脚本,再次运行。
运行测试完毕之后,点击“察看结果树” > “百度”,点击 下图所示位置,你可以看到一些测试期间一些有用的信息,比如发送的请求的信息和响应数据等。接下来可以试着改一下“线程组”里的“线程数”为10,就是模拟10个用户访问。别改太大,防止百度封IP地址)
性能测试的第二个简单案例
这个案例是模拟搜狐搜索
1. 第一步:添加http代理服务器,在测试计划–》添加–》非测试元件–》http代理服务器
2. 第二步:添加线程组(这个线程组是用来放录制的脚本,不添加也可以,就直接放在代理服务器下)
3. 第三步:选择录制脚本的存放位置,就选择我们第二步创建的线程组中。
4. 第四步:然后我们点击启动,其他项默认就好,其他选项后期会详细说明
5. 第五步:脚本录制中填写脚本名称,浏览器中输入录制的网址,就可以开始录制了
录制脚本的注意事项
谷歌浏览器
谷歌浏览器的话,我们需要下载一个插件
-
下载blazemeter
https://www.chajianxw.com/developer/28629.html#google_vignette -
安装插件
将文件拖到 chrome->更多工具->扩展程序 中 插件会自动安装
安装完后,Chrome浏览器右上角有一个BZ的图标
-
注册并且登录jmx文件
打开blazemeter后,需要登录,方可将录制后的脚本转换为jmx文件; -
录制脚本
在浏览器中打开操作页面,并打开blazemeter界面,点击录制按钮,blazemeter就开始进行录制操作;
-
生成jmx文件
点击保存
后面就会出现相应的格式选项。
-
导入jmx
打开jmeter,导入保存的jmx文件,即可查看录制的操作脚本;
火狐浏览器
火狐浏览器的录制脚本,我们为了录制成功,首先要在火狐浏览器设置服务器代理。
此时如果浏览器提醒风险弹框。我们选择高级-》接受弹框
脚本录制中填写脚本名称,浏览器中输入录制的网址,就可以开始录制了。
6. 最后一步
如果你使用的火狐浏览器,录制脚本,你就需要把代理改回去。
性能测试的第三个简单案例
参数化的压力测试运用场景:模拟多次搜索,每次搜索不同的内容时,就可以对搜索内容进行参数化自动模拟。
-
新建一个线程组
-
设置线程组参数,我们这里选择十个,同时启动,循环一次
-
新增http请求默认值。 在上一步创建的线程组上,新增http请求默认值,所有的请求都会使用设置的默认值,这设置协议为http,IP为你的服务器ip,端口为8080。
-
添加要压测的http请求
-
设置请求路径,并增加参数
如果说你的请求路径有参数。你也可以在请求的参数板块增加。
-
新增监听器,用于查看压测结果。这里添加三种:聚合报告、图形结果、用表格查看结果,区别在于结果展现形式不同。
-
-
点击运行按钮开始压测,并查看结果。
性能测试的第四个简单案例
模拟设置多个变量,模拟多个用户请求接口
我们假设测试的接口是https://www.mindskip.net
-
新建一个线程组
-
设置线程组参数 ->这里配置为:10个线程,同时启动,循环一次。
-
新增http的请求值,新增http请求默认值,所有的请求都会使用设置的默认值,这设置协议为http,IP为localhost,端口为8080。
-
增加要压力测试的http请求
-
新增监听器,用于查看压力测试结果。这里添加三种:聚合报告、图形结果、用表格查看结果,区别在于结果展现形式不同。
-
点击运行按钮开始压测,并查看结果