论文部分内容阅读
进入90年代,面向对象范型(OO范型)受到了研究界和工业界的普遍重视并获得广泛应用。OO为软件测试提出了很多新问题,但当前对OO软件测试的研究还很薄弱。能否找到有效的适用于OO软件的测试技术,很大程度上决定着OO能否真正走向成功。 本研究工作的第一部分提出了一种测试类的测试用例生成方法。测试一个类时,既要测试类中的单个方法,又要测试方法之间的各种可能的交互。OO范型强调的可重用性对测试工作提出了更高的要求,为了保证该类是可重用的,一个类必须在各种使用上下文中接受测试。文献[23]中提出了称为方法序列规范(Method SequenceSpecification, MtSS)的OO软件规范方法,一个类的MtSS明确定义调用该类中方法的合法顺序。作者发现MtSS能直接支持测试用例的生成,提出了基于MtSS的测试用例生成方法。为了从数量极大的可用测试用例中选取有效的测试用例,本文提出了基于划分的测试用例生成策略,并给出了3种有效的划分准则。对象的健壮性是整个OO系统可靠性的前提和重要保证。为此,本文还提出了用于检验对象健壮性的测试用例的生成技术。 本研究工作的第二部分集中于类间集成测试(Inter-Class Integration Testing)的测试充分性和测试用例重用的研究。类间集成测试是OO软件测试的重要组成部分,但同时也是研究的薄弱环节。这一部分,作者提出了契约测试的概念。契约测试的目的是测试具有Client-Supplier关系的两个类(对象)能否正确交互。继承和多态对测试有着深刻影响。一方面,继承和多态造成了子类型替换,使测试的工作量成倍增加;但另一方面,继承又为测试过程中重用已有的测试资源(包括测试用例和测试结果)创造了条件。第五章我们深入研究了在继承和多态的影响下,进行契约测试时哪些测试是必要的,哪些测试是可省去的,并详细讨论了如何利用继承关系重用已有的测试用例。 找到能使测试工作量最小的测试顺序是OO软件集成测试的一个重要问题。OO程序可看作是一个类的集合,同时类与类之间又有着各种复杂关系。OO程序组织结构的特点,决定了传统的基于层次结构的集成测试策略已不适用。测试OO程序时,为类中的方法构造测试承接程序(Test Stub)变得更加困难,选择不同的测试顺序将决定着测试工作量的大小。鉴于此,本文的第三部分集中于研究OO程序的测试顺序和集成测试策略。Kung等人在文献[26]中已提出了一种测试顺序分配算法。我们发现,该算法存在一个严重缺陷:当类之间的关联关系变化时,所得的新的测试顺序会发生大的调整,很可能要求构造新的测试承接程序。考虑到关联关系本来就不如继承和聚集关系稳定,对于以递增和反复为特征的OO软件开发过程,关联n 西安电子科技大学博士论文:面向对象软件测试理论与技术的研究边的变化更会频繁发生,因此采用Kng的算法仍会造成较大的测试工作量。为了克服这一缺陷,我们给出一个新的测试顺序分配算法,以及以此算法为基础的类间集成测试策略。我们的算法用类之间的继承和聚集关系确定该类的主级号,用关联关系确定类的次级号。这样,当关联关系变化时,产生的新的测试顺序只会发生小范围的调整,因而有利于重用己有的测试承接程序,从而降低测试的工作量。