【问题标题】:Display time for webtest plugin in playback UI window在播放 UI 窗口中显示 webtest 插件的时间
【发布时间】:2010-07-12 01:46:17
【问题描述】:

我写了一个 Visual Studio (2008) Webtest 插件,需要在播放 ui 窗口中显示运行时间。

我试过了:

e.WebTest.BeginTransaction("B2BValidate");

// then call my plugin

e.WebTest.EndTransaction("B2BValidate");

这确实将“B2BValidate”事务添加到播放窗口,但“总时间”列显示为 0.000 秒。我错过了什么?

-马特

【问题讨论】:

    标签: visual-studio-2008 webtest


    【解决方案1】:

    Visual Studio 中的事务期望包含一个请求 - 它们根本不能直接内联在没有请求之间的代码中工作。

    您必须使用 http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx 之类的东西来启动和停止计时器,然后使用 WebTest 的 AddCommentToResult() 方法在 webtest 结果查看器中显示经过的时间。

    另一种选择是将您的 webtest 放入负载测试中,然后参考性能计数器:

    • Lo​​adTestPlugin 中的时间百分比
    • % 规则时间
    • % WebTest 代码中的时间

    当然,这只是给出比例而不是精确的时间数据。

    【讨论】:

      【解决方案2】:

      有一个 TransactionTimer 类需要被实例化,并且定义了定时器的请求范围。

             public class DynamicTransactionTimer : WebTestRequestPlugin
       {
       public override void PreRequest(object sender, PreRequestEventArgs e)
       {
           TransactionTimer t = new TransactionTimer();
           t.Name = "trx3";
           t.Items.Add(e.Request);
           e.WebTest.BeginTransaction("trx3"); 
       }
      
           public override void PostRequest(object sender, PostRequestEventArgs e)
           {
               e.WebTest.EndTransaction("trx3");
           }
          }
      

      【讨论】:

      • 这不起作用。如果您尝试它,您会看到“trx3”在独立的 Web 测试或负载测试中报告 0.00 秒的响应时间和经过的时间。您不能在 WebTestRequestPlugin PostRequest 事件中使用 EndTransaction() 或排除最后一次请求的时间。此外,在 BeginTransaction/EndTransaction 调用中实际上根本没有使用您的对象“t”。 webtest 引擎创建了一个全新的 TransactionTimer 对象。看来 TransactionTimer 类并不打算直接使用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-12
      • 2019-12-28
      • 1970-01-01
      • 1970-01-01
      • 2020-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多