LR如何录制JSON格式请求:完整指南与实战技巧
在当今的API测试领域,JSON(JavaScript Object Notation)因其轻量级、易读性和灵活性,已成为数据交换的主流格式,使用LoadRunner进行性能测试时,能够准确录制和回放JSON格式的请求至关重要,本文将详细介绍如何使用LoadRunner(以LR 11/12及最新版为例)成功录制JSON格式的请求,并分享一些实用技巧。
准备工作:确保环境与配置就绪
在开始录制之前,请确保以下条件满足:
- LoadRunner安装:已正确安装LoadRunner Controller和VuGen(虚拟用户生成器)。
- 浏览器代理设置:确保浏览器的代理服务器已配置为LoadRunner的录制定理(通常为127.0.0.1:8080),在VuGen的“Recording Options” -> “Advanced” -> “Proxy”中可以查看和设置。
- 目标应用:明确需要测试的Web API或应用,并了解其JSON请求的基本结构。
- HTTPS录制(如需):如果应用使用HTTPS协议,需要在“Recording Options” -> “SSL”中配置SSL证书解密,并安装LoadRunner的根证书。
创建脚本并配置录制选项
- 新建脚本:打开VuGen,选择“Protocol”为“Web - HTTP/HTML”,然后创建一个新的脚本。
- 录制选项设置:
- 在VuGen菜单栏选择“Recording” -> “Recording Options”。
- General标签页:
- 在“Recording type”中,根据需求选择“Based on URLs”或“Based on Previous Recording”,对于API录制,“Based on URLs”有时更精准。
- 确保“Record into Action”选择合适的Action(如vuser_init或action)。
- Advanced标签页:
- Proxy:确认代理地址和端口正确,并勾选“Show advanced proxy options”。
- 在“Filter”中,可以设置只录制特定URL模式,减少无关请求。
- Support for protocols:确保“JavaScript (JS)”、“AJAX”等选项被勾选,因为JSON请求常通过AJAX异步发送。
- Correlation标签页:
可以提前勾选“Enable correlation during recording”,帮助后续处理动态值。
- Body标签页(关键):
- 确保“Record the body of the request”被勾选,这是捕获JSON请求体的关键。
- 可以选择“Record body as a binary file”或“Record body as text”,对于JSON,通常选择“Record body as text”更便于查看和编辑。
- SSL标签页(如录制HTTPS):
- 勾选“Support for HTTPS and SSL protocols”。
- 点击“Certificate”按钮,安装LoadRunner的根证书到浏览器信任的根证书颁发机构。
开始录制JSON请求
- 启动录制:在VuGen工具栏点击“Start Recording”按钮。
- 浏览器操作:会自动打开默认浏览器(或指定浏览器),此时浏览器流量将通过LoadRunner代理。
- 触发JSON请求:在浏览器中执行需要录制JSON请求的操作。
- 登录一个使用JSON进行数据交互的网站。
- 提交一个包含JSON数据的表单。
- 调用某个RESTful API的接口(通过浏览器插件或直接在地址栏测试,注意CORS限制)。
- 监控录制过程:在VuGen的“Recording Proxy”窗口,可以实时查看捕获到的请求,寻找
Content-Type: application/json的请求,以及包含JSON数据的请求体(通常在POST、PUT、PATCH方法的Body中)。
录制结果查看与JSON请求识别
录制完成后,停止录制,在脚本视图中,您会看到一系列被录制下来的HTTP请求。
-
查找JSON请求:
- 在“Tree”或“HTML”视图中,浏览请求列表。
- 重点关注
Method为POST、PUT、PATCH,且Content-Type头部为application/json的请求。 - 选中该请求,在“Body”标签页下,您将看到录制的JSON数据。
{ "username": "testuser", "password": "testpass123", "email": "test@example.com" }
-
请求结构分析:
- URL:请求的目标地址。
- Headers:包含
Content-Type: application/json以及其他必要的头部信息(如Authorization、Accept等)。 - Body:即JSON格式的请求数据,确保数据完整且格式正确。
常见问题与解决方案
-
JSON请求未被录制或录制不完整:
- 检查代理设置:确保浏览器代理正确指向LR,且LR代理服务正常启动。
- 检查Body录制选项:确认“Recording Options” -> “Body”中“Record the body of the request”已勾选。
- 检查Content-Type:确保服务器期望的请求确实是
application/json,且浏览器发送了正确的Content-Type。 - AJAX请求:某些AJAX请求可能通过JavaScript动态构建,确保LR的AJAX录制选项已开启。
-
JSON数据中包含动态值(如Session ID、Token):
- 关联(Correlation):这是LR的核心功能,在录制结果中找到动态值,使用VuGen的“Correlation”工具自动或手动创建关联,将硬编码的动态值替换为
web_reg_save_param等函数提取的值。 - JSON响应中有一个
"session_id": "abc123def456",后续请求需要这个ID,就需要将其关联。
- 关联(Correlation):这是LR的核心功能,在录制结果中找到动态值,使用VuGen的“Correlation”工具自动或手动创建关联,将硬编码的动态值替换为
-
JSON数据格式复杂,包含嵌套对象或数组:
- LR会原样录制JSON数据,在参数化或修改时,注意保持JSON格式的正确性(如引号、逗号、大括号等)。
- 可以使用LR的“Parameterize”功能对JSON中的特定字段进行参数化,例如用户名、密码等。
-
HTTPS请求录制失败或内容乱码:
- SSL证书问题:确保已在浏览器中正确安装了LR的根证书,并在录制选项中启用了SSL解密。
- 证书不信任:检查浏览器是否信任安装的LR证书。
实战技巧与最佳实践
- 精简录制:尽量只录制与测试目标相关的请求,避免无关请求干扰脚本分析,可以通过录制过滤器实现。
- 手动构造JSON请求:对于某些复杂的或无法直接通过浏览器触发的JSON API请求,可以在录制完成后,在脚本中手动使用
web_custom_request函数构造请求,这需要您熟悉HTTP请求结构和JSON格式。- 示例:
web_custom_request("my_json_request", "URL=http://example.com/api/users", "Method=POST", "Resource=0", "RecContentType=application/json", "EncType=application/json", "Body={\"name\":\"John Doe\", \"age\":30, \"city\":\"New York\"}", LAST);
- 示例:
- 参数化与数据驱动:对JSON中的可变字段(如查询参数、请求体中的数据)进行参数化,使用CSV文件或数据库等数据源,实现不同虚拟用户使用不同数据,更真实地模拟用户行为。
- 验证JSON响应:在脚本中添加对JSON响应的验证,例如检查响应状态码、特定的响应字段值等,确保业务逻辑的正确性,可以使用
web_reg_find或JSON相关的扩展函数(需结合LR插件或自定义开发)。 - 错误处理:为脚本添加适当的错误处理机制,当请求失败或返回非预期状态码时,能够进行日志记录或重试等操作。
成功录制JSON格式的请求是使用LoadRunner进行API性能测试的基础,通过正确配置录制选项、理解请求结构,并关联、参数化等关键技术,您可以有效地捕获和模拟复杂的JSON API交互,随着RESTful API的普及,熟练LR对JSON的支持,将极大提升您进行性能测试的效率和准确性,不断实践和总结,您将能够更从容地应对各种测试场景。



还没有评论,来说两句吧...