结 论 20
参 考 文 献 21
图3。1 交叉算子示意图 11
图3。2 变异算子示意图12
图3。3 遗传算法流程图 13
图4。1 交叉概率对测试数据生成的影响 17
图4。2 变异概率对测试数据生成的影响 18
图4。3 遗传算法与随机法的时间对比图 19
表3。1 轮盘赌选择法的选择概率计算 10
表4。1 交叉概率数据表 17
表4。2 变异概率数据表 18
表4。3 遗传算法与随机法数据表 19
1 引言
1。1 研究背景
近几年,由于Web服务的自治性、平台独立性以及服务技术的广泛性,其得到了迅速地发展。但是Web服务并没有获得普遍的应用,其主要原因是Web服务是基于通用、开放的协议与平台,其可信度与服务质量均可能存在问题[1]。其中一个关键的问题是:在动态发现和使用服务时,服务发布者能否提供可靠的服务给服务请求者。测试是解决此类问题,保证Web服务质量的重要途径。
面向服务架构( SOA)的特性使得 Web 服务测试比传统的软件测试更加困难。除了开发人员,其他用户包括测试人员,都只能访问服务接口而无法获得服务的实现细节,这使得测试人员只能根据服者发布者提供的服务描述文档,如WSDL、OWL-S、BPEL等进行黑盒测试。不完整且多样的服务描述文件给Web服务测试造成了很大的阻碍,使得测试人员很难保证Web服务测试的充分性和有效性。除此之外,服务运行架构的独立性使得测试人员缺乏对服务运行时的控制以及有效的观察手段,组合服务执行中 Web服务的动态性和自适应性也使得测试人员多数情况必须在线完成测试组合服务。另外,服务的多次调用和测试规模的增大可能导致服务崩溃,带来额外的测试开销,此外,Web服务演化后重新测试对原本已经非常昂贵的测试来说更是雪上加霜。
众所周知,形式化规约是实现自动化测试的一个重要基础。作为一种基于数学的方法,形式化规约不仅能够消除软件开发过程中歧义、 减少软件开发中引入错误的机会,还可以对软件测试提供更好的支持,可以自动生成测试用例以及检验软件输出结果的正确性,从而提供更加有效和高效的测试[2]。和其他形式化规约相比,代数规约高度抽象,完全独立于软件实现细节,能够在不暴露被测系统实现细节的前提下描述系统的可观察行为,且支持自动化测试[3]。在绝大多数用户无法获得服务实现细节的情况下,代数规约的这些特性对于Web服务来说极为关键,并且面向服务软件的动态性,必须进行自动化的在线测试[4]。
测试数据生成在软件测试的过程中占有重要的地位,好的测试数据不仅能使得软件测试更加有效和多样,而且能显著提高软件的测试效率。 因此,本文研究如何生成有效且多样的测试数据,提高Web 服务测试数据的生成效率。
1。2 国内外研究现状
1。2。1 Web服务测试数据生成
1。2。2 基于代数规约的测试数据生成
1。3 研究内容
为了提高测试数据自动生成效率以及测试效率,本文深入研究了代数规约与Web服务测试,将代数规约高度抽象、完全独立于实现细节的特点与缺乏服务实现细节的Web服务测试难点结合起来,应用基于树编码的遗传算法为Web服务测试生成数据,该算法使用树结构对个体进行编码,并依此设计相应的遗传算子,包括选择算子、交叉算子、以及变异算子。同时在传统的层接近度和分支距离的基础上,以是否满足全局变量的输入数据类型作为层接近度,以不满足公理中条件等式的远近距离作为分支距离构造了适合本问题的适应度函数。