《JMeter实战》第三章 JMeter体系结构 摘录
JMeter是一款开源桌面应用软件,可用来模拟用户负载来完成性能测试工作。可以对WEB应用进行测试,同时也提供了Web录制功能;另外还支持Java请求、JMS、EJB、WebService、JDBC、FTP、LDAP、SMTP、Junit、Mail、MongoDB、JSR223等的测试。基本上我们常见的应用类型都可以用JMeter进行测试。当前HTML5盛行,手机APP如火如荼,我们也可以用JMeter来进行性能测试,JMeter也支持Socket协议的测试。另外JMeter也很方便用来进行性能测试自动化。可以说JMeter就是一个百变性能测试工具,鲜有做不到的,只有想不到的。
- 名词说明:
- 元件:JMeter工具菜单中的一个子菜单。比如HTTP请求、事务控制器、响应断言等。
- 组件:一组元件的集合(一个或多个)
- x1~x5是负载模拟的一个过程,使用这些组件来完成负载的模拟。
- Y1:包含的是负载模拟部分,负现模拟用户请求。
- Y2:结果验证部分,负责验证结果正确性。
- Z:负载结果的收集,实践上只有一个组成部分--监听器,可以放在线程组内,也可以放在线程组外。
- JMeter基本原理是建立一个线程池,多线程运行取样器产生大量负载,在运行过程中通过断言来验证结果的正确性,通过监听器来记录测试结果。如果取样器中有参数化的需求,可以通过X2中的配置元件或者前置处理器来完成。如果有关联需求,可以通过后置处理器来完成。如果想要设置运行场景,比如模拟多少用户,运行多长时间,就设置线程组。模拟并发场景,利用定时器来设置。控制执行逻辑,用控制器来完成。
参数化 |
配置元件 |
前置处理器 | |
关联需求 |
后置处理器 |
设置运行场景 |
设置线程组 |
模拟并发场景 |
定时器 |
控制执行逻辑 |
控制器 |
取样器->模拟用户操作->向服务器发http、WebService(SOAP/XML-RPC Request)、Java等请求。可以把http请求元件看成是一个没有界面的浏览器,可发http请求,接收服务器响应。
取样器元件涵盖了常见的各种协议:
断言(检查点):
监听器:添加结果监听,保存到文件,展示结果。
前置处理器: 环境或参数准备
配置元件:参数化,提供测试数据
后置处理器:处理服务器的返回结果
控制器:
定时器:
线程组:设置运行的线程数,模拟多少用户,运行时间,定时运行:
测试片段:备份元件,模块化请求:
JMeter是以线程方式运行在JVM虚拟机上的。通过线程组来驱动多个线程运行测试脚本对被测试服务器发起负载,每一个负载机上都可以运行多个线程组。可在GUI中运行,也可在命令行中运行,命令行开销小。支持远程运行(控制机和负载机工作模式,控制机连接负载机,把运行脚本传过去,但是不能传参数文件和jar包,控制机启动负载运行,运行结果回传到控制机显示)
- 脚本中测试计划只能有一个
- 测试计划中至少要有一个线程组
- 至少要有一个取样器
- 至少要有一个监听器
- Bin目录放置各项配置文件(日志配置,JVM配置)、启动文件(JMeter启动,报告生成,Heap Dump等快捷方式)、启动jar包、示例脚本等。
- Docs放了JMeter API离线帮助文档。
- Extras: JMeter辅助功能,提供与Ant, Jenkins集成的可能性。
- Lib: JMeter组件以jar包的形式放置在lib/ext目录下,扩展JMeter组件时,jar包放这,JMeter启动时会加载此目录下的jar包。
- printable_docs: JMeter离线帮助文档。