0

我们有一项服务可以获取 XML 中的自定义测试并将其转换为 CodedUI 测试。然后,我们为 MSTest 启动一个进程,将测试加载到测试控制器中,然后将测试分布到各种代理中。我们在晚上运行回归测试,所以如果出现问题,没有人会在附近修复系统。当测试程序中发生某些异常时,它会弹出一个错误窗口,并且无法在系统上运行更多测试。随后的测试被加载到代理中并立即失败,因为它们无法执行分配的任务。数以千计的测试本应在多个系统上花费一整夜,现在几分钟内就失败了。

我们可以通过测试返回的速度来检测错误发生,但我们不知道如何禁用代理以使其不再接受任何测试。

附录:

如果测试失败得很惨,以至于没有更多测试可以尝试成功运行(如前所述,我们可能没有操作来处理一些可能是新的弹出窗口),那么我们希望禁用该代理,因为不再需要运行测试关于它:他们都会失败。由于我们有许多代理同时运行,如果一个失败(并被禁用),负载仍然可以分布,而不会出现一长串失败。这些其他回归测试仍然有机会成功(一切正常)或失败(我们是否错过了另一个弹出窗口,或者这是一个实际的回归失败)。

20 秒内 2000 次失败并没有说明什么,除了 1 个系统出现了没人意识到会出现的问题,现在我们浪费了一整夜的测试。2 次故障(1 次自然故障,1 次由先前故障的问题引起)和 1 次系统停机意味着总夜间运行可能会延长一两个小时,我们有关于如何开始新一天的有用数据:修复 1 次测试并重新运行这两个故障.

4

2 回答 2

0

在这种情况下,需要中止测试运行。如果您自己运行 mstest,则需要将 ^c 注入命令行进程。但是:如果周围没有人来修复它,那么随后的测试失败有什么关系呢?如果它只是为了快速查看哪个测试是导致错误的原因,为什么不生成代码 ui 检查以查看消息框是否存在并使用 Assert.inconclusive 将测试标记为不确定。引起的测试会像一面旗帜一样突出。

于 2012-12-11T23:51:44.603 回答
0

如果您可以检测到要禁用代理的点,则可以通过运行“TestAgentConfig.exe delete”来禁用代理,这会将代理重置为未配置状态。

于 2012-12-18T04:46:42.097 回答