Automated tests 处理自动化部署期间偶尔失败的Selenium测试
我们有一个C#/ASP.Net web应用程序,它是由构建服务器(Jenkins)构建和部署的。自动化部署之前的构建步骤之一是确保所有自动化测试都通过——包括我们使用Selenium 2 WebDriver和NUnit进行的功能测试 问题是:有时这些测试会随机失败。他们将成功构建100个版本,然后其中一个版本就失败了。它们失败的原因有很多——一个.Click()事件被忽略,元素找不到,IE糟糕的一天,等等。我们有一个使用AJAX的web应用程序,所以我们非常依赖WebDriverWaits,但我们在编写测试时总是考虑到这一点,就像我说的,测试大部分时间都会通过 有哪些方法可以避免或解决此问题?我想到了一对:Automated tests 处理自动化部署期间偶尔失败的Selenium测试,automated-tests,jenkins,selenium-webdriver,Automated Tests,Jenkins,Selenium Webdriver,我们有一个C#/ASP.Net web应用程序,它是由构建服务器(Jenkins)构建和部署的。自动化部署之前的构建步骤之一是确保所有自动化测试都通过——包括我们使用Selenium 2 WebDriver和NUnit进行的功能测试 问题是:有时这些测试会随机失败。他们将成功构建100个版本,然后其中一个版本就失败了。它们失败的原因有很多——一个.Click()事件被忽略,元素找不到,IE糟糕的一天,等等。我们有一个使用AJAX的web应用程序,所以我们非常依赖WebDriverWaits,但我
- 接受一定数量的失败(似乎是个坏主意)
- 重新运行测试失败李>
我发现的另一件有用的事情帮助我弄清了一些看似随机的失败,那就是拍摄失败的截图。通常,您会看到弹出了其他窗口或对话框,导致浏览器无法处于最前端,等等。在这两个窗口中,我更愿意重新运行测试失败,或者,在测试失败时,重试测试 如果您接受了一定数量的测试失败,那么您就会遇到关于哪些测试允许失败的问题。你必须有两套测试,有些是允许失败的,有些不是
对于重新运行,我不是NUnit测试方面的专家,但是您可以让测试自己管理重试。在JUnit中,您可以引入一个规则,以便在测试失败时,它最多重试3次。这可能会避免您遇到的大多数问题。我不知道如何在努尼特做到这一点,但要注意。这将为您提供总体思路。这里我要提醒的唯一一点是,重新运行测试失败有时可能意味着会错过间歇性产品故障。至少要记录失败,如果重试成功,您仍然可以进行自动部署,但至少要标记失败并进行调查。谢谢,在NUnit中这样做有点尴尬,但我设法添加了这个,直到我调试测试作为短期解决方案。谢谢,我喜欢“浸泡测试”的想法——在这样做之后(并截图)我看到一些测试总是在同一点失败,所以我将仔细观察它们。@Kryptic有趣。我自己也在处理类似的事情。你记得在仔细观察那些不可靠的测试时发现了什么模式吗?