当前位置: 首页 > 知识库问答 >
问题:

cypress与类似cucumber的BDD框架的区别

乐正浩宕
2023-03-14

有人在拐角处说:Cucumber或JBehave和Cypress是一样的。恐怕那不是真的。但有什么论点可以回答。我不开发网络应用程序,我很难比较这两种解决方案。

我试图澄清我的问题:假设有一个应用程序具有后端服务和使用这些服务的前端(web-app)。后端代表复杂的工作流,整个应用程序应通过BDD框架(如cucumber)进行测试。主要的好处是通过功能和场景描述提供了一种最新的文档。它是像黄瓜这样的框架的核心。另一个好处当然是(可能是e2e)测试本身。要有价值,它需要UI测试来测试整个工作流。例如,你可以用硒和黄瓜一起处理这个问题。我觉得cypress是一种像selenium一样的测试框架,对吧?只是在很多方面好得多。但是有人可能会说:“哦...cypress和cucumber是一样的,因为你也可以定义场景等等...但是我相信,当我们考虑BDD的时候,cypress必须和cucumber结合使用,而不是作为一个新的独立的BDD工具。从我的观点来看,cypress是一个很棒的UI测试框架,但是...不是更多?!我在这里考虑我的问题来寻找澄清的答案。

共有1个答案

高运诚
2023-03-14

你在你的帖子里涉及到很多东西。我想试着用一些一般的分类来帮助你理解不同的技术会得到什么。

BDD(行为驱动开发):
这不是一种技术,更多的是一种测试的“方式”。在名称和首字母缩写上与TDD相似,但在方法上有很大不同。TDD是这样一种想法,即在开始编写代码之前编写一组测试,并且当您编写的代码通过那些测试时就应该完成。通常由开发人员作为开发过程的一部分来完成。一个非常重要的区别是TDD确实测试实现。BDD不是。您希望否定实现,只测试应用程序的行为或面向用户的功能。这并不意味着它总是一个最终用户。您可以使用BDD样式测试来测试后端。重要的是,使用BDD时,您关心的是输出,而不是测试实现。

柏树和黄瓜:
这是两码事。Cypress可以使用Cucumber(这里有一个包的链接可以帮助您这样做),默认情况下它使用Mocha,这是您可以使用的另一种BDD语法来组织您的测试...重要提示:Cucumber是一个语法,它让您的代码被GIVEN、WHEN或THENS引用,它们表示前提条件?设置、测试中的操作和预期的结果。Cucumber很酷的一点是,您的代码是由这些gived/when/then“步骤”调用的。为什么这是重要的是有人阅读的测试,他们可以确定,如果GWT步骤是相同的步骤在不同的测试,两者将使用相同的下面谎言代码...很酷吧?Cucumber是一种编写高可读性测试并允许其他人读写测试的方法,现在底层代码将是相同的。您可以通过重新组织GWTS来编写新的测试!您还可以使用RegEx表达式来允许测试用例参数化。您甚至可以将这些参数连接到一个数据表!这里有一个例子

Cypress.io与Selenium有何不同?
这可能是一篇完整的文章。我将为我呈现最重要的差异。建筑...这里有一个链接到这篇文章中的图表。这有什么意义呢?测试中的应用程序运行在Cypress控制的容器内。这允许测试人员存根请求(向内数据)和间谍或模拟数据(向外数据)。这超出了显而易见的网络流量。您甚至可以存根浏览器的功能。Cypress不支持多选项卡测试。没什么大不了的,你把新的窗口(或选项卡)操作存根,当测试中的应用程序触发该操作时,它只需在同一个窗口中打开URL。这是非常惊人的,因为您可以做到这一点几乎任何功能或流量。如果你没有很好的编程知识,那就不容易了。开发人员能帮上忙。

cypress不是什么
更新:Cypress4.0现在对跨浏览器测试的支持有限。覆盖Firefox和MS Edge(>=79)。

有趣的事实:MS Edge版本号从44.xx跃升到79.xx,当他们改变到chromium引擎时,他们的版本号将与Chrome同步...

目前不支持跨浏览器测试。你只能在Chrome中测试。

前面提到了后端、ui和e2e测试
Cypress通常用于测试html" target="_blank">前端或ui。它可以用于集成测试,也可以用于单元测试(使用类似jest的东西可能更好)。它还能够使用cy.request命令激发REST请求。您可以使用javascript编写一些API测试,但像postman这样的工具更适合用于API的综合测试套件。

Selenium可以类似地用于UI、API和e2e测试。您不能将它用于较低级别的集成测试或单元测试。他们有可以帮助您进行REST(API)测试的库,但是您可能想要对大型套件使用API测试工具。cypress和Selenium都支持API测试,以允许发送调用来加速测试(登录到后端并获得添加到本地存储中的令牌,而不是访问UI并让它为您处理令牌设置)。

 类似资料:
  • 我正在使用Cucumber结合Serenity框架编写一些BDD自动化测试。在我的BDD测试中,我需要一些超时机制,这样如果cucumber场景或Serenity中的一个步骤花费的时间太长,它就会超时,测试就会失败。 我在下面的链接中发现了一些信息:https://groups.google.com/forum/#!topic/cukes/QaPvVMnqDvE 因此,对于Cucumber,步骤定

  • 问题内容: 我是Java开发人员。是否有一些适用于Java的Django / Rails- Ruby框架?我不喜欢为我做的每个项目创建管理面板。一次又一次地做同样的事情很无聊。另外,对于我的新项目,我的截止日期很短,我想使用某种Java框架来加快开发速度。 问题答案: 最近,我发现了一个看起来非常像django的框架。它称为playframework,您可以在这里找到它: http://playf

  • 问题内容: 我正在寻找提供以下内容的C ++数据库缓存框架: 通过某种伪语言(宏/模板)生成对象/表表示 在需要时通过键从数据库检索对象 LRU缓存 立即和延迟更新对象更新数据库(通过getter / setter方法) 问题答案: 尝试使用LiteSQL和Hiberlite,看看它们是否对您有用。

  • 本文向大家介绍浅谈laravel框架与thinkPHP框架的区别,包括了浅谈laravel框架与thinkPHP框架的区别的使用技巧和注意事项,需要的朋友参考一下 主要区别:(thinkPHP更适合国人的编码习惯) 1、渲染模版方式的不同: 在Laravel框架里,使用return view()来渲染模版; 而ThinkPHP里则使用了$this->display()的方式渲染模版; 2、在Lar

  • 我正在使用cucumber框架进行移动应用程序测试。在pom.xml中,我给出了下面这个插件来运行TestClass.java--它有上传应用程序最新apk版本的代码。Main方法存在于这个TestClass中。我需要在实际测试执行之前运行这个。如果我使用pom.xml-->mvn clean test运行,我会得到这个错误。ClassNotFoundExpection总是与pom.xml一起抛出

  • 我们有一个现有的应用程序,测试是用Cypress编写的。我们现在想要集成一个cucumber样式的特性,它将在内部使用Cypress运行。我们使用了。我遵循了github页面上给出的步骤。我现在面临的问题是,在运行测试时,它显示了两个场景,但只运行一个场景。在它旁边显示一个绿色刻度线,但不启动第二个,时钟继续滴答滴答。单击cypress launcher中的第二个场景时,它会显示- 我试过什么: