繁体   English   中英

如何调试随机黄瓜故障?

[英]How to debug random cucumber failures?

我在黄瓜测试套件方面遇到了问题,我想不出任何调试方法。

我们拥有相当大的黄瓜功能套件,它们都通过了开发机器。 问题是,当我们在ci服务器上运行整个黄瓜套件时,有两种情况都失败了,并且单独运行它们会使它们在尝试填充表单时(显然)随机通过并失败(显然)。页)。 由于随机失败,我认为这是ajax请求的计时问题,但事实并非如此,因为增加真正的大睡眠(尝试从1到60秒进行所有操作)不会改变任何事情。 该场景更加有趣,因为还有另外3个场景以相同的顺序运行在第一个场景上失败的场景,并且这些场景通过了,除非我删除了第一个场景,在这种情况下,第一个运行这些步骤的场景是一个失败的。

是否有任何技巧可以调试这种黄瓜怪异现象? 功能(请记住,这些情况总是在开发机器上进行,问题出在ci服务器中)。

谢谢!

我也有机会调试只能在CI上重现的间歇性测试失败。 以我的经验,这个问题总是归结为几个基本原因:

  1. 前端的比赛条件。 例如,在xhr回调之前启用输入表单,会添加默认值。
  2. “乐观”来自前端。 有时,前端工程师通过忽略结果来使涉及PUT / POST请求的操作更具响应性。 在这种情况下,无法让Cucumber等待请求完成,因此针对数据库状态更改的测试将与应用程序竞争。
  3. 对测试装置中不可用的资源的请求。 例如,可能阻止来自CI的对第三方API的请求。 有时,URL在测试环境中的构造不正确,尤其是在“手工”构建而不是使用Rails帮助器的情况下。

间歇性黄瓜故障总是很难调试。 不要放弃! 值得努力找出如何构建可测试的,无种族限制的前端。 您可以使用capybara-webkit调试仅CI的故障。 获取javascript控制台输出以在CI上打印出来,然后可以将打印品添加到javascript中以跟踪其状态直至测试失败。 您还可以修改capybara-webkit来打印有关前端请求的信息。 这是一个例子: https : //github.com/joshuanapoli/capybara-webkit/commit/96b645073f7b099196c5d3da4653606e98a453e4

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM