15 軟件測(cè)試技術(shù)_第1頁
15 軟件測(cè)試技術(shù)_第2頁
15 軟件測(cè)試技術(shù)_第3頁
15 軟件測(cè)試技術(shù)_第4頁
15 軟件測(cè)試技術(shù)_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 軟件工程 第十五講 軟件測(cè)試技術(shù) 上堂課的問題:軟件交付客戶之前,是否需要保證軟件徹底沒有錯(cuò)誤?為什么測(cè)試只能檢測(cè)錯(cuò)誤的存在,而不是錯(cuò)誤的不存在?答:不需要保證。因?yàn)楦颈WC不了,也無需保證。軟件錯(cuò)誤是多種因素綜合的結(jié)果,和運(yùn)行環(huán)境有關(guān),使用習(xí)慣有關(guān),只能保證當(dāng)前缺省情況下,出錯(cuò)的概率符合要求。 因?yàn)橐獧z測(cè)錯(cuò)誤不存在必須用窮舉法,而測(cè)試的基本規(guī)則中的第五條就說明了窮舉不可能。設(shè)計(jì)測(cè)試方案是測(cè)試階段的關(guān)鍵技術(shù)問題。所謂測(cè)試方案包括具體的測(cè)試目的(例如,預(yù)定要測(cè)試的具體功能),應(yīng)該輸入的測(cè)試數(shù)據(jù)和預(yù)期的結(jié)果。通常又把測(cè)試數(shù)據(jù)和預(yù)期的輸出結(jié)果稱為測(cè)試用例。最困難的問題是設(shè)計(jì)測(cè)試用的輸入數(shù)據(jù)。7.6

2、 白盒測(cè)試技術(shù)設(shè)計(jì)測(cè)試方案的基本目標(biāo)是,確定一組最可能發(fā)現(xiàn)某個(gè)錯(cuò)誤或某類錯(cuò)誤的測(cè)試數(shù)據(jù)。已經(jīng)研究出許多設(shè)計(jì)測(cè)試數(shù)據(jù)的技術(shù),這些技術(shù)各有優(yōu)缺點(diǎn),沒有哪一種是最好的,更沒有哪一種可以代替其余所有技術(shù);同一種技術(shù)在不同的應(yīng)用場(chǎng)合效果可能相差很大,因此,通常需要聯(lián)合使用多種設(shè)計(jì)測(cè)試數(shù)據(jù)的技術(shù)。有選擇地執(zhí)行程序中某些最有代表性的通路是對(duì)窮盡測(cè)試的惟一可行的替代辦法。所謂邏輯覆蓋是對(duì)一系列測(cè)試過程的總稱,這組測(cè)試過程逐漸進(jìn)行越來越完整的通路測(cè)試。7.6.1 邏輯覆蓋1. 語句覆蓋語句覆蓋是選擇足夠多的測(cè)試數(shù)據(jù),使被測(cè)程序中每個(gè)語句至少執(zhí)行一次。例如,圖7.5所示的程序流程圖描繪了一個(gè)被測(cè)模塊的處理算法。為

3、了使每個(gè)語句都執(zhí)行一次,程序的執(zhí)行路徑應(yīng)該是sacbed,為此只需要輸入下面的測(cè)試數(shù)據(jù)(實(shí)際上X可以是任意實(shí)數(shù)):A=2,B=0,X=4圖7.5 被測(cè)試模塊的流程圖語句覆蓋對(duì)程序的邏輯覆蓋很少。此外,語句覆蓋只關(guān)心判定表達(dá)式的值,而沒有分別測(cè)試判定表達(dá)式中每個(gè)條件取不同值時(shí)的情況。綜上所述,可以看出語句覆蓋是很弱的邏輯覆蓋標(biāo)準(zhǔn),為了更充分地測(cè)試程序,可以采用下述的邏輯覆蓋標(biāo)準(zhǔn)。2. 判定覆蓋判定覆蓋又叫分支覆蓋,它的含義是,不僅每個(gè)語句必須至少執(zhí)行一次,而且每個(gè)判定的每種可能的結(jié)果都應(yīng)該至少執(zhí)行一次,也就是每個(gè)判定的每個(gè)分支都至少執(zhí)行一次。判定覆蓋比語句覆蓋強(qiáng),但是對(duì)程序邏輯的覆蓋程度仍然不高

4、,例如,上面的測(cè)試數(shù)據(jù)只覆蓋了程序全部路徑的一半。3. 條件覆蓋條件覆蓋的含義是,不僅每個(gè)語句至少執(zhí)行一次,而且使判定表達(dá)式中的每個(gè)條件都取到各種可能的結(jié)果。條件覆蓋通常比判定覆蓋強(qiáng),因?yàn)樗古卸ū磉_(dá)式中每個(gè)條件都取到了兩個(gè)不同的結(jié)果,判定覆蓋卻只關(guān)心整個(gè)判定表達(dá)式的值。4. 判定/條件覆蓋既然判定覆蓋不一定包含條件覆蓋,條件覆蓋也不一定包含判定覆蓋,自然會(huì)提出一種能同時(shí)滿足這兩種覆蓋標(biāo)準(zhǔn)的邏輯覆蓋,這就是判定/條件覆蓋。它的含義是,選取足夠多的測(cè)試數(shù)據(jù),使得判定表達(dá)式中的每個(gè)條件都取到各種可能的值,而且每個(gè)判定表達(dá)式也都取到各種可能的結(jié)果。有時(shí)判定/條件覆蓋也并不比條件覆蓋更強(qiáng)。5. 條件組

5、合覆蓋條件組合覆蓋是更強(qiáng)的邏輯覆蓋標(biāo)準(zhǔn),它要求選取足夠多的測(cè)試數(shù)據(jù),使得每個(gè)判定表達(dá)式中條件的各種可能組合都至少出現(xiàn)一次。顯然,滿足條件組合覆蓋標(biāo)準(zhǔn)的測(cè)試數(shù)據(jù),也一定滿足判定覆蓋、條件覆蓋和判定/條件覆蓋標(biāo)準(zhǔn)。因此,條件組合覆蓋是前述幾種覆蓋標(biāo)準(zhǔn)中最強(qiáng)的。但是,滿足條件組合覆蓋標(biāo)準(zhǔn)的測(cè)試數(shù)據(jù)并不一定能使程序中的每條路徑都執(zhí)行到。6. 點(diǎn)覆蓋圖論中點(diǎn)覆蓋的概念定義如下:如果連通圖G的子圖G是連通的,而且包含G的所有結(jié)點(diǎn),則稱G是G的點(diǎn)覆蓋。在第6.5節(jié)中已經(jīng)講述了從程序流程圖導(dǎo)出流圖的方法。在正常情況下流圖是連通的有向圖。滿足點(diǎn)覆蓋標(biāo)準(zhǔn)要求選取足夠多的測(cè)試數(shù)據(jù),使得程序執(zhí)行路徑至少經(jīng)過流圖的每個(gè)

6、結(jié)點(diǎn)一次,由于流圖的每個(gè)結(jié)點(diǎn)與一條或多條語句相對(duì)應(yīng),顯然,點(diǎn)覆蓋標(biāo)準(zhǔn)和語句覆蓋標(biāo)準(zhǔn)是相同的。7. 邊覆蓋圖論中邊覆蓋的定義是:如果連通圖G的子圖G是連通的,而且包含G的所有邊,則稱G是G的邊覆蓋。為了滿足邊覆蓋的測(cè)試標(biāo)準(zhǔn),要求選取足夠多測(cè)試數(shù)據(jù),使得程序執(zhí)行路徑至少經(jīng)過流圖中每條邊一次。通常邊覆蓋和判定覆蓋是一致的。8. 路徑覆蓋路徑覆蓋的含義是,選取足夠多測(cè)試數(shù)據(jù),使程序的每條可能路徑都至少執(zhí)行一次(如果程序圖中有環(huán),則要求每個(gè)環(huán)至少經(jīng)過一次)。1. 基本路徑測(cè)試首先計(jì)算程序的環(huán)形復(fù)雜度,并用該復(fù)雜度為指南定義執(zhí)行路徑的基本集合,從該基本集合導(dǎo)出的測(cè)試用例可以保證程序中的每條語句至少執(zhí)行一次

7、,而且每個(gè)條件在執(zhí)行時(shí)都將分別取真、假兩種值。使用基本路徑測(cè)試技術(shù)設(shè)計(jì)測(cè)試用例的步驟如下:第一步,根據(jù)過程設(shè)計(jì)結(jié)果畫出相應(yīng)的流圖。7.6.2 控制結(jié)構(gòu)測(cè)試?yán)纾瑸榱擞没韭窂綔y(cè)試技術(shù)測(cè)試下列的用PDL描述的求平均值過程,首先畫出圖7.6所示的流圖。注意,為了正確地畫出流圖,我們把被映射為流圖結(jié)點(diǎn)的PDL語句編了序號(hào)。PROCEDURE average;/* 這個(gè)過程計(jì)算不超過100個(gè)在規(guī)定值域內(nèi)的有效數(shù)字的平均值;同時(shí)計(jì)算有效數(shù)字的總和及個(gè)數(shù)。*/ INTERFACE RETURNS average, total.input, total.valid; INTERFACE ACCEPTS va

8、lue, minimum, maximum; TYPE value1100 IS SCALAR ARRAY; TYPE average, total.input, total.valid; minimum,maximum, sum IS SCALAR; TYPE i IS INTEGER;1: i=1;total.input=total.valid=0;sum=0;2:DO WHILE valuei -9993: AND total.input=minimum6: AND valuei011:THEN average=sum/total.valid;12:ELSE average=-999;1

9、3:ENDIF END average第二步,計(jì)算流圖的環(huán)形復(fù)雜度。環(huán)形復(fù)雜度定量度量程序的邏輯復(fù)雜性。第三步,確定線性獨(dú)立路徑的基本集合。圖7.6 求平均值過程的流圖第四步,設(shè)計(jì)可強(qiáng)制執(zhí)行基本集合中每條路徑的測(cè)試用例。應(yīng)該選取測(cè)試數(shù)據(jù)使得在測(cè)試每條路徑時(shí)都適當(dāng)?shù)卦O(shè)置好了各個(gè)判定結(jié)點(diǎn)的條件。在測(cè)試過程中,執(zhí)行每個(gè)測(cè)試用例并把實(shí)際輸出結(jié)果與預(yù)期結(jié)果相比較。一旦執(zhí)行完所有測(cè)試用例,就可以確保程序中所有語句都至少被執(zhí)行了一次,而且每個(gè)條件都分別取過true值和false值。2. 條件測(cè)試用條件測(cè)試技術(shù)設(shè)計(jì)出的測(cè)試用例,能夠檢查程序模塊中包含的邏輯條件。一個(gè)簡(jiǎn)單條件是一個(gè)布爾變量或一個(gè)關(guān)系表達(dá)式,在布

10、爾變量或關(guān)系表達(dá)式之前還可能有一個(gè)NOT算符。關(guān)系表達(dá)式的形式如下:E1E2其中,E1和E2是算術(shù)表達(dá)式,而是下列算符之一:“”或“”。復(fù)合條件由兩個(gè)或多個(gè)簡(jiǎn)單條件、布爾算符和括弧組成。布爾算符有OR(“|”),AND(“&”)和NOT。不包含關(guān)系表達(dá)式的條件稱為布爾表達(dá)式。條件成分的類型包括布爾算符、布爾變量、布爾括?。ɡㄗ『?jiǎn)單條件或復(fù)合條件)、關(guān)系算符及算術(shù)表達(dá)式。如果條件不正確,則至少條件的一個(gè)成分不正確。因此,條件錯(cuò)誤的類型如下:布爾算符錯(cuò)(布爾算符不正確,遺漏布爾算符或有多余的布爾算符)布爾變量錯(cuò)布爾括弧錯(cuò)關(guān)系算符錯(cuò)算術(shù)表達(dá)式錯(cuò)條件測(cè)試方法著重測(cè)試程序中的每個(gè)條件。兩個(gè)優(yōu)點(diǎn): 容易度

11、量條件的測(cè)試覆蓋率; 程序內(nèi)條件的測(cè)試覆蓋率可指導(dǎo)附加測(cè)試的設(shè)計(jì)。條件測(cè)試的目的不僅是檢測(cè)程序條件中的錯(cuò)誤,而且是檢測(cè)程序中的其他錯(cuò)誤。3. 循環(huán)測(cè)試循環(huán)是絕大多數(shù)軟件算法的基礎(chǔ),但是,在測(cè)試軟件時(shí)卻往往未對(duì)循環(huán)結(jié)構(gòu)進(jìn)行足夠的測(cè)試。循環(huán)測(cè)試是一種白盒測(cè)試技術(shù),它專注于測(cè)試循環(huán)結(jié)構(gòu)的有效性。在結(jié)構(gòu)化的程序中通常只有3種循環(huán),即簡(jiǎn)單循環(huán)、串接循環(huán)和嵌套循環(huán),如圖7.7所示。下面分別討論這3種循環(huán)的測(cè)試方法。(1) 簡(jiǎn)單循環(huán)。應(yīng)該使用下列測(cè)試集來測(cè)試簡(jiǎn)單循環(huán),其中n是允許通過循環(huán)的最大次數(shù)。跳過循環(huán)。只通過循環(huán)一次。圖7.7 3種循環(huán)通過循環(huán)兩次。通過循環(huán)m次,其中m=0)calculate_square_root( );誤寫成if(x0)calculate_square_root( );為了推測(cè)出軟件中可能有的錯(cuò)誤,應(yīng)該仔細(xì)研究分析模型和設(shè)計(jì)模型,而且在很大程度上要依靠測(cè)試人員的經(jīng)驗(yàn)和直覺。如果推測(cè)得比較準(zhǔn)確,則使用基于故障的測(cè)試方法能夠用相當(dāng)?shù)偷墓ぷ髁堪l(fā)現(xiàn)大量錯(cuò)誤;反之,如果推測(cè)不準(zhǔn),則這種方法的效果并不比隨機(jī)測(cè)試技術(shù)的效果好。調(diào)試是在測(cè)試發(fā)現(xiàn)錯(cuò)誤之后排除錯(cuò)誤的過程。雖然調(diào)試應(yīng)該而且可以是一個(gè)有序過程,但是,目前它在很大程度上仍然是一項(xiàng)技巧。調(diào)試就是把癥狀和原因聯(lián)系起來的尚未被人深入認(rèn)識(shí)的智力過程。7.8 調(diào)試測(cè)試和調(diào)試的區(qū)別:測(cè)試是從一個(gè)側(cè)面證明程序員“失敗”;調(diào)試是為了證

溫馨提示

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

評(píng)論

0/150

提交評(píng)論