jmeter组件&元件学习

jmeter的主要测试组件

  1. 测试计划(Test Plan)是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。
  2. 线程组(Thread Group)代表一定数量的并发用户,它可以用来模拟并发用户发送请求。
  3. 取样器(sampler)定义实际的请求内容,被线程组包含,我们主要用HTTP请求。
  4. 监听器(Listener)
  5. 逻辑控制器(Logic Controller)
  6. 断言(Assertions)
  7. 配置元件(Config Element)
  8. 前置处理器(Pre Processors)和后置处理器(Post Processors)
  9. 定时器(Timer)

JMeter主要组件介绍-测试计划

  1. 测试计划(Test Plan)是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。
  2. 名称:你可以为你的测试计划取一个有意义的名字。
  3. 注释:对测试计划的注释。
  4. 用户定义的变量:用户可以自己定义变量,在用到此变量的时候直接用${变量名}引用即可。例:变量名=url,值=http://www.baidu.com,在需要http://www.baidu.com时直接用${url}即可。
  5. 添加目录或jar包到classpath(Add directory or jar to classpath):向类路径即%JMETER-HOME%\lib中添加目录及jar包

JMeter主要组件介绍-线程组

  1. 名称:为线程组起名字。
  2. 线程属性-线程数:设置发送请求的用户数目 ,即并发数。
  3. 线程属性-Ramp-Up Period(in second):线程间的时间间隔,单位是秒。即所有线程在多少时间内启动。
  4. 线程属性-循环次数:请求的重复次数,如果选择后面的forever(默认),那么 请求将一直继续,如果不选择forever,而在输入框中输入数字,那么请求将重复指定的次数,如果输入1,那么请求将执行一次,如果是0,会出现问题。
  5. 调度器配置-持续时间:测试计划持续多长时间,会覆盖结束时间。
  6. 调度器配置-启动延迟:测试计划延迟多长时间启动,会覆盖启动时间。

 JMeter主要组件介绍-取样器(HTTP请求)

  1.名称:本属性用于标识一个取样器,建议使用一个有意义的名称 

  2.Web服务器-服务器名称或IP、端口号,脚本录制时自动添加,也可以使用“用户自定义变量”。

    • 协议:向目标服务器发送HTTP请求时的协议,可以是http或者是https或者File ,默认值为http
    • 服务器名称或IP :HTTP请求发送的目标服务器名称或IP地址
    • 端口号:目标服务器的端口号,默认值为80

  3.HTTP请求:

    • 请求方式:包含GET、POST、HEAD等
    • 路径:目标URL路径(不包括服务器地址和端口)/可以写完整路径,但不规范
    • 内容编码 :内容的编码方式,默认值为iso8859
    • 自动重定向:如果选中该选项,当发送HTTP请求后得到的响应是302/301时,JMeter 会自动重定向到新的页面,但是Jmeter是不记录重定向的过程内容;
    • 跟随重定向:Http Request取样器的默认选项,当响应code是3xx时,自动跳转到目标地址。与自动重定向不同,Jmeter会记录重定向过程中的所有请求响应,在查看结果树时可以看到服务器返回的内容,如有多个跳转则多个请求都会被记录下来,此为默认选项。
    • 使用 keep Alive :当该选项被选中时,jmeter 和目标服务器之间使用 Keep-Alive方式进行HTTP通信,默认选中;
    • 对post使用multipart/from-data:当发送POST请求时,使用multipart/from-data方法或者application/x-www-form-urlencoded方法发送,默认不选中。
    • 与浏览器兼容的头:当勾选multipart/form-data时,勾选此项会截掉http请求头中的Content-Type和Content-Transfer-Encoding,而只发送Content-Disposition部分

  4.参数:请求中的参数、值可以在此设置,需要用到参数化及动态数据关联;

  5.消息体数据:同请求一起发送的数据信息,这里可以支持多种数据格式,json、xml等 

  6.文件上传:同请求一起发送的文件信息,参数名称就是发送文件对应的参数,MINE Type为资源媒体类型

  

高级界面选项:

  1. 实现:发送http请求的方式,可选项为java和HttpClient4,默认为HttpClient4
  2. 连接:连接超时时间设置,单位为毫秒
  3. 响应:响应等待超时时间设置,单位为毫秒从HTML文件获取所有内含的资源:当该选项被选中时,jmeter在发出HTTP请求并获得响应的HTML文件内容后,还对该HTML进行解析 并获取HTML中包含的所有资源(图片、flash等)
  4. 并行下载:设置是否使用自设资源池,勾选后可设置大小
  5. 数量:资源池大小,默认为6
  6. 网址必须匹配:URL匹配过滤,填写此项则只会下载与此内容项匹配的url的资源
  7. 源地址:只用于http协议且Implementation为HttpClient4的情况,此属性用于启用IP欺骗。会重写了这个http请求使用的默认本地IP地址。用于Jmeter主机具有多个IP地址(即IP别名、网络接口、设备)的情况。该值可以是主机名、IP地址或网络接口设备,如“ey0”或“l0”或“wlan0”。
  8. 代理服务器:代理服务器的相关配置信息
  9. 保存响应为MD5哈希:选中该项,在执行时仅记录服务端响应数据的MD5值,而不记录完整的响应数据。在需要进行数据量非常大的测试时,建议选中该项以减少取样器记录响应数据的开销

 Jmeter利用查看结果树查看响应

  1. 名称:本属性用于标识一个察看结果树元件,建议使用一个有意义的名称
  2. 注释:对于测试没有任何作用,仅用户记录用户可读的注释信息
  3. 所有数据写入一个文件:
    • 文件名:可以通过浏览,选择一个文件,这样jmeter在执行的过程中,会将所有的信息输出到文件;也支持打开一个结果文件进行浏览;
    • 显示日志内容:
      1)  仅错误日志:表示只输出报错的日志信息;
      2)仅成功日志:表示只输出正常响应的日志信息;
      3)在不勾选时,表示输出所有的信息配置;
    • 配置需要输出的内容
  4. 查找:在输入框中输入想查询的信息,点击查找,可以在请求列表中进行查询,并在查询出的数据上加上红色的边框。点击重置后,会清除数据上的红色边框,区分大小写和正则表达式,勾选后针对查找生效。
  5. 结果树显示类型切换:通过结果树上面的下拉框可以进行切换显示,包含多种显示方法,默认为Text取样器结果;
  6. 显示取样器的详细结果,可以切换取样器的显示方式Raw/Parsed请求;
  7. 显示当前取样器发送的详细请求内容,支持查找;
  8. 响应数据:显示请求得到的响应内容,支持查找
  9. scroll automatically? : 当执行的取样器较多,设置是否滚屏显示。

  备注:察看结果树响应正文乱码解决方案:进入Jmeter的bin目录下,找到jmeter.properties文件,用UE等工具进行编辑,找到sampleresult.default.encoding这个参数,将默认的ISO-8859-1修改成utf-8,去掉注释符号,重启Jmeter

Jmeter设置HTTP信息头部管理模拟请求

  HTTP信息头管理器是在有需要模拟请求头部的时候进行设置的,添加方式是 右击线程组 -- 配置元件 -- HTTP信息头管理器。如以下的添加操作:
 

Jmeter请求默认值元件应用

  一般接口测试时,测试环境访问的接口地址(服务器名称或IP)、端口、协议一般都是不变的,但http请求取样器每个请求都要求写一遍这些信息,在实际HTTP请求取样器数量很多的情况下,这样不是很方便,另外公司内部的测试环境地址进行变更,所有取样器的地址也要做相应修改,这让接口测试的维护量工作很大,此时我们可以把测试计划中所有的http请求的默认配置放到HTTP请求默认值中即可。

  通过右击 -- 配置元件 -- HTTP请求默认值进行新增,然后把需要设置为默认值的参数配置好即可。如果某个HTTP请求中的参数与默认配置的不一致,单独对那一个进行修改即可。

Jmeter正则表达式提取器元件

正则表达式提取器是位于后置处理器中的一个元件,它的作用是在请求发出并得到响应后,把响应信息中的部分通过正则表达式提取所需值,并将结果存储到给定的变量名中。可通过后置处理器--正则表达式提取器添加
正则表达式提取器元件字段介绍:  
  • APPly to:作用范围
    • Main sample and sub-samples:作用于主节点的取样器及对应子节点的取样器
    • Main sample only:仅作用于主节点的取样器
    • Sub-samples only:仅作用于子节点的取样器JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称),从指定变量值中提取需要的值要检查的响应字段;
  • 主体:响应报文的主体;
  • Body(unescaped):主体,是替换了所有的html转义符的响应主体内容,注意html转义符处理时不考虑上下文,因此可能有不正确的转换,不太建议使用;
  • Body as a Document:从不同类型的文件中提取文本,注意这个选项比较影响性能
  • 信息头:响应头部信息;Request Headers:请求信息头;URL:请求url;响应代码:比如200、404等;
  • 响应信息:响应正文;
  • 引用名称:Jmeter变量的名称,存储提取的结果;如果在下个请求中想引用这个变量,语法:${引用名称}
  • 正则表达式:使用正则表达式解析响应结果,“()”表示提取字符串中的部分值。常用的正则表达式为 (.+?)
  • 模版:用$$引用起来,如果在正则表达式字段中,文本框写了多个正则表达式,则可以是$2$$3$等等,表示提取到的第几个值给引用名称 
  • 匹配数字:正则表达式匹配数据的结果可以看做一个数组,该字段表示如何取值:0代表随机取值,正数n则表示取第n个值(比如1代表取第一个值),负数则表示提取所有符合条件的值 
  • 缺省值:如果正则表达式没有匹配到值,则使用此缺省值给引用名称。也可以勾选使用空默认值,使用空作为默认值

调试取样器:正则表达式提取器元件可以搭配调试取样器使用,即可查看正则表达式提取的value值

关联的实现:关联即把上一个接口返回的值的部分作为下一个接口传入的参数的过程称为关联,也称为接口之间的串行传参或相互依赖

  1.在上一个取样器中增加正则表达式提取器提取需要的值;

  2.在下一个取样器需要值的部分用${变量名}方式引用

编写的正则表达式可以使用https://tool.oschina.net/regex,来检测表达式是否正确,也可使用jmeter中查看响应结果树响应数据来进行确认

Jmeter-Json提取器元件

json提取器与正则表达式提取器元件功能类似,也是用来截取响应信息的部分保存到指定的变量中去,不同的是,它只能用来处理响应正文,并且响应正文必须是json格式的。它的优势是能更快更灵活的截取json格式文本中的内容。

json提取器元件字段:

  • APPly to:作用范围
    • Main sample and sub-samples:作用于主节点的取样器及对应子节点的取样器
    • Main sample only:仅作用于主节点的取样器
    • Sub-samples only:仅作用于子节点的取样器JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称),从指定变量值中提取需要的值要检查的响应字段;
  • Names of created variables:Json变量的名称
  • JSON Path expressions:调试通过的json path表达式
  • Match Numbers:匹配数字(0代表随机,1代表第一个,-1代表所有),默认不填写是获取符合条件的第一个,与正则表达式类似
  • Compute comcatemation var(suffix_ALL):如果发现许多结果,插件将使用“,”分隔符将它们连接起来,并将其存储在名为<variable name>_ALL的var中
  • Default Values:当没有获取到参数值时的默认值;备注:当json提取器要提取两个值(或两个值以上)的时候,一定要默写默认值,不然会报错。

Jmeter-响应断言元件

响应断言元件的功能是对接口的响应信息进行自动断言校验,来判断接口测试得到的接口返回值是否正确。jmeter中该元件支持将请求或响应的各个字段与模式字符串进行比较。有了该元件,就可以完成自动化接口测试,而不需要用手工核对接口返回的结果。
响应断言元件字段:
  • APPly to:作用范围
    • Main sample and sub-samples:作用于主节点的取样器及对应子节点的取样器
    • Main sample only:仅作用于主节点的取样器
    • Sub-samples only:仅作用于子节点的取样器JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称),从指定变量值中提取需要的值要检查的响应字段;
  • 测试字段:要进行断言的响应字段选择,支持请求信息、响应信息等,其中响应文本表示通过Apache Tika从各种类型的文档中提取文本(请参阅查看结果树文档视图部分)
  • 忽略状态:jmeter对4XX和5XX默认响应是红色错误,勾选后可忽略状态,从而进行4XX和5XX的测试
  • 模式匹配规则:
    • 包括 - 如果文本包含正则表达式模式,则为true
    • 匹配 - 如果整个文本与正则表达式模式匹配,则为true
    • 相等(Equals) - 如果整个文本等于模式字符串,则为true(区分大小写)
    • 字符串(Substring) - 如果文本包含模式字符串,则为true(区分大小写)
    • 否 - 反转检查结果,用于表示不包含,不匹配,不等于,没有和模式字符串相匹配的Substring。
    • 或者 - 一个断言可以添加多个“要测试的模式”。使用OR选项后,只要其中有1个模式匹配,断言将会成功。不选择“OR”时将默认为AND选项,必须所有模式都匹配,断言才会成功
  • 测试模式:输入结果期望值,可以增加多行期望结果
  • 自定义失败消息:设置自定义的断言失败消息来替换系统默认的失败提示信息
 
posted @ 2020-06-06 10:34  Alin。  阅读(344)  评论(0)    收藏  举报