跟着软件行业的赶快发展,软件家具升级换代的频率越来越高,使取得归测试的资本也越来越高[1, 2].在大领域软件的测试中,统统运行测试用例进行聚合的测试不息需要几天致使几个月才能完成.在这种情况下,测试东谈主员就但愿对测试用例的优先级按某种轨范进行排序twitter 巨臀,使得优先级高的用例有时尽早地被推行,从而提高测试效率.测试用例优先级时间恰是为了处置这一问题而提倡来的[2],该时间指出:不同测试用例对于测试操办的完成有着不同的孝敬进度,为了有时更快地达成测试操办,有必要依据测试的历史信息将不同的测试用例进行比较和排序,从而优先推行相对痛苦的测试用例.
围绕测试用例的优先级问题照旧有大批的操办:Wong等东谈主[3]早先在讲究测试中诳骗优先级时间,将测试用例集按照其对代码的肃清才能进行排序,并以此轨范顺序取舍推行测试用例;Rothermel等东谈主[4]通过一系列有针对性的实验操办,证实了优先级时间在提高检错率方面的灵验性;Elbaum[5]和Arpad等东谈主[6]从语句肃清、分支肃清和检错才能等方面提倡了多种基于动态响应信息的优先级算法;屈波等东谈主[7]操办了基于测试用例想象信息的讲究测试优先级设定问题,利用测试用例的想象和推行信息对测试用例优先级进活动态调治;Walcott等东谈主[8]操办了与时间身分联系的优先级设施,提倡了按照测试用例的历史推行时间对其进行优先级排序的设施; Tonella等东谈主[9]提倡了一种机器学习的设施,利用测试者的造就对测试用例痛苦进度进行评估和排序;Srikanth等东谈主[10]在系统级别上对基于需求的测试用例优先级排序问题进行了操办,笔据测试用例兴盛需求的情况以及需求的权重设定其优先级;Kavitha等东谈主[11]在Srikanth操办的基础上,从需求变更、需务竣事复杂度等方面开拔,提倡基于需求肃清权重的优先级排序时间;Yoo等东谈主[12]则在测试用例取舍中引入Pareto效率设施,以此结合多操办优化来设立测试用例优先级;Kim等东谈主[13]将讲究测试视为一系列有序的步履序列,提倡了笼统商量多样测试历史的优先级时间.另外,针对现存测试用例优先级时间缺乏明确的优化操办这一问题,咱们提倡了一种基于受控马尔可夫链的测试用例优先级在线调治设施[14, 15].
针对现存的测试用例优先级算法很少情态测试用例静态的需求肃清情况等想象信息和测试东谈主员需要在线网罗要领中每条语句的联系信息、对代码信息的依赖度较高这些情况,本文提倡了一种基于需求的多操办优化测试用例优先级在线调治战术:最初,基于测试用例想象信息界说测试用例需求肃清率矩阵;然后,在此基础上引入了情态需求肃清率、基于需求的测试用例痛苦度和失效率这3个测试用例优先级影响因子,并笔据测试经过中已肃清的需求情况和测试用例的推行扫尾对测试用例的情态需求肃清率和测试用例失效率进行在线估量;临了,竣事测试用例优先级的在线调治.该设施的优点在于:在不依赖代码信息的要求下保留了优先级在线调治的优点,幸免了罕见的支出.同期,用3个因子共同笃定测试用例优先级,幸免了笃定身分过于单一的流毒.
1 基于需求的测试用例优先级筹备设施 1.1 优先级影响身分引入在软件测试工程实践中,测试工程师最梦想的操办是:尽可能地用最短的时间检测到尽可能多严重品级较高的软件颓势.为此,最初要处置的问题是笃定测试住手轨范(即,软件测试充分性轨范).在执行测试经过中,测试东谈主员平方将肃清率算作测试住手轨范,实践解释:达到一定肃清率轨范的软件,平方其测试齐是较为充分的,其质地或可靠性也较高[16].东谈主们常用的肃清率轨范有代码肃清率、功能肃清率等,但执行上,功能是由一段段代码构成的,因此不管是功能点照旧代码块,齐不错被抽象成广义需求[17],基于广义需求的需求肃清率轨范不错平方应用于多样类型的白盒测试和黑盒测试中.鉴于此,本文将需求肃清率算作测试住手轨范.
在测试经过开首之前,平方测试用例已想象罢了,测试东谈主员可笔据测试用例中的想象信息预期测试需求的肃清情况,从而得到测试用例的需求肃清率矩阵[18].为了用最短的时间达到需求肃清率,要求每次齐选取对通盘这个词的积存肃清率孝敬较大的测试用例,而不是单独商量各测试用例固有的需求肃清率.为此,本文引入情态需求集的看法,该看法是Chen等东谈主[19]在先容他们操办的Test-Tube器具时所提倡来的,他们的想象念念路是:在修改软件时就将与之联系的测试笃定下来,并据此笃定相应的测试肃清单元蚁集(即,情态需求集),从而寻求合适的测试用例.鉴戒该念念想,本文将测试经过中尚未被肃清的测试需求称为情态需求,将测试用例的情态需求肃清率算作决定测试用例优先级的一个痛苦身分,并笔据测试用例推行情况对其进行在线估量和调治.由于情态需求激发软件失效的风险较大,因此优先推行情态需求肃清率较大的测试用例,一方面有助于快速提高需求肃清率、裁汰斥地周期,另一方面有时快速提高软件可靠性和软件测试效率.
由于测试用例的失效最终是由测试需求的失效引起的,而一个测试用例平方可肃清多个测试需求,因此不错用测试用例肃清的通盘需求的失效率来揣度测试用例失效率.操办标明,肃清相易或雷同测试需求的测试用例往往会检测出相易或雷同的诞妄[20].为了进一步证据问题或检测到雷同问题,测试东谈主员会对与之联系的测试用例齐推行一遍,而这种测试用例的联系性平方表当今肃清了相易的需求,在测试经过中实时拿获并利用这些信息,故意于提高发现诞妄的效率,为后续故障定位等责任提供更多的支捏.因此,本文利用这种联系性,引入基于测试扫尾的测试用例失效率估量设施,在测试经过中,笔据测试用例是否检测到颓势对子系需求的失效率进行在线调治,进而竣事测试用例失效率的在线调治,从而达到优先推行失效率较大的测试用例的想法,进而提高测试用例集的颓势检测效率.同期, 为了尽早检测到严重品级较高的软件颓势,不错通过优先推行肃清痛苦品级高的需求的测试用例来竣事.实践扫尾标明,用户往往使用的软件功能惟有40%傍边[17].一般来说,对用户愈加痛苦的需求进行考证和测试,不错提高测试效益,因此,本文引入由需求痛苦度揣度的测试用例痛苦度因子,而需求痛苦度则笔据测试东谈主员的造就和用户对软件的使用情况来笃定.
综上,本文引入情态需求肃清率、基于需求测试用例痛苦度和测试用例失效率这3个身分共同笃定一个基于需求的测试用例优先级问题,并针对3个身分引入权重因子,保证工程东谈主员不错笔据具体的测试对象和环境对3个身分的痛苦进度进行调治,从而竣事提高测试效率的想法.
1.2 变量界说为了更好地形色基于需求的测试用例优先级问题,底下对文中波及的基本看法进行如下界说.
界说1(驱动测试需求集${{R}_{{{t}_{0}}}}$). ${{R}_{{{t}_{0}}}}=\{{{r}_{1}},{{r}_{2}},...,{{r}_{m}}\}$是待测软件系统要求肃清的测试需求的蚁集.这里所指的需求不错是平方所说的功能需求,而功能是由某一段代码蚁集竣事的.可见,一个需求在本色上对应着一个代码蚁集,因此需求也不错是特定类、语句块或语句.
界说2(驱动测试用例集${{T}_{{{t}_{0}}}}$). ${{T}_{{{t}_{0}}}}=\{{{c}_{1}},{{c}_{2}},...,{{c}_{n}}\}$是针对操办软件系统畸形测试需求集想象的一组测试用例的蚁集.
界说3(测试肃清矩阵Δ(R,T)). Δ(R,T)是一个|R|x|T|的二进制矩阵,从测试用例想象信息中索求而来,界说测试用例集${{T}_{{{t}_{0}}}}$到需求集${{R}_{{{t}_{0}}}}$的肃清关系,矩阵元素如下式界说: \[\delta ({{r}_{i}},{{c}_{j}})=\left\{ \begin{array}{*{35}{l}} 1,\text{ }{{c}_{j}}\text{肃清了}{{r}_{i}} \\ 0,\text{ }{{c}_{j}}\text{未肃清}{{r}_{i}} \\ \end{array} \right.\] (1)
界说4(情态需求集${{R}_{{{t}_{i}}}}$). 暗示在测试经过中,ti时刻尚未被肃清的测试需求的蚁集.
界说5(情态测试用例集${{T}_{{{t}_{i}}}}$). 暗示在测试经过中,ti时刻尚未被推行的测试用例的蚁集.
界说6(情态需求肃清率${{C}_{{{R}_{{{c}_{j}}|{{t}_{i}}}}}}$). 暗示测试用例cj肃清的情态需求数与总的情态需求数的比值,即: \[{{C}_{{{R}_{{{c}_{j}}|{{t}_{i}}}}}}=\frac{count({{R}_{{{c}_{j}}|{{t}_{i}}}})}{count({{R}_{{{t}_{i}}}})}\] (2) 其中,${{R}_{{{c}_{j}}|{{t}_{i}}}}$代表测试用例cj在ti时刻肃清的情态需求的蚁集.
界说7(测试需求痛苦度${{I}_{{{r}_{i}}}}$>). 测试需求的痛苦度一般由测试东谈主员笔据特定的轨范笃定,本文笔据用户对软件系统的使用情况将需求的痛苦度赋值,对用户往往使用的需求赋予较高的优先级.
界说8(测试需求失效率$F{{R}_{{{r}_{i}}|{{t}_{i}}}}$). $F{{R}_{{{r}_{i}}|{{t}_{i}}}}$暗示ti时刻需求ri失效(或激发软件失效)的概率.
界说9(失效需求集${{R}_{{{c}_{j}}|F{{R}_{{{r}_{i}}|{{t}_{i}}}}\ne 0}}$). 暗示测试用例cj所肃清的失效率$F{{R}_{{{r}_{i}}|{{t}_{i}}}}$不为0的测试需求的蚁集,用${{m}_{{{c}_{j}}}}$暗示该蚁集元素(即测试需求)个数.
界说10(民众失效需求集${{R}_{({{c}_{j}},{{c}_{k}})|F{{R}_{{{r}_{i}}|{{t}_{i}}}}\ne 0}}$). 暗示测试用例cj的失效需求集${{R}_{{{c}_{j}}|F{{R}_{{{r}_{i}}|{{t}_{i}}}}\ne 0}}$与ck的失效需求集${{R}_{{{c}_{k}}|F{{R}_{{{r}_{i}}|{{t}_{i}}}}\ne 0}}$的杂乱.
1.3 优先级筹备设施想象笔据第1.2节中给出的界说,可将基于需求的测试用例排序问题面孔化为一个多操办测试用例集约简问题,表述如下.
给定备选测试用例集${{T}_{{{t}_{0}}}}$、测试需求集${{R}_{{{t}_{0}}}}$、测试肃清矩阵Δ(R,T)和测试住手轨范,寻找测试用例集的最优代表集,且兴盛尽早达到测试肃清率轨范、尽快肃清痛苦的测试需求以考证痛苦的软件功能和肃清具有较高失效率的测试需求以尽早检测到更多的软件颓势的3个测试操办.
为达到尽早达到测试肃清率轨范,要求优先推行情态需求肃清率大的测试用例;为达到尽快肃清痛苦的测试需求,要求优先推行肃清了具有较高痛苦度需求的测试用例,事实上,测试需求痛苦度决定了测试用例的痛苦进度,然则由于一个测试用例平方肃清了多个测试需求,本文用测试用例所肃清的各个测试需求的痛苦度${{I}_{{{r}_{i}}}}$的平均值来暗示测试用例痛苦度${{I}_{{{c}_{j}}}}$,如公式(3)所示;为了达到肃清具有较高失效率的测试需求,要求优先推行肃清率具有较高失效率的测试需求的测试用例,与测试需求痛苦度相易,测试需求失效率也决定了测试用例激发软件失效的概率,本文用测试用例所肃清的各个可能激发软件失效的测试需求的失效率平均值暗示测试用例失效率$F{{R}_{{{c}_{j}}|{{t}_{i}}}},$如公式(4)所示. \[{{I}_{{{c}_{j}}}}=\frac{\sum\nolimits_{i=1}^{n}{{{I}_{{{r}_{i}}}}\delta ({{r}_{i}},{{c}_{j}})}}{\sum\nolimits_{i=1}^{n}{\delta ({{r}_{i}},{{c}_{j}})}}\] (3) \[F{{R}_{{{c}_{j}}|{{t}_{i}}}}=\frac{\sum\nolimits_{i=1}^{n}{F{{R}_{{{r}_{i}}|{{t}_{i}}}}\delta ({{r}_{i}},{{c}_{j}})}}{{{m}_{{{c}_{j}}}}}\] (4)
那么,测试用例cj的优先级${{P}_{{{c}_{j}}}}$由测试用例的情态需求肃清率、测试用例痛苦度和测试用例失效率这3个因子笃定,用三者的加权平均值暗示,如下所示: \[{{P}_{{{c}_{j}}|{{t}_{i}}}}=\alpha \cdot {{C}_{{{R}_{{{c}_{j}}|{{t}_{i}}}}}}+\beta \cdot {{I}_{{{c}_{j}}}}+\gamma \cdot F{{R}_{{{c}_{j}}|{{t}_{i}}}}\] (5)
其中,α,β,γ差异暗示情态需求肃清率、测试用例痛苦度和测试用例失效率的权重因子,其取值不错笔据测试对象及环境进行调治(兴盛α+β+γ=1即可),从而调治对3个操办的偏重.
将公式(3)、公式(4)带入公式(5),可得公式(6): \[{{P}_{{{c}_{j}}|{{t}_{i}}}}=\alpha \cdot {{C}_{{{R}_{{{c}_{j}}|{{t}_{i}}}}}}+\beta \cdot \frac{\sum\nolimits_{i=1}^{n}{{{I}_{{{r}_{i}}}}\delta ({{r}_{i}},{{c}_{j}})}}{\sum\nolimits_{i=1}^{n}{\delta ({{r}_{i}},{{c}_{j}})}}+\gamma \cdot \frac{\sum\nolimits_{i=1}^{n}{F{{R}_{{{r}_{i}}|{{t}_{i}}}}\delta ({{r}_{i}},{{c}_{j}})}}{{{m}_{{{c}_{j}}}}}\] (6)
由公式(6)可知,${{P}_{{{c}_{j}}|{{t}_{i}}}}$是一个对于需求的函数.即:测试用例的优先级统统由其肃清的需求决定,决定因子差异是情态需求肃清率${{C}_{{{R}_{{{c}_{j}}|{{t}_{i}}}}}}$、测试需求痛苦度${{I}_{{{r}_{i}}}}$以及测试需求失效率$F{{R}_{{{r}_{i}}|{{t}_{i}}}}.$
2 多操办优化的测试用例优先级在线调治战术多操办优化算法被平方地应用于多操办问题的求解[21],奏凯筹备Pareto最优解集并取得了一定的扫尾,但其仍然存在一定的局限性,如未能较好地解释早熟问题和糊弄问题、短少圆善的拘谨性解释、对于处置照看优化问题缺乏行之灵验的技巧[22].与多操办优化算法比拟,传统设施具有更低的筹备复杂度,拘谨速率较快,想象简便易懂,易于数学建模且表面搭救较为充分,更故意于在执行的软件测试中推行应用.因此,本文遴荐传统设施中的加权乞降法求解多操办测试用例优化问题.该设施差异对3个测试操办赋予权值,并将其革新为一个单操办优化问题,以评价测试用例优先级,与奏凯筹备Pareto最优解集比拟,具有更低的筹备复杂度.
测试开首之前,笔据驱动的情态需求肃清率、测试需求痛苦度和测试需求失效率为每一个测试用例赋予一个驱动的优先级.在测试经过中,笔据测试扫尾畸形联系响应信息对测试战术进行实时在线调治,即:竣事测试用例优先级的在线调治,使得每次推行的测试用例最合恰面前的测试情况,从而尽早地检测到尽可能多的软件颓势.同期,在保证软件质地的前提下尽早地完成测试,提高软件测试效率.
2.1 参数在线估量设施想象由公式(6)可知,测试用例的优先级由情态需求肃清率${{C}_{{{R}_{{{c}_{j}}|{{t}_{i}}}}}}$、测试需求痛苦度${{I}_{{{r}_{i}}}}$以及测试需求失效率$F{{R}_{{{r}_{i}}|{{t}_{i}}}}$这3个身分所决定.测试开首前,咱们需要笔据软件的执行情况求得情态需求肃清率、测试需求痛苦度和测试需求失效率的驱动值,从而为每一个测试用例赋予一个驱动的优先级;测试东谈主员笔据界说7笃定测试需求痛苦度,ti时刻的情态需求肃清率${{C}_{{{R}_{{{c}_{j}}|{{t}_{i}}}}}}$和测试需求失效率$F{{R}_{{{r}_{i}}|{{t}_{i}}}}$(即,测试用例失效率)为未知参数,需在每次推行完测试用例后,笔据测试扫尾及联系响应信息对二者进行实时的在线估量.
在执行测试中,测试自动化的应用极地面减少了测试经过中东谈主力的参与度;但在测试初期,仍然需要测试东谈主员推行联系驱动化责任,如:从需求文档中索求测试需求、指定测试操办、参数设定等[18].因此,本文遴荐雷同的设施,通过东谈主工审查的口头从联系评测要领测试斥地文档均分析获取测试需求、测试需求痛苦度、需求驱动失效率等实验参数的驱动值.其中,测试需求痛苦度由测试东谈主员笔据软件系统的使用情况对需求的痛苦度赋值[10, 11],将必用、常用、很少用、真的无谓的需求痛苦度差异赋值为1,0.7,0.4,0.1.相应的需求若激发颓势,则其对应的严重品级差异为致命的、严重的、一般的以及较轻的.
2.1.1 情态需求肃清率估量设施在测试经过中,情态需求集和各个测试用例所肃清的情态需求数是一个束缚发生变化的经过,导致测试用例的情态需求肃清率也束缚发生变化.为了保证测试有时尽快达到肃清率轨范,优先推行情态需求肃清率较大的测试用例,即,最大适度地肃清未被肃清的需求.为此,本文想象了一种情态需求肃清率在线估筹备法RCE(requirement coverage estimation,见算法2.1.1),用于在线估量各时刻每个情态测试用例的情态需求肃清率 ${{C}_{{{R}_{{{c}_{j}}|{{t}_{i}}}}}}.$在ti-1(i≥1)时刻所选取的测试用例${{A}_{{{t}_{i-1}}}}$后,该算法利用ti-1时刻的情态需求集${{R}_{{{t}_{i-1}}}}$、情态测试用例集${{T}_{{{t}_{i-1}}}}$及各情态测试用例所肃清的情态需求${{R}_{{{c}_{j}}|{{t}_{i-1}}}}$,得到ti时刻的情态需求集${{R}_{{{t}_{i}}}}$、情态测试用例集${{T}_{{{t}_{i}}}}$及ti时刻各情态测试用例所肃清的情态需求${{R}_{{{c}_{j}}|{{t}_{i}}}},$进而得到各情态测试用例的情态需求肃清率 ${{C}_{{{R}_{{{c}_{j}}|{{t}_{i}}}}}},$ 并为下一次求解情态需求肃清率作念好数据准备责任.
其中,ti时刻的情态需求集 ${{R}_{{{t}_{i}}}}$ 由ti-1时刻的情态需求集 ${{R}_{{{t}_{i-1}}}}$ 与ti-1时刻推行的测试用例 ${{A}_{{{t}_{i-1}}}}$ 所肃清的情态需求集的差集暗示,如公式(7)所示. \[{{R}_{{{t}_{i}}}}={{R}_{{{t}_{i-1}}}}-{{R}_{{{A}_{{{t}_{i-1}}}}|{{t}_{i-1}}}}\] (7)
ti时刻的情态测试用例集 ${{T}_{{{t}_{i}}}}$ 通过将 ${{A}_{{{t}_{i-1}}}}$ 从ti-1时刻的情态测试用例集 ${{T}_{{{t}_{i-1}}}}$ 中移除得到,如公式(8)所示. \[{{T}_{{{t}_{i}}}}={{T}_{{{t}_{i-1}}}}-{{A}_{{{t}_{i-1}}}}\] (8)
每推行完一个测试用例后,齐需要对面前的情态测试用例的情态需求肃清情况进行更新,以进一步筹备出情态需求肃清率.若ti-1时刻测试用例cj的情态需求集 ${{R}_{{{c}_{j}}|{{t}_{i-1}}}}$ 与 ${{A}_{{{t}_{i-1}}}}$ 所肃清的情态需求集 ${{R}_{{{A}_{{{t}_{i-1}}}}|{{t}_{i-1}}}}$ 中存在相易的情态需求,则ti时刻测试用例cj的情态需求集 ${{R}_{{{c}_{j}}|{{t}_{i}}}}$ 由ti-1时刻该用例的情态需求集 ${{R}_{{{c}_{j}}|{{t}_{i-1}}}}$ 与 ${{A}_{{{t}_{i-1}}}}$ 所肃清的情态需求 ${{R}_{{{A}_{{{t}_{i-1}}}}|{{t}_{i-1}}}}$ 的差集暗示,如公式(9)所示,此时,各情态测试用例的情态需求肃清率则如公式(10)所示. \[{{R}_{{{c}_{j}}|{{t}_{i}}}}={{R}_{{{c}_{j}}{{|}_{{{t}_{i-1}}}}}}-({{R}_{{{c}_{j}}{{|}_{{{t}_{i-1}}}}}}\cap {{R}_{{{A}_{{{t}_{i-1}}}}|{{t}_{i-1}}}}),{{c}_{j}}\in {{T}_{{{t}_{i}}}}\] (9) \[{{C}_{{{R}_{{{c}_{j}}|{{t}_{i}}}}}}=\frac{count({{R}_{{{c}_{j}}|{{t}_{i}}}})}{count({{R}_{{{t}_{i}}}})},{{c}_{j}}\in {{T}_{{{t}_{i}}}}\] (10)
估量ti时刻各测试用例的情态需求肃清率 ${{C}_{{{R}_{{{c}_{j}}|{{t}_{i}}}}}}$ 的具体算法如下所示.
算法2.1.1. 情态需求肃清率估筹备法RCE.
Estim( ${{C}_{{{R}_{{{c}_{j}}|{{t}_{i}}}}}}$ ) //估量 ${{C}_{{{R}_{{{c}_{j}}|{{t}_{i}}}}}},i\ge 1$
输入: ${{R}_{{{t}_{i-1}}}},{{T}_{{{t}_{i-1}}}},{{R}_{{{c}_{j}}|{{t}_{i-1}}}}$ //输入ti-1时刻的情态需求集、情态测试用例集及各情态测试用例的情态需求;
输出: ${{R}_{{{t}_{i}}}},{{T}_{{{t}_{i}}}},{{R}_{{{c}_{j}}|{{t}_{i}}}},{{C}_{{{R}_{{{c}_{j}}|{{t}_{i}}}}}}$ //输出ti时刻的情态需求集、情态测试用例集及各情态测试用例的情态需求,情态需求肃清率.
BEGIN
Updata( ${{R}_{{{t}_{i}}}}$ ) //由公式(7)更新情态需求集
${{R}_{{{t}_{i}}}}={{R}_{{{t}_{i-1}}}}-{{R}_{{{A}_{{{t}_{i-1}}}}|{{t}_{i-1}}}}$ ;
Updata( ${{T}_{{{t}_{i}}}}$ ) //由公式(8)更新情态测试用例集
${{T}_{{{t}_{i}}}}={{T}_{{{t}_{i-1}}}}-{{A}_{{{t}_{i-1}}}}$ ;
FOR j=1 to l //遍历所关系注用例
IF ${{c}_{j}}\in {{T}_{{{t}_{i}}}}$ AND ${R_{{c_j}|{t_{i - 1}}}} \cap {R_{{A_{{t_{i - 1}}}}|{t_{i - 1}}}} \ne \emptyset$ THEN //判断ti-1时刻情态需求集 ${{R}_{{{A}_{{{t}_{i-1}}}}|{{t}_{i-1}}}}$ 是否存在相易情态需求
Updata( ${{R}_{{{c}_{j}}|{{t}_{i}}}}$ ) //由公式(9)更新情态用例肃清的情态需求
${{R}_{{{c}_{j}}|{{t}_{i}}}}={{R}_{{{c}_{j}}{{|}_{{{t}_{i-1}}}}}}-({{R}_{{{c}_{j}}{{|}_{{{t}_{i-1}}}}}}\cap {{R}_{{{A}_{{{t}_{i-1}}}}|{{t}_{i-1}}}});$
Calculate( ${{C}_{{{R}_{{{c}_{j}}|{{t}_{i}}}}}}$ ) //由公式(10)求cj的情态需求肃清率
${{C}_{{{R}_{{{c}_{j}}|{{t}_{i}}}}}}=\frac{count({{R}_{{{c}_{j}}|{{t}_{i}}}})}{count({{R}_{{{t}_{i}}}})}$ ;
END
2.1.2 测试用例失效率估量设施由于肃清相易测试需求的测试用例往往会检测出相易的诞妄,本文利用这种联系性,在测试经过中笔据测试推行扫尾对各个需求的失效率进行实时的调治,进而竣事测试用例失效率的在线调治.为此,本文想象了测试用例失效率在线估筹备法FRE(failure rate estimation,见算法2.1.2),用于在线估量各时刻各测试用例的失效率 $F{{R}_{{{c}_{j}}|{{t}_{i}}}}.$
若ti-1时刻推行的测试用例 ${{A}_{{{t}_{i-1}}}}$ 检测到颓势,由于 ${{A}_{{{t}_{i-1}}}}$ 肃清了多个测试需求,因此并不成随即定位是哪个需求激发了软件失效,该测试用例肃清的任一需求的失效齐可能是激发该用例失效的原因,是以联系需求激发软件失效的可能性齐有所提高.为此,将该用例所肃清的需求的失效率齐增多Δc,未被该用例所肃清的需求的失效率保捏不变,则ti时刻各个需求的失效率 $F{{R}_{{{r}_{i}}|{{t}_{i}}}}$ 可用公式(11)暗示. \[F{{R}_{{{r}_{i}}|{{t}_{i}}}}=\left\{ \begin{array}{*{35}{l}} F{{R}_{{{r}_{i}}|{{t}_{i-1}}}}+\Delta c,\text{ }{{r}_{i}}\in {{R}_{{{A}_{{{t}_{i-1}}}}}} \\ F{{R}_{{{r}_{i}}|{{t}_{i-1}}}},\text{ other} \\ \end{array} \right.\] (11)
此时,若测试用例 ${{c}_{j}}({{c}_{j}}\in {{T}_{{{t}_{i}}}})$ 与 ${{A}_{{{t}_{i-1}}}}$ 的民众失效需求集 ${R_{({c_j},{A_{{t_{i - 1}}}})|F{R_{{r_i}|{t_{_i}}}} \ne 0}} \ne \emptyset $ (用n暗示其元素个数),则测试用例cj的失效率 $F{{R}_{{{c}_{j}}|{{t}_{i}}}}$ 将增多,可用公式(12)暗示. \[F{{R}_{{{c}_{j}}|{{t}_{i}}}}=(F{{R}_{{{c}_{j}}|{{t}_{i-1}}}}\times {{m}_{{{c}_{j}}}}+\Delta c\times n)/{{m}_{{{c}_{j}}}}\] (12)
若ti-1时刻推行的测试用例 ${{A}_{{{t}_{i-1}}}}$ 未检测到颓势,则该测试用例所肃清的需求的失效率齐变为0,即,以为这些需求齐将不会激发软件失效,则这些需求将不再影响联系测试用例的失效率,未被该用例所肃清的需求的失效率保捏不变,则 $F{{R}_{{{r}_{i}}|{{t}_{i}}}}$ 时刻各个需求的失效率可用公式(13)暗示. \[F{{R}_{{{r}_{i}}|{{t}_{i}}}}=\left\{ \begin{array}{*{35}{l}} 0\,,\text{ }{{r}_{i}}\in {{R}_{{{A}_{{{t}_{i-1}}}}}} \\ F{{R}_{{{r}_{i}}|{{t}_{i-1}}}},\text{ other} \\ \end{array} \right.\] (13)
此时,若测试用例 ${{c}_{j}}({{c}_{j}}\in {{T}_{{{t}_{i}}}})$ 与 ${{A}_{{{t}_{i-1}}}}$ 的民众失效需求集 ${R_{({c_j},{A_{{t_{i - 1}}}})|F{R_{{r_i}|{t_{_i}}}} \ne 0}} \ne \emptyset ,$ 则需要更新cj的失效需求集 ${{R}_{{{c}_{j}}|F{{R}_{{{r}_{i}}|{{t}_{i}}}}\ne 0}},$ 将民众失效需求聚合的测试需求从cj的情态需求聚合移除(如公式(14)所示);而测试用例cj的失效率则可用公式(15)暗示. \[{{R}_{{{c}_{j}}|F{{R}_{{{r}_{i}}|{{t}_{i}}}}\ne 0}}={{R}_{{{c}_{j}}|F{{R}_{{{r}_{i}}|{{t}_{i}}}}\ne 0}}-{{R}_{({{c}_{j}},{{A}_{{{t}_{i-1}}}})|F{{R}_{{{r}_{i}}|{{t}_{i}}}}\ne 0}}\] (14) \[F{R_{{c_j}|{t_i}}} = \left\{ {\begin{array}{*{20}{l}} {0,{\rm{ }}{R_{({c_j},{A_{{t_{i - 1}}}})|F{R_{{r_i}|{t_i}}} \ne 0}} \ne \emptyset }\\ {\frac{{\sum\nolimits_{i = 1}^m {p \cdot F{R_{{r_i}|{t_i}}}} }}{{{m_{{c_j}}}}}{\kern 1pt} ,{\rm{ other}}} \end{array}} \right.\] (15)
公式(15)中,m暗示驱动测试需求数, ${{m}_{{{c}_{j}}}}$ 暗示失效需求集 ${{R}_{{{c}_{j}}|F{{R}_{{{r}_{i}}|{{t}_{i}}}}\ne 0}}$ 的测试需求个数, $\sum\nolimits_{i=1}^{m}{p\cdot F{{R}_{{{r}_{i}}|{{t}_{i}}}}}$ 暗示cj所肃清的情态需求的失效率之和,其中,当 ${{r}_{i}}\in {{R}_{({{c}_{j}},{{A}_{{{t}_{i-1}}}})|F{{R}_{{{r}_{i}}|{{t}_{i}}}}\ne 0}}$ 时,p=1;不然,p=1.
估量ti时刻各测试用例的失效率 $F{{R}_{{{c}_{j}}|{{t}_{i}}}}$ 的具体算法如下所示.
算法2.1.2. 测试用例失效率估筹备法FRE.
Estim( $F{{R}_{{{c}_{j}}|{{t}_{i}}}}$ ); //估量 $F{{R}_{{{c}_{j}}|{{t}_{i}}}},i\ge 1$
输入: $F{{R}_{{{r}_{i}}|{{t}_{i-1}}}},{{R}_{{{c}_{j}}|{{t}_{i-1}}}},{{m}_{{{c}_{j}}}}$ //ti-1时刻的需求失效率、情态需求及测试用例失效需求聚合测试需求个数;
输出: $F{{R}_{{{r}_{i}}|{{t}_{i}}}},{{R}_{{{c}_{j}}|{{t}_{i}}}},{{m}_{{{c}_{j}}}}$ //ti时刻需求失效率、肃清的情态需求及测试用例失效需求聚合测试需求个数.
BEGIN
IF ( ${{A}_{{{t}_{i-1}}}}$ 检测到颓势)
IF ${{r}_{i}}\in {{R}_{{{A}_{{{t}_{i-1}}}}}}$ THEN $F{{R}_{{{r}_{i}}|{{t}_{i}}}}=F{{R}_{{{r}_{i}}|{{t}_{i-1}}}}+\Delta c$ //由公式(11)更新ti时刻各个需求的失效率
ELSE $F{{R}_{{{r}_{i}}|{{t}_{i}}}}=F{{R}_{{{r}_{i}}|{{t}_{i-1}}}};$
FOR j=1 to l //遍历所关系注测试用例
IF ${{c}_{j}}\in {{T}_{{{t}_{i}}}}$ AND ${R_{({c_j},{A_{{t_{i - 1}}}})|F{R_{{r_i}|{t_{_i}}}} \ne 0}} \ne \emptyset $ THEN //判断民众失效需求集 ${{R}_{({{c}_{j}},{{A}_{{{t}_{i-1}}}})|F{{R}_{{{r}_{i}}|{{t}_{_{i}}}}}\ne 0}}$ 是否为空集
$n=count({{R}_{({{c}_{j}},{{A}_{{{t}_{i-1}}}})|F{{R}_{{{r}_{i}}|{{t}_{i}}}}\ne 0}});$ //筹备民众失效需求集 ${{R}_{({{c}_{j}},{{A}_{{{t}_{i-1}}}})|F{{R}_{{{r}_{i}}|{{t}_{_{i}}}}}\ne 0}}$ 的测试需求数
$F{{R}_{{{c}_{j}}|{{t}_{i}}}}=(F{{R}_{{{c}_{j}}|{{t}_{i-1}}}}\times {{m}_{{{c}_{j}}}}+\Delta c\times n)/{{m}_{{{c}_{j}}}};$
IF ( ${{A}_{{{t}_{i-1}}}}$ 未检测到颓势)
IF ${{r}_{i}}\in {{R}_{{{A}_{{{t}_{i-1}}}}}}$ THEN $F{{R}_{{{r}_{i}}|{{t}_{i}}}}=0$ //由公式(13)更新ti时刻各个需求的失效率
ELSE $F{{R}_{{{r}_{i}}|{{t}_{i}}}}=F{{R}_{{{r}_{i}}|{{t}_{i-1}}}};$
FOR j=1 to l //遍历所关系注测试用例
IF ${R_{({c_j},{A_{{t_{i - 1}}}})|F{R_{{r_i}|{t_{_i}}}} \ne 0}} \ne \emptyset $ THEN
${{R}_{{{c}_{j}}|F{{R}_{{{r}_{i}}|{{t}_{i}}}}\ne 0}}={{R}_{{{c}_{j}}|F{{R}_{{{r}_{i}}|{{t}_{i}}}}\ne 0}}-{{R}_{({{c}_{j}},{{A}_{{{t}_{i-1}}}})|F{{R}_{{{r}_{i}}|{{t}_{i}}}}\ne 0}};$ //由公式(14)更新测试用例cj的失效需求集
IF ${R_{({c_j},{A_{{t_{i - 1}}}})|F{R_{{r_i}|{t_{_i}}}} \ne 0}} \ne \emptyset $ THEN $F{{R}_{{{c}_{j}}|{{t}_{i}}}}=0$
ELSE THEN
${{m}_{{{c}_{j}}}}=count({{R}_{{{c}_{j}}|F{{R}_{{{r}_{i}}|{{t}_{i}}}}\ne 0}})$ ; //筹备测试用例cj的失效需求集 ${{R}_{{{c}_{j}}|F{{R}_{{{r}_{i}}|{{t}_{i}}}}\ne 0}}$ 的测试需求数
FR=0;
FOR i=1 to m //m为驱动测试需求数
IF ${{r}_{i}}\in {{R}_{({{c}_{j}},{{A}_{{{t}_{i-1}}}})|F{{R}_{{{r}_{i}}|{{t}_{i}}}}\ne 0}}$ THEN
$FR=FR+F{{R}_{{{r}_{i}}|{{t}_{i}}}};$
$F{{R}_{{{c}_{j}}|{{t}_{i}}}}=FR/{{m}_{{{c}_{j}}}};$
END
2.2 多操办优先级在线调治战术想象多操办测试用例优先级动态排序问题是一个NP统统问题[19],处置这一问题可遴荐启发式贪念搜索算法[20],该算法的中枢念念想是:一次选取一个局部最优解,轮回至达到住手轨范,通盘的局部最优解组合成问题的全体最优解.在启发式贪念搜索框架内,本文想象了一种基于需求的测试用例优先级在线调治算法POLA (priority on-line adjustment,见算法2.2),用于在线调治各时刻每个测试用例的优先级.
本文遴荐的启发式贪念搜索框架内自顺应调治测试用例优先级的时间是:笔据前一时刻的情态需求肃清率、测试用例痛苦度和测试用例失效率,对面前时刻备选测试用例的优先级进行筹备,选取并推行面前景色下优先级最高的测试用例,利用算法RCE,FRE自顺应调治情态测试用例集、情态测试需求集及各情态测试用例的情态需求肃清率和失效率,进一步从头调治联系的测试用例的优先级,直至兴盛需求肃清率轨范.在启发式贪念搜索框架内自顺应调治测试用例优先级的战术是:笔据驱动的情态需求肃清率、测试用例痛苦度和测试用例失效率对备选测试用例的优先级进行驱动化筹备,从情态测试用例聚合取舍并推行面前景色下优先级最高的测试用例;将所接纳例从情态测试用例中移除,同期,从情态测试需求中移除该测试用例所肃清的需求;再笔据测试用例推行扫尾和被推行测试用例的情态测试需求肃清情况,自顺应调治各情态测试用例的情态需求肃清率和失效率,从而调治联系测试用例的优先级;临了,更新情态需求肃清率,直至达到需求肃清率轨范.
底下结合情态需求肃清率估筹备法和情态测试用例失效率估筹备法,给出基于需求的测试用例优先级在线调治算法POLA.
算法2.2. 优先级在线调治算法POLA.
输入:备选测试用例集 ${{T}_{{{t}_{0}}}}$ ;
输出:优化选取的测试用例.
BEGIN
Initialize ${{R}_{{{t}_{0}}}},{{T}_{{{t}_{0}}}}$ ,Δ(R,T), ${{I}_{{{r}_{i}}}},F{{R}_{{{r}_{i}}|{{t}_{0}}}},$ ${{m}_{{{r}_{i}}|{{t}_{0}}}}$ ,α,β,γ,Δc,C //数据驱动化
l=count( ${{T}_{{{t}_{0}}}}$ ); l=count( ${{R}_{{{t}_{0}}}}$ ); //筹备驱动测试用例数、驱动测试需求数
${{C}_{{{t}_{i}}}}(i=0)=0$ ; //t0时刻需求肃清率为0
FOR j=0 to l THEN Calculate ${{P}_{{{c}_{j}}|{{t}_{0}}}}$ ; //筹备测试用例优先级
GET ${{A}_{{{t}_{0}}}}$ IF ${{P}_{{{c}_{j}}|{{t}_{0}}}}({{c}_{j}}={{A}_{{{t}_{0}}}})=\max \{{{P}_{{{c}_{j}}|{{t}_{0}}}},j=1\text{ to }l\}$ ; //选取优先级最高的测试用例
Run( ${{A}_{{{t}_{0}}}}$ ); //运行测试用例 ${{A}_{{{t}_{0}}}}$
国产久v久a在线观看视频i++; l-; //每推行一个测试用例,铺张1单元时间,情态测试用例数减1
Update ${{C}_{{{t}_{i}}}}$ ; //更新测试需求肃清率
While ${{C}_{{{t}_{i}}}}<C;$ //达到测试肃清率轨范则住手测试,C暗示实验设定的肃清率轨范
Estim( ${{C}_{{{R}_{{{c}_{j}}|{{t}_{i}}}}}}$ ); //调用情态需求肃清率估筹备法
Estim( $F{{R}_{{{R}_{{{c}_{j}}|{{t}_{i}}}}}}$ ); //调用情态测试用例失效率估筹备法
FOR i=0 to l THEN Calculate ${{P}_{{{c}_{j}}|{{t}_{i}}}};$
GET ${{A}_{{{t}_{i}}}}$ IF ${{P}_{{{c}_{j}}|{{t}_{i}}}}({{c}_{j}}={{A}_{{{t}_{i}}}})=\max \{{{P}_{{{c}_{j}}|{{t}_{i}}}},j=1\text{ to }l\};$
Run( ${{A}_{{{t}_{i}}}}$ ); //运行测试用例 ${{A}_{{{t}_{i}}}}$
i++; l-;
Update ${{C}_{{{t}_{i}}}}$ ; //更新测试需求肃清率
END
2.3 算法复杂度分析与已有的大多数测试用例优先级时间比拟,本文所提设施不依赖于代码肃清率时间,无需在测试经过中网罗代码信息,很猛进度上诽谤了时间竣事的复杂度.同期,在时间复杂度方面,基于需求的测试用例优先级在线调治算法的时间支出主要源于情态需求肃清率估筹备法RCE、测试用例失效率估筹备法FRE和测试用例优先级在线调治算法POLA中的for轮回.不丢丑出,这些for轮回体的时间复杂度处于兼并数目级.假定立接纳例的数目为m,最坏情况下,通盘的测试用例齐推行1次,则一个for轮回最多推行m(m+1)/2次,即,时间复杂度为O(m2).在执行应用中,对于102级的测试用例集,在线调治一次测试用例优先级所需推行时间一般不进步10s,这相对于长达数小时致使数天的讲究测试统统可忽略不计.因此,利用本文所提倡的时间和算法对测试用例集优先级排序进行处理后,所获得的效率上的提高稠密于其支出.
3 实验考证本文所提设施和战术主要有两个方面:(1) 通过引入情态需求肃清率、测试用例痛苦度和测试用例失效率这3个影响因子,提倡一种多操办的测试用例优先级筹备设施;(2) 想象了情态需求肃清率和测试用例失效率的在线估量设施及算法(RCE算法和FRE算法),从而想象出一种基于需求的测试用例优先级在线调治战术.为了考证本文所提设施和战术的灵验性,咱们想象了实验,以解答以下两个问题:
· 问题1. 情态需求肃清率、测试用例痛苦度和测试用例失效率若何影响测试用例优先级的设定,这3个因子的引入,能否竣事尽早地检测到尽可能多的、严重品级较高的软件颓势这一多操办测试用例优先级问题?
· 问题2. 本文所提倡的基于需求的测试用例优先级在线调治战术的效率和颓势检测才能若何?
3.1 实验想象在实证操办中,操办东谈主员不息遴荐开源软件的评测要领来考证操办内容的灵验性,其中,SIR库和SourceForge包含了绝大部分评测要领[23, 24].因此,为了考证本文想象的测试用例优先级调治战术在执行要领中的灵验性,咱们选取了MET,CZT及Bash这3个中等领域的开源软件要领.取舍其最新版块和相应的用例集算作实验对象,具体联系信息见表3.1.
在本文的实验中,需求肃清矩阵、需求驱动失效率及测试需求痛苦度等信息由联系评测要领测试文档分析获取.其中,3个开源软件要领的测试需求痛苦度见表3.2,测试开首时各个需求的驱动失效率见表3.3.淌若某个测试用例肃清的需求激发失效,则该用例所肃清的需求的失效率齐增多Δc,本文取Δc=0.1.由于需求肃清矩阵领域过大,文中并未给出.针对以上系统,想象实验1和实验2走动话问题1和问题2.
为了考证情态需求肃清率、测试用例痛苦度和测试用例失效率这3个身分在笃定测试用例优先级中所作念的孝敬,本文针对评测要领MET想象了3组实验,其中,(α,β,γ)的取值差异为(1,0,0),(0,1,0),(0,0,1).这3组实验差异对应了3种常见的单操办测试用例排序设施.实验扫尾差异见表3.4~表3.6,其中,ti暗示选取测试用例的各时刻, ${{A}_{{{t}_{i}}}}$ 暗示各时刻选取的测试用例, ${{C}_{{{t}_{i}}}}$ 暗示各时刻推行完测试用例后的需求肃清率, ${{B}_{{{t}_{i}}}}$ 暗示各时刻所推行的用例中肃清的含有颓势的需求(×表t时刻所推行的测试用例未检测到颓势).
· 当(α,β,γ)的取值为(1,0,0)时,暗示以情态需求肃清率为测试用例优先级排序.由表3.4可知:每个有操办时刻选取的齐是情态需求肃清率最大的测试用例,有时以最快的速率提高测试肃清率,是以有时达到以最短的时间完成测试的想法.由表3.4可知:推行1个测试用例后,天然需求肃清率得到了快速提高且检测到颓势,但检测到的颓势严重进度低,而且严重的颓势被检测到的时间较晚.当肃清率达到100%时,不一定能检测出通盘严重的颓势;
· 当(α,β,γ)的取值为(0,1,0)时,暗示以测试用例痛苦度为测试用例优先级排序.由表3.5可知:每次选取的齐是痛苦度最高的用例,痛苦的需求被优先肃清到,因此有时优先检测到严重品级较高的颓势,但其完成通盘这个词测试破耗的测试用例较多;
· 当(α,β,γ)的取值为(0,0,1)时,暗示以测试用例失效率为测试用例优先级排序.由表3.6可知:每次选取的齐是失效率最高的测试用例,使得颓势检测才能高的测试用例被优先推行,从而有时以最少的测试用例数检测到最多的颓势;但相对于(α,β,γ)为(1,0,0)的情况,其完成通盘这个词测试破耗的测试用例数仍然较多.
由以上分析可知,情态需求肃清率、测试用例痛苦度和测试用例失效率这3个身分在决定测试用例优先级的问题上齐能作念出不同的灵验孝敬.在(α,β,γ)为(1,0,0),(0,1,0),(1,0,0)3种不同的情况下,相当于3个单操办测试用例优先级排序设施.为了最大适度地提高测试效率,达到尽早检测到尽可能多的严重品级较高的软件颓势这一多操办测试想法,测试东谈主员需笔据软件执行情况选取合适的(α,β,γ)的值,使3个身分达到一个均衡点.在此仿信得过验中,取(α,β,γ)为(0.36,0.41,0.23)便能得到一个较为梦想的扫尾,实验扫尾见表3.7.
这里给出的权重悉数(α,β,γ)是通过在实验中束缚尝试、束缚调治而得到的有时产生较好测试扫尾的一组悉数值,而在执行测试中,可利用特意的权重悉数取舍设施来笃定,咫尺较为纯熟的设施包括Delphi法、AHP法、大家评分法等.
由表3.7可知:当取(α,β,γ)为(0.36,0.41,0.23)时,完成通盘这个词测试所破耗的测试用例数是最少的.同期,痛苦的需求被尽早地肃清,大多数严重品级较高的软件颓势也被尽早地检测到.
综上可得:本文所引入的情态需求肃清率、测试用例痛苦度和测试用例失效率这3个测试用例优先级影响因子是灵验的,有助于竣事尽早地检测到尽可能多的、严重品级较高的软件颓势这一多操办测试用例优先级操办.
3.3 实验2——颓势检测才能及测试效率为了进一步考证本文所提倡的基于多操办优化的测试用例优先级在线调治战术的测试效率和颓势检测才能,咱们通过实验将其与随机排序设施和笃定性排序设施进行比较.在测试用例排序的度量轨范操办中,为了筹备推行过优先排序的测试用例集的检错才能,揣度测试用例集与其相应测试用例检测出诞妄的关系,评价测试用例排序的优化进度,操办东谈主员常遴荐APFD度量轨范来考证在线排序设施的灵验性和优胜性[23].
假定参与测试的测试用例聚合共有n个测试用例,测试完成后检测出的诞妄共有m个,TFi代表测出第1个诞妄的测试用例在原测试用例聚合的轨则.APFD的筹备公式如下所示: \[APFD=1-\frac{T{{F}_{1}}+T{{F}_{2}}+...+T{{F}_{m}}}{nm}+\frac{1}{2n}\] (16) 其中,APFD的取值在0和100%之间,况且APFD的值越大,代表该测试排序的检错效率越高.
咱们差异用随机排序设施、笃定性排序设施和本文所提倡的在线排序设施对评测要领MET,CZT,Bash进行多轮模拟测试,测试住手轨范均为需求肃清率达到100%.在随机排序中,通过均匀概率分散从测试用例聚合随机地取舍测试用例,每个测试用例被选取的概率相配;在笃定性排序中,遴荐本文所提倡的优先级筹备设施(即,由公式(6)所笃定的优先级筹备设施)筹备各测试用例的优先级值,而分歧联系参数进行在线调治,从而得到一个笃定性的测试用例推行序列;在笃定性排序设施和在线排序设施的前50轮测试中,均差异在(α,β,γ)的不同取值下进行,且(α,β,γ)的不同取值遵守均匀概率分散.图3.1(a)给出了实验中3种排序设施下3个评测要领的APFD值,图3.1(b)给出了前50轮实验中3种排序设施在各轮测试中单元颓势铺张的测试用例数.
由箱线图3.1(a)可知:在评测要领MET中,在线排序设施的APFD的最大值比笃定性排序设施高18.1%,笃定性排序设施比随机性排序设施高9.8%,在线排序设施的凹凸四分位数的值、平均值和中位数均高于笃定性排序设施,远高于随机排序设施;对于评测要领CZT,在线排序设施的APFD的最大值比笃定性排序设施高1.3%,笃定性排序设施比随机性排序设施高36.9%,在线排序设施的上四分位数的值均略高于笃定性排序设施,均值和中位数略低于笃定性排序设施,但远高于随机排序设施;评测要领Bash的情况与实验要领CZT雷同,在线排序设施的APFD的最大值比笃定性排序设施高10.2%,笃定性排序设施比随机性排序设施高2.3%,在线排序设施的上四分位数的值和均值高于笃定性排序设施,中位数略低于笃定性排序设施,各项数值均远高于随机排序设施.从图3.1(b)不错看出:在绝大多数情况下,在线排序设施的凹凸四分位数的值、平均值和中位线的值均不如笃定性排序设施和随机性排序设施.这讲解在线排序设施有时以较少的测试用例数检测到颓势,测试代价相对较小.此外,本实验的50轮测试中,α,β,γ的值是随机选取的,用以模拟执行测试中多样不同权重的选取情况.执行应用中,工程东谈主员将笔据具体的被测对象及测试操办设立合理的α,β,γ.与笃定性排序设施和随机性排序设施比拟,在线排序设施将铺张更少的测试用例.
综上可知:本文所提倡的基于多操办优化的测试用例优先级在线调治战术有时以更少的测试用例(即,能在更短的测试时间)检测到更多的、严重品级较高的软件颓势,具有更高的颓势检测才能和测试效率.
4 总结及将来责任工程实践中,在对不同的软件版块进行测试时,对变更部分进行有取舍的、有针对性的测试是最梦想的取舍,本文将这些变更的部分(功能点或者代码块)称为测试需求,从需求的角度对测试用例的优先级进行排序,并界说了一个多操办的测试用例优化排序问题,以处置测试用例优先级在线调治的操办问题.
为此,本文引入了3个影响测试用例优先级的因子,即:情态需求肃清率、测试用例痛苦度和测试用例失效率,同期引入了α,β,γ这3个权重因子,使得工程东谈主员不错笔据测试对象的执行情况对3个优先级影响因子进行合理的调治,从而衡量这3方面的操办.其中,测试用例痛苦度是由测试东谈主员笔据用户对软件的执行使用情况事先笃定的测试需求痛苦度筹备而来,而情态需求肃清率和测试用例失效率差异由各时刻测试用例的情态需求肃清情况和测试用例推行扫尾估算而来.为此,本文差异想象了情态需求肃清率估量设施和测试用例失效率估量设施及相应的算法,并在此基础上想象了一种基于多操办优化的测试用例优先级在线调治战术.该战术利用测试经过中响应的实时信息对测试用例优先级进行在线调治,使其迟缓顺应面前测试环境,从而更好地提高测试效率.实验扫尾标明:与随机测试、单操办优先级排序设施和笃定性排序设施比拟,本文提倡的基于测试需求的测试用例优先级在线调治战术总体上有时更早地检测到更多的、严重品级较高的软件颓势,有时在更短的时间内完成同等质地的软件测试,从而裁汰测试周期,诽谤测试资本,提高测试效率.
今后将进一步从以下两方面进行操办:一方面,进一步寻求与需求联系的测试用例优先级影响身分并对各身分的权重分拨进行真切操办;另一方面,通过更多的执行的软件系统对基于测试需求的测试用例优先级在线调治战术的灵验性进行考证twitter 巨臀,以进一步鼓吹其在实践中的应用.