0

我有一个场景,我有一个 RoR 应用程序 mysql,并且有一个工作流,其中

  • 最终用户将遵循该工作流程,并注册她的软件
  • 软件对最终用户来说是本地的,在她的机器上运行
  • 在这个工作流程之间,我向这个软件发出一个 http 请求,它会回复
  • 这种握手发生在 Rails 应用程序和那个软件之间
  • 更新数据库中的几个条目
  • 现在我必须为此编写一个测试用例
  • 在这个工作流程完成之后,
    • 正确的条目已添加到 db
    • 检查工作流是否执行成功
    • 加上握手发生得很好,所以一个完整的循环
  • 我正在寻找一个最好的方法来配合

目前,我们还没有准备或计划在这里测试整个应用程序的好方法,而只是准备了一些重要的测试用例。这是第一个。到目前为止,我们都是手动完成的。

现在懒惰了,我们想自动化这个,我正在考虑使用 watir。我有一个用于握手的软件模拟器,我可以在 watir 中执行该模拟器并测试整个周期。

我的 watir/rb 脚本听起来不错

  • 执行脚本
  • 检查数据库状态
  • 执行工作流
  • 停止该脚本
  • 检查数据库状态

但很明显,这里涉及的所有 ruby​​/rails 单元都会分开准备自己的单元测试用例,但我有兴趣测试整个周期。

有更好的建议、意见吗?

4

2 回答 2

0

在单元功能级别进行测试很重要,IMO,所以我认为你的一般方法很好。

Watir 或 Selenium/WebDriver 将是很好的工具。如果您还没有想到方法,您应该查看 Cheezy (Jeff Morgan) 的page-object gem。它适用于 Watir-webdriver 和 Selenium-webdriver。

我喜欢您明确要求访问数据库以检查是否创建了正确的记录。将数据库作为测试预言机来确保您的系统正常工作非常重要。

于 2012-06-03T15:03:43.470 回答
0

不想开始一场哲学辩论,但我会说,沿着你认为的道路前进,过去对我来说是一个时间杀手。我强烈建议您花时间将代码重构为可以进行单元测试的结构。专注于单元测试的真正好处之一是,无论您是否意识到,您最终都会创建遵循单一职责原则的代码库。

另外,考虑略读一下关于更高级别测试框架的谬误的辩论

不管怎样,祝你好运,朋友。

于 2012-06-03T15:31:18.910 回答