论文部分内容阅读
近年来,Web Services及其相关的SOA(Service—Oriented Architecture,缩写为SOA)技术获得广泛应用,通过集成以Web Services为代表的软什服务来构造面向服务的软件系统(Service—Oriented Software,缩写为SOS)已经成为一种重要的软件开发的方式。相应地,在复用了高质量软件服务的基础上,如何进行软件服务的集成测试成为SOS质量保证的焦点问题。
适用的测试充分性准则是软件服务集成测试的理论基础和指导原则。虽然以往的工作已经对集成测试充分性准则进行了探讨,但是这些准则的定义都依赖于被集成的软件制品的代码和规约。对SOS而言,其集成的软件服务的交付方式不同于其他软件制品,它们的软件实体始终运行在服务提供者一方,系统集成者(即SOS开发者)不能拥有软件服务的实体,无法获得已有准则所依赖的信息,从而无法使用已有的集成测试准则。另外,当前已有的SOS测试准则都是从单元测试的角度考虑SOS的内部结构,没有考虑SOS与其集成的软件服务之间的交互,不适用于本文讨论的服务集成测试。缺失了集成测试充分性准则这个理论基石,SOS的测试用例生成、测试用例序列化和测试用例精简等以测试充分性准则以为依据的测试场景也缺乏有效的支撑。
本文提出一种适用于软件服务的集成测试充分性准则以及该准则的应用技术,具体工作包括:
(1)提出一种基于服务接口合约变异的集成测试充分性准则。该准则以服务的接口合约为核心,不依赖于服务的软件实体或详细设计信息。本文首先分析了SOS的服务集成的问题,即提供者和服务集成者之间可能存在“误解”;然后将这种“误解”可能导致的集成错误建模为服务提供者和集成者对接口合约的背离;最后,设计了一组接口合约变异算子用于模拟上述集成错误,并把SOS的接口合约变异充分度作为其集成测试充分性准则。
(2)基于上述准则,提出SOS测试用例自动生成方法。为了生成能够达到较高接口合约变异充分度的高质量测试用例,本文首先分析了杀死接口合约变异体的约束系统,包括可达性条件和充要性条件。然后,以WebServices的集成为研究载体,分别为业务流程和客户端应用程序提出基于消息序列图的测试用例生成方法和基于路径分析的适应性测试用例生成方法,旨在为被测对象生成满足上述约束系统的测试用例。
(3)给出基于上述准则的测试用例序列化方法,并在测试用例序列化的场景下验证上述允分性准则的有效性。软件服务是运行在提供者一方的软件实体,提供者施加的任何访问约束都会影响到SOS的测试过程。回归测试通常需要大量、密集地执行测试用例,因此这种服务访问约束对回归测试的影响尤为显著。针对上述问题,本文进一步提出基于服务访问约束的测试用例序列化方法。该方法包括两种新的测试用例序列化策略,能够基于整数线性规划(Integer Linear Programming,ILP)对测试用例进行排序。
(4)给出基于上述准则的测试用例精简方法,并在测试用例精简的场景下验证上述充分性准则的有效性。由于服务访问约束会对SOS的回归测试产生不利影响,本文进一步提出基于服务访问约束的测试用例精简方法。该方法把基于服务访问约束的测试用例精简问题建模为ILP问题,并对其进行求解,以期获得既能满足服务访问约束,又能最大化测试充分度的代表性子集。
(5)设计实验验证本文提出的测试用例生成、序列化和精简方法,设计和实现上述三个方法的支持工具并集成到北京大学Java测试平台中。