【问题标题】:What determines if a LoadRunnner script passes or not VS a transaction passes or not?什么决定了 LoadRunner 脚本是否通过 VS 事务是否通过?
【发布时间】:2021-05-13 23:55:33
【问题描述】:

我正在使用 LoadRunner Vugen(虚拟用户生成器)来实现一个 C 脚本,我有点困惑,因为我得到了这个结果:

通常当我使用一些功能时

web_reg_find()
web_reg_save_param_regexp()
web_custom_request()

如果出现 HTTP 错误代码,流程会中断,但我需要使用响应正文中的代码处理数据并将一些错误视为正常情况,因此我更改了一些参数。

但现在我不清楚如何使脚本按我的意愿通过或失败。我已经使用以下方式成功完成了交易:

lr_end_transaction(NOMBRE_TRANSACCION, transactionResult);

transactionResult 根据我的需要计算为 LR_FAIL 或 LR_PASS,但我不知道哪些规则适用于使脚本的行为与事务相同。我尝试从 Action.c 主体返回不同的 int 值。我也查看了文档,但也许我没有正确搜索,因为我什么也没找到。

我只想知道哪些规则适用于手动强制 LR vugen 脚本通过或失败。

提前致谢。

【问题讨论】:

    标签: load-testing loadrunner stress-testing vugen


    【解决方案1】:

    根据经验,如果您的请求在服务器上的 HTTP 错误日志中结束,那么它会在 LoadRunner 中结束。 4xx 和 5xx 被认为是出现在日志中的错误情况。 3xx 是导航/治理。 2xx 是成功的。 1xx 是信息性的。因此,规则是由 w3c 为 HTTP 状态代码设置的。 LoadRunner 只是遵守标准。

    您的开发人员不应在其应用程序中使用 HTTP 状态消息。他们应该在有效的 HTTP 2xx 响应中传回 App 错误消息。这就是您检查预期结果的原因,这是科学方法中任何实验的标准部分。对于系统的任何请求,您都有一个预期的响应条件。您应该检查该响应。如果您没有收到该响应,即使 HTTP 200 响应在您的响应时间要求内,您仍然会遇到故障,因为应用程序没有以给定输入存在预期输出的方法响应。

    由于您现在可能正在执行“继续出错”,因此您可能不需要将条件设置为失败。事务的状态应该仍然是失败,除非您希望根据某些逻辑将其更改为 LR_PASS。

    【讨论】:

    • 开发人员不应该使用 HTTP 状态码,但他们会使用,我们无权控制它们。我们唯一的选择是查看 404 中的代码,并确定该错误是否可以被视为性能不足或只是数据库中缺少数据。
    • 是的,您确实可以控制它们。您可以在 QA 中让他们失败,因为他们使用 HTTP 状态代码来表示应用程序状态。这是一个功能性问题。如果它对一个人不起作用,那么它不应该在性能测试中被评估为许多人
    【解决方案2】:

    报告了“脚本通过”,因为可能没有实际错误。您只是将事务设置为失败。 vugen 本身不会抛出任何错误,它认为任何脚本都已通过,无论事务状态设置为什么。

    vugen 中的错误:

    • lr 函数的任何错误使用(例如,错误的参数数量或无效的参数)
    • 请求超时
    • 关于 http-error-codes(4** 及以上)
    • web_reg_find 未能找到响应文本
    • weg_reg_save_param 未能从响应中保存参数

    ..但是 vugen 在这里报告的内容并不重要。当 LR_FAIL 与 lr_end_transaction 一起使用时,事务将在最终报告中报告为失败。任何报告中都没有“脚本通过”声明。它只是 Vugen 的事情。

    只有在发生实际错误时,事务才会失败。只是,在极少数情况下,必须手动设置事务状态。

    使用文本检查

    使用文本检查来验证任何响应总是一个好主意!

    web_reg_find("Text=text indicates valid response", LAST);
    

    如果未找到文本,则交易将失败并打印错误消息。

    如果 http-code 正常但响应中有错误消息,则使事务失败,请使用:

    web_reg_find("Text=error message indicates invalid response", "Fail=Found", LAST);
    

    如果找到文本,则交易将失败并打印错误消息

    【讨论】:

    • 我知道错误,但是当在数据库中找不到数据时,应用程序的开发人员会发回 404。我们正在测试性能,但是在数据库中找不到数据的 404 并没有以任何方式显示性能不足,所以我必须通过它们在 404 正文中发送的错误代码来区分。
    猜你喜欢
    • 2016-03-11
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    相关资源
    最近更新 更多