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

下載本文檔

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

文檔簡介

第3章軟件測試的方法和技術(shù)3.1軟件測試方法概述3.2白盒測試3.3黑盒測試3.4測試用例設(shè)計(jì)軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第1頁!3.1軟件測試方法概述軟件測試的種類大致可分為人工測試和基于計(jì)算機(jī)的測試。而基于計(jì)算機(jī)的測試又可分為黑盒測試和白盒測試。1.黑盒測試黑盒測試是根據(jù)軟件產(chǎn)品的功能設(shè)計(jì)規(guī)格,在計(jì)算機(jī)上進(jìn)行測試,以證實(shí)每個(gè)已經(jīng)實(shí)現(xiàn)的功能是否符合要求。黑盒測試意味著測試要在軟件的接口處進(jìn)行。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第2頁!2.白盒測試白盒測試是根據(jù)軟件產(chǎn)品的內(nèi)部工作過程,在計(jì)算機(jī)上進(jìn)行測試,以證實(shí)每種內(nèi)部操作是否符合設(shè)計(jì)規(guī)格要求,所有內(nèi)部成分是否已經(jīng)過檢查。白盒測試把測試對象看做一個(gè)打開的盒子,允許測試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息,設(shè)計(jì)或選擇測試用例,對程序所有邏輯路徑進(jìn)行測試。通過在不同點(diǎn)檢查程序的狀態(tài),確定實(shí)際的狀態(tài)是否與預(yù)期的狀態(tài)一致。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第3頁!3.2白盒測試白盒測試也稱為結(jié)構(gòu)測試或邏輯驅(qū)動(dòng)測試,前提是知道產(chǎn)品內(nèi)部工作過程,可通過測試來檢測產(chǎn)品內(nèi)部動(dòng)作是否按照規(guī)格說明書的規(guī)定正常進(jìn)行,按照程序內(nèi)部的結(jié)構(gòu)測試程序,檢驗(yàn)程序中的每條通路是否都能夠按預(yù)定要求正確工作,而不管產(chǎn)品的功能,主要用于軟件驗(yàn)證。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第4頁!白盒測試的動(dòng)態(tài)測試要根據(jù)程序的控制結(jié)構(gòu)設(shè)計(jì)測試用例,其原則是:(1)保證一個(gè)模塊中的所有獨(dú)立路徑至少被使用一次;(2)對所有邏輯值均需測試true和false;(3)在上下邊界及可操作范圍內(nèi)運(yùn)行所有循環(huán);(4)檢查內(nèi)部數(shù)據(jù)結(jié)構(gòu)以確保其有效性。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第5頁!如果我們想要了解一個(gè)程序在某次運(yùn)行中所有可執(zhí)行語句被覆蓋的情況,或是每個(gè)語句的實(shí)際執(zhí)行次數(shù),最好的辦法是利用插樁技術(shù)。這里僅以計(jì)算整數(shù)X和整數(shù)Y的最大公約數(shù)程序?yàn)槔?,說明插樁方法的要點(diǎn)。圖3-3給出了這一程序的流程圖。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第6頁!設(shè)計(jì)插樁程序時(shí)需要考慮的問題包括:①探測哪些信息;②在程序的什么部位設(shè)置探測點(diǎn);③需要設(shè)置多少個(gè)探測點(diǎn)。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第7頁!圖3-5計(jì)算非負(fù)數(shù)之商的迭代程序軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第8頁!3.2.2邏輯覆蓋邏輯覆蓋是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的設(shè)計(jì)測試用例的技術(shù),是通過對程序邏輯結(jié)構(gòu)的遍歷實(shí)現(xiàn)程序的覆蓋,它是一系列測試過程的總稱,這組測試過程逐漸進(jìn)行越來越完整的通路測試。這一方法要求測試人員對程序的邏輯結(jié)構(gòu)有清楚的了解,甚至要能掌握源程序的所有細(xì)節(jié)。它屬于動(dòng)態(tài)測試。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第9頁!圖3-7參考例子流程圖軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第10頁!1.語句覆蓋為了暴露程序中的錯(cuò)誤,程序中的每條語句至少應(yīng)該執(zhí)行一次。所以,語句覆蓋的含義是:選擇足夠多的測試數(shù)據(jù),使被測程序中每條語句至少執(zhí)行一次。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第11頁!3.條件覆蓋在設(shè)計(jì)程序中,一個(gè)判定語句是由多個(gè)條件組合而成的復(fù)合判定。條件覆蓋的含義是:構(gòu)造一組測試用例,使得每一判定語句中每個(gè)邏輯條件的可能值至少滿足一次。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第12頁!5.多條件覆蓋多條件覆蓋也稱為條件組合覆蓋,它的含義是:設(shè)計(jì)足夠的測試用例,使得每個(gè)判定中條件的各種可能組合都至少出現(xiàn)一次。顯然滿足多條件覆蓋的測試用例是一定滿足判定覆蓋、條件覆蓋和條件判定組合覆蓋的。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第13頁!7.測試覆蓋準(zhǔn)則(1)Foster的ESTCA覆蓋準(zhǔn)則前面所介紹的邏輯覆蓋其出發(fā)點(diǎn)似乎是合理的。所謂“覆蓋”,就是想要做到全面而無遺漏。但是,事實(shí)表明,它并不能真的做到無遺漏。K.A.Foster從測試工作實(shí)踐的教訓(xùn)出發(fā),吸收了計(jì)算機(jī)硬件的測試原理,提出了一種經(jīng)驗(yàn)型的測試覆蓋準(zhǔn)則。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第14頁!3.2.3基本路徑測試上節(jié)的例子是個(gè)比較簡單的程序段,只有兩條路徑。但在實(shí)際問題中,即使一個(gè)不太復(fù)雜的程序,其路徑的組合都是一個(gè)龐大的數(shù)字。如果把覆蓋的路徑數(shù)壓縮到一定限度內(nèi),例如,程序中的循環(huán)體只執(zhí)行零次和一次,就成為基本路徑測試。設(shè)計(jì)出的測試用例要保證在測試中程序的每一條可執(zhí)行語句至少執(zhí)行一次。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第15頁!圖3-8控制流圖的圖形符號軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第16頁!2.計(jì)算程序環(huán)路復(fù)雜性進(jìn)行程序的基本路徑測試時(shí),程序的環(huán)路復(fù)雜性給出了程序基本路徑集合中的獨(dú)立路徑條數(shù),這是確保程序中每個(gè)可執(zhí)行語句至少執(zhí)行一次所必須的測試用例數(shù)目的上界。所謂獨(dú)立路徑,是指包括若干未曾處理的語句或條件的一條路徑。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第17頁!3.基本路徑測試法步驟基本路徑測試法適用于模塊的詳細(xì)設(shè)計(jì)及源程序,其主要步驟如下。①以詳細(xì)設(shè)計(jì)或源代碼作為基礎(chǔ),導(dǎo)出程序的控制流圖。②計(jì)算得到的控制流圖G的環(huán)路復(fù)雜性V(G)。③確定線性無關(guān)的路徑的基本集。④生成測試用例,確保基本路徑集中每條路徑的執(zhí)行。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第18頁!通常采用以下一些方法進(jìn)行源程序的靜態(tài)分析。(1)生成各種引用表①標(biāo)號交叉引用表②變量交叉引用表③子程序(宏、函數(shù))引用表④等價(jià)表⑤常數(shù)表軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第19頁!2.人工測試靜態(tài)分析中進(jìn)行人工測試的主要方法有桌前檢查、代碼審查和走查。經(jīng)驗(yàn)表明,使用這種方法能夠有效地發(fā)現(xiàn)30%~70%的邏輯設(shè)計(jì)和編碼錯(cuò)誤。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第20頁!(2)代碼審查代碼審查是由若干程序員和測試員組成一個(gè)審查小組,通過閱讀、討論和爭議,對程序進(jìn)行靜態(tài)分析的過程。代碼審查分兩步。步,小組負(fù)責(zé)人提前把設(shè)計(jì)規(guī)格說明書、控制流程圖、程序文本及有關(guān)要求、規(guī)范等分發(fā)給小組成員,作為審查的依據(jù)。小組成員在充分閱讀這些材料后,進(jìn)入審查的第二步,召開程序?qū)彶闀?huì)。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第21頁!3.2.5其他白盒測試方法簡介1.域測試域測試是一種基于程序結(jié)構(gòu)的測試方法。域測試正是在分析輸入域的基礎(chǔ)上,選擇適當(dāng)?shù)臏y試點(diǎn)以后進(jìn)行測試的。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第22頁!3.Z路徑覆蓋分析程序中的路徑是指檢驗(yàn)程序從入口開始,執(zhí)行過程中經(jīng)歷的各個(gè)語句,直到出口。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第23頁!最后,歸納一下白盒測試中各種測試方法的應(yīng)用策略。在白盒測試中,可以使用各種測試方法的綜合策略如下。(1)在測試中,應(yīng)盡量先使用工具進(jìn)行靜態(tài)結(jié)構(gòu)分析。(2)測試中可采取先靜態(tài)后動(dòng)態(tài)的組合方式:先進(jìn)行靜態(tài)結(jié)構(gòu)分析、代碼檢查,再進(jìn)行覆蓋率測試。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第24頁!(5)在不同的測試節(jié)點(diǎn),測試的側(cè)重點(diǎn)不同:在單元測試階段,以代碼檢查、邏輯覆蓋為主;在集成測試階段,需要增加靜態(tài)結(jié)構(gòu)分析等;在系統(tǒng)測試階段,應(yīng)根據(jù)黑盒測試的結(jié)果,采取相應(yīng)的白盒測試。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第25頁!3.3.1等價(jià)類劃分法等價(jià)類劃分是一種典型的黑盒測試方法。使用這一方法時(shí),完全不考慮程序的內(nèi)部結(jié)構(gòu),只依據(jù)程序的規(guī)格說明來設(shè)計(jì)測試用例。由于不可能用所有可以輸入的數(shù)據(jù)來測試程序,而只能從全部可供輸入的數(shù)據(jù)中選擇一個(gè)自己進(jìn)行測試。如何選擇適當(dāng)?shù)淖蛹?,使其盡可能多地發(fā)現(xiàn)錯(cuò)誤,解決的辦法之一就是等價(jià)類劃分。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第26頁!等價(jià)類的劃分有以下兩種不同的情況。①有效等價(jià)類②無效等價(jià)類軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第27頁!在確立了等價(jià)類之后,建立等價(jià)類表,列出所有劃分出的等價(jià)類,如表3-6所示。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第28頁!3.3.2邊界值分析法人們從長期的測試工作經(jīng)驗(yàn)得知,大量的錯(cuò)誤是發(fā)生在輸入或輸出范圍的邊界上,而不是在輸入范圍的內(nèi)部。因此針對各種邊界情況設(shè)計(jì)測試用例,可以查出更多的錯(cuò)誤。使用邊界值分析方法設(shè)計(jì)測試用例,首先應(yīng)確定邊界情況。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第29頁!③根據(jù)規(guī)格說明的每一個(gè)輸出條件,使用規(guī)則1。④根據(jù)規(guī)格說明的每一個(gè)輸出條件,使用規(guī)則2。⑤如果程序的規(guī)格說明給出的輸入域或輸出域是有序集合(如有序表、順序文件等),則應(yīng)選取集合的個(gè)和最后一個(gè)元素作為測試用例。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第30頁!3.3.3錯(cuò)誤推測法人們也可以靠經(jīng)驗(yàn)和直覺推測程序中可能存在的各種錯(cuò)誤,從而有針對性地編寫檢查這些錯(cuò)誤的例子。這就是錯(cuò)誤推測法。錯(cuò)誤推測法的基本想法是:列舉出程序中所有可能有的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特殊情況,根據(jù)它們選擇測試用例。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第31頁!②分析軟件規(guī)格說明描述中的語義,找出原因與結(jié)果之間、原因與原因之間對應(yīng)的關(guān)系,根據(jù)這些關(guān)系,畫出因果圖。③標(biāo)明約束條件。由于語法或環(huán)境的限制,有些原因和結(jié)果的組合情況是不可能出現(xiàn)的。為表明這些特定的情況,在因果圖上使用若干標(biāo)準(zhǔn)的符號標(biāo)明約束條件。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第32頁!圖3-12因果圖的基本符號軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第33頁!以下是各種測試方法選擇的綜合策略,可供讀者在實(shí)際應(yīng)用過程中參考。①首先進(jìn)行等價(jià)類劃分,包括輸入條件和輸出條件的等價(jià)劃分,將無限測試變成有限測試,這是減少工作量和提高測試效率最有效的方法。②在任何情況下都必須使用邊界值分析方法。經(jīng)驗(yàn)表明,用這種方法設(shè)計(jì)出的測試用例發(fā)現(xiàn)程序錯(cuò)誤的能力最強(qiáng)。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第34頁!⑥對于參數(shù)配置類的軟件,要用正交試驗(yàn)法選擇較少的組合方式達(dá)到最佳效果。⑦功能圖法也是很好的測試用例設(shè)計(jì)方法,我們可以通過不同時(shí)期條件的有效性設(shè)計(jì)不同的測試數(shù)據(jù)。⑧對于業(yè)務(wù)流清晰的系統(tǒng),可以利用場景法貫穿整個(gè)測試案例過程,在案例中綜合使用各種測試方法。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第35頁!用例場景用來描述流經(jīng)用例的路徑,從用例開始到結(jié)束遍歷這條路徑上所有基本流和備選流。1.基本流和備選流

如圖3-14所示,圖中經(jīng)過用例的每條路徑都用基本流和備選流來表示,直黑線表示基本流,是經(jīng)過用例的最簡單的路徑。備選流用不同的色彩表示,一個(gè)備選流可能從基本流開始,在某個(gè)特定條件下執(zhí)行,然后重新加入基本流中(如備選流1和3);也可能起源于另一個(gè)備選流(如備選流2),或者終止用例而不再重新加入到某個(gè)流(如備選流2和4)。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第36頁!2.ATM例子(1)例子描述圖3-15所示是ATM例子的流程示意圖。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第37頁!(2)場景設(shè)計(jì)表3-8所示是生成的場景。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第38頁!軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第39頁!軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第40頁!如果程序在這種情況下不能正常運(yùn)行,而且這種問題會(huì)重復(fù)發(fā)生,那就表示已經(jīng)測出軟件有缺陷,這時(shí)候就必須將這個(gè)問題標(biāo)示出來,并且輸入到問題跟蹤系統(tǒng)內(nèi),通知軟件開發(fā)人員。軟件開發(fā)人員接到通知后,將問題修改完成于下一個(gè)測試版本內(nèi),測試工程師取得新的測試版本后,必須利用同一個(gè)測試用例來測試這個(gè)問題,確保該問題已修改完成。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第41頁!使用測試用例的好處主要體現(xiàn)在以下幾個(gè)方面。①在開始實(shí)施測試之前設(shè)計(jì)好測試用例,可以避免盲目測試并提高測試效率。②測試用例的使用令軟件測試的實(shí)施重點(diǎn)突出、目的明確。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第42頁!測試用例主要有如下幾種。①功能測試用例。包含功能測試、健壯性測試、可靠性測試。②性能測試用例。包含性能測試、壓力測試、強(qiáng)度測試。③集成測試用例。包含接口測試、健壯性測試、可靠性測試。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第43頁!軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第44頁!3.4.2測試用例的設(shè)計(jì)步驟測試按照階段分為單元測試、集成測試以及系統(tǒng)測試。而各階段都有相應(yīng)的測試用例。這里,以單元測試的用例設(shè)計(jì)為依據(jù)來說明測試用例的設(shè)計(jì)步驟。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第45頁!③該測試用例實(shí)際測試的代碼,用被測單元的功能和測試用例設(shè)計(jì)中使用的分析來說明,如單元中哪一個(gè)決策條件被測試。④測試用例的期望輸出結(jié)果。測試用例的期望輸出結(jié)果總是應(yīng)該在測試進(jìn)行之前在測試說明中定義。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第46頁!(2)步驟2:正面測試(PositiveTesting)這個(gè)階段適合的技術(shù)有:①設(shè)計(jì)說明導(dǎo)出的測試;②等價(jià)類分析;③狀態(tài)轉(zhuǎn)換測試。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第47頁!(4)步驟4:需求中其他測試特性用例設(shè)計(jì)這個(gè)階段適合的技術(shù)有:設(shè)計(jì)說明導(dǎo)出的測試。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第48頁!(6)步驟6:測試執(zhí)行(7)步驟7:完善代碼覆蓋這個(gè)階段適合的技術(shù)有:①分支測試;②條件測試;③設(shè)計(jì)定義——試驗(yàn)測試;④狀態(tài)轉(zhuǎn)換測試。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第49頁!在整個(gè)單元測試設(shè)計(jì)中,主要的輸入應(yīng)該是被測單元的設(shè)計(jì)文檔。在某些情況下,需要將試驗(yàn)實(shí)際代碼作為測試設(shè)計(jì)過程的輸入,測試設(shè)計(jì)者必須意識到不是在測試代碼本身。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第50頁!測試用例的編寫請參考表3-13。表3-13 測試用例

軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第51頁!圖3-16測試程序說明片斷軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第52頁!3.4.5測試用例的管理可以把測試用例看成程序——測試工程師編寫的程序,這個(gè)程序也要經(jīng)過“設(shè)計(jì)”、“開發(fā)”、“測試”、“版本管理”、“發(fā)布”、“維護(hù)”等一系列操作。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第53頁!2.用例管理版本管理是用例管理的核心部分,建議采用工具(例如VisualSourceSafe)對用例進(jìn)行控制。建議用例參照圖3-19進(jìn)行管理。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第54頁!白盒測試方法又可分為靜態(tài)測試和動(dòng)態(tài)測試。靜態(tài)測試是一種不通過執(zhí)行程序而進(jìn)行測試的技術(shù),其關(guān)鍵功能是檢查軟件的表示和描述是否一致,沒有沖突或者沒有歧義。它瞄準(zhǔn)的是糾正軟件系統(tǒng)在描述、表示和規(guī)格上的錯(cuò)誤,是任何進(jìn)一步測試的前提。而動(dòng)態(tài)測試需要軟件的執(zhí)行,當(dāng)軟件系統(tǒng)在模擬的或真實(shí)的環(huán)境中執(zhí)行之前、之中和之后,對軟件系統(tǒng)行為的分析是動(dòng)態(tài)測試的主要特點(diǎn)。它顯示了一個(gè)系統(tǒng)在檢查狀態(tài)下是正確還是不正確。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第55頁!下面將介紹幾種實(shí)用的白盒測試用例設(shè)計(jì)方法,包括程序插樁、邏輯覆蓋、基本路徑測試等。3.2.1程序插樁在軟件動(dòng)態(tài)測試中,程序插樁是一種基本的測試手段,有著廣泛的應(yīng)用。1.方法簡介程序插樁方法是借助往被測程序中插入操作,來實(shí)現(xiàn)測試目的的方法。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第56頁!圖3-3插樁后求最大公約數(shù)程序的流程圖軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第57頁!2.?dāng)嘌哉Z句在程序中特定部位插入某些用以判斷變量特性的語句,使得程序執(zhí)行中這些語句得以證實(shí),從而使程序的運(yùn)行特性得到證實(shí)。我們把插入的這些語句稱為斷言。這一做法是程序正確性證明的基本步驟,盡管算不上嚴(yán)格的證明,但方法本身仍然是很實(shí)用的。下面以求兩個(gè)非負(fù)數(shù)NUM和DEN之商的Wensley迭代算法為例,對斷言語句的作用做一簡要說明。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第58頁!圖3-6插入斷言后的迭代程序軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第59頁!從覆蓋源程序語句的詳細(xì)程度分析,邏輯覆蓋標(biāo)準(zhǔn)有語句覆蓋、判定覆蓋、條件覆蓋、條件判定組合覆蓋、多條件覆蓋和修正條件判定覆蓋。為便于理解,使用如下所示的程序,圖3-7所示的是其流程圖。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第60頁!intfunction1(boola,boolb,boolc){intx;x=0;if(a&&(b||c))x=1;returnx;}軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第61頁!2.判定覆蓋比語句覆蓋稍強(qiáng)的覆蓋標(biāo)準(zhǔn)是判定覆蓋。按判定覆蓋準(zhǔn)則進(jìn)行測試是指,設(shè)計(jì)若干測試用例,運(yùn)行被測程序,使得程序中每個(gè)判斷的取真分支和取假分支至少經(jīng)歷一次,即判斷的真假值均曾被滿足。判定覆蓋又稱為分支覆蓋。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第62頁!4.條件判定組合覆蓋條件判定組合覆蓋的含義是:設(shè)計(jì)足夠的測試用例,使得判定中每個(gè)條件的所有可能(真/假)至少出現(xiàn)一次,并且每個(gè)判定本身的判定結(jié)果(真/假)也至少出現(xiàn)一次。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第63頁!6.修正條件判定覆蓋它要求滿足兩個(gè)條件:首先,每一個(gè)程序模塊的入口和出口點(diǎn)都要考慮至少被調(diào)用一次,每個(gè)程序的判定到所有可能的結(jié)果值要至少轉(zhuǎn)換一次;其次,程序的判定被分解為通過邏輯操作符(and、or)連接的bool條件,每個(gè)條件對于判定的結(jié)果值是獨(dú)立的。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第64頁!(2)Woodward等人的層次LCSAJ覆蓋準(zhǔn)則Woodward等人曾經(jīng)指出結(jié)構(gòu)覆蓋的一些準(zhǔn)則,如分支覆蓋或路徑覆蓋,都不足以保證測試數(shù)據(jù)的有效性。為此,他們提出了一種層次LCSAJ覆蓋準(zhǔn)則。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第65頁!1.程序的控制流圖控制流圖是描述程序控制流的一種圖示方式。其中基本的控制結(jié)構(gòu)對應(yīng)的圖形符號如圖3-8所示。在圖3-8所示的圖形符號中,圓圈稱為控制流圖的一個(gè)結(jié)點(diǎn),它表示一個(gè)或多個(gè)無分支的語句或源程序語句。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第66頁!圖3-9(a)所示的是一個(gè)程序的流程圖,它可以映射成圖(b)所示的控制流圖。圖3-9程序流程圖和對應(yīng)的控制流圖軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第67頁!基本路徑集不是惟一的,對于給定的控制流圖,可以得到不同的基本路徑集。通常環(huán)路復(fù)雜性可用以下3種方法求得。①將環(huán)路復(fù)雜性定義為控制流圖中的區(qū)域數(shù)。②設(shè)E為控制流圖的邊數(shù),N為圖的結(jié)點(diǎn)數(shù),則定義環(huán)路的復(fù)雜性為V(G)=E?N+2。③若設(shè)P為控制流圖中的判定結(jié)點(diǎn)數(shù),則有V(G)=P+1。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第68頁!3.2.4程序的靜態(tài)測試1.源程序靜態(tài)分析在靜態(tài)結(jié)構(gòu)分析中,測試者通過使用測試工具分析程序源代碼的系統(tǒng)結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)接口、內(nèi)部控制邏輯等內(nèi)部結(jié)構(gòu),生成函數(shù)調(diào)用關(guān)系圖、模塊控制流圖、內(nèi)部文件調(diào)用關(guān)系圖、子程序表、宏和函數(shù)參數(shù)表等各類圖形圖表,可以清晰地標(biāo)識整個(gè)軟件系統(tǒng)的組成結(jié)構(gòu),使其便于閱讀與理解,然后可以通過分析這些圖表,檢查軟件有沒有存在缺陷或錯(cuò)誤。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第69頁!(2)錯(cuò)誤靜態(tài)分析錯(cuò)誤靜態(tài)分析主要用于確定在源程序中是否有某類錯(cuò)誤或“危險(xiǎn)”結(jié)構(gòu)。①類型和單位分析②引用分析③表達(dá)式分析④接口分析軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第70頁!(1)桌前檢查由程序員自己檢查自己編寫的程序。程序員在程序通過編譯之后,進(jìn)行單元測試設(shè)計(jì)之前,對源程序代碼進(jìn)行分析、檢驗(yàn),并補(bǔ)充相關(guān)的文檔,目的是發(fā)現(xiàn)程序中的錯(cuò)誤。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第71頁!(3)走查走查與代碼審查基本相同,其過程分為兩步。步也把材料先發(fā)給走查小組每個(gè)成員,讓他們認(rèn)真研究程序,然后再開會(huì)。開會(huì)的程序與代碼審查不同,不是簡單地讀程序和對照錯(cuò)誤檢查表進(jìn)行檢查,而是讓與會(huì)者“充當(dāng)”計(jì)算機(jī),即首先由測試組成員為被測程序準(zhǔn)備一批有代表性的測試用例,提交給走查小組。走查小組開會(huì),集體扮演計(jì)算機(jī)角色,讓測試用例沿程序的邏輯運(yùn)行一遍,隨時(shí)記錄程序的蹤跡,供分析和討論用。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第72頁!2.符號測試符號測試的基本思想是允許程序的輸入不僅僅是具體的數(shù)值數(shù)據(jù),而且包括符號值,這一方法也因此而得名。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第73頁!4.程序變異程序變異方法是一種錯(cuò)誤驅(qū)動(dòng)測試。所謂錯(cuò)誤驅(qū)動(dòng)測試方法,是指該方法是針對某類特定程序錯(cuò)誤的。經(jīng)過多年的測試?yán)碚撗芯亢蛙浖y試的實(shí)踐,人們逐漸發(fā)現(xiàn)要想找出程序中所有的錯(cuò)誤幾乎是不可能的。比較現(xiàn)實(shí)的解決辦法是將錯(cuò)誤的搜索范圍盡可能地縮小,以利于專門測試某類錯(cuò)誤是否存在。錯(cuò)誤驅(qū)動(dòng)測試主要有兩種,即程序強(qiáng)變異和程序弱變異。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第74頁!(3)利用靜態(tài)分析的結(jié)果作為導(dǎo)引,通過代碼檢查和動(dòng)態(tài)測試的方式對靜態(tài)發(fā)現(xiàn)結(jié)果進(jìn)行進(jìn)一步的確認(rèn),使測試工作更為有效。(4)覆蓋率測試是白盒測試的重點(diǎn),一般可使用基本路徑測試法達(dá)到語句覆蓋標(biāo)準(zhǔn);對于軟件的重點(diǎn)模塊,應(yīng)使用多種覆蓋率標(biāo)準(zhǔn)衡量代碼的覆蓋率。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第75頁!3.3黑盒測試黑盒測試也稱功能測試或數(shù)據(jù)驅(qū)動(dòng)測試,前提是已知產(chǎn)品所具有的功能,通過測試來檢測每個(gè)功能是否都正常使用。黑盒測試方法主要有等價(jià)類劃分、邊界值分析、因果圖、錯(cuò)誤推測、功能圖法等,主要用于軟件確認(rèn)測試。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第76頁!首先,把數(shù)目極多的輸入數(shù)據(jù),包括有效的和無效的,劃分為若干等價(jià)類,而所謂等價(jià)類,是指某個(gè)輸入域的子集合。在該子集合中,各個(gè)輸入數(shù)據(jù)對于揭露程序中的錯(cuò)誤都是等效的。并合理地假定:測試某等價(jià)類的代表值就等價(jià)于對這一類其他值的測試。因此,可以把全部輸入數(shù)據(jù)合理劃分為若干等價(jià)類,在每一個(gè)等價(jià)類中取一個(gè)數(shù)據(jù)作為測試的輸入條件,就可用少量代表性測試數(shù)據(jù),取得較好的測試結(jié)果。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第77頁!劃分等價(jià)類的原則如下。①按區(qū)間劃分②按數(shù)值劃分③按數(shù)值集合劃分④按限制條件或規(guī)則劃分軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第78頁!再從劃分出的等價(jià)類中按以下原則選擇測試用例。①為每一個(gè)等價(jià)類規(guī)定一個(gè)惟一的編號。②設(shè)計(jì)一個(gè)新的測試用例,使其盡可能多地覆蓋尚未覆蓋的有效等價(jià)類;重復(fù)這一步驟,直到所有的有效等價(jià)類都被覆蓋為止。③設(shè)計(jì)一個(gè)新的測試用例,使其僅覆蓋一個(gè)無效等價(jià)類,重復(fù)這一步驟,直到所有的無效等價(jià)類都被覆蓋為止。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第79頁!選擇測試用例的原則如下。①如果輸入條件規(guī)定了值的范圍,則應(yīng)該取剛達(dá)到這個(gè)范圍的邊界值,以及剛剛超過這個(gè)范圍邊界的值作為測試輸入數(shù)據(jù)。②如果輸入條件規(guī)定了值的個(gè)數(shù),則用最大個(gè)數(shù)、最小個(gè)數(shù)、比最大個(gè)數(shù)多1個(gè)、比最小個(gè)數(shù)少1個(gè)的數(shù)作為測試數(shù)據(jù)。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第80頁!⑥如果程序用了一個(gè)內(nèi)部結(jié)構(gòu),應(yīng)該選取這個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu)的邊界值作為測試用例。⑦分析規(guī)格說明,找出其他可能的邊界條件。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第81頁!3.3.4因果圖法因果圖方法最終生成的就是判定表。它適合于檢查程序輸入條件的各種組合情況。利用因果圖生成測試用例的基本步驟如下。①分析軟件規(guī)格說明的描述中哪些是原因,哪些是結(jié)果。原因是輸入條件或輸入條件的等價(jià)類,結(jié)果是輸出條件。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第82頁!④把因果圖轉(zhuǎn)換成判定表。⑤為判定表中的每一列設(shè)計(jì)測試用例。通常在因果圖中,用Ci表示原因,Ei表示結(jié)果,其基本符號如圖3-12所示。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第83頁!對于黑盒測試方法來說,以上4種方法是基本的測試方法,除此之外還有判定表驅(qū)動(dòng)法、正交試驗(yàn)法、功能圖法和場景法等。在實(shí)際測試中,往往是綜合使用各種方法才能有效地提高測試效率和測試覆蓋率,這就需要認(rèn)真掌握這些方法的原理,積累更多的測試經(jīng)驗(yàn),以有效地提高測試水平。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第84頁!③可以用錯(cuò)誤推測法追加一些測試用例,這需要依靠測試工程師的智慧和經(jīng)驗(yàn)。④對照程序邏輯,檢查已設(shè)計(jì)出的測試用例的邏輯覆蓋程度。如果沒有達(dá)到要求的覆蓋標(biāo)準(zhǔn),應(yīng)當(dāng)再補(bǔ)充足夠的測試用例。⑤如果程序的功能說明中含有輸入條件的組合情況,則一開始就可選用因果圖法和判定表驅(qū)動(dòng)法。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第85頁!3.3.5場景法現(xiàn)在的軟件幾乎都是用事件觸發(fā)來控制流程的,事件觸發(fā)時(shí)的情景便形成了場景,而同一事件不同的觸發(fā)順序和處理結(jié)果就形成事件流。這種在軟件設(shè)計(jì)方面的思想也可以引入到軟件測試中,可以比較生動(dòng)地描繪出事件觸發(fā)時(shí)的情景,有利于測試設(shè)計(jì)者設(shè)計(jì)測試用例,同時(shí)使測試用例更容易理解和執(zhí)行。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第86頁!圖3-14基本流和備選流軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第87頁!圖3-15ATM流程示意圖軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第88頁!(3)用例設(shè)計(jì)對于這7個(gè)場景中的每一個(gè)場景都需要確定測試用例。可以采用矩陣或決策表來確定和管理測試用例。下面顯示了一種通用格式,其中各行代表各個(gè)測試用例,而各列則代表測試用例的信息。本示例中,對于每個(gè)測試用例,存在一個(gè)測試用例ID、條件(或說明)、測試用例中涉及的所有數(shù)據(jù)元素(作為輸入或已經(jīng)存在于數(shù)據(jù)庫中)以及預(yù)期結(jié)果。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第89頁!(4)數(shù)據(jù)設(shè)計(jì)一旦確定了所有的測試用例,則應(yīng)對這些用例進(jìn)行復(fù)審和驗(yàn)證以確保其準(zhǔn)確且適度,并取消多余或等效的測試用例。測試用例一經(jīng)認(rèn)可,就可以確定實(shí)際數(shù)據(jù)值(在測試用例實(shí)施矩陣中)并且設(shè)定測試數(shù)據(jù),如表3-10所示。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第90頁!3.4測試用例設(shè)計(jì)

3.4.1測試用例的基本概念簡單地說,測試用例就是設(shè)計(jì)一個(gè)情況,軟件程序在這種情況下,必須能夠正常運(yùn)行并且達(dá)到程序所設(shè)計(jì)的執(zhí)行結(jié)果。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第91頁!在測試時(shí),不可能進(jìn)行窮舉測試,為了節(jié)省時(shí)間和資源,提高測試效率,必須要從數(shù)量極大的可用測試數(shù)據(jù)中精心挑選出具有代表性或特殊性的測試數(shù)據(jù)來進(jìn)行測試。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第92頁!③在軟件版本更新后只需修正少部分的測試用例便可開展測試工作,降低工作強(qiáng)度,縮短項(xiàng)目周期。④功能模塊的通用化和復(fù)用化使軟件易于開發(fā),而測試用例的通用化和復(fù)用化則會(huì)使軟件測試易于開展,并隨著測試用例的不斷精化其效率也不斷提高。軟件測試的方法和技術(shù)共105頁,您現(xiàn)在瀏覽的是第93頁!④安全測試用例。安全測試用例。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論