JMeter记录篇5——JMeter体系结构

JMeter体系结构

  

JMeter结构图可拆解成一个三维空间:

  X1~X5 是负载模拟的一个过程,使用这些组件来完成负载的模拟

  Y1:包含的是负载模拟部分,负责模拟用户请求

  Y2:结果验证部分,负责验证结果正确性

  Z:负载结果的收集,实践上只有一个组成部分——监听器,监听器不仅可以放在线程组之内,也可以放在线程组之外,所以在图中看到它们是相交的

JMeter基本原理:是建立一个线程池,多线程运行取样器产生大量负载,在运行过程中通过断言来验证结果的正确性,通过监听器来记录测试结果。

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

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

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

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

  如果想要控制业务的执行逻辑,比如登录只运行一次,我们可以用控制器来完成。

JMeter的组成部分

  【取样器/采样器】用来模拟用户操作,向服务器(被测试系统)发出Http请求、WebService(SOAP/XML-RPC Requests)请求或者Java请求等。

    取样器的访问路径:【测试计划】—— 【线程组】—— 【Sampler】, 常见的取样器如下图:

    常用的取样器为HTTP请求我们可以把HTTP请求元件看成是一个没有界面的浏览器,它可以发送Http请求,接收服务器的响应数据。

    

 

  【断言】用来验证结果是否正确,类似于LoadRunner中的检查点。可以帮助我们来判断请求是否成功返回且是否符合要求。就是用一个预设的结果(值、表达式、时间长短等条件)与实际结果匹配,匹配到则成功,反之失败。

    常用的是响应断言,对于复杂的断言可以通过BeanShell脚本来完成

    断言的访问路径:【测试计划】—— 【断言】

    

 

  【监听器】收集JMeter的测试结果,JMeter结果收集程序的设计模式就是监听器模式。JMeter的监听器有两个任务:

    1.添加结果监听,并且可以保存测试结果到文件,这些结果数据可以供再次分析使用。

    2.展示结果,JMeter可以以表格及图形的形式展示结果,方便测试人员分析测试结果。在开发测试脚本时,不可避免需要调试,监听器也提供了辅助(比如查看结果树,我们可以在其中看到请求与响应的数据)

    监听器的访问路径:【测试计划】—— 【监听器】,详情如下图:

    【取样器】、【断言】、【监听器】组合在一起就可以帮助我们完成发送请求、验证结果及记录结果三项工作。

    

 

   【前置处理器】在取样器发送请求之前做一些环境或参数的准备工作

    例如:在对数据进行操作前需要建立一个数据库连接,那么前置处理器可以完成这个工作

    前置处理器的访问路径:【测试计划】—— 【前置处理器】

    

 

 

   【配置元件】为取样器提供预备数据、然后由取样器发出请求;还可以用来记录服务器的返回数据,比如:Http Cache Manager,自动记录服务器返回的Cache信息。

    性能测试中为了模拟大量用户操作往往需要参数化,JMeter中的参数化可以通过配置元件来完成,比如:CSV Data Set Config,可以帮助我们从文件中读取数据。另外JMeter也提供了从多函数来帮助我们生成动态数据。

    配置元件的访问路径:【测试计划】—— 【配置元件】,详情如下图:

    

 

  【后置处理器】一般放在取样器之后,用来处理服务器的返回结果。(专门用来对响应数据做处理的元件,JMeter中的关联也是通过后置处理器来完成

    比如一个Web程序在登录后返回一个SessionID,这个SessionID在登录之后的业务过程中会做为验证条件,验证用户是否合法登录了。我们利用取样器模拟这个请求时就需要带上这个属性,那么如何获取呢? 首先我们要知道这个SessionID从哪里来?——它是由服务器返回的。我们需要用什么工具获取它?JMeter提供了元件,比如正则表达式提取器,它支持正则表达式的方式来提取数据。

    访问路径:【测试计划】——【后置处理器】,详情如下图:

    

 

  【控制器】逻辑控制器可以控制采样器(samplers)的执行顺序。由此可知,控制器需要和采样器一起使用,否则控制器就没有什么意义了。放在控制器下面的所有的采样器都会当做一个整体,执行时也会一起被执行。

    比如在收邮件时,只需要登录一次邮箱就可以查看多封邮件,这个场景在JMeter中只需要使用控制器中的“一次控制器”就可以控制登录的次数。

    控制器的访问路径:【测试计划】——【线程组】—— 【逻辑控制器】

    

 

  【定时器】用于在模拟大量用户在同一时间处理系统业务,起到集合的功能(常用于并发测试)

    访问路径:【测试计划】—— 【线程组】—— 【定时器】

    

 

  【线程组】用于模拟大量用户负载,此元件中可以设置运行的线程数(就是模拟多用户,一线程就是一个用户)

    访问路径:【测试计划】——【线程组】

    

 

注:此文章参见《全栈性能测试修炼宝典》

posted @ 2019-01-07 17:35  pathbreaker  阅读(775)  评论(0编辑  收藏  举报