目录

接口测试:Jmeter工具核心

参数化

为什么要参数化?

键所对应的值都是写死的,只能手动更改,无法解决新增大数量(1000条)的问题

什么是参数化?

根据需求动态获取数据并进行赋值的过程

常用方式

CSV Data Set Config

简介

一种从外部读取数据功能的组件

实施方案分析
  • 基于测试计划->线程组
  • 基于线程组->配置元件->CSV Data Set Config
  • 基于线程组->Sampler->HTTP请求
  • 基于测试计划->HTTP信息头管理器
  • 基于测试计划->监听器->察看结果树
组件要点分析
  • 线程组:循环次数10
  • CSV Data Set Config 读取变量配置
  • HTTP请求:Body Data填写(JSON报文) 方法(POST)
  • 参数化引用格式:${参数名} 如:${dep_id}
  • HTTP信息头管理器:Content-Type:application/json;charset=utf-8
CSV Data Set Config 参数配置
  • Filename:文件路径+文件名+后缀名 如:d:/a.txt;
  • File Encoding:文件编译字符编码,一般设置utf-8;
  • Vaiable Names:读取参数后保存的变量名称;
  • Delimiter:如文件中使用的是逗号分隔,则填写逗号;如使用的是TAB,则填写\t;
HTTP信息头管理器
作用

告诉服务器请求的数据格式

用户参数

简介

一种参数设置方式,用户可设置参数名称以及参数值

解决方案实施分析
  • 位置:测试计划–>线程组–>前置处理器–>用户参数
  • 其他组件和CSV Data Set Config相同,去除 CSV Data Set Config组件
组件要点分析
  • 线程组:注意是【线程数】为10
  • 用户参数,参数格式:可以是数字、字母、下划线开头,建议最好是实义单词
  • HTTP请求:Body Data填写(JSON报文) 方法(POST)
  • 参数化引用格式:${参数名} 如:${dep_id}
  • HTTP信息头管理器:Content-Type:application/json;charset=utf-8
用户参数
  1. 添加变量
  2. 添加用户

用户定义的变量

简介

用户可根据需求自定义相应的变量,一般做全局变量使用。

分析

通过概念我们知道,【用户定义的变量】一般做全局变量使用,不适合参数需求量大时的选择,所以在这里我们不在使用,用户定义的变量去做新增时的解决方案,主要讲解下它做参数化时的使用步骤和方式

需求场景
  • 查询-指定:url地址
  • 接口查询指定的id(T02)采用参数动态获取方式
解决方案分析
  • 参数化组件:用户定义的变量 (测试计划->线程组->配置元件->用户定义的变量)
  • 线程组
  • 请求组件:HTTP请求
  • 查看结果组件:察看结果树

函数

简介

完成某个指定功能代码的封装。

  • 函数查找方式:函数助手对话框 1) 菜单-选项->函数助手对话框 2) Ctrl+Shift+F1 3) 工具栏倒数第二个记事本图标
  • 函数在Jmeter中有非常多类型(计数函数、日期函数、随机函数…)
需求:
  • 查询-所有url地址
  • 查询10次,在每次请求地址后面增加访问记录数
需求关键点分析
  • 起个计数参数名 如:num
  • 把计数参数名的值给参数化
  • 参数化的值使用计数函数(count)
实施方案
  • 基于测试计划添加线程组(循环次数10)
  • 基于线程组添加HTTP请求
  • 基于测试计划添加察看结果树
函数配置图
  • 选择一个功能:选择_counter计数函数
  • 第一个参数:TRUE,每个用户有自己的计数器;FALSE,使用全局计数器 我们选FALSE
  • 点击生成
  • 选择复制生成的函数

参数化方式总结

区别

  • CSV Data Set Config: 功能强大、适应各种迭代及多参复杂场景。
  • 用户参数:适应传递少量参数时使用
  • 用户定义的变量:和用户参数使用场景相似,不同在于一般做全局变量使用
  • 函数:功能强大,函数类型繁多,灵活度大,适应各种应用场景。

推荐

  • CSV Data Set Config
  • 函数

关联

需求

  • 对http://www.baidu.com进行2次访问;
  • 第一次获取title值,第二次把获取的值作为参数名(title)的参数值附加请求中。

问题

  • 如何从第一次请求获取的响应数据中提取title值?
  • 解决这种需求场景在测试领域中叫什么?

什么是关联?

概念:从上一条请求中获取数据,使用在下一条请求中的过程。

Jmeter关联中常用的两种方式

  • 正则表达式提取器
  • XPath Extractor

正则表达式提取器

概念

根据需求定制规则,返回匹配规则的数据的一种组件

实施方案分析

  • 测试计划->线程组
  • 线程组->HTTP请求(获取title)
  • 获取title->后置处理器->正则表示式提取器
  • 线程组->HTTP请求(使用title)
  • 测试计划->察看结果树

技术难点分析

正则表达式

. XPath Extractor

概念

一种可被用来提取页面给定内容的组件,主要采用的方式为XPath路径

解决方案分析

  • 测试计划->线程组
  • 线程组->HTTP请求(获取title)
  • 获取title->后置处理器->XPath Extractor
  • 线程组->HTTP请求(使用title)
  • 测试计划->察看结果树

实施难点分析

XPath 路径

总结:

区别

  • 正则表达式提取器可以用于对页面任何文本的提取,提取的内容是根据正则表达式在页面内容中进行文本匹配;
  • XPath Extractor则可以提取返回页面任意元素的任意属性,如//a[@href="http://tieba.baidu.com”]/@name;

选择

  • 如果需要提取的文本是页面上某元素的属性值,建议使用XPath Extractor;
  • 如果需要提取的文本在页面上的位置不固定,或者不是元素的属性,建议使用正则表达式提取器。

断言

为什么要学习断言?

接口测试原理: 请求:是否正确,默认请求成功是200(GET),如果请求错误也能返回404、500等。 检查:返回数据的正确性与完整性

什么是断言?

概念:断言就是让程序代替人工去判断程序响应数据是否达到预期结果

断言常用方式

  • 响应断言
  • Size Assertion(Size 断言)
  • Duration Assertion (持续时间断言)

响应断言

Jmeter中一种断言组件,可断言响应(信息头内容、主体内容、响应代码)

技术难点分析

  • 断言代码
  • 断言数据(T02)

断言结果

作用:断言运行成功默认不显示,如果断言失败,记录每次失败原因

Size Assertion(Size 断言)

作用

主要判断返回数据的大小是否属于预期数据大小范围(Response Header、Response Body、响应信息)

技术难点分析

断言响应主题数据大小

断言持续时间

作用:断言服务器响应请求的时间是否小于指定值;

技术难点分析

时间设置

作用域

在jmeter中,元件的作用域是靠测试计划的树形结构中元件的父子关系来确定;

作用域说明

  • 取样器(sampler)元件内组件不依赖其他元件就可执行,因此取样器不存在作用问题;
  • 逻辑控制器(Logic Controller)元件作用域只对它的子节点有作用;
  • 其他作用域默认根据测试计划中树形结构来定;

各元件执行顺序

1.各元件之间的执行顺

  1. 配置元件(config elements)
  2. 前置处理程序(Per-processors)
  3. 定时器(timers)
  4. 取样器(Sampler)
  5. 后置处理程序(Post-processors)
  6. 断言(Assertions)
  7. 监听器(Listeners)

集合点

作用

集合点用以同步虚拟用户,以便恰好在同一时刻执行任务。

技术难点分析

  • 线程数>=20
  • 集合点设置

集合点作用域

  • 集合点只对一个请求起作用,如果针对指定请求起作用,放到该请求内;
  • 集合点对多个个请求起作用,放到与请求平级同一层次;