要求在测试用例之间执行脚本

时间:2012-06-02 08:03:06

标签: ruby-on-rails automated-tests watir

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

  • 最终用户将遵循该工作流程并注册她的软件
  • 软件是最终用户的本地软件,在她的机器上运行
  • 在此工作流程之间,我向该软件发出http请求并回复
  • 这手震动发生在rails app和该软件之间
  • 更新db
  • 中的几个条目
  • 现在我必须为此
  • 编写一个测试用例
  • 完成此工作流程后,
    • 正确的条目已添加到db
    • 检查工作流程是否成功执行
    • 加上手抖动发生,所以一个完整的周期
  • 我正在寻找最佳方法

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

现在懒惰,我们想要自动化,我正在考虑使用watir。我有一个用于手抖的软件模拟器,我可以在watir中执行该模拟器并对整个循环进行测试。

这听起来好于我的watir / rb脚本

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

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

有更好的建议,评论吗?

2 个答案:

答案 0 :(得分:0)

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

Watir,或Selenium / WebDriver将是很好的工具。如果您还没有考虑过这种方法,那么您应该查看Cheezy(杰夫摩根)page-object gem。它适用于Watir-webdriver和Selenium-webdriver。

我喜欢你明确地调用命中数据库以检查是否正确创建了记录。将数据库命名为test oracle以确保系统正常运行非常重要。

答案 1 :(得分:0)

不想开始一场哲学辩论,但我会说,你想到的那条路过去对我来说是一个时间杀手。我强烈建议花时间将代码重构为可以进行单元测试的结构。专注于单元测试的一个真正好的副作用是,无论你是否意识到,你最终都要创建一个遵循Principle of Single Responsibility的代码库。

另外,请考虑浏览this debate about the fallacies of higher-level testing frameworks

无论如何,祝你好运,朋友。