什么是单元测试
单元测试是指,对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作,这里的最小可测试单元通常是指函数或者类。单元测试都是以自动化的方式执行,所以在大量回归测试的场景下更能带来高收益。
单元测试的对象是代码,以及代码的基本特征和产生错误的原因,必须掌握单元测试的基本方法和主要技术手段,比如什么是驱动代码、桩代码和 Mock 代码等。
如何做好单元测试
了解代码的基本特征与产生错误的原因
因为无论是开发语言还是脚本语言,都会有条件分支、循环处理和函数调用等最基本的逻辑控制,如果抛开代码需要实现的具体业务逻辑,仅看代码结构的话,所有的代码都是在对数据进行分类处理,每一次条件判定都是一次分类处理,嵌套的条件判定或者循环执行,也是在做分类处理。
如果有任何一个分类遗漏,都会产生缺陷;如果有任何一个分类错误,也会产生缺陷;如果分类正确也没有遗漏,但是分类时的处理逻辑错误,也同样会产生缺陷。要做到代码功能逻辑正确,必须做到分类正确并且完备无遗漏,同时每个分类的处理逻辑必须正确。
而为了设计并实现逻辑功能正确的代码,通常会有如下的考虑过程:
- 如果要实现正确的功能逻辑,会有哪几种正常的输入;
- 是否有需要特殊处理的多种边界输入;
- 各种潜在非法输入的可能性以及如何处理。
其实代码“功能点”,就是单元测试的“等价类”。
对单元测试的用例设计有深入的理解
单元测试的用例是一个“输入数据”和“预计输出”的集合。 就是“在明确了代码需要实现的逻辑功能的基础上,什么输入,应该产生什么输出”。
以下是几种输入数据:
被测试函数的输入参数;
被测试函数内部需要读取的全局静态变量;
被测试函数内部需要读取的成员变量;
函数内部调用子函数获得的数据;
函数内部调用子函数改写的数据;
嵌