书签 分享 收藏 举报 版权申诉 / 9

一种基于谓词自适应随机测试的测试用例集扩增方法.pdf

  • 上传人:r5
  • 文档编号:4216168
  • 上传时间:2018-09-07
  • 格式:PDF
  • 页数:9
  • 大小:456.71KB
  • 摘要
    申请专利号:

    CN201110306943.3

    申请日:

    2011.10.10

    公开号:

    CN102508770A

    公开日:

    2012.06.20

    当前法律状态:

    终止

    有效性:

    无权

    法律详情:

    未缴年费专利权终止IPC(主分类):G06F 11/36申请日:20111010授权公告日:20150211终止日期:20161010|||授权|||实质审查的生效IPC(主分类):G06F 11/36申请日:20111010|||公开

    IPC分类号:

    G06F11/36

    主分类号:

    G06F11/36

    申请人:

    南京大学

    发明人:

    陈振宇; 房春荣; 杨忠军; 赵志宏; 张杰

    地址:

    210093 江苏省南京市鼓楼区汉口路22号

    优先权:

    专利代理机构:

    南京天翼专利代理有限责任公司 32112

    代理人:

    黄明哲

    PDF完整版下载: PDF下载
    内容摘要

    一种基于谓词自适应随机测试的测试用例集扩增方法,程序中的分支条件表达式称为分支,由分支条件回溯至输入域的表达式称为谓词,用于回归测试,结合软件修改分析的白盒测试技术与自适应随机测试ART的黑盒测试技术,首先进行谓词提取,然后通过谓词距离引导ART进行测试用例集扩增。本发明方法结合软件修改分析的白盒测试技术与ART的黑盒测试技术,从而达到较低成本的测试用例集的有效扩增。

    权利要求书

    1: 一种基于谓词自适应随机测试的测试用例集扩增方法, 程序中的分支条件表达式称 为分支, 由分支条件回溯至输入域的表达式称为谓词, 其特征是用于回归测试, 结合软件修 改分析的白盒测试技术与自适应随机测试 ART 的黑盒测试技术, 首先进行谓词提取, 然后 通过谓词距离引导 ART 进行测试用例集扩增, 包括以下步骤 : 1) 使用 Dejavu 测试用例选择方法, 从原测试用例集中选择经过修改部分的测试用例, 构成已选择测试用例集 ; 2) 静态分析回归测试的新版本程序, 提取程序中所有能被提取的谓词 ; 3) 采用谓词序列值的 Jaccard 距离计算测试用例之间的距离 : 将提取出的谓词组成一 个谓词集合, 谓词数量记为 Nall, 谓词结果集中相同值的数量记为 Nsame ; 然后使用测试用例 t 静态执行谓词得到一个谓词结果集合 R ; 通过谓词结果集合 R 计算测试用例间的谓词距离, 测试用例间的谓词距离 D(t1, t2) 采用 Jaccard 距离计算, 如下所示 : D(t1, t2) = 1-Nsame/Nall 将所得谓词距离定义为测试用例间的距离 ; 4) 进行基于谓词的自适应测试用例生成过程, 生成新的测试用例集, 具体过程为 : 在 输入域上随机生成 n 个测试用例, 分别计算生成的测试用例与已选择测试用例集的各个测 试用例之间的谓词距离, 并将所得最小距离作为该生成的测试用例与已选择测试用例集之 间的距离, 然后将这 n 个测试用例中与已选择测试用例集距离最大的那个作为新增的测试 用例, 重复此过程 m 次, 整个过程终止, m 为需要扩增的测试用例数量 ; 或者在设定的时间内 未扩增新的测试用例时, 整个过程终止。
    2: 根据权利要求 1 所述的一种基于谓词自适应随机测试的测试用例集扩增方法, 其特 征是步骤 4) 中, 在输入域上随机生成 n 个测试用例, n = 10。
    3: 根据权利要求 1 或 2 所述的一种基于谓词自适应随机测试的测试用例集扩增方法, 其特征是步骤 2) 中的谓词提取为 : 从程序分支中静态回溯所提取的表达式, 并表示为输入 域变量和程序常量的表达式, 其具体形式如下 : ExpressionΘConstant Θ 表示比较符号, Expression 表示一个包含变量的表达式, Constant 表示常量, 对于 谓词的其它形式, 通过变换表示成此形式 ; 对于 Expression 中含有非输入参数的变量, 通 过规约表示为输入参数的形式, 规约后的谓词形式如下 : Expression only with argumentsΘConstant 谓词提取时 : 1) 忽略含有全局变量的分支 ; 2) 忽略含有对库函数和第三方函数调用的谓词。

    说明书


    一种基于谓词自适应随机测试的测试用例集扩增方法

        技术领域 本发明属于软件测试技术领域, 尤其是软件测试中回归测试技术领域, 用于进行 测试用例集的扩增, 实现对新版本软件更全面地测试, 为一种基于谓词自适应随机测试的 测试用例集扩增方法。
         背景技术
         由于功能修改、 性能调优、 软件重构和错误修复等因素, 软件需要修改演化。回归 测试是对软件修改进行检测以确保其未引入新错误。现有回归测试研究通常分为三大类 : 测试用例选择 (Test Case Selection), 测试用例修复 (Test Case Repairing), 以及测试 用例集扩增 (Test Suite Augmentation)。测试用例选择的主要任务就是从原有测试用例 中进行挑选, 按目标不同可分为三类 : 回归测试选择、 测试用例集约简和测试用例优先级。 软件的修改可能使得原有测试用例不可用 ; 测试用例修复的目标是将其修复成可用测试用 例。测试用例集扩增则通过新增测试用例进行更加全面的回归测试。
         过去二十年回归测试研究主要集中在测试用例选择。 然而在面向软件演化测试的 一些应用中, 重用部分甚至全部测试用例也不能完全满足软件演化带来的测试需求。 例如, 原有测试用例往往不能测试到新增模块。因而需要新的测试用例来满足测试需求。测试用 例集扩增通过软件修改分析提取新的测试需求, 并通过特定测试用例生成方法得到新测试 用例。测试用例集扩增的主要挑战是如何将软件修改分析与测试用例生成有机结合, 以降 低测试成本并提高回归测试的精度。当前的测试用例集扩增主要基于符号执行、 启发式搜 索等测试用例生成技术。白盒测试技术适合与软件修改分析相结合, 但用其进行测试用例 生成往往受限于过高的代价。 发明内容
         本发明要解决的问题是 : 现有的测试用例扩增方法不能满足回归测试中测试用例 集扩增对测试成本和测试精度的要求, 需要新的测试用例扩增方法来满足这些需求。
         本发明的技术方案为 : 一种基于谓词自适应随机测试的测试用例集扩增方法, 程 序中的分支条件表达式称为分支, 由分支条件回溯至输入域的表达式称为谓词, 用于回归 测试, 结合软件修改分析的白盒测试技术与自适应随机测试 ART 的黑盒测试技术, 首先进 行谓词提取, 然后通过谓词距离引导 ART 进行测试用例集扩增, 包括以下步骤 : 1) 使用 Dejavu 测试用例选择方法, 从原测试用例集中选择经过修改部分的测试用例, 构成 “选择的测试用例集” ; 2) 静态分析回归测试的新版本程序, 提取程序中所有可能被提取的谓词 ; 3) 采用谓词序列值的 Jaccard 距离计算测试用例之间的距离 : 将提取出的谓词组成一 个谓词集合, 谓词数量记为 N all , 谓词结果集中相同值的数量记为 N same ; 然后使用测试用例 t 静态执行谓词得到一个谓词结果集合 R ; 通过谓词结果集合 R 计算测试用例间的谓词距离, 测试用例间的谓词距离 D (t 1,t 2 ) 采用 Jaccard 距离计算, 如下所示 :将所得谓词距离定义为测试用例间的距离 ; 4) 进行基于谓词的自适应测试用例生成过程, 生成新的测试用例集, 具体过程为 : 在输 入域上随机生成 n 个测试用例, 分别计算生成的测试用例与已选择测试用例集的各个测试 用例之间的谓词距离, 并将所得最小距离作为该生成的测试用例与已选择测试用例集之间 的距离, 然后将这 n 个测试用例中与已选择测试用例集距离最大的那个作为新增的测试用 例, 重复此过程 m 次, 整个过程终止, m 为需要扩增的测试用例数量 ; 或者在设定的时间内未 扩增新的测试用例时, 整个过程终止。
         作为优选, 步骤 4) 中, 在输入域上随机生成 n 个测试用例, n=10。
         步骤 2) 中的谓词提取为 : 从程序分支中静态回溯所提取的表达式, 并表示为输入 域变量和程序常量的表达式, 其具体形式如下 : ExpressionΘConstant Θ 表示比较符号, Expression 表示一个包含变量的表达式, Constant 表示常量, 对于 谓词的其它形式, 通过变换表示成此形式 ; 对于 Expression 中含有非输入参数的变量, 通 过规约表示为输入参数的形式, 规约后的谓词形式如下 : Expression only with argumentsΘConstant 谓词提取时 : 1) 忽略含有全局变量的分支 ; 2) 忽略含有对库函数和第三方函数调用的谓词。
         本发明的特点在于 : 1、 提出谓词提取技术 ; 2、 提出谓词距离的定义 ; 3、 采用谓词 距离进行自适应随机测试 ; 4、 结合测试用例选择技术和基于谓词的自适应测试技术进行测 试用例集扩增。通过实验表明, 本发明能够通过较低代价达到更高的分支覆盖。
         本发明方法结合软件修改分析的白盒测试技术与 ART 的黑盒测试技术, 通过引入 新的距离度量方式 -- 谓词距离, 引导 ART 进行测试用例集扩增, 从而达到较低成本的测试 用例集的有效扩增。 测试用例集扩增的经验表明尽可能多利用原来版本的程序信息及测试 用例集信息, 可以有助于扩增的测试用例达到更好的测试效果。 针对软件修改, 我们首先采 用白盒技术, 在分析已有分支覆盖和软件修改信息的基础上, 定位需要覆盖的分支条件集 合, 并将分支条件静态回溯至输入域得到新的谓词表达式。然后通过引入新的距离度量方 式 -- 谓词距离, 引导 ART 黑盒测试技术进行有效的测试用例集扩增。程序静态分析技术和 黑盒测试用例生成技术的结合, 能够有效降低新测试用例生成代价, 提高新增测试用例的 测试精度。 附图说明
         图 1 为本发明的流程图。
         图 2 为本发明谓词提取的示例图。
         图 3 为利用本发明方法对 0.5% 的测试用例集扩增 15 个新测试用例。
         图 4 为利用本发明方法对 1% 的测试用例集扩增 10 个新测试用例。具体实施方式
         如图 1, 本发明结合软件修改分析的白盒测试技术与自适应随机测试的黑盒测试 技术对于回归测试中的测试用例集进行扩增, 使其通过较低代价达到更高的分支覆盖率, 步骤如下 : 1) 使用 Dejavu 测试用例选择方法, 从原测试用例集中选择经过修改部分的测试用例, 构成 “已选择测试用例集” , 原有测试用例集 T 中其它测试用例则被去除 ; 2) 静态分析回归测试的新版本程序, 提取程序中所有可能被提取的谓词 ; 程序中的分 支条件表达式称为 “分支” , 由分支条件回溯至输入域的表达式称为 “谓词” 。谓词提取为 : 从程序分支中静态回溯所提取的表达式, 并表示为输入域变量和程序常量的表达式, 其具 体形式如下 : ExpressionΘConstant Θ 表示比较符号, Expression 表示一个包含变量的表达式, Constant 表示常量, 对于 谓词的其它形式, 通过变换表示成此形式 ; 对于 Expression 中含有非输入参数的变量, 通 过规约表示为输入参数的形式, 规约后的谓词形式如下 : Expression only with argumentsΘConstant 谓词提取时 : (1) 若谓词中含有全局变量, 由于全局变量值在程序运行时才能确定, 全局变量值难以 静态确定, 因此忽略含有全局变量的分支 ; (2) 若谓词中含有对库函数和第三方函数的调用, 由于此类函数难以静态分析, 因此忽 略此类谓词。 特别注意的是, 虽然更多的谓词能够表达更精确的 “谓词距离” , 但本发明的技 术并不要求所有分支均静态回溯成谓词。 谓词提取过程示例如图 2, 在这个例子中, 示例程序共有 3 个不同谓词 (P1, P2, P3) , 下面介绍提取过程 : P1 符合提取谓词的目标形式, 所以直接输出 ; P2 有一条路径通往 程序入口, 消除中间变量后输出 ; P3 有两条路径通往程序入口, 所以谓词规约为 P3A 和 P3B, 提取后消除中间变量后输出。示例程序的谓词序列如表 1 所示。
         表1: 示例程序的谓词提取序列
         3) 采用谓词序列值的 Jaccard 距离计算测试用例之间的距离 : 将提取出的谓词组成 一个谓词集合, 谓词数量记为 N all , 谓词结果集中相同值的数量记为 N same ; 然后使用测试用 例 t 静态执行谓词得到一个谓词结果集合 R ; 通过谓词结果集合 R 计算测试用例间的谓词 距离, 测试用例间的谓词距离 D (t 1,t 2 ) 采用 Jaccard 距离计算, 如下所示 :所得谓词距离即为测试用例间的距离 ; 4) 进行基于谓词的自适应测试用例生成过程, 生成新的测试用例集。具体过程为 : 在输入域上随机生成 n 个测试用例, 经验表明 : n=10 效果最好, 通过计算生成的测试用例与已 选择测试用例集各个测试用例之间的谓词距离, 并将所得最小距离作为该测试用例与已选 择测试用例集之间的距离, 然后将这 n 个测试用例中与已选择测试用例集距离最大的那个 作为新增的测试用例。重复此过程 m 次, m 为需要扩增的测试用例数量, 或者在设定的时间 内未扩增新的测试用例, 整个过程终止。
         下面将通过具体的实施例来说明本发明的实施。
         通过实验来验证本测试用例集扩增技术的有效性。为了证明本发明的有效性, 我们将对比随机测试 RT 的结果。因此, 在实验部分对原来测试用例集的扩增分别使用了本 发明和 RT 的测试用例集扩增技术, 比较二者的分支覆盖增长率。
         1、 实验对象 在选取实验对象时, 我们的目标是选择一个经典的实验程序, 该程序输入为数值型。 因 此, 选择的实验对象是 Siemens 实验套件的 Tcas 程序, 它的优点是包含完善的测试用例集 和相关的测试脚本, 并且被很多研究者使用, 属于经典的实验程序。
         2、 评估准则 本发明, 以下称为基于 P-ART 测试用例扩增方法, 目标是尽可能多的覆盖被测程序的 分支, 因此选择测试用例集的分支覆盖率作为检测标准。测试用例集 T 对于的分支覆盖率 PT 计算方法为 : , 其中 NT 为 T 执行过的谓词, N 为所有谓词 具体检测基于 P-ART 测试用例扩增方法的有效性的方法是, 在选择的测试用例集上进 行 P-ART 的扩增和随机测试生成测试用例 (Random Testing) 的扩增, 比较扩增后的测试用 例集相对于扩增前测试用例集的增长率。设定经过基于 P-ART 扩增后生成的测试用例集为 经过 Random Testing 扩增方式生成的测试用例集为 TRT。则 TP-ART 和 TRT 的分别增长 TP-ART, 率计算如下 :实验在计算测试用例集的分支覆盖的时候, 使用了 Codecover 进行插桩, 完成分支覆 盖率的计算。
         3、 实验实施 基于 Java 平台实现整个算法过程, 将 Tcas 程序由 C 语言版本改为 Java 语言版本。测 试用例选择使用了 Sofya, 它提供了代码插桩和控制流图 (CFG) 的构建, 并且提供了用于测 试用例选择的 RTS 模块 (Dejavu) 。在谓词提取方面, 在转换 Tcas 程序语言版本的时候, 我 们采用目标谓词的形式将 C 语言版本转换为 Java 版本, 因此可以直接输出程序中的谓词序 列。
         4、 结果分析 由于 Tcas 程序自带的测试用例集数量比较大, 但是程序本身比较小, 控制流结构相对 单一, 这就导致很少的一部分测试用例就可以达到很高甚至完全的分支覆盖。为了避免这 样的问题, 同时保证实验数据的精确性, 我们分别从原测试用例集中随机选择 0.5% 和 1%,并对每一种选择重复做 15 次实验。 30 组的实验结果如图 3 和 4 所示, 图中 P-ART 指 , RT 指
         ) 。综合实验数据看, 同等条件下, 本发明优于随机测试 (RT) 用例生成方法 ; 其次, 在 原测试用例集的覆盖率不高情况下, 本发明基于 P-ART 测试用例扩增方法可以达到很好的 效果。

    关 键  词:
    一种 基于 谓词 自适应 随机 测试 用例集 扩增 方法
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:一种基于谓词自适应随机测试的测试用例集扩增方法.pdf
    链接地址:https://www.zhuanlichaxun.net/p-4216168.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1