性能测试工具(安装、介绍功能及基础使用、参数化、断言)
一、工具介绍
1、Loadrunner 介绍
2、JMeter 介绍
二、jmter 环境搭建
1、安装 JDK
JDK 下载 --- 安装 JDK --- 配置环境变量 --- 校验
2、安装 JMter(记住版本需要与JDK版本匹配)
3、JMter 功能概要
1、JDK 常用文件目录介绍
Bin 目录:存放 可执行文件 和 配置文件
docs 目录:是JMeter 的 api 文档,用于开发扩展组件
printable_docs 目录:用户帮助手册
lib 目录:存放 JMeter 以来的 jar 包和用户扩展所依赖的 jar 包
2、修改默认配置 -- JMeter 界面的汉化
4、JMeter 元件和组件介绍
1、元件的基本介绍
2、组件的介绍
3、元件的作用域
元件的作用域:是靠测试计划的树形结构中元件的父子关系来确定的。
所有的组件都是以取样器为核心来运行的。组件添加的位置不同,生效的取样器也不同。
作用域原则:
4、元件的执行顺序
例子(下图案例执行顺序)
三、JMeter 的使用
1、第一个案例
2、线程组
作用:线程组就是控制 JMeter 用于执行测试的一组用户
位置:右键点击“测试计划” --- 添加 --- 线程(用户)--- 线程组
分类:
线程组:普通的、常用的线程组,可以看做一个虚拟用户组,线程组中的每一个线程都可以理解为一个虚拟用户(可以串行执行,也可以并行执行)
setUp 线程组:一种特殊类型的线程组,可用于执行预测试操作。(在所有线程之前执行)
tearDown 线程组:一种特殊类型的线程组,可用于执行测试后操作。(在所有线程之后执行)
参数介绍:
3、HTTP 请求
查看结果树:一个 HTTP 请求下 包含了两个HTTP 请求
查看结果树乱码:(去配置文件里面重新配置:sampleresult.default.encoding)改为:sampleresult.default.encoding=UTF-8,同时把 # 号去掉。然后重启JMeter。
四、JMeter 参数化
定义:使用参数的方式来替代脚本中的固定测试数据
实线方式:文件定义方式(所有测试数据都是固定的情况下)、数据库方式(灵活)、定义变量(最基础)、函数方式(灵活)
参数化测试:把测试数据组织起来,用不同测试数据调用相同测试方法。
1、用户定义变量
作用:定义全局变量
位置:测试计划 --- 线程组 --- 配置元件 --- 用户定义变量
例子:要求使用用户定义的变量配置被测系统的协议、域名和端口。(https://www.baidu.com:443)
使用上面的参数
2、用户参数
作用:针对同一组参数,当不同用户来访问时,可以获取到不同值
位置:测试计划 --- 线程组 --- 前置处理器 --- 用户参数
例子:
3、csv 数据文件设置
作用:让不同用户多次循环,可以取到不同的值
位置:测试计划 --- 线程组 --- 配置元件 --- csv 数据文件设置
文件格式:
4、函数(__counter)
作用:计数函数,一般做执行次数统计使用。
位置:在菜单中选择 --- 选项 --- 函数对话框助手
例子:
五、JMeter 断言
让程序自动判断预期结果和实际结果是否一致
提示:jmeter 在请求的返回层面有个自动判断机制(响应状态码)
jmeter 中常用断言:
响应断言(对任意格式进行断言)、JSON断言、持续时间断言(duration assertion)
1、响应断言
对 http 请求的任意格式的响应结果进行断言
位置:测试计划 --- 线程组 --- HTTP请求 --- (右键添加)断言 --- 响应断言
测试字段:(各个项目解释)
匹配规则(各个解释)
测试模式:即填写你指定的结果(可以填写多个),按钮【添加】、【删除】是进行指定内容的管理
2、JSON数据的断言
作用:对 HTTP 请求的JSON格式响应数据结果进行断言
位置:测试计划 --- 线程组 --- HTTP请求 --- (右键添加)断言 --- JSON断言
JSON元素路径:就像代码里面的 resp.json().get("key") 一样,需要取出里面的键值对数据,就像下面的 $.weatherinfo.city 下面红框是必选的。
3、断言持续时间
作用:检查HTTP请求的响应时间是否超出要求范围
位置:测试计划 --- 线程组 --- HTTP请求 --- (右键添加)断言 --- 断言持续时间