详细解释jmeter每个元件的用途(图文结合)

初衷:因为最近在学习jmeter,为了是自己学的更牢固,学的更好,就打算写一篇详细的jmeter的知识点,便于我后面忘记了可以来复习,也可以给大家一份参考的资料 。

一、jMeter可以干什么

Apache JMete应用程序是开源软件,一个 100% 纯 Java 应用程序,旨在加载测试功能行为和测量性能 。它最初是为测试 Web 应用程序而设计的,但后来扩展到其他测试功能。

Apache JMeter 可用于测试静态和动态资源、Web 动态应用程序的性能。 它可用于模拟服务器、服务器组、网络或对象上的重负载,以测试其强度或分析不同负载类型下的整体性能。

二、每个组件的用途

组件的作用域

1. 线程组

线程组元素是任何测试计划的起点。所有控制器和取样器都必须在一个线程组下。

在取样器错误后要执行的动作

1. Continue 请求出错后,线程继续运行,默认选择此项,保证足够的并发压力

2. Start Next Thread Loop 如果出错,则同一线程中的余下请求将不再执行,直接重新开始新一轮迭代。

3. Stop Thread 一般不会设置此项,它指的是请求失败后,停止当前线程,不再执行

4. Stop Test 如果某一线程的某一请求失败了,停止所有线程测试。但是每个线程还是会执行完当前迭代后再停止。

5. Stop Test Now 如果有线程的请求失败了,立即停止所有线程,不再执行。

线程数:用于模拟用户数

ramp-up时间:在设置的时间结束的时候,启动多少个线程数。例如:如果使用 10 个线程,并且ramp-up时间为 100 秒,那么 JMeter 将需要 100 秒才能让所有 10 个线程启动并运行。每个线程将在前一个线程开始后 10 (100/10) 秒后开始。

循环次数:表示测试会执行多少次

Same user on each iteration:每个迭代都用相同的线程。(**默认这个的选项是勾选的。**因为销毁和创建线程本身就会占用资源,可能会影响性能测试结果。)

延迟创建线程直到需要:勾选当线程需要执行的时候,才会被创建。跟 JVM 创建线程时机有关,实际运用勾不勾选都不影响测试结果,保持默认就好。

调度器:持续时间,单位秒。循环次数勾选了 永远,才有作用。 启动延迟:单位秒。延迟到时间后再运行线程。

2.取样器

取样器告诉 JMeter 向服务器发送请求。

如上图,取样器包括很多种,但是由于http请求我们用的比较多,这里就只详细解释http的取样器

作用:向服务器发送http及https请求

位置:选中线程组->右键->添加->取样器->HTTP请求

3.查看结果树

作用:查看HTTP请求的请求和响应结果

位置:选中测试计划/线程组->右键->添加->监听器->察看结果树

组成:

取样结果:查看响应信息头信息、响应状态码请求:查看请求相关信息(ur1、方法、参数)响应:查看响应信息

4.参数化

参数化测试:把测试数据组织起来,用不同的测试数据调用相同的测试方法。

本质:实现测试数据与测试方法的分离

使用方式:${}

JMeter中常见的参数化方式:

用户定义的变量——全局变量用户参数——为每个用户分配不同的参数值CSV Data Set Config——文件方式参数化函数——随机数据数据库——

用户定义的变量

用户参数

作用:针对同一组参数,当不同的用户来访问时,可以获取到不同的值

位置:测试计划 -->线程组–>前置处理器–> 用户参数

CSV Data Set Config

作用:让不同用户在多次循环时,可以取到不同的值

位置:测试计划 -->线程组–> 配置元件 --> CSv 数据文件设置

函数

使用方法:找到对应的函数,按照需求配置好,点击生成,然后复制到需要的地方

1.counter

计数函数,一般做执行次数统计使用

2.__CSVRead

作用:从CSV文件读取一个字符串

csv文件要求:字符串之间需要用“逗号”隔开。因为到时jmeter取值是取逗号之间的值

3.Random

作用:随机函数返回位于给定最小值和最大值之间的随机数,这是针对数值类型的(int)

4.RandomDate

作用:返回一个位于给定开始日期和结束日期值之间的随机日期

5.RandomString

作用:使用chars中的字符返回一个随机的String长度

6.__time

作用:以各种格式返回当前时间

1、如果参数为时间戳,那公式为: ${__time(,)} : 默认该公式精确到毫秒级别, 13位数 ${__time(/1000,)} : 该公式精确到秒级别, 10位数 2、 如果参数需要为当前日期,那公式为: ${__time(yyyy-MM-dd,)} ${__time(YMDHMS,)}

7.intSum

作用:可用于计算两个或更多整数值的总和

更多请参考这篇文章Jmeter-函数助手详解_jmeter function helper-CSDN博客

5.断言

断言:让程序自动判断预期结果和实际结果是否一致。

JMeter在请求的返回层面有个自动判断机制(响应状态码)。但是请求成功了,并不代表结果一定正确,因此需要检测机制提高测试准确性。

JMeter中常用断言:

响应断言JSON断言持续时间断言(Duration Assertion)

响应断言

JSON断言

上图第1,2,4必填,其余选填

持续时间断言

作用:检查HTTP请求的响应时间是否超出要求范围

6.关联

关联:当请求之间有依赖关系,比如一个请求的入参是另一个请求返回的数据,这时候就需要用到关联处理。

JMeter中常用的关联方法:

正则表达式提取器xPath提取器JSON提取器

正则表达式提取器

作用:针对任意格式的响应数据进行提取

XPath提取器

XPath Query:如果是标签用//+标签名

JSON提取器

作用:针对JSON格式的响应结果数据进行提取

根部是:$.