面向函数调用路径的回归测试用例选择与排序方法及系统的制作方法

文档序号:8223419阅读:484来源:国知局
面向函数调用路径的回归测试用例选择与排序方法及系统的制作方法
【技术领域】
[0001] 本发明涉及软件测试领域,具体地,涉及一种面向函数调用路径的回归测试用例 选择与排序方法及系统。
【背景技术】
[0002] 在开发阶段,为了修复软件存在的缺陷、完善软件功能或者改善软件的运行性能 等,需要修改程序代码。回归测试作为软件测试的一种重要方法,贯穿整个软件周期,用于 检验软件功能的正确性与完整性,可以有效地保证程序代码的修改没有对受影响部分和潜 在受影响部分产生副作用。但是,据相关统计数据表明,回归测试开销一般占软件系统测试 预算的80%以上。为了降低回归测试的成本,回归测试用例选择技术和回归测试用例排序 技术得到越来越多的应用。
[0003] 回归测试用例选择技术首先通过静态分析找出程序代码中发生变化的部分,然后 选择出覆盖所有程序变化部分的测试用例。回归测试用例排序技术按照特定的排序准则 对回归测试用例进行排序,在满足约束的前提下,回归测试用例按照权重由高到低依次执 行。
[0004] 但是,在进行回归测试时,测试人员最希望的是仅对软件程序代码修改的部分、受 影响的部分和潜在受影响的部分进行测试。因此,为了减少测试用例个数、降低回归测试工 作量,本发明提出了一种新的面向函数调用路径的回归测试用例选择与排序方法及系统。

【发明内容】

[0005] 本发明的目的是提供一种面向函数调用路径的回归测试用例选择与排序方法及 系统,用于解决回归测试过程中,因为不断修复软件中存在的缺陷所造成的测试工作量大、 测试效率低等问题。
[0006] 本发明的技术方案包括:一种面向函数调用路径的回归测试用例选择与排序方 法,包括:查找被修改函数的关联函数,获得被修改函数与关联函数所在的函数调用路径, 并根据所述函数调用路径,选择与所述被修改函数及关联函数存在关联关系的测试用例, 组成回归测试用例集;对回归测试用例集中的测试用例进行优先级取值并排序,并对排序 结果进行动态调整;以及从动态调整后的回归测试用例集中选择测试用例,确定最终的回 归测试用例集。
[0007] 优选地,所述查找被修改函数的关联函数,获得被修改函数与关联函数所在的函 数调用路径具体包括:根据被测函数的函数调用关系图,查找与被修改函数的关联函数,删 除函数调用关系图中的不可达路径,获得被修改函数与关联函数所在的函数调用路径。
[0008] 优选地,根据所述函数调用路径,选择与所述被修改函数及关联函数存在关联关 系的测试用例,具体包括:根据测试用例与被修改函数及关联函数对应的函数调用路径之 间的映射关系,找出与函数调用路径存在映射关系的测试用例,建立被修改函数及关联函 数与测试用例之间的关联关系,以选择与所述被修改函数及关联函数存在关联关系的测试 用例。
[0009] 优选地,所述对回归测试用例集中的测试用例进行优先级取值并排序具体包括: 根据测试用例的绝对贡献度、缺陷检测能力和缺陷影响度,计算回归测试用例集中的各测 试用例的优先级取值,再根据优先级取值进行优先级排序。
[0010] 优选地,所述对排序结果进行动态调整具体包括:根据优先级取值对回归测试用 例集中的测试用例排序,执行回归测试用例集中的未执行测试用例集中排序第一的测试用 例,并删除该排序第一的测试用例对应的覆盖函数集中函数,若所述覆盖函数集非空,则调 整未执行测试用例集中所有测试用例的优先级取值,若所述覆盖函数集为空,则按优先级 取值依次执行剩下的测试用例。
[0011] 优选地,所述确定最终的回归测试用例集包括:根据优先级取值,从第一个测试用 例开始,分析每个测试用例存在映射关系的函数调用路径,根据函数调用路径对应函数集 的包含关系判断函数路径之间是否存在包含关系,去除被包含的函数调用路径,形成最终 的回归测试用例集。
[0012] 优选地,所述确定最终的回归测试用例集包括:根据优先级取值,从第一个测试用 例开始,直到执行完所有关联函数的测试用例为止,删除之后的测试用例,形成最终的回归 测试用例集。
[0013] 本发明的技术方案还包括一种面向函数调用路径的回归测试用例选择与排序系 统,包括:回归测试用例选择模块,用于查找被修改函数的关联函数,获得被修改函数与关 联函数所在的函数调用路径,并根据所述函数调用路径,选择与所述被修改函数及关联函 数存在关联关系的测试用例,组成回归测试用例集;回归测试用例优先级排序模块,用于对 回归测试用例集中的测试用例进行优先级取值并排序,并对排序结果进行动态调整;以及 回归测试用例确定模块,用于从动态调整后的回归测试用例集中选择测试用例,确定最终 的回归测试用例集。
[0014] 优选地,所述回归测试用例选择模块,用于根据所述函数调用路径,选择与所述被 修改函数及关联函数存在关联关系的测试用例,具体包括:根据测试用例与被修改函数及 关联函数对应的函数调用路径之间的映射关系,找出与函数调用路径存在映射关系的测试 用例,建立被修改函数及关联函数与测试用例之间的关联关系,以选择与所述被修改函数 及关联函数存在关联关系的测试用例。
[0015] 优选地,所述回归测试用例优先级排序模块,用于对排序结果进行动态调整具体 包括:根据优先级取值对回归测试用例集中的测试用例排序,执行回归测试用例集中的未 执行测试用例集中排序第一的测试用例,并删除该排序第一的测试用例对应的覆盖函数集 中函数,若所述覆盖函数集非空,则调整未执行测试用例集中所有测试用例的优先级取值, 若所述覆盖函数集为空,则按优先级取值依次执行剩下的测试用例。
[0016] 本发明的有益效果是:
[0017] 1、本发明只选择与被修改函数、受影响函数存在关联关系的测试用例,可以明显 减少回归测试用例集中测试用例的个数。
[0018] 2、本发明对已经优先级排序的测试用例进行再次确定,使函数对被执行的次数达 到最小,能够明显的减少测试用例的个数。
[0019] 3、本发明采用的选择、排序再确定优化方法的回归测试用例集的度量标准值高于 先选择再优先级排序的度量标准值。
[0020] 综上所述,本发明与现有技术相比,减少了回归测试用例的数量,大大缩减了测试 人员的工作量,并且降低了测试成本。
【附图说明】
[0021] 图1是本发明所述面向函数调用路径的回归测试用例选择与排序方法的流程示 意图;
[0022] 图2是本发明的实施方式中面向函数调用路径的回归测试用例选择与排序方法 的架构示意图;
[0023] 图3是本发明的实施方式中用于举例的函数调用关系图;
[0024] 图4是针对图3的函数调用关系图,获得的函数与测试用例之间的关系示意图;
[0025] 图5是本发明的应用实例中的函数调用关系图。
【具体实施方式】
[0026] 以下结合附图对本发明的【具体实施方式】进行详细说明。应当理解的是,此处所描 述的【具体实施方式】仅用于说明和解释本发明,并不用于限制本发明。
[0027] 为对本发明的原理和特征进行清楚描述,现给出下述【具体实施方式】中出现的部分 术语的定义。这些术语的定义仅用于解释本发明,并不限定本发明的保护范围。
[0028] 1、函数调用路径:函数调用路径是根据函数调用关系图得到的,是一个由程序入 口点到出口点的函数名序列,表示为pathi= {f i(l,fn,fi2......fin}。其中,t表示函数名, fij与f ij+i之间的相邻关系表不f ij调用了 f ij+i或f ij与f ij+i顺序执行。
[0029] 2、测试用例和函数调用路径之间的映射关系:在软件测试中,测试用例和函数调 用路径之间的映射关系定义成一个二元关系,即给定一个程序P和P中一条路径path,t是 一个测试用例,若P运行时输入t,程序运行后的路径转化为path,则映射关系(t,path)成 立。
[0030] 3、测试用例执行函数集:测试用例集T = {tp t2, t3......tn},函数集FS = {f\,f2, f3……fj,测试用例心匕£1')的执行函数集EFUiMEFai) EFS)是一个函数集合,其中 包含执行测试用例&时所执行的函数调用路径path 的所有函数。
[0031] 4、关联函数:与修改函数具有关联关系的函数,即修改函数直接调用的函数和直 接调用修改函数的函数。
[0032] 5、函数对:被修改函数与其关联函数组成的函数个数为2的函数集合。
[0033] 6、绝对贡献度:在测试过程中,被测试用例t执行的函数个数。
[0034] 7、相对贡献度:被测试用例t执行的,并且没有被其他任何已经执行的测试用例 执行的函数个数。
[0035] 8、选择-相对贡献度:被测试用例t执行的,并且没有被其他任何已经执行的测试 用例执行的函数对个数。
[0036] 9、未执行函数集EF_UE:在回归测试过程中,没有被任何测试用例执行过的函数 集合。
[0037] 10、执行函数集EF_E:在回归测试过程中,至少被一个测试用例执行过的函数集 合。
[0038] 如图1所示,本实施方式给出了一种面向函数调用路径的回归测试用例选择与排 序方法,包括:查找被修改函数的关联函数,获得被修改函数与关联函数所在的函数调用路 径,并根据所述函数调用路径,选择与所述被修改函数及关联函数存在关联关系的测试用 例,组
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1