- 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/
我需要开发一个简单的网站,我通常使用 bootstrap CSS 框架,但是我想使用 Gumbyn,它允许我使用 16 列而不是 12 列。 我想知道是否: 我可以轻松地改变绿色吗? 如何使用固定布局
这个问题在这里已经有了答案: 关闭 13 年前。 与直接编写 PHP 代码相比,使用 PHP 框架有哪些优点/缺点?
我开发了一个 Spring/JPA 应用程序:服务、存储库和域层即将完成。 唯一缺少的层是网络层。我正在考虑将 Playframework 2.0 用于 Web 层,但我不确定是否可以在我的 Play
我现有的 struts Web 应用程序具有单点登录功能。然后我将使用 spring 框架创建一个不同的 Web 应用程序。然后想要使用从 struts 应用程序登录的用户来链接新的 spring 应
我首先使用Spark框架和ORMLite处理网页上表单提交的数据,在提交中文字符时看到了unicode问题。我首先想到问题可能是由于ORMLite,因为我的MySQL数据库的字符集已设置为使用utf8
我有一个使用 .Net 4.5 功能的模块,我们的应用程序也适用于 XP 用户。所以我正在考虑将这个 .net 4.5 依赖模块移动到单独的项目中。我怎样才能有一个解决方案,其中有两个项目针对不同的版
我知道这是一个非常笼统的问题,但我想我并不是真的在寻找明确的答案。作为 PHP 框架的新手,我很难理解它。 Javascript 框架,尤其是带有 UI 扩展的框架,似乎通过将 JS 代码与设计分开来
我需要收集一些关于现有 ORM 解决方案的信息。 请随意编写任何编程语言。 你能谈谈你用过的最好的 ORM 框架吗?为什么它比其他的更好? 最佳答案 我使用了 NHibernate 和 Entity
除了 Apple 的 SDK 之外,还有什么强大的 iPhone 框架可供开始开发?有没有可以加快开发时间的方法? 最佳答案 此类框架最大的是Three20 。 Facebook 和许多其他公司都使用
有人可以启发我使用 NodeJS 的 Web 框架吗?我最近开始从免费代码营学习express js,虽然一切进展顺利,但我对express到底是什么感到困惑。是全栈框架吗?纯粹是为了后端吗?我发现您
您可以推荐哪种 Ajax 框架/工具包来构建使用 struts 的 Web 应用程序的 GUI? 最佳答案 我会说你的 AJAX/javascript 库选择应该较少取决于你的后端是如何实现的,而更多
我有生成以下错误的 python 代码: objc[36554]: Class TKApplication is implemented in both /Library/Frameworks/Tk.
首先,很抱歉,如果我问的问题很明显,因为我没有编程背景,那我去吧: 我想运行一系列测试场景并在背景部分声明了几个变量(我打印它们以仔细检查它们是否已正确声明),第一个是整数,另外两个字符串为你可以看到
在我们承担的一个项目中,我们正在寻找一个视频捕获和录制库。我们的基础工作(基于 google 搜索)表明 vlc (libvlc)、ffmpeg (libavcodec) 和 gstreamer 是三
我试过没有运气的情况下寻找某种功能来杀死/中断Play中的正常工作!框架。 我想念什么吗?还是玩了!实际没有添加此功能? 最佳答案 Java stop类中没有像Thread方法那样的东西,由于种种原因
我们希望在我们的系统中保留所有重大事件的记录。例如,在数据库可能存储当前用户状态的地方,事件日志应记录对该状态的所有更改以及更改发生的时间。 事件记录工具应该尽可能接近于事件引发器的零开销,应该容纳结
那里有 ActionScript 2.0/3.0 的测试框架列表吗? 最佳答案 2010-05-18 更新 由于这篇文章有点旧,而且我刚刚收到了赞成票,因此可能值得提供一些更新的信息,这样人们就不会追
我有一个巨大的 numpy 数组列表(一维),它们是不同事件的时间序列。每个点都有一个标签,我想根据其标签对 numpy 数组进行窗口化。我的标签是 0、1 和 2。每个窗口都有一个固定的大小 M。
我是 Play 的新手!并编写了我的第一个应用程序。这个应用程序有一组它依赖的 URL,从 XML 响应中提取数据并返回有效的 URL。 此应用程序需要在不同的环境(Dev、Staging 和 Pro
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
我是一名优秀的程序员,十分优秀!