单元测试相关
1.单元测试的用例是输入数据和预计输出的集合。
2.被测函数的输入参数:
被测试函数内部需要读取的全局静态变量;
被测试函数内部需要读取的成员变量;
函数内部调用子函数获得的数据;
函数内部调用子函数改写的数据;
嵌入式系统中,在中断调用时改写的数据;
3.预计输出:
1.被测函数的返回值
2.被测函数的输出参数
3.被测函数所改写的成员变量
4.被测函数所改写的全局变量
5.被测函数中进行的文件更新
6.被测函数中进行的数据库更新
7.被测函数中进行的消息队列的更新
4.驱动代码、桩代码、mock代码 ,
驱动代码是用来调用被测函数的,而桩代码和 Mock 代码是用来代替被测函数调用的真实代码的。
5.实际软件项目中如何开展单元测试?
1. 并不是所有的代码都要进行单元测试,通常只有底层模块或者核心模块的测试中才会采
用单元测试。
2. 你需要确定单元测试框架的选型,这和开发语言直接相关。比如,Java 最常用的单元测
试框架是 Junit 和 TestNG;C/C++ 最常用的单元测试框架是 CppTest 和 Parasoft
C/C++test;框架选型完成后,你还需要对桩代码框架和 Mock 代码框架选型,选型的
主要依据是开发所采用的具体技术栈。
通常,单元测试框架、桩代码 /Mock 代码的选型工作由开发架构师和测试架构师共同决
定。
3. 为了能够衡量单元测试的代码覆盖率,通常你还需要引入计算代码覆盖率的工具。不同
的语言会有不同的代码覆盖率统计工具,比如 Java 的 JaCoCo,JavaScript 的
Istanbul。在后续的文章中,我还会详细为你介绍代码覆盖率的内容。
4. 最后你需要把单元测试执行、代码覆盖率统计和持续集成流水线做集成,以确保每次代
码递交,都会自动触发单元测试,并在单元测试执行过程中自动统计代码覆盖率,最后
以“单元测试通过率”和“代码覆盖率”为标准来决定本次代码递交是否能够被接受。