jmeter使用说明手册.docx
- 文档编号:17166417
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:25
- 大小:3.28MB
jmeter使用说明手册.docx
《jmeter使用说明手册.docx》由会员分享,可在线阅读,更多相关《jmeter使用说明手册.docx(25页珍藏版)》请在冰点文库上搜索。
jmeter使用说明手册
Jmeter使用说明手册
1.Jmeter的工作原理
工作原理Jmeter作为web服务器与客户端之间的代理网关,它通过代理方式截获客户端和服务器之间交互的数据流,这样服务器和客户端都以为是在一个真实运行环境中。
2.环境安装部署
2.1安装jdk
注意事项
JMeter3.2以上的版本需要JDK1.8以上的版本支持运行。
JMeter可以运行在如下操作系统上:
Unix,Windows和OpenVMS;
JAVA的环境变量设置
a.使用鼠标右击“我的电脑”->属性->高级->环境变量
b.系统变量->新建->变量名:
JAVA_HOME变量值:
d:
\jdk
c.系统变量->编辑->变量名:
Path在变量值的最前面加上:
%JAVA_HOME%\bin;
d.系统变量->新建->变量名:
CLASSPATH变量值:
e:
运行->cmd->javaversion;
Jdk下载地址:
2.2安装及运行jmeter;
解压zip/tar文件到你想安装JMeter的目录;运行解压后的bin目录下的jmeter.bat;
如图所示:
2.2.1jmeter目录介绍
a.bin目录:
可执行的目录
1).jmeter.bat:
windows的启动文件
2).jmeter.log:
日志文件
3).jmeter.sh:
linux的启动文件
4).jmeter.properties:
系统配置文件
5).jmeter-server.bat:
windows分布式测试要用到的服务器配置
6).jmeter-serve:
linux分布式要用到的服务器配置
7).docs目录:
接口文档目录
b.extras目录:
扩展插件目录
c.lib目录:
所用到的插件目录,里面都是jar包,会自动在JMETER_HOME/lib和ext目录下寻找需要的类
d.liceses:
jmeter证书目录
f.ptinrable_docs用户使用手册
Jmeter下载地址:
http:
//jmeter.apache.org/download_jmeter.cgi
3.建立一个基本的测试计划
4.Jmeter各元素的使用说明
4.1线程介绍
---Testplan(测试计划)
---------setupthreadsgroup(环境初始化)
---------threadgroup
---------threadgroup
.
.
.
---------teardowngroup(环境恢复)
Testplan:
用来描述一个自动化测试,本次需要执行的测试范围,类似testlink上的测试计划。
threadgroup线程组:
在自动化测试中可以是定义一个模块或者定义一个业务;在性能测试中,类似一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户;类似(LR中的action);
setupthreadsgroup是一个特殊类型的线程组,执行测试之前的动作,做初始化的工作,类似(LR中的init)跟pythonunittest里面setup函数是一个作用;自动化测试中,可以用于初始化测试环境;
teardowngroup是一个特殊类型的线程组,执行测试之后的动作,做测试结束的收尾的工作,类似(LR中的end)跟pythonunittest里面teardown函数是一个作用;在自动化测试中,可以用于恢复测试环境;
4.2线程组的8类可执行元件
jmeter元素
用途
用途详细说明
配置元件(Configelement)
定义常量值,参数配置
配置数据库连接参数
配置http包头信息
配置http请求默认值
配置获取csv文件里的数据
用户自定义变量
定时器(Timer)
等待时间
两个操作之间的等待时间
前置处理器(Perprocessors)
处理sample中的参数
用于在实际的请求发出之前对请求进行处理,例如需要保存请求中的参数或者修改请求中的参数值;
后置处理器
处理服务器返回值
用于对sampler发出请求后得到的服务器响应进行处理,一般用来提取响应中特定数据;
断言(assertions)
检查响应数据是否符合预期
断言用于检查测试中得到的响应数据是否符合预期,断言一般用来设置检查点,用以保证性能测试过程中的数据交互是否与预期一致
监听器
展示请求处理情况
是用来对测试结果数据进行处理和可视化展示的一系列元件
取样器(sampler)
请求包
取样器是实际向服务器发出请求的请求包
逻辑控制器
执行顺序
控制testplan中sampler节点发送请求的逻辑控顺序的控制器
用来组织可控制sampler节点的事物控制器,吞吐量控制器
5.配置元件
5.1CSVDataSetConfig
用途:
从csv文件中逐行读取数据;适合需要读取大批量数据的应用场景;
5.2HTTP信息头管理器
用途:
通知jmeter发送请求包的参数格式;是键值对,还是json格式;
5.3HTTP请求默认值
用途:
如果后续的多个Sample请求的服务器地址和端口都是同一个,可以统一配置一个http请求默认值,这样不需要每个sample上都配置一边服务器地址和端口;
5.4数据库连接信息配置
用途:
配置jmeter中需要使用的数据库连接信息
JDBCRequest写多条SQL语句
Mysql:
databaseURL结尾配置“?
allowMultiQueries=true”,然后JDBCRequest里面sql语句记得带封号结尾。
Oracle:
begin
中间写SQL语句,封号结尾
end;
5.5用户定义的变量
用途:
配置整个线程组里的sample需要用到的变量,便于统一维护变量的值;
6.逻辑控制器
6.1ForEach控制器
ForEach控制器在用户自定义变量中读取一系列相关的变量。
该控制器下的采样器或控制器都会被执行一次或多次,每次读取不同的变量值。
所以ForEach总是和UserDefinedVariables一起使用。
下面会以实例的形式介绍它的用法。
6.2简单控制器(SimpleController)
作用:
这是Jmeter里最简单的一个控制器,它可以让我们组织我们的采样器和其它的逻辑控制器(分组功能),提供一个块的结构和控制,并不具有任何的逻辑控制或运行时的功能。
6.3仅一次控制器
用途:
当一个循环逻辑里的有个业务只需要运行一次时,这个业务可以定义到仅一次控制器里;例如环境初始化
6.4循环控制器
用途:
当需要循环执行一组sample,例如需要针对一个接口测试一组数据,就可以使用循环控制器;
如果控制器允许用户控制其子节点所表示的测试步骤是否执行,下图“条件”可以使用
6.5如果(If)控制器
用途:
当需要进行if/else处理时选择,例如注册结果为用户已存在,则直接登录;
函数(默认是Javascript语句)或变量,只要运行结果为true或false即可。
使用上有些区别,举个例子,原先我们可以使用条件为:
${__jexl(${VAR} == 23)},这将被评估为true或false,结果将被传递到JavaScript,然后返回true或false。
如果选中“Interpret Condition as Variable Expression?
”,直接会对变量表达式进行评估是否为true,而不需要使用Javascript进行解析。
此外,变量表达式可以返回任何值,而JavaScript的条件必须返回true或false,否则将记录错误。
当选择“Evaluate for all children?
”时,该条件会对每个子节点进行判断,不选则默认只执行第一个子节点。
Javascript作为条件的例子:
(1)${COUNT} < 10
(2)"${returnVar}"=="" (3)’${returnVar}’==’’
7.取样器sample
用途:
向服务器发出的请求包参数及值;
8.前置处理
Sample请求包发出前的处理;
8.1BeanShellPreProcessor
用途:
修改、保存,sample请求包中的数据;
JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下:
log:
写入信息到jmeber.log文件,使用方法:
log.info(“Thisisloginfo!
”);
vars-(JMeterVariables):
操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,常用方法:
a)vars.get(Stringkey):
从jmeter中获得变量值
b)vars.put(Stringkey,Stringvalue):
数据存到jmeter变量中
更多方法可参考:
org.apache.jmeter.threads.JMeterVariables
prev-(SampleResult):
获取前面的sample返回的信息,常用方法:
a)getResponseDataAsString():
获取响应信息
b)getResponseCode():
获取响应code
9.后置处理
Sample请求包请求后的结果处理;
9.1BeanShellPostProcessor
用途:
处理sample请求包发出去后的,服务器返回的结果值;
9.2JDBCPostProcessor
用途:
处理sample请求后,检查数据库中数据的变化;
9.3正则表达式提取
用于提取Sample请求发送后,服务器返回的响应结果的数据提取;
允许用户从服务器的响应中通过使用perl的正则表达式提取值。
作为一个后置处理器,该元素会作用在指定范围的取样器,应用正则表达式,提取所需要的值,生成模板字符串,并将结果存储到给定的变量名中。
在此简单地向大家介绍一下常用的perl正则表达式的基础:
.:
匹配任何单个字符。
例如Perl正则表达式r.t匹配这些字符串:
rat、rut、rt,但是不匹配root
$:
匹配行结束符。
例如Perl正则表达式weasel$能够匹配字符串"He'saweasel"的末尾,但是不能匹配字符串"Theyareabunchofweasels."
^:
匹配一行的开始。
例如Perl正则表达式^Whenin能够匹配字符串"Wheninthecourseofhumanevents"的开始,但是不能匹配"WhatandWheninthe"
*:
匹配0或多个正好在它之前的那个字符。
例如Perl正则表达式.*意味着能够匹配任意数量的任何字符
\:
这是引用符,用来将这里列出的这些元字符当作普通的字符来进行匹配。
例如Perl正则表达式\$被用来匹配美元符号,而不是行尾,类似的,Perl正则表达式\.用来匹配点字符,而不是任何字符的通配符
[]、[c1-c2]、[^c1-c2]:
匹配括号中的任何一个字符。
例如Perl正则表达式r[aou]t匹配rat、rot和rut,但是不匹配ret。
可以在括号中使用连字符-来指定字符的区间,例如Perl正则表达式[0-9]可以匹配任何数字字符;还可以制定多个区间,例如Perl正则表达式[A-Za-z]可以匹配任何大小写字母。
另一个重要的用法是“排除”,要想匹配除了指定区间之外的字符——也就是所谓的补集——在左边的括号和第一个字符之间使用^字符,例如Perl正则表达式[^269A-Z]将匹配除了2、6、9和所有大写字母之外的任何字符
|:
将两个匹配条件进行逻辑“或”(Or)运算。
例如Perl正则表达式(him|her)匹配"itbelongstohim"和"itbelongstoher",但是不能匹配"itbelongstothem."。
注意:
这个元字符不是所有的软件都支持的+:
匹配1或多个正好在它之前的那个字符。
例如Perl正则表达式9+匹配9、99、999、98、93dsf、9.....等。
注意:
这个元字符不是所有的软件都支持的
?
:
匹配0或1个正好在它之前的那个字符。
注意:
这个元字符不是所有的软件都支持的{i}、{i,}、{i,j}:
匹配指定数目的字符,这些字符是在它之前的表达式定义的。
例如Perl正则表达式A[0-9]\{3\}能够匹配字符"A"后面跟着正好3个数字字符的串,例如A123、A348等,但是不匹配A1234。
Perl正则表达式[0-9]\{4,\}匹配连续的任意4个或4个以上数字字符。
Perl正则表达式[0-9]\{4,6\}匹配连续的任意4个、5个或者6个数字字符。
注意:
这个元字符不是所有的软件都支持的
\d:
任意数字[0-9]
\D:
除数字外的任意字符[^0-9]
\w:
任意单词字符[_0-9a-zA-Z]
\W:
任意非单词字符[^_0-9a-zA-Z]
\s:
空白[\r\t\n\f]\S:
非空白[^\r\t\n\f]更多的内容可参考:
http:
//zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F(维基百科)http:
//jakarta.apache.org/oro/api/org/apache/oro/text/regex/package-summary.html
具体参考:
10.jmeter断言
用于判断返回的响应结果是否满足预期;
10.1响应断言
一个sample的请求响应结果如下:
则可以设置断言如下:
备注:
包括:
返回结果包含指定的内容。
匹配:
根据置顶内容进行匹配:
Equals:
返回结果与指定的一致
substring:
返回结果是指定的字符串
否:
不匹配
11.内置函数
11.1_CSVread读取参数文件
两个值:
1.读取文件的全路径2.文件序列号(从第几列读取,0是第一列)
11.2_StringfromFile读取文件
三个值分别是:
1.读取文件的全路径2.从第几行开始读3.从第几行结束读取(0是第一行)
11.3_counter计数器
两个值分别是:
1.当第一个值为true表示每个用户都有自己的计数器,当为false时,作为全局计数器,2.存储结果的变量名
12.jmeter执行原理
12.1元件作用域
jmeter中元件的作用域是靠测试计划的树形结构中元件的父子关系确定的,作用域的原则是:
1.取样器不和其他元件交互:
不存在作用域的问题;
2.逻辑控制器(logiccontroller)元件只对子节点中的取样器和逻辑控制器作用
3.除取样器和逻辑控制器外,其他6类元件,如果是某个取样器的子节点,则该元件对其父子节点起作用,如果其父子节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点)
12.2元件的执行顺序
配置元件-前置处理器-定时器-取样器-后置处理器-断言-监听器
执行顺序tip:
前置处理器,后置处理器,断言等元件功能对取样器起作用,因此,如果他们的作用域内没有任何取样器,不会执行
如果同一作用域范围有多个同一类的元件,按照测试计划树依次进行。
页面操作新增,提交后查看fidder
传参bodydata
4.用户定义的变量
${roleName}
5.HTTP信息头管理器
名称:
Content-Type值:
application/json;charset=utf-8json格式
名称:
Content-Type值:
application/x-www-form-urlencoded;charset=utf-8htm表单格式
6.后置处理器~BeanshellPostProcessor:
prev.setDataEncoding("UTF-8");防止结果输出中文乱码,还可以写代码
7.响应断言
用于判断返回的响应结果是否满足预期;
包括:
返回结果包含指定的内容。
匹配:
根据置顶内容进行匹配:
Equals:
返回结果与指定的一致
substring:
返回结果是指定的字符串
否:
不匹配
8.查看结果树
【遇到问题及解决方法】
问题一:
查看结果树-响应数据,报错:
"result":
false,"mediaType":
"JSON","layout":
""
解决方法:
HTTP请求下的信息头管理器未设置或者设置的不是JOSN格式,选择信息头管理器,添加application/json;charset=utf-8(当抓包抓取的是*****.htm格式,此处添加application/x-www-form-urlencoded;charset=utf-8)
问题二:
Jmeter-查看结果树-响应数据,中文显示乱码
解决方法:
1.打开Jmeter文件夹中的bin目录,找到Jmeter.properties,打开,将ISO-8859-1改成utf-8。
更改后重启Jmeter。
2. 另一种方法是在HTTP请求—后置处理器—BeanShellPostProcessor下,Script里输入prev.setDataEncoding("UTF-8");
问题三:
JDBCRequest-查看结果树-响应数据,报错:
Nopoolfoundnamed:
'*****',ensureVariableNamematchesVariableNameofJDBCConnectionConfiguration
解决方法:
JDBCConnectionConfiguraiton和JDBCRequest中的VariableName名字必须一致。
问题四:
JDBCRequest-查看结果树-响应数据,报错:
CannotcreatePoolableConnectionFactory(ORA-00923:
)
解决方法:
在JDBCConnectionConfiguration中输入Select1fromdual(dual是oracle中自带的一个虚拟表如果,连接的数据库是mysql,直接输入Select即可)
问题五:
JDBCRequest-查看结果树-响应数据,报错:
ORA-00911:
解决方法:
将JDBCRequest中输入的sql语句分号去掉即可。
问题六:
jmeter-oracle如何在JDBCRequest处执行多条语句
解决方法:
1)配置DatabaseURL:
在JDBCConnectionConfiguration的DatabaseURL末尾新加入?
allowMultiQueries=true,完整的就是:
jdbc:
oracle:
//localhost:
3306/test?
allowMultiQueries=true(test为本地的数据库名)
2)在JDBCRequest下的QueryType选择CallableStatement。
3)输入测试SQL:
在Query中输入想要测试sql语句,注:
除了最后一条sql语句不写分号,其余的sql语句结尾都必须写分号。
4)想执行多条语句,另一种方法就是可以添加多个JDBCRequest来执行操作。
1、定时器是在每个sampler(采样器)之前执行的,而不是之后(无论定时器位置在sampler之前还是下面);
2、当执行一个sampler之前时,所有当前作用域内的定时器都会被执行;
3、如果希望定时器仅应用于其中一个sampler,则把定时器作为子节点加入;
4、如果希望在sampler执行完之后再等待,则可以使用TestAction;
oracle.jdbc.OracleDrivercom.mysql.jabc.Driver
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- jmeter 使用说明 手册