Fixtures、Selenium 和 Rails(天哪?)

2024-01-01

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(使用前将#替换为@)

Fixtures、Selenium 和 Rails(天哪?) 的相关文章

随机推荐

  • Spring-boot:注册 mongodb 自定义转换器

    我将此依赖项用于我的 Spring Boot 服务
  • 在php中如何使用preg替换将url变成tinyurl

    我需要将包含长 url 的文本字符串转换为相同的字符串 但带有tinyurl 使用tinyurl api 例如 转变 blah blah blah http example com news sport blah blah blah int
  • 如何合并数值模型和嵌入序列模型来处理 RNN 中的类别

    我想为我的分类特征构建一个带有嵌入的单层 LSTM 模型 我目前有数字特征和一些分类特征 例如位置 它不能进行单热编码 例如使用pd get dummies 由于计算复杂性 这正是我最初打算做的 让我们想象一个例子 样本数据 data us
  • 检查SQL表是否存在

    以独立于数据库的方式检查 Sql 数据库中是否存在表的最佳方法是什么 我想出了 bool exists const string sqlStatement SELECT COUNT FROM my table try using OdbcC
  • 输入字符串的格式不正确#2

    double temp temp double Convert ToDouble 1234 5678 嘿 伙计们 女士们 我一生都无法弄清楚为什么上面的行不起作用 上面的行给了我一个运行时错误 未处理的类型异常 System FormatE
  • 计算带有 LIMIT 的 MySQL 记录

    当我尝试计算表中的记录数时 即使 SQL 语句有LIMIT进入其中 总体来说它是有效的 但是发生了一些奇怪的事情 代码 sql SELECT COUNT AS count FROM posts ORDER BY post date DESC
  • Angular2(RC-4):无法读取未定义的属性“pathsWithParams”

    在 angular2 RC 4 中使用子路由时出现此错误 无法读取未定义的属性 pathsWithParams 我的路由文件包含 export const routes RouterConfig path component HomeCom
  • Nodemailer 的邮件在 Azure 服务器上不起作用

    我正在尝试使用 Microsoft azure 上的 Express JS 服务器的 Nodemailer 邮件 api 发送邮件 它在本地计算机上取得成功 但在天蓝色服务器 远程 上却没有成功 任何想法 var mail require
  • CRTP——访问不完整类型成员

    相关问题 one https stackoverflow com questions 6006614 c static polymorphism crtp and using typedefs from derived classes tw
  • 如何在(功能)F# 中创建递归数据结构值?

    type 的值如何 type Tree Node of int Tree list 有一个以函数方式生成的引用自身的值吗 对于 Tree 的合适定义 结果值应等于以下 Python 代码中的 x x Tree x tlist x Edit
  • 将光标移动到 UITextField 的开头

    有没有办法让光标位于a的开头UITextField 当我显示带有内容的控件时 光标放置在文本的末尾 我想把它移到开头 UITextField符合UITextInput协议 它提供了让您控制所选范围的方法 这在我的测试中有效 void tex
  • Python:将 3D 椭球(扁形/长形)拟合到 3D 点

    亲爱的 stackoverflow 用户 我面临如下问题 我想在 python 脚本中将 3D 椭球体拟合到 3D 数据点 起始数据是一组 x y 和 z 坐标 笛卡尔坐标 我想要得到的是 3D 数据点凸包的最佳拟合椭球定义方程中的 a 和
  • AngularFire httpsCallable Object(...) 不是一个函数

    我想在我的 Ionic 3 应用程序中调用 httpsCallable 函数 我正在尝试遵循这些文档 https firebase google com docs functions callable https firebase goog
  • 在 Java 中实现双缓冲

    我有一个简单的 Java JFrame 画布 我每半秒左右更新一次屏幕上的内容 并且有闪烁 我想实现双缓冲来消除闪烁 但我对 Java 相当陌生 不熟悉如何做到这一点 我找到了一些例子 但不确定如何将他们的方法应用到我的方法中 以下是我现在
  • 删除 MS Excel 中特定字符左侧的所有文本

    这是一个与excel相关的问题 我想删除字符串中特定字符或多个字符左侧的所有文本 所有字符 例如 假设我的单元格中有一个字符串大家好 欢迎来到 stackoverflow 现在我想删除 堆栈 左侧的所有字符 意味着结果应该是堆栈溢出 仅限堆
  • WindowsBase.dll 中发生了“System.ComponentModel.Win32Exception”类型的第一次机会异常

    我有一个 NET 4 0 WPF 项目 当我打开文件对话框时 选择一些文件并按 确定 按钮 然后我在输出窗口中看到以下错误 WindowsBase dll 中发生了 System ComponentModel Win32Exception
  • Plotly r,按变量划分的线型

    我正在尝试制作一个散点图 其中线条样式由因子变量指定 就像颜色一样 但我无法让它工作 library plotly df lt data frame x rnorm 20 y rnorm 20 col c rep 1 10 rep 2 10
  • 将补充 Unicode 字符映射到 BMP(如果可能)

    我遇到了这样的问题 我的 XML 解析器 VTD XML 似乎无法处理 Unicode 补充字符 如果我在这里已经错了 请更正 看起来 解析器只使用这些字符的低 16 位 我无法切换到我正在处理的项目中的另一个解析器 我正在解析 Medli
  • 图书馆的异常处理策略

    构建 NET 库时 您的异常处理策略是什么 具体来说 您关于处理库调用内的异常并将其暴露给调用代码的政策是什么 例如 您是否会像对待其他函数一样对待库函数 从而让它无法处理的所有异常按原样流出 您会为该库创建自定义异常吗 您会捕获所有异常并
  • Fixtures、Selenium 和 Rails(天哪?)

    Rails 应用程序上的 Selenium 测试使用哪些数据 你从固定装置加载吗 使用现有的开发数据库 使用单独的 非固定装置 数据库 我正在考虑我的选择 我有一个 Rails 应用程序 其中包含一个大型 Selenium 测试套件 该套件