999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

軟件覆蓋測試技術研究

2012-05-03 09:13:36尹黨輝于佳偉
中國測試 2012年1期
關鍵詞:程序

尹黨輝,于佳偉,李 虎

(總后后勤科學研究所,北京 100071)

0 引 言

覆蓋測試,也稱為邏輯覆蓋測試,是軟件白盒測試的主要方法[1-3]。在一個軟件產品中,如果存在某些從來沒有被執(zhí)行過的代碼,那么這個軟件的質量是不可靠的[4],在從來沒有被執(zhí)行過的代碼中可能存在著使整個軟件崩潰的BUG而沒有被發(fā)現(xiàn)[5]。

覆蓋測試就是讓軟件的所有代碼都被執(zhí)行過至少一次,力爭在測試過程中發(fā)現(xiàn)那些非常隱秘的BUG,從一定程度上確保軟件的可靠性。

衡量覆蓋測試好壞的標準就是覆蓋率,覆蓋率越高,則認為測試所達到的效果越好。足夠高的覆蓋率可以增強對被測軟件的信心[6]。覆蓋率代表測試過程中被執(zhí)行的程序對象的百分比,其計算公式為

覆蓋率=(已執(zhí)行的程序對象的數(shù)量/程序中可執(zhí)行程序對象的總數(shù))×100%

1 軟件覆蓋測試

1.1 語句覆蓋

語句覆蓋(statement coverage,SC)的含義是:選擇足夠多的測試數(shù)據(jù),使被測程序中每條語句至少執(zhí)行一次。語句覆蓋報告每個可執(zhí)行語句是否都被執(zhí)行過。這種測試準則的主要優(yōu)點是可以直接被用于對目標代碼進行測試,不要求對源代碼進行處理;語句覆蓋的主要缺點是它對某些控制機構不敏感。

可以通過語句所在文件的行號來唯一標識一條語句,語句是以行為單位的可以執(zhí)行代碼。如下面的代碼所示,如果第1行的代碼被執(zhí)行,則認為該語句被覆蓋。

語句覆蓋是衡量一個測試所達到的覆蓋率的最基本也是最簡單的方法。語句覆蓋率代表測試過程中被執(zhí)行的語句在被測程序中所占的百分比,其計算公式為

語句覆蓋率=(至少執(zhí)行了一次的語句總數(shù)/可執(zhí)行的語句總數(shù))×100%

語句覆蓋是最弱的邏輯覆蓋準則,即便語句覆蓋率達到了100%,也不能完全保證被測程序100%的被覆蓋。還是以上面一行程序為例,程序中如果if語句中的條件表達式不成立,則“j++”不可能被執(zhí)行,但在語句覆蓋來看,這一行語句是被覆蓋了的。

1.2 判定覆蓋

比語句覆蓋稍強的覆蓋標準是判定覆蓋(decision coverage,DC)。判定覆蓋的含義是:設計足夠多的測試用例,使得程序中的每個判定至少都獲得一次“真值”或“假值”,因此判定覆蓋又稱為分支覆蓋。該測試準則只報告控制結構中被測試的布爾表達式為真或假。整個布爾表達式看作為一個trueor-false謂詞,不管他是否含有邏輯“and”或邏輯“or”。它的缺點是該測試值忽略布爾表達式內的分支,特別是當布爾表達式簡化時。

從程序運行流程的角度來看,程序有順序、分支和循環(huán)3種基本流程,從一定意義上說循環(huán)也是分支的一種。最典型的分支就是if語句,以下面的程序為例:

由于if語句,使得程序流程產生了兩個明顯的分支,一支是“j++;”,另一支是“k++;”。

以上面的程序為例,共有如下4個分支:1→2;3→4;2→5;4→5。判定覆蓋是衡量一個測試所達到的覆蓋率的比較可靠的方法,如果一個程序的所有分支都被執(zhí)行過一遍,那么可以認為程序中所有的代碼毫無遺漏的被執(zhí)行過一遍。判定覆蓋率代表被執(zhí)行的分支在被測程序的所有分支中所占的百分比,其計算公式為

判定覆蓋率=(至少執(zhí)行了一次的分支總數(shù)/可執(zhí)行的分支總數(shù))×100%

雖然判定覆蓋是覆蓋測試中比較可靠的方法,但是判定覆蓋的代價很高,達到很高的覆蓋率非常困難;不過分支覆蓋有一個優(yōu)點是可以實現(xiàn)對go_to,switch語句以及函數(shù)調用等復雜程序邏輯的覆蓋。

1.3 條件覆蓋

在設計程序中,一個判定語句往往是由多個條件組合而成的復合判定。這樣,為了更徹底地實現(xiàn)邏輯覆蓋,可以采用條件覆蓋(condition coverage,CC)的標準。條件覆蓋的含義是:構造一組測試用例,使得每一判定語句中每個邏輯條件的可能值至少滿足一次。條件覆蓋報告每個布爾子表達式的真假結果,這些子表達式是由邏輯and和邏輯or組成的,條件覆蓋測試相互獨立的子表達式。此測試準則值類似于判定覆蓋,但對控制流更敏感。然而,完全的條件覆蓋并不保證完全的判定覆蓋。

1.4 條件判定組合覆蓋

條件判定組合覆蓋(condition decision coverage,CDC)的含義是:設計足夠的測試用例,使得判定中每個條件的所有可能(真/假)至少出現(xiàn)一次,并且每個判定本身的判定結果(真/假)也至少出現(xiàn)一次。

1.5 多條件覆蓋

多條件覆蓋(multiple condition coverage,MCC)也稱條件組合覆蓋,它的含義是:設計足夠多的測試用例,使得每個判定中條件的可能組合都至少出現(xiàn)一次。顯然滿足多條件覆蓋的測試用例是一定滿足判定覆蓋、條件覆蓋和條件判定組合覆蓋的。當一個程序中判定語句較多時,其條件取值的組合數(shù)目是非常大的。

1.6 修正條件/判定覆蓋

修正條件判定覆蓋(modified condition/decision coverage,MCDC)是由歐美的航空/航天制造廠商和使用單位聯(lián)合制定的“航空運輸和裝備系統(tǒng)軟件認證標準”,目前在國外的國防、航空航天領域應用廣泛。這個覆蓋度量需要足夠的測試用例來確定各個條件能夠影響到包含的判定結果。它要求滿足兩個條件:首先,每一個程序模塊的入口和出口點都要考慮至少要被調用一次,每個程序的判定到所有可能的結果值要至少轉換一次;其次,程序的判定被分解為通過邏輯操作符(and、or)連接的bool條件,每個條件對于判定的結果是獨立的。此測試準則要求用足夠的測試用例,驗證每個可能影響判斷的條件。

修正條件判定覆蓋可以發(fā)現(xiàn)3類錯誤:“與”、“或”被誤寫;一個變量被誤寫為它的否定;一個表達式被誤寫為它的否定。

例如,A and(B or C)是一個判定,A、B、C 均為條件,其全部的條件組合見表1。

表1 條件組合表1)

測試用例對(1,5),(2,6),(3,7)都可表明條件 A獨立地影響判定結果;測試用例對(2,4)可表明條件B獨立地影響判定結果;測試用例(3,4)可表明條件C獨立地影響判定結果;因此,測試用例集(1,2,3,4,5)可滿足上述判定的修正的條件判定覆蓋率。

1.7 路徑覆蓋

路徑覆蓋(path coverage,PC)報告函數(shù)中每個可能的路徑是否走過。一個路徑是唯一的一個分支序列,從函數(shù)入口到退出。由于循環(huán)體引入很大的路徑個數(shù),此測試準則僅考慮有限循環(huán)的可能性。此測試準則的大量變體與循環(huán)是有關的。邊界-內部路徑測試考慮循環(huán)的兩種可能性:零次循環(huán)和多于零次的循環(huán)。對于do-while循環(huán),兩種可能性是一次循環(huán)和多于一次循環(huán)。

從以上介紹可看出,這7種覆蓋策略的嚴格順序如圖1所示[7]。

圖1 覆蓋策略的嚴格順序

2 C++test中覆蓋測試

本測試的測試環(huán)境是C++test 9.0,加載的是Virtual C++6.0工程,測試用例由C++test測試工具自動生成。主要驗證了C++test對判定“A and(B or C)”的邏輯覆蓋測試。

程序源碼如圖2,覆蓋測試結果如圖3。在圖3中,C++test對語句覆蓋、判定覆蓋、條件覆蓋、修正條件1判定覆蓋、路徑覆蓋進行了統(tǒng)計分析。

3 結束語

在現(xiàn)實應用中,通常一個工程的源程序都遠比本文所列舉的源程序復雜的多,要實現(xiàn)上面任一個覆蓋準則的100%的覆蓋率都是不可行的[8]。通常都用覆蓋測試工具來自動實施,即測試人員只負責測試用例的編寫與執(zhí)行,測試工具自動記錄程序的覆蓋執(zhí)行范圍并給出覆蓋率,這就大大降低了測試人員的勞動強度。測試由于其本身的復雜性仍然是非常繁瑣的。現(xiàn)在的一些商品化工具還提供一些案例的自動生成,可以進一步降低測試人員的勞動強度。

圖2 程序源碼

圖3 覆蓋測試結果

[1]Jorgensen P C.軟件測試[M].2版.韓柯,杜旭濤,譯.北京:機械工業(yè)出版社,2003.

[2]鄭人杰.計算機軟件測試技術[M].北京:清華大學出版社,1992.

[3]尹黨輝.嵌入式軟件測試技術研究[J].中國測試技術,2011(8):74-77.

[4]朱少民.軟件質量保證和管理[M].北京:清華大學出版社,2007.

[5]姚礪,束永安,葉澄清.面向對象軟件覆蓋量度的研究和軟件測試工具的實現(xiàn)[J].計算機研究與發(fā)展,2002,39(8):1017-1022.

[6]黎連生,王華,李淑春.軟件測試與測試技術[M].北京:清華大學出版社,2009.

[7]陳麗蓉,熊光澤,羅蕾,等.嵌入式軟件的覆蓋測試[J].單片機與嵌入式系統(tǒng)應用,2002(11):8-11.

[8]柳純錄.軟件評測師教程[M].北京:清華大學出版社,2005.

猜你喜歡
程序
給Windows添加程序快速切換欄
電腦愛好者(2020年6期)2020-05-26 09:27:33
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
基于VMM的程序行為異常檢測
偵查實驗批準程序初探
我國刑事速裁程序的構建
創(chuàng)衛(wèi)暗訪程序有待改進
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 欧美成人在线免费| av在线手机播放| 国产成人1024精品下载| 99热这里只有免费国产精品 | 最新午夜男女福利片视频| 91蜜芽尤物福利在线观看| 日韩激情成人| 自拍偷拍欧美日韩| 九色国产在线| 久热中文字幕在线| 欧美日韩国产一级| 国产97视频在线观看| 久久夜色精品国产嚕嚕亚洲av| 亚洲午夜福利精品无码不卡| 毛片大全免费观看| 一本大道东京热无码av| 国产国模一区二区三区四区| 在线观看无码a∨| 99视频在线免费观看| 日韩国产综合精选| 亚洲人成网站日本片| 亚洲日本中文字幕天堂网| 制服丝袜在线视频香蕉| 久久一本精品久久久ー99| 五月激激激综合网色播免费| 亚洲中文精品久久久久久不卡| 宅男噜噜噜66国产在线观看| 亚洲第一中文字幕| 亚洲精品桃花岛av在线| 欧美日韩va| 日韩国产高清无码| 亚洲国产日韩视频观看| 精品福利视频导航| 精品人妻AV区| 永久免费无码成人网站| 欧美一区日韩一区中文字幕页| 日本一区二区三区精品国产| 亚洲欧美成人在线视频| 先锋资源久久| 欧美国产日本高清不卡| 亚洲日韩精品无码专区97| 日本免费a视频| 国产99在线观看| 四虎影视8848永久精品| 日韩a级毛片| 国产乱人免费视频| 国产精品视频第一专区| 国产凹凸视频在线观看| 国产一区在线视频观看| 久久大香伊蕉在人线观看热2| 91精品伊人久久大香线蕉| 91国内在线观看| 啪啪国产视频| 国产欧美专区在线观看| 国产91精品调教在线播放| 波多野结衣一区二区三区四区| 伊人蕉久影院| 国产精品乱偷免费视频| 亚洲第一在线播放| 亚洲美女操| 亚洲视频免| 国产激情无码一区二区免费 | 久久一级电影| 麻豆精选在线| 国产在线98福利播放视频免费| 亚洲综合专区| 午夜精品区| 成人伊人色一区二区三区| 久久中文字幕av不卡一区二区| 国产精品久久精品| 久久香蕉国产线看观看式| 亚洲天堂视频网站| 人妻无码AⅤ中文字| 日韩人妻无码制服丝袜视频| 精品伊人久久大香线蕉网站| 国产在线视频二区| 91在线高清视频| 国产精品亚洲五月天高清| 久久国产精品波多野结衣| 日韩欧美成人高清在线观看| www中文字幕在线观看| 日韩 欧美 国产 精品 综合|