性能测试专题:Jmeter的详细入门介绍
jmeter介绍
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许适用正则表达式创建断言
jmeter体系结构介绍
jmeter的体系结构主要包括取样器、监听器、前置处理器、配置元件、后置处理器、控制器、定时器、线程组等。
其基本原理是建一个线程池,多线程运行取样器产生大量负载,如果取样器中有参数化的需求,可以通过配置元件或者前置处理器来完成,如果与关联处理需求可以通过后置处理器完成,如果想要设置运行场景,比如模拟多少用户,运行时间,可以设置线程组,如果想要模拟并发场景,可以利用定时器,想要控制业务的执行逻辑,可以通过控制器来完成。下面我们分别来介绍一下各个组件的功能.
取样器
取样器可以用来模拟用户操作,向服务器发出请求,可以是http、websocket或者自定义java请求等,
以上是我本地安装jmeter5.0所支持的请求类型,取样器的访问路径是:测试计划->thread group->add->sampler
断言
断言是用来验证结果是否正确
可以设置响应断言、xml断言、BeanShell断言等,对于复杂的断言,可以通过BeanShell脚本来设置,BeanShell是一种类java的脚本语言,而且还是一个小巧的java源码解析器,可以直接调用java程序。
监听器
jmeter的测试结果需要添加监听器来收集,监听器有两个任务:
1、添加结果监听,并且可以保存测试结果到文件,这些结果数据可以供再次分析使用
2、展示结果,jmeter可以通过表格以及图形的方式展现结果,方便分析
前置处理器
在测试脚本开发过程中,我们可能在请求发送前会做一些环境初始化或者参数准备的工作,就可以通过前置处理器开完成,比如数据库连接、用户参数设置等等
配置元件
在性能测试时,往往需要模拟大量用户的操作,这个时候就需要进行参数化操作,这就需要配置元件来处理,比如CSV Data Set Config,可以从文件中读取测试数据,还比如说可以添加header、cookie等。还可以用来记录服务器的返回数据,比如HTTP Cache Manager,会自动记录服务返回的cache信息。总而言之,配置元件就是提供数据给取样器,然后取样器再发出请求。
后置处理器
后置处理器,一般放在取样器之后,用来处理服务器返回的结果,比如sessionid、token的提取,可以通过正则、json路径表达式等进行提取,还有jmeter的关联就是通过后置处理器完成。
控制器
控制器主要是用来对业务逻辑进行控制,比如说只登陆一次,进行条件判断等。后面我们会对每种控制进行介绍。
定时器
在进行性能测试的时候,有时需要模拟请求在同一时刻发送,这个时候就需要定时器来完成。
线程组
性能测试需要模拟大量用户的负载情况,线程组就是干这个事情的,在线程组,可以设置运行的线程数,运行时长等
以上是jmeter的组成部分,下面在介绍两个其他的功能
Test Fragment
Test Fragment是一个辅助组件,此节点下可以方式任何jmeter组件,但是它不会被运行,具体有以下两个作用
在脚本开发的过程中可以用来备份元件
Test Fragment下的元件可以被模块控制器调用,可以用它来模块化请求,类似于将功能封装,给其他有需要的地方调用
工作台
在jmeter4.0以前,jmeter有个工作台的tab,不过在4.0以后,就没有工作台了,这块儿的功能都被移到了非测试元件下面:
主要有以下功能:
- 设置代理服务器可以用来录制http请求
- 设置服务器监控,Http mirror server,不过一般不用这个功能,会给服务器增加压力的
- Property Display 显示当前jmeter的属性相关信息。
- 备份脚本
总结
以上是我对jmeter大致的功能进行了一个简单的介绍,后面陆续会有文章,对每一个功能进行的详细的介绍。