蔣 超,黃 松,2,惠戰(zhàn)偉,2
(1.陸軍工程大學(xué) 指揮控制工程學(xué)院,江蘇 南京 210007;2.全軍軍事訓(xùn)練軟件測(cè)評(píng)中心,江蘇 南京 210007)
圖像區(qū)域生長(zhǎng)是圖像分割的常用方法之一[1],是指將圖像中成組的像素或區(qū)域發(fā)展成更大區(qū)域的過(guò)程。從種子點(diǎn)的集合開始,區(qū)域增長(zhǎng)是通過(guò)將與每個(gè)種子點(diǎn)具有相似屬性如顏色、灰度、紋理等的相鄰像素合并到此區(qū)域的過(guò)程。
軟件測(cè)試是保證軟件可靠性和軟件質(zhì)量的重要手段,是評(píng)估軟件能否滿足設(shè)計(jì)需求的過(guò)程。當(dāng)前,圖像處理軟件的測(cè)試更多的是由領(lǐng)域?qū)<沂謩?dòng)完成,依賴其經(jīng)驗(yàn)來(lái)判斷輸出結(jié)果是否正確,這種測(cè)試方法效率低下并且無(wú)法保證測(cè)試充分性和正確性。
傳統(tǒng)軟件測(cè)試面臨的一大難題是預(yù)期輸出結(jié)果很難甚至無(wú)法獲取,即測(cè)試判定問(wèn)題(test oracle problem)[2]。為了解決此問(wèn)題,Meyer等提出利用統(tǒng)計(jì)的方法來(lái)驗(yàn)證圖像處理程序的正確性[3],Jameel等提出利用支持向量機(jī)的方法來(lái)構(gòu)建程序測(cè)試判定[4],Din等提出利用機(jī)器學(xué)習(xí)的方法來(lái)構(gòu)建程序測(cè)試判定并成功將此方法應(yīng)用于衍射圖像處理軟件測(cè)試中[5]。
為了緩解測(cè)試判定問(wèn)題,香港中文大學(xué)的Chen T Y等提出了蛻變測(cè)試技術(shù)(metamorphic testing,MT)[6]。該技術(shù)針對(duì)程序預(yù)期輸出難以獲取的問(wèn)題,將檢查程序的實(shí)際輸出是否符合預(yù)期輸出轉(zhuǎn)變?yōu)闄z查程序的多個(gè)執(zhí)行結(jié)果之間是否滿足某特性關(guān)系,這種關(guān)系被稱為“蛻變關(guān)系”。蛻變測(cè)試以原始輸入為基礎(chǔ),以蛻變關(guān)系為判斷準(zhǔn)則,當(dāng)測(cè)試用例之間滿足一定的輸入關(guān)系時(shí),檢查輸出之間是否符合相應(yīng)的蛻變關(guān)系,若不滿足,則可以認(rèn)為軟件存在缺陷,這就為緩解測(cè)試判定問(wèn)題提供了一種有效途徑。
當(dāng)前蛻變測(cè)試的研究熱點(diǎn)是蛻變關(guān)系的構(gòu)造及其在不同領(lǐng)域的應(yīng)用[7],對(duì)測(cè)試過(guò)程的標(biāo)準(zhǔn)規(guī)范研究不是很多,這就造成了測(cè)試過(guò)程的隨意性和盲目性。為了減少人為因素對(duì)測(cè)試過(guò)程的干擾,規(guī)范蛻變測(cè)試流程,文中提出了一種適用于圖像區(qū)域增長(zhǎng)程序的蛻變測(cè)試框架,并對(duì)其中的相關(guān)模塊的實(shí)現(xiàn)方法進(jìn)行介紹。
針對(duì)圖像區(qū)域增長(zhǎng)程序的特點(diǎn),提出了由蛻變關(guān)系構(gòu)造、原始測(cè)試用例的自動(dòng)生成、衍生測(cè)試用例自動(dòng)生成、區(qū)域增長(zhǎng)程序自動(dòng)執(zhí)行、測(cè)試結(jié)果自動(dòng)判定、測(cè)試有效性度量和蛻變關(guān)系優(yōu)化等模塊組成的蛻變測(cè)試框架,如圖1所示。
圖1 圖像區(qū)域增長(zhǎng)程序蛻變測(cè)試框架
蛻變測(cè)試的結(jié)果可以分為以下四類,如表1所示。通常第一種與第二種情況是經(jīng)常遇到的,第一種情況對(duì)于程序的正確性有一定參考價(jià)值,第二類能夠發(fā)現(xiàn)程序中存在的錯(cuò)誤。因此,有效的蛻變關(guān)系應(yīng)當(dāng)使得第一種和第二種情況盡可能多的出現(xiàn)。在測(cè)試過(guò)程中,蛻變關(guān)系的構(gòu)造是實(shí)施蛻變測(cè)試的關(guān)鍵環(huán)節(jié),其質(zhì)量的優(yōu)劣直接影響到蛻變測(cè)試的性能和效率,也是影響自動(dòng)化蛻變測(cè)試的重要因素。
表1 蛻變測(cè)試結(jié)果分析
Murphy等針對(duì)數(shù)值計(jì)算函數(shù)提出了6條通用蛻變關(guān)系[8],如表2所示。6類常見蛻變關(guān)系可以作為構(gòu)造蛻變關(guān)系的依據(jù),但更需要針對(duì)不同待測(cè)程序的特性構(gòu)造不同的蛻變關(guān)系。針對(duì)圖像處理軟件的特點(diǎn),可以從以下幾個(gè)方面著手構(gòu)建蛻變關(guān)系:
(1)幾何屬性。對(duì)原始輸入圖像做幾何變換可以得到新的輸入圖像,這樣并未影響圖像的內(nèi)部布局,因此兩幅圖像的生長(zhǎng)結(jié)果應(yīng)當(dāng)保持相應(yīng)的幾何關(guān)系。
(2)算法特性。給定輸入圖像后,區(qū)域增長(zhǎng)程序的輸出受控制參數(shù)的影響。Chen等提出了基于策略選擇的系統(tǒng)構(gòu)建蛻變關(guān)系的方法[9],即改變一個(gè)輸入?yún)?shù),控制其他輸入?yún)?shù),查看輸出結(jié)果的變化是否符合預(yù)期。
表2 常見數(shù)值蛻變關(guān)系
原始測(cè)試用例生成是影響測(cè)試效率的關(guān)鍵環(huán)節(jié),現(xiàn)有的測(cè)試用例生成技術(shù)主要有特殊值選取、隨機(jī)值選取和迭代生成等[10]。目前應(yīng)用最廣泛的是隨機(jī)值選取和特殊值選取兩種方法[11]。特殊值選取與待測(cè)程序和測(cè)試人員相關(guān)度很大,且生成的測(cè)試用例數(shù)量有限,難以保證測(cè)試充分性。隨機(jī)值選取的測(cè)試效果優(yōu)于特殊值,且可視為無(wú)偏的,但是測(cè)試過(guò)程帶有一定的盲目性。迭代生成的方法是將每次產(chǎn)生的衍生用例作為下一次測(cè)試的原始用例,但這種方法容易造成狀態(tài)爆炸問(wèn)題,實(shí)際使用范圍有限。對(duì)于圖像區(qū)域增長(zhǎng)程序,原始測(cè)試用例包含圖像數(shù)據(jù)和程序控制參數(shù)。
原始輸入圖像的常見來(lái)源有兩種,一是從標(biāo)準(zhǔn)測(cè)試數(shù)據(jù)集中選取,二是由測(cè)試人員自動(dòng)生成。從測(cè)試圖像數(shù)據(jù)集選取也可分為隨機(jī)選取和啟發(fā)式選取。標(biāo)準(zhǔn)數(shù)據(jù)集存在一個(gè)缺點(diǎn),即通用的測(cè)試數(shù)據(jù)很難涵蓋待測(cè)程序的特定功能,因此就產(chǎn)生了根據(jù)需求自動(dòng)生成圖像的方法。最直接的圖像生成方法就是隨機(jī)生成或者依據(jù)概率生成,這種簡(jiǎn)單的方法的弊端就是生成的圖像脫離現(xiàn)實(shí),參考價(jià)值不足。Tahir等提出了利用符號(hào)執(zhí)行技術(shù)生成測(cè)試圖像[12],Matthew等提出利用程序性噪聲生成測(cè)試圖像[13],Hu等提出利用模板生成灰度圖像[14],這些方法為圖像自動(dòng)生成提供了很好的借鑒。
在給定輸入圖像后,種子點(diǎn)的選擇和閾值設(shè)定將直接影響圖像區(qū)域生長(zhǎng)效果。文獻(xiàn)[15]介紹了種子點(diǎn)的自動(dòng)選取方法,生長(zhǎng)閾值和生長(zhǎng)個(gè)數(shù)閾值采用Otsu方法全局最佳自動(dòng)生成。
根據(jù)蛻變關(guān)系的定義,可以將蛻變關(guān)系分解為輸入關(guān)系、程序函數(shù)關(guān)系和輸出關(guān)系。衍生測(cè)試用例是由原始測(cè)試用例根據(jù)輸入關(guān)系生成的,此項(xiàng)工作可以由計(jì)算機(jī)自動(dòng)完成。值得注意的是,圖像處理軟件中,測(cè)試用例包含圖像數(shù)據(jù)和控制參數(shù),衍生用例的生成需要同時(shí)對(duì)兩者進(jìn)行處理。
圖像的輸入數(shù)據(jù)可以視為函數(shù)f(x,y),其中(x,y)對(duì)應(yīng)圖像像素點(diǎn)坐標(biāo),f(x,y)就是其對(duì)應(yīng)像素點(diǎn)上的屬性值,因此區(qū)域增長(zhǎng)后生成的圖像依然可以看作一個(gè)函數(shù)。根據(jù)蛻變關(guān)系中的輸出關(guān)系,原始測(cè)試用例和衍生測(cè)試用例的輸出是否滿足蛻變關(guān)系就可以由計(jì)算機(jī)來(lái)自動(dòng)判定,提高了判定的效率和準(zhǔn)確性。
蛻變測(cè)試過(guò)程中,不滿足蛻變關(guān)系意味著程序錯(cuò)誤,然而輸出之間滿足蛻變關(guān)系并不能保證程序正確。如果程序是正確的,那么測(cè)試終止條件和測(cè)試充分性就是需要考慮的問(wèn)題。為此測(cè)試框架引入了測(cè)試充分性判定。
當(dāng)選定一幅圖像和一個(gè)蛻變關(guān)系后,自動(dòng)執(zhí)行測(cè)試流程,執(zhí)行完畢后,計(jì)算程序路徑覆蓋率,若不滿足覆蓋率要求,則依次使用下一個(gè)蛻變關(guān)系,若蛻變關(guān)系使用完畢,則使用下一幅圖像,直至覆蓋率滿足測(cè)試要求,整改測(cè)試過(guò)程結(jié)束。考慮到部分程序有一定冗余,部分路徑可能永遠(yuǎn)不能覆蓋,若到達(dá)一定測(cè)試階段,測(cè)試覆蓋率不滿足測(cè)試的要求,但也不再增長(zhǎng),亦可結(jié)束測(cè)試。
不同的蛻變關(guān)系其檢錯(cuò)能力也不一樣。在測(cè)試過(guò)程中,為了提高測(cè)試效率,需要不斷優(yōu)化測(cè)試過(guò)程,蛻變關(guān)系優(yōu)化就是選取一些檢錯(cuò)能力強(qiáng)的蛻變關(guān)系,剔除檢錯(cuò)能力弱的蛻變關(guān)系??偟膩?lái)講,有效的蛻變關(guān)系會(huì)涉及到程序的核心功能,程序執(zhí)行路徑也會(huì)盡量不同。對(duì)于正確的程序,可以在待測(cè)程序中植入變異,計(jì)算各個(gè)蛻變關(guān)系的檢錯(cuò)能力,優(yōu)化蛻變關(guān)系,以提高測(cè)試效率。
某雷達(dá)圖像處理軟件是一款用于識(shí)別雷達(dá)圖像中重點(diǎn)目標(biāo)的軟件,作者所在的軍用軟件測(cè)評(píng)中心參與了該軟件的定型測(cè)試,整個(gè)測(cè)試的過(guò)程按照上述框架完成。
根據(jù)需求規(guī)格說(shuō)明以及程序源代碼,從幾何屬性、數(shù)值屬性和算法特性三個(gè)方面構(gòu)造了14條蛻變關(guān)系。
數(shù)值屬性方面,對(duì)整個(gè)圖像的灰度值做整體增減和縮放,那么區(qū)域生長(zhǎng)后的結(jié)果應(yīng)當(dāng)保持不變。
幾何屬性方面,在確定起始種子點(diǎn)、生長(zhǎng)閾值和生長(zhǎng)個(gè)數(shù)閾值的情況下,原始輸入圖像繞坐標(biāo)軸旋轉(zhuǎn)或沿對(duì)角線轉(zhuǎn)置可以得到新的輸入圖像,兩幅圖像的生長(zhǎng)結(jié)果保持相應(yīng)的幾何關(guān)系。
算法特性方面,可以依次對(duì)種子點(diǎn)位置、生長(zhǎng)閾值和生長(zhǎng)個(gè)數(shù)閾值做調(diào)整,那么生長(zhǎng)結(jié)果應(yīng)當(dāng)保持一定的關(guān)系。
由于真實(shí)雷達(dá)圖像涉密,測(cè)試過(guò)程中采用標(biāo)準(zhǔn)測(cè)試數(shù)據(jù)集來(lái)完成軟件測(cè)試工作。Pascal voc[16]是專門用于目標(biāo)檢測(cè)、圖像分割的標(biāo)準(zhǔn)測(cè)試數(shù)據(jù)集,采取隨機(jī)選取圖像的方法,控制參數(shù)由前面介紹的方法自動(dòng)確定。
測(cè)試目標(biāo)設(shè)定的測(cè)試覆蓋率為100%。因此,在沒有檢測(cè)到錯(cuò)誤的情況下,區(qū)域增長(zhǎng)功能測(cè)試必須達(dá)到設(shè)定的覆蓋率才能停止。程序測(cè)試覆蓋率變化如圖2所示。隨著測(cè)試圖像的增加,到第九幅圖像的時(shí)候,覆蓋率達(dá)到100%,滿足測(cè)試需求。
圖2 程序蛻變測(cè)試覆蓋率
為了檢測(cè)不同的蛻變關(guān)系的檢錯(cuò)能力,可以在源程序中依次植入三個(gè)變異,不滿足蛻變關(guān)系就意味著檢測(cè)到錯(cuò)誤。Milu[17]是一款針對(duì)C程序的變異算子生成工具,用該工具植入的變異如表3所示,這些都是開發(fā)過(guò)程中常見的錯(cuò)誤,不會(huì)使輸出結(jié)果出現(xiàn)較大的變化。
表3 變異構(gòu)造列表
表4所示為各個(gè)蛻變關(guān)系的檢錯(cuò)能力,所有的變異都被檢測(cè)出來(lái),證明了該方法的有效性,但是不同蛻變關(guān)系的檢錯(cuò)能力不一樣。為了提高測(cè)試效率,測(cè)試過(guò)程中篩選錯(cuò)誤檢測(cè)率在50%以上的蛻變關(guān)系,精簡(jiǎn)了蛻變關(guān)系集,節(jié)約了測(cè)試時(shí)間。
表4 蛻變關(guān)系檢錯(cuò)能力 %
近年來(lái),圖像處理軟件在生活中扮演日益突出的作用,因此軟件的正確性和可靠性需要得到保證。為了緩解測(cè)試判定問(wèn)題和推動(dòng)測(cè)試過(guò)程的自動(dòng)化標(biāo)準(zhǔn)化,提出了圖像區(qū)域增長(zhǎng)程序的蛻變測(cè)試框架。該框架從三個(gè)層面解決了此問(wèn)題:蛻變測(cè)試的同時(shí)也產(chǎn)生了測(cè)試用例,相比于隨機(jī)測(cè)試,該方法生成了更多的測(cè)試數(shù)據(jù);在缺乏測(cè)試判定的情況下,通過(guò)檢查蛻變關(guān)系有效緩解了測(cè)試判定問(wèn)題;該方法結(jié)合測(cè)試充分性判定,規(guī)范了測(cè)試過(guò)程,確保了軟件測(cè)試質(zhì)量。