- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有人可以向我解释 cypress.io 作为测试框架和像 cucumber 这样的 BDD 框架之间的区别,例如
据我了解 cypress.io 是一个用于 javascript 的 ui 测试框架。
测试是用javascript编写的。
您可以使用场景将通过应用程序的流程描述为 e2e-test。
这类似于行为测试还是这个框架只关注用户界面?
有人走到拐角处说:Cucumber 或 JBehave 与 cypress 相同。我担心那不是真的。但是可以回答的论点是什么。
我不开发网络应用程序,我很难比较这两种解决方案。
我试图澄清我的问题:
想象一下,有一个具有后端服务的应用程序和一个使用这些服务的前端(Web 应用程序)。后端代表复杂的工作流程,整个应用程序应通过 BDD 框架(例如 cucumber )进行测试。主要的好处是通过功能和场景描述提供一种最新的文档。它是像 Cucumber 这样的框架的核心。另一个好处当然是(也许是 e2e)测试本身。为了有值(value),它需要 ui-testing 来测试整个工作流程。例如你可以用 Selenium 和 cucumber 来解决这个问题。我认为cypress是一种类似于selenium的测试框架,对吗?只是在很多方面要好得多。但有人可能会说:“哦……cypress 和cucumber 一样,因为你也可以定义场景等等……但是我相信,当我们考虑BDD 时,cypress 必须与cucumber 结合使用,而不是作为一个新的独立 BDD 工具。在我看来,cypress 是一个很棒的 ui 测试框架,但......不是更多?!我在这里宣布我的问题是为了寻找澄清的答案。
最佳答案
你在你的帖子中触及了很多东西。我想尝试帮助进行一些一般分类,这些分类可能会帮助您了解使用不同技术将获得什么。
BDD(行为驱动开发):
这与其说是一种技术,不如说是一种“测试方式”。在名称和首字母缩略词上类似于 TDD,但在方法上却大不相同。 TDD 的思想是在开始编码之前编写一组测试,并且您编写的代码应该在通过这些测试时完成。最常由开发人员在开发过程中完成。一个非常重要的区别是 TDD 确实会测试实现。 BDD 没有。您想否定实现,只测试应用程序的行为或面向用户的功能。这并不意味着它始终是最终用户。您可以使用 BDD 样式测试来测试后端。重要的是,使用 BDD,您关心输出,而不应该测试实现。
柏树与 cucumber :
这是两件不同的事情。 Cypress CAN use Cucumber( here is a link of a package that helps you do just that ) 默认情况下,它使用 Mocha,这是另一种可用于组织测试的 BDD 语法...重要提示:Cucumber 是一种语法,您的代码被 GIVEN、WHEN 或 THENS 引用代表先决条件?设置,测试中的操作和预期结果。 Cucumber 很酷的一点是你的代码被这些 GIVEN/WHEN/THEN“步骤”调用。为什么重要的是有人阅读测试,他们可以确定如果 GWT 步骤是不同测试中的相同步骤,两者都会使用相同的底层代码......非常酷,是吧? Cucumber 是一种编写高度可读的测试并允许其他人阅读或编写测试的方法,现在底层代码将相同。您可以通过重新组织 GWT 来编写新的测试!您还可以使用 RegEx 表达式来允许测试用例参数化。您甚至可以将这些参数连接到数据表!这是一个 EXAMPLE
Cypress.IO 与 Selenium 有何不同?
这可能是一篇完整的文章。我将介绍对我来说最重要的区别。架构...这是一个link到来自 this post 的图表.这有什么意义?被测应用程序在由 cypress 控制的容器内运行。这允许测试人员 stub 请求(向内数据)和 spy 或模拟数据(向外数据)。这超出了明显的网络流量。您甚至可以 stub 浏览器的功能。 Cypress 不支持多标签测试。没什么大不了的,你 stub 新窗口(或标签) Action ,当被测应用程序触发时,它只是在同一窗口中打开 URL。这简直太棒了,因为您几乎可以使用任何功能或流量来做到这一点。但是,如果您没有不错的编程知识,这并不容易。开发人员可以提供帮助。
柏树不是什么
更新:跨浏览器测试现在对 Cypress4.0 的支持有限。涵盖 Firefox 和 MS Edge(>=79)。
Fun fact: MS Edge version numbers jumped from 44.xx to 79.xx when they changed to the chromium engine so that their version numbers would sync with chrome...
cy.request
触发 REST 请求。命令。您可以使用一些 javascript 编写一些 API 测试,但是像 postman 这样的工具对于 API 的综合测试套件会更好。
关于cypress - cypress 和像 cucumber 这样的 BDD 框架之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47281710/
平时很少在jquery中用到this。查看代码时发现用到了,就调试出this的值,心想原来如此。还是挺有用的。这里总结一下this与$(this)的区别和使用。 $(this)生成的是什么?
使用单例类和应用程序范围的托管 bean 来保存应用程序数据有区别吗? 我需要查找某些 JNDI 资源,例如远程 bean 接口(interface),因此我为自己编写了一个单例来缓存我的引用并且只允
如果您仔细查看包含的图片,您会注意到您可以使用 Eclipse IDE 重构 Groovy 代码并将方法转换为闭包,反之亦然。那么,闭包到底是什么,它与方法有什么不同呢?有人可以举一个使用闭包的好例子
vagrant box repackage有什么区别( docs ) 和 vagrant package ( docs )? 我意识到 vagrant package仅适用于 VirtualBox 提
我想看看是否有人可以解释为什么以下代码适用于 valueOf 但不适用于其他代码。 import java.math.BigDecimal; public class Change { publ
这个问题已经有答案了: 已关闭12 年前。 Possible Duplicates: What is Closures/Lambda in PHP or Javascript in layman te
This question already has answers here: Vagrant, Docker, Puppet, Chef (3个答案) 2年前关闭。 docker和chef有什么共同
以下代码在95%的机器上产生相同的输出,但是在几台机器上却有所不同。在 Debug模式下,输出: Changing from New to Fin OK 但在 Release模式下: Changing
////Creating Object var Obj; // init Object Obj= {}; 它们之间有什么区别两个? 有没有可能把它变成一个单行? 这样使用有什么好处吗?
我想找出定时器服务之间的区别。我应该使用哪个以及何时使用。我正在使用 Jboss 应用服务器。 1) java.ejb.Schedule。 @Schedule注解或配置自xml。 2) javax.e
我发现在 C++ 中可以通过三种不同的方式将对象传递给函数。假设我的类(class)是这样的: class Test { int i; public: Test(int x);
有什么区别。 public class Test { public static void main(String args[]) { String toBeCast = "c
如果我有一列,设置为主索引,设置为INT。 如果我不将其设置为自动递增,而只是将唯一的随机整数插入其中,与自动递增相比,这是否会减慢 future 的查询速度? 如果我在主索引和唯一索引为 INT 的
这两种日期格式有什么区别。第一个给出实际时间,第二个给出时间购买添加时区偏移值。 NSDateFormatter * dateFormatter = [[NSDateFormatter alloc]
如果有一个函数,请说foo: function foo() { console.log('bar'); } 那么在 JavaScript 中,从另一个函数调用一个函数有什么区别,如下所示: f
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 4 年前。 Improv
代码是什么: class Time { private: int hours; int minutes; int seconds; pu
我知道这是非常基本的,但有人介意解释一下这两个数组声明之间的区别吗: #include array myints; ...和: int myints[5]; ...以及为什么 myints.size
我学会了如何根据 http://reference.sitepoint.com/css/specificity 计算 css 特异性但是,基于this reference,我不明白伪类(来自c)和伪元
为什么在运行 2) 时会出现额外的空行?对我来说 1 就像 2。那么为什么 2) 中的额外行? 1) export p1=$(cd $(dirname $0) && pwd) #
我是一名优秀的程序员,十分优秀!