jmeter使用说明手册_第1页
jmeter使用说明手册_第2页
jmeter使用说明手册_第3页
jmeter使用说明手册_第4页
jmeter使用说明手册_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第页Jmeter使用说明手册1.Jmeter的工作原理工作原理Jmeter作为web服务器与客户端之间的代理网关,它通过代理方式截获客户端和服务器之间交互的数据流,这样服务器和客户端都以为是在一个真实运行环境中。2.环境安装部署2.1安装jdk注意事项JMeter3.2以上的版本需要JDK1.8以上的版本支持运行。JMeter可以运行在如下操作系统上:Unix,Windows和OpenVMS;JAVA的环境变量设置a.使用鼠标右击“我的电脑”->属性->高级->环境变量b.系统变量->新建->变量名:JAVA_HOME变量值:d:\jdkc.系统变量->编辑->变量名:Path在变量值的最前面加上:%JAVA_HOME%\bin;d.系统变量->新建->变量名:CLASSPATH变量值:e:运行->cmd->javaversion;Jdk下载地址:/technetwork/java/javase/downloads/jdk8-downloads-2133151.html2.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).perties:系统配置文件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下载地址:/download_jmeter.cgi3.建立一个基本的测试计划4.Jmeter各元素的使用说明4.1线程介绍Testplan(测试计划)setupthreadsgroup(环境初始化)threadgroupthreadgroup...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文件,使用方法:(“Thisisloginfo!”);vars-(JMeterVariables):操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,常用方法:a)vars.get(Stringkey):从jmeter中获得变量值b)vars.put(Stringkey,Stringvalue):数据存到jmeter变量中更多方法可参考:org.apache.jmeter.threads.JMeterVariablesprev-(SampleResult):获取前面的sample返回的信息,常用方法:a)getResponseDataAsString():获取响应信息b)getResponseCode():获取响应code9.后置处理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]更多的内容可参考:/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F(维基百科)/oro/api/org/apache/oro/text/regex/package-summary.html具体参考:/link?url=qud2ZoRTMrjl9n4GJ6-pcCmVjKdiTfVtTgeNDuItLk2rPh0lJflFWy5hYY4zzyspjK28ull2O9AGvX661EuTy2NACMcm9A_V-aGgVmRCAVu&pn=5010.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传参bodydata4.用户定义的变量${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目录,找到Jperties,打开,将ISO-8859-1改成utf-8。更改后重启Jmeter。2.

另一种方法是在HTTP请求—后置处理器—BeanShellPostProcessor下,Script里输入prev.setDataEncoding("UTF-8");

问题三:JDBCRequest-查看结果树-响应数据,报错:Nopoolfoundnamed:'*****',ensureVariableNamematchesVariableNameofJDBCConnectionConfiguration解决方法:JDBCConnectionConfiguraiton和JDBCRequest中的VariableName名字必须一致。问题四:JDBCRequest-查看结果树-响应数据,报错

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论