JMeter:【Test Plan】→【Thread Group】:八大元器件
目录
线程组【Threads(User)】
- 性能测试需要模拟大量用户负载情况,线程组就是用来完成这个工作的,在此元件中我们可以设置运行的线程数(就是模拟多少用户,一线程一用户)
- 处理设置线程数以外,还可以设置运行时长,定时运行等
- 第三方插件(JMeter Plugin)的扩展也让JMeter的场景更加丰富
- 业务中的一个模块,就相当于一个线程组
- 访问路径:【Test Plan】→【Threads(Users)】
1、取样器
- 取样器是什么
- 用来模拟用户操作,向服务器(被测试系统)发出HTTP请求、WebService(SOAP/XML-RPC Request)请求或者Java请求等,可以把HTTP请求元件,看作是一个没有界面的请求,它可以发送HTTP请求,接受服务器的相应数据
- 取样器访问路径:【Test Plan】→【Thread Group】→【Sampler】
2、断言
- 断言是什么
- 断言是用来验证结果是否正确,可以帮助我们来判断请求是否返回切实符合要求,简单来说就是用一个预设的结果(值、表达式、时间长短等条件)与实际结果匹配,匹配到成功,反之失败
- 断言路径:【Test Plan】→【Thread Group】→【Assertions】
3、监听器
- 监听器是什么
- JMeter的测试结果需要添加监听器来收集,JMeter结果收集程序的设计模式就是监听器模式
- 监听器的两个任务
- 添加结果监听,并且可以保存测试结果到文件,这些结果数据可以供再次分析使用
- 展示结果,JMeter可以表格及图形的形式展示结果,方便测试人员分析测试结果,在开发测试脚本时,不可避免需要调试,监听器也提供辅助(比如查看结果树:可以看到请求和相应数据)
- 监听器路径:【Test Plan】→【Thread Group】→【Listener】
总结:
- 【取样器】→【断言】→【监听器】组合在一起就可以帮助我们完成发送请求,验证结果及记录结果三项工作
4、前置处理器
- 前置处理器的作用
- 在测试脚本开发过程中,我们在请求发送前可能会做一些环境或者蚕食的准备工作,那我们可以在前置处理器中来完成这些工作。
- 比如:在对数据库进行操作前需要先建立一个数据库连接,那么前置处理器就可以完成这个功能
- 前置处理器路径:【Test Plan】→【Thread Group】→【Pre Processors】
5、配置元件
- 配置元件的作用
- 性能测试中需要模拟大量的用户操作,我们往往需要做参数化,JMeter的参数化可以通过配置员元件来完成
- 比如:1、CSV Data Set Config ,它可以帮助我们从文件中读取测试数据
- 2、JMeter也提供众多的函数来帮助我们生成动态数据
- 3、记录服务器的返回数据:比如HTTP Cache Manager,自动记录服务器返回的Cache信息
- 配置元件路径:【Test Plan】→【Thread Group】→【Config Element】
6、后置处理器
- 后置处理器的作用
- 后置处理器是专门用来对响应数据做处理的元件,JMeter的关联就是通过后置处理器完成的
- 后置处理器一般放在Sample之后,用来处理服务器的返回结果;比如:登录网页返回Session ID,这个Session ID登录后的业务操作过程中会作为验证条件;如何提取这个Session ID,就要用到后置处理器(比如:正则表达式提取器,他支持正则表达式的方式来提取数据)
-
后置处理器路径:【Test Plan】→【Thread Group】→【Post Processors】
总结:
- 【Pre Processors】、【Config Element】、【Post Processors】都是为取样器提供数据支持的,取样器关注的是业务逻辑
7、控制器
- 控制器的作用
- 和业务逻辑配合使用,能完成各种需求
- 控制器访问路径:【Test Plan】→【Thread Group】→【Logic Controller】
8、定时器
- 定时器的作用
- 为了能够真实的模拟用户负载,我们有时会模拟这些请求在同一刻发送;这时就用到了定时器
- 定时器的种类很多,需要和业务配合使用
- 定时器路径:【Test Plan】→【Thread Group】→【Timer】
【Test Fragment】:测试片段
- 【Test Fraglment】是一个辅助的组件,在此节点下几乎可以防止任何JMeter测试元件,但一般不会运行,那他有什么作用
- 1、在脚本开发过程中可以用来备份元件
- 2、【Test Fraglment】下分元件可以被模块控制器调用,我们可以利用它来模块化请求(是不是有点开发程序的味道?把一个业务封装成一个方法供复用)供模块控制器调用
- 访问路径:【Test Plan】→【Test Fraglment】
- 线程组中也有此模块
【Non -Test Elements】:非测试元件
- 【Non -Test Elements】:非测试元件,不直接参与运行
- 【Non -Test Elements】→【HTTP Mirror Server】:服务器监控,不建议用此功能来做测试监控,主要是避免对JMeter负载产生影响
- 【Non -Test Elements】→【HTTP(s) Test Script Recorder】:HTTP代理服务器,设置代理信息后,进行录制
- 【Non -Test Elements】→【Property Display】:显示当前JMeter属性信息