什么是单元测试
- 在计算机编程中,单元测试又称为模块测试,是针对程序模块来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类、抽象类、或者派生类中的方法。
单元测试和集成测试的区别
- 回到测试的本质来看,测试工作就是模拟真实环境,在代码正式上线前进行验证的工作,即使没有任何工具和方法,这项工作也能够通过人工操作来手动完成。但这种方式显然不符合软件从业者的习惯,于是开始出现了各种各样的自动化测试方法,框架和工具。
- 首先需要达成一致的是,无论是单元测试还是集成测试,它们都是自动化测试。为了更好地区分,我们可以这样理解:和生产代码以及单元测试代码在同一个代码仓库中,由开发同学自己编写的,对外部环境(数据库、文件系统、外部系统、消息队列等)有真实调用的测试就是集成测试。下表中也从各种角度来对比了单元测试、集成测试和系统级别测试(包括端到端测试、链路测试、自动化回归测试、UI测试等)的区别。
单元测试 |
集成测试 |
系统级别测试 |
|
编写人员 |
开发 |
开发 |
开发 / 测试 |
编写场地 |
生产代码仓库内 |
生产代码仓库内 |
生产代码仓库内 / 生产代码仓库外 |
编写时间 |
代码发布前 |
代码发布前 |
代码发布前 / 代码发布后 |
编写成本 |
低 |
中 |
高 |
编写难度 |
低 |
中 |
高 |
反馈速度 |
极快,秒级 |
较慢,分钟级 |
慢,天级别 |
覆盖面积 |
代码行覆盖60-80% 分支覆盖40-60% |
功能级别覆盖HappyPath |
核心保障链路 |
环境依赖 |
代码级别,不依赖环境 |
依赖日常或本地环境 |
依赖预发或生产环境 |
外部依赖模拟 |
全部模拟 |
部分模拟 |
不模拟,完全使用真实环境 |