在测试方法中使用嵌套if语句时,如何最小化Code​​d ui的性能损失

时间:2015-03-17 22:52:55

标签: c# unit-testing coded-ui-tests

当我运行或调试我的编码U.I测试时,有没有办法让我最小化性能损失。目前我花了很长时间来运行我的编码UI测试,因为它需要很长时间才能执行。我定时了,太长意味着检查屏幕是否存在并执行操作需要超过1分钟,所以它需要我很长时间来调试并完成它。

提供更多背景资料。这些if语句都在一个测试方法中,我在这里检查不同的屏幕。它非常动态但需要很长时间才能运行。我已经阅读了我可以进行有序测试但我并不认为我可以使用这些动态屏幕创建有序测试(原因是我不认为有序测试可以表现为用于说明动态对话框和屏幕的语句)和加上我认为在这个过程中过时太晚了。

我尝试了以下播放设置,几乎没有改进。

以下是我当前的播放设置

Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.Disabled;
        //Playback.PlaybackSettings.SmartMatchOptions = SmartMatchOptions.None;
        Playback.PlaybackSettings.MaximumRetryCount = 10;
        Playback.PlaybackSettings.ShouldSearchFailFast = false;
        Playback.PlaybackSettings.DelayBetweenActions = 1000;
        Playback.PlaybackSettings.SearchTimeout = 2000;

这些设置都没有帮助关闭智能选项。

如果我替换了我的if语句

,我可以发誓说我已经读过某个地方了

尝试捕捉这会有所帮助,但我可能完全错了,因为我只是抓住吸管试图将增加性能提高40%左右。

在处理您必须在编码的ui代码中编码的ifs语句时,是否有任何提示或技巧。

1 个答案:

答案 0 :(得分:0)

我猜你的if语句是一种:

if (uTtestControl.exists)
{
do something
}

如果是这种情况 - 你的延迟是编码搜索控件的结果 - 这是一项耗时的操作 - 特别是在搜索不存在的控件时。

有很多方法可以解决这个问题 - 如果我的猜测是在球场 - 请确认,我会详细说明选项。

<强> Updtae:

  1. 延迟的主要原因是MaximumRetryCount = 10。此外,请尝试以下设置:

    Playback.PlaybackSettings.MaximumRetryCount = 3;
    Playback.PlaybackSettings.DelayBetweenActions = 100;
    Playback.PlaybackSettings.SearchTimeout = 15000;
    
    1. 等待控制存在时使用:

      uiTtestControl.WaitForControlExist(5000)
      
  2. 这将告诉回放搜索控件最多5秒。

    1. 此外 - 在搜索您可能不存在的控件之前,应该减少Playback.PlaybackSettings.SearchTimeout:

            var defaultTimeout = Playback.PlaybackSettings.SearchTimeout;
            Playback.PlaybackSettings.SearchTimeout = 5000;
      
    2. 完成搜索后,将其恢复为默认值:

       Playback.PlaybackSettings.SearchTimeout = defaultTimeout;
      

      这应该可以解决问题