本發(fā)明涉及軟件蛻變測試,特別是一種數(shù)值表達式型蛻變關(guān)系的靜態(tài)迭代構(gòu)造方法及系統(tǒng)。
背景技術(shù):
1、軟件測試兩大核心問題:測試用例集合完備性,以及程序正確性判定機制。軟件測試技術(shù)可分為傳統(tǒng)測試和非傳統(tǒng)測試,傳統(tǒng)測試技術(shù)的判定機制為程序輸出與預期結(jié)果是否一致。當預期值構(gòu)造困難、獲取成本極高時,判定機制失效,如:核反應(yīng)堆仿真、武器爆轟流體模擬、航天飛行器太空環(huán)境仿真等場景就存在該問題。同時,傳統(tǒng)測試技術(shù)只適用于確定論程序,當同一組輸入的多次執(zhí)行結(jié)果不相等時,判定機制也會失效,如基于概率模型的蒙特卡洛計算、深度神經(jīng)網(wǎng)絡(luò)、生成式人工智能等場景也存在該問題。
2、蛻變測試(metamorphictesting,mt)是一種非傳統(tǒng)測試技術(shù),它是緩解軟件測試預期值問題的有效技術(shù)之一,在科學計算、生成式人工智能等場景有廣闊應(yīng)用前景。蛻變關(guān)系(metamorphicrelation,mr)是蛻變測試的核心,按照表征形式分類包括數(shù)值表達式型、謂詞表達式型和其他。數(shù)值表達式是使用常量、變量、數(shù)學函數(shù)和運算符構(gòu)建的表達式,在科學研究、工程建模等領(lǐng)域有著廣泛應(yīng)用。
3、蛻變關(guān)系構(gòu)造是mt的核心問題。目前,雖然出現(xiàn)了一些mr生成技術(shù),但是構(gòu)造對軟件測試、檢測缺陷有意義的mr仍然是巨大挑戰(zhàn)。根據(jù)是否需要初始mr,可將現(xiàn)行mr構(gòu)造方法分為兩類:①復合初始mr,構(gòu)造“新”mr,即復合mr(compoundmr,cmr);②從程序執(zhí)行數(shù)據(jù)中挖掘mr。因初始mr經(jīng)過檢驗,一般源自物理模型、數(shù)值算法、程序規(guī)約的性質(zhì),具備可解釋性,所以,前者獲得的mr質(zhì)量較好,后者識別的mr通常屬于似然mr,即mr僅在當前數(shù)據(jù)集上是可滿足的,不具備可解釋性,質(zhì)量一般,而且,為獲得執(zhí)行數(shù)據(jù)需要多次執(zhí)行被測程序,非常耗時,故構(gòu)造效率較低。
4、現(xiàn)有技術(shù)存在如下技術(shù)問題:復合初始mr方法構(gòu)造效率低,如imt存在組合爆炸問題,獲取代碼路徑覆蓋信息需要執(zhí)行被測程序;數(shù)據(jù)挖掘方法得到的是似然mr,可靠性不高,同時需要多次執(zhí)行被測程序,構(gòu)造效率低。現(xiàn)有mr構(gòu)造方法存在的主要問題為:①采用動態(tài)方法,需要執(zhí)行被測程序,構(gòu)造成本高;②未排除對軟件測試無意義的mr,構(gòu)造效率低。
技術(shù)實現(xiàn)思路
1、鑒于現(xiàn)有的數(shù)值表達式型蛻變關(guān)系的靜態(tài)迭代構(gòu)造方法存在的問題,提出了本發(fā)明。因此,本發(fā)明所要解決的問題在于如何提供一種數(shù)值表達式型蛻變關(guān)系的靜態(tài)迭代構(gòu)造方法及系統(tǒng)。
2、為解決上述技術(shù)問題,本發(fā)明提供如下技術(shù)方案:
3、第一方面,本發(fā)明提供了一種數(shù)值表達式型蛻變關(guān)系的靜態(tài)迭代構(gòu)造方法,其包括,獲取數(shù)值表達式參數(shù)構(gòu)建編輯距離矩陣,計算數(shù)值表達式相似度分析參數(shù)的相似性;構(gòu)建回溯規(guī)則,通過編輯距離矩陣得到進行字符串轉(zhuǎn)換的編輯操作,得出初始蛻變關(guān)系集合;進行數(shù)值表達式型蛻變關(guān)系的靜態(tài)迭代構(gòu)造,輸出蛻變關(guān)系集合。
4、作為本發(fā)明所述數(shù)值表達式型蛻變關(guān)系的靜態(tài)迭代構(gòu)造方法的一種優(yōu)選方案,其中:所述數(shù)值表達式參數(shù)包括算術(shù)運算符、關(guān)系運算符、變元、變元次數(shù)以及常量。
5、作為本發(fā)明所述數(shù)值表達式型蛻變關(guān)系的靜態(tài)迭代構(gòu)造方法的一種優(yōu)選方案,其中:所述構(gòu)建編輯距離矩陣包括以下步驟,獲取參數(shù)集,將所有數(shù)值表達式轉(zhuǎn)換成統(tǒng)一形式;定義編輯操作構(gòu)造編輯操作集,編輯操作用于進行表達式轉(zhuǎn)換,編輯操作包括插入、刪除、替換符號、變元或常量值;構(gòu)建二維矩陣,對于每對表達式計算最小編輯距離,每個單元格表示從第一個表達式的前i個字符轉(zhuǎn)換到第二個表達式的前j個字符所需的最少操作數(shù);填充編輯距離矩陣,矩陣中的每個元素表示表達式之間的編輯距離;給不同的編輯操作分配權(quán)重,對編輯操作的權(quán)重進行調(diào)整反映表達式的相似性。
6、作為本發(fā)明所述數(shù)值表達式型蛻變關(guān)系的靜態(tài)迭代構(gòu)造方法的一種優(yōu)選方案,其中:所述計算數(shù)值表達式相似度包括以下步驟,從每個數(shù)值表達式中提取參數(shù),使用正則表達式或解析器識別出表達式中的運算符,記錄種類和位置;比較表達式在參數(shù)上的相似性,計算表達式的相似度,計算公式為:
7、
8、式中,sim(s,t)為表達式s和表達式t的相似度,|s|和|t|分別表示兩個表達式序列的長度,dmn表示表達式s轉(zhuǎn)換到表達式t的編輯距離;根據(jù)表達式的相似性準則,得出輸入輸出關(guān)系的表達式字符串的具體度量方式。
9、作為本發(fā)明所述數(shù)值表達式型蛻變關(guān)系的靜態(tài)迭代構(gòu)造方法的一種優(yōu)選方案,其中:所述編輯距離包括將序列s轉(zhuǎn)換為序列t需要的最少的編輯操作次數(shù),權(quán)重代表單次編輯操作的編輯距離,兩個序列的編輯距離即為所有單次編輯操作的距離之和;若在表達式序列中插入字符時,則序列的單次操作的編輯距離為插入字符的長度;若在表達式序列中刪除字符時,則序列的單次操作的編輯距離為刪除字符的長度;若在表達式序列中的字符替換為其他字符時,則序列的單次操作的編輯距離為替換后的字符長度;構(gòu)造字符串s=s1,s2…sm和t=t1,t2…tn的編輯距離矩陣為ld={dij},0≤i≤m,0≤j≤m,編輯距離矩陣構(gòu)造為:
10、
11、計算字符串的編輯距離,將兩個字符序列從左往右開始比較并記錄每次比較的編輯距離dij,依照每個符號的權(quán)重構(gòu)建編輯距離矩陣;得到兩個字符序列的編輯距離,編輯距離的取值即為編輯距離矩陣的右下角的元素dmn;得到編輯距離矩陣后通過回溯方式得到將字符串s轉(zhuǎn)換為字符串t的每步編輯操作。
12、作為本發(fā)明所述數(shù)值表達式型蛻變關(guān)系的靜態(tài)迭代構(gòu)造方法的一種優(yōu)選方案,其中:所述回溯規(guī)則包括從編輯距離矩陣的右下角中的元素開始進行回溯,回溯規(guī)則為:當si=tj時,元素dij則回溯到編輯距離矩陣中的di-1,j-1元素;當si≠tj時,元素dij則回溯到編輯距離矩陣中的di-1,j-1,di,j-1,di-1,j中最小的元素,若編輯距離存在元素值相等時,采用優(yōu)先級為di-1,j-1,di,j-1,di-1,j。
13、作為本發(fā)明所述數(shù)值表達式型蛻變關(guān)系的靜態(tài)迭代構(gòu)造方法的一種優(yōu)選方案,其中:所述進行數(shù)值表達式型蛻變關(guān)系的靜態(tài)迭代構(gòu)造包括以下步驟,從初始蛻變關(guān)系集合中隨機挑選一條蛻變關(guān)系作為根蛻變關(guān)系;計算根蛻變關(guān)系與蛻變關(guān)系集合中其它蛻變關(guān)系的相似度,蛻變關(guān)系包括輸入關(guān)系和輸出關(guān)系,進行蛻變關(guān)系的相似度計算,蛻變關(guān)系的相似度計算公式為,
14、v=αvr+βvr
15、其中,v表示蛻變關(guān)系的相似度,vr表示蛻變關(guān)系的輸入關(guān)系相似度,vr表示蛻變關(guān)系的輸出關(guān)系相似度,α和β分別是輸入關(guān)系和輸出關(guān)系權(quán)重,且α+β=1;相似度小于限值閾值的蛻變關(guān)系作為子蛻變關(guān)系,將根蛻變關(guān)系與子蛻變關(guān)系復合得到1代復合蛻變關(guān)系;從1代復合蛻變關(guān)系集合隨機挑選一條蛻變關(guān)系作為根蛻變關(guān)系,重復步驟得到2代復合蛻變關(guān)系;重復進行蛻變關(guān)系的靜態(tài)迭代構(gòu)造,直到滿足停機條件,輸出蛻變關(guān)系集合。
16、第二方面,本發(fā)明提供了一種數(shù)值表達式型蛻變關(guān)系的靜態(tài)迭代構(gòu)造系統(tǒng),其包括:獲取模塊,用于獲取數(shù)值表達式參數(shù)構(gòu)建編輯距離矩陣,計算數(shù)值表達式相似度分析參數(shù)的相似性;轉(zhuǎn)換模塊,用于構(gòu)建回溯規(guī)則,通過編輯距離矩陣得到進行字符串轉(zhuǎn)換的編輯操作,得出初始蛻變關(guān)系集合;構(gòu)造模塊。用于進行數(shù)值表達式型蛻變關(guān)系的靜態(tài)迭代構(gòu)造,輸出蛻變關(guān)系集合。
17、第三方面,本發(fā)明提供了一種計算機設(shè)備,包括存儲器和處理器,所述存儲器存儲有計算機程序,其中:所述處理器執(zhí)行所述計算機程序時實現(xiàn)數(shù)值表達式型蛻變關(guān)系的靜態(tài)迭代構(gòu)造方法的步驟。
18、第四方面,本發(fā)明提供了一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,其中:所述計算機程序被處理器執(zhí)行時實現(xiàn)數(shù)值表達式型蛻變關(guān)系的靜態(tài)迭代構(gòu)造方法的步驟。
19、本發(fā)明有益效果為通過蛻變關(guān)系復合無需執(zhí)行被測程序,降低計算時間消耗,降低蛻變關(guān)系構(gòu)造成本,利用數(shù)值表達式型蛻變關(guān)系的性質(zhì)排除對軟件測試無意義的蛻變關(guān)系,減少參與復合計算的蛻變關(guān)系數(shù)量提高蛻變關(guān)系的構(gòu)造效率。