本节内容包括:
(1)概念
Apache JMeter应用程序是开源软件,100%纯Java应用程序,用来进行负载测试、度量系统性能。它最初是为测试Web应用程序而设计的,但后来扩展到其他测试函数。
(2)使用Jmeter我们能做什么?
Apache JMeter可以用于测试静态和动态资源、Web动态应用程序的性能。
它可以用来模拟大量负载对单个服务器或一组服务器、网络或对象进行压测,以测试其强度,或分析不同负载类型下的总体性能。
(3)Apache JMeter的特性包括:
支持测试许多种类的应用程序/服务器/协议类型:
全功能测试IDE,允许快速测试计划记录(来自浏览器或本机应用程序),构建和调试。
(4)Jmeter工作原理
通过多线程模拟服务器压力(Loadrunner可以选择以进程方式还是以线程方式来运行)。JMeter通过线程组来驱动多个线程(可以将线程理解为虚拟用户)运行测试脚本对被测服务发起负载,每一个负载机上都可以运行多个线程组。
JMeter官网下载地址:http://jmeter.apache.org/download_jmeter.cgi
前提条件:安装jdk(注意版本)
在写本博客的时候,JMeter版本为4.0,需要JAVA 8 或JAVA 9版本
(1)Windows安装
(2)Mac安装
(3)Linux安装
无论是使用二进制包还是通过源文件安装Jmeter都非常简单,需要大家注意的是,下载合适的JDK并配置好环境变量。
(1)bin目录:包含示例脚本(examples)、报告模板(report-template)、启动文件(windows使用.bat,Mac和linux使用.sh启动文件)还有一些配置文件(日志设置、JVM设置等)
(2)docs:docs文件夹下的api文件夹包含了JMeter API离线帮助文档
(3)extras:JMeter的辅助功能,与Jenkins等集成会用到
(4)lib:JMeter组件以jar包的形式存放在lib/ext目录下,给JMeter安装的扩展插件,都存放在该目录;
(5)license:包含一些软件许可证,不必深究
(6)printable_docs:离线帮助文档,权威文档
(7)LICENSE:License说明文件
(8)NOTICE:版权声明
(9)README.md:JMeter简明介绍,后缀md是Markdown格式文件
(1)测试计划
可以将其看作一个测试场景或测试用例,用来描述一个性能测试,包含测试用例相关的所有功能(比如测试用例的前置条件,预期结果等)
(2)线程组
性能测试需要模拟大量用户负载,线程组就是用来完成这个工作的。在这里我们可以设置线程数(一线程代表一用户),设置运行时间等。分为三类:
访问路径是:【测试计划】——>【Threads(Users)】
(3)取样器sampler
就是通过像服务器发送请求来模拟用户操作,同时也接收服务器响应。取样器有很多种(Jmeter 4.0 默认20种),常用的有HTTP请求,FTP请求等。取样器的访问路径是:【测试计划】——>【线程组】——>【Sampler】
(4)断言
断言就是用来验证响应结果是否正确的,类似LR中的检查点。断言的访问路径是:【测试计划】——>【断言】
(5)监听器
Jmeter的测试结果需要添加监听器来收集,监听器有两个任务:
访问路径是【测试计划】——>【监听器】
取样器、断言、监听器组合在一起就可以帮助我们完成发送请求、验证结果、记录结果三项重要的工作。
(6)前置处理器
用于在实际的请求发出之前对即将发出的请求进行特殊处理。在请求发送前,可以需要准备环境或参数,那我们就可以在前置处理器中完成这些工作。比较典型的应用有:
访问路径:【测试计划】——>【前置处理器】
(7)后置处理器
后置处理器一般放在取样器之后,用来处理服务器的返回结果,比如一个Web应用程序,我们登录后会返回一个SessionID,这个SessionID在登录之后的业务操作过程中会作为验证条件,验证用户是否合法登录了。我们利用取样器模拟这个请求时就需要带上这个属性,那么如何获取呢?这时候就用到了后置处理器,等同于LR中的关联。
访问路径:【测试计划】——>【后置处理器】
(8)配置元件
性能测试中为了模拟大量用户操作,我们往往需要做参数化,JMeter的参数化就是通过配置元件来完成的。比如通过CSV Data Set Config,可以帮助我们从文件中读取数据。具体用法我们后续介绍。
前置处理器、后置处理器、配置元件都是为取样器提供数据支持的,取样器关注的是业务逻辑。
(9)定时器
定时器用于操作之间设置等待时间,有点类似LoadRunner中的think time
对于类似“秒杀”这种活动,使用定时器再适合不过了。为了足够真实的模拟用户负载,我们有时会需要模拟这些请求在同一时刻发送,就好像把大家集合到一条起跑线上,然后一声令下,同时起跑。Jmeter提供了多种定时器以满足各种场景。
访问路径:【测试计划】——>【线程组】——>【定时器】
(10)控制器:
逻辑控制器包含两类,一类用于控制测试计划中取样器节点发送请求的逻辑顺序的控制器,如if控制器,循环控制器;一类是用来组织可控制取样器节点的,如事务控制器、吞吐量控制器
(11)Test Fragment
是一个辅助组件,在此节点下几乎可以放置任何Jmeter测试元件,但一般不会运行,他有什么作用呢?
(12)工作台
工作台的主要功能在于:
好,本节内容就这么多吧。欢迎加QQ群:460430320,讨论测试相关知识,共同进步。