单元测试是针对软件最小可测试单元(一般是函数、方法或类)进行的-证-明测试。其重要目标是隔离代码片段,在受控环-境-中证明思路正确、边界条件处理和异常处理能力,保证每个代码单元按照设计要求独立工作。
测试内容和重点
功-能正确性证明:测试单元在各种输入条件下的输出是不是符合预期
边界条件测试:针对输入边界值、特殊值和极限情况进行证明
异常处理测试:保证代码在异常情况下能够最优的方式处理,不产生不可控错误
途径包括分析:通过测试包括代码的所有执行途径,包括条件分支和循环
代码规范符合性:证明代码是不是符合设定的编码标准
方式和技术
单元测试一般由开发人员在编码阶段同步编写和执行,采用测试驱动开发(TDD)或测试-紧随开发的方式。技术方面上,单元测试具有以下特点:
隔离性:通过模拟(Mock)和桩(Stub)技术隔离被测单元的外部依赖
自动化:完全自动化执行,可集成到不断集成流程中
快速反馈:执行速度快,在毫秒级别,支持频繁执行
高包括率目标:一般追求80%以上的代码行包括率、分支包括率
白盒测试特性:测试人员了解内部实现的思路,可设计针对性测试用例
常用工具
主流编程语言都有成熟的单元测试框架,如Java的JUnit/TestN-G、Python的pytest/unittest、JavaScript的Jest/Mocha。
测试用例的独立和可重复
测试代码和生产代码一样重要的质量要求
测试名称的清晰表达性和自描述
最小化测试间的依赖和共享状态