您在帖子中涉及很多内容。我想尝试帮助您进行一些一般分类,这些分类可能会帮助您了解使用不同技术会得到什么。
BDD(行为驱动开发):
这与其说是一种技术,不如说是一种测试的“方式”。名称和首字母缩写词类似于 TDD,但方法非常不同。 TDD 是您在开始编码之前编写一组测试的想法,并且您编写的代码应该在通过这些测试时完成。最常由开发人员在开发过程中完成。一个非常重要的区别是 TDD 确实测试了实现。 BDD 没有。您想否定实现,只测试行为,或应用程序的面向用户的功能。这并不意味着它始终是最终用户。您可以使用 BDD 样式测试来测试后端。重要的是,使用 BDD,您关心输出并且不应该测试实现。
柏树 vs 黄瓜:
这是两个不同的东西。 Cypress 可以使用 Cucumber(here is a link of a package that helps you do just that) 默认情况下,它使用 Mocha,这是您可以用来组织测试的另一种 BDD 语法......表示前提条件?设置、测试中的操作和预期结果。 Cucumber 最酷的地方在于,这些 GIVEN/WHEN/THEN “步骤”调用了您的代码。为什么重要的是有人阅读测试,他们可以确定如果 GWT 步骤是不同测试中的相同步骤,那么两者都会使用相同的底层代码......很酷,是吧? Cucumber 是一种编写高度可读测试并允许其他人读取或编写测试的方式,现在底层代码将是相同的。您可以通过重新组织 GWT 来编写新的测试!您还可以使用 RegEx 表达式来允许测试用例参数化。您甚至可以将这些参数连接到数据表!这是EXAMPLE
Cypress.IO 与 Selenium 有何不同?
这可能是一篇完整的文章。我将介绍对我来说最重要的区别。架构...这是link 到this post 的图表。这有什么意义?被测应用程序在由 cypress 控制的容器内运行。这允许测试人员存根请求(向内数据)和窥探或模拟数据(向外数据)。这超出了明显的网络流量。您甚至可以存根浏览器的功能。赛普拉斯不支持多标签测试。没什么大不了的,你存根新窗口(或选项卡)操作,当被测试的应用程序触发它时,它只是在同一个窗口中打开 URL。这简直令人惊叹,因为您几乎可以使用任何功能或流量来做到这一点。如果您没有良好的编程知识,这并不容易。开发人员可以提供帮助。
柏树不是什么
更新:跨浏览器测试现在对 Cypress4.0 的支持有限。涵盖 Firefox 和 MS Edge(>=79)。
有趣的事实:MS Edge 版本号从 44.xx 跃升至 79.xx
更改为铬引擎,以便他们的版本号
与 chrome 同步...
目前不支持跨浏览器测试。您只能在 chrome 中进行测试。
您在上面提到了后端、ui 和 e2e 测试
Cypress 通常用于测试前端或 UI。它可以用于集成测试,也可以用于单元测试(使用 jest 之类的东西可能会更好)。它还可以使用cy.request 命令触发 REST 请求。您可以使用一些 javascript 编写一些 API 测试,但是像 postman 这样的工具对于 API 的全面测试套件会更好。
Selenium 可以类似地用于 UI、API 和 e2e 测试。您不能将其用于较低级别的集成测试或单元测试。他们有可以帮助您进行 REST(API) 测试的库,但您希望将 API 测试工具用于大型套件。 cypress 和 Selenium 都支持 API 测试,以允许发送调用以加速测试(登录后端并获取添加到本地存储的令牌,而不是点击 UI 并让它为您处理令牌设置)。
听起来您对自动化测试还是很陌生。起初很艰难,但这是一个伟大的领域。我会更详细地研究我上面提到的一些东西。随时要求更多说明。祝测试愉快!!!