【问题标题】:Specify test end condition in Visual Studio Load Test在 Visual Studio 负载测试中指定测试结束条件
【发布时间】:2014-02-06 02:30:17
【问题描述】:

我正在使用 Visual Studio 负载测试测试一个大型 BizTalk 系统。负载测试将消息推送到 MQ,这些消息被 BizTalk 拾取然后处理。

我不想在 Visual Studio 完成向 MQ 注入消息后立即完成测试(并且所有性能计数器都结束),我希望当且仅当满足某些条件时才结束测试(在我的情况下为 if (SELECT COUNT(*) FROM BizTalkMsgBoxDb.dbo.Spool) == 4) .

我可以看到很多在测试完成后运行东西的方法,但没有明显的方法可以扩展测试并继续监控,除非满足某些用户定义的退出条件。

这是否可能,或者如果没有,是否有人有一个好的解决方法/黑客的想法来实现这一点?

【问题讨论】:

    标签: visual-studio-2010 load-testing


    【解决方案1】:

    您需要编写一个自定义负载测试插件。详细信息从以下 URL 开始:http://msdn.microsoft.com/en-us/library/ms243153.aspx

    插件可以操纵场景,延长测试的持续时间,直到满足您的条件。

    【讨论】:

      【解决方案2】:

      我想您希望在将一堆请求排队后保持负载测试运行,以便在处理请求时继续监控性能。虽然我们无法控制负载测试的持续时间,但有一种方法可以实现这一点。

      1. 不要限制测试持续时间:将负载测试持续时间(或迭代次数)设置为一个非常大的值 - 大于您预期(或知道)结束条件所需的时间满意。
      2. 限制排队请求的场景:在负载测试场景属性的选项部分中,设置最大测试迭代次数,以便在发送所需数量的请求后用户负载将降至零。如果由于某种原因无法设置迭代限制,您可以编写一个负载测试插件,在经过一定的测试时间后,在指定场景中将用户负载设置为零。
      3. 检查结束条件:编写一个网络测试插件来检查数据库的结束条件。将此插件附加到新场景中的新 webtest,并在场景上设置测试迭代之间的思考时间,以便测试仅根据需要运行(60 秒?)。达到条件时,插件应将预定值写入用户上下文(用户上下文可在 web 测试上下文中以$LoadTestUserContext 访问,并且仅在负载测试中可用,而不是在独立运行 webtest 时可用)。
      4. 中止测试: 编写一个负载测试插件,在TestFinished 事件的用户上下文中查找标志值。找到值后,插件调用LoadTest.Abort()

      此方法有一个小缺点:测试状态在结果数据库中标记为Aborted

      【讨论】:

        【解决方案3】:

        在撰写本文时,(仍然)无法使用自定义负载测试插件延长测试持续时间,也无法通过拒绝退出的虚拟用户类型,也无法通过锁定测试并防止它以这种方式退出。

        我们设法做到这一点的唯一方法是直接操作 LoadTest 数据库,然后从日志文件中注入性能计数器数据,但这既不明智也不推荐。

        哦,好吧..

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-20
          • 1970-01-01
          • 1970-01-01
          • 2012-09-11
          相关资源
          最近更新 更多