面向对象的单元测试(OO Unit Test)
传统的单元测试是针对程序的函数、过程或完成某一定功能的程序块。沿用单元测试的概念,
实际测试类成员函数。一些传统的测试方法在面向对象的单元测试中都可以使用。如等价类划
分法,因果图法,边值分析法,逻辑覆盖法,路径分析法,程序插装法等等, 用于单元级测
试进行的测试分析和测试用例,规模和难度等均远小于后面将介绍的对整个系统的测试分析和
测试用例,而且强调对语句应该有100%的执行代码覆盖率。在设计测试用例选择输入数据时,
可以基于以下两个假设:
1. 如果函数(程序)对某一类输入中的一个数据正确执行,对同类中的其他输入也能正确执行。
2. 如果函数(程序)对某一复杂度的输入正确执行,对更高复杂度的输入也能正确执行。
例如需要选择字符串作为输入时,基于本假设,就无须计较于字符串的长度。除非字符串的长度
是要求固定的,如IP地址字符串。 在面向对象程序中,类成员函数通常都很小,功能单一,函数
的间调用频繁,容易出现一些不宜发现的错误。
因此,在做测试分析和设计测试用例时,应该注意面向对象程序的这个特点,仔细的进行测试分
析和设计测试用例,尤其是针对以函数返回值作为条件判断选择,字符串操作等情况。
面向对象编程的特性使得对成员函数的测试,又不完全等同于传统的函数或过程测试。尤其是继
承特性和多态特性,使子类继承或过载的父类成员函数出现了传统测试中未遇见的问题。
多态有几种不同的形式,如参数多态,包含多态,过载多态。包含多态和过载多态在面向对象语
言中通常体现在子类与父类的继承关系,对这两种多态的测试参见上述对父类成员函数继承和过
载的论述。包含多态虽然使成员函数的参数可有多种类型,但通常只是增加了测试的繁杂。对具
有包含多态的成员函数
测试时,只需要在原有的测试分析和基础上扩大测试用例中输入数据的类型的考虑。对类为粒度进
行面向对象的单元测试。