我们有一项服务可以获取 XML 中的自定义测试并将其转换为 CodedUI 测试。然后,我们为 MSTest 启动一个进程,将测试加载到测试控制器中,然后将测试分布到各种代理中。我们在晚上运行回归测试,所以如果出现问题,没有人会在附近修复系统。当测试程序中发生某些异常时,它会弹出一个错误窗口,并且无法在系统上运行更多测试。随后的测试被加载到代理中并立即失败,因为它们无法执行分配的任务。数以千计的测试本应在多个系统上花费一整夜,现在几分钟内就失败了。
我们可以通过测试返回的速度来检测错误发生,但我们不知道如何禁用代理以使其不再接受任何测试。
附录:
如果测试失败得很惨,以至于没有更多测试可以尝试成功运行(如前所述,我们可能没有操作来处理一些可能是新的弹出窗口),那么我们希望禁用该代理,因为不再需要运行测试关于它:他们都会失败。由于我们有许多代理同时运行,如果一个失败(并被禁用),负载仍然可以分布,而不会出现一长串失败。这些其他回归测试仍然有机会成功(一切正常)或失败(我们是否错过了另一个弹出窗口,或者这是一个实际的回归失败)。
20 秒内 2000 次失败并没有说明什么,除了 1 个系统出现了没人意识到会出现的问题,现在我们浪费了一整夜的测试。2 次故障(1 次自然故障,1 次由先前故障的问题引起)和 1 次系统停机意味着总夜间运行可能会延长一两个小时,我们有关于如何开始新一天的有用数据:修复 1 次测试并重新运行这两个故障.