Jmeter组件:逻辑控制器(重点)
A、是什么
逻辑控制器:可以控制取样器的实现顺序(分支+循环)的一种组件
类似于计算机语言的流程控制语句,流程控制就是控制代码的执行顺序(分支+循环)
B、为什么
需求:
1. name=['百度','京东','淘宝']
2. name=百度,线程组执行请求百度;name=京东,线程组执行请求京东;name=淘宝,线程组执行请求淘宝;
问题:
1. Jmeter目前学习的知识无法使用判断语句去控制HTTP取样器
什么是逻辑控制器?
概念:Jmeter逻辑控制器是可以控制取样器(Sampler)的执行顺序,它由多个逻辑控制语句封装成不同功能的组件组成
逻辑控制器作用域
作用域:只对其子节点的sampler有效。
常用逻辑控制器
1. 如果(If)控制器
2. ForEach控制器
3. 循环控制器
如果(If)控制器
作用:条件成真,则执行控制器下所有取样器
解决方案分析
1. 测试计划->线程组
2. 测试计划->用户自定义变量
3. 线程组->如果(If)控制器
4. 如果(If)控制器->HTTP请求
5. 测试计划-察看结果树
技术难点分析
如果(If)控制器 参数设置
如果(If)控制器参数配置图

1. 条件:"${name}"=="百度"
2. 注意:
1) 引用变量格式${name}需要被双引号括起来
2) 两个等号
3) 值需要被双引号括起来
如果(If)控制器-总结
1. 作用
2. 作用域
3. 条件格式
ForEach控制器
作用:ForEach控制器一般和用户定义的变量一起使用,在用户自定义变量中读取一系列相关的变量。
案例1
使用ForEach组件读取自定义变量,作为请求(查询学院-所有)的user变量值使用
操作分析
1. 测试计划->线程组
2. 线程组->用户定义的变量
3. 线程组->ForEach控制器
4. ForEach控制器->HTTP请求
5. 测试计划->察看结果树
技术难点分析
1. ForEach控制器参数设置
2. 用户定义的变量书写格式(前缀+_+数字)
ForEach控制器参数配置图

1. 输入前缀变量:输入要遍历变量前缀
2. Start index for loop(exclusive):遍历变量开始的索引(从0开始)
3. End index for loop(inclusive):遍历变量结束的索引(不包括结束索引)
4. 输出变量名称:定义要被引用的变量名称
ForEach控制器-总结
1. 作用
2. 使用ForEach读取用户定义的变量时,变量格式
3. ForEach参数设置
循环控制器
作用:指定循环控制器内取样器的执行次数
案例3
使用循环控制器执行(查询学院-所有)接口10次
操作步骤分析
1. 测试计划->线程组
2. 线程组->循环控制器
3. 循环控制器->HTTP请求(查询学院-所有)
4. 测试计划->察看结果树
循环控制器配置图

1. 循环次数:要执行的次数
循环控制器-总结
循环控制器更灵活,线程组循环是组内所有请求都循环执行,循环控制器可以只是让组内指定的请求循环执行
Jmeter组件:QPS
A、是什么?
QPS: Query Per Second ---- 每秒查询率,每秒访问服务器资源多少次
20QPS == 每秒访问20次
B、为什么?
一个用户以 20QPS 的频率访问服务器,持续10秒,查看服务器的平均响应时间?
(等价)
一个用户每秒访问20次服务器,持续10秒,查看服务器的平均响应时间?
C、怎么用?
使用新的组件实现:常量吞吐定时器 Timer ----> Constant Throughput Timer
实现流程:
1)、搭框架(测试计划,线程组,http请求,聚合报告)
1)、搭框架(测试计划,线程组,http请求,聚合报告)
循环次数设置: 频率*持续时间
2)、添加常量吞吐定时器
将 QPS(每秒查询数) 换算成每分钟查询数
3)、查看聚合报告
throughput 显示的是每秒查询数,参考步骤2设置的值,实际执行一般围绕步骤2的值上下波动


Jmeter组件综合:作用域(记住)
A、是什么
Jmeter 组件的作用范围(可以影响到哪些组件)
B、分类
第一类:以聚合报告为例,只对树形结构上自己的直接父级以及兄弟级以及子级...有效
基本所有组件都属于第一类
第二类:逻辑控制器,只对子级有效
第三类:取样器可以不依赖任何组件存在,可以不对其他组件产生任何影响,
取样器无作用域概念
Jmeter组件综合:执行顺序(记住)
A、是什么?
组件: Jmeter的内置功能,每一个功能都是一个组件
元件:元件中存储的都是性质相似的组件(就是对组件的分类管理)
B、排序
1.各元件之间的执行顺
1) 配置元件(config elements) : 存储了一些程序的全局性数据
2) 前置处理程序(Per-processors) :取样器执行之前执行的组件,可以存储批量执行的数据
3) 定时器(timers) :在请求执行之前集合用户
4) 取样器(Sampler) :访问服务器
5) 后置处理程序(Post-processors) :处理响应的结果
6) 断言(Assertions) :断言结果
7) 监听器(Listeners) :最后执行
理解记忆:核心思想就是以取样器为中心划分的。
Jmeter扩展组件:图形监视器
A、是什么?
扩展组件:不是Jmeter 官方提供的,而是自己开发的组件,就是扩展组件
图形监视器:是监视服务器的如,内存、CPU、磁盘、网络等运行状态的组件实现
B、为什么?
模拟生产环境下,服务器运行状态的测试
C、怎么用?
C-1、实现思想
1)、明确应用场景:
学习期间:服务器和测试程序在个人 PC 机,工作时,测试程序可能需要远程访问服务器
我们要测试的是服务器的运行状态
2)、图解流程

C-2、实现流程
1)、Jmeter本身不具备该功能,下载安装第三方实现
2)、在服务器端安装窃听程序,在测试机端安装(整合进 Jmeter )接收程序
窃听程序: Server_Agent,启动:双击 serverAgent.bat 使用端口号 4444
接收程序: 复制Jmeter_Plugins_Starndat 目录下的 jar包,到Jmeterlibext
3)、编写测试脚本启动并执行
a)、脚本循环 次数设置为无限,如果次数设置比较少,可能执行时间短,等不到监听
b)、添加接收组件: 监听器 ----> jp@gc permon Metrics Collector

Jmeter组件:FTP(了解)
A、是什么
FTP:文件上传和下载
上传:将文件从本地上传到服务器
下载:将服务器资源下载到本地
B、为什么?
程序中常见操作
C、怎么用?
C-1、保证服务器程序具备文件上传和下载的功能,安装一个文件上传下载服务器(FTP服务器)
C-2、Jmeter内置了 FTP请求,可以通过此请求实现文件传输测试
Jmeter项目准备:接口清单提取与整理
A、接口清单组成
接口清单组成:
功能模块,每个功能又有三要素: URL + 提交的数据 + 响应的数据
B、API文档
Application Programming Interface 应用程序编程接口,此文档中声明了
程序的功能,以及该功能描述以及访问的资源路径和提交响应的数据
是开发和测试共同遵守的文档说明
C、接口清单就是从 API 文档提取整理的
因为 API 文档内容冗余,测试需要从中提取,测试需要的关键信息