jmeter
jmeter环境安装
1、安装JDK
-JDK下载: 官网 http://www.oracle.com/
-安装JDK
-配置环境变量 JAVA_HOME=XXXX 在环境变量Path中添加:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
-校验
2、安装JMeter
-JMeter下载 官网 https://jmeter.apache.org/download_jmeter.cgi jmeter版本必须与JDK版本匹配
-安装JMeter
-配置环境变量 JMeter_HOME=xxxxx 在环境变量Path中添加 %JMeter_HOME%\lib\ext\ApacheJMeter_core.jar;%JMeter_HOME%\lib\jorphan.jar
-启动验证
JMeter功能概要
JDK常用文件目录介绍
Bin目录:存放可执行文件和配置文件
doce目录:是JMeter的api文档,用于开发扩展组件
printable_docs目录:用户帮助手册
lib目录:存放JMeter依赖的jar包和用户扩展所依赖的jar包
JMeter界面的汉化
永久性-修改配置文件
1、找到jmeter安装目录下的bin目录
2、打开jmerer.properties文件,把第37行修改为“language=zh_CN”
3、重启jmerer
JMeter元件和组件的介绍
元件:多个类似功能组件的容器(类似于类)
取样器——》发送请求
逻辑控制器——》控制语句的执行顺序
前置处理器——》对请求参数进行预处理
后置处理器——》对响应结果进行提取
断言——》检查接口的返回结果是否与预期结果一致
定时器——》设置等待
测试片段——》封装一段代码,供其他脚本调用
配置元件——》测试数据的初始化配置
监听器——》查看jmeter脚本的运行结果
组件:实现独立的某个功能(类似于方法)
接口自动化脚本的实现过程:
1、初始化测试参数
2、对请求参数进行赋值
3、调用GET/POST方法发送请求
4、提取响应中特定字段的值
5、对提取出来的值与预期结果进行比对
6、在控制台查看脚本运行的结果
元件的作用域:是靠测试计划的树形结构中元件的父子关系来确定的
提示:所有的组件都是以取样器为核心来运行的。组件添加的位置不同,生效的取样器也不同
作用域的原则:
-取样器:核心,不和其他元件相互作用,没有作用域
-逻辑控制器:只对其子节点中的取样器和逻辑控制器起作用
-其他元件:
①如果是某个取样器的子节点,则该元件只对其父节点起作用
②如果其父节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)
元件的执行顺序
同一个作用域下不同类型元件:
1)配置元件
2)前置处理程序
3)定时器
4)取样器
5)后置处理程序
6)断言
7)监听器
同一个作用域下多个相同类型文件:按照测试计划从下到下的顺序依次执行
线程组:线程组就是控制jmeter用于执行测试的一组用户
特点:
①模拟多人操作
②线程组可以添加多个,多个线程组可以并行或串行
③取样器和逻辑控制器必须依赖线程组才能使用
④线程组下可以添加其他元件下组件
线程组分类:
线程组:常用的线程组,可以看做一个虚拟用户组,线程组中的每一个线程都可以理解为一个虚拟用户
setUp线程组:一个特殊类型的线程组,可用于执行预测试操作
tearDown线程组:一个特殊类型的线程组,可用于执行测试后工作
HTTP请求:向服务器发送http及https请求
查看结果树:查看http请求的请求和响应结果
组成:
1)取样结果:查看响应信息头信息、响应状态码
2)请求:查看请求相关信息(url、方法、参数)
3)响应:查看响应信息
响应结果出现乱码解决:
①找到jmeter安装目录下的bin目录
②打开jmeter.properties文件,修改配置sampleresult.default.encoding=UTF-8
③重启jmeter即可
参数化
参数化测试:把测试数据组织起来,用不同的测试数据调用相同的测试方法
常见的参数化方式:
-用户定义的变量
作用:定义全局变量
-用户参数
作用:针对同一组参数,当不同的用户来访问时,可以获取到不同的值
-CSV数据文件设置(CSV Data Set Config)
作用:让不同用户在多次循环时,可以取到不同的值
-函数助手
函数(_counter):计数函数,一般做执行次数统计使用
4种参数化的优缺点:
JMeter断言
断言:让程序自行判断预期结果跟实际结果是否一致
jmeter种常用断言:
-响应断言
作用:对HTTP请求的任意格式的响应结果进行断言
参数配置:
-响应文本:来自服务器的响应文本,即主体
-响应代码:响应的状态码,例如:200
-响应信息:响应的信息,例如:OK
-Response Headers:响应头部
-Request Headers:请求头部
-Request Data:请求数据
-URL样本:请求数据
-Document(text):响应的整个文档
-忽略状态:忽略返回的响应状态码
模式匹配规则:比较方式
-包括:文本包含指定的正则表达式
-匹配:整个文本匹配指定的正则表达式
-Equals:整个返回结果的文本等于指定的字符串(区分大小写)
-substring:返回结果的文本包含指定字符串(区分大小写)
-否:取反
-或者:如果存在多个测试模块,勾选代表逻辑或(只要有一个模式匹配。则断言就是OK),不勾选代表逻辑与(所有都必须匹配,断言才是OK)
预期结果:
-即填写你指定的结果(可填写多个)
-JSON断言
作用:对HTTP请求的JSON格式的响应结果进行断言
什么时候使用JSON断言?
对HTTP请求的响应结果为JSON格式时,可以使用JSON断言
-持续时间断言
作用:检查HTTP请求的响应时间是否超出要求范围
参数介绍:
-持续时间(毫秒):HTTP请求允许的最大响应时间(单位:毫秒)。超出则认为失败
JMeter关联
关联:当请求之间有依赖关系,比如一个请求的入参是另一个请求返回的数据,这个时候就需要用到关联处理。
JMeter中常用的关联方法:
-正则表达式提取器 【左边界(,*?)右边界】
含义:就是一个公式,或者说一套规则。使用这套规则可以从任意字符串中提取出来想要的数据内容
.:是通配符,代表任意字符(除换行回车)
*:代表前面的字符出现0次或者多次
?:代表非贪婪匹配,找到左边界后,往右查找匹配右边界,只要有匹配的右边界就停止继续查找;再次查找左边界和右边界
-XPath提取器
作用:针对HTML格式的响应结果数据进行提取
参数介绍:
-Use Tidy(tolerant parser)
-当需要处理的页面是HTML格式时,必须选中该选项
-当需要处理的页面是XML或XHTML格式时,取消选中该选项
-引用名称:存放提取出的值的参数名称
-XPath Query:用于提取值的XPath表达式
-匹配数字:如果XPath路径查询出许多结果,则可以选择提取哪个
0:表示随机,-1:表示提取所有结果,1表示第一个值
-缺省值:参数的默认值
-JSON提取器
作用:针对JSON格式的响应结果数据进行提取
参数介绍:
-name of created variables:存放提取出的值的参数名称
-JSON Path Expressions:JSON路径表达式 $.xx.xx
-Match No:如果JSON路径匹配出许多结果,则可以选择提取哪个
0表示随机;-1表示提取所有结果;1表示第一个值
-Default Values:参数的默认值
-JMeter属性 [跨线程组关联]
JMeter属性的配置函数:
_setProperty函数:将值保存成JMeter属性:需要用过BeanShell取样器来执行
_property函数:在其他线程组中使用property函数读取属性:在其他线程组中使用property函数
JMeter录制
-在没有接口文档的旧项目当中,快速录制web页面产生的http接口请求,帮助编写接口测试脚本
JMeter直连数据库
JMeter逻辑控制器
逻辑控制器:可以按照设定的逻辑控制取样器的执行顺序
-如果(if)控制器
作用:if控制器来控制它下面的测试元素是否执行
-循环控制器
作用:通过设置循环次数,来实现循环发送请求
-ForEach控制器
作用:一般和用户自定义变量或者正则表达式提取器一起使用,读取返回结果中一系列相关的变量 。
该控制器下的取样器都会被执行一次或多次,每次读取不同的变量值
foreach+用户自定义的变量:
foreach+正则表达式提取器:
JMeter定时器
-同步定时器:阻塞线程(积累一定的请求),当在规定的时间内达到一定的线程数量,这些线程会在同一个时间点一起释放,瞬间产生很大的压力
-常数吞吐量定时器:让JMeter按指定的吞吐量执行,以每分钟为单位
-固定定时器