1

我们已经将 React JS 用于前端,我们需要编写端到端测试。在网上研究后,我们遇到了 2 个选项:

1. Selenium WebDriver
2. React Test Utils (https://reactjs.org/docs/test-utils.html)

我的理解是,使用 React Test Utils,您可以模拟点击并使用 findRenderedDOMComponentWithXXX 等方法检查 HTML 元素的状态,并且您可以从命令行运行这些测试,这样它们会更快。

Selenium 做同样的事情,但在浏览器中,它将允许您以行为驱动开发风格编写测试(使其更具可读性)

我的困惑:

  1. 我们可以使用 React Test Utils 来测试一个完整的网页(复杂的组件)还是只测试简单的定制组件更好。例如:如果我们有一个像 Tasks 这样的组件,它允许您添加任务、删除任务、更改优先级,它使用 Input、DropDown 和 Toggle 等组件。

    因此,将 React Test Utils 用于整个 Tasks 组件是一个好主意,还是我们应该将它用于较小的单个组件,例如 Input、DropDown、Toggle

  2. 要测试完整的任务组件,请使用 Selenium 编写端到端测试。

其他几点:

  1. React Test Utils 中的模拟方法需要传递事件数据,这会增加少量工作。

如果有人可以帮助我理解两者之间的区别,那就太好了。

4

1 回答 1

2

您可以同时使用 Jest 和 Selenium。不要将自己局限于一个。当您根据具体需要测试的内容进行测试驱动开发甚至行为驱动开发时,您可能甚至会超越这两个。在我看来,Jest 本身并不能真正模拟 UAT。您需要打开浏览器来完全模拟用户体验,但这些浏览器测试可能只是相对于您所有测试的一小部分测试。这么多人远离 selenium 的原因是它的配置和维护过于庞大。还有速度和可靠性。

近年来,基于浏览器的测试出现了更新的工具:

傀儡师

https://github.com/GoogleChrome/puppeteer

Nightwatch.js

http://nightwatchjs.org

此外,您的特定编程语言为测试提供了额外的功能和增强功能。许多 Java 开发人员在他们的测试中使用 Maven 和 TestNG 来构建和调试他们的测试。Ruby 开发人员可能会使用 RSpec。无论您使用什么测试运行器,它都可能在后端包含多个依赖项,用于各种测试工具,用于 linting、html 校对、功能、DevSecOps、数据库迁移甚至拼写检查。关键是将您认为需要的所有测试组合在一个测试运行程序中(最好,或尽可能少)。然后在 CI/CD 管道中背靠背地运行它们;像 Jenkins 在部署更改之前一样。如果任何一个失败,那么你的构建就会实时失败。

如果您想在管道中运行多个 API 测试,Newman 看起来相当不错,可以将您可能已经在 CI/CD 管道中放置的 Postman 测试合并。当然,您也可以构建 http 客户端,但并不是每个人都具备编码技能,因此您首先选择的工具也应该与您可用的技能组合相辅相成。

Smart Bear 现在还有几个工具可以在 CI/CD 管道中运行,用于 SOAP 和 UI 测试,但这些工具比开源替代品要贵得多。

于 2019-03-26T03:14:24.210 回答