目录
1. 概念
- 1.单元测试也称为模块测试,在模块编写完成且无编译错误后就可以进行
- 2.单元测试侧重于模块中的内部处理逻辑和数据结构
- 3.如果选用机器测试,一般用白盒测试法
- 4.这类测试可以对多个模块同时进行
- 5.提高模块的内聚度可以简化单元测试。如果每个模块只完成一种功能,对于具体模块来讲所需的测试方案数据会显著减少,而且更容易发现和预测模块中的错误。
2. 测试内容
2.1 说明
- 1.单元测试主要检查模块的以下5个特征
- 2.模块接口:模块的接口保证了测试模块的数据流可以正确地流入、流出
- 3.局部数据结构:在单元测试中,局部数据结构出错是比较常见的错误,在测试时应重点
- 4.重要的执行路径:在单元测试中,对路径的测试是最基本的任务。由于不能进行穷举测试,需要精心设计测试例子来发现是否有计算、比较或控制流等方面的错误
- 5.出错处理:好的设计应该能预测到出错的条件并且有对出错处理的路径。虽然计算机可以显示出错的内容,但仍需要程序员对出错进行处理,保证器逻辑的正确性,以便于用户维护
- 6.边界条件:边界条件的测试是单元测试的最后工作,也是非常重要的工作。软件容易在边界出现错误
2.2 模块接口
- 1.测试模块的输入参数和形式参数在个数、属性、单位上是否一致
- 2.调用其他模块时,所给出的实际参数和被调用模块的形式参数在个数、属性、单位上是否一致
- 3.调用标准函数时,所用的参数在属性、数目和顺序上是否正确
- 4.全局变量在各模块中的定义和用法是否一致
- 5.输入是否仅改变了形式参数
- 6.开/关的语句是否正确
- 7.规定的I/O格式是否与输入/输出语句一致
- 8.在使用文件之前是否已经打开文件或使用文件之后是否已经关闭文件
2.3 局部数据结构
- 1.变量的说明是否合适
- 2.是否使用了尚未赋值或尚未初始化的变量
- 3.变量的初始值或默认值是否正确
- 4.变量名是否有错(例如拼写错)
2.4 重要的执行路径
- 1.计算方面的错误。算术运算的优先次序不正确或理解错误;精度不够;运算对象的类型彼此不相容;算法错;表达式的符号表示不正确等
- 2.比较和控制流的错误。本应相等的量由于精度造成不相等;不同类型进行比较;逻辑运算符不正确或优先次序错误;循环终止不正确(如多循环一次或少循环一次)、死循环;不恰当地修改循环变量;当遇到分支循环时出口错误等
3. 测试过程
2.1 说明
- 1.由于模块不是独立运行的程序,各模块之间存在调用与被调用的关系。在对每个模块进行测试时,需要开发两种模块,驱动模块和桩模块
2.2 单元测试环境图
2.3 驱动模块
- 1.相当于一个主程序,接收测试例子的数据,将这些数据送到测试模块,输出测试结果
2.4 桩模块
- 1.也称为存根模块。桩模块用来代替测试模块中所调用的子模块,其内部可进行少量的数据处理,目的是为了检验入口,输出调用和返回信息
4. 模块接口测试与局部数据结构测试的区别
-
1.模块接口测试和局部数据结构测试是软件开发过程中单元测试阶段的重要部分,它们各自关注不同的方面,具有不同的目标和测试重点。
-
2.模块接口测试主要关注模块之间的数据交互。它测试的是模块之间的接口,包括输入参数和输出参数,以及模块之间的调用关系。这种测试的目的是确保模块之间的数据传递正确无误,保证模块能够正确地与其他模块进行交互。在进行模块接口测试时,会检查调用模块时的输入参数与模块的形式参数在个数、属性和顺序上是否匹配,同时也会检查文件的具体描述,包括文件的定义、记录的描述、文件的处理方式是否正确等。
-
3.局部数据结构测试则主要关注模块内部的数据结构。它测试的是模块内部的数据是否正确,包括变量的类型、初始化、赋值等。这种测试的目的是确保模块在执行过程中,其内部的数据结构能够保持完整和正确。在进行局部数据结构测试时,会检查局部数据结构是否存在错误,如不正确或不相容的类型说明、错误的初始化或缺省值、变量无初值、不正确的变量名、出现上溢和地址错等。
-
4.模块接口测试更侧重于模块之间的交互,而局部数据结构测试更侧重于模块内部的数据处理。两者都是单元测试阶段的重要部分,共同保证了软件的质量和稳定性。