面向对象测试:继承与多态的挑战

需积分: 10 5 下载量 115 浏览量 更新于2024-07-12 收藏 240KB PPT 举报
"面向对象测试的主要关注点在于其与传统测试的不同之处,特别是在继承和多态特性方面。在面向对象编程中,测试不仅涉及到函数或过程的验证,还必须考虑对象间的交互和类的层次结构。面向对象测试包括对分析、设计和编程阶段的测试,如OOATest、OODTest和OOPTest,分别对应分析结果、设计结果和代码实现的验证。测试模型涵盖单元测试、集成测试和系统测试,确保在开发过程中不断进行验证。面向对象单元测试专注于单个类成员函数,而集成测试则关注类间的协作和消息传递。系统测试则是基于用户需求的最终验收环节。在设计测试用例时,需要特别注意函数返回值作为条件判断和字符串操作的情况,因为这些可能是潜在的错误源。对于继承,如果子类重写了父类的成员函数或者成员函数调用了修改过的其他成员函数,都需要在子类中重新进行测试。" 面向对象测试的概念是针对面向对象系统的独特性质,如对象的独立性、松散耦合和复用性,以及OOP的三个阶段:分析、设计和编程。面向对象测试模型包含了分析和设计阶段的文本验证(OOATest和OODTest)以及编程实现的代码验证(OOPTest)。分析阶段的测试侧重于问题域的抽象描述,设计阶段的测试关注类和类结构的合理性,编程阶段的测试则涉及代码风格和实现的正确性。 在开发前期,面向对象测试主要通过静态方法进行,例如对模型的审查和文档的验证,确保分析和设计的准确性和完整性。随着开发的推进,动态测试如单元测试和集成测试成为关键,它们检查类的内部行为和不同类之间的协同工作。面向对象集成测试考虑了类成员间的交互和消息传递,而系统测试则站在用户的角度,以满足需求为最终目标。 在进行面向对象测试时,需要特别注意由于继承和多态带来的复杂性。继承可能导致子类中的成员函数需要重新测试,特别是当它们被修改或调用了其他修改过的成员函数时。此外,由于对象的独立性和复用性,测试者往往不能直接查看内部代码,这增加了测试的难度,要求测试者更依赖于接口行为的验证和模拟。 面向对象测试需要全面考虑对象的生命周期、类的层次结构以及对象间的交互,确保每个阶段的正确性,从而保证整个面向对象系统的质量。