跳到主要内容

软件测试

Create by fall on 2022-09-26 Recently revised in 2022-09-26

The more your tests resemble the way your software is used, the more confidence they can give you.

测试的类型

单元测试:检查给定函数、类或组合式函数的输入是否产生预期的输出或副作用

组件测试:检查组件是否正常挂在渲染、是否可与之互动,以及表现是否符合预期,导入了更多的代码,更复杂,需要更多的时间执行。

端到端测试:检查跨越多个页面的功能,并对生产构建的 Vue 进行实际的网络请求,测试到数据库或者其它后端。

单元测试

测试函数的业务逻辑和逻辑正确性。

为了验证小的、独立的代码单元是否按预期工作。

单元测试通常适用于独立的业务逻辑、组件、类、模块或函数,不涉及 UI 渲染、网络请求或其他环境问题。

比如在 vue 中,需要对组合式函数进行编写测试,react 中,则是 use 开头的 hooks

组件测试

测试这个组件做了什么,而不是测试它是怎么做到的

从粒度的角度来看,组件测试位于单元测试之上,可以被认为是集成测试的一种形式。

组件测试应该像用户那样点击一个元素,而不是编程式地与组件进行交互。

  • 对于视图:根据 prop 和插槽断言渲染是否正确
  • 对于交互:断言渲染的更新是否正确或触发的事件是否正确响应了用户输入事件。

应避免的做法

不要去断言一个组件实例的私有状态或测试一个组件的私有方法。测试实现细节会使测试代码太脆弱,因为当实现发生变化时,它们更有可能失败并需要更新重写。

组件的最终工作是渲染正确的 DOM 输出,所以专注于 DOM 输出的测试提供了足够的正确性保证(如果你不需要更多其他方面测试的话),同时更加健壮、需要的改动更少。

不要完全依赖快照测试。断言 HTML 字符串并不能完全说明正确性。应当编写有意图的测试。

如果一个方法需要测试,把它提取到一个独立的实用函数中,并为它写一个专门的单元测试。如果它不能被直截了当地抽离出来,那么对它的调用应该作为交互测试的一部分。

端到端测试(E2E)

当用户实际使用时,用户的体验如何。

E2E 测试重点是多页面的应用表现,针对你的应用在生产环境下进行网络请求。他们通常需要建立一个数据库或其他形式的后端,甚至可能针对一个预备上线的环境运行。

端到端测试通常会捕捉到路由、状态管理库、顶级组件(常见为 App 或 Layout)、公共资源或任何请求处理方面的问题。如上所述,它们可以捕捉到单元测试或组件测试无法捕捉的关键问题。

端到端测试不导入任何应用的代码,而是完全依靠在真实环境中浏览整个应用来测试你的应用。

参考文章

作者(文章名称)连接
vue官方文档https://cn.vuejs.org/guide/scaling-up/testing.html