2023最新jmeter接口测试入门到精通实战讲解,手把手教学

本文详细介绍了JMeter接口测试的入门步骤,包括线程组的设置、HTTP请求、HTTP响应、查看结果树、断言和参数化。重点讲解了线程组的配置,如线程数、加速时间、保持目标速率时间等,并演示了如何使用CSV数据进行参数化。此外,还提到了不同类型的线程组,如原生线程组和可拓展线程组,以及如何利用它们模拟复杂场景。最后,文章介绍了HTTP信息头管理器和断言的使用,帮助读者全面掌握JMeter接口测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、线程组

线程组元件是任何一个测试计划的开始点。在一个测试计划中的所有元件都必须在某个线程组下。所有的任务都是基于线程组:

通俗理解:

· 线程组:就是一个线程组,里面有若干个请求;

· 线程:一个线程就是一个“虚拟用户”;

· 请求:一个线程组里面有若干个请求。

对应关系:

例如:1个线程组里面有10个请求,线程数为10个,跑完后得到:

理解为:(10个线程数)10个人,每个人都要跑这10个请求,所以:10*10=100:

并发数:100;线程数:10;

PS:线程组也可以看作是一个虚拟用户组。线程组中的每一个线程都可以理解为一个虚拟用户。

二、线程组设置:

我们把线程组的设置分成3个区域:

区域一:在采样器失败后怎么处理(LoadRunner里面也有类似的运行设置选项,对比去学习):

1、continue:继续执行接下来的操作;

2、Start Next Thread Loop:开始下一次循环;

3、stop Thread:停止线程,退出该线程(不再执行此线程的操作);

4、stop Test:等待当前执行的采样器结束后,结束整个测试;

5、Stop Test Now:马上停止测试;

区域二:线程属性:

1、Number of Threads(users):线程数,相当于模拟的用户数量;

2、Ramp-up Period(in seconds):达到指定线程需要的时间,例如线程数为100,时间设定为10s,那么就是10s加载 100个线程,每秒启动的线程数=100/10=10;

3、Loop Count:如果填具体的数值,就是循环对应的次数;如果选择“Forever”,则一直执行下去,直到手动停止;

4、Delay Thread creation until needed:延迟线程创建,直到需要才创建。

区域三:调度器配置:

需要选中调度器(scheduler),调度器配置才生效。

【实例】现用一个普通的线程组测试一个简单的http接口测试,测试前添加设置下线程组及其他元件:

第一步:添加一个线程组,添加后选择采样器因接口、报文或外部等原因导致接口执行错误后的一个后置行为,对于各个选项多选一,目前我选择接口执行错误后让其继续执行。

第二步:因为非性能测试所以线程组设置1即可,即是单个“虚拟用户”。

第三步:关于调度器配置不同版本的Jmeter会有不同的改动,目前Jmeter版本V5.1.1调度器配置在原有的基础上容易理解和执行,使用调度器器之前需“开启”调取度按钮(点击打勾即可),按照功能提示选择接口的启动延迟时间和持续时间。注意:使用调度器后中间循环次数则作废。

第四步:添加http请求并设置域名、路径等并填入请求报文;(添加路径:线程组→添加→取样器→HTTP请求)

第五步:添加HTTP信息头管理器,用于存储request的head部分,并写入对应接口的request的head部分:(添加路劲:线程组→添加→配置原件→HTTP信息头管理器)

最后就可以添加察看结果树,然后点击运行就可以看到结果了!(添加路径:线程组→添加→监听器→察看结果树)

三、线程组分类:

从系统的角度来看,Jmeter的线程组主要分为系统原生线程组和可拓展线程组。原生线程组配合调度器、定时器、前后置处理器和逻辑控制器等等已经可以满足大部分测试的需求,但是若要求多维度来设计用户并发数,原生线程组已经不能满足需求。此时,我们可以新增插件的线程组使其更加强大,可自定义设置多种场景等功能,可以更加接近真实用户的使用场景。

(一)原生线程组

1、thread group(线程组):

这个就是我们通常添加运行的线程。通俗来讲一个线程组,可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。上文所介绍使用的例子就是此线程组。

2、setup thread group(设置线程组):

一种特殊类型的ThreadGroup的,可用于执行预测试操作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试前进行定期线程组的执行;类似LoadRunner的init,测试开始时进行初始化的工作。

不同的是执行顺序---它会在普通线程组执行之前被触发。

应用场景举例:

A、测试数据库操作功能时,用于执行打开数据库连接的操作。

B、测试用户购物功能时,用于执行用户的注册、登录等操作。

3、teardown thread group(拆线组):

一种特殊类型的ThreadGroup的,可用于执行测试后动作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试结束后执行定期的线程组;类似LoadRunnner的end,测试结束时进行回收工作。

不同的是执行顺序---它会在普通线程组执行之后被触发。

应用场景举例:

A、测试数据库操作功能时,用于执行关闭数据库连接的操作。

B、测试用户购物功能时,用于执行用户的退出等操作。

(二)可拓展线程组

1、Concurrency Thread Group(递增式并发线程组)

这个可以模仿递增式并发(只能递增不能递减),并可设置递增次数、递增时长、到达目标递增数量保持时长等等:

参数解释:

· Target Concurrency:目标并发(总线程数)

· Ramp Up Time:加速时间(总加速时长)

· Ramp-Up Steps Count:加速步骤计数(总加速/递增次数)

· Hold Target Rate Time:保持目标速率时间(到达总线程数后持续时长)

· Time Unit:时间单位(分钟或者秒)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值