17

前几天,我向我公司的一位测试人员展示了我用 Cucumber 编写的一些测试(2 个特性,5 个场景)。然后他问了我一个我无法回答的问题:

这比 selenium 或任何其他功能测试记录工具更好吗?

我知道 Cucumber 是一种不同的技术,它被置于不同的测试级别,但我不明白我为什么要费心编写和维护 Cucumber/Capybara 测试。

有人可以给我一个合理的解释来使用 Cucumber/Capybara 而不是 Selenium 吗?

4

4 回答 4

17

这个问题是在征求意见的边缘问题。你的问题实际上读给我看,“什么工具适合我?” 我这样说是因为你没有给出选择 Cucumber 和 Capybara 的理由。我相信要回答该测试人员的问题,您需要先回答几个问题:

1.) 你将在这个过程的哪个阶段编写这些测试?

Cucumber 可能不是单元测试的正确选择,具体取决于您使用的语言。但它可以用于任何级别的测试,从单元到集成再到最终用户。

2.) 谁来维护你的测试?你?其他开发商?测试人员?业务分析师?项目经理?

必须维护自动化测试,并且知道谁将执行该操作可以帮助您决定工具 - 因为有些对于某些用户来说过于技术化。

3.) 谁来定义新的测试?

Cucumber 旨在供开发、QA 和业务所有者之间协作使用。它是将每个人的知识用于自动化测试过程的完美工具。然而,它需要开发一种无处不在的语言才能生效。您可以在James Shore 的 Art of Agile页面上阅读相关内容。

回答完这些问题后,您就可以回答测试人员的问题了。

但是,在比较记录工具(例如 Selenium IDE、HP Quick Test Pro、IBM Rational Functional Tester)与开发工具(nUnit、jUnit、RSpec、Selenium webdriver、Capybara)时,有几点需要牢记:它们针对不同的受众。它们也有不同的优点和缺点。

任何人都可以轻松使用录制工具,但它们创建的脚本很脆弱。它们很容易断裂,需要更多的维护。它们非常适合一次性自动化测试,您需要快速完成并拥有非技术人力。

开发工具的学习曲线更大,需要编程(或至少脚本)经验。脚本通常更健壮,但需要更多的技术知识来维护。当您需要可重复性并计划长期使用测试时,它们是一个很好的解决方案。

我强烈建议你阅读黄瓜书。这将真正帮助您确定 Cucumber 是否是您的正确选择。

于 2012-07-06T16:33:05.790 回答
10

Cucumber 不仅仅是一个测试工具。除了测试 Cucumber 特性之外,它还充当文档、与利益相关者协作的机制和需求存储(如果您以声明式风格编写它们)。

您不必将 Cucumber 与 Capybara 一起使用。您可以直接使用硒。但 Capybara 对所有支持驱动程序都有相同的高级 API 。它比 Selenium 更高级,并且允许更快地编写测试。当您从一个驱动程序切换到另一个驱动程序时,您不必更改代码。

使用测试记录工具构建的测试通常要差得多。Selenium IDE 可能会生成有效的编程代码,但它并不好看,因此很难维护。

于 2012-07-05T18:04:51.457 回答
2

Selenium ide 非常适合测试主要包含视觉元素(链接、文本等)的功能。但 Web 应用程序通常具有不将其自身表示为视觉元素的功能,例如发送电子邮件、排队工作、与 3rd 方服务通信等。例如,您可以测试是否存在“电子邮件已发送”消息提交表格。但它并没有真正告诉您是否真的发送了电子邮件,因此您并没有真正在这里测试整个功能。

于 2014-05-28T17:16:51.133 回答
2

Cucumber 是用于使测试对业务用户可读的工具。它由简单的英语句子组成,这些句子使用正则表达式与您的 Capybara 步骤进行匹配。

从长远来看,使用录音工具对你没有任何好处。它们是为初学者设计的,不是那么强大,所以我建议你直接去编码。

您可以单独使用 Selenium 进行测试,但如果您发现 Cucumber 有用且易于使用,我建议您继续将 Cucumber 用于文档目的。毕竟,Cucumber 可以使用 Capybara 或 Selenium web 驱动程序。

于 2012-07-06T07:23:40.577 回答