软件测试方法及系统的制作方法

文档序号:9200311阅读:556来源:国知局
软件测试方法及系统的制作方法
【技术领域】
[0001] 本发明涉及软件测试领域,尤其涉及一种软件测试方法及系统。
【背景技术】
[0002] 区间运算作为一种有效的程序变量取值范围的分析方法,已经被广泛的应用到面 向路径的程序结构化测试中,如测试程序中的路径可达性判断、程序取值范围分析等。
[0003] 在面向路径的程序结构化测试中,自动测试用例的生成是程序结构化测试的基 础。现有技术中,自动测试用例的生成方法主要为:通过对被测程序进行分析获取程序的输 入变量,全局变量以及路径集合,并为程序的输入变量和全局变量赋予初始取值范围,根据 程序的输入变量和全局变量的初始取值范围对路径集合中的每一条路径进行区间运算,最 终输出每条路径对应的输出变量的取值范围,并根据输出变量的取值范围,形成自动测试 用例。在此过程中,每条路径输出变量的取值范围的大小,将直接影响测试的精度与效率。
[0004] 但是,由于在区间运算中变量之间的取值是相互独立的,因此,变量的取值过于保 守,经区间运算后得到的变量取值区间比实际范围大得多,这个问题在一个接一个的区间 运算的长计算链中尤其突出,而这样的长计算链情况,在实际计算中是经常出现的。因此, 通过现有的面向路径的程序结构化测试方法得到的测试结果精度不高。

【发明内容】

[0005] 本发明提供一种软件测试方法及系统,用以解决现有测试方法中,由于区间运算 导致的变量取值范围和测试结果精确性较低的问题。
[0006] 本发明提供的软件测试方法,包括:
[0007] 确定被测程序的抽象语法树;
[0008] 遍历分析所述抽象语法树,获取对应的符号表和控制流图;
[0009] 根据所述符号表确定所述被测程序的输入变量和全局变量,并分别赋予所述输入 变量和全局变量初始取值范围,其中,所述输入变量和全局变量的取值范围以数值的区间 形式表示;
[0010] 将所述输入变量和全局变量取值范围的区间表示形式转换为仿射表示形式;
[0011] 根据所述控制流图确定路径集合,并对所述路径集合中的每条路径进行逐节点的 变量仿射形式运算,输出所述每条路径对应的变量以及变量的取值范围,其中,所述路径集 合中包含所述被测程序的所有待覆盖元素,所述待覆盖元素包括所述被测程序中的变量以 及变量间的运算关系;
[0012] 在所述每条路径对应的变量的取值范围中取值,生成测试用例,并根据所述测试 用例对所述被测程序进行测试。
[0013] 本发明提供的软件测试系统,包括:
[0014] 第一确定模块,用于确定被测程序的抽象语法树;
[0015] 分析模块,用于遍历分析所述抽象语法树,获取对应的符号表和控制流图;
[0016] 第二确定模块,用于根据所述符号表确定所述被测程序的输入变量和全局变量;
[0017] 赋值模块,用于为所述输入变量和全局变量赋予初始取值范围,其中,所述输入变 量和全局变量的取值范围以数值的区间形式表示;
[0018] 转换模块,用于将所述输入变量和全局变量取值范围的区间表示形式转换为仿射 表示形式;
[0019] 第三确定模块,用于根据所述控制流图确定路径集合;
[0020] 运算模块,用于对所述路径集合中的每条路径进行逐节点的变量仿射形式运算, 输出所述每条路径对应的变量以及变量的取值范围,其中,所述路径集合中包含所述被测 程序的所有待覆盖元素,所述待覆盖元素包括所述被测程序中的变量以及变量间的运算关 系;
[0021] 测试模块,用于在所述每条路径对应的变量的取值范围中取值,生成测试用例,并 根据所述测试用例对所述被测程序进行测试。
[0022] 本发明提供的软件测试方法及系统,通过将被测程序的输入变量和全局变量的初 始取值范围的区间表示形式转换为仿射表示形式,并以输入变量和全局变量的仿射表示形 式,对路径集合中的每条路径进行逐节点的变量仿射形式运算,获得了较为精确的变量取 值范围,并且,根据以此获得的测试用例对被测程序进行测试,能够获得更为精确的测试结 果。
【附图说明】
[0023] 图1为本发明实施例一提供的软件测试方法的流程示意图;
[0024] 图2为变量间的运算结果示意图;
[0025] 图3为本发明图1中步骤105的具体实现流程图;
[0026] 图4为本发明实施例二提供的软件测试系统的结构示意图。
【具体实施方式】
[0027] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员 在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0028] 下面实施例所描述的技术方案,均是在面向路径的程序结构化测试背景下所进行 阐述。
[0029] 实施例一
[0030] 图1为本发明实施例一提供的软件测试方法的流程示意图,如图1所示,本实施例 提供的软件测试方法,包括:
[0031] 步骤101、确定被测程序的抽象语法树;
[0032] 具体的,抽象语法树是被测程序的一种树形的抽象表示,其包含了与被测程序相 关的如行列号、标识符、函数调用等全部信息,是进行后续检测工作的前提条件。
[0033] 抽象语法树可以通过先采用宏展开、条件编译预处理等方法对读入的被测程序进 行预处理,再通过将被测程序中的字符序列转换为单词序列进行词法分析,最后,再将单词 序列组合成各类语法短句进行语法分析来得到。
[0034] 步骤102、遍历分析所述抽象语法树,获取对应的符号表和控制流图;
[0035] 具体的,步骤102中获取符号表可以通过如下方式实现:
[0036] 通过遍历分析所述抽象语法树,获取所述被测程序的标识符以及所述标识符对应 的类型和作用域,形成所述符号表;
[0037] 具体来说,在对软件进行测试时一般需要根据被测程序生成对应的测试用例,并 且在被测程序所包含的各种变量中,只有输入变量和全局变量需要进行用例生成,其余变 量如局部变量、常量是不需要进行用例生成的,而输入变量和全局变量是通过分析被测程 序中所有标识符的类型、作用域等信息来确定的。因此,在此步骤中获得的包含被测程序中 所有标识符的类型和作用域的符号表,为后续用例生成过程中输入变量和全局变量的确定 提供了依据。
[0038] 步骤102中获取控制流图可以通过如下方式实现:
[0039] 通过遍历分析所述抽象语法树,获取包含所述被测程序的所有待覆盖元素的路径 集合,形成所述控制流图。
[0040] 具体来说,控制流图是一种被测程序控制结构的图形化表示,其可以看作是一组 路径的集合,这些路径的起点和终点分别是控制流图的起点和终点。这些路径包含了被测 程序的所有待覆盖元素,即被测程序的所有变量和变量间的运算关系。由于抽象语法树包 含被测程序的全部信息,因此,通过遍历分析抽象语法树,即可获得包含被测程序所有待覆 盖元素的路径集合的控制流图。
[0041] 步骤103、根据所述符号表确定所述被测程序的输入变量和全局变量,并分别赋予 所述输入变量和全局变量初始取值范围,其中,所述输入变量和全局变量的取值范围以数 值的区间形式表示;
[0042] 具体的,根据符号表中包含的标识符类型和作用域信息确定被测程序中哪些变量 是输入变量,哪些变量是全局变量,并对输入变量和全局变量进行取值范围初始化,即为输 入变量和全局变量分配初始的取值范围。<
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1