配置原件
1--CSV Data Set Config
用途
- 参数化测试:从CSV文件中读取数据,为每个请求提供不同的参数值。
- 数据驱动测试:使用外部数据文件来驱动测试,使测试更加灵活和可扩展。
配置步骤
-
准备CSV文件
-
创建一个CSV文件,每行代表一组测试数据。
-
例如,创建一个名为
test_data.csv
的文件,内容如下:username,password user1,pass1 user2,pass2 user3,pass3
-
-
添加CSV Data Set Config
- 右键点击线程组(Thread Group)。
- 选择"添加" -> "配置元件" -> "CSV Data Set Config"。
-
配置CSV Data Set Config
- 名称:给CSV Data Set Config一个有意义的名称。
- 文件名:指定CSV文件的路径(可以是绝对路径或相对路径)。
- 变量名:为CSV文件中的每一列指定一个变量名。这些变量名将在测试计划中使用。
- 分隔符:指定CSV文件中的分隔符,默认是逗号(,)。
- 忽略第一行:选择是否忽略CSV文件的第一行(通常是列标题)。
- 回收策略 :选择当数据集用尽时的行为。
True
:重新开始读取文件。False
:停止测试。
- 共享模式 :选择数据共享模式。
All threads
:所有线程共享同一个数据集。Current thread group
:当前线程组内的线程共享同一个数据集。Current thread
:每个线程都有自己独立的数据集。
示例配置
假设我们需要测试一个登录接口,使用CSV文件中的用户名和密码进行参数化。
-
创建CSV文件:
-
文件名:
test_data.csv
-
内容:
username,password user1,pass1 user2,pass2 user3,pass3
-
-
创建线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如"登录测试")。
-
添加CSV Data Set Config:
- 右键点击刚刚创建的线程组 -> 添加 -> 配置元件 -> CSV Data Set Config。
- 配置CSV Data Set Config:
- 名称:CSV Data Set Config
- 文件名:
test_data.csv
- 变量名:
username,password
- 分隔符:
,
- 忽略第一行:勾选
- 回收策略:
False
- 共享模式:
Current thread
-
添加HTTP请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 服务器名称或IP:目标服务器的地址。
- 端口号:目标服务器的端口。
- 协议:HTTP或HTTPS。
- 方法:POST(假设登录接口是POST请求)。
- 路径:登录接口的路径(例如
/login
)。 - 参数:
- 名称:
username
- 值:
${username}
- 名称:
password
- 值:
${password}
- 名称:
-
添加监听器:
- 右键点击线程组 -> 添加 -> 监听器 -> 查看结果树。
- 运行测试,查看结果。
优化建议
-
文件路径:
- 确保CSV文件的路径正确,可以使用相对路径以便于移植。
-
数据量:
- 如果CSV文件中的数据量很大,确保JMeter有足够的内存来处理这些数据。
-
数据共享:
- 根据测试需求选择合适的共享模式。对于需要每个线程独立数据的场景,选择
Current thread
模式。
- 根据测试需求选择合适的共享模式。对于需要每个线程独立数据的场景,选择
-
调试:
- 使用"查看结果树"监听器查看请求和响应的详细信息,确保变量被正确替换。
-
错误处理:
- 如果CSV文件中的数据格式不正确,可能会导致测试失败。确保CSV文件的格式正确,并在必要时添加错误处理逻辑。
2--HTTP信息头管理器
用途
- 设置请求头:为HTTP请求添加自定义的头信息。
- 保持一致性:确保所有相关的HTTP请求都包含相同的头信息。
- 模拟真实请求:许多Web应用依赖于特定的请求头信息,使用HTTP信息头管理器可以更真实地模拟用户请求。
配置步骤
-
添加HTTP信息头管理器
- 右键点击线程组(Thread Group)或特定的HTTP请求。
- 选择"添加" -> "配置元件" -> "HTTP信息头管理器"。
-
配置HTTP信息头管理器
- 名称:给HTTP信息头管理器一个有意义的名称。
- 添加头信息 :点击"添加"按钮,添加需要的头信息。
- 名称 :头信息的名称(例如
Content-Type
、Authorization
、Cookie
等)。 - 值 :头信息的值(例如
application/json
、Bearer <token>
、sessionid=12345
等)。
- 名称 :头信息的名称(例如
示例配置
假设我们需要测试一个需要认证的API,并且每个请求都需要包含特定的Authorization头和Content-Type头。
-
创建线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如"API测试")。
-
添加HTTP信息头管理器:
- 右键点击刚刚创建的线程组 -> 添加 -> 配置元件 -> HTTP信息头管理器。
- 配置HTTP信息头管理器:
- 名称:HTTP信息头管理器
- 添加头信息:
- 名称:
Authorization
- 值:
Bearer <your_token>
- 名称:
Content-Type
- 值:
application/json
- 名称:
-
添加HTTP请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 服务器名称或IP:目标服务器的地址。
- 端口号:目标服务器的端口。
- 协议:HTTP或HTTPS。
- 方法:GET、POST等。
- 路径:API的路径(例如
/api/v1/users
)。
-
添加监听器:
- 右键点击线程组 -> 添加 -> 监听器 -> 查看结果树。
- 运行测试,查看结果。
优化建议
-
避免重复配置:
- 如果多个HTTP请求需要相同的头信息,可以将HTTP信息头管理器添加到线程组级别,而不是每个请求单独配置。这样可以减少重复配置,提高维护的便利性。
-
动态头信息:
- 对于需要动态生成的头信息(例如Token),可以使用JMeter的变量或函数。例如,可以在头信息的值中使用
${token}
,然后在测试计划中定义token
变量。
- 对于需要动态生成的头信息(例如Token),可以使用JMeter的变量或函数。例如,可以在头信息的值中使用
-
调试和验证:
- 使用"查看结果树"监听器查看请求和响应的详细信息,确保头信息被正确添加。
- 可以使用"查看结果树"中的"请求"选项卡查看发送的请求头信息。
-
性能考虑:
- 尽量减少不必要的头信息,只添加必需的头信息,以减少请求的开销。
- 对于大型测试计划,确保头信息的配置不会导致性能瓶颈。
3--HTTP缓存管理器
用途
- 减少重复请求:避免多次请求相同的静态资源(如图片、CSS、JavaScript文件),从而减少网络流量和服务器负载。
- 提高测试效率:通过缓存机制,可以加快测试用例的执行速度,特别是在多次迭代测试中。
- 模拟真实用户行为:浏览器通常会缓存静态资源,使用HTTP缓存管理器可以使测试更接近真实用户的上网体验。
配置步骤
-
添加HTTP缓存管理器
- 右键点击线程组(Thread Group)或测试计划(Test Plan)。
- 选择"添加" -> "配置元件" -> "HTTP 缓存管理器"。
-
配置HTTP缓存管理器
- 名称:给HTTP缓存管理器一个有意义的名称。
- 清除每迭代的缓存 :选择是否在每次迭代开始时清空缓存。
True
:每次迭代开始时清空缓存。False
:不清空缓存,保持上一次迭代的缓存状态。
- 使用Expires字段 :选择是否使用HTTP响应中的Expires头来决定缓存的有效期。
True
:使用Expires头。False
:不使用Expires头。
- 最大缓存条目数:设置缓存的最大条目数。超过这个数量时,最早的缓存条目将被移除。
- 最大缓存大小:设置缓存的最大总大小(以字节为单位)。超过这个大小时,最早的缓存条目将被移除。
示例配置
假设我们需要测试一个Web应用程序,并希望模拟浏览器的缓存机制以减少不必要的网络请求。
-
创建线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如"缓存测试")。
-
添加HTTP缓存管理器:
- 右键点击刚刚创建的线程组 -> 添加 -> 配置元件 -> HTTP 缓存管理器。
- 配置HTTP缓存管理器:
- 名称:HTTP 缓存管理器
- 清除每迭代的缓存:False
- 使用Expires字段:True
- 最大缓存条目数:50
- 最大缓存大小:10000000(10MB)
-
添加HTTP请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 服务器名称或IP:目标服务器的地址。
- 端口号:目标服务器的端口。
- 协议:HTTP或HTTPS。
- 方法:GET(假设请求的是静态资源)。
- 路径:静态资源的路径(例如
/images/logo.png
)。
-
添加监听器:
- 右键点击线程组 -> 添加 -> 监听器 -> 查看结果树。
- 运行测试,查看结果。
注意事项
- 缓存策略:HTTP缓存管理器会根据HTTP响应头中的Cache-Control、Expires等字段来决定缓存的有效期。
- 缓存大小:合理设置最大缓存条目数和最大缓存大小,避免占用过多内存。
- 清除缓存:根据测试需求选择是否在每次迭代开始时清空缓存。如果不清空缓存,可以更好地模拟用户在多次访问同一页面时的行为。
4-- Http cookie管理器
用途
- 管理Cookie:自动处理和存储服务器返回的Cookie,并在后续请求中自动发送这些Cookie。
- 保持会话状态:确保多个请求之间的会话状态保持一致,特别是在需要登录或其他会话管理的情况下。
配置步骤
-
添加HTTP Cookie管理器
- 右键点击线程组(Thread Group)或测试计划(Test Plan)。
- 选择"添加" -> "配置元件" -> "HTTP Cookie Manager"。
-
配置HTTP Cookie管理器
- 名称:给HTTP Cookie管理器一个有意义的名称。
- Cookie策略 :选择处理Cookie的策略。常见的策略有:
default
:默认策略,适用于大多数情况。compatibility
:兼容旧版浏览器的行为。netscape
:遵循Netscape规范。rfc2109
:遵循RFC 2109规范。rfc2965
:遵循RFC 2965规范。ignore
:忽略所有Cookie。
- 共享Cookie :选择是否在多个用户线程之间共享Cookie。
True
:所有线程共享同一个Cookie池。False
:每个线程有自己的独立Cookie池。
- 预定义Cookie :手动添加预定义的Cookie。这对于某些需要初始Cookie的测试场景非常有用。
- 名称:Cookie的名称。
- 值:Cookie的值。
- 域名:Cookie的域名。
- 路径:Cookie的路径。
- 注释:可选的注释信息。
- 过期时间:Cookie的过期时间(可选)。
- 安全:是否标记为安全Cookie(仅通过HTTPS传输)。
示例配置
假设我们需要测试一个需要登录的Web应用程序,并且希望JMeter能够自动管理Cookie以保持会话状态。
-
创建线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如"登录测试")。
-
添加HTTP Cookie管理器:
- 右键点击刚刚创建的线程组 -> 添加 -> 配置元件 -> HTTP Cookie Manager。
- 配置HTTP Cookie管理器:
- 名称:HTTP Cookie Manager
- Cookie策略:default
- 共享Cookie:False
- 预定义Cookie:(如果需要)
-
添加HTTP请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 服务器名称或IP:目标服务器的地址。
- 端口号:目标服务器的端口。
- 协议:HTTP或HTTPS。
- 方法:POST(假设登录接口是POST请求)。
- 路径:登录接口的路径(例如
/login
)。 - 参数:添加登录所需的参数(例如
username
和password
)。
-
添加监听器:
- 右键点击线程组 -> 添加 -> 监听器 -> 查看结果树。
- 运行测试,查看结果。
注意事项
- Cookie生命周期:HTTP Cookie管理器会根据服务器返回的Set-Cookie头自动管理Cookie的生命周期。
- 安全Cookie:如果服务器返回的Cookie标记为安全(Secure),则只有在HTTPS请求中才会发送该Cookie。
- 跨域Cookie:HTTP Cookie管理器会自动处理跨域Cookie,但需要确保域名和路径匹配。