自动化测试相关概念
一、黑盒测试与白盒测试
1、黑盒测试
黑盒测试一般也被称为功能测试,黑盒测试要求测试人员将程序看作一个整体,不考虑其内部结构和特性,只是按照期望验证程序是否能正常工作。
2、白盒测试
白盒测试是基于代码本身的测试,一般指对代码逻辑结构的测试。
二、测试类型
1、单元测试
单元测试(Unit Test)即测试单独隔离的部分是否正常工作,是项目中数量最多、覆盖率最高的测试,能进行单元测试的函数/组件一定是低耦合的,这也从一定程度上保证了代码质量。常见的框架有 Mocha, Ava, Karma, Jest, Jasmine, Vitest 等。
2、集成测试
集成测试(Integration Test)即测试多个单元能否协调共同工作,通常被应用在:耦合度较高的函数/组件、经过二次封装的函数/组件、多个函数/组件组合而成的函数/组件等。常见的框架有 ReactTestUtils, Test Render, Enzyme, React-Testing-Library, Vue-Test-Utils 等
3、端到端测试
E2E(end to end)端到端测试是最直观可以理解的测试类型。在前端应用程序中,端到端测试可以从用户的视角通过浏览器自动检查应用程序是否正常工作。
4、UI 测试
UI 测试(UI Test)是脱离真实后端环境的前端测试,仅将前端放在真实环境中运行,而后端和数据是使用 Mock 的。
需要注意的是,UI 测试(UI Test)与端到端测试(E2E Test)是不同的,端到端测试是将整个应用放到真实的环境中运行,包括数据在内也是需要使用真实的。
三、测试思想
1、TDD
TDD:Test-Driven Development(测试驱动开发):要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行。
2、BDD
BDD:Behavior-Driven Development(行为驱动开发):可以让项目成员(甚至是不懂编程的)使用自然语言来描述系统功能和业务逻辑,从而根据这些描述步骤进行系统自动化的测试。
3、TDD 与 BDD 的区别
功能 | TDD | BDD |
---|---|---|
定义 | 测试驱动开发 | 行为驱动开发 |
代码覆盖率 | 高 | 一般 |
软件安全感 | 高 | 一般 |
测试类型 | 单元测试 | 集成测试 |
代码解耦 | 一般 | 高 |
开发效率 | 一般 | 高 |
代码质量 | 高 | 一般 |
测试代码量 | 高 | 低 |
四、测试覆盖率
测试覆盖率 (test coverage) 是衡量软件测试完整性的一个重要指标。掌握测试覆盖率数据,有利于客观认识软件质量,正确了解测试状态,有效改进测试工作。包括:
1、代码覆盖率
代码覆盖率是一种面向软件开发和实现的定义。它关注的是在执行测试用例时,有哪些软件代码被执行到了,有哪些软件代码没有被执行到。被执行的代码数量与代码总数量之间的比值,就是代码覆盖率。
2、需求覆盖率
对于黑盒测试,例如功能测试/集成测试/系统测试等来说,测试用例通常是基于软件需求而不是软件实现所设计的。因此,度量这类测试完整性的手段一般是需求覆盖率,即测试所覆盖的需求数量与总需求数量的比值。