用JMeter做http压力测试,这一篇就够(二-测试计划结构)
上篇已经将JMeter压测环境搭建完成,这篇开始讲如何对服务进行压力测试!需要了解环境搭建的童鞋,请移步用JMeter做http压力测试,这一篇就够(一)
首先我们将一下JMeter的项目机构,让各位童鞋对JMeter的项目有一个宏观的认知。
JMeter中可以将一个压力测试的项目理解为以下结构:
项目
|—各类监控器
|—全局参数
|—线程组(可以是多个)
|—参数
|—请求(可以是多个)
|—参数
|—结果树
|—断言
|—各类处理器
这个结构是我在使用过程中总结出比较通配的结构,可以做到一类项目只用这一个工程即可完成所有的压测需求。
项目
-
全局参数:
全局参数一般采用User Defined Variables
一般情况下我建议将一些全局的参数定义在项目中方便后续的变量引用及修改,比如请求地址、请求路径、或请求端口等 -
各类监控器
一般情况下我们将监控器方置于项目层,而不针对线程组单独监控
常用的监控器有:Transactions per Second、Response Times Over Time、PerfMon Metrics Collector、Aggregate Report,具体的监控器参数指标以及其设置请自行百度,这里就不展开讲了。- Transactions per Second
每秒事务处理量,也就是系统每秒能处理多少次请求,这是我们最关注的性能参数,界面如下: - Response Times Over Time
响应时间,监控请求发出至收到响应结果消耗的时间 - PerfMon Metrics Collector
可以监控服务器的CPU、磁盘IO、网络IO以及内存情况 - Aggregate Report
聚合报告
- Transactions per Second
-
线程组
JMeter测试的最小单元,每个工程至少要有一个线程组,一个线程组可以由多个请求组成。每次启动测试时至少要保证有一个线程组处于**状态。 -
请求
请求是依赖于线程组运行的元素,所以请求在建立在线程组中的。
JMeter支持多种协议的请求,我在后续文中以Http为例进行演示; -
参数
参数取值可采用User Defined Variables、User Parameter和CSV Date Set Config,还有其他方式大家自行探索。
对于参数的设定,可以根据参数适用范围灵活调整其所在层级,对于名称冲突的参数设定,JMeter采取就近原则进行取值。 -
断言
该元素归属于请求下
和单元测试中的断言意思一致,即判断返回结果是否正确,该 -
结果树
该元素归属于请求下
如何查看请求返回的结果呢,这个时候就需要添加结果树以查看请求响应的结果情况 -
各类处理器
该元素归属于请求下
请求发出前发出后还可以添加一些其他的处理,JMeter的前置后置处理便是如此,可以支持我们做很多复杂的逻辑处理或请求模拟。