测试基础之:单元测试
一、定义
单元测试(Unit Testing),是指对软件中的最小可测试单元进行检查和验证。测试内容包括模块接口测试、局部数据测试、边界条件测试、出错处理测试和独立路径测试等。
特别说明:
1. 所有的代码,通产都是在对数据进行分类处理。
2. 并不是所有代码都要进行单元测试,通常只有底层模块或者核心模块的测试中才会采用单元测试。3. 模块接口测试主要包括是否修改了只做输入的形式参数、是否使用了尚未初始化的变量、输出给标准函数的参数个数是否正确等。
二、常用方法
单元测试的用例是一个“输入数据”和“输出数据”的集合。
输入数据,可以是被测函数的输入参数、内部需要读取的全局静态变量、内部需要读取的成员变量、函数内部调用子函数获得的数据、函数内部调用子函数改写的数据等。预计输出也绝对不只有函数返回值这样简单,还包括函数执行完成后所改写的所有数据。在单元测试中,驱动代码-Driver,桩代码-Stub 和 Mock 代码是最常出现的三个名词,下面我们一起简单了解一下。
1、驱动代码-Driver
指调用被测函数的代码。
2、桩代码-Stub
用来代替真实代码的临时代码。桩代码的应用首先起到了隔离和补齐的作用,使被测代码能够独立编译、链接,并独立运行。同时,桩代码还具有控制被测函数执行路径的作用。不会去关注 Stub 是否被调用以及怎么样被调用。编写桩代码通常需要遵循以下原则:
1)桩函数要具有与原函数完全相同的原形,仅仅是内部实现不同,这样测试代码才能正确链接到桩函数;
2)用于实现隔离和补齐的装函数比较简单,只需保持原函数的声明,加一个空的实现,通过编译链接;
3)实现控制功能的桩函数应用最广泛,根据测试用例的需要,输出合适的数据作为被测函数的内部输入。
3、Mock 代码
关注 Mock 方法有没有被调用,以什么样的参数被调用,被调用的次数,以及多个 Mock 函数的先后调用顺序。
测试框架的选型,和开发语言直接相关。
Java 最常用的单元测试框架是 Junit 和 TestNG;
C/C++ 最常用的单元测试框架是 CppTest 和 Parasoft C/C++Test;
框架选型完成后,你还需要对桩代码框架和 Mock 代码框架选型,选型的主要依据是开发所采用的具体技术栈。通常,单元测试框架、桩代码/Mock 代码的选型工作由开发架构师和测试架构师共同决定。
👉如果在阅读过程中有任何疑问,欢迎在评论区留言参与讨论!
版权声明: 本文为 InfoQ 作者【甜甜的白桃】的原创文章。
原文链接:【http://xie.infoq.cn/article/3ee3665ea977ffe590eeb199e】。文章转载请联系作者。
评论