Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇

Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学 二.进阶篇

  • 一、逻辑控制器
    • 1.1 简介
    • 1.2 需求1 if条件控制器
    • 1.3 需求2 ForEach循环控制器
    • 1.4 需求3 循环控制器
  • 二、关联
    • 2.1 关联-xpath提取器
    • 2.2 关联-正则表达式提取器
  • 三、跨越线程组关联
  • 四、高并发
  • 五、高频率
  • 六、分布式

Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第1张图片

  • 学习目标
    Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第2张图片

一、逻辑控制器

1.1 简介

通过参数化可以实现单个接口的功能测试,而接口测试过程中,除了单个接口的功能测试之外,还会测试接口业务实现,所谓业务,就是一套完整的业务逻辑或流程,这就必须要使用到逻辑控制和关联。
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第3张图片

1.2 需求1 if条件控制器

需求1:测试计划中定义一个 http 请求访问传智播客官网,但是该请求不是无条件执行的,声明一个用户定义的变量,如果变量是 itcast 才执行,否则就不执行
1、搭框架,测试计划,线程组,结果树,声明一个用户定义的变量
2、核心:添加 if 控制器,子级添加取样器 (和之前实现不同,控制器和取样器存在父子级关系)

添加-逻辑控制器-如果(if)控制器
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第4张图片
注意这里不勾选Interpret Condition as Variable Expression
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第5张图片
输入如下:截图里截错了哈,应该是itcast

"${myComp}" == "itcast"

添加Http请求如下:
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第6张图片
如果要让逻辑控制器生效,必须拖拽Http请求为逻辑控制器的子集
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第7张图片

创建用户自定义变量
myComp itcast
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第8张图片
查看结果树
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第9张图片
如果条件不满足的话,会发现查看结果树中是没有内容的
比如这里我更改一下IF控制器中的内容
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第10张图片
点击运行,可以看到请求不会执行
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第11张图片

1.3 需求2 ForEach循环控制器

需求2:有一组关键字 [hello,python,测试] (使用用户定义的变量存储)要依次取出,并在百度搜索
1、搭框架,测试计划,线程组,结果树,声明一个用户定义的变量,存储一组数据
2、添加 forEach 控制器,子级添加取样器 (和之前实现不同,控制器和取样器存在父子级关系)
3、百度搜索关键字

添加Http请求如下
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第12张图片

添加-逻辑控制器-ForEach控制器
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第13张图片
注意:HTTP请求必须是ForEach的子集
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第14张图片
添加-配置元件-用户定义的变量如下:
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第15张图片

配置ForEach控制器
这里name是变量name_1、name_2、name_3的前缀
0:不包含的循环开始字段
3:包含的循环结束字段
array:每一次循环变量的名称
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第16张图片
查看结果树如下:
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第17张图片
注意线程组中的循环次数是1即可
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第18张图片

1.4 需求3 循环控制器

需求3:循环访问学生管理系统10次
实现:
1、搭框架,测试计划,线程组,结果树
2、添加循环控制器,子级添加取样器 (和之前实现不同,控制器和取样器存在父子级关系)

创建HTTP请求如下
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第19张图片
拷贝一下HTTP请求,分别起名HTTP请求1和HTTP请求2
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第20张图片

添加-逻辑取样器-循环控制器
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第21张图片
循环次数为5,并且创建2个循环控制器,分别操作一个HTTP请求
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第22张图片
查看结果树如下:
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第23张图片

二、关联

关联: 上一个请求的响应结果和下一个请求的数据有关系。

2.1 关联-xpath提取器

需求1:两个http请求,请求A访问传智播客官网,请求B访问百度 ,请求A将传智播客官网源码中的 title 标签的值取出,传递给请求B,在请求B中作为关键字搜索这个title值
步骤:
1、搭框架,编写两个请求,传智播客 + 百度搜索
2、核心: 取出传智播客页面源码的 title 值
3、传递给百度:${变量名} 的方式传值

先新建一个HTTP请求,访问传智播客的官网
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第24张图片
添加一个查看结果树,从返回结果,我们可以看到Response Body中有标签title
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第25张图片
那如何提取标签title呢,我们采用提取器

添加-后置处理器-Xpath提取器
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第26张图片
编辑如下
匹配数字:-1代表所有,1代表第一个,这里取1即可
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第27张图片
配置HTTP请求访问百度,之前访问都会有百度安全验证,原因是没有勾选这个“与浏览器兼容的头”,勾选后就可以访问了
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第28张图片
查看结果树如下:正确提取到了传智教育
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第29张图片

2.2 关联-正则表达式提取器

需求:两个请求,请时求A查询所有学院信息,请求B访问百度,从请求A中提取出第一个学院的学院名称,把名称放在百度上搜索
步骤:
1、搭框架,编写两个请求,查询所有学院信息 + 百度搜索
2、核心:从学院查询中提取学院名称
3、传递给百度,调用格式: ${变量名}

添加HTTP请求,获取所有学院的名称
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第30张图片
可以先看一下查询结果,是一个json的字符串,我们要提取dep_name后面的value的值
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第31张图片

添加-后置处理器-正则表达式提取器
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第32张图片
配置如下:这里的?是终止贪婪模式,如果不写?会一直匹配到最后
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第33张图片
添加http请求查询百度,这里的val是正则表达式的变量名
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第34张图片
查看结果树如下:
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第35张图片

建议: 如果从标签文档提取数据建议使用 XPath 提取器,如果从非标签文档提取数据建议使用正则表达式提取器

三、跨越线程组关联

变量作用域局限于当前线程组,其他线程组不可以直接调用。可以将请求A中提取的结果导出到公共空间(可以被不同线程组共享),请求B再从公开空间调用该变量,相当于全局变量。

步骤:
1、将请求A的数据导出到公共空间( __setProperty)
2、把代码放在beanshell取样器中
3、请求B从公共空间调用数据 (__property)

我们继续采用上面的例子,先建立一个线程组1,新建一个HTTP请求,获取itcast的html标签
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第36张图片
建立子XPath提取器,提取title标签
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第37张图片
再建立一个线程,新建HTTP请求访问百度,采用XPath中提取的title的值
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第38张图片
配置执行计划是顺序执行,保证先运行线程组1
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第39张图片

调用查看结果树,发现线程组2获取不到结果,根据提示可以看到val这个变量是没有申明的局部变量,只能在线程组1中使用
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第40张图片
首先我们要设置一个全局变量,点击函数助手
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第41张图片
函数助手配置如下,点击生成,复制内容

${__setProperty(out,${val},)}

Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第42张图片

添加-取样器-BeanShell取样器
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第43张图片
把刚才生成的内容拷贝过来即可完成设置全局变量
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第44张图片
接着我们获取全局变量,点击函数助手
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第45张图片
配置如下:拷贝生成的内容
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第46张图片
放到百度查询的内容
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第47张图片

运行后查看结果树:
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第48张图片
虽然是一长串字母,我们可以在浏览器中打开,没问题
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第49张图片

模拟各种正常的、峰值的测试环境,检测程序的各项性能指标是否能够达标
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第50张图片

四、高并发

JMeter 中内置了 定时器,可以实现时间模式相关的性能测试
需求1:同一时刻 100 个同学去访问学生管理系统的查询所有学院信息功能,统计高并发情况下平均响应时间以及错误率(高并发)
1、搭框架,测试计划,线程组,取样器,结果树(局限性),指定线程组的线程数属性值为 100
2、添加定时器 synchronizing timer(集合点组件)
3、运行并查看结果查看:聚合报告组件,可以对结果汇总分析

添加HTTP请求
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第51张图片

添加-定时器-Scynchronizing Timer
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第52张图片
模拟用户组的数量,按照100来
这里注意超时时间不要设置0,不要让程序卡死
集合点组件使用时,当用户总数不能整除一组用户数时,可能会导致程序挂起,所以要设置0
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第53张图片

线程数也设置100
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第54张图片
添加聚合报告
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第55张图片
运行后查看聚合报告
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第56张图片

五、高频率

需求2:一个用户以 20QPS ( == 20 次/s,QPS是每秒钟的查询次数) 的频率访问学生管理系统服务器,持续15秒,统计服务器的平均响应时间
QPS: Query per Seconds 每秒查询数(查询率),每秒访问多少次服务器
1、搭框架,测试计划,线程组,取样器,聚合报告,根据题干计算数据:
循环次数 = 访问频率 * 持续时间

2、添加QPS访问频率控制的相关组件:
每分钟访问次数 = 访问频率 * 60

首先准备好HTTP请求
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第57张图片

添加-定时器-Constant Throughput Timer
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第58张图片
注意:这里目标吞吐量是按照分钟计算的,那我们20QPS是每秒查询20次,折合成一分钟就是20 * 60 = 1200,所以这里设置成1200
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第59张图片
QPS = 20,持续15秒,我们可以算一下:
接口访问的频率 = QPS * 持续时间 = 20 * 15 = 300
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第60张图片
查看聚合报告
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第61张图片

六、分布式

多机台协作,以集群的方式完成测试任务,可以提高测试效率。
控制机 = 负责任务分配
执行机 = 负责任务实现

Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第62张图片

工作流程
1.控制机需要制定测试任务,并下发到执行机
2.执行机执行任务并将结果返回到控制机
3.控制机做结果汇总

环境搭建:
1、不同的测试机上安装 Jmeter
2、配置基础环境(统一操作系统、JDK、Jmeter … )
3、核心: 控制机如何与执行机通信? 关键点:端口号
4、控制机中设置执行机的 IP
%JMETER_HOME%/bin/jmeter.properties ----> remote_hosts=执行机A的IP:端口号, 执行机B的IP:端
口号, …

Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第63张图片
Remote Hosts - comma delimited
配置地址和端口号,逗号隔开
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第64张图片
3-3、控制机和执行机都得设置远程访问相关属性:
server.rmi.ssl.disable=true
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第65张图片
配置完成后要重启JMeter

运行的时候,点击远程启动所有
Jmeter自动化测试工具从入门到进阶6小时搞定.黑马跟学(二).进阶篇_第66张图片
注意每一台JMeter都要开启jmeter.bat
查看聚合报告

你可能感兴趣的:(java,开发测试工具,jmeter,自动化,测试工具)