单元测试由一组独立的测试构成,每个测试针对软件中的一个单独的程序单元。单元测试并非检查程序单元之间是否能够合作良好,而是检查单个程序单元行为是否正确。在单元测试时,测试人员根据详细设计说明书和源程序清单,了解到该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理和不合理的输入都要能鉴别和响应。这要求对程序所有的局部和全局的数据结构、外部接口和程序代码的关键部分进行桌面检查和代码审查。

  在单元测试中进行的测试工作主要在5个方面对被测模块进行检查:

  1. 模块接口测试

  在单元测试开始时,应该对通过所有被测模块的数据流进行测试。如果数据不能正常地输入及输出,那么其他的全部测试都说明不了问题。Myers在关于软件测试的书中为接口测试提出了一个检查表:

  ● 模块输入参数的数目是否与模块形式参数数目相同。

  ● 模块各输入的参数属性与对应的形参属性是否一致。

  ● 模块各输入的参数类型与对应的形参类型是否一致。

  ● 传到被调用模块的实参的数目是否与被调用模块形参的数目相同。

  ● 传到被调用模块的实参的属性是否与被调用模块形参的属性相同。

  ● 传到被调用模块的实参的类型是否与被调用模块形参的类型相同。

  ● 引用内部函数时,实参的次序和数目是否正确。

  ● 是否引用了与当前入口无关的参数。

  ● 用于输入的变量有没有改变。

  ● 在经过不同模块时,全局变量的定义是否一致。

  ● 限制条件是否以形参的形式传递。

  ● 使用外部资源时,是否检查可用性并及时释放资源,如内存、文件、硬盘、端口等。

  当模块通过外部设备进行输入/输出操作时,必须扩展接口测试,附加如下的测试项目:

  ● 文件的属性是否正确。

  ● Open与Close语句是否正确。

  ● 规定的格式是否与I/O语句相符。

  ● 缓冲区的大小与记录的大小是否相配合。

  ● 在使用文件前,文件是否打开。

  ● 文件结束的条件是否安排好了。

  ● I/O错误是否检查并做了处理。

  ● 在输出信息中是否有文字错误。