首页 > 专利 > 浙江理工大学 > 一种基于One-test-at-a-time策略的组合测试用例优先级排序方法专利详情

一种基于One-test-at-a-time策略的组合测试用例优先级排序方法   0    0

有效专利 查看PDF
专利申请流程有哪些步骤?
专利申请流程图
申请
申请号:指国家知识产权局受理一件专利申请时给予该专利申请的一个标示号码。唯一性原则。
申请日:提出专利申请之日。
2017-03-09
申请公布
申请公布指发明专利申请经初步审查合格后,自申请日(或优先权日)起18个月期满时的公布或根据申请人的请求提前进行的公布。
申请公布号:专利申请过程中,在尚未取得专利授权之前,国家专利局《专利公报》公开专利时的编号。
申请公布日:申请公开的日期,即在专利公报上予以公开的日期。
2017-06-23
授权
授权指对发明专利申请经实质审查没有发现驳回理由,授予发明专利权;或对实用新型或外观设计专利申请经初步审查没有发现驳回理由,授予实用新型专利权或外观设计专利权。
2019-08-16
预估到期
发明专利权的期限为二十年,实用新型专利权期限为十年,外观设计专利权期限为十五年,均自申请日起计算。专利届满后法律终止保护。
2037-03-09
基本信息
有效性 有效专利 专利类型 发明专利
申请号 CN201710137624.1 申请日 2017-03-09
公开/公告号 CN106776351B 公开/公告日 2019-08-16
授权日 2019-08-16 预估到期日 2037-03-09
申请年 2017年 公开/公告年 2019年
缴费截止日
分类号 G06F11/36 主分类号 G06F11/36
是否联合申请 独立申请 文献类型号 B
独权数量 1 从权数量 0
权利要求数量 1 非专利引证数量 1
引用专利数量 3 被引证专利数量 0
非专利引证 1、张娜、姚澜、包晓安、董萌、桂宁.多目标优化的测试用例优先级在线调整策略《.软件学报》.2015,第26卷(第10期),黄如兵.组合测试用例的自适应随机生成与优先级排序方法研究《.中国博士学位论文全文数据库 信息科技辑》.2015,;
引用专利 CN102880545A、CN105446885A、CN102855185A 被引证专利
专利权维持 5 专利申请国编码 CN
专利事件 事务标签 公开、实质审查、授权
申请人信息
申请人 第一申请人
专利权人 浙江理工大学 当前专利权人 浙江理工大学
发明人 包晓安、林青霞、张娜、熊子健 第一发明人 包晓安
地址 浙江省杭州市江干经济开发区2号大街928号 邮编 310018
申请人数量 1 发明人数量 4
申请人所在省 浙江省 申请人所在市 浙江省杭州市
代理人信息
代理机构
专利代理机构是经省专利管理局审核,国家知识产权局批准设立,可以接受委托人的委托,在委托权限范围内以委托人的名义办理专利申请或其他专利事务的服务机构。
杭州求是专利事务所有限公司 代理人
专利代理师是代理他人进行专利申请和办理其他专利事务,取得一定资格的人。
郑海峰
摘要
本发明公开了一种基于One‑test‑at‑a‑time策略的组合测试用例优先级排序方法,属于软件测试领域。本发明包括:通过One‑test‑at‑a‑time策略思想,在组合测试用例集中每次选择一条优先级最高的测试用例用于执行;测试用例优先级使用多重待覆盖率、测试用例失效率和测试用例重要度三个影响因子及权重因子α、β、γ计算的结果排序;根据测试用例的测试情况,实时调整影响因子参数取值;再根据调整后的影响因子参数取值,选择下一条优先级最高的测试用例进行执行,反复直至达到测试目标。本发明可用于不同组合覆盖强度生成的测试用例优先级的排序,能够有效地在使用相同的测试用例数量情况下检测出更多的缺陷,提高了缺陷检测效率。
  • 摘要附图
    一种基于One-test-at-a-time策略的组合测试用例优先级排序方法
  • 说明书附图:图1
    一种基于One-test-at-a-time策略的组合测试用例优先级排序方法
  • 说明书附图:图2
    一种基于One-test-at-a-time策略的组合测试用例优先级排序方法
  • 说明书附图:图3
    一种基于One-test-at-a-time策略的组合测试用例优先级排序方法
法律状态
序号 法律状态公告日 法律状态 法律状态信息
1 2019-08-16 授权
2 2017-06-23 实质审查的生效 IPC(主分类): G06F 11/36 专利申请号: 201710137624.1 申请日: 2017.03.09
3 2017-05-31 公开
权利要求
权利要求书是申请文件最核心的部分,是申请人向国家申请保护他的发明创造及划定保护范围的文件。
1.一种基于One-test-at-a-time策略的组合测试用例优先级排序方法,其特征在于,包括如下步骤:
(1)初始化测试用例序列集,输入组合测试用例集;
(2)计算每条尚未执行的测试用例的优先级;
所述的步骤(2)中测试用例优先级计算方法为:
计算测试用例的优先级 其公式如下:
其中,tcj是测试用例,ti是当前时刻,λ为组合覆盖力度, 是测试用例tcj多重待覆盖率, 是测试用例tcj失效率, 是测试用例tcj重要程度,α、β、γ分别表示多重待覆盖率、测试用例失效率和测试用例重要程度的权值,且α+β+γ=1;
多重待覆盖率 计算方法为:
其中0<ωk≤1.0且
测试用例待覆盖率 计算方法为:
其中,CombSetk(tcj)是测试用例tcj中覆盖的所有k元组合的集合;
测试用例失效率 的计算方法为:
其中, 是参数取值失效率,fk是组合测试的影响因素,p为fk取值, 是参数取值失效个数;
测试用例重要程度计算方法
其中,ω(fk,p)是参数取值优先级权值,n是测试用例tcj中参数的个数;
(3)寻找当前时刻优先级最高的测试用例集,当存在多个优先级最高的测试用例时,将这些优先级相同且优先级最高的测试用例表示成一个优先级最高的测试用例集;
(4)从优先级最高的测试用例集随机选取一条测试用例 并执行这条测试用例且获取测试结果;
(5)根据执行测试用例 的测试结果,调整测试用例的失效率;
所述的步骤(5)中测试用例失效率的调整方法为:
根据测试用例 的测试结果,调整测试用例的失效率,即调整参数取值失效率使得ti+1时刻的测试用例的失效率能够在测试过程中动态调整;若ti时刻,测试用例 检测出待测软件系统中存在缺陷,则ti+1时刻,各参数取值失效率的调整如下:
其中,Δc为失效率的增加值;
若ti时刻,测试用例 未检测出待测软件系统中存在缺陷,则ti+1时刻,各参数取值失效率的调整如下:
(6)将执行过的测试用例 插入到测试用例序列集的尾部,将执行过的测试用例从组合测试用例集中剔除;
(7)重复步骤(2)~(6),直到组合测试用例集中测试用例的个数等于0为止;
(8)输出测试用例序列集。
说明书

技术领域

[0001] 本发明属于软件测试领域,具体涉及一种基于One-test-at-a-time策略的组合测试用例优先级排序方法。

背景技术

[0002] 在计算机行业迅速发展的时代,新型的软件产品层出不穷,软件产品升级换代的步伐也迈得越来越快,这使得对软件产品进行回归测试的频率不断上升。然而,对于开发商而言,花费大量时间、消耗巨额资金也只能是事倍功半。在这种高成本的开销下,如何有效的在短时间低成本的前提下尽早发现软件产品的缺陷这一难题成为了测试人员不断开拓创新的重点。
[0003] 测试用例的优先级排序技术是一种高效实用的测试技术。随着测试用例优先级技术的引入,为了能够较好较快的达到测试目标,根据测试用例完成测试目标的程度这一信息进行排序,从而执行优先执行贡献较高的测试用例。
[0004] 组合测试是软件测试的重要方法之一,该方法已经广泛运用于测试用例的生成中,该方法能够缩减测试用例集的规模。由于资源限制,大多数情况下无法对组合测试生成的测试用例进行完全测试,因此只能尽可能多的优先执行部分贡献程度较高的测试用例。
[0005] 现有的组合测试用例优先级算法基本都是从覆盖组合的角度出发,通过某个标准对测试用例进行衡量并给出相应的优先级,再通过这些优先级进行逐一对测试用例进行测试。或针对测试过程本身对测试用例在执行过程中动态的调整优先级。大部分情况下,在对组合测试用例排序因素的选取过于单一,并且没有考虑测试过程本身触发的实时问题。
[0006] 因此,针对组合测试用例优先级存在的缺陷,本发明提出了一种针对固定力度组合测试用例优先级排序的方法:首先,根据现有的组合测试用例生成情况,初始化测试用例集。通过One-test-at-a-time策略思想,每次选择一条测试用例用于执行。将测试用例按照多个影响因子共同计算的结果进行排序,影响因子之间利用权值权衡重要关系。根据当前测试用例的测试情况,调整影响因子参数取值以适应测试用例的实时排序。再根据调整后的影响因子参数取值,选择下一条优先级最高的测试用例进行执行,反复直至所有测试用例排序完毕或达到测试目标。

发明内容

[0007] 本发明的目的是对原始组合测试用例优先级算法进行改进,增加多个优先级排序影响因子和根据实际测试结果调整影响因子取值的策略,提供一种更加有效的组合测试用例优先级排序方法。
[0008] 本发明解决其技术问题所采用的技术方案如下:
[0009] 定义:
[0010] 在一个待测软件系统(简称SUT)中,假设存在n个影响因素,这些影响因素构成一个有限集合{f1,f2,…,fn},其中每个影响因素fi的取值为vi={p1,p2,…,pk}。那么,SUT的一条测试用例tc={x1,x2,…,xn}(x1∈v1,x2∈v2,…,xn∈vn)。
[0011] 组合测试中,测试用例的生成都是要求完全覆盖的一定力度组合,以达到生成的测试用例集规模尽可能最小的目的。用例使用组合测试覆盖矩阵存储,组合测试覆盖矩阵每一行代表一个测试用例,每一列代表一个影响因素,每一项是对应影响因素的取值。
[0012] 组合测试覆盖矩阵分为固定力度覆盖矩阵CA=(N;λ,n,|v1||v2|…|vn|)和可变力度覆盖矩阵VCA=(N;λ,n,|v1||v2|…|vn|,C),本发明仅讨论关于固定力度覆盖矩阵的组合测试用例的情况。其中,N为测试用例个数,λ为组合覆盖力度,n为影响因素个数,|vi|为影响因素fi的取值数量。CA=(N;λ,n,|v1||v2|…|vn|)是一个N×n的矩阵,要求任意N×λ子矩阵包含了在值域上的所有λ元组至少一次。
[0013] 对于任意一条测试用例tc={x1,x2,…,xn},必定覆盖 个组合。CombSetλ(tc)可以描述为:
[0014]
[0015] One-test-at-a-time策略:
[0016] One-test-at-a-time策略普遍应用于组合测试的研究中,其简单、有效、便于扩展的特点使得该策略能够较好的改进并运用到测试用例优先级排序算法中。在组合测试的研究中,能够利用One-test-at-a-time策略构建Greedy算法的框架。该策略是一维扩展机制,选用全局贪心算法能够达到最理想的状态。即每次选择一条要执行的测试用例时,选择优先级最高的测试用例。
[0017] 固定力度组合测试优先级排序算法:
[0018] 多重覆盖的固定力度组合测试用例集的优先级排序算法(简称MICP)是一种在单一覆盖的组合测试优先级排序方法(简称ICBP)的基础上进行改进的算法。ICBP是每次从候选测试用例集T中,选择一条测试用例ts,使得ts能够覆盖最多的组合测试用例序列S尚未覆盖的λ元组合。MICP也是每次从候选测试用例集T中,选择一条测试用例tc,使得tc与组合测试用例序列S中所有的测试用例多重组合覆盖信息的相似度最小。覆盖λ元参数值组合的相似性(简称CVCSλ)描述了测试用例tc和候选测试用例集T覆盖的公有λ元参数组的个数,且CVCSλ(tc,T)=|CombSetλ(tc)∩CombSetλ(T)|。归一化的相似性度量(简称NCVCSλ)是相似性计算的度量方式,计算如下:
[0019]
[0020] MICP和ICBP都是以固定力度组合测试当前组合覆盖力度λ为主要排序依据。ICBP仅考虑当前组合覆盖力度λ的所有元组的覆盖情况,而MICP参考全部组合覆盖力度为λ及λ以下元组的相似情况。MICP采用多重覆盖信息的相似性度量(简称MICS),计算如下:
[0021]
[0022] 其中0<ωi≤1.0且
[0023] MICP在参数值组合速率和错误检测速率上均优于ICBP。故本发明采用类似于MICP方式,用于多重覆盖组合的计算。
[0024] 本发明提出的组合测试用例优先级排序方法可用于不同组合覆盖强度生成的测试用例优先级的排序中,能够有效地在使用相同的测试用例数量情况下检测出更多的缺陷,提高缺陷检测的效率。

实施方案

[0028] 下面结合附图并通过具体实施方式来进一步描述本发明。
[0029] 图1为本发明算法中实施的One-test-at-a-time策略算法流程图。
[0030] 本发明所述的组合测试用例优先级方法,将One-test-at-a-time策略、多目标优化思想和组合测试用例优先级排序算法相结合,提出了一种多个优先级排序影响因子和根据实际测试结果调整影响因子取值的策略,用于组合测试用例优先级排序,如图2所示,包括以下步骤:
[0031] 步骤1:初始化测试用例序列集 输入组合测试用例集 是t0时刻的测试用例序列集, 是t0时刻的组合测试用例集。此时,i=0。
[0032] 步骤2:计算每条尚未执行的测试用例的优先级
[0033]
[0034] 其中,tcj是测试用例,ti是当前时刻,λ为组合覆盖力度, 是测试用例tcj多重待覆盖率。表示测试用例tcj,在ti时刻覆盖测试用例序列 以外组合力度为λ及λ以下所有组合的强度。 是测试用例tcj失效率。表示测试过程中,ti时刻测试用例tcj的失效率。 是测试用例tcj重要程度。α、β、γ分别表示多重待覆盖率、测试用例失效率和测试用例重要程度的权值,且α+β+γ=1。
[0035] 步骤2.1:计算测试测试用例tcj多重待覆盖率
[0036]
[0037] 其中0<ωk≤1.0且 多重待覆盖率则是考虑测试用例tcj覆盖测试用例序列集 中尚未覆盖组合的概率,并且要求覆盖的k元参数值组合,当k不同时,覆盖组合情况也存在不同。故引入权重的概念,使用所有k元参数值组合覆盖率的加权平均值作为多重待覆盖率。考虑测试用例tcj覆盖情况,测试用例tcj能够覆盖测试用例序列集 中尚未覆盖的组合越多,则测试用例tcj越容易被选取用于下一条测试的用例。若k固定时,只计算k元参数值组合覆盖率,故采用测试用例tcj已覆盖测试用例序列集 中组合的概率取反,得到测试用例tcj未覆盖测试用例序列集 中组合的概率。图3是测试用例待覆盖率的计算流程图。
[0038]
[0039] 其中, 是测试用例tcj待覆盖率,表示测试用例tcj,在ti时刻覆盖测试用例序列 中组合力度为k组合的强度。
[0040] 步骤2.2:计算测试用例tcj失效率
[0041]
[0042] 其中, 是参数取值失效率。表示测试过程中,ti时刻测试用例tcj的影响因素fk中,取值为p的失效率。 是参数取值失效个数。表示测试用例tcj中,ti时刻参数取值失效率不为0的参数取值个数,即 的参数取值个数。
[0043] 步骤2.3:计算测试用例tcj重要程度
[0044]
[0045] 其中,ω(fk,p)是参数取值优先级权值。表示影响因素fk中,取值为p的优先级权值。n是测试用例tcj中参数的个数。
[0046] 步骤2.4:计算测试用例tcj的优先级
[0047]
[0048] 步骤2.5:重复步骤2.1~2.4,直到组合测试用例集 中的所有测试用例的优先级计算出结果为止。
[0049] 步骤3:寻找ti时刻优先级最高的测试用例集equalSet。可能存在多个优先级最高的测试用例,将这些优先级相同且优先级最高的测试用例表示成一个优先级最高的测试用例集。
[0050] 步骤4:从测试用例集equalSet随机选取一条测试用例 并执行测试用例 且获取测试结果。
[0051] 步骤5:根据测试用例 的测试结果,调整测试用例的失效率,即调整参数取值失效率 使得ti+1时刻的测试用例的失效率能够在测试过程中动态调整。在测试过程中,测试用例的执行能够反馈当前可能存在的错误与缺陷,那么测试用例所覆盖的参数取值的失效率需要做出相应的调整,以保证测试用例失效率能够实时计算,确保最终优先级排序的准确性。若ti时刻,测试用例 检测出待测软件系统中存在缺陷,测试结果只能反应软件失效,但无法判断究竟是由哪些参数相互作用引发的失效。因此,只能对 覆盖的所有参数取值的失效率相应增加,其他参数取值的失效率保持不变。则ti+1时刻,各参数取值失效率可用以下公式:
[0052]
[0053] 其中,Δc为失效率的增加值。
[0054] 若ti时刻,测试用例 未检测出待测软件系统中存在缺陷,则该测试用例覆盖的所有参数取值的失效率变为0,其他参数取值的失效率保持不变。则ti+1时刻,各参数取值失效率可用以下公式:
[0055]
[0056] 步骤6:时刻i增加。将测试用例 插入到测试用例序列集 的尾部,将测试用例从组合测试用例集 中剔除。
[0057] 步骤7:重复步骤2~6,直到组合测试用例集 中测试用例的个数等于0为止。
[0058] 步骤8:输出测试用例序列集

附图说明

[0025] 图1是One-test-at-a-time策略算法流程图。
[0026] 图2是测试用例待覆盖率的计算流程图。
[0027] 图3是基于One-test-at-a-time策略的组合测试用例优先级排序算法流程图。
版权所有:盲专网 ©2023 zlpt.xyz  蜀ICP备2023003576号