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

        ?

        金融科技軟件自動化測試用例的冗余評價和削減方法

        2022-07-28 09:24:16徐立華趙瑞祥
        關(guān)鍵詞:容忍度測試用例套件

        龔 鑫, 徐立華, 竇 亮, 趙瑞祥

        (1. 華東師范大學(xué) 計算機科學(xué)與技術(shù)學(xué)院, 上海 200062; 2. 上海紐約大學(xué) 工程與計算機科學(xué)部, 上海200122; 3. 中匯信息技術(shù)(上海)有限公司, 上海 201203)

        0 引 言

        金融科技指服務(wù)于金融領(lǐng)域的計算機技術(shù), 是技術(shù)驅(qū)動的金融創(chuàng)新, 在金融機構(gòu)中發(fā)揮了重要的作用, 受到來自金融、軟件領(lǐng)域?qū)W者的廣泛關(guān)注. 據(jù)相關(guān)統(tǒng)計, 2019 年全球在金融科技領(lǐng)域的投資金額達(dá)到了1 054 億美元[1]. 金融科技的軟件系統(tǒng)通常涉及關(guān)鍵的金融業(yè)務(wù), 任何程序缺陷或者錯誤操作都可能導(dǎo)致巨大的經(jīng)濟損失. 由于金融科技軟件往往包含復(fù)雜的金融業(yè)務(wù)邏輯, 測試用例的字段之間具有復(fù)雜的約束關(guān)系, 因此金融科技軟件的測試任務(wù)往往需要耗費較高的時間成本和人力成本.

        為了確保金融科技軟件的質(zhì)量, 同時降低軟件測試的成本, 學(xué)者們[2-3]提出了一系列自動化測試用例生成方法 (Test Case Generation, TCG), 這些方法能夠在一定的條件下, 快速、自動地生成測試套件. 然而, 自動化測試用例生成方法往往以達(dá)到更高的代碼覆蓋率或者更大的變異分?jǐn)?shù)為目標(biāo), 傾向于生成數(shù)量更多的測試用例, 未考慮到可能引入的冗余因素, 因此極易造成測試冗余問題. 如果從測試套件中剔除一部分測試用例, 整體的測試質(zhì)量并不受到影響, 就表明存在測試冗余問題[4]. 測試套件中的冗余因素將提高測試執(zhí)行環(huán)節(jié)的成本, 并導(dǎo)致測試用例的管理變得更加困難[5].

        本文對實際的金融科技軟件 (由中匯信息技術(shù) (上海) 有限公司提供的外匯交易系統(tǒng)下的軟件構(gòu)件) 進(jìn)行了研究, 發(fā)現(xiàn)確實存在測試用例過多的問題, 并且難以使用人工方法高效地判斷其冗余程度.這個交易系統(tǒng)為銀行間外匯市場、貨幣市場等提供發(fā)行服務(wù)、交易服務(wù)、交易后處理服務(wù)、信息咨詢服務(wù)以及技術(shù)服務(wù), 具有龐大的體量. 系統(tǒng)在測試過程中使用了針對金融科技的兩種測試用例生成方法: FACTS (Automated BlaCk-box Testing for FinTech Systems)[2]和FinExpert[3], 這兩種方法雖然能夠生成覆蓋率足夠高的測試套件, 但是所生成的測試套件十分龐大, 會引入一定的冗余因素. 在實際的測試環(huán)節(jié)中, 測試人員更關(guān)注業(yè)務(wù)功能的覆蓋情況, 即業(yè)務(wù)代碼能否被測試用例覆蓋的情況, 因此, 如果能夠通過代碼覆蓋率對測試冗余進(jìn)行評估, 這樣的評估方法對于金融科技軟件來說就具有較理想的實際應(yīng)用價值.

        針對金融科技領(lǐng)域的軟件測試環(huán)節(jié), 本文提出了最佳覆蓋項冗余指標(biāo)MVI (Most Valuable Item),這是一種基于覆蓋率的測試冗余評價指標(biāo), 能夠?qū)y試套件的冗余因素進(jìn)行量化. MVI 指標(biāo)關(guān)注程序代碼的覆蓋項, 并通過覆蓋項對測試套件的整體冗余情況進(jìn)行評估. 為了驗證MVI 指標(biāo)的有效性, 本文進(jìn)一步提出了一種基于MVI 指標(biāo)的測試用例削減算法MVIR (Most Valuable Item Reduction). 實驗結(jié)果顯示, MVIR 能夠在保證測試性能損失小于9.20%的前提下, 實現(xiàn)大于89.88%的測試用例削減比例, 同時證明了MVI 指標(biāo)能夠有效反映測試套件中的冗余程度. 最后, 使用MVI 指標(biāo)對FACTS 和FinExpert 這兩種測試用例生成方法的冗余程度進(jìn)行了評估, 結(jié)果顯示, 這兩種方法在生成測試用例的同時會引入較多的冗余因素. 同時, 實驗結(jié)果發(fā)現(xiàn), MVIR 能夠?qū)ACTS 和FinExpert 這兩種方法所引入的冗余因素進(jìn)行有效消解, 將自動化測試用例生成方法與測試用例削減算法相結(jié)合, 能夠生成質(zhì)量較高、冗余程度較低的測試套件.

        1 相關(guān)工作

        1.1 測試冗余問題

        測試冗余不是一種確切的測試缺陷, 而是一種能夠揭示程序潛在缺陷的代碼特征. 測試冗余會影響測試套件的可讀性與可維護(hù)性, 降低測試質(zhì)量[6]. 產(chǎn)生測試冗余的根本原因, 往往是開發(fā)階段和測試階段的重復(fù)編碼, 或者軟件代碼的變更[4,7-8].

        測試冗余問題一直以來受到學(xué)者們[7,9-13]的廣泛關(guān)注, 各類針對測試用例削減技術(shù)的研究都對該問題進(jìn)行了討論. 測試用例削減技術(shù)以減少測試套件中的冗余因素為目標(biāo), 主要關(guān)注測試用例層面的冗余值, 通常將測試用例區(qū)分為“冗余”和“不冗余”兩類, 在削減的過程中剔除“冗余”測試用例, 只保留“不冗余”測試用例. 部分文獻(xiàn)[4-5]將測試用例的冗余值進(jìn)行了粒度更細(xì)的區(qū)分, 并且在削減的過程中,優(yōu)先刪除冗余值較高的測試用例. Koochakzadeh 等[4]基于“語句覆蓋”“分支覆蓋”“條件覆蓋”和“循環(huán)覆蓋”這4 類代碼覆蓋率, 提出測試套件冗余指標(biāo), 該指標(biāo)對測試用例之間的相交覆蓋項進(jìn)行分析,并以相交覆蓋項數(shù)量的百分比作為測試用例的冗余值, 將冗余值為0 的測試用例視為不冗余的, 冗余值大于0 的測試用例視為冗余的. 實驗結(jié)果顯示, 僅僅使用上述4 種覆蓋率指標(biāo), 對測試用例的冗余判斷精確度較低. Koochakzadeh 等[4]建議應(yīng)該使用更多樣化的覆蓋率準(zhǔn)則進(jìn)行更細(xì)致的冗余指標(biāo)計算. Marijan 等[5]提出了一種方法, 即在高度可配置軟件的持續(xù)集成測試環(huán)節(jié)中, 使用配置選項覆蓋率指標(biāo)和歷史的缺陷信息作為冗余指標(biāo), 將所有測試用例分為“完全冗余”“部分冗余”和“不冗余”這3 類, 刪除“完全冗余”的測試用例, 保留“不冗余”的測試用例, 并根據(jù)是否發(fā)現(xiàn)新的缺陷, 對“部分冗余”的測試用例進(jìn)行選擇性的保留. 實驗結(jié)果顯示, 該方法能夠在不明顯降低測試套件的缺陷檢測能力的情況下, 有效地縮短回歸測試環(huán)節(jié)的測試執(zhí)行時間.

        Koochakzadeh 等[4]與Marijan 等[5]提到的方法能夠在一定程度上對套件的冗余程度進(jìn)行度量, 但仍具有提升空間. Koochakzadeh 等[4]的方法雖然所使用的覆蓋項信息具有較細(xì)的粒度, 但是對測試用例進(jìn)行冗余判斷時的粒度較粗; Marijan 等[5]的方法將所有測試用例分為3 種類型, 但是對于同一種類型的測試用例, 缺乏更細(xì)粒度的區(qū)分, Marijan 等[5]的方法使用到了歷史缺陷信息, 這是一種較為難以獲取的數(shù)據(jù), 限制了該方法的適用性.

        1.2 測試用例生成方法: FACTS 和FinExpert

        本文研究的金融科技軟件在測試過程中使用了FACTS[2]和FinExpert[3]這兩種測試用例生成方法.

        FACTS 是一種黑盒的測試用例生成方法, 其通過對已有測試套件進(jìn)行變異操作, 隨機刪除、修改測試用例的部分字段值, 從而快速生成大量的測試用例. 其優(yōu)點在于: ①能夠在已有測試用例數(shù)量較少的情況下, 生成大量新的測試用例; ②所生成的測試套件能夠達(dá)到較高的代碼覆蓋率. 其缺點在于:①由于涉及隨機變異操作, 所生成的測試用例可能不滿足被測程序的約束條件, 進(jìn)而可能在測試執(zhí)行時觸發(fā)異常, 生成無意義的測試用例, 無法保證可用性; ②經(jīng)過實踐檢驗, FACTS 測試用例生成方法會生成大量無意義的測試用例.

        FinExpert 基于領(lǐng)域特定知識, 使用領(lǐng)域特定語言 (Domain Specific Language, DSL), 根據(jù)預(yù)先定義的字段類型、字段取值范圍、字段約束條件等信息, 生成大量符合領(lǐng)域特定知識的測試用例. 其優(yōu)點在于: 由于使用到了領(lǐng)域特定知識, 因此所生成的測試用例能夠有效地滿足被測程序的約束條件,不容易觸發(fā)異常, 避免生成無意義的測試用例. 其缺點在于: ①人工成本較高, 只有懂得業(yè)務(wù)邏輯與程序邏輯的領(lǐng)域?qū)<? 才有能力編寫領(lǐng)域特定知識信息; ②所生成的測試套件的質(zhì)量高低, 取決于領(lǐng)域特定知識信息的準(zhǔn)確與否. 在使用FinExpert 時, 為了生成高質(zhì)量的測試套件, 準(zhǔn)確而有效的領(lǐng)域特定知識信息是必要的.

        2 方 法

        2.1 樣 例

        軟件程序的代碼覆蓋率, 是軟件測試中的一種常用度量指標(biāo), 用于描述測試用例被執(zhí)行的代碼數(shù)量占源代碼總量的比例. 覆蓋項是覆蓋率準(zhǔn)則的單位. 不同的覆蓋率準(zhǔn)則, 具有不同的覆蓋項類型, 例如行覆蓋率指標(biāo)使用代碼行作為覆蓋項, 分支覆蓋率指標(biāo)使用代碼分支作為覆蓋項. 代碼覆蓋率信息,能夠作為測試用例冗余程度量化的依據(jù).

        為了直觀地展示代碼覆蓋項對于測試冗余的影響, 本節(jié)給出一個樣例, 該樣例取自金融科技軟件Bcbip 的代碼片段. 圖1 給出了樣例程序的簡化代碼, 其中只保留主要的代碼邏輯結(jié)構(gòu), 已對類名、方法名與變量名進(jìn)行混淆, 并標(biāo)注出了6 個覆蓋項. 圖2 給出了樣例程序的流程圖. 該程序只包含3 條可行的執(zhí)行路徑, 每一條執(zhí)行路徑都具有獨特的覆蓋項, 而這些獨特的覆蓋項(覆蓋項2、覆蓋項4 和覆蓋項5)僅被一條路徑覆蓋, 部分覆蓋項(覆蓋項1、覆蓋項3 和覆蓋項6)至少被2 條執(zhí)行路徑覆蓋,部分覆蓋項(覆蓋項1 和覆蓋項6)被所有的路徑覆蓋. 獨特覆蓋項具有特殊價值, 如果獨特覆蓋項被覆蓋, 所對應(yīng)的路徑必定被執(zhí)行.

        圖1 樣例程序的簡化代碼Fig. 1 Simplified source code of the working example

        圖2 樣例程序的流程圖Fig. 2 Flow chart of the working example

        表1 給出了第一個測試套件, 包含測試用例與覆蓋項的覆蓋信息. 該測試套件包含3 條不冗余的測試用例, 每條用例分別執(zhí)行了不同的路徑. 根據(jù)覆蓋到覆蓋項的測試用例數(shù)量, 能夠判斷該覆蓋項的冗余程度. 對于所有覆蓋項來說: ① 獨特覆蓋項 (不冗余覆蓋項), 指僅被1 條測試用例覆蓋到的覆蓋項, 使用“0”來表示; ② 冗余覆蓋項, 指至少被兩條測試用例覆蓋到的覆蓋項, 使用“1”來表示; ③ 未被覆蓋到的覆蓋項, 指未被任何測試用例覆蓋到的覆蓋項, 使用“#”來表示.

        表1 第一個測試套件的信息Tab. 1 Information about test suite No.1

        對于測試用例來說, 當(dāng)一條測試用例覆蓋了獨特覆蓋項, 那么這條測試用例是不冗余的; 當(dāng)一條測試用例僅覆蓋了冗余覆蓋項, 沒有覆蓋任何獨特覆蓋項, 那么這條測試用例是冗余的.

        分析表1 中數(shù)據(jù)可知, 3 條測試用例都覆蓋到獨特覆蓋項, 因此所有測試用例都是不冗余的.

        表2 給出了第二個測試套件. 該套件在表1 的基礎(chǔ)上, 增加了測試用例4. 測試用例4 與測試用例3 是完全相同的, 從直觀上來說, 這兩條測試用例應(yīng)該是冗余的. 重新統(tǒng)計所有覆蓋項的冗余情況, 可以發(fā)現(xiàn): 覆蓋項5 從獨特覆蓋項變?yōu)槿哂喔采w項, 進(jìn)而導(dǎo)致測試用例3 與測試用例4 都沒有覆蓋任何獨特覆蓋項, 變?yōu)槿哂鄿y試用例.

        表2 第二個測試套件的信息Tab. 2 Information about test suite No.2

        分析表1—2 可知, 覆蓋項的冗余信息能夠反映測試用例的冗余情況. 受此啟發(fā), 本文使用覆蓋率指標(biāo)信息對測試冗余進(jìn)行分析, 從而提出測試冗余的有效量化方法.

        2.2 最佳覆蓋項測試冗余指標(biāo)

        本節(jié)提出最佳覆蓋項測試冗余指標(biāo)MVI, 該指標(biāo)使用覆蓋率信息來衡量測試套件冗余程度. 如圖3 所示, MVI 指標(biāo)分為3 個部分: 覆蓋項冗余、測試用例冗余和測試套件冗余. 本節(jié)詳細(xì)介紹每個部分的計算公式.

        圖3 MVI 冗余指標(biāo)的框架圖Fig. 3 Frame diagram of the MVI redundancy metric

        2.2.1 覆蓋項冗余

        MVI 指標(biāo)基于代碼覆蓋率進(jìn)行計算. 根據(jù)覆蓋項被整個測試套件覆蓋的情況, 將覆蓋項分為多種類型.① 未覆蓋覆蓋項: 不被任何測試用例覆蓋, 不冗余, 不提升覆蓋率; ② 獨特覆蓋項: 僅被一條測試用例覆蓋, 不冗余, 提升覆蓋率; ③ 冗余覆蓋項: 至少被兩條測試用例覆蓋, 存在冗余, 提升覆蓋率.

        在計算覆蓋項冗余時, MVI 指標(biāo)只考慮被測試用例覆蓋到的覆蓋項, 即只考慮“獨特覆蓋項”與“冗余覆蓋項”, 而忽略“未覆蓋覆蓋項”.

        定義1 覆蓋項冗余值:

        覆蓋項冗余值反映覆蓋項的冗余情況, 其計算方式如式(1)所示. 式(1)中:I表示一個覆蓋項,NI表示測試套件中覆蓋了I的測試用例的數(shù)量. 當(dāng)一個覆蓋項的冗余值等于0 時, 表示該覆蓋項僅被1 條測試用例覆蓋到, 是不冗余的; 當(dāng)一個覆蓋項的冗余值大于0 時, 表示該覆蓋項至少被兩條測試用例覆蓋到, 是冗余的. 覆蓋項冗余值雖然不能直觀地反映測試冗余情況, 但是該指標(biāo)能夠用于計算測試用例的冗余指標(biāo)以及測試套件的冗余指標(biāo).

        2.2.2 測試用例冗余

        根據(jù)測試用例對覆蓋項的覆蓋情況, 將測試用例分為多種類型.

        獨特測試用例: 當(dāng)一條測試用例覆蓋到獨特覆蓋項時, 它是獨特的、不冗余的, 這條測試用例對于覆蓋率具有不可替代的貢獻(xiàn); 如果一條獨特測試用例被刪除, 測試套件的整體覆蓋率將下降.

        非獨特測試用例: 當(dāng)一條測試用例無法覆蓋到獨特覆蓋項時, 它是冗余的, 這條測試用例能夠被替代; 如果一條非獨特測試用例被刪除, 并不影響測試套件的整體覆蓋率.

        獨特測試用例是不冗余的, 而非獨特測試用例是冗余的. 對于一條非獨特測試用例, 如果它所覆蓋到的覆蓋項的冗余程度越小, 那么它的不可替代性越強, 更有可能在其他測試用例被削減時變?yōu)楠毺販y試用例. 因此, MVI 指標(biāo)認(rèn)為冗余值更小的覆蓋項具有更高的價值.

        定義2 測試用例冗余值:

        式(2)中:C表示一條測試用例,I表示C所覆蓋到的覆蓋項,RI表示覆蓋項I的冗余值. MVI 指標(biāo)優(yōu)先統(tǒng)計一條測試用例所覆蓋到的所有覆蓋項, 并取覆蓋項冗余值的最小值作為測試用例冗余值. 測試用例冗余值直接反映了每一條測試用例的冗余情況, 能夠指導(dǎo)測試人員對測試用例進(jìn)行篩選、排序,也能夠用于指導(dǎo)科研人員對測試用例削減算法進(jìn)行研究.

        2.2.3 測試套件冗余

        定義3 測試套件冗余值:

        式(3)中:S表示測試套件,C表示S所包含的測試用例,RC表示測試用例C的冗余值. 測試套件冗余值取測試用例冗余值的均值, 該指標(biāo)能夠直觀地顯示出整個測試套件的冗余程度. 對于測試人員來說, 如果一個測試套件的冗余值過大, 則需要考慮對測試套件進(jìn)行削減.

        2.3 有效性分析方法

        針對測試冗余指標(biāo)的有效性, 目前學(xué)術(shù)界沒有較為直觀而有效的驗證方法. 在以往的研究[4-5]中往往將冗余指標(biāo)作為一個中間量, 只對測試用例削減算法的有效性進(jìn)行驗證, 而不對冗余指標(biāo)的有效性進(jìn)行驗證. 對于測試用例削減算法來說, 測試冗余指標(biāo)的有效性是必要的, 因此本文提出推論: 如果測試用例削減算法是有效的, 則該削減算法所使用的測試冗余指標(biāo)必然是有效的.

        根據(jù)以上推論, 本節(jié)在MVI 指標(biāo)的基礎(chǔ)上, 提出了MVIR 測試用例削減算法. 通過驗證MVIR 的有效性, 能夠從側(cè)面驗證MVI 指標(biāo)的有效性.

        2.3.1 MVIR 測試用例削減算法

        為了評價MVI 指標(biāo)的有效性, 本文提出一種基于貪心策略的測試用例削減算法MVIR. MVIR 流程見算法1.

        算法1 MVIR So輸入: 未削減的測試套件 ; 冗余容忍度T輸出: 削減后的測試套件Sr 1: S ←So 2: Do:S 3: 計算 中每條測試用例的冗余值4: Rmax ← S 中測試用例冗余值的最大值5: S ←將 S 中冗余值最大的測試用例剔除Rmax 6: While > T 7: Sr ←S 8: ReturnSr

        MVIR 具有一個額外的輸入?yún)?shù), 稱為冗余容忍度, 記為T. 冗余容忍度的取值必須是非負(fù)整數(shù).MVIR 允許削減后的測試套件中保留一定程度的冗余, 并且通過調(diào)整冗余容忍度來控制所保留的冗余因素多少, 從而獲得更好的測試質(zhì)量. 當(dāng)選取冗余容忍度為0 時, MVIR 能夠保證削減后不存在冗余的測試用例. 隨著冗余容忍度的增大, 所保留的冗余因素將增多.

        MVIR 的流程: ①根據(jù)測試用例冗余值, 將所有測試用例進(jìn)行排序. ②刪除冗余值最大的測試用例. ③對于剩余的測試用例, 判斷是否所有的測試用例冗余值都不大于冗余容忍度. 若不是, 則重復(fù)算法1 中的第1 至第3 步; 若是, 則MVIR 執(zhí)行結(jié)束, 使用剩余的測試用例組成新的測試套件.

        2.3.2 測試冗余指標(biāo)有效性驗證

        根據(jù)測試冗余的定義[5], 如果能夠從測試套件中刪除一部分測試用例, 并且不對測試套件的質(zhì)量造成影響, 那么測試套件中必然存在一定的冗余因素. 因此, 在保證測試質(zhì)量不變或者測試質(zhì)量損耗較低的前提下, 如果能夠從測試套件中刪除越多的測試用例, 則說明測試用例削減算法的效果越好,并且能夠從側(cè)面證實該測試用例削減算法所使用的測試用例冗余指標(biāo)同樣具有較好的效果.

        本文使用變異測試方法對測試套件的質(zhì)量進(jìn)行評估, 該方法被廣泛用于衡量測試套件質(zhì)量[13]. 變異測試方法通過特定的方式對被測程序的源代碼進(jìn)行修改, 從而注入缺陷, 分析測試套件是否能夠有效地檢測出所注入的缺陷, 進(jìn)而對測試套件的質(zhì)量進(jìn)行評估. 每一個被注入缺陷的源代碼版本被稱為變異體, 每個變異體中僅存在一個特定的缺陷. 在對變異體的測試過程中, 如果測試用例的斷言失敗,則說明測試套件能夠“殺死”該變異體. “變異分?jǐn)?shù)”指測試套件能夠殺死的變異體數(shù)量與所有變異體數(shù)量的比值, 變異分?jǐn)?shù)越大, 則說明測試套件的測試質(zhì)量越高.

        對于MVI 指標(biāo)有效性的具體證明過程如下: ①針對同一個測試套件, 選取不同的冗余容忍度, 使用MVIR 進(jìn)行不同程度的削減操作, 得到多個削減測試套件; ②對于被MVIR 削減前后的測試套件,使用變異測試方法計算變異分?jǐn)?shù), 評估“測試質(zhì)量”; ③對于被MVIR 削減前后的測試套件, 統(tǒng)計測試用例數(shù)量變化情況, 評估“削減程度”; ④如果“測試質(zhì)量”與“削減程度”越高, 則證明MVIR 與MVI 指標(biāo)越有效.

        3 實 驗

        3.1 實驗設(shè)置

        3.1.1 被測對象

        在實驗階段使用金融科技軟件下的Bcbip 構(gòu)件進(jìn)行, Bcbip 的主要功能是根據(jù)發(fā)行信息、訂單信息以及配售約束信息等輸入信息, 計算并輸出配售結(jié)果. Bcbip 具有3 個測試接口, 每個測試接口都有一個所對應(yīng)的測試套件, 對于每個測試套件, 由人工方法生成的測試用例數(shù)以及分支覆蓋率信息如表3 所示.

        表3 Bcbip 基本信息Tab. 3 Basic information about Bcbip

        3.1.2 測試套件

        本文使用FinExpert 和FACTS 進(jìn)行實驗. 表4 展示了由人工方法、FinExpert 與FACTS 生成的測試套件中的測試用例數(shù), 圖4 展示了三者的分支覆蓋率信息.

        圖4 由人工方法、FinExpert 和FACTS 得到的分支覆蓋率信息Fig. 4 Branch coverage generated by the manual, FinExpert, and FACTS methods

        表4 由人工方法、FinExpert 和FACTS 生成的測試用例數(shù)Tab. 4 Number of test cases generated by the manual, FinExpert, and FACTS methods

        觀察測試用例數(shù). 由人工方法生成的測試用例數(shù)量最少, 遠(yuǎn)少于兩種自動化生成方法. 由FinExpert 生成的測試用例數(shù)是人為給定的, 為了取得較高的測試質(zhì)量, 對每個測試接口都生成1 000條測試用例. 由FACTS 生成的測試用例數(shù)與測試用例的復(fù)雜程度有關(guān), 對越復(fù)雜的測試接口,FACTS 所生成的測試用例數(shù)越多. FinExpert 和FACTS 所能生成的測試用例數(shù)具有相同的數(shù)量級.

        分析覆蓋率信息. 在3 種方法中, FACTS 對于所有接口均能得到最高的分支覆蓋率; 對于接口api1 和api3, FinExpert 能得到優(yōu)于人工方法的分支覆蓋率; 對于接口api2, 在3 種方法中, FinExpert所得到的分支覆蓋率最低.

        FinExpert 對于接口api2 的測試效果不佳, 其根本原因在于: 接口api2 具有較為復(fù)雜的約束條件,而當(dāng)使用FinExpert 對接口api2 編寫的領(lǐng)域特定知識信息時, 無法滿足一部分約束條件, 進(jìn)而導(dǎo)致部分的測試用例在執(zhí)行時觸發(fā)異常信息, 生成了較多無意義的測試用例. 由于FinExpert 針對接口api2 生成的測試套件存在可用性問題, 因此在實驗結(jié)果的分析階段, 不考慮與其相關(guān)的數(shù)據(jù).

        3.2 冗余指標(biāo)有效性驗證實驗

        冗余指標(biāo)有效性驗證實驗分為兩個部分: 第一部分, 對削減前后生成的測試套件的質(zhì)量進(jìn)行分析;第二部分, 對削減前后生成的測試用例的數(shù)量進(jìn)行分析.

        對于實驗的第一部分, 本文使用PIT[14]變異測試工具對測試套件的質(zhì)量進(jìn)行分析.

        本節(jié)的實驗對MVIR 的冗余容忍度選取了5 個值: 10、5、2、1 和0. 因此, 對于每個給定的接口和測試用例生成方法, 將產(chǎn)生5 個不同的削減測試套件, 以比較不同削減程度下的質(zhì)量差異.

        3.2.1 測試質(zhì)量評估

        圖5 列出了削減后測試套件的變異分?jǐn)?shù). 圖例中的“原始”代表未經(jīng)過MVIR 削減的測試套件,T10、T5、T2、T1和T0分別代表取冗余容忍度為10、5、2、1、0 時的MVIR 削減后所得到的測試套件.

        圖5 削減后測試套件的變異分?jǐn)?shù)Fig. 5 Mutation score of the reduced suite

        為了更直觀地展示測試質(zhì)量在削減前后的差異, 使用式 (4) 對變異分?jǐn)?shù)的相對損失進(jìn)行計算.

        圖6 列出了削減后測試套件的變異分?jǐn)?shù)損失, 即性能損失. 從圖6 中能夠看出, 只有FinExpert(對于接口api2)所得到的性能損失較高, 其余測試套件的性能損失均小于9.20%, 由人工方法生成的測試用例經(jīng)過削減之后, 性能損失都小于5.26%. MVIR 整體上不對測試套件的性能產(chǎn)生較大的影響.

        圖6 削減后測試套件的變異分?jǐn)?shù)損失Fig. 6 Mutation score loss of the reduced suite

        3.2.2 測試用例數(shù)量評估

        表5 列出了所有測試套件經(jīng)過MVIR 削減前后的測試用例數(shù)量, 其中“原始”代表未經(jīng)過MVIR 削減的測試套件,T10、T5、T2、T1和T0分別代表取冗余容忍度為10、5、2、1、0 時MVIR 削減后所得到的測試套件.

        表5 所有測試套件經(jīng)過MVIR 削減前后的測試用例數(shù)Tab. 5 Number of test cases for the MVIR reduced and original test suites

        圖7 展示了削減后的測試套件的測試用例數(shù)量. 分析表5 與圖7 的數(shù)據(jù)可知, 未經(jīng)削減的FinExpert 測試套件和FACTS 測試套件的測試用例數(shù)量范圍為 [820,1804] , 而由人工方法生成的測試用例的數(shù)量范圍為 [10,22] , 數(shù)量相差較大; 但是經(jīng)過削減的FinExpert 的T10、T5、T2、T1和T0的測試用例數(shù)量范圍都為 [2,19] , FACTS 的T2、T1和T0的測試用例數(shù)量范圍都為 [11,23] , 這些削減后的測試套件具有與人工方法生成的測試套件相似的測試用例數(shù)量, 可以認(rèn)為這些削減后的結(jié)果達(dá)到了與人工方法生成的測試用例相同的數(shù)量級.

        圖7 削減后測試套件的測試用例數(shù)Fig. 7 Number of test cases for the reduced suite

        為了更直觀地展示測試用例數(shù)量在削減前后的差異, 使用式 (5) 對測試用例數(shù)量的削減比例進(jìn)行計算.

        式 (5) 中:Sr表示削減后的測試套件,So表示未削減的測試套件,NSo(NSr) 表示測試套件So(Sr) 的測試用例數(shù)量.

        圖8 列出了所有測試套件經(jīng)過MVIR 削減后的測試用例削減比例信息. 分析數(shù)據(jù)可知, 對于FinExpert 和FACTS, 所有測試套件的測試用例削減比例都在89.88%以上; 對于FinExpert 和FACTS 的T0測試套件, 即經(jīng)過MVIR 削減后不包含冗余因素的測試套件, 測試用例削減比例都在98.66%以上. 結(jié)果顯示MVIR 能剔除大部分的冗余測試用例, 同時有效消解了測試套件中的冗余因素.

        圖8 測試套件經(jīng)過MVIR 削減后的測試用例削減比例Fig. 8 Test case reduction ratios for the MVIR reduced suite

        3.2.3 小 結(jié)

        使用MVIR 進(jìn)行測試用例削減, 能夠在測試性能損失較低 (小于9.20%) 的前提下, 達(dá)到較高的測試用例削減比例 (大于89.88%). 該實驗結(jié)果證明MVIR 能夠有效地消解冗余因素, 同時從側(cè)面證明MVI 指標(biāo)能夠有效地反映測試冗余的程度.

        3.3 測試用例生成方法的冗余分析

        本節(jié)使用MVI 指標(biāo)探究測試用例生成方法的冗余情況. 表6 展示了由人工方法、FinExpert 和FACTS 這3 種方法所生成的原始測試套件的冗余值. 由人工方法、FinExpert 和FACTS 所生成的測試套件的平均冗余值分別為5.32、636.94 和336.15, FinExpert 和FACTS 所產(chǎn)生的冗余程度均遠(yuǎn)高于由人工方法所產(chǎn)生的冗余程度. 實驗數(shù)據(jù)表明, FinExpert 和FACTS 這兩種方法在自動化生成測試用例的同時, 引入了較多的冗余因素. 在使用此類自動化測試用例生成方法時, 應(yīng)該對測試冗余問題予以重視.

        表6 人工方法、FinExpert 和FACTS 的原始測試套件的測試套件冗余Tab. 6 Suite redundancy for the original test suites of manual, FinExpert and FACTS

        表7 展示了所有測試套件經(jīng)過MVIR 削減前后的冗余值. 分析數(shù)據(jù)可知, 當(dāng)冗余容忍度小于等于10 時, FinExpert 和FACTS 所生成的測試套件經(jīng)過MVIR 削減后都能夠獲得與未經(jīng)過削減的由人工方法生成的測試套件相當(dāng)?shù)娜哂嘀? 由此可見, 將測試用例生成方法和測試用例削減算法相結(jié)合, 能夠自動化地生成高質(zhì)量、低冗余的測試套件.

        表7 所有測試套件經(jīng)過MVIR 削減前后的測試套件冗余Tab. 7 Suite redundancy for the original and reduced test suites

        3.4 冗余容忍度的選取

        在實際應(yīng)用中, 冗余容忍度的選擇直接影響MVIR 的實際效果: 減小冗余容忍度, 能夠提高測試套件的削減比例, 但是將會降低測試質(zhì)量; 合適的冗余容忍度能夠?qū)ο鳒p比例與測試質(zhì)量進(jìn)行有效的權(quán)衡.

        在選取冗余容忍度時, 本文建議遵守以下原則.

        (1) 如果測試環(huán)境允許進(jìn)行變異測試, 并且能夠接受變異測試的時間成本, 則建議使用變異測試方法來指導(dǎo)冗余容忍度的取值. 在保證測試質(zhì)量的前提下, 應(yīng)選取盡可能小的冗余容忍度. 使用測試套件中測試用例的數(shù)量作為冗余容忍度的初始值, 并且不斷減小冗余容忍度, 使用MVIR 對測試套件進(jìn)行削減, 同時使用變異測試方法計算削減后測試套件的變異分?jǐn)?shù). 在理想情況下, 當(dāng)冗余容忍度從初始值不斷減小時, 冗余程度較高的測試用例被優(yōu)先剔除, 不會降低測試質(zhì)量, 因此變異分?jǐn)?shù)不發(fā)生改變; 當(dāng)冗余容忍度減小到一定程度時, 所保留的測試用例已經(jīng)具備足夠的測試質(zhì)量, 如果繼續(xù)減小冗余容忍度將會導(dǎo)致測試質(zhì)量下降, 這種情況下的冗余容忍度是最佳的.

        (2) 如果原則 (1) 并不適用, 被測程序本身具有由人工方法生成的測試套件, 并且該測試套件具備一定的參考價值, 則建議使用該測試套件來指導(dǎo)冗余容忍度的取值, 保證削減后的測試套件與人工測試套件具有較為接近的冗余程度. 首先使用MVI 指標(biāo)計算人工測試套件的冗余值, 將該冗余值作為冗余容忍度的初始值, 并且不斷增大冗余容忍度, 同時使用MVIR 對測試套件進(jìn)行削減. 當(dāng)削減后的測試套件的冗余值與人工測試套件冗余值大致相等時, 則所對應(yīng)的冗余容忍度的取值是較為合適的.

        (3) 如果原則(1) 與 (2) 均不適用, 則建議使用經(jīng)驗值來確定冗余容忍度. 在實際的軟件項目中,往往難以使用變異測試方法, 并且不能保證被測程序已具有合適的人工測試套件. 在這種情況下, 只能依據(jù)其他軟件項目的經(jīng)驗來指導(dǎo)冗余容忍度的取值. 針對相關(guān)項目或者開源項目, 使用原則 (1) 或者原則(2) 計算冗余容忍度, 計算所得到的冗余容忍度也是具有參考意義的. 本文根據(jù)實驗部分的數(shù)據(jù), 給出冗余容忍度的經(jīng)驗值: FinExpert 的冗余容忍度建議設(shè)置為10, FACTS 的冗余容忍度建議設(shè)置為5.

        4 有效性威脅

        外部有效性. 實驗部分所使用到的被測程序只有1 個, 數(shù)量較少, 可能缺乏代表性. 本文的工作主要關(guān)注金融科技領(lǐng)域的軟件測試, 希望通過選取實際的工業(yè)軟件進(jìn)行實驗, 從而提高外部有效性. 然而, 由于金融科技領(lǐng)域的軟件對于軟件開發(fā)流程的安全性具有較高要求, 導(dǎo)致實驗中能夠獲取到的樣本程序數(shù)量非常有限. 期望在后期的工作中能夠從合作機構(gòu)獲取更多的工業(yè)軟件, 進(jìn)一步檢驗本文所提出方法的實際效果, 獲取更加豐富的實驗數(shù)據(jù).

        內(nèi)部有效性. 第一, 測試冗余的概念較為抽象, 本文對抽象的測試冗余指標(biāo)進(jìn)行量化, 可能與業(yè)界的已有認(rèn)知之間存在一定的偏差. 第二, 本文推斷MVIR 的有效性能夠充分說明MVI 指標(biāo)的有效性,但是無法保證不存在例外情況.

        5 結(jié) 論

        本文針對金融科技領(lǐng)域的軟件測試, 提出了一種基于最佳覆蓋項的冗余評價指標(biāo)MVI, 用于對測試套件的冗余因素進(jìn)行量化分析. 為了驗證MVI 指標(biāo)的有效性, 本文在MVI 指標(biāo)的基礎(chǔ)上提出了MVIR 測試用例削減方法. 實驗部分使用了金融科技領(lǐng)域的軟件進(jìn)行探究, 結(jié)果顯示MVIR 能夠在測試性能損失較低的前提下, 達(dá)到較好的削減效果. 實驗結(jié)果從側(cè)面證明了MVI 指標(biāo)能夠有效反映測試套件中的冗余因素. 最后, 使用MVI 指標(biāo)分析金融科技領(lǐng)域的自動化測試用例生成方法:FinExpert 和FACTS, 發(fā)現(xiàn)這兩種方法均會引入較多的冗余因素, 但是如果使用MVI 指標(biāo)來優(yōu)化這兩種方法, 能夠有效地緩解冗余情況, 生成高質(zhì)量的測試套件.

        猜你喜歡
        容忍度測試用例套件
        基于維修費用的關(guān)鍵部套件分析
        基于SmartUnit的安全通信系統(tǒng)單元測試用例自動生成
        “龍吟套件”創(chuàng)作感悟
        山東陶瓷(2020年5期)2020-03-19 01:35:36
        基于混合遺傳算法的回歸測試用例集最小化研究
        工業(yè)照明超頻三天棚燈套件改造工程
        中國照明(2016年5期)2016-06-15 20:30:13
        模糊容忍度與專門用途英語閱讀水平相關(guān)性研究
        新課程(下)(2016年5期)2016-03-02 03:40:33
        基于依賴結(jié)構(gòu)的測試用例優(yōu)先級技術(shù)
        口語產(chǎn)出質(zhì)量與模糊容忍度的相關(guān)研究
        新疆少數(shù)民族大學(xué)生模糊容忍度調(diào)查研究
        CSRmesh開發(fā)套件加速物聯(lián)網(wǎng)產(chǎn)品開發(fā)
        亚洲综合久久一本久道| 九九99国产精品视频| 学生妹亚洲一区二区| 亚洲乱码国产乱码精华 | 伊人久久大香线蕉综合网站| 日韩欧美人妻一区二区三区| 免费a级毛片无码| 亚洲色欲久久久久综合网| 免费人成无码大片在线观看| 亚洲香蕉视频| 毛片毛片免费看| 国模无码视频专区一区| 欧美成人免费看片一区| 久久精品国产亚洲黑森林| 无码一区二区三区网站| 白色白色视频在线观看| 亚洲六月丁香色婷婷综合久久 | 久久在一区二区三区视频免费观看| 精品国产亚洲级一区二区 | 国产亚洲第一精品| 人人狠狠综合久久亚洲婷婷| 久久无码字幕中文久久无码| 国内精品视频一区二区三区八戒| 久久综合香蕉国产蜜臀av| 国产精品一区二区在线观看| 免费99精品国产自在在线| 人妻少妇精品视频一区二区三区 | 亚洲天堂av一区二区三区不卡| 亚洲不卡av一区二区三区四区 | 妞干网中文字幕| 日本高清一区二区在线观看| 中文字幕日韩一区二区不卡 | 一本本月无码-| 天码人妻一区二区三区| 夜夜高潮夜夜爽夜夜爱爱| 精品国产av 无码一区二区三区| 国产成人av一区二区三区在线| 无码AV高潮喷水无码专区线| 久久精品国产亚洲AV成人公司 | 国产亚洲精品aaaaaaa片| 亚洲红怡院|