McCabe在多項(xiàng)目工程中的應(yīng)用及覆蓋率統(tǒng)計(jì)技巧
摘要:McCabe軟件測試工具常常被測試人員用來測試單一項(xiàng)目工程的軟件系統(tǒng),然而隨著軟件工程的發(fā)展,多項(xiàng)目工程的大型系統(tǒng)軟件陸續(xù)出現(xiàn)。那么如何利用現(xiàn)有的McCabe軟件測試工具解決多項(xiàng)目工程中的邏輯測試呢?本文詳細(xì)介紹McCabe軟件測試工具在多項(xiàng)目工程中的應(yīng)用及覆蓋率統(tǒng)計(jì)技巧,供讀者參考與交流。
本文引用地址:http://cafeforensic.com/article/140183.htm1 McCabe軟件測試工具簡介
McCabe IQ是美國McCabe Software公司的軟件質(zhì)量管理解決方案,為用戶提供軟件質(zhì)量度量、軟件結(jié)構(gòu)分析、動(dòng)態(tài)結(jié)構(gòu)化測試的全面支持。McCabe IQ的功能可以分為質(zhì)量度量、覆蓋率測試、數(shù)據(jù)流分析、變更分析、冗余代碼分析和企業(yè)級報(bào)告等。
McCabe是一個(gè)完全圖形化的工具,可以提供如下圖形報(bào)告:
· 模塊調(diào)用關(guān)系圖:用紅黃綠顏色標(biāo)識出模塊的復(fù)雜度的高低,對于軟件的結(jié)構(gòu)和復(fù)雜程度一目了然。
· 模塊控制流圖:有助于了解軟件模塊的內(nèi)部流程,發(fā)現(xiàn)隱藏的危險(xiǎn)路徑。
· 散點(diǎn)圖/KV圖/柱狀圖:綜合分析軟件整體的質(zhì)量分布情況,有助于了解軟件質(zhì)量情況,和測試工作量評估。
圖 1?1-該資料來源于中國評測
圖 1?2-該資料來源于中國評測
McCabe軟件測試工具在邏輯動(dòng)態(tài)測試時(shí),前提是要對代碼進(jìn)行插裝。然而在實(shí)際工作中,由于大型軟件常常是由多個(gè)項(xiàng)目工程構(gòu)成,所以針對多項(xiàng)目工程的插裝一直是眾多軟件測試人員困惑的問題。下面我們將詳細(xì)分析如何在多項(xiàng)目工程中巧妙使用McCabe軟件測試工具。
2 McCabe在多項(xiàng)目工程中的應(yīng)用
由于 McCabe 在分析程序之前先要調(diào)用用戶環(huán)境中的編譯器對程序進(jìn)行預(yù)處理,在按照用戶指定的插裝選項(xiàng)對被測程序文件插裝后,才能獲得足夠的程序信息,完成正確的分析。
按照以下步驟完成創(chuàng)建工程操作:
1. 在 File 目錄下選擇New Project。創(chuàng)建新項(xiàng)目工程。
2. 給新建的工程命名,并選擇工程將要存放的目錄。
3. 選擇所用的語言以及語言的擴(kuò)展。
4. 源代碼選擇對話框有兩個(gè)界面。這是因?yàn)槲覀兪菍Χ囗?xiàng)目工程的插裝,所以選擇I’ll supply the infor選項(xiàng),點(diǎn)擊“下一步”。如圖2.1。
圖 2?1-該資料來源于中國評測
5. 進(jìn)入源文件選擇界面,如圖2.2,點(diǎn)擊“Add/Remove Files”。Add/Remove Files 對話窗口有三種操作模式,進(jìn)入源代碼目錄存放文件夾中,點(diǎn)擊“Add Hierarchy”,這樣所有文件都會被添加進(jìn)項(xiàng)目。如圖2.3。
圖 2?2-該資料來源于中國評測
圖 2?3-該資料來源于中國評測
6. 依次點(diǎn)擊“下一步”,對項(xiàng)目進(jìn)行設(shè)置,完成項(xiàng)目插裝步驟。
7. 在完成了項(xiàng)目的插裝后,會在項(xiàng)目指定的目錄中生成McCabe對本項(xiàng)目工程的說明文件test_Pathvec.cs。這個(gè)文件必須加載在插裝后的代碼文件中,這樣才能對工程項(xiàng)目進(jìn)行調(diào)試。
8. 將插裝完成后的文件拷貝至源文件目錄下,同名覆蓋源文件。啟動(dòng)源文件中的解決方案,如圖2.4。
圖 2?4-該資料來源于中國評測
9. 在現(xiàn)有的解決方案中新建一個(gè)項(xiàng)目,命名為“cabe”,并將先前的test_Pathvec.cs文件添加進(jìn)來。在原有的工程項(xiàng)目中添加引用cabe工程。如圖2.5。
圖 2?5-該資料來源于中國評測
10. 啟動(dòng)項(xiàng)目調(diào)試,生成輸出文件,多工程項(xiàng)目文件的插裝工作完成。測試完成后,將項(xiàng)目輸出文件導(dǎo)入McCabe中,就可以進(jìn)行代碼覆蓋率統(tǒng)計(jì)工作了。
3 McCabe軟件測試覆蓋率統(tǒng)計(jì)技巧
McCabe 的動(dòng)態(tài)測試不但適合于宿主機(jī)系統(tǒng),也適合于各種嵌入式系統(tǒng)環(huán)境下運(yùn)行,當(dāng)被測軟件動(dòng)態(tài)運(yùn)行的時(shí)候,McCabe 分析生成的追蹤信息,得到覆蓋率信息,McCabe 可以提供的覆蓋率類型有:集成覆蓋率、路徑覆蓋率、分支覆蓋率、語句覆蓋率、類覆蓋率、布爾覆蓋率(MC/DC)、數(shù)據(jù)覆蓋率和調(diào)用對覆蓋率等。
覆蓋率的信息最直觀的查看方式就是在模塊調(diào)用圖上用不同的顏色標(biāo)識出來,基于McCabe度量的理論,可以提供給用戶強(qiáng)大的路徑分析路徑覆蓋率,適合于安全關(guān)鍵軟件的嚴(yán)格測試。覆蓋率的信息以切片(Slice)的方式詳細(xì)的報(bào)告給用戶,用戶可以使用McCabe的切片直接的邏輯運(yùn)算發(fā)現(xiàn)被測軟件的業(yè)務(wù)規(guī)律。
然而在覆蓋率統(tǒng)計(jì)時(shí),我們常常發(fā)現(xiàn)無論選擇什么樣的測試用例,總有一些分支無法覆蓋。下面就對常見無法覆蓋的分支詳細(xì)分析。
1. 只有if分支,無else分支
這是最常見無法覆蓋的情況之一。當(dāng)if判斷條件存在重復(fù)判斷時(shí),往往出現(xiàn)else無法覆蓋的情況。如下所示:
if (a > 1)
{
if (a > 0)
{
a = a + 1;
}
else return;
}
else return;
在上面這個(gè)簡單的例子中我們發(fā)現(xiàn),在大于1的情況下,是永遠(yuǎn)大于0 的,所以第一個(gè)else是無法覆蓋的。
2. if 及else if 已經(jīng)包含了所有的可能
同樣還是看這段代碼舉例,如下所示:
if (a > 0)
{
a = a + 1;
}
else if (a <= 0)
{
a = a - 1;
}
else return;
我們發(fā)現(xiàn)if和else if已經(jīng)把大于、小于和等于所有的可能包括其中了,所以最后一個(gè)else也是無法覆蓋的。
3. switch case已經(jīng)包含了所有的可能,無default分支
在使用枚舉類型變量時(shí),通過switch語句判斷類型。這時(shí)往往已經(jīng)列出了所有可能的case分支,這樣的話default分支就無法覆蓋。如下所示:
switch(a.GetType)
{
case int;
case float;
default return;
}
由于case分支已經(jīng)列出了a變量的所有屬性,所以default分支就無法覆蓋。
4 總結(jié)
McCabe在輔助測試人員進(jìn)行測試時(shí),可以為用戶提供各種靜態(tài)分析結(jié)果和覆蓋率統(tǒng)計(jì)分析。本文主要從實(shí)際工作角度出發(fā),為大家提供多項(xiàng)目工程下McCabe軟件測試工具解決方案。通過上述方法,巧妙的利用原項(xiàng)目工程解決方案,不改動(dòng)文件目錄結(jié)構(gòu),解決大型系統(tǒng)軟件中多項(xiàng)目工程無法同時(shí)插裝的問題,從而進(jìn)行覆蓋率統(tǒng)計(jì)工作。掌握了覆蓋率統(tǒng)計(jì)中各種統(tǒng)計(jì)技巧,我們就可以為用戶解釋,覆蓋率為何總是無法滿足用戶需求的缺陷,為軟件測試工作提供了有力的保障。工具的使用只是輔助性的,一個(gè)軟件的可靠與否還是需要測試人員進(jìn)行測試后,結(jié)合工具的結(jié)果和理性的分析,從而得出一個(gè)軟件真正的評判結(jié)果和質(zhì)量度量。
評論