亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于函數(shù)調(diào)用路徑的測(cè)試用例優(yōu)先級(jí)排序

        2014-09-29 10:32:12牟永敏李慧麗
        計(jì)算機(jī)工程 2014年7期
        關(guān)鍵詞:函數(shù)調(diào)用測(cè)試用例排序

        牟永敏,李慧麗

        (北京信息科技大學(xué)計(jì)算機(jī)學(xué)院,北京 100101)

        1 概述

        軟件的調(diào)試、升級(jí)與維護(hù)往往需要更改部分代碼,為了驗(yàn)證修改后的程序是否引發(fā)新的問題或?qū)ξ葱薷牡牟糠衷斐捎绊?,就需要頻繁地對(duì)軟件進(jìn)行回歸測(cè)試[1]。

        回歸測(cè)試中最簡(jiǎn)單的方法就是全部重測(cè),但是實(shí)際情況是更改的代碼往往只是系統(tǒng)中很小的一部分,對(duì)整個(gè)系統(tǒng)的重測(cè)會(huì)耗費(fèi)大量的時(shí)間,造成人力和物力的浪費(fèi),因此實(shí)際工作中一般采用選擇性回歸測(cè)試方法[2-3]。選擇性回歸測(cè)試是當(dāng)源代碼修改后,僅對(duì)那些跟源代碼變化相關(guān)的模塊進(jìn)行測(cè)試。

        測(cè)試用例的選擇、測(cè)試用例集約簡(jiǎn)以及測(cè)試用例優(yōu)先級(jí)排序等技術(shù)是回歸測(cè)試研究的關(guān)鍵問題。其中,測(cè)試用例優(yōu)先級(jí)技術(shù)認(rèn)為不同測(cè)試用例對(duì)于測(cè)試目標(biāo)的完成有著不同的貢獻(xiàn)程度,為了能夠更快地達(dá)成測(cè)試目標(biāo),有必要將不同的測(cè)試用例進(jìn)行比較和排序,然后優(yōu)先執(zhí)行相對(duì)重要的測(cè)試用例[4]。目前測(cè)試用例優(yōu)先級(jí)排序技術(shù)可分為覆蓋率技術(shù)和非覆蓋率技術(shù)[5]。

        基于覆蓋的測(cè)試用例優(yōu)先級(jí)技術(shù)根據(jù)測(cè)試用例的歷史覆蓋信息,設(shè)計(jì)優(yōu)先級(jí)排序方法,但其考慮的優(yōu)先級(jí)影響因素過(guò)于單一。為此,本文提出一種基于函數(shù)調(diào)用路徑的測(cè)試用例集優(yōu)化方法。以函數(shù)調(diào)用路徑覆蓋分析為基礎(chǔ),分析函數(shù)調(diào)用路徑中影響測(cè)試用例優(yōu)先級(jí)的因素,設(shè)計(jì)測(cè)試用例優(yōu)先集量化方法,并且根據(jù)測(cè)試執(zhí)行情況動(dòng)態(tài)調(diào)整優(yōu)先級(jí),以進(jìn)一步優(yōu)化優(yōu)先級(jí)排序。

        2 基本概念

        2.1 基于函數(shù)調(diào)用路徑的覆蓋分析

        路徑覆蓋測(cè)試是一種針對(duì)白盒測(cè)試的常用充分性準(zhǔn)則,它觀察程序運(yùn)行的整個(gè)路徑[6]。但是即使是規(guī)模很小的程序,包含的邏輯路徑數(shù)量也是相當(dāng)大的,而在大型程序中進(jìn)行完全的路徑測(cè)試幾乎是不可能的[7-8]?;诤瘮?shù)調(diào)用路徑的覆蓋分析技術(shù)是在保證每個(gè)函數(shù)完成單元測(cè)試的前提下,將覆蓋分析粒度由語(yǔ)句級(jí)擴(kuò)展到函數(shù)級(jí),分析函數(shù)調(diào)用的控制邏輯關(guān)系,這樣既能避免路徑的爆炸式增長(zhǎng),又可以保證測(cè)試的充分性。

        RegressiontestC1.0[9]是自主開發(fā)的基于函數(shù)調(diào)用路徑的覆蓋分析工具,利用該工具可以得到全局靜態(tài)路徑集和測(cè)試用例執(zhí)行對(duì)應(yīng)的動(dòng)態(tài)路徑。其整體思路是:通過(guò)對(duì)軟件源代碼的靜態(tài)分析,繪制帶有控制邏輯的函數(shù)調(diào)用關(guān)系圖,給出所有可能的函數(shù)調(diào)用路徑,稱為全局靜態(tài)路徑集[10];對(duì)函數(shù)首尾和控制邏輯關(guān)鍵字進(jìn)行插裝預(yù)處理,輸入測(cè)試用例,執(zhí)行預(yù)處理后的程序,根據(jù)裝點(diǎn)信息得到該測(cè)試用例對(duì)應(yīng)的動(dòng)態(tài)函數(shù)調(diào)用路徑,下面給出相關(guān)的定義。

        定義1函數(shù)調(diào)用路徑是指根據(jù)函數(shù)調(diào)用關(guān)系得到的由程序入口點(diǎn)到出口點(diǎn)的一個(gè)函數(shù)名序列,表示為Pi={Vi0,Vi1,…,Vim},Vij為函數(shù)名;Vij和Vij+1的相鄰關(guān)系表示Vij調(diào)用了Vij+1。

        定義2靜態(tài)路徑是指對(duì)源代碼進(jìn)行靜態(tài)分析,根據(jù)函數(shù)調(diào)用關(guān)系得到函數(shù)調(diào)用路徑。全局靜態(tài)路徑集是全部靜態(tài)路徑的集合,表示為B(S,C)={P1,P2,…,Pn},其中,S是源代碼;C是函數(shù)調(diào)用關(guān)系準(zhǔn)則;Pi是函數(shù)調(diào)用路徑。

        定義3動(dòng)態(tài)路徑是指輸入測(cè)試數(shù)據(jù)后,程序動(dòng)態(tài)執(zhí)行時(shí)實(shí)際執(zhí)行的函數(shù)調(diào)用路徑,表示為L(zhǎng)(S,ti)={P1,P2,…},

        其中,S是指插裝后的源代碼;ti指測(cè)試用例。

        例如,若源代碼為:

        其中包含函數(shù):main,scanf,add,f2,multi。根據(jù)函數(shù)調(diào)用關(guān)系,得到4條函數(shù)調(diào)用路徑形如P1={main,scanf},P2={main,scanf,add},P3={main,scanf,f2},P4={main,scanf,multi}。此程序的全局靜態(tài)路徑集S={P1,P2,P3,P4}。當(dāng)輸入測(cè)試數(shù)據(jù)a=2時(shí),程序執(zhí)行對(duì)應(yīng)的動(dòng)態(tài)路徑為P3和P4,如圖1所示。

        圖1 函數(shù)調(diào)用路徑

        基于函數(shù)調(diào)用路徑的回歸測(cè)試用例集確定的基本思想是:對(duì)新舊版本源程序進(jìn)行比較,采集函數(shù)變更點(diǎn)數(shù)據(jù),函數(shù)變更點(diǎn)是指產(chǎn)生了變更的函數(shù)。在全局靜態(tài)路徑集中標(biāo)出所有經(jīng)過(guò)變更點(diǎn)的路徑,稱為變更路徑集[11]?;貧w測(cè)試時(shí)覆蓋全部變更路徑集,既能測(cè)試變更模塊,也能保證受變更模塊影響的相關(guān)模塊的正確性。因此,變更路徑集即回歸測(cè)試的測(cè)試需求,每一條變更路徑即一條測(cè)試需求。覆蓋變更路徑集中的一條或多條路徑的測(cè)試用例即回歸測(cè)試用例集。

        例如上例中的函數(shù)minus和multi發(fā)生了變更,minus和multi即變更函數(shù)。路徑P3和P4即變更路徑集。P3和P4分別對(duì)應(yīng)測(cè)試需求2個(gè)測(cè)試需求。若有如表1所示的測(cè)試用例-函數(shù)調(diào)用路徑關(guān)系,則回歸測(cè)試用例集為t3,t4,t5,t6。其中,×表示測(cè)試用例ti覆蓋函數(shù)調(diào)用路徑Pj。

        表1 測(cè)試用例-函數(shù)調(diào)用路徑關(guān)系

        2.2 測(cè)試用例優(yōu)先級(jí)技術(shù)

        測(cè)試用例優(yōu)先級(jí)技術(shù)認(rèn)為不同測(cè)試用例對(duì)于測(cè)試目標(biāo)的完成有不同的貢獻(xiàn)程度,在回歸測(cè)試時(shí)將測(cè)試用例按其重要程度進(jìn)行優(yōu)先級(jí)排序后使用,能更快地達(dá)成測(cè)試目標(biāo)。

        例如,某被測(cè)程序中測(cè)試用例的缺陷檢測(cè)情況如表2所示。其中,×表示測(cè)試用例Ti檢測(cè)出錯(cuò)誤Fj。如果按照T1-T10的順序執(zhí)行測(cè)試用例,顯然直到執(zhí)行到T3才會(huì)檢測(cè)出錯(cuò)誤,且只有所有測(cè)試用例全部被執(zhí)行才能檢測(cè)出所有的錯(cuò)誤。顯然T4,T7,T9,T10可以檢測(cè)出全部的錯(cuò)誤,如果按照T3-T4-T7-T9-T10-T1-T2-T5-T6-T8的順序執(zhí)行,測(cè)試用例能夠更早地檢測(cè)到程序的錯(cuò)誤。

        表2 測(cè)試用例缺陷檢測(cè)情況

        但是在測(cè)試用例被執(zhí)行前,測(cè)試用例所檢測(cè)出的錯(cuò)誤是無(wú)法預(yù)知的,研究發(fā)現(xiàn)依據(jù)一定的覆蓋準(zhǔn)則和測(cè)試用例執(zhí)行的歷史信息,盡快達(dá)到覆蓋標(biāo)準(zhǔn)能提高測(cè)試用例的檢錯(cuò)率。測(cè)試用例優(yōu)先級(jí)技術(shù)就是依據(jù)測(cè)試的歷史信息,以代碼覆蓋率或檢錯(cuò)效率等為標(biāo)準(zhǔn),為每個(gè)待復(fù)用的測(cè)試用例賦予一個(gè)優(yōu)先級(jí),并在回歸測(cè)試過(guò)程中按優(yōu)先級(jí)順序選取和執(zhí)行這些測(cè)試用例。

        測(cè)試用例優(yōu)先級(jí)技術(shù)的核心問題是如何確定和表述測(cè)試用例的重要程度[12],目前主要是根據(jù)測(cè)試用例歷史覆蓋率排序測(cè)試用例優(yōu)先級(jí),即優(yōu)先運(yùn)行覆蓋能力較強(qiáng)的測(cè)試用例。但是傳統(tǒng)的優(yōu)先級(jí)排序方法方法都只選取代碼覆蓋信息作為測(cè)試用例的特征加以度量,而忽略了其他影響測(cè)試用例優(yōu)先級(jí)的因素,且缺乏動(dòng)態(tài)性。

        3 優(yōu)先級(jí)排序算法

        3.1 測(cè)試用例優(yōu)先級(jí)量化方法

        基于函數(shù)調(diào)用路徑的測(cè)試用例優(yōu)先級(jí)排序方法以測(cè)試用例對(duì)函數(shù)調(diào)用路徑的歷史覆蓋信息作為優(yōu)先級(jí)的一個(gè)影響因子,在此基礎(chǔ)上分析函數(shù)調(diào)用路徑與檢錯(cuò)結(jié)果的關(guān)系,提取單元測(cè)試時(shí)函數(shù)中檢測(cè)出缺陷的個(gè)數(shù)和函數(shù)的扇入系數(shù)2個(gè)特征作為優(yōu)先級(jí)的影響因子對(duì)優(yōu)先級(jí)進(jìn)行排序。

        為了便于描述,給出以下相關(guān)定義:

        定義4(測(cè)試覆蓋矩陣)測(cè)試用例集 T={t1,t2,…,tn},變更路徑集,即測(cè)試需求集 P={P1,P2,…,Pm},則測(cè)試覆蓋矩陣tCM是一個(gè)m×n階矩陣,當(dāng)ti在執(zhí)行過(guò)程中執(zhí)行到了函數(shù)調(diào)用路徑路徑Pj時(shí),元素δij=1,否則δij=0。

        定義5(測(cè)試用例的覆蓋路徑集)測(cè)試用例ti的覆蓋路徑集 P(ti)(P(ti)∈P)是一個(gè)函數(shù)調(diào)用路徑集,其中包含執(zhí)行測(cè)試用例ti時(shí)所執(zhí)行到的所有P中的函數(shù)調(diào)用路徑。

        定義6(函數(shù)調(diào)用路徑的執(zhí)行用例集)Pj的執(zhí)行用例集t(Pj)(t(Pj)∈T)是一個(gè)測(cè)試用例集,為測(cè)試用例集T中所有能夠覆蓋路徑Pj的測(cè)試用例。

        (1)測(cè)試用例函數(shù)調(diào)用路徑覆蓋能力影響因子

        測(cè)試用例ti函數(shù)調(diào)用路徑覆蓋能力是指,測(cè)試用例ti的覆蓋路徑集 P(ti)中的路徑條數(shù) |P(ti)|。在回歸測(cè)試過(guò)程中,挑選覆蓋能力強(qiáng)的測(cè)試用例優(yōu)先執(zhí)行,能盡快達(dá)到覆蓋標(biāo)準(zhǔn),滿足測(cè)試覆蓋需求。因此,將測(cè)試用例函數(shù)調(diào)用路徑覆蓋能力應(yīng)用于優(yōu)先級(jí)排序中,使覆蓋能力強(qiáng)的測(cè)試用例有較高的優(yōu)先級(jí),保證其更早地被執(zhí)行以有效提高測(cè)試效率。用下式量化計(jì)算第i個(gè)測(cè)試用例ti的函數(shù)調(diào)用路徑覆蓋能力對(duì)優(yōu)先級(jí)的影響值

        其中,Ni為測(cè)試用例ti執(zhí)行到的路徑條數(shù) |P(ti)|,即測(cè)試用例ti的函數(shù)調(diào)用路徑覆蓋能力;max{N}為所有測(cè)試用例中函數(shù)調(diào)用路徑覆蓋能力的最大值。式(1)將測(cè)試用例函數(shù)調(diào)用路徑覆蓋能力影響值量化至0~1的數(shù)值區(qū)間。

        (2)測(cè)試用例覆蓋路徑檢錯(cuò)指標(biāo)影響因子

        軟件測(cè)試的二八原則指出,軟件中約20%的系統(tǒng)模塊包含了約80%的軟件缺陷。因此,單元測(cè)試時(shí)檢測(cè)出錯(cuò)誤較多的模塊應(yīng)作為重點(diǎn)測(cè)試的模塊。模塊的扇入系數(shù)是指,直接調(diào)用該模塊的上級(jí)模塊的個(gè)數(shù)。測(cè)試經(jīng)驗(yàn)表明,一個(gè)模塊出現(xiàn)錯(cuò)誤很可能會(huì)引起調(diào)用該模塊的其他模塊出錯(cuò),高扇入的模塊會(huì)引起這種錯(cuò)誤的迅速擴(kuò)散。在C語(yǔ)言中單元測(cè)試的一個(gè)模塊通常是指一個(gè)函數(shù)。因此,本文將單元測(cè)試時(shí)函數(shù)中檢測(cè)出錯(cuò)誤的個(gè)數(shù)和函數(shù)的扇入系數(shù)應(yīng)用于優(yōu)先級(jí)排序中。用式(2)、式(3)量化其對(duì)第i個(gè)測(cè)試用例ti優(yōu)先級(jí)的影響值

        1)函數(shù)調(diào)用路徑檢錯(cuò)指標(biāo)

        若已知函數(shù)調(diào)用路徑 Pk={Vk0,Vk1,…,Vkm),則路徑Pk的函數(shù)調(diào)用路徑檢錯(cuò)指標(biāo)量化值為:

        其中,Vkl∈Pk,且在回歸測(cè)試的單元測(cè)試階段函數(shù)Vkj中至少檢測(cè)出一處錯(cuò)誤;Ekj為單元測(cè)試時(shí)函數(shù)Vkj中所檢測(cè)出的錯(cuò)誤個(gè)數(shù);max{E}指在回歸測(cè)試的單元測(cè)試階段所有被測(cè)函數(shù)中檢測(cè)出的錯(cuò)誤個(gè)數(shù)最大值;CVkj為函數(shù)vkj的扇入值;max{CV}是指在回歸測(cè)試的單元測(cè)試階段,所有至少檢測(cè)出一處錯(cuò)誤的函數(shù)中函數(shù)扇入值的最大值。式(2)將函數(shù)調(diào)用路徑檢錯(cuò)指標(biāo)量化至0~1的數(shù)值區(qū)間,使得錯(cuò)誤個(gè)數(shù)多、扇入系數(shù)高的函數(shù)所在的函數(shù)調(diào)用路徑有更高的量化值。

        2)測(cè)試用例的覆蓋路徑檢錯(cuò)指標(biāo)

        測(cè)試用例ti的覆蓋路徑檢錯(cuò)指標(biāo)是指測(cè)試用例ti的覆蓋路徑集中所有元素的函數(shù)調(diào)用路徑檢錯(cuò)指標(biāo)平均值:

        其中,n為ti覆蓋路徑集中的元素個(gè)數(shù)。式(2)、式(3)使檢測(cè)出錯(cuò)誤概率較高的測(cè)試用例有更高的優(yōu)先級(jí)量化值,保證盡早地檢測(cè)出盡量多的錯(cuò)誤。

        (3)測(cè)試用例優(yōu)先級(jí)量化取值

        綜合測(cè)試用例函數(shù)調(diào)用路徑覆蓋能力和測(cè)試用例覆蓋路徑檢錯(cuò)指標(biāo),第i個(gè)測(cè)試用例ti的優(yōu)先級(jí)取值Vi為:

        3.2 測(cè)試用例優(yōu)先級(jí)優(yōu)化算法

        測(cè)試用例的執(zhí)行將不斷地覆蓋函數(shù)調(diào)用路徑,因此,在測(cè)試執(zhí)行過(guò)程中變更路徑集可以分為2個(gè)部分,尚未被任何執(zhí)行過(guò)的測(cè)試用例覆蓋的未覆蓋路徑集testRt_UC,以及已經(jīng)至少被一個(gè)執(zhí)行過(guò)的測(cè)試用例覆蓋的覆蓋路徑集testRt_C。如果每次選擇的測(cè)試用例tj使tj盡可能多地滿足未覆蓋路徑集,而不關(guān)注其對(duì)覆蓋路徑集的覆蓋情況,則這種測(cè)試用例優(yōu)先級(jí)選擇方法將能更快速地覆蓋所有的變更路徑集。因此,本文在測(cè)試用例執(zhí)行過(guò)程中,根據(jù)測(cè)試用例對(duì)變更路徑集的覆蓋情況動(dòng)態(tài)調(diào)整測(cè)試用例函數(shù)調(diào)用路徑覆蓋能力:,其中,為動(dòng)態(tài)函數(shù)調(diào)用路徑覆蓋能力取值;為|P(ti)∩ testRt_ UC|,即測(cè)試用例ti執(zhí)行到的尚未被任何已執(zhí)行過(guò)的測(cè)試用例覆蓋的函數(shù)調(diào)用路徑條數(shù)。

        測(cè)試用例優(yōu)先級(jí)優(yōu)化算法在測(cè)試用例執(zhí)行過(guò)程中,根據(jù)覆蓋覆蓋路徑集和未覆蓋路徑集的變化,計(jì)算動(dòng)態(tài)函數(shù)調(diào)用路徑覆蓋能力取值,從而動(dòng)態(tài)調(diào)整測(cè)試用例優(yōu)先集量化值,使優(yōu)先級(jí)排序方法盡快覆蓋所有測(cè)試需求(函數(shù)調(diào)用路徑),算法描述如下:

        輸入 T為回歸測(cè)試用例集;P為變更路徑集;tCM為測(cè)試覆蓋矩陣

        輸出 排序后的測(cè)試用例集T’

        變量 testRt_UC為未覆蓋路徑集;testC_UR為未執(zhí)行測(cè)試用例集

        Begin

        /*初始化*/

        sort(T);//根據(jù)測(cè)試用例優(yōu)先級(jí)量化值對(duì)T中測(cè)試用例排序testRt_UC=P;testC_UR=T;

        /*測(cè)試用例集優(yōu)化排序*/

        while(testC_UR≠φ)

        run(t1);//執(zhí)行測(cè)試用例testC_UR中排序第一的測(cè)試用例,//即尚未執(zhí)行的測(cè)試用例中優(yōu)先級(jí)取值最高的測(cè)試用例

        testC_UR=testC_UR–t1;

        if(testRt_UC≠φ)

        if(P(t1)∩ testRt_UC≠φ)

        /*遍歷測(cè)試用例t1的覆蓋路徑集,實(shí)現(xiàn)優(yōu)先級(jí)的動(dòng)態(tài)調(diào)整*/

        for each(Pj∈(P(t1) ∩ testRt_UC))

        /*動(dòng)態(tài)調(diào)整Pj的執(zhí)行用例集t(Pj)中所有測(cè)試用例的優(yōu)先級(jí)量化值*/

        for each(tk∈t(Pj))

        modify(Vk);//動(dòng)態(tài)調(diào)整測(cè)試用例tk的優(yōu)先級(jí)量化值

        end for;end for;

        sort(testC_UR);

        end if;

        else

        /*若未覆蓋路徑集為空,則按優(yōu)先級(jí)取值依次執(zhí)行所有測(cè)

        試用例*/

        for each(ti∈testC_UR)

        run(ti);end for;

        testC_UR=φ

        end if;

        testRt_UC=testRt_UC-P(t1);end while;

        在最外層的while循環(huán)中,首先執(zhí)行當(dāng)前測(cè)試用例優(yōu)先級(jí)取值最高的測(cè)試用例t1,并在未執(zhí)行測(cè)試用例集testC_UR移除該測(cè)試用例。若未覆蓋路徑集為空,則說(shuō)明所有變更路徑都已經(jīng)至少被覆蓋一次,此時(shí)未覆蓋路徑集不會(huì)再發(fā)生變化,測(cè)試用例的優(yōu)先級(jí)取值也就不會(huì)再發(fā)生變化,因此按優(yōu)先級(jí)取值依次執(zhí)行所有測(cè)試用例;若未覆蓋路徑集非空,則遍歷測(cè)試用例t1的覆蓋路徑集P(t1)與未覆蓋路徑集testRT_UC的交集,動(dòng)態(tài)地調(diào)整每條路徑的執(zhí)行用例集中的測(cè)試用例優(yōu)先級(jí)取值。最后在未覆蓋路徑集中testRt_UC移除測(cè)試用例t1覆蓋路徑集P(t1)。循環(huán)執(zhí)行整個(gè)過(guò)程,直至所有測(cè)試用例都被執(zhí)行。

        4 實(shí)驗(yàn)與評(píng)測(cè)

        4.1 優(yōu)先級(jí)排序方法度量標(biāo)準(zhǔn)

        測(cè)試用例優(yōu)先級(jí)排序方法的目標(biāo)是為了提高測(cè)試的缺陷檢測(cè)率,盡早發(fā)現(xiàn)程序中的錯(cuò)誤。文獻(xiàn)[12]提出了APFD度量標(biāo)準(zhǔn)作為優(yōu)先級(jí)排序方法的度量指標(biāo)。

        APFD即缺陷檢測(cè)加權(quán)平均百分比,若測(cè)試用例集T包含n個(gè)測(cè)試用例,該測(cè)試用例集能夠檢測(cè)出的錯(cuò)誤集合F中包含m個(gè)錯(cuò)誤,則測(cè)試用例集T的一個(gè)順序集T′的APFD值定義為:

        其中,T1F為順序集T′中第一個(gè)檢測(cè)出錯(cuò)誤i的測(cè)試用例在T中的位置。

        APFD的取值范圍是0~1。APFD的值越高,表示對(duì)應(yīng)測(cè)試用例順序集缺陷檢測(cè)率越高。

        例如測(cè)試用例缺陷檢測(cè)情況如表2所示,若按照T1-T10順序執(zhí)行測(cè)試用例,則該順序集的APFD值為:

        若按照T1-T10-T3-T4-T7-T9-T10-T1-T2-T5-T6-T8的順序執(zhí)行,則該順序集的APFD值為:

        4.2 實(shí)驗(yàn)結(jié)果

        基于函數(shù)調(diào)用路徑的測(cè)試核心關(guān)注點(diǎn)是程序的規(guī)模,函數(shù)調(diào)用路徑的條數(shù)等信息,因此選取了代碼行數(shù)幾十行到幾百行、函數(shù)調(diào)用路徑條數(shù)為數(shù)十條到上百條的5個(gè)實(shí)用C語(yǔ)言程序作為被測(cè)程序進(jìn)行對(duì)比實(shí)驗(yàn)。

        針對(duì)每一個(gè)被測(cè)程序執(zhí)行3輪測(cè)試。第一輪執(zhí)行未排序的測(cè)試用例集,第二輪執(zhí)行僅使用優(yōu)先級(jí)量化方法排序的測(cè)試用例集,第三輪執(zhí)行使用測(cè)試用例優(yōu)先級(jí)優(yōu)化方法排序的測(cè)試用例集。被測(cè)程序的代碼行數(shù)、函數(shù)調(diào)用路徑條數(shù)、測(cè)試用例數(shù)、缺陷數(shù)以及3輪順序集對(duì)應(yīng)的APFD值如表3所示。

        表3 優(yōu)先級(jí)排序算法的實(shí)驗(yàn)數(shù)據(jù)

        通過(guò)實(shí)驗(yàn)分析發(fā)現(xiàn):

        (1)使用優(yōu)先級(jí)量化方法排序后的測(cè)試用例順序集APFD值要高于未使用任何排序方法的測(cè)試用例順序集APFD值,且兩者差值較大,說(shuō)明優(yōu)先級(jí)量化方法能明顯提高測(cè)試的缺陷檢測(cè)率。

        (2)使用測(cè)試用例優(yōu)先級(jí)優(yōu)化方法動(dòng)態(tài)排序后的測(cè)試用例順序集APFD值要高于僅使用優(yōu)先級(jí)量化方法排序的順序集APFD值,但是提升幅度不明顯,一般能提高幾個(gè)百分點(diǎn)。在測(cè)試用例數(shù)和缺陷數(shù)較少的情況下,該優(yōu)化方法可能失效。例如被測(cè)程P1,第三輪APFD值和第二輪APFD值無(wú)差別。因?yàn)閮?yōu)化方法本身會(huì)有資源和時(shí)間的開銷,在實(shí)際測(cè)試工程中要綜合考慮軟件規(guī)模、測(cè)試開銷等問題決定是否選用優(yōu)化方法。

        (3)隨著軟件規(guī)模的增加,測(cè)試用例優(yōu)先級(jí)量化方法和測(cè)試用例優(yōu)先級(jí)優(yōu)化方法對(duì)缺陷檢測(cè)率的提升都更加穩(wěn)定。

        5 結(jié)束語(yǔ)

        傳統(tǒng)的基于覆蓋的優(yōu)先級(jí)技術(shù)僅考慮代碼覆蓋信息,而忽略了其他優(yōu)先級(jí)影響因素。本文采用基于函數(shù)調(diào)用路徑的測(cè)試用例優(yōu)先級(jí)排序方法,將測(cè)試用例的歷史覆蓋信息和其他優(yōu)先級(jí)影響因素應(yīng)用于優(yōu)先級(jí)量化排序。按照此方法排序測(cè)試用例,能盡快地檢測(cè)到程序中的缺陷,使系統(tǒng)的調(diào)試修改工作盡早進(jìn)行,降低風(fēng)險(xiǎn)。而根據(jù)測(cè)試執(zhí)行動(dòng)態(tài)調(diào)整優(yōu)先級(jí)的優(yōu)化方法,在測(cè)試用例數(shù)和缺陷數(shù)較多的測(cè)試中能進(jìn)一步提高缺陷檢測(cè)速度。

        隨著軟件規(guī)模的不斷擴(kuò)大,軟件系統(tǒng)的迭代開發(fā)導(dǎo)致測(cè)試用例不斷被設(shè)計(jì)、修改和執(zhí)行,其組成的測(cè)試用例集規(guī)模將更加龐大。如何尋找影響測(cè)試用例優(yōu)先級(jí)的各種因素,并綜合各種因素制定合理的優(yōu)先級(jí)計(jì)算方法,進(jìn)一步提高測(cè)試效率,并保證算法的成本開銷是優(yōu)先級(jí)研究的方向之一。

        [1]郭晶晶,高建華.基于冗余測(cè)試用例的最小測(cè)試用例集生成方法[J].計(jì)算機(jī)工程,2010,36(1):45-48.

        [2]彭園園.回歸測(cè)試方法及測(cè)試用例優(yōu)化研究[D].武漢:武漢理工大學(xué),2009.

        [3]Mu Yongmin,Zheng Yuhui,Zhang Zhihua,et al.The Algorithm of Infeasible Paths Extraction Oriented the Function Calling Relationship[J]. Chinese Journal of Electronics,2012,21(2):236-240.

        [4]屈 波,聶長(zhǎng)海,徐寶文.基于測(cè)試用例設(shè)計(jì)信息的回歸測(cè)試優(yōu)先級(jí)算法[J].計(jì)算機(jī)學(xué)報(bào),2008,31(3):431-439.

        [5]屈 波,聶長(zhǎng)海,徐寶文.回歸測(cè)試中測(cè)試用例優(yōu)先級(jí)技術(shù)研究綜述[J].計(jì)算機(jī)科學(xué)與探索,2009,3(3):225-233.

        [6]Mu Yongmin,Wang Rui,Zhang Zhihua,et al.Automatic Test Method Research on the Word Part of Document Format Translator[J].Chinese Journal of Electronics,2013,22(1):55-60.

        [7]侯 蕓,顧 剛,高海昌,等.一種路徑覆蓋自動(dòng)生成的改進(jìn)方法[J].計(jì)算機(jī)工程,2007,33(4):67-69.

        [8]杜慶峰,李 娜.白盒測(cè)試基路徑算法[J].計(jì)算機(jī)工程,2009,35(15):100-102,123.

        [9]張志華,牟永敏.基于函數(shù)調(diào)用的路徑覆蓋生成技術(shù)研究[J].電子學(xué)報(bào),2010,38(8):1808-1811.

        [10]Zheng Huiyu,Mu Yongmin,Zhang Zhihua.Research on the Static Function Call Path Generating Automatically[C]//Proc.of the 2nd IEEE International Conference on Information Management and Engineering.Chengdu,China:[s.n.],2010:405-409.

        [11]Jiang Yu,Mu Yongmin,Zhang Zhihua.Modificatory Indentification Algorithm Research for Source Code Oriented[C]//Proc.of the 2nd International Workshop on Education Technology and Computer Science.Wuhan,China:[s.n.],2010:388-391.

        [12]Rothermel G,Untch R H,Chu Chengyun,et al.Prioritizing Test Cases for Regression Testing[J].IEEE Transactions on Software Engineering,2001,27(10):929-948.

        猜你喜歡
        函數(shù)調(diào)用測(cè)試用例排序
        排序不等式
        基于C語(yǔ)言的數(shù)學(xué)菜單的設(shè)計(jì)與實(shí)現(xiàn)
        基于SmartUnit的安全通信系統(tǒng)單元測(cè)試用例自動(dòng)生成
        恐怖排序
        節(jié)日排序
        基于混合遺傳算法的回歸測(cè)試用例集最小化研究
        基于函數(shù)調(diào)用序列模式和函數(shù)調(diào)用圖的程序缺陷檢測(cè)方法*
        刻舟求劍
        兒童繪本(2018年5期)2018-04-12 16:45:32
        探討C++編程中避免代碼冗余的技巧
        Unity3D項(xiàng)目腳本優(yōu)化分析與研究
        国产区女主播在线观看| 成人无码网www在线观看| 手机在线中文字幕国产| 精品人妻一区二区三区不卡毛片| 91精品国产乱码久久中文| 国产在线精品一区二区三区| 亚洲av无码av男人的天堂| 欧美成人在线A免费观看| 国产成人自拍小视频在线| 经典黄色一区二区三区| 五月色婷婷丁香无码三级| 亚洲妇女无套内射精| 国产麻无矿码直接观看| 国产亚洲AV片a区二区| 精品黑人一区二区三区久久hd| 性色视频加勒比在线观看| 国产欧美日韩精品专区 | 女人被躁到高潮嗷嗷叫免| 中文字幕日韩欧美一区二区三区 | 久久午夜精品人妻一区二区三区| 北条麻妃国产九九九精品视频| 国产亚洲美女精品久久久| 国产av一区二区凹凸精品| 亚洲国产精品激情综合色婷婷| 久久天堂av综合合色| 成熟丰满熟妇高潮xxxxx视频| 精品无吗国产一区二区三区av| 亚洲色图偷拍自拍亚洲色图| 一区二区三区最新中文字幕| 少妇高潮流白浆在线观看| 荡女精品导航| 亚洲色图在线视频观看| av手机在线观看不卡| 51看片免费视频在观看| 国产熟妇搡bbbb搡bbbb搡| 一区二区特别黄色大片| 中文字幕乱码亚洲三区| 国产老熟女网站| 亚洲码国产精品高潮在线| 欧美国产亚洲精品成人a v| 亚洲色图在线视频观看|