第二部分 进阶篇(本篇包含3-6共四章)
第3章 JMeter参数化技术
3.1 参数化概述
3.1.1 数据驱动测试
数据驱动测试通过将测试数据与测试脚本分离,使用不同的数据多次执行同一测试脚本,提升测试覆盖率和有效性。
这种方法特别适用于需要大量不同输入数据来验证的场景,如登录功能测试,可以通过多组用户名和密码数据来测试登录的正确性,发现特殊字符或边界值情况下的登录错误。
3.1.2 参数化及其类型
参数化是测试中用变量代替固定值的过程,变量在测试运行时可赋予不同值。类型包括:
-
用户自定义参数:手动在测试工具中定义。
-
外部数据文件参数:从CSV、Excel等文件中读取。
-
数据库参数:从数据库中获取。
-
内置函数参数:使用测试工具内置函数生成。
3.1.3 参数化实现步骤
-
确定参数化目标:明确需要参数化的部分。
-
选择参数化数据源:选择合适的数据源。
-
配置参数化:在JMeter中配置参数化设置。
-
引用参数化变量:在测试脚本中引用变量。
3.1.4 数据生成工具
-
Faker:Python库,生成虚假数据。
from faker import Faker fake = Faker() print(fake.name()) # 虚假姓名 print(fake.address()) # 虚假地址
-
DataFactory:创建复杂数据结构和关系数据。
3.1.5 JMeter中常用的参数化方式
-
用户参数:适用于简单少量数据。
-
CSV Data Set Config:适用于大规模CSV数据。
-
内置函数:生成动态数据,如随机数。
-
数据库参数化:从数据库获取数据。
3.2 用户参数参数化与用户自定义变量参数化
3.2.1 用户参数参数化
在JMeter中添加“用户参数”元件,定义参数名称和值列表,引用参数名。
添加 "用户参数" 元件 -> 定义参数名称和值列表 -> 引用参数名
3.2.2 用户自定义变量参数化
在JMeter中添加“用户定义的变量”元件,定义变量名和初始值,引用变量名。
定义变量名和初始值 -> 引用变量名
3.3 CSV Data Set Config参数化
3.3.1 添加CSV Data Set Config
右键点击线程组,添加“CSV Data Set Config”元件。
3.3.2 配置CSV Data Set Config
配置文件名、变量名、分隔符等参数。
文件名: data.csv 变量名: username, password 分隔符: ,
3.3.3 遍历参数值
根据共享模式确定线程对CSV文件数据的访问方式,并使用循环控制器控制遍历次数。
3.3.4 CSV Data Set Config参数化案例
CSV文件 product.csv
:
product_name,price_range
iPhone 14,5000-6000
Samsung Galaxy S23,4000-5000
Xiaomi Mi 13,3000-4000
在JMeter中配置:
文件名: product.csv
变量名: product_name, price_range
分隔符: ,
3.4 内置函数参数化
3.4.1 参数化相关的内置函数
Random():生成随机数。${__Random(10, 20)}
CSVRead():从CSV文件中读取数据。${__CSVRead("data.csv", 1)}
Time():获取当前时间相关信息。${__Time(yyyy-MM-dd HH:mm:ss)}
3.4.2 内置函数参数化案例
生成随机用户名和密码:
${__concat("user_", __Random(10000, 99999))} ${__RandomString(8, 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ)}
生成带时间戳的更新记录:
{"data": "new_value", "update_time": "${__Time(yyyy-MM-dd HH:mm:ss)}"}
3.5 数据库参数化
3.5.1 JDBC Request
配置数据库连接信息,并在JDBC Request中设置SQL查询语句。
3.5.2 使用单线程遍历参数值
设置变量存储每行数据的字段值,并使用循环控制器遍历参数值。
3.5.3 使用多线程遍历参数值
考虑线程安全问题,使用线程局部变量,并结合同步定时器控制数据库数据访问频率。
3.6 小结
参数化技术在性能测试和脚本开发中非常重要,不同参数化方式有各自的适用场景和优缺点。选择合适的参数化方式可以提高测试效率和效果。
第4章 JMeter断言技术
4.1 断言概述
4.1.1 断言的基本概念和作用
断言是测试过程中验证结果是否符合预期的一种机制,断言用于验证测试结果的正确性,确保响应满足预期的标准。
在JMeter中,断言用来检查请求的响应结果是否与测试计划中设定的预期值相匹配,是确保测试有效性和可靠性的关键步骤。
4.1.2 JMeter中常用的断言
-
响应断言:验证响应内容 是否包含特定的文本或匹配正则表达式。
-
JSON断言:验证JSON响应 结构和内容是否符合预期。
-
大小断言:验证响应大小 是否在指定范围内。
-
持续时间断言:验证请求的响应时间 是否在设定的阈值内。
4.2 响应断言
4.2.1 添加响应断言
在需要验证的请求或监听器后添加“响应断言”元件,以检查响应文本。
4.2.2 配置响应断言
配置断言属性,如预期响应文本、忽略大小写、匹配模式等。
添加响应断言 -> 设置预期响应内容和匹配规则
4.2.3 响应断言案例
验证登录响应是否包含“成功”字样,确保登录功能正常。
添加响应断言 -> 设置预期响应内容为"成功"
4.3 JSON断言
4.3.1 JSON与JSON Path
JSON Path用于从JSON文档中提取数据。JSON Path是一种查询语言,用于从JSON文档中提取数据,类似于XML Path Language(XPath)
4.3.2 添加JSON断言
在需要验证JSON响应的请求后添加“JSON断言”元件,以验证JSON结构和数据。
4.3.3 配置JSON断言
配置JSON Path表达式和预期结果,确保JSON响应的结构和内容符合预期。
添加JSON断言 -> 设置JSON Path表达式和预期结果
4.3.4 JSON断言案例
验证用户信息JSON响应中的用户名是否为“expectedUsername”。
添加JSON断言 -> 设置JSON Path为"$.username",预期结果为"expectedUsername"
4.4 大小断言
4.4.1 添加大小断言
在需要验证响应大小的请求后添加“大小断言”元件,以确保响应内容不超过预期大小。
4.4.2 配置大小断言
配置预期的响应大小阈值,可以是最大值或最小值。
添加大小断言 -> 设置预期响应大小
4.4.3 大小断言案例
确保图片文件的响应大小不超过500KB。
添加大小断言 -> 设置最大响应大小为500000字节
4.5 持续时间断言
4.5.1 添加持续时间断言
在需要验证响应时间的请求后添加“持续时间断言”元件,以确保请求在预期时间内得到响应。
4.5.2 配置持续时间断言
配置预期的响应时间阈值,通常用于性能测试中。
添加持续时间断言 -> 设置最大响应时间为3000毫秒
4.5.3 持续时间断言案例
确保请求的响应时间不超过3秒,符合性能要求。
添加持续时间断言 -> 设置最大响应时间为3000毫秒
4.6 小结
断言是验证测试结果的关键步骤,不同类型的断言帮助确保测试的准确性和可靠性。
第5章 JMeter关联技术
5.1 关联概述
5.1.1 关联的基本概念和作用
关联技术允许从一个请求的响应中提取数据,并将其用作后续请求的参数或变量,实现测试步骤之间的数据传递和依赖关系。
5.1.2 JMeter中常用的关联方式
-
正则表达式提取器:使用正则表达式从响应中提取数据。
-
JSON提取器:专门用于从JSON格式的响应中提取数据。
-
CSS Selector提取器:使用CSS选择器从HTML响应中提取数据。
5.2 正则表达式提取器关联
5.2.1 添加正则表达式提取器
在需要提取数据的请求后添加“正则表达式提取器”元件,用于捕获响应中的特定数据。
5.2.2 配置正则表达式提取器
配置正则表达式和提取的数据变量,指定匹配模式和变量名。
添加正则表达式提取器 -> 设置正则表达式和变量名
5.2.3 正则表达式提取器关联案例
从登录响应中提取token,用于后续的认证请求。
添加正则表达式提取器 -> 设置正则表达式匹配token值,变量名为"token"
5.3 JSON提取器关联
5.3.1 添加JSON提取器
在需要提取JSON数据的请求后添加“JSON提取器”元件,用于解析JSON格式的响应数据。
5.3.2 配置JSON提取器
配置JSON Path表达式和提取的数据变量,指定JSON路径和变量名。
添加JSON提取器 -> 设置JSON Path表达式和变量名
5.3.3 JSON提取器关联案例
从用户信息响应中提取用户名,用于个性化展示。
添加JSON提取器 -> 设置JSON Path为"$.username",变量名为"username"
5.4 CSS Selector提取器关联
5.4.1 添加CSS Selector提取器
在需要提取CSS选择器数据的请求后添加“CSS Selector提取器”元件,用于从HTML中提取数据。
5.4.2 配置CSS Selector提取器
配置CSS选择器和提取的数据变量,指定CSS选择器和变量名。
添加CSS Selector提取器 -> 设置CSS选择器和变量名
5.4.3 CSS Selector提取器关联案例
从页面中提取链接地址,用于后续的导航或测试。
添加CSS Selector提取器 -> 设置CSS选择器匹配链接,变量名为"link"
5.5 跨线程组关联
5.5.1 JMeter属性与变量
了解JMeter属性和变量的使用,实现跨线程组的数据传递。
5.5.2 跨线程组传递数据的方式
使用JMeter属性和变量在不同线程组间传递数据,实现复杂的测试场景。
5.5.3 跨线程组关联案例
在一个线程组中提取数据,在另一个线程组中使用该数据。
线程组1:提取数据到变量
线程组2:使用变量作为参数
5.6 小结
关联技术是实现复杂测试场景的关键,允许测试数据在请求间传递,构建动态和数据驱动的测试用例。通过使用不同的提取器,可以灵活地从各种格式的响应中提取所需的数据,用用于后续的测试步骤。
第6章 JMeter脚本调试技术
6.1 脚本调试概述
调试是测试过程中确保测试脚本按预期执行并识别问题的重要步骤。在JMeter中,调试可以帮助开发者理解脚本的行为,定位错误和性能瓶颈,确保测试结果的准确性和可靠性。
6.2 Debug Sampler
6.2.1 Debug Sampler简介
Debug Sampler允许在测试执行过程中暂停,检查变量值和响应数据。
Debug Sampler是应该JMeter元件,它允许测试在执行到该元件时暂停,从而可以检查此时的变量值、属性和响应数据。
6.2.2 使用Debug Sampler调试脚本
在测试计划中 需要检查的请求后面 添加Debug Sampler,执行测试时暂停并允许用户检查和修改变量值。
添加Debug Sampler -> 执行测试 -> 暂停检查变量和响应
6.3 查看结果树
6.3.1 查看结果树简介
查看结果树允许查看请求的响应数据,用于调试和验证。查看结果树是一个监听器,它显示请求和响应的详细信息,包括请求数据、响应数据和时间戳等。它是调试和验证测试结果的常用工具,能够帮助用户快速识别问题。
6.3.2 使用查看结果树调试脚本
在测试计划中添加查看结果树监听器,执行测试后查看每个请求的响应数据,帮助分析和调试。
添加查看结果树 -> 执行测试 -> 查看响应数据
6.4 日志查看器
6.4.1 配置日志级别与路径
JMeter的日志文件记录了测试执行过程中的详细信息。通过配置日志级别和路径,可以控制日志的详细程度和存储位置,以便于后续的问题诊断和分析。
6.4.2 在日志查看器中查看日志
JMeter生成的日志文件可以在日志查看器中查看,这些日志对于分析测试执行中的问题非常有用。用户可以根据日志信息快速定位问题。
6.4.3 用户自定义日志
在脚本中添加自定义日志记录,可以帮助记录测试过程中的关键信息,方便后续的问题排查和性能分析。
log.info("Custom log message");
6.5 小结
调试技术是JMeter中不可或缺的一部分,通过提供详细的执行信息和交互式检查点,帮助开发者理解和修正测试脚本中的问题,确保测试的准确性和有效性。
通过使用 Debug Sampler 、查看结果树和日志查看器,可以有效地对 测试脚本进行 调试和 优化,提升测试的整体质量。
整理不易,诚望各位看官点赞 收藏 评论 予以支持,这将成为我持续更新的动力源泉。若您在阅览时存有异议或建议,敬请留言指正批评,让我们携手共同学习,共同进取,吾辈自当相互勉励!