1、单元测试概述

元测试 - 是对软件中的最小可测试单元进行检查和验证:API,函数。

测试用例 - 是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或合适是否满足某个特定需求

      输入 -> 执行条件 -> 预期结果

TDD

  - 测试驱动开发(Test-Driven Development),通过测试用例指引实际的开发,让开发首先站在全局的视角来看待需求

  - 从实现的角度

  - 需求分析 -> 编写单元测试 -> 编写代码使单元测试全部通过 -> 重构并重复测试

BDD

  - 行为驱动开发(Behavior Drivern Development),

  - 基于行为,更自然,前端开发更倾向于BDD

  - 从业务角度定义具体可衡量的目标 -> 找到可实现目标的方法 -> 编写单元测试 -> 实现行为 -> 检验产品运行结果是否符合预期

 

单元测试技术

  - 测试框架 

  - 断言库

  - mock 库

  - test runner 执行环境

  - 覆盖率工具

- 测试框架 

  - Qunit

  - jasmine

  - jest

  - mocha

  - intern

 

- 断言库 

  - chai

  - should

  - expect

  - assert

- 检查结果 - 提供了一套API,

帮助开发者在单元测试的过程中,

判断某个值是否符合预期

- mock库 

  - sinon

- 解决数据和外部依赖部分

不能控制、实现成本较高、操作危险等

- test runner 

  - karma

  - buster.js

 

-提供执行环境,管理执行流程,

有了执行环境

可以实现单元测试的自动化执行,

而不需要手动点开浏览器去执行,

也是单元测试可以成为重构

系统升级的一个基础

 

 

- 覆盖率工具 

  - Istanbul

- 帮助我们衡量单元测试的有效性

 

 

- 好的单元测试:

  - 可靠性

  - 可维护性

  - 可读性

- 编写可靠的测试:

  - 及时修改和维护

  - 避免测试中逻辑过多

  - 只测试单一的点

  - code review

  - 独立运行

  - 充分考虑边界条件

  - 模拟数据尽量贴近真实

- 编写可维护的测试:

  - 测试公有方法,私有方法变更和调用频繁

  - 移除重复代码

  - 保证setup方法的可维护

  - 测试隔离,不允许互相依赖

  - 单个测试中避免多个断言

- 编写可读的测试:

  - 命名的问题

  - 有意义的断言

  - 断言与操作分离

- 覆盖率:

  - 行覆盖率

  - 函数覆盖率

  - 分支覆盖率

  - 语句覆盖率

- 测试用例分类:

  - 数据层

  - 逻辑层

  - 工具类

  - 展示层

 

推荐书籍:软件测试、单元测试的艺术、修改代码的艺术、重构改善既有代码的设计

 

posted @ 2020-09-13 16:38  SlightFly  阅读(172)  评论(0编辑  收藏  举报