因此,设计测试用例时要考虑设置对象的初态,使它收到消息时执行指定的路径。
2、类测试
主要考察封装在一个类中的方法与数据之间的相互作用。一个对象有它自己的状态和依赖于状态的行为,对象操作既与对象状态有关,又反过来可能改变对象的状态。普遍认为这一级别的测试是必须的。类测试时要把对象与状态结合起来,进行对象状态行为的测试。类测试可分以下两个部分:
(1)基于状态的测试
考察类的实例在其生命期各个状态下的情况。这类方法的优势是可以充分借鉴成熟的有限状态自动机理论,但执行起来还很困难。一是状态空间可能太大,二是很难对一些类建立起状态模型,没有一种好的规则来识别对象状态及其状态转换,三是可能缺乏对被测对象的控制和观察机制的支持。
(2)基于响应状态的测试
从类和对象的责任出发,以外界向对象发送特定的消息序列来测试对象。较有影响的是基于规约的测试方法,和基于程序的测试。基于规约的测试往往可以根据规约自动或半自动地生成测试用例,但未必能提供足够的代码覆盖率。基于程序的测试大都是在传统的基于程序的测试技术的推广,有一定的实用性但方法过于复杂且效率不高。
3、系统测试
系统测试是对所有类和主程序构成的整个系统进行整体测试,以验证软件系统的正确性和性能指标等满足需求式样说明书和任务书所指定的要求。它与传统的系统测试一样,包括功能测试、性能测试、余量测试等,可套用传统的系统测试方法。
四、面向对象软件测试的覆盖准则
测试覆盖标准是对软件测试充分性的度量,任何测试策略都应该有相对应的覆盖标准,在此基础上选择测试用例,通过覆盖率来说明测试结果的可信性。传统的软件测试的覆盖标准对基于代码的测试而言,主要是代码覆盖,可细分为语句覆盖、路径覆盖、分支覆盖、判定分支覆盖,其中判定分支是最强的覆盖标准。对于面向对象软件的测试而言代码的覆盖只对方法级测试适用,为了测试面向对象程序设计机制带来的错误风险,必须引入新的覆盖标准。对于继承而言,要求达到继承的上下文覆盖;多态性要求覆盖所有可能的消息绑定;基于代数规约的测试要求能达到公理的覆盖;基于状态的测试要求能覆盖所有的状态和转换。
参考文献
[1] 朱少民,软件测试方法和技术,北京:清华大学出版社2005
[2] 徐中伟,软件测试质量的度量,计算机工程与应用,2002
[3] 张雪萍,类测试技术研究,计算机工程与应用,2002
上一页 [1] [2]