LoadRunner的脚本调试是性能测试中很重要的一步,一个稳定可靠的脚本是后续场景设计和性能分析的基础。
掌握主要调试功能
在LoadRunner的VuGen中,主要通过以下方式进行脚本调试:
设置断点
作用:让脚本在指定位置暂停,以便观察此时的变量、参数或系统状态。
操作:在脚本行号左侧右键,选择"Toggle Breakpoint"(或使用快捷键F9)。脚本运行到此处会暂停,方便你检查上下文环境。
单步执行
作用:让脚本一行一行地执行,精细跟踪执行流程和数据变化。
操作:设置断点后,点击"Run Step by Step"(或F10)进行单步调试。
使用输出函数
作用:将主要信息输出到日志,是跟踪脚本执行和变量值最常用的手段。
常用函数:
lr_output_message(): 输出一般信息到日志和控制台。
lr_error_message(): 以红色字体输出错误信息,便于快速识别问题。
示例:在登录后输出用户名。
c
lr_output_message("当前登录用户为:%s", lr_eval_string("{Username}"));
常见脚本问题和调试方法
脚本回放失败大多由以下几种原因引起,可以按照以下思路进行排查:
关联问题及调试
问题描述:脚本回放时因动态数据(如SessionID、Token)失效而失败,这是最常见的问题之一。
调试方法:
定位动态数据:在VuGen的Tree View中,通过对比录制和回放的快照,检查服务器返回数据中的差异值。
使用关联函数:使用web_reg_save_param函数捕获动态数据。保证:
函数放在依赖该参数的请求之前。
左边界和右边界能唯一标识要捕获的动态值。
验证关联:成功关联并参数化后,在日志中检查参数是否被正确使用。
参数化问题及调试
问题描述:参数化配置错误(如数据格式、更新方式)导致脚本失败。
调试方法:
查看日志:在Run-Time Settings中开启扩展日志,勾选"Parameter substitution",回放时VuGen会记录参数的使用详情。
检查数据源:保证参数文件格式正确,路径无误,数据足够。
检查点验证
问题描述:未正确验证请求是否成功,脚本"假成功"。
调试方法:
使用web_reg_find函数在请求前注册文本检查点。
通过检查点统计判断主要操作是否成功。
c
web_reg_find("Text=欢迎回来", "SaveCount=login_count", LAST);
// ... 登录请求 ...
if (atoi(lr_eval_string("{login_count}")) > 0) {
lr_output_message("登录成功验证通过");
} else {
lr_error_message("登录成功验证失败");
}
系统化的调试流程
建议按照以下步骤,让调试工作更高效:
保证成功回放:首先,保证录制的基础脚本能成功回放一遍。这是后续调试的基石。
增强脚本:根据测试需求,按顺序进行参数化、添加事务、插入检查点和处理关联。
迭代调试:每进行一次重要的脚本修改,都执行一遍脚本,确认功能正常且无报错。
日志分析:仔细查看回放日志,重点关注错误信息、参数替换值和检查点结果。
模拟真实场景:在VuGen中模拟多用户迭代,保证脚本在多次运行时依然稳定。
一些技巧
理解业务逻辑:深刻理解被测系统的业务流程,能帮助你更快地判断脚本逻辑是否正确。
记录变更:修改脚本时,使用lr_output_message记录重要变更,便于后续追溯。
官方文档:遇到函数使用或错误代码不明时,查阅LoadRunner官方文档通常能找到最权威的解答。
代码版本管理:对测试脚本使用版本控制工具(如Git),便于回溯和团队协作。
一个调试实例
假设一个登录脚本录制时使用了特定的userSession,回放失败。
定位:在Tree View对比录制和回放的快照,发现回放时服务器返回了新的userSession值。
关联:在生成userSession的请求前,插入关联函数:
c
web_reg_save_param("userSession", "LB=value=", "RB=>", LAST);
替换:将脚本中所有硬编码的userSession值替换为参数{userSession}。
验证:再次回放脚本,关注日志中参数userSession是否成功获取并被使用,脚本是否成功。
按照以上方法和流程,应该能更加系统化、高效地调试LoadRunner脚本。请记住,耐心和细致是调试工作的关键。