Cucumber / Capybara vs Selenium?

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

这比selenium或任何其他function测试录音工具更好吗?

我知道黄瓜是一种不同的技术,它处于不同的测试水平,但我不明白为什么我应该费心去编写和维护Cucumber / Capybara测试。

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

这个问题是边缘问题。 你的问题实际上告诉我,“什么工具适合我?” 我这样说是因为你没有说明为什么选择Cucumber和Capybara。 我相信回答测试人员的问题,你需要先回答几个问题:

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

根据您使用的语言,黄瓜可能不是unit testing的正确选择。 但它可用于任何级别的测试,从单元到集成再到最终用户。

2.)谁将维持你的测试? 您? 其他开发者? 测试人员吗? 业务分析师? 项目经理?

必须保持自动化测试,并且知道谁将会这样做可以帮助您决定工具 – 因为某些工具对某些用户来说太技术化了。

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

黄瓜意味着在开发,QA和企业主之间协同使用。 它是将每个人的知识融入自动化测试过程的完美工具。 然而,它需要开发无处不在的语言。 您可以在James Shore的Art of Agile页面上阅读。

一旦你回答了这些问题,你就可以解决测试人员的问题。

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

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

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

我强烈建议你阅读The Cucumber Book 。 它真的可以帮助您确定Cucumber是否适合您。

黄瓜不仅是一种测试工具。 除了测试Cucumberfunction之外,还需要一个文档角色,一个与利益相关者和需求存储协作的机制(如果你以声明的方式编写它们)。

您不必将黄瓜与Capybara一起使用。 你可以直接使用selenium。 但Capybara为所有支持驱动程序提供相同的高级API。 它比Selenium更高级,允许更快地编写测试。 从一个驱动程序切换到另一个驱动程序时,您不必更改代码。

使用测试记录工具构建的测试通常更糟糕。 Selenium IDE可能会生成有效的编程代码,但它看起来并不好看,因而很难维护。

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

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

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

Selenium ide适用于测试主要包含视觉元素(链接,文本等)的function。 但是,Web应用程序通常具有不代表视觉元素的function,例如发送电子邮件,排队作业,与第三方服务通信等等。例如,您可以测试是否存在“已发送电子邮件”消息提交表格。 但它并没有真正告诉你是否实际发送了一封电子邮件,因此你并没有在这里测试整个function。