论文部分内容阅读
服务化已成为互联网软件一种新的基本形态。由于其具有开放性、动态性、协同性的特点,软件服务测试通常需要大量的测试用例、多样的测试环境,代价高且测试充分性难以保证。为增强服务软件测试的自动化和智能化能力,本论文遵循模型驱动测试自动化的思想,研究了基于语义的建模与测试生成方法和技术。通过引入语义表达和推理,丰富了测试所需的领域知识,提升了服务模型的可理解性,为提高测试有效性、效率和质量探讨了新的途径。在服务建模方面,提出了接口语义契约模型(Interface Semantic Contract,ISC)。借鉴语义Web服务及契约设计的思想,ISC从两个方面增强和扩展服务操作的语义表达能力:利用本体模型,建立数据和服务统一的概念模型;借助语义规则定义,建立数据和服务的约束模型。数据本体模型基于集合操作,定义了概念之间的交、并、补、继承、等价、互斥等关系,利用数据属性描述数据多方面的特征信息;约束模型定义了数据属性在基数、取值等方面的约束限制条件,并基于谓词逻辑,定义了数据及数据属性之间的相互依赖和限制关系。通过本体和规则的知识描述语言,ISC增强了服务的语义表达能力,为服务的理解、协同、验证与确认提供更丰富的语义信息。测试数据生成将组合测试算法应用于数据约束条件,提出了基于约束组合的测试生成方法。构建约束依赖图作为约束条件的分析工具,判定服务数据之间依赖关系的紧密程度,并据此将数据分组,降低了数据生成算法的复杂度和规模,提高了测试生成的质量和效率。其次对模拟退火算法进行了改进,根据区域覆盖、故障检测等测试准则定义测试数据选择的优化目标;引入贝叶斯分类器,预测测试数据对于优化目标满足的概率,以指导模拟退火搜索过程的推进。在测试断言研究中,提出了基于语义规则的断言定义及推理方法。依据被测服务的领域模型,采用语义规则定义服务输入数据/前置条件和输出数据/后置条件之间的映射关系,构建测试断言规则库。在测试执行的同时,在规则库中用同样的输入数据/前置条件查找前件与之一致的规则定义,利用规则推理引擎,推导出服务的预期运行结果。基于语义规则的测试断言完全独立于被测服务的运行平台、编程语言、实现逻辑等,能够应用于任何接口标准相同的服务,具有独立性、通用性等特点。