-
第三章 JMeter
-
3.1、JMeter简介
JMeter是一款开源桌面应用软件,可用来模拟用户负载来完成性能测试工作。
JMeter可以对Web应用进行测试,同时也提供了Web录制功能;另外还支持Java请求、JMS、EJB、WebService、JDBC、FTP、SMTP、Junit、MongoDB等的测试;
-
3.2、JMeter体系结构
1、名词说明
元件:代表JMeter工具菜单中的一个子菜单(功能),比如HTTP请求、事务控制器、响应断言等;
组件:一组与案件的集合(一个或者多个),比如逻辑控制中有事务控制器,仅一次控制器,循环控制器等,这些都是元件,但它们被归类到逻辑控制器中,逻辑控制器就是组件,如下图所示:
说明:
X空间有5个维度,Y 空间分为2个维度,Z空间1个维度;
X1 ~ X5是负载模拟的一个过程,使用这些组件来完成负载的模拟;
Y1:包含的是负载模拟部分,负责模拟用户请求;
Y2:结果验证部分,负责验证结果正确性;
Z:负载结果收集,实践上只有一个组成部分 —— 监听器,监听器不仅可以放在线程组之内,也可以放在线程组之外;
JMeter基本原理是建立一个线程池,多线程运行取样器产生大量负载,在运行过程中通过断言来验证结果的正确性,通过监听器来记录测试结果。参数可以X2中的配置元件或者前置处理器来完成;如果有关联需求,可以通过后置处理器来完成;模拟多少用户,运行多长时间就可以利用定时器来设置;如果我们想要控制业务的执行逻辑,比如登录只运行一次,就可以使用控制器来完成;
-
3.2.1、X1【取样器】
用来模拟用户操作,向服务器(被测试系统)发出http请求、WebService(SOAP/XML-RPC Request)请求或者Java请求等。我们可以把Http请求元件看成是一个没有界面的浏览器,可以发送请求也可以接收请求数据;
JMeter2.11版本提供的取样器有23个,涵盖了我们常见的各种协议,例如:http、ftp、java、ldap、mail、MongoDB、SMTP、soap、TCP、Junit等,还支持BeanShell脚本,取样器的访问路径:【测试计划】—— 【线程组】—— 【Sampler】;
取样器如下所示:
3.2.2、X1【断言】
断言用来验证结果是否正确,LoadRunner中的检查点就是JMeter
中的断点。断点:用一个预设的结果(值、表达式、时间长短等条件)与实际结果匹配,匹配到则成功,反之失败;
JMeter 2.11版本的断言元件有13个,见下图,断言的访问路径是:【测试计划】——【断言】;
断言部分信息如下所示:
3.2.3、X1【监听器】
JMeter的测试结果需要添加监听器来收集,JMeter结果收集程序的设计模式就是监听器模式。JMeter的监听器有两个任务;
(1)添加结果监听;
(2)展示结果;可以以表格及图形的形式展示结果,方便测试人员分析测试结果。我们在开发测试脚本时,不可避免需要调试,监听器也提供了辅助(比如查看结果树,我们可以在其中看到请求与响应的数据),共有19个元件;
监听器的访问路径:【测试计划】——【监听器】,如下所示:
【取样器】、【断言】、【监听器】组合在一起就可以帮助我们完成发送请求、验证结果以及记录结果三项工作;
3.2.4、X2【前置处理器】
在测试脚本开发过程中,我们在请求发送前可能会做一些环境或者参数的准备,那么我们可以在前置处理器中来完成这些工作。前置处理器访问路径:【测试计划】——【前置处理器】,如下图所示:
3.2.5、X2【配置元件】
性能测试中为了模拟大量用户操作,我们需要参数化,Jmeter的参数化可以通过配置元件来完成,它可以帮助我们从文件中读取测试数据。配置元件可以为取样器提供预备数据,然后由取样器发出请求。取样器的访问路径为:【测试计划】——【配置元件】,如下图所示:
3.2.6、 X2【后置处理器】
后置处理器一般放在取样器之后,用来处理服务器的返回结果,比如一个Web应用程序,我们登陆后会返回一个SessionID,我们利用模拟器请求时就需要带上这个属性,由服务器返回,可以通过正则表达式来获取。后置处理器就是专门用来对数据做处理的元件,访问路径:【测试计划】——【后置处理器】
【前置处理器】、【配置元件】、【后置处理器】都是为取样器提供数据支持的,取样器关注的是业务逻辑,就比如家人是你的后盾,帮你解决事业外的一切麻烦,让你全身心地投入到事业中。
任务完成~
以上内容参考:《全栈性能测试修炼宝典JMeter实战》一书~