编码的ui测试在服务器上随机失败

时间:2014-07-23 15:04:20

标签: c# visual-studio-2013 coded-ui-tests

我对测试环境还不熟悉,但我遇到了问题。

我创建了一个测试用例(在一个有序测试中结合了一些测试),当我在自己的电脑上运行它们时,它们总是通过(尝试多次以确定)但是当我在我们的服务器上运行测试时测试在随机时间失败。 示例 - 他没有右键单击列表来获取上下文菜单 - 他似乎忘记点击按钮,因此无法访问下一个窗口。等等 如果我再次运行测试,他可能会重复上一次失败,但在其他事情上失败。

到目前为止。超过+ - 30次我运行他测试我有5次成功运行。这应该是一个基础测试,所以应该没有错误或已知问题。 我觉得服务器需要更多时间来完成测试。所以我做了研究,并且已经添加了许多回放设置和Playback_PlaybackError。 Visual Studio 2013中的测试用例部分用记录部分编写的代码。使用microsoft test manager 2013,win8 envir

进行Visual Studio和服务器测试

有什么我做错了吗?或者服务器配置有问题吗?

提前致谢。

到目前为止,我尝试了其中一些(并在每个测试方法中重复)

    public CodedUITest1()
    {
        Playback.PlaybackSettings.MatchExactHierarchy = true;

        Playback.PlaybackSettings.SmartMatchOptions = SmartMatchOptions.Control;
        Playback.PlaybackSettings.SmartMatchOptions = SmartMatchOptions.TopLevelWindow;
        Playback.PlaybackSettings.SmartMatchOptions = SmartMatchOptions.None;

        Playback.PlaybackSettings.SearchTimeout = 2000;
        Playback.PlaybackSettings.ShouldSearchFailFast = true;

        Playback.PlaybackSettings.ThinkTimeMultiplier = 2;

        Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.AllThreads;
        Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.UIThreadOnly;
        Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.Disabled;

        Playback.PlaybackSettings.WaitForReadyTimeout = 2000;
        Playback.PlaybackError -= Playback_PlaybackError;
        Playback.PlaybackError += Playback_PlaybackError;
    }

    /// <summary> PlaybackError event handler. </summary>
    private static void Playback_PlaybackError(object sender, PlaybackErrorEventArgs e)
    {
        // Wait a second
        System.Threading.Thread.Sleep(1000);

        // Retry the failed test operation
        e.Result = PlaybackErrorOptions.Retry;

    }

3 个答案:

答案 0 :(得分:1)

似乎问题是基于服务器的。我添加了一个全局延迟的动作,测试似乎运行得非常顺利。问题已解决

答案 1 :(得分:1)

尝试使用

yourcontrol.WaitForControlReady() 
在执行任何控制操作之前,

也起作用。此功能将停止线程,直到您的控件准备好接受任何操作。

答案 2 :(得分:0)

我的项目中有一组20个奇怪的编码UI测试我遇到了类似的问题,它曾经在服务器上随机失败,但总是在本地运行良好。我们寻找了许多故障排除技术来克服这种神秘的“随机”问题。因子。分析这些测试失败时最大的问题是错误堆栈跟踪可能表明代码行可能与实际失败原因完全无关。

我们发现我们可以在Coded UI测试中启用HTML日志记录。这非常简单,可以为单个测试或项目中的所有测试启用。只需将以下代码添加到app.config文件

即可

enter image description here

启用跟踪后,测试将逐步显示Coded UI如何尝试执行测试的详细信息 - 使用应用程序的屏幕截图。这对于排除测试失败的实际原因非常有用。