軟件測試技術(shù)-10白盒測試邏輯覆蓋_第1頁
軟件測試技術(shù)-10白盒測試邏輯覆蓋_第2頁
軟件測試技術(shù)-10白盒測試邏輯覆蓋_第3頁
軟件測試技術(shù)-10白盒測試邏輯覆蓋_第4頁
軟件測試技術(shù)-10白盒測試邏輯覆蓋_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 白盒測試方法邏輯覆蓋法測試用例測試用例由測試輸入數(shù)據(jù)以及與之對應(yīng)的輸測試用例由測試輸入數(shù)據(jù)以及與之對應(yīng)的輸出結(jié)果組成。出結(jié)果組成。測試用例設(shè)計的好壞直接決定了測試的效果測試用例設(shè)計的好壞直接決定了測試的效果和結(jié)果。所以說在軟件測試活動中最關(guān)鍵的和結(jié)果。所以說在軟件測試活動中最關(guān)鍵的步驟就是設(shè)計有效的測試用例。步驟就是設(shè)計有效的測試用例。測試用例可以針對黑盒測試設(shè)計用例,也可測試用例可以針對黑盒測試設(shè)計用例,也可以針對白盒測試設(shè)計用例,我們今天開始講以針對白盒測試設(shè)計用例,我們今天開始講針對白盒測試的用例設(shè)計方法。針對白盒測試的用例設(shè)計方法。 白盒測試方法為什么要進行白盒測試?為什么要進行白盒

2、測試? 如果所有軟件錯誤的根源都可以追溯到某個唯一原因,那么問如果所有軟件錯誤的根源都可以追溯到某個唯一原因,那么問題就簡單了。然而,事實上一個題就簡單了。然而,事實上一個bug 常常是由多個因素共同導(dǎo)致的,常常是由多個因素共同導(dǎo)致的,如下圖所示。如下圖所示。白盒測試方法(續(xù))程序結(jié)構(gòu)分析;程序結(jié)構(gòu)分析;邏輯覆蓋;邏輯覆蓋;基本路徑測試;基本路徑測試;白盒測試根據(jù)程序的控制結(jié)構(gòu)設(shè)計導(dǎo)出測試用例,白盒測試根據(jù)程序的控制結(jié)構(gòu)設(shè)計導(dǎo)出測試用例,主要用于軟件程序的驗證。主要用于軟件程序的驗證。需要全面了解程序內(nèi)部的邏輯結(jié)構(gòu),對所有邏輯需要全面了解程序內(nèi)部的邏輯結(jié)構(gòu),對所有邏輯路徑進行測試,是一種窮舉路

3、徑的測試方法。路徑進行測試,是一種窮舉路徑的測試方法。窮舉路徑仍然存在遺憾窮舉路徑測試法無法檢查出程序本身窮舉路徑測試法無法檢查出程序本身是否違反了設(shè)計規(guī)范,即程序是否是是否違反了設(shè)計規(guī)范,即程序是否是一個錯誤的程序;一個錯誤的程序;窮舉路徑測試不可能查出程序因為遺窮舉路徑測試不可能查出程序因為遺漏路徑而出錯;漏路徑而出錯;窮舉路徑測試發(fā)現(xiàn)不了一些與數(shù)據(jù)相窮舉路徑測試發(fā)現(xiàn)不了一些與數(shù)據(jù)相關(guān)的錯誤;關(guān)的錯誤;白盒測試原則保證一個模塊中的所有獨立路徑至少保證一個模塊中的所有獨立路徑至少被測試一次;被測試一次;所有邏輯值均需測試真(所有邏輯值均需測試真(True)和假)和假(False)兩種情況;)

4、兩種情況;檢查程序的內(nèi)部數(shù)據(jù)結(jié)構(gòu),保證其結(jié)檢查程序的內(nèi)部數(shù)據(jù)結(jié)構(gòu),保證其結(jié)構(gòu)的有效性;構(gòu)的有效性;在取值上、下邊界,即可操作范圍內(nèi)在取值上、下邊界,即可操作范圍內(nèi)運行所有循環(huán)運行所有循環(huán).白盒測試方法(續(xù))白盒測試主要是檢查程序的內(nèi)部結(jié)構(gòu)、邏輯、白盒測試主要是檢查程序的內(nèi)部結(jié)構(gòu)、邏輯、循環(huán)和路徑。常用測試用例設(shè)計方法有:循環(huán)和路徑。常用測試用例設(shè)計方法有:邏輯覆蓋法(邏輯驅(qū)動測試)邏輯覆蓋法(邏輯驅(qū)動測試)基本路徑測試方法基本路徑測試方法覆蓋測試主要是測試覆蓋率,以程序內(nèi)在邏輯結(jié)主要是測試覆蓋率,以程序內(nèi)在邏輯結(jié)構(gòu)為基礎(chǔ)的測試。包括以下構(gòu)為基礎(chǔ)的測試。包括以下6種類型:種類型:語句覆蓋語句覆蓋

5、判定覆蓋判定覆蓋條件覆蓋條件覆蓋判定判定-條件覆蓋條件覆蓋條件組合覆蓋條件組合覆蓋修正修正-判定條件覆蓋判定條件覆蓋邏輯覆蓋法int function1(int a,int b,int c)int x;x=0;if(a&(b|c)x=1;return x;1、語句覆蓋(Statement Coverage)原理:如果語句中有錯誤,僅靠觀察不執(zhí)行可能發(fā)現(xiàn)不了在測試時,首先設(shè)計若干個測試用例,然后運行被測程序,使程序中的每個可執(zhí)行語句至少執(zhí)行一次 若干個 - 盡量少 語句覆蓋、程序段覆蓋、程序塊覆蓋語句覆蓋率語句覆蓋率l已執(zhí)行的可執(zhí)行語句占程序中可執(zhí)行語句總數(shù)的百分比復(fù)雜的程序不可能達到語

6、句的完全覆蓋語句覆蓋率越高越好語句覆蓋測試用例 達到語句覆蓋100%的測試用例 A = 1 B = 1 C = 1未達到語句覆蓋100%的測試用例 A = 0 B = 1 C = 3語句覆蓋的優(yōu)點檢查所有語句結(jié)構(gòu)簡單的代碼的測試效果較好容易實現(xiàn)自動測試代碼覆蓋率高 如果是程序塊覆蓋,則不涉及程序塊中的源代碼 語句覆蓋不能檢查出的錯誤邏輯運算(&、|)錯誤 判定的第一個運算符“&”錯寫成“|”,或第二個運算符“|”錯寫成“&”,這時使用上述的測試用例仍然可以達到100%的語句覆蓋。語句覆蓋不能檢查出的錯誤循環(huán)語句錯誤l循環(huán)次數(shù)錯誤l跳出循環(huán)條件錯誤語句覆蓋不能檢查出的錯誤

7、循環(huán)語句例子for(i=0;i3) statement;語句覆蓋率的問題能達到很高的語句覆蓋率語句覆蓋率看似很高,卻有嚴重缺陷 if(x!=1) statements; ; else statement; 99句1句測試用例x = 2語句覆蓋率99%50%的分支沒有達到2、判定覆蓋(Decision Coverage)比語句覆蓋稍強的覆蓋標準是判定覆蓋。判定覆蓋的含義是:設(shè)計足夠多的測試用例,使程序中的每個判定至少都獲得一次“真值”或“假值”。除了雙值判定語句外,還有多值判定語句,如case語句,因此判定覆蓋更一般的含義是:使得每一個判定獲得每一種可能的結(jié)果至少一次。16352789410構(gòu)造

8、測試用例如下可實現(xiàn)判定覆蓋標準la=T,b=T,c=T;la=F,b=F,c=F;不僅滿足了判定覆蓋還滿足了語句覆蓋,因此比語句覆蓋稍強。但,仍然無法發(fā)現(xiàn)程序段中存在的邏輯判定錯誤。3、條件覆蓋(Condition Coverage)在設(shè)計程序中,一個判定語句是由多個條件組合而成的復(fù)合判定,判定(a)&(b|c)包含了三個條件:a,b和c。為了更徹底的實現(xiàn)邏輯覆蓋,可以采用條件覆蓋。條件覆蓋的含義是:構(gòu)造一組測試用例,使得每一判定語句中每個邏輯條件的可能值至少滿足一次。測試用例如下:la=F,b=T,c=Fla=T,b=F,c=T仔細分析可發(fā)現(xiàn),該用例在滿足條件覆蓋的同時把判定的兩個分

9、支也覆蓋了,這樣是否能說達到了條件覆蓋也就必然實現(xiàn)了判定覆蓋呢?la=F,b=T,c=Tla=T,b=F,c=F上述用例滿足條件覆蓋的但并未滿足判定覆蓋,為解決這一矛盾,需要多條件和分支兼顧4、判定/條件覆蓋(CDC)含義:設(shè)計足夠的測試用例,使得判定中每個條件的所有可能(真/假)至少出現(xiàn)一次,并且每個判定本身的判定結(jié)果(真/假)也至少出現(xiàn)一次。測試用例如下:la=T,b=T,c=Tla=F,b=F,c=F但,若把邏輯運算符“&”錯寫成“|”或第二個運算符“|”錯寫成“&”,該用例仍然無法發(fā)現(xiàn)上述邏輯錯誤5、組合條件覆蓋(MCC)含義:設(shè)計足夠的測試用例,使得每個判定中條件的各

10、種可能組合都至少出現(xiàn)一次。顯然滿足組合條件覆蓋的測試用例是一定滿足判定覆蓋、條件覆蓋和判定/條件覆蓋的。序號abca&(b|c)1TTTT2TTFT3TFTT4TFFF5FTTF6FTFF7FFTF8FFFF判定語句中3個邏輯條件,每個邏輯條件有2種可能取值,共238種可能組合。6、修正條件判定覆蓋(MCDC)修正條件判定覆蓋是由歐美的航空修正條件判定覆蓋是由歐美的航空/航天制造廠商和使航天制造廠商和使用單位聯(lián)合制定的用單位聯(lián)合制定的“航空運輸和裝備系統(tǒng)軟件認證標航空運輸和裝備系統(tǒng)軟件認證標準準”,目前在國外的國防、航空航天領(lǐng)域應(yīng)用廣泛。,目前在國外的國防、航空航天領(lǐng)域應(yīng)用廣泛。有資料

11、表明,波音有資料表明,波音777整體設(shè)計費用的整體設(shè)計費用的25%都花在了軟都花在了軟件的件的MC/DC測試上。測試上。含義:需要足夠的測試用例來確定各個條件能夠影響到含義:需要足夠的測試用例來確定各個條件能夠影響到包含的判定的結(jié)果,即要求滿足兩個條件:包含的判定的結(jié)果,即要求滿足兩個條件:l每一個程序模塊的入口和出口點都要考慮至少要被調(diào)用每一個程序模塊的入口和出口點都要考慮至少要被調(diào)用一次,每個程序的判定到所有可能的結(jié)果值要至少轉(zhuǎn)換一次,每個程序的判定到所有可能的結(jié)果值要至少轉(zhuǎn)換一次;一次;l程序的判定被分解為通過邏輯操作符程序的判定被分解為通過邏輯操作符(&,|)連接的邏輯連接的邏輯條件,每個條件對于判定的結(jié)果值是獨立的。條件,每個條件對于判定的結(jié)果值是獨立的。序號abca&(b|c)abc1TTTT52TTFT643

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論