第7章 軟件實現(xiàn)_第1頁
第7章 軟件實現(xiàn)_第2頁
第7章 軟件實現(xiàn)_第3頁
第7章 軟件實現(xiàn)_第4頁
第7章 軟件實現(xiàn)_第5頁
已閱讀5頁,還剩113頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第7章實現(xiàn)實現(xiàn):編碼和測試。編碼:把軟件設(shè)計結(jié)果翻譯成程序。測試:檢測程序并改正錯誤的過程。

計算機程序設(shè)計語言基本上可以分為兩大類:

1.匯編語言;2.高級語言。

7.1編碼7.1.1選擇程序設(shè)計語言從應(yīng)用特點看,高級語言可分為:1)基礎(chǔ)語言如BASIC、FORTRAN、COBOL等2)結(jié)構(gòu)化語言如ALGOL、PL/1、PASCAL、C、ADA等3)專用語言如APL、BLISS、FORTH、LISP、PROLOG等4)面向?qū)ο?/p>

如JAVA、C++等選擇一種編程語言的理論標(biāo)準(zhǔn):1)有理想的模塊化機制;2)可讀性好的控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu);3)便于調(diào)試和提高軟件可靠性;4)編譯程序發(fā)現(xiàn)程序錯誤的能力強;5)有良好的獨立編譯機制。選擇語言時除了考慮理論上的標(biāo)準(zhǔn),還必須同時考慮主要的實用標(biāo)準(zhǔn):

(1)系統(tǒng)用戶要求(2)可以使用的編譯程序(3)可以得到的軟件工具(4)工程規(guī)模(5)程序員知識(6)軟件可移植性要求(7)軟件的應(yīng)用領(lǐng)域1.程序內(nèi)部的文檔選取含義鮮明的名字,如果使用縮寫,縮寫規(guī)則要一致,并給每個名字加注釋;通常在每個模塊開始處要有一段注釋,描述模塊功能、算法、接口特點等;程序清單布局應(yīng)利用適當(dāng)?shù)碾A梯形式,使程序的層次結(jié)構(gòu)清晰明顯。7.1.2寫程序的風(fēng)格2.數(shù)據(jù)說明數(shù)據(jù)說明的次序應(yīng)該標(biāo)準(zhǔn)化,如按數(shù)據(jù)類型確定說明的次序;多個變量名在一個語句中說明時,應(yīng)該按字母順序排列這些變量;如果設(shè)計時使用了復(fù)雜的數(shù)據(jù)結(jié)構(gòu),應(yīng)該用注釋說明實現(xiàn)該數(shù)據(jù)結(jié)構(gòu)的方法和特點。

3.語句構(gòu)造4.輸入/輸出5.效率

A.程序運行時間

B.存儲器效率C.輸入/輸出效率

有關(guān)測試的一些規(guī)則:(1)測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程;(2)好的測試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯誤的測試方案;(3)成功的測試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯誤的測試。

7.2.1軟件測試的目標(biāo)7.2軟件測試基礎(chǔ)7.2.2軟件測試準(zhǔn)則1)所有測試都應(yīng)該能追溯到用戶需求;2)應(yīng)該遠(yuǎn)在測試前就制定出測試計劃;3)把Pareto原理(20/80)應(yīng)用到軟件測試中;4)應(yīng)該從“小規(guī)模”測試開始,并逐步進行“大規(guī)?!睖y試;5)窮舉測試是不可能的;窮盡測試:包含所有可能情況的測試稱為窮盡測試。程序main()a2a1a3b輸入輸出a1、a2、a3:Integer16bits輸入數(shù)據(jù)的窮盡測試組合:216×216×216=248≈3×10146)為了達到最佳測試效果,應(yīng)該由獨立的第三方從事測試工作。黑盒測試:如果已經(jīng)知道軟件應(yīng)該具有的功能,可以通過測試來檢驗是否每個功能都能正常使用,這種測試稱黑盒測試。也稱功能測試。7.2.3測試方法白盒測試:也稱結(jié)構(gòu)測試。如果知道軟件內(nèi)部工作過程,可以通過測試來檢驗軟件內(nèi)部動作是否按照規(guī)格說明書的規(guī)定正常進行,這種測試稱為白盒測試。1.模塊測試模塊測試又稱單元測試,它把每個模塊作為單獨的實體來測試。2.子系統(tǒng)測試子系統(tǒng)測試是把經(jīng)過單元測試的模塊放在一起形成一個子系統(tǒng)來測試。7.2.4軟件測試的步驟3.系統(tǒng)測試系統(tǒng)測試是把經(jīng)過測試的子系統(tǒng)裝配成一個完整的系統(tǒng)來測試。4.驗收測試驗收測試把軟件系統(tǒng)作為單一的實體進行測試(利用用戶的實際數(shù)據(jù)測試)。5.平行運行平行運行是同時運行新開發(fā)出來的系統(tǒng)和將被它取代的舊系統(tǒng),以便比較新舊兩個系統(tǒng)的處理結(jié)果。

軟件測試的V模型7.2.5測試階段的信息流測試評價調(diào)試可靠性模型軟件配置測試配置測試結(jié)果預(yù)期結(jié)果錯誤錯誤率數(shù)據(jù)正確可靠性預(yù)測圖7.1測試階段的信息流7.3單元測試單元測試的一般方法是:首先通過編譯系統(tǒng)檢查并改正程序中所有的語法錯誤;然后用詳細(xì)設(shè)計模塊說明為指南,對重要的控制路徑進行測試,以便發(fā)現(xiàn)模塊內(nèi)部的錯誤。通常,單元測試使用白盒測試方法。

1)模塊接口應(yīng)該對穿過模塊接口的數(shù)據(jù)流進行檢測,以保證正確的輸入和輸出。2)局部數(shù)據(jù)結(jié)構(gòu)這是錯誤的主要來源,應(yīng)該設(shè)計相應(yīng)的測試用例,以便發(fā)現(xiàn)數(shù)據(jù)結(jié)構(gòu)方面的錯誤。7.3.1測試重點3)重要的執(zhí)行路徑由于不可能進行窮盡測試,因此選擇測試路徑是非常關(guān)鍵的。4)出錯處理通路5)邊界條件審查小組:

1)組長;2)程序的設(shè)計者;3)程序的編寫者;4)程序的測試者。

7.3.2代碼審查單元測試:人工測試和機器測試7.3.3計算機測試

由于軟件模塊不是一個獨立的系統(tǒng),不能獨立運行,要依靠其他模塊調(diào)用,或需要調(diào)用其他模塊。因此,必須要為測試的單元開發(fā)驅(qū)動程序或存根程序。1)驅(qū)動程序相當(dāng)于一個“主程序”,用來把測試數(shù)據(jù)傳送給被測試的模塊,并打印有關(guān)結(jié)果。2)存根程序用來代替被測試模塊所調(diào)用的模塊,相當(dāng)于“虛擬子程序”。

如,測試B模塊,設(shè)計了A模塊和C模塊。由A負(fù)責(zé)傳送測試數(shù)據(jù),由C負(fù)責(zé)模擬被B調(diào)用的模塊。C模塊可能沒有,這取決于B有沒有調(diào)用其他程序。A、C都是一次性程序,只在測試時臨時使用,應(yīng)盡量設(shè)計得簡單一些,以節(jié)省費用和時間。BAC被測試模塊驅(qū)動模塊存根模塊例:正文加工系統(tǒng)輸入1.0輸出2.0編輯3.0加標(biāo)題4.0存儲5.0檢索6.0編目錄7.0格式化8.0添加3.1刪除3.2插入3.3修改3.4合并3.5列表3.6圖7.2正文加工系統(tǒng)(H圖)TESTDRIVER編輯3.0TESTSTUB對“編輯”功能的測試:7.4集成測試集成測試是組裝軟件的系統(tǒng)化技術(shù),它將經(jīng)過單元測試的模塊聯(lián)系在一起進行測試。由模塊組裝成程序時有兩種方法:1)非漸增式測試方法先分別測試每個模塊,再把所有模塊按設(shè)計要求放在一起結(jié)合成所要的程序。2)漸增式測試方法每次增加一個待測試模塊,把它同已經(jīng)測試好的那些模塊結(jié)合起來進行測試,反復(fù)進行直到完成所有模塊測試的方法。使用漸增式測試方法把模塊結(jié)合到軟件系統(tǒng)中去時,有自頂向下和自底向上兩種集成方法。

自頂向下集成是一種遞增的裝配軟件結(jié)構(gòu)的方法,這種方法應(yīng)用非常廣泛。它需要存根程序,但是不需要驅(qū)動程序。7.4.1自頂向下集成這種方法的思想是:從主控模塊(主程序)開始,沿軟件的控制層次向下移動,逐漸把各個模塊結(jié)合起來。

在自頂向下結(jié)合方法中,如何將所有模塊組裝到軟件結(jié)構(gòu)中,又有兩種方法:1)深度優(yōu)先策略先組裝軟件結(jié)構(gòu)的一條主控制通路上的所有模塊,選擇哪條主控制通路,具有較大的任意性。如圖,如果選取左通路,就先把模塊M1、M2、M5結(jié)合起來測試,然后結(jié)合模塊M8、M6,再構(gòu)造中央和右側(cè)的控制通路。M1M2M3M4M6M5M7M8圖7.3自頂向下結(jié)合實例2)寬度優(yōu)先策略沿著軟件結(jié)構(gòu)水平地移動,把處于同一個層次的所有模塊組裝起來。如圖,首先結(jié)合M2、M3、M4和主控模塊M1,然后結(jié)合下一個控制層次中的模塊M5、M6和M7,最后結(jié)合模塊M8。M1M2M3M4M6M5M7M8圖7.3自頂向下結(jié)合實例自頂向下集成方法的基本過程如下:1)對主控模塊進行測試,測試時用存根程序代替所有直接被主控模塊調(diào)用的模塊;M1M2M3M4M6M5M7M8圖7.3自頂向下結(jié)合實例M1M2M3M4M6M5M7M8圖7.3自頂向下結(jié)合實例2)根據(jù)選定的結(jié)合策略(深度優(yōu)先或?qū)挾葍?yōu)先),每次用一個實際模塊代替一個存根程序(新結(jié)合的模塊往往又需要新的存根程序);3)每結(jié)合一個模塊,就測試一個;4)為保證不引入新的錯誤,需要進行回歸測試,即重復(fù)以前進行過的部分或全部測試;5)重復(fù)回到第二步,直到構(gòu)成整個軟件結(jié)構(gòu)。M1M2M3M4M6M5M7M8圖7.3自頂向下結(jié)合實例自底向上集成方法是從軟件結(jié)構(gòu)最底層模塊開始進行組裝和測試,它與自頂向下結(jié)合方法相反,需要驅(qū)動程序,不需要存根程序。

7.4.2自底向上集成自底向上集成方法的基本過程如下:1)把底層模塊組合成實現(xiàn)一個特定軟件子功能的族,如圖族1、2、3。McMaMbD2D1D3族1族2族3圖7.4自底向上實例2)為每個模塊設(shè)計一個驅(qū)動程序,作為測試的控制程序,以協(xié)調(diào)測試用例的輸入和輸出。圖中D1、D2、D3分別是族1、2、3的驅(qū)動程序;McMaMbD2D1D3族1族2族3圖7.4自底向上實例3)對模塊進行測試;4)用實際模塊代替驅(qū)動程序組裝成新的模塊族,在新加入的實際模塊上面加上新的驅(qū)動程序進行測試;McMaMbD2D1D3族1族2族3圖7.4自底向上實例5)重復(fù)第二到第四步,逐漸向上加入實際模塊,直至構(gòu)造出整個軟件結(jié)構(gòu)。McMaMbD2D1D3族1族2族3圖7.4自底向上實例7.4.3不同集成測試策略的比較1.改進的自頂向下測試方法;2.混合法。M1M2M3M4M5M67.4.4回歸測試

指重新執(zhí)行已經(jīng)做過的部分測試。

回歸測試用于保證由于調(diào)試或其他原因引起的程序變化,不會導(dǎo)致額外錯誤的測試活動。7.5確認(rèn)測試(驗收測試)

也稱為驗收測試,目標(biāo)是驗證軟件的有效性。如果軟件的功能和性能符合用戶的期待,軟件就是有效的。軟件規(guī)格說明書是進行確認(rèn)測試的基礎(chǔ)。

7.5.1確認(rèn)測試的范圍確認(rèn)測試的主要特點及內(nèi)容有:1)某些已經(jīng)測試過的純粹技術(shù)性的測試項可能不需要再次測試,而對用戶特別感興趣的功能或性能,可能需要增加一些測試;2)通常確認(rèn)測試主要使用實際生產(chǎn)中的數(shù)據(jù)來進行測試;3)確認(rèn)測試必須有用戶的積極參與,甚至以用戶為主,可能需要進行一些與用戶使用步驟有關(guān)的測試。

確認(rèn)測試一般使用黑盒測試法。7.5.2軟件配置復(fù)查目的:保證軟件配置的所有成分都齊全,質(zhì)量符合要求,文檔與程序完全一致,而且已經(jīng)編好目錄。7.5.3Alpha和Beta測試Alpha測試:用戶在開發(fā)者的場所進行測試,并且在開發(fā)者的指導(dǎo)下進行,測試在受控環(huán)境中進行,開發(fā)者記錄發(fā)現(xiàn)的錯誤和問題;Beta測試:用戶在一個或多個客戶場所進行測試,不受開發(fā)者控制,測試者記錄發(fā)現(xiàn)的問題和錯誤,定期將問題報告發(fā)送給開發(fā)者。7.6白盒測試技術(shù)1.語句覆蓋語句覆蓋是指:設(shè)計的測試用例能使程序中每條語句至少執(zhí)行一次。

7.6.1邏輯覆蓋例:一個被測試模塊的源程序為(PASCAL語言):PROCEDUREEXAMPLE(A,B:REAL;VARX:REAL);BEGINIF(A>1)AND(B=0)THENX:=X/A;IF(A=2)OR(X>1)THENX:=X+1END入口返回A>1andB=0A=2orX>1X=X/AX=X+1sabdceTTFF1234567圖7.5被測試模塊的流程圖選取測試用例:A=2,B=0,X=4

,程序執(zhí)行路徑為:sacbed。2.判定覆蓋判定覆蓋是指:選取足夠的測試用例,使得程序中每個判斷的可能結(jié)果都至少執(zhí)行一次,也就是說使程序的每個判斷分支至少通過一次。入口返回A>1andB=0A=2orX>1X=X/AX=X+1sabdceTTFF1234567圖7.5被測試模塊的流程圖對于上例,選取如下測試用例:I.A=3,B=0,X=3(覆蓋sacbd)II.A=2,B=1,X=1(覆蓋sabed)3.條件覆蓋

條件覆蓋是指:選擇足夠的測試用例,使得程序中每個判定表達式的每個條件都取到各種可能的結(jié)果。入口返回A>1andB=0A=2orX>1X=X/AX=X+1sabdceTTFF1234567圖7.5被測試模塊的流程圖上例中,有兩個判定表達式,每個表達式有兩個條件,為了做到條件覆蓋,應(yīng)該選取測試數(shù)據(jù)使得a點出現(xiàn)如下結(jié)果:

A>1,A≤1,B=0,B≠0在b點出現(xiàn)如下結(jié)果:

A=2,A≠2,X>1,X≤1

選取如下測試用例:I.A=2,B=0,X=4(滿足A>1,B=0,A=2和X>1,執(zhí)行路徑為sacbed)II.A=1,B=1,X=1(滿足A≤1,B≠0,A≠2和X≤1,執(zhí)行路徑為sabd)入口返回A>1andB=0A=2orX>1X=X/AX=X+1sabdceTTFF1234567圖7.5被測試模塊的流程圖條件覆蓋通常比判定覆蓋強,但是條件覆蓋不一定包含判定覆蓋。入口返回A>1andB=0A=2orX>1X=X/AX=X+1sabdceTTFF1234567圖7.5被測試模塊的流程圖如:I.A=2,B=0,X=1(滿足A>1,B=0,A=2和X≤1,執(zhí)行路徑為sacbed)II.A=1,B=1,X=2(滿足A≤1,B≠0,A≠2和X>1,執(zhí)行路徑為sabed)只滿足條件覆蓋,并不滿足判定覆蓋。入口返回A>1andB=0A=2orX>1X=X/AX=X+1sabdceTTFF1234567圖7.5被測試模塊的流程圖4.判定/條件覆蓋判定/條件覆蓋是指:選取足夠的測試用例使得同時滿足判定覆蓋和條件覆蓋的要求。對于上例,選取如下測試用例:I.A=2,B=0,X=4(滿足A>1,B=0,A=2和X>1,執(zhí)行路徑為sacbed)II.A=1,B=1,X=1(滿足A≤1,B≠0,A≠2和X≤1,執(zhí)行路徑為sabd)入口返回A>1andB=0A=2orX>1X=X/AX=X+1sabdceTTFF1234567圖7.5被測試模塊的流程圖5.條件組合覆蓋

條件組合覆蓋指:選取足夠的測試用例,使得每個判定表達式中條件的各種可能的組合都至少出現(xiàn)一次。對于上例,共有8種可能的條件組合:1)A>1,B=02)A>1,B≠03)A≤1,B=04)A≤1,B≠0

5)A=2,X>16)A=2,X≤17)A≠2,X>18)A≠2,X≤1入口返回A>1andB=0A=2orX>1X=X/AX=X+1sabdceTTFF1234567圖7.5被測試模塊的流程圖選取如下測試用例:I.A=2,B=0,X=4(滿足1、5組合:A>1,B=0,A=2,X>1,執(zhí)行路徑sacbed)II.A=2,B=1,X=1(滿足2、6組合:A>1,B≠0,A=2,X≤1,執(zhí)行路徑sabed)入口返回A>1andB=0A=2orX>1X=X/AX=X+1sabdceTTFF1234567圖7.5被測試模塊的流程圖III.A=1,B=0,X=2(滿足3、7組合:A≤1,B=0,A≠2,X>1,執(zhí)行路徑sabed)IV.A=1,B=1,X=1(滿足4、8組合:A≤1,B≠0,A≠2,X≤1,執(zhí)行路徑sabd)入口返回A>1andB=0A=2orX>1X=X/AX=X+1sabdceTTFF1234567圖7.5被測試模塊的流程圖如果從對程序路徑的覆蓋程度分析,可以提出下面一些邏輯覆蓋標(biāo)準(zhǔn):6.點覆蓋點覆蓋是指:選取足夠多的測試用例,使得程序執(zhí)行路徑至少經(jīng)過程序圖中每個節(jié)點一次。sabdce1234567圖7.5對應(yīng)的程序圖7.邊覆蓋邊覆蓋是指:選取足夠多的測試用例,使得程序執(zhí)行路徑至少經(jīng)過程序圖中每條邊一次。sabdce1234567圖7.5對應(yīng)的程序圖選取如下測試用例:I.A=3,B=0,X=3(執(zhí)行路徑1—4—5—3)II.A=2,B=1,X=1(執(zhí)行路徑1—2—6—7)8.路徑覆蓋路徑覆蓋是指:選取足夠多的測試用例,使得程序的每條可能路徑都至少執(zhí)行一次。sabdce1234567圖7.5對應(yīng)的程序圖選取如下測試用例:I.A=1,B=1,X=1(執(zhí)行路徑1—2—3)II.A=1,B=1,X=2(執(zhí)行路徑1—2—6—7)III.A=3,B=0,X=1(執(zhí)行路徑1—4—5—3)IV.A=2,B=0,X=4(執(zhí)行路徑1—4—5—6—7)1)A=3,B=0,X=12)A=2,B=0,X=43)A=2,B=1,X=14)A=1,B=0,X=25)A=1,B=1,X=1更強的測試數(shù)據(jù):滿足路徑覆蓋和條件組合覆蓋

2)-5)滿足條件組合覆蓋,執(zhí)行路徑分別是:sacbed、sabed、sabed、sabd入口返回A>1andB=0A=2orX>1X=X/AX=X+1sabdceTTFF1234567圖7.5被測試模塊的流程圖路徑:sacbd7.6.2控制結(jié)構(gòu)測試(自學(xué))黑盒測試與白盒測試比較黑盒測試能發(fā)現(xiàn)的問題?如何設(shè)計黑盒測試?如何設(shè)計標(biāo)準(zhǔn)的黑盒測試用列?

7.7黑盒測試技術(shù)等價類劃分是一種黑盒測試技術(shù)。窮盡的黑盒測試需要使用所有可能的輸入數(shù)據(jù)(有效的和無效的)進行測試,通常是不現(xiàn)實的。因此產(chǎn)生了等價類劃分。

7.7.1等價劃分(等價類劃分)等價類劃分的思想:如果將所有可能的輸入數(shù)據(jù)(有效的和無效的)劃分為若干個等價類,就可以假定用每一個等價類中的代表值作為測試用例來進行測試時,等價于用該類中所有值進行了測試。用等價類劃分設(shè)計測試用例時,主要分兩步:劃分等價類、確定測試用例。1)等價類劃分劃分等價類需要經(jīng)驗,以下給出一些規(guī)則:

A.如果某輸入條件規(guī)定了輸入的范圍,那么可以劃分為一個有效的等價類和兩個無效的等價類。如X的值的輸入范圍是[1,99],那么測試X時,可以這樣劃分:有效等價類為[1,99],無效等價類為(-∞,1)和(99,+∞)。

B.如果某個輸入條件規(guī)定了一組可能的值,且程序可以對不同的值作出不同的處理,那么可以為每種值確定一個有效的等價類,同時還有一個無效等價類。如,“職稱”這個量可能的值是:教授、副教授、講師、助教。那么可以這樣劃分:四類有效等價類分別為教授、副教授、講師、助教,無效等價類為四種職稱以外的所有值。2)確定測試用例A.給每個等價類規(guī)定一個唯一的編號;

B.設(shè)計一個新的測試用例,使其盡可能多地覆蓋未被覆蓋過的有效等價類。重復(fù)此步,直至所有有效等價類被覆蓋;C.設(shè)計一個新的測試用例,使其覆蓋而且只覆蓋一個尚未被覆蓋的無效等價類。重復(fù)此步,直到所有無效等價類被覆蓋。

通常程序發(fā)現(xiàn)一類錯誤后,就報出錯信息,不再檢查其它類錯誤,所以設(shè)計測試用例時,一次只覆蓋一個無效等價類。實例:一個把數(shù)字串變成整數(shù)的函數(shù)。計算機字長:16bits,函數(shù)由PASCAL語言編寫。

functionstrtoint(dstr:shortstr):integertypeshortstr=array[1..6]ofchar;/字符串6位/

(16位字長能表示的整型數(shù)范圍是[-215,215-1],即[-32768,32767

]

)有效輸入的等價類有:(1)1-6個數(shù)字字符組成的數(shù)字串(最高位數(shù)字不為零);如:[0,999999](2)最高位數(shù)字是零的數(shù)字串;如:“012345”(3)最高位數(shù)字左鄰是負(fù)號的數(shù)字串;如:“-12345”無效輸入的等價類有:(4)空字符串(全是空格);如“”;(5)左部填充的字符既不是零,又不是空格;如:“A12345”(6)最高位數(shù)字右面由數(shù)字和空格混合而成;如:“12345”(7)最高位數(shù)字右面由數(shù)字和其他字符混合而成;如:“12A345”(8)負(fù)號與最高位數(shù)字之間有空格;如:“-1234”合法輸出的等價類有:(9)在計算機能表示的最小負(fù)整數(shù)和零之間的負(fù)整數(shù);如:[-32768,0)(10)零;(11)在零和計算機能表示的最大正整數(shù)之間的正整數(shù);如:(0,32767]非法輸出的等價類有:(12)比計算機能表示的最小負(fù)整數(shù)還小的負(fù)整數(shù);如:“-32769”(13)比計算機能表示的最大正整數(shù)還大的正整數(shù);如:“123456”根據(jù)劃分的等價類,設(shè)計出測試方案11個:(1)1-6個數(shù)字組成的字符串;輸入:‘1’預(yù)期的輸出:1(2)最高位數(shù)字是零的數(shù)字串;輸入:‘000001’預(yù)期的輸出:1(3)負(fù)號與最高位數(shù)字相鄰;輸入:‘-00001’預(yù)期的輸出:-1(4)最高位數(shù)字是零的特例;輸入:‘000000’預(yù)期的輸出:0(5)太小的負(fù)整數(shù);輸入:‘-47561’預(yù)期的輸出:錯誤-無效輸入(6)太大的正整數(shù);輸入:‘132767’預(yù)期的輸出:錯誤-無效輸入(7)空字符串;輸入:‘’預(yù)期的輸出:錯誤-沒有數(shù)字(8)字符串左部字符既不是零又不是空格;輸入:‘AAAAA1’預(yù)期的輸出:錯誤-非數(shù)字(9)最高位數(shù)字后面有空格;輸入:‘12’預(yù)期的輸出:錯誤-無效輸入(10)最高位數(shù)字后面有其他字符;輸入:‘1AAA23’預(yù)期的輸出:錯誤-無效輸入(11)負(fù)號和最高位數(shù)字之間有空格;輸入:‘-12’預(yù)期的輸出:錯誤-負(fù)號位置錯。程序通常在處理邊緣情況時容易出現(xiàn)錯誤,如等價類與等價類之間的邊界值。所以在設(shè)計測試用例時,使用正好等于、正好大于、正好小于邊界值的數(shù)據(jù)進行測試,發(fā)現(xiàn)程序錯誤的概率較大。7.7.2邊界值分析邊界值分析測試法屬黑盒測試。

在實際設(shè)計測試方案時,常常結(jié)合使用等價劃分和邊界值分析兩種技術(shù),把一些等價類的邊界值作為測試用例進行測試。

上例中設(shè)計了11個測試用例,還應(yīng)該用邊界值分析補充測試用例:(12)使輸出剛好等于最小負(fù)整數(shù);輸入:‘-32768’預(yù)期的輸出:-32768(13)使輸出剛好等于最大的正整數(shù);輸入:‘32767’預(yù)期的輸出:32767(14)使輸出剛剛小于最小的負(fù)整數(shù);輸入:‘-32769’預(yù)期的輸出:錯誤-無效輸入(15)使輸出剛剛大于最大正整數(shù);輸入:‘32768’預(yù)期的輸出:錯誤-無效輸入錯誤推測法在很大程度上靠直覺和經(jīng)驗進行?;舅枷耄毫信e出程序中可能的錯誤和容易發(fā)生錯誤的特殊情況,且根據(jù)它們選擇測試方案。如:輸入、輸出為0時容易出錯;輸出記錄為0條時容易出錯;等等。7.7.3錯誤推測對軟件系統(tǒng)進行實際測試時,應(yīng)該聯(lián)合使用各種設(shè)計測試方案的方法,形成一種綜合策略。具體可以使用如下策略:1)在任何情況下都應(yīng)該進行邊界值分析;2)必要時用等價劃分法補充測試方案;7.7.4實用測試策略3)必要時再用錯誤推測法補充測試方案;4)對照程序邏輯,檢查已經(jīng)設(shè)計出的測試方案??梢愿鶕?jù)對程序可靠性的要求采用不同的邏輯覆蓋標(biāo)準(zhǔn)。實例:程序TRIANGLE讀入三個整數(shù)值,這三個整數(shù)代表同一個三角形三條邊的長度,程序根據(jù)這三個值判斷三角形屬于不等邊、等腰或是等邊三角形。開始停止A<B+CB<A+CC<A+BA=BA=CB=CB=C輸出:等邊三角形輸出:不等邊三角形輸出:等腰三角形輸出:不是三角形abcdefghijklmnop12345678910111213141516171819202122TFTFTFTTFFFTTF圖7.8程序TRIANGLE的流程圖綜合使用邊界值分析、等價值劃分和錯誤推測等技術(shù),可以設(shè)計出11種應(yīng)該測試的情況:(1)正常的不等邊三角形;(2)正常的等邊三角形;(3)正常的等腰三角形,包括兩條相等邊的三種不同排列方法;(4)退化的三角形(即兩邊的和等于第三邊),包括三種不同排列方法;(5)三條邊不能構(gòu)成三角形(即兩邊之和小于第三邊),包括三種不同排列方法;(6)一條邊的長度為零,包括三種不同的排列方法;(7)兩條邊的長度為零,包括三種不同的排列方法;(8)三條邊的長度全為零;(9)輸入數(shù)據(jù)中包含負(fù)整數(shù);(10)輸入數(shù)據(jù)不全(不足三個正整數(shù));(11)輸入數(shù)據(jù)中包含非整數(shù)型的數(shù)據(jù)。abcdefghklmnopij1234567891011121314151617181920212223圖7.9對應(yīng)的程序圖程序TRIANGLE的測試數(shù)據(jù)測試功能測試數(shù)據(jù)abc1.等邊2.等腰3.不等邊4.非三角形5.退化情況6.零數(shù)據(jù)10,10,1010,10,178,10,1210,10,2110,5,50,0,00,0,70,10,12-,-,-10,17,108,12,1010,21,105,10,5-,-,-0,17,012,0,10-,-,-17,10,1010,12,821,10,105,5,10-,-,-17,0,012,10,0測試功能測試數(shù)據(jù)abc7.負(fù)數(shù)據(jù)8.遺留數(shù)據(jù)9.無效輸入10.邊界值-10,-10,-10-10,-10,17-8,10,17-,-,-10,-,-8,10,-A,B,C=,+,*8,10,A7E3,10.5,A32767,32766,8-32768,8,32766-32768,8,-32769-,-,--10,17,-1017,-8,10-,-,--,10,-8,-,10-,-,--,-,-8,A,1010.5,7E3,A32766,8,3276732768,8,-327698,-32767,-32768-,-,-17,-10,-1010,12,8-,-,--,-,10-,8,10-,-,--,-,-A,10,8A,10.5,7E332768,8,32767-32769,8,32767-32767,8,-32769最后,檢查測試數(shù)據(jù)的覆蓋程度,通常應(yīng)該做到邊覆蓋。測試數(shù)據(jù)覆蓋程度檢驗表中列出的四種測試數(shù)據(jù)已經(jīng)做到了邊覆蓋(覆蓋所有的22條邊)。測試數(shù)據(jù)覆蓋程度檢驗表編號測試數(shù)據(jù)覆蓋的邊12a2b2c3a3b3c4a4b4c10,10,1010,10,1710,17,1017,10,108,10,128,12,1010,12,810,10,2110,21,1021,10,101,2,3,4,5,6,7,81,2,3,4,5,15,19,20,81,2,3,4,14,18,19,20,81,2,3,4,14,16,17,19,20,81,2,3,4,14,16,21,22,81,2,3,4,14,16,21,22,81,2,3,4,14,16,21,22,81,2,3,11,12,13,81,2,10,12,13,81,9,12,13,87.8調(diào)試7.8.1調(diào)試過程調(diào)試是在測試發(fā)現(xiàn)錯誤之后排除錯誤的過程。測試用例結(jié)果調(diào)試附加測試糾正且回歸測試已識別原因被懷疑原因1.蠻干法:打印內(nèi)存的內(nèi)容,從中尋找錯誤的線索,是效率最低的程序調(diào)試方法。2.回溯法:從發(fā)現(xiàn)問題的程序段開始人工地往回追蹤分析程序代碼,直到找到錯誤。3.原因排除法包括:對分查找法、歸納法、演繹法7.8.2調(diào)試途徑7.9軟件可靠性1.軟件可靠性定義

軟件可靠性:是程序在給定的時間間隔內(nèi),按照規(guī)格說明書的規(guī)定成功地運行的概率。7.9.1基本概念2.軟件的可用性對故障可修復(fù)系統(tǒng),應(yīng)同時使用可靠性和可用性來衡量。

軟件可用性是:程序在給定的時間點,按照規(guī)格說明書的規(guī)定,成功地運行的概率。

可靠性和可用性的區(qū)別是:可靠性是在0到t時間間隔內(nèi),系統(tǒng)沒有失效的概率。而可用性是在t時刻,系統(tǒng)是正常運行的概率。如果在t時刻,系統(tǒng)是可用的,則有兩種可能:1)在0到t時刻這段時間內(nèi),系統(tǒng)一直沒有失效(可靠);2)在0到t時刻這段時間內(nèi)失效過,但是系統(tǒng)修復(fù)后運行到t時刻時情況良好。系統(tǒng)穩(wěn)態(tài)可用性計算(P180)

平均維修時間MTTR是修復(fù)一個故障平均需要用的時間,取決于維護人員的技術(shù)水平和對系統(tǒng)熟悉程度。

平均無故障時間MTTF是系統(tǒng)按照規(guī)格說明書規(guī)定成功地運行的平均時間,取決于系統(tǒng)中潛伏的錯誤數(shù)量。1.符號

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論