Jmeter性能测试学习随笔(一)

Jmeter简介

对于性能测试来说,工具并不是核心,分析、评估、找出性能问题才是核心,这些是主管因素;工具是客观因素,在工具选择时,专业稳定高效的Loadrunner是最佳选择,但要考虑投入产出比,我们可以选择免费开源的Jmeter。
Jmeter可以对web应用进行测试,同事也提供了web录制功能。其可以作为web服务器与浏览器直接的代理网关,以便捕获浏览器的请求和web服务器的响应,如此就可以很容易地生成性能测试脚本。有了性能测试脚本,jmeter就可以通过线程来模拟真实用户对web服务器的访问压力。

Jmeter体系结构

  • 取样器:用来模拟用户操作,向服务器(被测试系统)发出 Http请求、WebService (SOAP/XML-RPC Request)请求或者Java请求等。我们可以把 Http 请求元件看成是一个没有界面的浏览器,它可以发送 Http 请求,接收服务器的响应数据。取样器
  • 断言:断言用来验证结果是否正确,用过LoadRunner的读者应该会知道检查点这个功能,可以帮助我们来判断请求是否成功返回且是否符合要求,在JMeter中我们不叫检查点,我们叫断言。说白了就是用一个预设的结果(值、表达式、时间长短等条件)与实际结果匹配,匹配到则成功,反之失败。断言
  • 监听器:JMeter 的测试结果需要添加监听器来收集,JMeter结果收集程序的设计模式就是监听器模式。JMeter的监听器有两个任务。
    (1)添加结果监听,并且可以保存测试结果到文件,这些结果数据可以供再次分析使用。
    (2)展示结果,JMeter可以以表格及图形的形式展现结果,方便测试人员分析测试结果。我们在开发测试脚本时,不可避免需要调试,监听器也提供了辅助(比如察看结果树,我们可以在其中看到请求与响应的数据)。监听器
  • 前置处理器:在测试脚本开发过程中,我们在请求发送前可能会做一些环境或者参数的准备工作,那么我们可以在前置处理器中来完成这些工作。比如,我们在对数据库进行操作前需要先建立一个数据库连接,那么前置处理器就可以完成这个功能。前置处理器
  • 配置元件:性能测试中为了模拟大量用户操作我们往往需要做参数化,Jmeter 的参数化可以通过配置元件来完成,比如CSV Data Set Config,它可以帮助我们从文件中读取测试数据。另外JMeter也提供了众多的函数来帮我们生成动态数据。当然配置元件的作用不仅于此,它还可以用来记录服务器的返回数据,比如Http Cache Manager,自动记录服务器返回的Cache信息。简而言之它为取样器提供预备数据,然后由取样器发出请求。配置元件
  • 后置处理器:后置处理器一般放在取样器之后,用来处理服务器的返回结果,比如一个Web应用程序,我们登录后会返回一个SessionID,这个SessionID在登录之后的业务操作过程中会作为验证条件,验证用户是否合法登录了。我们利用取样器模拟这个请求时就需要带上这个属性,那么如何获取呢?首先我们要知道这个SessionID 从哪里来?它是由服务器返回的。接着我们要获取它,用什么工具获取呢?JMeter 帮我们提供了元件,比如正则表达式提取器,它支持正则表达式的方式来提取数据。后置处理器就是专门用来对响应数据做处理的元件,JMeter的关联就是通过后置处理器来完成的。后置处理器
  • 控制器:我们在收邮件时,只需要登录一次邮箱即可以查看多封邮件。如果这个场景我们要在JMeter中实现,我们需要控制登录的次数,如何实现呢?JMeter逻辑控制器中的仅一次控制器即可以完成。当然了,控制器不只有这一个,还有很多其他的控制器来完成我们的各种需求。逻辑控制器
  • 定时器:为了足够真实地模拟用户负载,我们有时会需要模拟这些请求在同一时刻发送,就好像把大家集合在一条起跑线上,然后一声令响,同时起跑。那么我们此时需要一个集合的功能,JMeter中可以通过定时器来完成这个需求。定时器
  • 测试片段:测试片段是一个辅助的组件,在此节点下几乎可以放置任何JMeter测试元件,但它一般不会被运行。
    (1)在脚本开发过程中可以用来备份元件。
    (2)TestFragment下的元件可以被模块控制器调用,我们可以利用它来模块化请求供模块控制器调用。测试片段

Jmeter测试计划要素

Jmeter中一个脚本即是一个测试计划,也是一个管理单元。Jmeter的请求模拟与并发数设置都在脚本文件中一起设置:
(1)要素一:脚本中测试计划只能有一个
(2)要素二:测试计划中至少要有一个线程组
(3)要素三:至少要有一个取样器
(4)要素四:至少要有一个监听器

学习参考书籍: 全栈性能测试修炼宝典Jmeter实战.