当前位置: 首页 > 面试题库 >

Jenkins中的随机测试失败

翟默
2023-03-14
问题内容

我在Python-Django网站上工作。我使用GIT作为我的VCS。对于持续集成,我使用Jenkins
CI。我已经使用Python设置了两个虚拟环境,一个用于开发,另一个用于预生产。

我的问题:我为网站编写了许多单元测试,回归测试和冒烟测试。我的开发和预生产虚拟环境都连接到Jenkins CI。

最近,每当将代码更改推送到Jenkins CI中的两种环境时,测试都会随机失败。有时,测试会随机失败,而没有进行任何代码更改。

完成故障排除:

  • 在本地运行测试,它们通过了。
  • 是否在Jenkins CI(使用“立即构建”按钮)中进行了一些手动构建,测试通过了。
  • 单独运行失败的测试,但仍然可以通过。

在较早版本中失败的测试在下一个版本中通过。在较早版本中通过的某些测试在接下来的版本中失败了。有人可以建议我可以做什么吗?


问题答案:

您将必须确定导致测试随机失败的环境因素。

我见过的一些东西导致此:

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

这些都是很难解决的问题。特别是如果他们没有充分的理由离开。它使您感到紧张,因为您怀疑当您急着要修复生产系统中的一个讨厌的错误时,它会再次出现。



 类似资料:
  • 我使用的是Android Studio 3.3,我对Robolectric 3.3.2进行了一些测试。 我有多个可能有联系的问题。 > 我启动Android studio并运行我的测试类。没关系。如果修改/添加测试,则在重新运行测试时不会看到它(右键单击该类,然后运行测试)。我试图使缓存无效并重新启动、生成/重建项目。它不起作用。我必须重新启动Android Studio。 此外,我碰巧遇到一个错

  • 对于一个小型开发团队(6名开发人员),我设置了Gerrit和Jenkins,以允许代码审查和CI。两者之间的集成工作良好,Jenkins编译并测试了代码。 然而,我无法决定如何处理失败的失败测试。目前,如果测试失败,那么构建也被视为失败。如果功能更改导致测试失败,将如何处理?或者当测试得到改进并发现损坏的代码时?是否也会修复损坏的代码,并将测试更改和修复压缩到单个提交中?

  • 我试图用jenkins execution命令测试我的java项目,但是我得到了以下错误消息: 有关单个测试结果,请参阅/var/jenkins_home/workspace/test1/target/surefire-reports。请参阅转储文件(如果存在)[date].dump,[date]-jvmrun[N].dump和[date].dumpstream。分叉的VM在没有正确地说再见的情况

  • 问题内容: 我建立了一个简单的测试,它可以无限循环地创建和删除文件(名称不变)。该测试确实运行了几秒钟(有时超过77,000次迭代!),然后由于以下异常而失败: 这是测试逻辑: 这怎么可能?删除呼叫不会失败。它会说明一切。因此删除总是成功但失败。这就是MSDN关于Win32 API函数的说法: DeleteFile函数在关闭时将文件标记为要删除。因此,在关闭文件的最后一个句柄之前,不会发生文件删除

  • 有一个项目大约有20个控制器。每个控制器都有其相应的测试类。当我们尝试添加新的controller tests类时,以前运行良好的一些测试开始随机失败。如果使用@Ignore注释任何控制器测试类,测试将恢复正常。 这是失败测试抛出的异常: org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常为java.lang.Illega

  • 问题内容: 您将如何测试随机数生成器是否正在生成实际的随机数? 我的方法:首先建立一个大小为M的散列,其中M是素数。然后取由随机数生成器生成的数字,并用M取mod,然后看它是否填充了所有散列或仅填充了一部分。那是我的方法。我们可以通过可视化证明吗? 由于我对测试的了解很少。您能建议我彻底解决这个问题吗?提前致谢 问题答案: 您应该意识到,您不能 保证 随机数生成器正常工作。请注意,即使是[1,10