主要内容

•JMeter安装及环境配置、测试元件简介
•JMeter手动填写请求和录制脚本(两种方法)
•JMeter线程组设置
•断言
•察看结果树和聚合报告
•参数化
•集合点
•关联
JMeter安装及环境配置

•安装

a.安装JDK
b.从官网Apache Download Mirrors下载解压
c.运行bin目录下的jmeter.bat/Apache Jmeter.jar
•环境配置
按下面变量名和变量值配置Jmeter系统环境变量:
【变量名】JMETER_HOME
【变量值】E:\apache-jmeter-2.13(根据实际的jmeter解压路径填写)
【变量名】CLASSPATH
【变量值】
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar

Jmeter测试元件简介

•线程组(Thread Group )
线程组是任何测试计划的起点,所有的逻辑控制器和采样器都必须放在线程组之下(设置线程数、线程启动周期、执行脚本的循环次数)
•Http请求(HttpRequest)
通过该测试元件,Jmeter可以发送一个HTTP/HTTPS请求到web服务器
•响应断言(Response Assertion )
对服务器的响应进行断言校验
•断言结果( Assertion Results )
•察看结果树(View Results Tree)
•聚合报告( Aggregate Report )
•CSVData Set Config(参数化控件)
被用来从文件中读取数据行,并将他们拆分后存储到变量中
•集合点(SynchronizingTimer)
Synchronizing Timer 的目的就是阻塞线程,直到X个线程已经被阻塞,接下来他们将一起被释放
•正则表达式提取器(RegularExpression Extractor)
允许用户使用Perl型正则表达式从一个服务器响应中提取值

手动填写请求

(以http://www.166cai.com登录为例,手动填写请求,请看演示)
1.测试计划(Test plan)→添加(Add)→Threads(users)→线程组(Thread Group)
2.线程组(Thread Group) →添加(Add) →Sampler →HTTP请求(Http Request)
3.如下图填写(若有参数,还需把参数手动添加进去)
JMeter性能测试基础

录制脚本

https://http://www.166cai.com/的登录为例,请看演示)
•方法一:使用Badboy录制脚本
下载badboy:Downloads
1.启动badboy,输入url,进行录制操作
JMeter性能测试基础

2.操作页面录制请求,点击暂停按钮终止录制
JMeter性能测试基础

3.导出JMeter脚本并保存,之后使用JMeter打开保存的文件
JMeter性能测试基础

•方法二:使用Jmeter代理录制脚本
1.创建一个线程组【测试计划(Test plan)→ 添加(Add)→Threads(users)→线程组(Thread Group)】
2.创建http代理服务器【工作台(WorkBench)→ 添加(Add) → 非测试元件(Non-Test Elements)→ Http代理服务器( HTTP(S) Test Script Recorder)】
JMeter性能测试基础

3.设置浏览器的代理服务器
JMeter性能测试基础

4.点击启动进行录制
5.点击停止,终止录制
JMeter性能测试基础

JMeter线程组设置

总线程数=线程数*循环次数
Ramp_UP Period/线程数=每隔多少秒建立一个线程
设置线程组中的线程数=3、Ramp_UPperiod=0.6s、循环次数=2,
总线程数:3*2=6
所以:0.6/3=0.2,每隔0.2s建立一个线程,也就是1s建立5个线程
JMeter性能测试基础

断言

•响应断言
1.添加响应断言【HTTP请求(Http Reques) →添加(Add) →断言(Assertion)→ 响应断言( Response Assertion )】
2.添加要测试的模式( Patterns To Test)【166cai登录成功的结果中会返回”code”:0,因此我们把”code”:0, 添加到要测试的模式中】
JMeter性能测试基础

断言结果
1.添加断言结果【HTTP请求(Http Reques) →添加(Add) →监听器(Listener)→ 断言结果( Assertion Results )】
JMeter性能测试基础

2.查看断言结果
JMeter性能测试基础
测试请求结果返回的是“code”:1,而不是预期的“code”:0,因此响应断言会报错,具体的问题可根据察看结果树中的请求数据和响应结果判断

察看结果树和聚合报告

•察看结果树(可以看到响应结果,但无法看到响应所消耗的时间)
1.添加结果树【 HTTP请求(Http Reques) →添加(Add) →监听器(Listener)→ 察看结果树(View Results Tree) 】
JMeter性能测试基础

•聚合报告(看不到响应结果,可看到响应所消耗的时间)
1.聚合报告【HTTP请求(Http Reques) →添加(Add) →监听器(Listener)→ 聚合报告(Aggregate Report) 】
JMeter性能测试基础

解释:90%的用户访问时间
若有10个用户访问,访问时间分别为:
251ms 249ms 256ms 264ms 255ms 252ms 248ms 254ms 257ms 253ms
JMeter性能测试基础
假设某个考生数学考了54分,那他考的好还是不好呢?大家肯定会认为不及格肯定不好,那么我要是说他的分数在全部学生中恰好对应的是第80百分位数,也就是说全班大约80%的学生的考分比他低,而约20%的学生考分比他高,那他考的还是不错的哦!

参数化

目的:模拟不同用户登录
1.建立txt文档
JMeter性能测试基础
2.添加CSV Data Set Config 【HTTP请求(Http Reques) →添加(Add) →配置元件(Config Element)→ CSV Data Set Config 】
JMeter性能测试基础
3.将http请求参数化(若路径中有参数,则也需要参数化)
JMeter性能测试基础

参数化结果
JMeter性能测试基础

JMeter性能测试基础

集合点

虽然我们的“性能测试”理解为“多用户并发测试”,但真正的并发是不存在的,为了更真实的实现并发这一感念,我们可以在需要压力的地方设置集合点,在输入用户名和密码登录的地方,所有的虚拟用户都相互之间等一等,然后,一起访问。
1.添加集合点(Synchronizing Timer)【线程组(Thread Group) →添加(Add) →定时器( Timer )→集合点(Synchronizing Timer) 】
2.设置一次释放的线程数(注意:实际运行过程中,可能出现请求数当不满足集合点设置的请求数时,JMeter一直卡在那里,那么解决的方法就是:设置同步定时器的超时时间
同步定时器的超时时间设置要求:超时时间 > 请求集合数量 1000 / (线程数 / 线程加载时间))*
JMeter性能测试基础

关联

经常遇到一个问题:上一步骤中生成的数据需要在下一个程序中使用到(如下一个请求需要用到上一个请求返回的值),这个时候我们就需要在上一程序的页面中取得生成的值,作为请求的一部分数据发出
(以提取安卓影视专题列表页id为例,请看演示)
1.添加正则表达式提取器【HTTP请求(Http Request) →添加(Add) →后置处理器(Post Processors)→ 正则表达式提取器( Regular Expression Extractor )】
2.填写数据,提取专题列表中的第2个id值,见下图
JMeter性能测试基础

先来看一下第2个id值是多少
JMeter性能测试基础

可以使用在线工具检验正则表达式提取是否正确在线正则表达式测试tool.oschina.net/regex
JMeter性能测试基础

3.将提取出来的结果运用到 第二个请求中

4.查看提取结果
JMeter性能测试基础

相关文章: