Rails 应用程序上的 Selenium 测试使用哪些数据?你从固定装置加载吗?使用现有的开发数据库?使用单独的(非固定装置)数据库?
我正在考虑我的选择。我有一个 Rails 应用程序,其中包含一个大型 Selenium 测试套件,该套件在 Selenium Grid 的修改版本上运行。目前,该过程的一部分是在测试套件运行之前加载一次大型装置。这是大量的数据。其中大部分是报告从我们的生产数据库导出的信息。当我最初设置它时,我将数据从Oracle导出到yaml。
现在某些报告表中的架构发生了变化,所以我当然必须重新生成夹具数据。文件太多,不值得手动编辑这些文件。但是,对于每一个小的模式更改都必须重新生成似乎效率很低 - 更不用说这是另一个需要记住的步骤。有没有更好的办法?
EDIT:我最初打算在每次测试之前加载固定装置,并在每次测试之后卸载它们,就像常规的 Rails 测试一样。但由于此报告数据,加载灯具大约需要 15 分钟。该套件有 200 多项测试,每 12 小时运行一次。我无法弯曲时空队长!
EDIT 2:我也同意拥有这么大的一套固定装置是一种难闻的气味。不过,我不确定如何减少它,因为报告汇总了大量数据,而硒测试的大部分价值在于它们测试报告。
即使它是一小部分数据,但...它仍然是另一组与模式更改保持协调的数据。 (我们有一个单独的、较小的测试集,用于单元、功能和 [Rails] 集成测试。)
这让我回到了最初的问题——除了手动操作或记住每次重新生成它们之外,还有其他选择吗?
如果可以的话,最好的办法是拥有一个系统,其中每个 Selenium 测试都会获取自己的数据状态(即:删除并重新创建数据库表、重新插入引导数据以及清除缓存)。这说起来容易做起来难,通常只有在项目从一开始就计划好的情况下才可能实现。
其次最好的事情是为每个测试套件/运行提供一致的数据库状态。这不太好,因为现在某些测试很可能依赖于先前运行的测试的成功,这使得识别真正的失败与假阴性变得更加困难。
在我看来,最糟糕的情况是使用静态数据库,其中每次测试运行都会改变日期。这几乎总是会导致问题,并且通常是“项目气味”。以“正确的方式”(同样,IMO)做到这一点的关键是对任何状态/模式变化保持警惕,并将其捕获作为自动化测试/构建过程的一部分。
Rails 已经通过迁移在这方面做得很好,所以充分利用它们!在不了解您的情况的情况下,我通常会质疑是否需要针对完整数据库的快照运行 Selenium 测试。大多数数据库可以(或应该)缩小到小于 1MB 以进行自动化测试,从而使自动化模式迁移和数据重置更加高效。
我唯一一次看到大规模数据库用于 Selenium 测试的“有效”原因是数据库本身包含大量“逻辑数据”,其中数据影响应用程序流程(想想:数据驱动的 UI)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)