《零成本web性能测试》第三章 Web性能测试脚本录制与开发中JMeter常用测试元件

  测试计划描述了JMeter运行时将会执行的一系列步骤,一个完整的测试计划包含一个或多个线程组、逻辑控制器、采样器、监听器、定时器、断言和配置元件。

一、线程组
  程组是任何测试计划的起点,所有的逻辑控制器和采样器都必须放在线程组之下。其他的测试元件(如监听器)可以被直接放在测试计划之下,这些测试元件 对所有线程组都生效。线程组就像它的名字所描述的那样,被用来管理执行性能测试所需的JMeter线程。用户通过线程组的控制面板可以:

  • 设置线程数量。
  • 设置线程启动周期。
  • 设置执行测试脚本的循环次数。

  每一个JMeter线程都会完整地执行测试计划,而且它们之间是完全独立运行的。这种多线程机制被用来模拟服务器应用的并发连接。参数Ramp- Up Period告诉JMeter达到最大线程数需要多长时间。假定共有10个线程,Ramp-Up Period为100秒,那么JMeter就会在100秒内启动所有10个线程,并让它们运转起来。每一个测试线程都会在上一个线程启动10秒之后才开始 运行。假定共有30个线程,Ramp-Up Period为120秒,那么线程启动的间隔就为4秒。
    Ramp-Up参数不能设定得太短,否则在测试的初始阶段会给予服务器过大的压力。Ramp-Up参数也不能设定得太长,否则就会发生第一个线程已经执行完毕,而最后一个线程还没有启动的情况(除非测试人员期望这种特殊情况发生)。

  如何找到一个合适的Ramp-Up参数值?作者建议初始值可以设定为Ramp-Up=总线程数,后续再根据实际情况适当增减。
  默认情况下,线程数、循环次数设定为1,方便调试,如果调试通过的话可根据实际情况进行增加数值。调度器配置可以设置“持续时间”和“启动延迟”

  

二、控制器

   JMeter有两种类型的控制器:采样器和逻辑控制器,二者结合起来驱动了测试进程。采样器被JMeter用来向服务器发送请求。例如,当测试人员想往服务器发送一个HTTP请求时,就加入一个HTTP请求采样器。测试人员还可以通过为采样器添加配置元件来定制化请求。
   用户可以使用逻辑控制器来控制JMeter的测试逻辑,比如何时发送请求。举一个例子:测试人员可以插入交替控制器来轮流发送多个请求。

   

  1、采样器
    采样器告诉JMeter发送一个请求到指定服务器,并等待服务器的请求。采样器会按照其在测试树中的顺序去执行,还可以用逻辑控制器来改变采样器运行的重复次数。
    JMeter采样器包含:FTP Request、HTTP Request、JDBC Request、Java object Request、LDAP Request、SOAP/XML-RPC Request、WebService(SOAP)Request
    每一种采样器都有多种参数可供设置。测试人员还可以通过在测试计划中加入一个或者多个配置元件,来进一步定制化采样器。
    如果测试人员打算向同一个服务器发送同一类请求,可以考虑使用默认配置元件。每一类采样器都有一个或多个对应的默认配置元件。一定记住应为测试计划添加一个监听器,以便查看和存储(存储到磁盘)请求的结果。
    如果测试人员想检查服务器响应的内容,可以为对应采样器添加断言。例如,当对Web应用做压力测试时,服务器虽然成功返回了"HTTP Response"代码,但是页面上可能会有错误,或者丢失了部分页面片段。针对这种情况,测试人员可以添加断言来检查特定的HTML标签,或者常见的错 误信息等。JMeter允许在断言中使用正则表达式。

  2、逻辑控制器
    控制器可以帮助用户控制JMeter的测试逻辑,特别是何时发送请求。逻辑控制器可以改变其子测试元件的请求执行顺序。

  3、监听器
    监听器提供了对JMeter在测试期间收集到的信息的访问方法。"图形结果"监听器会将系统响应时长绘制在一张图片之中。"查看结果树"监听器会展示采样器请求和响应的细节,还能以HTML和XML格式展示系统响应的基础部分。其他监听器通过总结或者聚合方式展示信息。
    另外,监听器可以将测试数据导入到文件之中,以供后续分析。所有监听器都会提供一个输入域,以便于用户指定存储测试数据的文件。监听器还会提供一个 配置按钮,用来配置存储测试数据的哪些字段,以及选用的存储格式(CSV或者XML)。读者朋友需要注意的是,所有监听器都保存同样的数据,唯一的区别是 它们如何展示数据。
    监听器可以在测试的任何地方添加,包括直接放在测试计划之下。它们仅收集测试树中相同或者更低级别测试元件的数据。

  4、定时器
    默认情况下,JMeter线程在发送请求之间没有间歇。建议为线程组添加某种定时器,以便设定请求之间应该间隔多长时间。如果测试人员不设定这种延迟,JMeter可能会在短时间内产生大量访问请求,导致服务器被大量请求所淹没。
    定时器会让作用域内的每一个采样器都在执行前等待一个固定时长。如果测试人员为线程组添加了多个定时器,那么JMeter会将这些定时器的时长叠加起来,共同影响作用域范围内的采样器。定时器可以作为采样器或者逻辑控制器的子项,目的是只影响作用域内的采样器。
    要在测试计划中的某个位置添加暂停,测试人员可以使用"Test Action"采样器。

  5、断言
    用户可以使用断言来检查从服务器获得的响应内容。通过断言可以测试服务器返回的响应与测试人员的期望是否相符。
    例如,测试人员可以断言某个查询的响应中包含特定的文字信息。测试人员可以使用Perl格式的正则表达式来描述响应中应该包含的文字,或者它应该与整个响应相符。

    测试人员可以为任何采样器添加断言。例如,测试人员可以为HTTP请求添加断言,用于检查文本""。接下来JMeter就会检查该文本是否出现在HTTP响应中。如果JMeter不能找到该文本,那么它就会将请求标记为失败。
    需要注意的是,断言会影响作用域内的所有采样器。如果要让断言只影响某个采样器,需要将断言作为该采样器的子项。
    如果要查看断言结果,可以为线程组添加"断言结果"监听器。失败的断言,也会在"查看结果树"和"用表格查看结果"两种监听器中显示。另外,在"Summary Report"和"聚合报告"中还会以错误百分率的形式统计。

  6、配置元件
    配置元件与采样器紧密关联。虽然配置元件并不发送请求(除了HTTP代理服务器例外),但它可以添加或者修改请求。
    配置元件仅对其所在的测试树分支有效。例如,假设测试人员在一个简单逻辑控制器中放置了一个HTTP Cookie管理器,那么该HTTP Cookie管理器只对放置在简单逻辑控制器内的其他逻辑控制器生效
    另外,相比父分支的配置元件,子分支内部的配置元件优先级更高。配置元件 "用户定义的参数"会在测试的初始阶段执行(无论它处于测试树的哪个位置)。

  7、前置处理器
    前置处理器会在采样器发出请求之前做一些特殊操作。如果前置处理器附着在某个采样器之下,那么它只会在该采样器运行之前执行。前置处理器通常用于在采样器发出请求前修改采样器的某些设置,或者更新某些变量的值(这些变量不在服务器响应中获取值)。

  8、后置处理器
    后置处理器会在采样器发出请求之后做一些特殊操作。如果后置处理器附着在某个采样器之下,那么它只会在该采样器运行之后执行。后置处理器通常被用来处理服务器的响应数据,特别是服务器响应中提取数据。

性能测试—JMeter 常用元件(四)的更多相关文章

  1. 性能测试—JMeter 常用元件(二)

    性能测试—JMeter 常用元件(二) <零成本web性能测试>第三章 Web性能测试脚本录制与开发中JMeter常用测试元件 测试计划描述了JMeter运行时将会执行的一系列步骤,一个完 ...

  2. Jmeter常用元件

    1.测试计划:测试元件的容器,相当于一个项目名称 线程组:  2.监听器:负责收集测试结果,同时也被告知了结果显示的方式 (1)查看结果树:看具体某个请求——请求响应,结果明细 (2)聚合报告:汇总报 ...

  3. Jmeter Web 性能测试入门 (三):Jmeter 常用组件说明

    线程组:用来设置并发的数量和模式.是用来模拟用户并发的组件.JMeter 的每个任务都是用线程来处理的. 线程数:要并发的请求数量. Ramp-Up Period: 在多次时间内把这些并发的请求发送完 ...

  4. jmeter常用四种断言

    jmeter常用四种断言 一.Response Assertion(响应断言)二.Size Assertion(数据包字节大小断言)三.Duration Assertion(持续时间断言)四.bean ...

  5. 性能测试-Jmeter

    缘由 很多情况下我们写程序过程中只会对固定模块采取并发限制,而且asp.net对于多线程也有他自己的处理机制,尤其对于注重业务,结果导向的团队可能更注重一定时间节点给出满意的产品,但是你的模块到底是否 ...

  6. jmeter 常用组件详解

    1.测试计划(test plan) 描述一个性能测试,包含本次测试所有相关功能 2.threads(users)线程 Setup thread group: 一种特殊类型的线程,可用于执行预测试操作. ...

  7. JMeter—配置元件(七)

    参考<全栈性能测试修炼宝典JMeter实战>第六章 JMeter 元件详解中第二节配置元件JMeter配置元件可以用来初始化默认值和变量,以便后续采样器使用.将在其作用域的初始化阶段处理. ...

  8. Jmeter基础元件

    测试计划 1.Test Plan (测试计划) 用来描述一个性能测试,包含与本次性能测试所有相关的功能.也就说JMeter创建性能测试的所有内容是于基于一个计划的. 下面看看一个计划下面都有哪些功能模 ...

  9. Jmeter(二十四) - 从入门到精通 - JMeter函数 - 中篇(详解教程)

    1.简介 在性能测试中为了真实模拟用户请求,往往我们需要让提交的表单内容每次都发生变化,这个过程叫做参数化.JMeter配置元件与前置处理器都能帮助我们进行参数化,但是都有局限性,为了帮助我们能够更好 ...

随机推荐

  1. WebSocket connection to 'ws://xx:9502/' failed:Error in connection establishment:net::ERR_CONNECTION_TIMED_OUT

    1.首先看能否ping通服务器 2.telnet xx 9502之后能不能连通 3.如果连不通有可能是防火墙的问题 可以试试清空防火墙规则,或者关闭防火墙 iptables -F

  2. 课程四(Convolutional Neural Networks),第四 周(Special applications: Face recognition & Neural style transfer) —— 1.Practice quentions

    [解释] This allows us to learn to predict a person’s identity using a softmax output unit, where the n ...

  3. 串口USB单一映射及重命名

    本文针对在开发过程中有时会出现用到多个串口设备,usb端口号会发生变化,如设备的灯指示信号和其他控制器都是ttyUSB* .其序号与控制接入的顺序有关,对于写好的launch每次修改串口连接名很麻烦. ...

  4. Java集合类常见面试知识点总结

    微信公众号[Java技术江湖]一位阿里Java工程师的技术小站 Java集合类学习总结 这篇总结是基于之前博客内容的一个整理和回顾. 这里先简单地总结一下,更多详细内容请参考我的专栏:深入浅出Java ...

  5. 从零开始学 Web 之 HTML5(二)表单,多媒体新增内容,新增获取操作元素,自定义属性

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  6. 【API知识】MongoTemplate非映射方式操作Document

    前言 我是MongoDB小白,刚开始学.不过,我猜大多数使用MongoDB的,都是采用映射方式处理的,即需要有定义好的用于映射的实体类.但是这样的话,如果表的结构在未来可能频繁变动,增删字段,甚至添加 ...

  7. Log4j 随笔

    对于一个Java开发者而言,Log4j是我们的好朋友了.话说到这里,需要自我检讨一下,这么久以来,凡是用到Log4j的地方,相关的配置文件都是直接拷贝过去,从来都没仔细看过.But thanks Go ...

  8. Java设计模式学习记录-组合模式

    前言 今天要介绍的设计模式是组合模式,组合模式也是结构型设计模式的一种,它主要体现了整体与部分的关系,其典型的应用就是树形结构.组合是一组对象,其中的对象可能包含一个其他对象,也可能包含一组其他对象. ...

  9. PHP 九九乘法表的4种表达方式

    九九乘法表的四种不同表现形式 x轴对称: //第一种 for($i=1;$i<=9;$i++){ for($j=1;$j<=$i;$j++) { echo $i.'x'.$j.'='.$i ...

  10. 微服务学习二:springboot与swagger2的集成

    现在测试都提倡自动化测试,那我们作为后台的开发人员,也得进步下啊,以前用postman来测试后台接口,那个麻烦啊,一个字母输错就导致测试失败,现在swagger的出现可谓是拯救了这些开发人员,便捷之处 ...