返回UI 测试手册
React
章节
  • 简介
  • 视觉
  • 组合
  • 交互
  • 可访问性
  • 用户流程
  • 自动化
  • 工作流
  • 结论

UI 测试入门

最新生产就绪的 UI 测试技术
此社区翻译尚未更新到最新的 Storybook 版本。请将英文指南中的更改应用到此翻译中,帮助我们更新它。 欢迎提交 Pull Request.
本指南专为经验丰富的 专业开发者 设计,他们熟悉 JavaScript、React 和 Storybook。如果您还没有达到这个水平,请访问 Storybook 入门 了解基础知识!

UI 测试很棘手。用户期望频繁发布并包含大量功能。但是每个新功能都会引入更多的 UI 和新的状态需要您进行测试。每个测试工具都承诺“简单、不飘忽、快速”,但在细则中有取舍。

领先的前端团队是如何跟上的?他们的测试策略是什么?他们使用什么方法?我研究了 Storybook 社区的十个团队,了解哪些方法有效——Twilio、Adobe、Peloton、Shopify 等。

本指南重点介绍了规模化工程团队使用的 UI 测试技术。您将了解如何实施一种实用的测试策略,该策略平衡了覆盖率、设置和维护。在此过程中,我将指出需要避免的陷阱。

需要测试什么?

所有主流的 JavaScript 框架都采用 组件驱动。这意味着 UI 是从“自底向上”构建的,从原子组件开始,然后逐渐组合成页面。

请记住,每个 UI 元素现在都是一个组件。是的,包括页面。页面和按钮之间的唯一区别在于它们如何消耗数据。

因此,UI 测试现在等同于组件测试。

Component hierarchy: atomic, compositions, Pages and Apps

对于组件而言,不同测试方法(单元、集成、端到端)之间的区别可能很模糊。相反,让我们专注于 UI 的不同可测试特性。

视觉

视觉测试可验证给定的一组 props 和状态,组件是否正确渲染。它们通过为每个组件截取屏幕截图并进行提交到提交的比较来工作,以识别更改。

组合

组件是相互关联的,数据在它们之间流动。您可以对更高级别的组件和页面运行视觉测试来验证这种集成。

交互

交互测试可验证事件是否按预期处理。它们首先在隔离环境中渲染组件。然后模拟用户行为,例如单击或输入。最后,验证状态是否已正确更新。

可访问性

可访问性测试可发现与视觉、听觉、运动能力和其他残疾相关的可用性问题。使用 Axe 等自动化工具作为第一道 QA 来捕获明显的无障碍违规。然后,在真实设备上进行手动 QA,以解决需要人工关注的棘手问题。

用户流程

即使是最基本的操作也需要用户完成一系列跨多个组件的步骤。这是另一个潜在的故障点。Cypress 和 Playwright 等工具允许您针对完整应用程序运行测试以验证此类交互。

理解工作流程

我们已经涵盖了 UI 需要测试的各个方面,但了解如何将它们组合成一个富有成效的工作流程很棘手。如果处理不当,UI 开发过程将感觉像是一个苦差事。只要有细微的实现调整,您的测试就会中断。您必须为每个工具重复测试用例,所有这些都会导致维护噩梦。

我采访的团队尽管规模和技术栈不同,但都有相似的策略。我已将这些经验提炼成这个实用的工作流程

  • 📚 使用 Storybook **隔离组件**。编写测试用例,其中使用 props 和模拟数据重现每种状态。
  • ✅ 使用 Chromatic **捕获视觉错误并验证组合**。
  • 🐙 使用 VitestTesting Library **验证交互**。
  • ♿️ 使用 Axe **审核组件的可访问性**。
  • 🔄 使用 Cypress **编写端到端测试,验证用户流程**。
  • 🚥 使用 GitHub Actions **自动运行测试,捕获回归**。

开始测试

在接下来的章节中,我们将深入探讨测试堆栈的每一层,并深入研究实现此测试策略的机制。但首先,我们需要一些东西来测试。我将使用 Taskbox 应用程序作为示例。它是一个类似于 Asana 的任务管理应用程序。

请注意,实现细节并不重要,因为我们更关注如何测试此 UI。我们在这里使用 React,但请放心;这些测试概念扩展到所有基于组件的框架。

要获取代码,请运行以下命令

# Clone the template
npx degit chromaui/ui-testing-handbook-react-template ui-testing-guide-code

cd ui-testing-guide-code

# Install dependencies
yarn

初始化一个新的 GitHub 存储库 并将其与本地项目同步。

git init
git add .
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/<your username>/ui-testing-guide-code.git
git push -u origin main
将您的代码与本章同步。在 GitHub 上查看 6b9ff97。
这个免费指南对您有帮助吗?发推文表示赞赏并帮助其他开发者找到它。
下一章
视觉
了解如何自动精确定位 UI bug
✍️ 在 GitHub 上编辑 – PR 欢迎!
加入社区
7,424开发者及更多
原因为什么选择 Storybook组件驱动的 UI
文档指南教程更新日志遥测
社区插件参与进来博客
展示探索关于
开源软件
Storybook - Storybook 中文

特别感谢 Netlify CircleCI