常见的易错问题点:
- 使用未初始化的变量;
- 变量在使用前未定义;
- 变量声明了但未使用;
- 变量类型不匹配;
- 部分内存泄漏的问题;
- 空指针引用;
- 缓冲区溢出;
- 数组越界;
- 不可达的僵尸代码;
- 过高的代码复杂度;
- 死循环;
- 大量的重复代码块;
并不是所有代码都要进行单元测试,通常只有底层模块或则核心模块的测试才会采用单元测试。
单元测试困难点:
1、单元测试用例”输入参数“的复杂性,表现在”输入参数“不是简单的函数输入参数。本质上,任何能够影响代码执行路径的参数,都是被测函数的输入参数。
2、单元测试用例”预期输出“的复杂性,主要表现在”预期输出“应该包括被测函数执行完成后所改写的所有数据。
3、关联代码不可用,需要采用桩代码模拟不可用代码,并通过打桩补齐未定义部分。
驱动代码(Driver)指调用被测函数的代码:单元测试中,驱动模块通常包括调用被测函数前的数据准备、调用被测函数及验证相关结果三个步骤。
桩代码(Stub)是用来代替真实代码的临时代码。比如,某个函数A的内部实现中 调用了一个尚未实现的函数B,为了对函数A的逻辑进行测试,那么就需要模拟一个函数B,这个模拟的函数B的实现就是所谓的桩代码。
桩代码的作用:起到隔离和补齐的作用,使被测代码能够独立编译、链接,并独立运行。同时,桩代码还具有控制被测函数执行路径作用。