[发明专利]基于基路径的测试程序控制流路径集生成方法无效
申请号: | 200810045139.2 | 申请日: | 2008-01-09 |
公开(公告)号: | CN101216803A | 公开(公告)日: | 2008-07-09 |
发明(设计)人: | 李志蜀;金虎;王莉;孙继荣;陈宇;郑燕妮;李宝林 | 申请(专利权)人: | 四川大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 成都信博专利代理有限责任公司 | 代理人: | 潘育敏 |
地址: | 610064四*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 路径 测试 程序控制 生成 方法 | ||
一、所属技术领域
本发明涉及计算机的程序测试方法,属结构性测试中的路径测试技术,特别是被测试程序控制流路径有效子集生成方法。
二、背景技术
作为软件测试中广泛使用的两类测试方法之一的结构性测试方法,由于是基于被测程序的源代码而不是基于被测程序的定义的,使得该方法支持严格定义、数学分析和精确度量。这些优势决定了结构性测试必然会在软件测试工程中被广泛采用。而作为结构性测试中最重要的一种测试技术——路径测试,以其测试方法为基础的各种技术自20世纪70年代就已经提出,这些方法的提出者已经向市场推出了实现这些技术的非常成功的工具。但是由于被测试程序结构的复杂性,即使是规模很小的程序,包含的逻辑路径数量也是相当大的,从而使得完全的路径测试在实际的软件结构性测试中并不具有很大的可行性。因此如何找出被测程序中的所有逻辑路径的有效路径子集,以便通过设计可覆盖该有效逻辑路径子集的用例来发现程序中尽可能多的错误,便成了路径测试的研究与工程应用的核心与难点问题。现有技术中,被测试程序控制流路径有效子集生成方法往往不能满足路径覆盖测试的需求。尤其是被测试程序控制流路径的有效路径子集的自动生成方法还未见报道。
三、发明内容
本发明的目的是提供一种路径测试中被测试程序控制流路径的有效路径子集的生成方法,该方法不仅实现了所生成的控制流路径子集的正确性、有效性和完备性,还实现了整个控制流路径子集生成过程的流程自动化。
本发明的目的是这样达到的:一种基于基路径的测试程序控制流路径子集生成方法,其特征在于:在编译器模块、控制流图邻接矩阵生成模块和控制流路径子集生成模块三模块中完成测试程序控制流路径子集的生成:首先将被测试源程序片的控制流路径定义为具有长度(模)和方向属性的向量,则特定程序片断的控制流路径集合以及其上可以施加的向量操作便组成了一个向量空间,其存在必定存在一个基路径集合,使用编译器模块获得包含源程序片程序结构信息的数据结构,然后通过遍历该数据结构使用控制流路径生成算法生成基于基路径的程序控制流路径子集。其具体的方法是:
1、使用编译器模块对被测试源程序进行处理,用以对被测试源程序进行语义解释,将被测试源程序与控制流路径生成的测试计算引擎联系起来,形成合理的足以表示被测程序控制流信息的数据结构——抽象语法树(AST),编译器模块输出此结构供控制流图邻接矩阵生成模块处理。
2、处理流程进入程序控制流图邻接矩阵生成模块,该模块遍历抽象语法树结构,按照语句是否具有条件跳转语义或无条件跳转语义分别调用条件跳转语句处理函数和无条件跳转处理函数进行处理并生成程序流图的邻接矩阵表示供控制流路径子集生成模块进行后续操作。
3、控制流路径子集生成模块通过遍历邻接矩阵获得被测程序控制流信息,采用深度优先多次回溯的方式遍历邻接矩阵,跟踪并记录程序控制流的执行到的语句节点,并对该信息进行处理,生成基于基路径的程序控制流路径子集。
所述编译器模块对被测试源程序进行处理,添加了用于保存某些特定信息的域并在编译过程中严格建立了源码语句与中间结构AST节点间的一一对应关系。
程序控制流图邻接矩阵生成模块使用程序算法自动实现遍历抽象语法树结构并生成程序流图的邻接矩阵表示过程的基本思想是:通过遍历抽象语法树每条语句执行时的静态控制流信息,对具有影响源程序控制流操作语义的控制流语句进行特殊处理;其基本流程步骤如下:
步骤1)初始化当前处理语句的语句号i;
步骤2)若语句i为被测程序片的最后一条语句,则算法结束。否则执行步骤3;
步骤3)若语句i具有条件跳转语义(EQ、GE、GT、LE、LT、NE),则调用条件跳转语句处理函数conjmpproc(i)对语句i进行处理,同时流程跳转到步骤6;否则执行步骤4;
步骤4)若语句i具有无条件跳转语义(JUMP),则调用无条件跳转语句处理函数unconjmpproc(i)函数对语句i进行处理,同时流程跳转到步骤6;否则执行步骤5;
步骤5)将AdjoiningMatrix[i][i+1]赋值为1;
步骤6)将语句号i值递增以处理下一条语句;重复执行步骤2;
程序控制流图邻接矩阵生成算法中存在对条件跳转语句处理函数conjmpproc(i)和无条件跳转语句处理函数unconjmpproc(i)的调用,分别用于对具有条件跳转语义以及无条件跳转语义的语句i进行处理。
所述条件跳转语句处理函数的具体处理流程步骤是:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于四川大学,未经四川大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810045139.2/2.html,转载请声明来源钻瓜专利网。