您将必须确定导致测试随机失败的环境因素。
我见过的一些东西导致此:
- 内存-CI机器上还有其他事情正在运行,它没有足够的内存来完成所有工作并构建您的东西
- 时间-您的代码中有些内容会根据时间而失败。例如,我的代码将在2月29日失败。在五月成功之后,我们感到惊讶。如果只有一位数字,则可能无法格式化秒数。
- 外部依存关系-您的测试依赖于其他服务器。如果它出现故障或变得非常繁忙,它将不会响应您的测试代码,并且测试将失败。这可能是数据库服务器。
- 数据库内容-您可能没有为针对数据库运行的测试正确设置所有前提条件
- 并发性-有时,多线程代码仅在条件正确(或错误)时才会失败。外部因素引入的少量随机延迟可能会使代码正常工作或使其失败。它很容易在多线程代码中忽略竞争条件。
- 服务器(或CPU)-有时,如果测试在测试计算机中的特定服务器或核心上运行,则测试将失败。当然,如果只有一台测试机,则不会发生这种情况。但是,如果一台计算机发生故障,连接性差(防火墙规则),其他进程正在运行,内存更少(或更多),则将它们随机分配为在该计算机上运行时,测试可能会失败。
- [在这里插入您的内容]-还有一百万。
这些都是很难解决的问题。特别是如果他们没有充分的理由离开。它使您感到紧张,因为您怀疑当您急着要修复生产系统中的一个讨厌的错误时,它会再次出现。



