测试方法

通常有如下几种测试方法:

单元测试(Unit Test)

单元测试,顾名思义,就是对应用中的某一个功能单元进行测试,这个功能单元可以是一个组件,也可以是一个函数。通常我们会对应用中全局通用的组件和函数进行单元测试。一是因为这些组件和函数相对来说比较独立,二是有时候在集成测试的时候,不容易创建测试场景。

这里是单元测试的样例open in new window

集成测试(Integration Test)

集成测试,是将应用中多个模块集成在一起进行测试。在我们的测试代码中,大部分测试用例应该都是集成测试。因此只有集成测试才能保证多个模块集成在一起之后的功能是符合预期的。单元测试虽然能保证单个功能单元的表现符合预期,但是不能保证多个单元集成在一起之后的功能是否符合预期。

这里是集成测试的样例open in new window

端到端测试(E2E Test)

端到端(End-to-End)测试是对整个应用整体进行测试。端到端测试会将前端和后端放在一起进行测试,来保证整个系统是正常工作的。端到端测试其实就在模拟用户是如何使用系统的。

这里是端到端测试的样例open in new window

测试工具

Jest

Jestopen in new window 是一款全功能测试框架,并且在逐步成为测试 JavaScript 应用程序的事实上的标准。

Jest 非常灵活,且提供了丰富的配置项。Jest 既支持对前端应用进行测试,也支持对后端服务进行测试。

Testing Library

Testing Libraryopen in new window 是一个测试工具和库的集合。Test Library 旨在让我们能像现实用户使用系统一样测试我们的应用,而不是局限在测试应用的实现细节。

举个例子,我们不应该测试当前组件的状态值是多少,而是应该测试当前组件展示在屏幕中的样子。这样的话,如果我们重构了代码,修改了组件的状态管理代码,但是我们的测试用例依然是有效的,因为组件展示的样子没有变。

Cypress

Cypressopen in new window 是一款自动实行端到端测试的自动化工具。

我们定义一个真实用户会对应用进行怎样的操作,然后 Cypress 工具负责执行这些操作。

Cypress 有两种模式:

  • 浏览器模式 -- 会启动一个浏览器来执行测试用例。在用例执行过程中,我们可以使用很多工具来可视化的观察应用的状态变化。我们通常在本地开发的时候会使用浏览器模式。
  • 无头模式 -- 会启动一个无头浏览器来执行测试用例。非常适合在 CI/CD 中使用。

Cypress 支持配置各种插件和命令,我们甚至可以将其与 Testing Library 进行集成。Cypress 也支持自定义命令,通过自定义命令,我们可以对一些通用任务进行抽象,然后集成到测试中去。

这里是自定义 Cypress 命令的样例open in new window

关注微信公众号,获取最新推送~