逻辑控制器、生成图形的插件
1. 逻辑控制器
1.1 概念
Jmeter逻辑控制器是可以控制采样器(Sampler)的执行顺序,它由多个逻辑控制语句封装成不同功能的组件组成
1.2 使用场景(为什么学逻辑控制器)
目前学习的知识无法使用判断语句去控制HTTP取样器
1.3 常用的逻辑控制器
- if 控制器
- foreach 控制器
- 循环控制器
- 事务控制器
1.4 如何实现
1. If 控制器
if name == "jd":
request.get("jd.com")
if name == "taobao":
request.get("taobao.com")
while i < 10:
i += 1
func()
作用:条件为真,则执行取样器
实现具体流程:
- 搭建架构
- 创建用户自定义变量
- 添加逻辑控制器
- 在逻辑控制器下添加请求
2. foreach 控制器
作用:循环读取数据
实现具体流程:
- 搭建架构
- 创建用户自定义变量
- 添加foreach逻辑控制器
- 在逻辑控制器下添加请求
注意: 变量输出要使用引号
3. 循环控制器
作用:指定循环控制器内取样器的执行次数
实现具体流程:
- 搭建架构
- 循环逻辑控制器
- 在逻辑控制器下添加请求
4. while 控制器
作用:循环执行控制器内所有采样器,直到条件为假时,停止循环
实现具体流程:
- 搭建架构
- WHILE循环逻辑控制器
- 在逻辑控制器下添加请求
5. 事务控制器
作用:生成一个额外的采样器来测量其下测试元素的总体时间;
具体实现:
- 搭建架构
- 事务控制器
- 在逻辑控制器下添加请求
2. 生成图形的插件
2.1 为什么使用图形插件
提供客户端与服务器交互时各种图形报告
2.2 如何实现
1. 服务器:下载服务器端监听服务程序(ServerAgent-2.2.1),放在任意目录,直接运行startAgent.bat
2. 客户端:下载标准扩展插件(JMeterPlugins-Standard-1.4.0.zip) 解压,将JMeterPlugins-Standard.jar粘贴到Jmeter的Lib目录下面的ext目录,重启jmeter
3. 启动服务器监听器程序(ServerAgent-2.2.1.zip)
4. 客户端加载监听服务器组件图表(jp@gc - PerfMon Metrics Collector)
2. 项目
1 . 项目:接口测试流程
- 编写测试计划,分配任务
任务名称 | 任务描述 | 责任人 | 工期 | 开始日期 | 结束日期 | 进度 | 备注 |
---|---|---|---|---|---|---|---|
环境搭建 | 安装并运行学生管理系统 | 张三 | 0.5 | 5/20 | 5/20 | 进行中 | |
学院模块 | 测试departments的功能点 | 测试1组 李四 | 2 | 5/21 | 5/22 | 未开始 | |
班级模块 | 测试 classes 的功能点 | 测试2组 怪兽 | 3 | ... | ... | 未开始 | |
-
从 API 文档提取接口清单
-
设计测试用例并设计数据(参数化覆盖测试用例)
测试用例的要素:id, 描述、前置条件、输入、输出结果、预期结果、状态、错误级别
测试用例: 抽象的,声明使用哪些类型的测试数据
测试数据: 具体的,根据测试用例设计的具体数据
-
编写脚本并导入测试数据—》 参数化
-
执行脚本,并比对实际运行结果与预期结果是否一致
2. 功能测试
2.1 概念
功能测试: 模拟用户的多样性操作,对每一个功能点进行逐一测试
特点:1、模拟多样性
2、接口覆盖率 100%
2.2 实现
2.2.1 编写测试脚本
功能测试时,对于某个接口而言,脚本实现基本一样,测试数据多条,使用 CSV Data Set Config 组件实现
使用csvdatasetconfig流程:
1、编写添加脚本
2、编写 CSV 文件存储批量数据。 注意: 路径,建议使用相对路径
3、关联脚本与 CSV 文件
3-1、设置循环次数
3-2、使用中间件 CSV Data Set Config 解析 CSV 文件(获取值)
3-3、将读取的数据设置进步骤1(设置值)
对于循环次数的优化
要实现的结果: 可以实现文件数据的随意增删,脚本读取不需要变动
1、将循环次数设置为永远
2、CSV Data Set Config 配置
Recycle on EOF ? FALSE === 文件结束时终止循环
Stop Thread on EOF? TRUE === 文件结束时终止线程
2.2.2 CSV 格式的文件存储模拟用户多样性操作的数据
1)、设计测试用例
设计测试用例: 声明使用什么类型的测试数据
举例(了解):
类型1 正向数据
类型2 逆向数据 dep_Id 为空,其他正常
类型3 逆向数据 dep_name 为空, 其他正常
类型4 逆向数据 master_name 为空, 其他正常
.......
怎么设计测试用例?
测试用例的设计原则
正向 + 逆向
1. 覆盖所有的必选参数
2. 组合可选参数
3. 参数边界值(区间取值)
4. 如果参数的取值范围是枚举变量,需要覆盖所有枚举值(程序中的一些常量)
5. 空数据
6. 包含特殊的字符
7. 越界的数据(超出数据库约束长度)
8. 错误的数据(格式有误,邮箱格式、手机格式......)
2)、参数覆盖测试用例
根据测试用例的声明设计测试数据
2.3 结果比对
将执行结果逐条与预期结果比对,如果实际结果与预期结果运行不一致,记录并提交
3. 自动化测试
3.1 概念
自动化测试: 让程序代替人工生成测试数据并判断响应的结果是否符合预期
3.2 作用
场景: 接口升级(迭代)时,会使用接口自动化测试
3.3 实现
3.3.1 自动化测试原则
1、只测试重要的或被重复使用的接口(较之于功能测试,功能测试需要测试所有接口)
2、只需要设计正向的数据(不需要考虑多样性)
3、自动化测试可以被重复(多次)执行(功能测试不能重复执行) --- 优点
4、自动化测试时尽量不要使用关联,可以测试某个指定接口
总结:
自动化测试是对功能测试的补充,接口升级时,可以借助于自动化测试,检查升级前的接口实现是否能够正常运行
自动化测试是怎么可以做到能够重复执行的?
1、功能测试不能重复执行,因为会修改数据库的数据,而执行完毕之后,数据会真正的被写入到数据库
2、而自动化测试,测试中也会往数据库写入数据,但是测试结束前 ,会将测试中写入的数据全部删除
新增学院信息,删除所有新加学员信息
更新查询
线程组: setup, teardwon,
跨线程组:setproperty property beanshell sampler t提取器
断言
3.3.2 实现流程
1、使用函数生成测试数据
2、使用断言判断响应结果
3、使用 setUp 线程组添加数据,使用 tearDown 线程组删除数据
4、使用跨线程组传值将 setUp 的 id 传递给 tearDown 线程组
5、使用后置处理器的正则表达式提取器新增的学院的 id
6、使用直连数据库获取学院的 id
知识点: 改和查的执行顺序问题,建议先勾选独立运行每个线程组,然后,脚本编写时,改在前,查在后,查中的断言要断言修改后的数据,增删改查在自动化测试中的顺序: 增、改、查、删
4. 生成测试报告
4.1 概念
可以以图形化(饼状图、柱状图.....)的方式显示脚本执行结果
4.2 作用
结果显示更直观、更友好
4.3 实现(怎么生成图形化的测试报告)
方式1: jmeter -n -t D:/Stu_AutoScript.jmx -l testLog -e -o ./output/report
方式2: jmeter -g D:/resultt.jtl -o ./outputreport
生产环境
开发环境
测试环境
不要污染开发的数据
jmeter -g
jmeter -g C:\Users\Administrator\Desktop\接口测试脚本\day3\xx.jtl -o C:\Users\Administrator\Desktop\接口测试脚本\day3\2