gpt4 book ai didi

cypress - cypress 和像 cucumber 这样的 BDD 框架之间的区别

转载 作者:行者123 更新时间:2023-12-01 22:07:35 30 4
gpt4 key购买 nike

有人可以向我解释 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...



目前不支持跨浏览器测试。您只能在 chrome 中进行测试。

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

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

听起来您对自动化测试还很陌生。一开始很艰难,但这是一个很棒的领域。我会更详细地研究我上面提到的一些东西。请随时要求更多说明。测试愉快!!!

关于cypress - cypress 和像 cucumber 这样的 BDD 框架之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47281710/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com