JMeter体系架构

JMeter基本原理是建立一个线程池,多线程运行取样器产生大量负载。

在运行过程中通过断言来判断结果的正确性,通过监听器来记录结果。

如果取样器中有参数化的需求,可以通过X2中的配置元件或者前置处理器来完成。

如果有关联需求,可以通过后置处理器来完成。

如果想要设置运行场景,比如模拟多少用户,运行多少时长,就设置线程组。

如果要模拟并发场景,可以利用定时器来设置。

如果要控制业务的执行逻辑,比如登陆只执行一次,可以通过控制器来完成

JMeter体系架构_第1张图片
一.X1取样器​

  1. 取样器用来模拟用户操作,向服务器(被测系统)发出HTTP请求、WebService请求、Java请求等。
  2. 我们可以把取样器看成一个没有界面的浏览器,能够发送请求、接受服务器的响应数据。
    JMeter体系架构_第2张图片

二.X1断言

  1. 断言用来验证结果是否正确,可以用来帮助我们来判断请求是否成功返回且是否符合要求。
  2. 说白了就是用一个预设的结果(值、表达式、时间长短等条件)与实际结果匹配,匹配到则成功,反之失败。
  3. 较常用的是响应断言,对于复杂的断言还可以用BeanShall脚本完成。
    JMeter体系架构_第3张图片

三.X1监听器

  1. JMeter的测试结果需要添加监听器来收集,JMeter结果收集程序的设计模式就是监听器模式。
  2. JMeter的监听器有两个任务:
    添加结果监听,并且可以保存测试结果到文件,这些结果数据可以供再次分析使用。
    展示结果,JMeter可以以表格及图形的形式展现结果,方便测试人员分析结果。
  3. 我们在开发测试脚本时,不可避免需要调试,监听器也提供了辅助。
  4. 取样器、断言、监听器组合在一起就可以帮我们完成发送请求、验证结果、记录结果三项工作。
    JMeter体系架构_第4张图片

四.X2前置处理器​

  1. 在测试脚本开发过程中,我们在请求发送前可能会做一些环境或者参数的准备工作,那么我们可以在前置处理器中完成这些工作。
  2. 比如,我们在对数据库进行操作前需要先建立一个数据库连接,那么前置处理器可以完成这个功能。
    JMeter体系架构_第5张图片

五.配置元件

  1. 性能测试中为了模拟大量用户操作我们往往需要做参数化,JMeter的参数化可以通过配置元件来完成。
  2. 比如CSV Data Set Config,它可以帮助我们从文件中读取测试数据。
  3. JMeter也提供了众多函数来帮我们生成动态数据。
  4. 配置元件还可以用来记录服务器的返回数据,比如Http Cashe Manager,自动记录服务器返回的Cashe信息。
  5. 简而言之,它为取样器提供预备数据,然后由取样器发出请求。
    JMeter体系架构_第6张图片

六.X2后置处理器

  1. 后置处理器一般放在取样器之后,用来处理服务器的返回结果。比如一个Web应用程序,我们登陆后会返回一个SessionID,这个SessionID在登陆之后的业务操作过程中会作为验证条件,验证用户是否合法登陆了。我们利用取样器模拟这个请求时就需要带上这个属性。用什么工具获取呢?JMeter帮我们提供了元件,比如正则表达式提取器,它支持正则表达式的方式来提取数据。
  2. 后置处理器就是专门用来对响应数据做处理的元件,JMeter的关联就是通过后置处理器完成的。
  3. 前置处理器、配置元件、后置处理器都是为取样器提供数据支持的。
    JMeter体系架构_第7张图片

七.X3控制器

  1. 我们在收到邮件时,只需登陆一次邮箱即可查询多封邮件,如果这个场景要在JMeter中实现,我们需要控制登陆的次数。
  2. 如何实现呢?JMeter 逻辑控制器中的仅一次控制器即可完成。

JMeter体系架构_第8张图片
八.X4定时器
为了足够真实的模拟用户负载,我们有时会需要模拟这些请求在同一时刻发送,那么我们此时需要一个集合的功能,JMeter中可以用定时器完成。​

JMeter体系架构_第9张图片
九.X5线程组

  1. 性能测试需要模拟大量用户负载的情况,线程组就是用来完成这个工作的。
  2. 在次元件中,我们可以设置运行的线程数(一个线程就是一个用户)。
  3. 除了设置线程数外,还可以设置运行时长,定时运行等。
  4. 第三方插件(JMeter Plugin)的扩展也让JMeter的场景设计更加丰富。

JMeter体系架构_第10张图片
十.测试片段

  1. Test Fragment是一个辅助组件,次节点下几乎可以放置任何JMeter测试元件。
  2. 它一般不会被运行。
  3. 在脚本开发过程中可以用来备份元件。
  4. Test Fragment下的元件可以被模块控制器调用,我们可以利用它进行模块化请求供模块控制器调用。

本文​参考《全栈性能测试修炼宝典JMeter实战》

你可能感兴趣的:(性能测试)