JMeter进阶

学习目标

能掌握JMeter的逻辑控制器
能掌握JMeter的关联操作
能掌握JMeter跨越线程组关联
能掌握JMeter高并发场景的设置
能掌握JMeter高频率场景的设置
能知道JMeter的分布式原理

一、逻辑控制器和关联 

通过参数化可以实现单个接口的功能测试,而接口测试过程中,除了单个接口的功能测试之外,还会测试接口业务实现,所谓业务,就是一套完整的业务逻辑或流程,这就必须要使用到逻辑控制和关联。

1.1、if逻辑控制器

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

1.2、forEach逻辑控制器 

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

 1.3、循环控制器

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

二、业务之间的关联

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

2.1、XPath提取器

需求:两个http请求,请求A访问传智播客官网,请求B访问百度,请求A将传智播客官网源码中的title标签的值取出,传递给请求B,在请求B中作为关键字搜索这个title值

步骤:
1、搭框架,编写两个请求,传智播客 + 百度搜索
2、核心: 取出传智播客页面源码的 title 值
3、传递给百度:${变量名}的方式传值

 请求A

请求A的响应结果 

 为了获取请求A的响应结果传递给请求B,添加XPath提取器

进行如下设置,如果请求A能够获取成功,会把<title>标签的数据存储在val 

添加请求B,获取val的值

2.2、正则表达式提取器 

从请求A的响应结果是json格式,请求B请求获取该json数据,使用正则表达式提取器 

例如获取dep_name

 .是任意字符,*是取0至无限长度,?是非贪婪模式。何在一起就是 取尽量少的任意字符,一般不会这么单独写,他大多用在:.*?a就是取前面任意长度的字符,到底一个 a 出现,匹配如下q@wer_qwerqweraljlkjlkjlkj得到:q@wer_qwerqwera 这部分,如果匹配不到后面的 a 字符,则匹配为空。 

请求B

2.3、跨越线程组传值

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

设置全局变量 

获取全局变量 

三、性能测试 (高并发)

模拟各种正常的、峰值的测试环境,检测程序的各项性能指标是否能够达标 

如抢票 

JMeter 中内置了定时器,可以实现时间模式相关的性能测试 

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

四、高频率 

需求2:一个用户以20QPS(== 20次/s)的频率访问学生管理系统服务器,持续15秒,统计服务器的平均响应时间

QPS:Query per Seconds 每秒查询数(查询率)每秒访问多少次服务器

1、搭框架,测试计划,线程组,取样器,聚合报告,根据题干计算数据循环次数=访问频率持续时间
2、添加QPS访问频率控制的相关组件:每分钟访问次数=访问频率*60 

 五、分布式

多台机协作,以集群的方式完成测试任务,可以提高测试效率 

角色划分:
控制机 = 负责任务分配
执行机 = 负责任务实现
工作流程:
1、控制机需要制定测试任务,并下发到执行机
2、执行机执行任务并将结果返回个控制机
3、控制机做结果汇总

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

5、控制机和执行机都得设置远程访问相关属性,修改%JMETER HOME%/bin/jmeter.properties ---->server.rmi.ssl.disable=true 

6、执行机点击jmeter.bat启动

7、在控制机设置http请求,同时点击远程启动所有。

六、接口测试流程

1、制定测试计划,分配任务
2、从API文档中提取接口清单:对API文档简化,提高测试效率,接口清单就是对API文档简化压缩,主要提取三要素(地址,请求方式,数据)
3、设计测试用例并参数化覆盖测试用例
4、编写脚本实现,并导入设计的测试数据;自动化接口脚本的设计: 每次更新都要保证之前的代码没有收到影响,所以要把最基本的增删改查功能设计一套自动化执行的脚本,每次更新后执行这个脚本文件查看是否老接口有影响(此时程序已经在执行了,测试的数据不能对现有的数据进行污染)
5、测试结果汇总,BUG提交

七、生成图形化测试报告

在JMeter 中可以以图形化(饼状图、柱状图..)的方式显示脚本运行结果,较之于聚合报告或查看结果树组件实现更直观,用户体验更友好.

前置条件:将jmx文件复制到jmeter的bin目录,在bin目录打开cmd
生成图形化测试报告命令:jmeter -n -t 脚本文件名 -l 日志文件名(生成的) -e -o 目录(日志文件保存的目录)
-n 无图形化运行
-t 被运行的脚本
-l 将运行信息写入日志文件
-e 生成测试报告
-o 指定报告输出目录 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值