2501_93482100 2026-01-04 09:16 采纳率: 0%
浏览 5

想问下这个loudrunner的报错应该怎么解决

img


Action部分run两次以上就会这样,被测系统也有London for Portland不知道为啥这里找不到

  • 写回答

3条回答 默认 最新

  • 檀越@新空间 2026-01-04 09:17
    关注

    上午好☀️☀️☀️️
    本答案参考通义千问

    你提到的 "LoudRunner" 报错,可能是指 LoadRunner(现在称为 Micro Focus UFT OnePerformance Center 中的一个错误。根据你的描述:

    • Action部分run两次以上就会报错
    • 被测系统也有London for Portland,但这里找不到

    这表明你在使用 LoadRunner 进行性能测试时,脚本在多次运行后出现错误,并且可能与被测系统的某些配置或路径有关。


    一、问题分析

    1. Action 部分 Run 两次以上出错的原因

    LoadRunner 的 Action 脚本通常是在 Vuser 脚本中定义的,如果你在同一个 Action 中重复调用某些函数、变量或资源(如文件、数据库连接等),可能会导致以下问题:

    • 变量未重置:比如 lr_save_string 保存的值没有在每次运行前清空。
    • 文件句柄泄漏:例如打开文件后未关闭。
    • 网络连接未释放:如 HTTP 请求未正确关闭。
    • 虚拟用户(Vuser)状态未重置:在多轮运行中,状态未恢复到初始。

    2. “被测系统也有 London for Portland,但这里找不到”

    这句话可能有歧义,但从上下文推测,可能是:

    • 被测系统名称是 "London for Portland",但 LoadRunner 脚本中引用了该系统时找不到对应的接口或路径。
    • 或者是 被测系统返回的数据中包含 "London for Portland",但 LoadRunner 没有正确识别。

    二、解决方案

    1. 检查并重置脚本中的变量和状态

    在每次 Action 执行前,确保所有变量、连接、文件句柄等都被重置。

    // 在 Action 开始前添加如下代码
    lr_save_string("", "my_var"); // 清空变量
    lr_delete_file("temp_file.txt"); // 删除临时文件
    

    重点:确保每次 Action 执行前都重新初始化所有资源

    2. 检查 HTTP 请求是否正确处理

    如果使用的是 Web/HTTP 协议,请确保:

    • 所有请求都有正确的 URL 和参数。
    • 使用 lr_set_header() 设置必要的 headers。
    • 使用 lr_think_time() 添加合理的思考时间,避免服务器超载。

    3. 确认被测系统地址和接口是否正确

    • 确保 LoadRunner 脚本中使用的 URL、IP 地址、端口、API 接口 是正确的。
    • 如果被测系统是 “London for Portland”,请确认其是否已部署在可访问的环境中。

    重点:确保被测系统地址和接口在 LoadRunner 脚本中正确配置

    4. 查看 LoadRunner 日志和错误信息

    • 查看 Log 文件.lrr 文件)和 Run-time Viewer
    • 检查是否有 500 错误、404 错误、连接超时 等信息。
    • 确认是否是因为被测系统返回了不预期的数据(如 “London for Portland” 未被识别)。

    5. 增加错误处理逻辑

    在脚本中加入错误处理机制,防止因一次失败导致后续执行中断。

    int ret = lr_eval_string("{my_response}");
    if (ret != LR_PASS) {
        lr_output_message("Error occurred in the script.");
        return LR_FAIL;
    }
    

    重点:在关键步骤添加错误处理,提高脚本健壮性

    6. 检查 LoadRunner 配置

    • 确保 Vuser 数量、运行模式(单用户 / 多用户) 配置合理。
    • 如果是 Multi-Action Script,请确保每个 Action 之间没有冲突。

    三、示例修改后的代码片段(以 Web HTTP 协议为例)

    // Action 函数开始
    int action() {
        // 重置变量
        lr_save_string("", "response_body");
    
        // 发送请求
        web_url("Get Data",
            "URL=http://your-app.com/api/data",
            "TargetFrame=",
            "Resource=0",
            "RecContentType=text/html",
            "Referer=",
            "Snapshot=t1",
            "Mode=HTML",
            LAST);
    
        // 获取响应内容
        lr_get_value("response_body", "Body", "Response");
    
        // 检查是否包含 "London for Portland"
        if (strstr(lr_eval_string("{response_body}"), "London for Portland") == NULL) {
            lr_output_message("Expected response not found: 'London for Portland'");
            return LR_FAIL;
        }
    
        return LR_PASS;
    }
    

    四、总结

    | 问题点 | 解决方案 | |--------|----------| | Action 多次运行出错 | 重置变量、文件、连接等资源 | | 被测系统 “London for Portland” 无法识别 | 确保 URL、API 正确,检查日志 | | LoadRunner 报错 | 检查日志、添加错误处理逻辑 |


    如果你能提供具体的错误信息(如错误代码、截图、日志内容),我可以进一步帮你定位问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月4日