1 面向对象测试的概述
面向对象软件测试的目标与传统测试一样:用尽可能低的测试成本和尽可能少的测试用例,发现尽可能多的软件缺陷。
面向对象的测试策略也遵循从“小型测试”到“大型测试”,即从单元测试到最终的功能性测试和系统性测试。
变化
面向对象 = 对象 + 类 + 继承 + 通信
新特点:封装、继承、多态
这些变化带来了产生新错误的可能,带来了测试的变化:
(1)基本功能模块
系统的基本构造单元不再是传统的功能模块,而是类和对象。
在测试过程中,不能仅检查输入数据产生的输出结果是否与预期结果相吻合,还要考虑对象的状态变化、方法间的相互影响等。
(2)系统的功能实现
系统的功能体现在对象间的协作上,而不再是简单的过程调用。
(3)封装对测试的影响
封装使对象的内部状态隐蔽,如果类中未提供足够的存取函数来表明对象的实现方式和内部状态,则类的信息隐蔽机制将给测试带来困难。
(4)继承对测试的影响
继承削弱了封装性,产生了类似于非面向对象语言中全局数据的错误风险。
若一个类得到了充分的测试,当其被子类继承后,继承的方法在子类的环境中的行为特征需要重新测试。
(5)多态对测试的影响
多态依赖于不规则的类层次的动态绑定,可能产生非预期的结果。
面向对象的开发模型突破了传统的瀑布模型,将开发分为:
面向对象分析(OOA)
面向对象设计(OOD)
面向对象编程(OOP)
三个阶段。
开发阶段的面向对象的软件测试
面向对象分析的测试(OOA Test)
面向对象设计的测试(OOD Test&#