2025年版-JMeter基础元件详解(1)
认识JMeter
一、JMeter是什么
1) JMeter是Apache组织开发的一款基于Java的开源压力测试工具,它最初主要用于Web应用测试,凭借其强大的功能和不断拓展的特性,如今已广泛应用于多种测试领域,包括但不限于接口测试、数据库测试、FTP服务器测试等。它为开发者和测试人员提供了一个高效、灵活的性能测试平台。
2)JMeter能做什么
1. 压力测试:通过模拟大量用户并发访问,测试系统在高负载情况下的性能表现,评估系统的响应时间、吞吐量、资源利用率等关键指标,帮助发现系统在压力下可能出现的瓶颈和问题。例如,对于一个电商网站,可模拟在促销活动期间大量用户同时访问商品页面、下单支付等操作,检测系统能否稳定运行。
2. 接口测试:支持对HTTP、HTTPS等各类接口进行测试,能够方便地构造请求参数、设置请求头,发送请求并验证响应结果。可以对一个RESTful API进行接口测试,验证接口返回的数据格式、数据内容是否正确。
3. 功能测试:借助Badboy等工具录制测试脚本,快速生成测试用例,对软件的功能进行验证。例如,录制用户在一个在线办公软件中的登录、创建文档、保存文档等操作,检查软件功能是否正常。
4. 回归测试:利用插件架构的优势,方便地进行功能和接口的回归测试,确保软件在后续开发和维护过程中,原有功能的稳定性和正确性。当软件进行了一次版本更新后,使用JMeter执行回归测试,检查是否引入了新的问题。
3)JMeter的优势
1. 可移植性:100%基于Java开发,这使得JMeter可以在各种主流操作系统上运行,包括Windows、Linux、Mac OS等,无需担心系统兼容性问题,为不同开发和测试环境的用户提供了便利。
2. 多线程:其框架允许通过多个线程并发取样,并且可以通过单独的线程组对不同的功能同时进行取样。在测试一个包含多个功能模块的系统时,可以使用不同的线程组分别模拟用户对各个模块的操作,更真实地模拟实际用户行为,提高测试的准确性。
3. 扩展性:能够自动扫描其lib/ext子目录下的.jar文件中的插件,并将其装载到内存,用户可以通过不同的菜单轻松调用这些插件。这一特性使得JMeter能够不断扩展自身功能,满足日益复杂的测试需求,如通过插件实现对特定协议的支持、生成更丰富的测试报告等。
4. 分布式机制:支持使用多台机器同时产生负载的机制,在进行大规模性能测试时,可以充分利用多台计算机的资源,模拟出更接近真实场景的高并发情况,准确评估系统在高负载下的性能表现。
二、JMeter基础元件详解
1)取样器
什么是取样器
1. 取样器是JMeter中用于发送请求的元件,它是整个测试过程的核心部分,类似于自动化测试中的业务测试语句,负责向目标服务器发送各种类型的请求,如HTTP请求、FTP请求、JDBC请求等,以模拟用户对系统的操作。
2)常见取样器类型及应用场景
1. HTTP请求:用于测试Web应用的HTTP接口,是最常用的取样器之一。在测试一个网页的登录功能时,可使用HTTP请求取样器构造登录请求,发送用户名和密码等参数,验证登录功能是否正常。
2. FTP请求:用于对FTP服务器进行性能和功能测试,比如测试文件上传、下载的速度和稳定性,检查服务器对不同文件类型和大小的处理能力。
3. JDBC请求:针对数据库进行测试,可执行SQL语句,查询、插入、更新和删除数据,验证数据库的响应时间和数据操作的正确性,适用于测试与数据库交互频繁的应用系统。
3)前置处理器
前置处理器的功能
1. 前置处理器主要用于对发送的请求参数进行预处理,类似于自动化测试中的参数化操作。它可以在请求发送之前,对请求参数进行动态修改、替换、生成等操作,使测试数据更加灵活多样,满足不同的测试需求。
常见前置处理器及应用
1. 用户参数:允许定义一组用户参数,在测试过程中可以从这组参数中随机或按顺序取值,用于替换请求中的参数,实现参数化测试。在测试一个用户注册功能时,可以使用用户参数前置处理器,从预先定义的多个用户名和密码组合中随机取值,模拟不同用户的注册操作。
2. 随机变量:生成随机数或随机字符串,用于填充请求参数。在测试一个需要生成唯一订单号的功能时,可使用随机变量前置处理器生成随机的订单号,确保每次测试的订单号都不同。
4)后置处理器
后置处理器的用途
1. 后置处理器用于对收到的响应数据进行处理,类似于自动化测试中获取测试结果的操作。它可以从响应数据中提取有用的信息,如响应头、响应体中的特定字段,将这些信息保存下来供后续请求使用,或者对响应数据进行解析、转换等操作。
常见后置处理器及使用方法
1. 正则表达式提取器:通过正则表达式从响应数据中提取符合规则的字符串。在测试一个包含用户信息的接口时,可以使用正则表达式提取器从响应体中提取用户ID,用于后续的接口请求,实现接口之间的数据关联。
2. JSON提取器:专门用于从JSON格式的响应数据中提取特定的JSON路径下的值。在测试一个返回JSON数据的API时,可使用JSON提取器提取其中的某个字段,如商品价格、库存数量等,进行进一步的处理和验证。
5)断言
断言的概念
1. 断言是用于对接口返回结果进行判断的元件,通过设置断言条件,可以验证接口返回的数据是否符合预期,判断测试是否通过。它是确保测试准确性和有效性的重要手段,能够及时发现接口返回结果中的错误和异常情况。
常见断言类型及断言条件设置
1. 响应断言:可以针对响应数据的内容、状态码、响应头、响应时间等进行断言。设置响应断言,检查接口返回的状态码是否为200,表示请求成功;或者检查响应体中是否包含特定的字符串,验证接口返回的数据是否正确。
2. JSON断言:专门针对JSON格式的响应数据进行断言,可验证JSON数据的结构、字段值等是否符合预期。在测试一个返回JSON数据的API时,使用JSON断言检查其中某个字段的值是否在指定的范围内,或者检查JSON数据的层级结构是否正确。
6)定时器
定时器的作用
1. 定时器用于设置等待时间,类似于自动化测试中的sleep语句。它可以在请求之间或元件执行之间插入一定的延迟时间,模拟用户在实际操作中的停顿,使测试场景更加真实,避免因为请求过于频繁而导致测试结果不准确。
常见定时器及应用场景
1. 固定定时器:设置一个固定的等待时间,在每个请求或元件执行之后等待指定的毫秒数。在测试一个需要模拟用户正常浏览页面速度的场景时,可在每个HTTP请求之间添加固定定时器,设置适当的等待时间,模拟用户阅读页面内容的时间。
2. 高斯随机定时器:根据高斯分布(正态分布)生成一个随机的等待时间,其平均值和标准差可以自定义。这种定时器适用于需要模拟更加真实的用户操作时间分布的场景,因为用户的操作时间往往不是固定的,而是呈现一定的随机性。
7)测试片段
测试片段的定义
1. 测试片段是一种特殊的元件,它可以将一部分脚本封装起来,供其他脚本调用,类似于自动化测试中封装的函数。通过使用测试片段,可以提高测试脚本的复用性和可维护性,避免重复编写相同的测试代码。
如何使用测试片段提高脚本复用性
1. 当有多个测试场景都需要执行相同的一组操作时,可将这组操作封装在一个测试片段中。在测试一个电商系统时,登录操作在多个测试场景中都需要用到,可将登录相关的请求和逻辑封装成一个测试片段,在其他测试场景中直接调用该测试片段,而无需重复编写登录代码。
8)配置元件
配置元件的功能
1. 配置元件主要用于测试前的环境及数据配置,类似于自动化测试中的初始化动作。它可以设置各种测试相关的参数,如HTTP请求的默认协议、域名、端口,数据库连接信息,用户自定义变量等,为测试提供必要的环境和数据支持。
常见配置元件及配置示例
1. HTTP请求默认值:设置HTTP请求的默认参数,如协议(HTTP或HTTPS)、服务器名称或IP地址、端口号、路径等。在测试一个Web应用的多个HTTP接口时,可使用HTTP请求默认值配置元件,设置通用的服务器信息,这样在每个HTTP请求取样器中就无需重复填写这些基本信息,简化测试脚本的编写。
2. 用户定义的变量:定义用户自定义变量,并为其赋值。这些变量可以在整个测试计划中使用,方便在不同的元件之间传递数据,或者根据不同的测试场景动态修改测试数据。在测试一个需要根据不同用户角色进行操作的系统时,可使用用户定义的变量定义不同的用户名和密码,在测试过程中根据需要切换用户角色。
9)监听器
监听器的用途
1. 监听器用于查看测试的结果,类似于自动化测试中的日志和报告。它可以以各种形式展示测试结果,如查看结果树、聚合报告、图形结果等,帮助测试人员直观地了解测试过程中的各项指标和数据,分析测试结果,找出系统存在的问题。
常见监听器及结果查看方式
1. 查看结果树:以树状结构展示每个请求的详细信息,包括请求数据、响应数据、响应时间、响应状态等。通过查看结果树,测试人员可以逐一对每个请求的结果进行检查,详细了解测试过程中发生的情况,便于发现问题和进行调试。
2. 聚合报告:提供了一系列统计指标,如平均响应时间、中位数响应时间、90%响应时间、最小响应时间、最大响应时间、错误率、吞吐量等,以表格形式呈现,方便对测试结果进行整体分析和评估系统性能。

浙公网安备 33010602011771号