我们有一个C#/ ASP .Net Web应用程序,由构建服务器(Jenkins)构建和部署.自动部署之前的构建步骤之一是确保所有自动化测试都通过 – 包括使用Selenium 2 WebDriver和NUnit进行的功能测试. 问题:
问题:有时候这些测试会随机失败.他们将成功完成100次构建,然后一次失败.它们由于各种原因而失败 – 一个.Click()事件被忽略,元素无法找到,IE有一个糟糕的一天等等.我们有一个AJAX重型Web应用程序,因此我们非常依赖WebDriverWaits但我们总是采取在编写测试时考虑到这一点,就像我说测试确实在大部分时间都通过了.
有哪些方法可以避免或解决这个问题?一对夫妇,我想到了:
>接受一定数量的失败(似乎是一个坏主意)
>重新运行测试失败?
您可能尝试的一件事是对自动化测试进行浸泡测试.在相同的构建和相同的环境中运行每个100次(因此您可以将这些作为潜在的故障点进行排除)并找到偶尔失败的那些.看看他们是在同一个地方或不同的地方失败了.一般来说,当你进行这个练习时,你会发现一些实际上有点片状的测试,你可以将它们从日常运行中删除,直到它们被修复.您甚至可以将浸泡作为任何自动化测试用例的登记标准.
我发现的另一个有用的东西帮助我找到了一些看似随意的失败的底部,就是在失败时截取屏幕截图.通常你会看到弹出的其他窗口或对话框导致浏览器无法处于最前端,等等.