测试阶段
单元测试
定义
对软件的最小可测试单元进行测试(函数、模块)原则
1. 尽可能保证测试用例是相互独立反面教材:
2. 一般由代码的开发人员负责(保证所开发的代码符合自己的设计)益处
1. 能够尽可能早地发现缺陷(越早发现,代价越低)2. 有利于重构(软件开发不变的就是重构)3. 有利于简化集成 (通过单元测试,保证小的单元模块的正确性和稳定性,从而在集成测试的阶段,能够将精力聚焦于模块之间的关系上)4. 文档(现代敏捷测试,推崇减少文档,利用单元测试,生成“代码文档”。那么,通过阅读单元测试的代码,能够基本了解该模块的功能,从而减少文档)5. 用于设计(将设计思路体现在单元测试的组织中,单元测试设计的本身可以验证设计?)单元测试局限性
1. 不可能覆盖所有路径(因而不可能保证捕捉到所有路径的错误)2. 存在投入和产出的平衡(对于1行代码,通常需要3-5行测试代码)Junit demo
集成测试
定义
经过单元测试的模块,按照概要设计组装起来,验证是否达到或完成预期效果主要实施方案
1. Big bang (大杂烩,糅合在一起)2. 自顶向下(从主函数开始,控制层,各个子函数)3. 自底向上4. 核心系统集成5. 高频集成(现代软件开发→持续集成)集成测试与单元测试的区别
1. 测试的对象不同2. 测试的依据不同(单元测试→详细设计,集成测试→概要设计)3. 测试的方法不同(集成测试更关注模块接口
系统测试
定义
单元测试、集成测试更多的在模拟环境中进行。系统测试则是在真实运行环境下进行关注点
系统测试与集成测试区别
1. 测试对象
2. 测试时间3. 测试内容4. 测试角度(集成测试→偏向技术;系统测试→偏向业务)验收测试(UAT?)
定义正式的测试,由用户来决定是否接受系统。分类1. 用户验收测试(UAT,开发方模拟用户进行测试)2. 运行验收测试(偏向运维角度,譬如验证系统上线后的数据备份、容灾、灾难恢复场景下的功能正确性)3. 合同和规范验收测试(涉及政府、法务部门)4. alpha测试(运行环境→开发者提供,测试执行→用户)??5. beta测试(运行环境和测试执行均有用户负责)★软件版本中的alpha版、beta版、release版验收测试驱动开发或BDD(行为驱动开发),是TDD的延伸,即:开发之前,先定义好用户故事的验收标准,再进行开发