逻辑控制器、生成图形的插件

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 . 项目:接口测试流程

  1. 编写测试计划,分配任务
任务名称 任务描述 责任人 工期 开始日期 结束日期 进度 备注
环境搭建 安装并运行学生管理系统 张三 0.5 5/20 5/20 进行中
学院模块 测试departments的功能点 测试1组 李四 2 5/21 5/22 未开始
班级模块 测试 classes 的功能点 测试2组 怪兽 3 ... ... 未开始
  1. 从 API 文档提取接口清单

  2. 设计测试用例并设计数据(参数化覆盖测试用例)

    测试用例的要素:id, 描述、前置条件、输入、输出结果、预期结果、状态、错误级别

    ​ 测试用例: 抽象的,声明使用哪些类型的测试数据

    ​ 测试数据: 具体的,根据测试用例设计的具体数据

  3. 编写脚本并导入测试数据—》 参数化

  4. 执行脚本,并比对实际运行结果与预期结果是否一致

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

最后修改:2021 年 08 月 10 日
如果觉得我的文章对你有用,请随意赞赏