测试框架

Web Test CheatSheet | Web 自动化测试概述

自动化测试(Automated Test)即指利用一系列自动化测试工具自动执行测试脚本、生成输出结果以及进行结果的回归对比。用户验收测试(User Acceptance Test, UAT)又被成为 Beta 测试、应用测试或者终端用户测试,其类似于端到端测试,即在真实环境中以真实的用户逻辑对应用进行完整地测试。单元测试、端到端测试与集成测试,在单元测试中我们应该尽可能地独立于副作用;在集成测试中,我们应该尽可能地独立于数据。端到端测试(End-to-end Test)旨在完全真实的用户运行环境中模拟用户交互逻辑对于单元功能或某条用户逻辑线。

Web 测试思维脑图

在笔者看来,目前我们基于 Mocha、Jest、Karma 这些测试框架一次编码多次运行的测试应该都是自动化测试,自动化测试与手动测试的区别在于自动化测试不会依赖于测试数据。在早期的测试,特别是需要依赖于外部数据的测试中,我们往往需要根据外部数据来修改测试用例以保证测试的准确性。譬如我们在测试。端到端测试侧重于介绍所谓的自动化浏览器相关的技术与框架,而集成测试则偏重于介绍测试用例的构建理念。

对于纯 JavaScript 相关的代码我们可以运行在 Node 环境中,往往从测试耗时与可操作性上来看会好上很多。笔者个人是比较推荐尽可能地编写同构(Isomorphic)代码,即可以同时运行在 Node.js 环境与浏览器环境中的代码。譬如我们推荐使用 fetch 函数来进行数据抓取,如果我们直接在代码中使用浏览器自带的 fetch 或者 whatwg-fetch 这样强耦合于浏览器环境的 Polyfill,就会限制我们的代码必须运行在,其代码并不复杂,其只是在 package.json 进行了不同环境的入口声明。

测试金字塔

单元测试、集成测试与端到端测试是最为广泛的抽象测试分类方式,这三种不同的测试方法在前、后端以及基础架构中都有不同的表现与落地方式。

测试金字塔

Unit Test | 单元测试

单元测试又称模块测试,针对软件设计中的最小单位——程序模块,进行正确性检查的测试工作。某个函数、模块可能是基础的单元,Web 开发中某个组件、控件也是基础单元。

Integration Test | 集成测试

集成测试又叫组装测试,通常在单元测试的基础上,将所有程序模块进行有序的、递增测试。重点测试不同模块的接口部分。多个类、函数的协同、对于某个具体的接口及其背后的一连串本地或者远程的服务调用、一个完整的功能回环流程。

End-to-end Test | 端到端测试

端到端测试指的是将整个软件系统看成一个整体进行测试,包括对功能、性能以及软件所运行的软硬件环境进行测试。有时候也会存在验收测试,指按照项目任务书或合同、供需双方约定的验收依据文档进行的对整个系统的测试与评审,决定是否接收或拒收系统。

Links