軟件工程張海藩解讀_第1頁
軟件工程張海藩解讀_第2頁
軟件工程張海藩解讀_第3頁
軟件工程張海藩解讀_第4頁
軟件工程張海藩解讀_第5頁
已閱讀5頁,還剩73頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第7章實現7.1編碼7.2軟件測試基礎7.3單元測試7.4集成測試7.5確認測試7.6白盒測試技術7.7黑盒測試技術7.8調試7.9軟件可靠性1編碼

編碼的任務是為每個模塊編寫程序,也就是說將詳細設計的結果轉換成用某種程序設計語言寫的程序。編碼階段結束時交付的是不含有語法錯誤的程序和有關程序說明的“內部文檔”。2程序設計語言1.程序設計語言的分類通常我們依據對數據存儲和操作的抽象程度,把品種繁多的程序設計語言分成機器、匯編、高級和第四代語言四大類。(1)機器語言機器語言主要用0和1代碼對計算機硬件的高低電平進行指代,用0、1串對計算機能進行的操作及存儲地址等進行編碼,是計算機的數據操作與存儲能力的第一級邏輯抽象。目前幾乎沒有人用它編程。3(2)匯編語言

匯編語言用英文字母、數字和一些特殊符號對機器語言指令和存儲空間及數據進行編碼,為0,1串進行命名,可見匯編語言是對機器語言的一級抽象,是對計算機語言的二級抽象。有多少種帶有常用指令集合的微處理機系統(tǒng)結構,就有多少種從屬于機器語言的匯編語言。4(3)高級語言

高級語言是把人們利用機器語言或匯編語言編程時所用數據的邏輯結構和對數據進行使用時的操作序列的邏輯結構歸納抽象為類型和語句,利用英文字母、數字和一些符號通過一定規(guī)則(語法)對其編碼,所用編碼的自然語言含義與對應邏輯結構的意義盡量接近。高級語言不依賴于實現這種語言的計算機。5(4)第四代語言

所謂第四代語言就是把某一領域內的通用數據結構和功能模塊用高級語言進行編碼,一般通過顯示屏幕利用菜單形式和用戶進行會話,由用戶通過鍵盤等選擇自己所用功能模塊,并填寫相應參數,可見第四代語言其實是計算機在某一領域的應用,是計算機與人之間進行信息交換的工具,是碼義結合的會話符號系統(tǒng)。62.選擇程序設計語言的標準(1)理想標準選用的高級語言應該有理想的模塊化機制,可讀性好的控制結構和數據結構為了便于調試和提高軟件的可靠性,語言特點應該使編譯程序能夠盡可能多地發(fā)現程序中的錯誤。為了降低軟件開發(fā)和維護的成本,選用的語言應該有良好的獨立編譯機制。7(1)實用標準如果系統(tǒng)是由用戶負責維護的,那么我們就應該選擇用戶熟悉的語言書寫程序。所選擇的語言應該與目標系統(tǒng)所能提供的編譯程序相匹配。語言有可利用的軟件工具,使目標系統(tǒng)的實現和驗證變得容易??筛鶕こ痰囊?guī)模從現有的語言中選擇,也可以根據需要設計一種新的語言,以滿足用戶的需求。8在與目標設計不矛盾的情況下,應該選擇一種程序員所熟悉的語言。應該選擇一種標準化程度高,程序可移植性好的語言。選擇語言應充分考慮目標系統(tǒng)的應用范圍。

在工程和科學計算領域中FORTRAN仍是主要語言,在商業(yè)應用方面通常采用COBOL語言,在系統(tǒng)程序及實時應用領域采用C語言和Ada語言,在組合論應用方面較多地采用LISP語言,在表述知識和邏輯推理方面采用PROLOG語言。93.編碼風格編碼風格(CodingStyle),又稱程序設計風格,是程序設計者在創(chuàng)作中喜歡或習慣使用的表達自己作品的方式。 從軟件工程學的角度,良好的編碼風格主要體現在程序代碼邏輯清晰,易讀、易理解、易維護,能高效利用系統(tǒng)資源等各個方面。 編碼風格強調“清晰第一”。清晰和效率往往是矛盾的。強調“清晰第一”,并非不要效率,而是在清晰的前提下求取效率。10(1)程序內部文檔大型軟件系統(tǒng)的程序內部必須帶有說明性材料,即“內部文檔”,內部文檔可用注釋語句書寫,程序中適當地加上注釋,是提高程序可讀性的有力手段。注釋分為兩類:序言性注釋和描述性注釋序言性注釋出現在模塊的首部,其內容一般包括:有關模塊功能的說明界面描述。包括調用語句格式,所有參數的解釋和該模塊需調用的模塊名等。一些重要變量的使用、限制和一些其它信息。開發(fā)歷史。如作者、復查者、復查日期、修改日期和敘述等。11描述性注釋嵌在程序之中,描述性注釋又有功能性的和狀態(tài)性的,功能性注釋說明程序段的功能,通??煞旁诔绦蚨沃埃瑺顟B(tài)性注釋說明數據的狀態(tài),通??煞旁诔绦蚨沃蟆τ谧⑨?,還應注意以下幾點:注釋應該與程序一致注釋應該提供一些從程序本身難以得到的信息,而不是重復程序語句是對語句段做注釋,而不是對每個語句作注釋提高可讀性的另一個主要手段是采用縮排法,它使程序的書寫反映其邏輯結構的深度。12(2)數據說明數據說明的次序應該標準化當多個變量名在一個語句中說明時,應該按字母順序排列這些變量當設計的時候使用了一個復雜的數據結構,應該用注解說明使用程序設計語言實現這個數據結構的方法和特點13(3)語句構造不要為了節(jié)省空間而把多個語句寫在同一行盡量避免復雜的條件測試盡量減少對“非”條件的測試避免大量使用循環(huán)嵌套和條件嵌套利用括號使邏輯表達式或算術表達式的運算次序清晰直觀14(4)輸入輸出對所有輸入數據都進行檢驗檢查輸入項重要組合的合法性保持輸入格式簡單使用數據結束標記,不要要求用戶指定數據的數目明確提示交互式輸入的請求,詳細說明可用的選擇或邊界數值當程序設計語言對格式有嚴格要求時,應保持輸入格式一致設計良好的輸出報表給所有輸出數據加標志15(5)效率

提高程序效率的根本途徑在于設計階段選擇良好的數據結構和算法??紤]程序的效率時應注意的幾點:在使程序運行得更快前先要使其正確提高程序運行速度時要保持程序的正確性在使程序運行得更快些先使其清晰別貪圖效率上的小利而破壞程序的清晰性讓編譯程序去做簡單的優(yōu)化

16(一)程序運行時間

(1)應先簡化算術和邏輯的表達式。

(2)仔細研究嵌套的循環(huán),以確定是否有語句可以從內層往外移。

(3)盡量避免使用多維數組。

(4)盡量避免使用指針和復雜的列表。

(5)使用執(zhí)行時間短的算術運算。

(6)即使語言允許,一般也不要采用混合數據類型。

(7)盡量使用整數表達式和布爾表達式。17(二)存儲器效率

采用結構化程序設計,將程序功能合理分塊,使每個模塊或一組密切相關模塊的程序體積大小與每頁的容量相匹配,可減少頁面調度、減少內外存交換,提高存儲器效率。 在微型計算機系統(tǒng)中,存儲器的容量對軟件設計和編碼的制約比較大。因此要選擇可生成較短目標代碼且存儲壓縮性能優(yōu)良的編譯程序,有時需要采用匯編語言編程。18(三)輸入/輸出的效率

(1)所有輸入/輸出都應該有緩沖,以減少過多的通信次數。

(2)對輔存(如磁盤),應選用最簡單的訪問方法。

(3)輔存的輸入/輸出,應該以塊為單位進行。

(4)終端和打印機的輸入/輸出,應當考慮設備的特性,以提高輸入/輸出的質量和速度。

(5)不應當采用不能被人們所理解的超高效的輸入/輸出。19軟件測試(一)軟件測試基礎1.什么是“測試”“測試”的恰當定義應該是“為了發(fā)現錯誤而執(zhí)行程序”。2.測試策略

在一定的研制時間、研制經費的限制下,通過執(zhí)行有限個測試用例,盡可能多地發(fā)現一些錯誤。3.測試的關鍵

如何測試高產的測試用例204.軟件測試的目標(1)測試是為了發(fā)現程序中的錯誤而執(zhí)行程序的過程(2)好的測試方案是極可能發(fā)現迄今為止尚未發(fā)現的錯誤的測試方案(3)成功的測試是發(fā)現了至今為止尚未發(fā)現的錯誤的測試215.軟件測試準則(1)所有測試都應該能追溯到用戶需求(2)應該遠在測試開始之前就制定出測試計劃(3)把Pareto原理應用到軟件測試中

Pareto原理說明,測試發(fā)現的錯誤中的80%很可能是由程序中20%的模塊造成的(4)應該從“小規(guī)?!睖y試開始,并逐步進行“大規(guī)?!睖y試(5)窮舉測試是不可能的

窮舉測試就是把程序所有可能的執(zhí)行路徑都檢查一遍的測試(6)為了達到最佳的測試效果,應該由獨立的第三方從事測試工作

“最佳效果”是指有最大可能性發(fā)現錯誤的測試226.測試方法

兩種測試方法:黑盒測試和白盒測試黑盒法的特點:測試人員將程序看成一個“黑盒”,不關心程序內部是怎么做的,而只是想檢查程序是否符合它的“功能說明”。所以使用黑盒法時,測試用例是完全根據程序的功能說明來設計的?!咀ⅰ咳绻胗煤诤蟹òl(fā)現程序中所有的錯誤,則必須用輸入數據的所有可能值來檢查程序是否都能產生正確的結果。

23白盒法的特點:需了解程序內部的結構,此時測試用例是根據程序的內部邏輯來設計的。如果想用白盒法來發(fā)現程序中所有的錯誤,則至少必須使程序中的每種可能的路徑都執(zhí)行一次?!咀ⅰ渴褂冒缀蟹〞r還應該認識到:即使試遍所有的路徑,仍不能保證程序符合它的功能要求,因為程序中有些錯誤是與數據有關的。例如:程序錯誤地將語句X:=Y+Z編寫成X:=Y-Z,但測試中執(zhí)行該語句時,變量Z的值恰好是零,這個錯誤就不能被發(fā)現。另外,程序中還可能遺漏了某些路徑。247.測試步驟(1)模塊測試(單元測試)把每個模塊作為一個單獨的實體來測試,通常比較容易設計檢驗模塊正確性的測試方案(2)子系統(tǒng)測試把經過單元測試的模塊放在一起形成一個子系統(tǒng)來測試(3)系統(tǒng)測試把經過測試的子系統(tǒng)裝配成一個完整的系統(tǒng)來測試25(4)驗收測試把軟件系統(tǒng)作為單一的實體進行測試,使用實際數據(系統(tǒng)將來要處理的信息)進行測試(5)平行運行同時運行新開發(fā)出來的系統(tǒng)和將被它取代的舊系統(tǒng),以便比較新舊兩個系統(tǒng)的處理結果,這樣做的目的:(1)可以在準生產環(huán)境中運行新系統(tǒng)而又不冒風險(2)用戶能有一段熟悉新系統(tǒng)的時間(3)可以驗證用戶指南和使用手冊之類的文檔(4)能夠以準生產模式對新系統(tǒng)進行全負荷測試,可以用測試結果驗證性能指標268.測試階段的信息流27(二)軟件測試過程軟件測試過程由單元測試、集成測試和驗收測試三部分組成。1.單元測試(1)單元測試的內容單元測試主要考察模塊接口局部數據結構重要的執(zhí)行通路出錯處理和影響邊界測試28模塊接口1)參數數目和由調用模塊送來的變元的數目、屬性是否一致?2)參數和變元的單位系統(tǒng)是否一致?3)傳送給被調用模塊的變元的目數、屬性是否與參數的數目、屬性相同?4)傳送給被調用模塊的變元的單位系統(tǒng)是否等于參數的單位系統(tǒng)?5)引用內部函數時,變元次序、屬性和數目是否正確?6)是否修改了只作輸入用的變元?7)全程變量的定義和使用在各個模塊中是否一致?29當一個模塊執(zhí)行外部的I/O操作時,需附加以下測試:1)文件屬性正確嗎?2)OPEN語句是否正確?3)緩沖區(qū)大小與記錄長度是否匹配?4)使用文件之前先打開文件了嗎?5)文件結束的條件處理了嗎?6)I/O錯誤查檢處理了嗎?7)輸出信息中有文字書寫錯誤嗎?8)格式說明書與輸入/輸出語句是否一致?30

局部數據結構1)不正確或不一致的數據說明2)錯誤的初始化或沒有賦初值3)變量名的拼寫或縮寫錯誤4)數據類型不相容5)上溢、下溢和地址異常在單元測試時,除局部數據結構外,全程數據對模塊的影響也應檢查。31重要的執(zhí)行通路1)誤解或錯誤理解算術運算的優(yōu)先次序2)混合運算中運算對象的類型彼此不相容3)初始化不正確4)精度不夠5)表達式的符號表示不正確6)不同數據類型的數進行比較7)不正確的邏輯運算符或不正確的優(yōu)先順序8)本應相等,但因精確度不夠使之不等9)差1錯(多一次或少一次循環(huán))10)不正常或不存在的循環(huán)結束條件11)當遇到發(fā)散的循環(huán)時,無法終止循環(huán)12)錯誤地修改循環(huán)變量32

出錯處理1)輸出的出錯信息難以理解2)指出的錯誤并不是所遇到的錯誤3)未進行出錯處理就先進行系統(tǒng)干預4)錯誤處理不正確5)描述錯誤的信息不足以幫助確定錯誤的位置33邊界測試邊界測試是單元測試步驟中最后的,也是最重要的任務,軟件常常在邊界上出錯。例如,在處理n維數組的第n個元素時很可能出錯。因此,在為數據結構、控制變量及數據值設計測試情況時,把測試安排在略低于、等于、略高于他們的最大值或最小值處是很可能發(fā)現錯誤的。34(2)單元測試的方法人工測試人工測試也稱人工代碼審查,既可由程序員自己來完成,也可由審查小組來完成。后者對單元測試很有效,可以查出30%—70%的邏輯設計錯誤和編碼錯誤。計算機測試每一個被測試的單元不都是一個獨立的程序模塊,模塊自己不能運行,必須依靠其它模塊來驅動,同時每一個模塊在整個系統(tǒng)結構中的執(zhí)行往往又調用一些下屬模塊。驅動程序和存根程序。351)驅動程序驅動程序的作用是模擬x的調用模塊,它接收不同測試用例的數據,并把這些數據傳送給被測試的模塊x,然后打印有關的結果。2)存根程序存根程序的作用是模擬被測模塊的下屬模塊,印出對入口的檢驗或操作結果,并把控制歸還給調用他的模塊。驅動程序X存根程序1存根程序i…362.集成測試集成測試是組裝軟件的系統(tǒng)技術,在裝配的過程中對組裝的模塊進行測試。集成測試的目的是發(fā)現與模塊接口有關的問題,它包括了子系統(tǒng)測試和系統(tǒng)測試兩個過程。集成測試方法:非漸增式測試方法——自底向上的結合技術漸增式測試方法——自頂向下的結合技術深度優(yōu)先的結合策略寬度優(yōu)先的結合策略37(1)兩種測試方法及比較漸增式測試方法,是把下一個要測試的模塊同已經測好的模塊結合起來進行測試,測試完成后再把下一個應該測試的模塊結合進來測試,這種方法每次只增加一個模塊。非漸增式測試方法,先分別測試每個模塊,然后再把所有的模塊按設計要求放在一起結合成所要的程序。這兩種測試方法漸增式測試方法要更好些。由于它測試的徹底性,對于提高軟件質量有較大幫助,目前應用軟件均采用此方法進行集成測試。38

非漸增式測試方法原因漸增式測試方法原因測試工作量大要編寫測試用的軟件多較小已測試的模塊可作為部分測試軟件發(fā)現接口錯誤時間晚最后組裝早邊測試邊組裝錯誤定位難最后組裝易邊測試邊組裝軟件測試的徹底性差只進行單元測試和組裝測試好除單元測試外邊組裝邊測試使系統(tǒng)經歷多次回歸測試測試所占用的機器時間短可以多人并行測試長只能由一個人進行測試,測試中有回歸測試測試的人力使用情況充分可并行測試不充分不能進行并行測試測試進度快可并行測試慢只能一個人進行測試用戶的滿意率較低測試不徹底高有回歸測試,測試徹底類原因比較內容39(2)自頂向下的結合在漸增式測試方法中,把模塊結合到軟件系統(tǒng)中去采用自頂向下的結合技術。從主控制模塊開始,沿著控制層次向下移動,逐漸把各個模塊都一一結合起來,從而構成目標系統(tǒng)。40深度優(yōu)先策略先把軟件結構的一條主控制路徑上的所有模塊都結合裝配起來,然后再結合裝配中央或右側的控制路徑,直到所有模塊都被結合進去為止。其中主控制路徑的選擇取決于系統(tǒng)的應用特點,同時也帶有很大任意性,在某種程度上也與人的因素有關。M1-M2-M5-M8-M6-M3-S7-S441寬度優(yōu)先策略

寬度優(yōu)先的結合策略是沿著軟件結構水平地移動,把處于同一個控制層次上的所有模塊組裝起來,然后再組裝下一個控制層次中的所有模塊,如此繼續(xù)進行下去,直到所有模塊都被結合進軟件結構為止。M1-M2-M3-S4-M5-M6-S7-M842自頂向下的結合過程1)用主控程序作為測試驅動模塊,用存根程序代替所有下屬于主控制模塊的模塊;2)選擇一種結合策略,每次用一個實際模塊代換一個存根程序;3)每結合一個模塊,就進行相應的測試;4)為了保證不引進新的錯誤,可以進行回歸測試從2)開始不斷重復進行上述過程,直到構造成完整的軟件結構為止。43(3)自底向上的結合這種結合方法是從軟件結構最底層模塊開始進行裝配和測試。它不需要存根程序,因為從最底層向上結合,在逐步處理以上層次的模塊時所需要的子模塊總可以得到。但這種結合方法需要驅動程序。自底向上結合技術一般支持非漸增式測試方法。44

自底向上的結合過程為:1)把低層模塊組成族,以實現某個特定的軟件子功能;2)為每個族寫一個驅動程序,作為測試的控制,用以協(xié)調測試數據的輸入和輸出;3)對族進行測試;4)去掉驅動程序,沿軟件結構自動向上移動,把子功能族結合起來形成更大的子功能族。45自頂向下集成測試方法優(yōu)點:不需要設計驅動程序,能在測試早期實現并驗證系統(tǒng)的主要功能,發(fā)現上層模塊的接口錯誤;缺點:需要存根程序,并且與存根程序有關的測試較困難,低層關鍵模塊中的錯誤發(fā)現較晚。自底向上集成測試方法優(yōu)點:不需要設計存根程序,測試用例的設計比自頂向下集成測試容易;缺點:直到把最后一個模塊結合進來以前,程序作為一個整體始終不存在。463.確認測試軟件的有效性是確認測試的任務,軟件有效的標準,也是確認測試的基礎。確認測試的目標是:檢查系統(tǒng)的功能、性能要求是否已達到用戶所要求的那樣,文檔資料是否正確、完整,系統(tǒng)的可移植性、兼容性、錯誤的恢復能力和易維護性等是否滿足。

47確認測試對已測試過的純技術性問題不再測試,對用戶特別感興趣的功能和性能需要增加測試,按照用戶的實際使用過程,使用實際數據進行測試。確認測試是以用戶為主進行的,用戶參與設計測試方案,參與實地測試,參與評價測試結果。確認測試屬于黑盒測試。確認測試的結果可能有兩種:功能和性能與用戶要求一致,軟件是可以接受的。功能或性能與用戶的要求有差距。48(三)設計測試方案白盒測試邏輯覆蓋黑盒測試等價類劃分邊界值錯誤推測圖形技術49①②③④1.邏輯覆蓋邏輯覆蓋是以程序內部邏輯為基礎的測試技術,它考慮測試用例對程序內部邏輯覆蓋的程度。最常用的邏輯覆蓋標準主要有以下五種。(1)語句覆蓋語句覆蓋的含義是:選擇足夠的測試用例(測試數據),使程序中每個語句至少都能執(zhí)行一次。50(1)a,b判定取真A>1,B=0,A=2,X>1(2)選擇測試數據A=2,B=0,X=2(3)實現執(zhí)行路徑覆蓋

sacbed512.判定覆蓋判定覆蓋又叫分支覆蓋,它的含義是:選擇足夠的測試用例,使程序中的每個判定至少取得一次“真”值和“假”值,也就是使程序中的每個分支至少執(zhí)行一次。(1)若選擇覆蓋路徑為sacbed和sabd時,測試數據為A=2,B=0,X=3和A=1,B=0,X=1

(2)若選擇覆蓋路徑為sacbd和sabed時,測試數據為A=3,B=0,X=1和A=2,B=1,X=1523.條件覆蓋條件覆蓋的含義是:選擇足夠的測試用例,使得判定中的每個條件取得各種可能的結果。

a點有下述可能結果:A>2,A≤2,B=0,B≠0b點有下述可能結果:A=2,A≠2,X>1,X≤1只要選擇測試數據

A=2,B=0,X=4和

A=1,B=1,X=1就可以滿足條件覆蓋。其覆蓋路徑為sacbed和sabd534.判定/條件覆蓋判定/條件覆蓋能同時滿足判定覆蓋和條件覆蓋兩種覆蓋標準。它的含義是:選擇足夠的測試用例,使得判定表達式中的每個條件都取到各種可能的值,而且每個判定表達式也都取到各種可能的結果。下述兩組測試數據滿足判定/條件覆蓋:A=2,B=0,X=4和A=1,B=1,X=1但這兩組測試數據與前述的條件覆蓋中選取的兩組數據相同,則不能不說,有時判定/條件覆蓋也并不比條件覆蓋更強。545.條件組合覆蓋條件組合覆蓋的含義是:選擇足夠的測試用例,使得每個判定表達式中條件的各種可能組合都至少出現一次。顯然,滿足條件組合覆蓋標準的測試數據,也一定滿足判定覆蓋、條件覆蓋和判定/條件覆蓋,條件組合覆蓋是最強的一個覆蓋標準。共有八種可能的條件組合:(1)A>1,B=0(5)A=2,X>1(2)A>1,B≠0(6)A=2,X≤1(3)A≤1,B=0(7)A≠2,X>1(4)A≤1,B≠0(8)A≠2,X≤155下面四組測試數據可以使上面列出的八種條件組合每種至少出現一次:

A=2,B=0,X=4滿足條件(1)和(5),覆蓋sacbedA=2,B=1,X=1滿足條件(2)和(6),覆蓋sabedA=1,B=0,X=2滿足條件(3)和(7),覆蓋sabedA=1,B=1,X=1滿足條件(4)和(8),覆蓋sabd566.點覆蓋圖論中點覆蓋的含義是:如果連通圖G的子圖G′是連通的,而且包含G的所有結點,則稱G′是G的點覆蓋。7.邊覆蓋圖論中邊覆蓋的含義是:如果連通圖G的子圖G″是連通的,而且包含G的所有邊,則稱G″是G的邊覆蓋。8.路徑覆蓋路徑覆蓋的含義是:選取足夠多測試數據,使程序的每條可能路徑都至少執(zhí)行一次(如果程序圖中有環(huán),則要求每個環(huán)至少經過一次)。572.等價類劃分等價類劃分是用黑盒法設計測試用例的一種技術。窮盡的黑盒測試需要使用所有有效的和無效的輸入數據來測試程序,但這是不可行的。所以只能選取少量的有代表性的輸入數據,以較小的代價暴露出較多的程序錯誤。58如果把所有可能的輸入數據(有效的和無效的)劃分成若干個等價類,則可以合理地做出下述假定:每類中的一個典型值在測試中的作用與這一類中所有其他值的作用相同。因此,可以從每個等價類中只取一組數據作為測試數據。這樣選取的測試數據最有代表性,最可能發(fā)現程序中的錯誤。59(1)劃分等價類1)如果規(guī)定了輸入值的范圍,則可劃分出一個有效的等價類,兩個無效的等價類;2)如果規(guī)定了輸入數據的個數,也可以劃分出一個有效的等價類和兩個無效的等價類;3)如果規(guī)定了輸入數據的一組值,而且程序對不同輸入值做不同處理,則每個允許的輸入值是一個有效的等價類,此外還有一個無效的等價類;604)如果規(guī)定了輸入數據必須遵循的規(guī)則,則可以劃分出一個有效的等價類和若干個無效的等價類;5)如果規(guī)定了輸入數據為整型,則可以劃分出正整數、零和負整數等三個有效類;6)如果程序的處理對象是表格,則應該使用空表,以及含一項或多項的表。61(2)設計測試用例1)為每個等價類編號;2)設計一個新的測試用例,使它盡可能多地覆蓋尚未被覆蓋的有效等價類,重復這一步驟直到所有有效等價類都被覆蓋為止;3)設計一個新的測試用例,使它覆蓋一個而且只覆蓋一個尚未被覆蓋的無效等價類,重復這一步驟,直到所有無效等價類都被覆蓋為止。623.邊界值分析使用剛好等于、小于或大于邊界值的數據來進行測試,有較大的可能發(fā)現錯誤。用邊界值分析技術設計測試方案首先應確定邊界情況,這需要經驗和創(chuàng)造性,通常輸入等價類和輸出等價類的邊界,是應該著重測試的程序邊界情況。63

通常設計測試方案時總是聯(lián)合使用等價劃分和邊界值分析兩種技術,協(xié)調邊界值分析和等價類劃分二者之間的差別:邊界值分析技術不是從一個等價類中任選一個測試用例作代表;邊界值分析技術不僅注意輸入條件,它還根據輸出情況設計測試用例。

64例:計算機輸出整數的范圍在-32768~32767之間,若我們要測試機器所能表示整數的邊界情況,則有如下測試方案和輸出結果。輸入-32769,輸出“無效輸入”輸入-32768,輸出-32768輸入-32767,輸出-32767輸入32766,輸出32766輸入32767,輸出32767輸入32768,輸出“無效輸入”654.錯誤推測人們也可以通過經驗或直覺推測程序中可能存在的各種錯誤,有針對性地設計檢查這些錯誤的測試用例,這就是錯誤推測技術。錯誤推測技術沒有確定的步驟,在很大程度上是憑經驗進行的。66(四)綜合策略白盒法和黑盒法各有長處和短處,每種方法都可提供一組有用的測試用例,這種測試用例容易發(fā)現某種類型的錯誤,但不易發(fā)現其他類型的錯誤,然而沒有一種方法能提供一組“完整的”測試用例。因此,實際軟件測試方案設計是不同方法的綜合應用。比較合理的策略是:(1)在任何情況下都需使用邊界值分析(2)必要的話,再用等價分類法補充一些測試用例(3)再用錯誤推測法附加測試用例(4)檢查上述例子的邏輯覆蓋程度,如果未能滿足某些覆蓋標準,則再增加足夠的測試用例。67(五)綜合應用舉例例:程序TRIANGLE讀入三個整數值,代表三角形的三條邊,判斷這三個值構成的三角形屬于等邊、等腰、任意三角形中的哪一種。第一步,綜合使用邊界值分析、等價類劃分和錯誤推測技術,設計出以下十一種應測試的情況。681.正常的任意三角形;2.正常的等邊三角形;3.正常的等腰三角形;4.退化的三角形;5.三條邊不構成三角形;6.一條邊長度為零;7.兩條邊長度為零;8.三條邊長度全為零;9.輸入數據中包含負整數;10.輸入數據不全;11.輸入數據中包含非整數型的數據;有效等價類69無效等價類測試功能測試數據

a

b

c1.等邊2.等腰3.任意4.非三角形5.退化情況6.零數據7.負數據8.遺漏數據9.無效數據10,10,1010,10,178,10,1210,10,2110,5,50,0,00,0,170,10,12-10,-10,-10-10,-10,17-8,10,17-,-,-10,-,-8,10,-A,B,C-,-,-10,17,1012,8,1010,21,105,10,5-,-,-0,17,012,0,10-,-,--10,17,-1017,-8,10-,-,--,10,-8,-,10-,-,--,-,-17,10,1010,12,821,10,105,5,10-,-,-17,0,012,10,0-,-,-17,-10,-1010,17,-8-,-,--,-,10-,8,10-,-,-70第二步,為上述11種情況設計測試用例第三步,依據測試用例,檢查覆蓋程度。編號測試數據覆蓋邊110,10,101,2,3,4,5,6,7,82a10,10,171,2,3,4,5,15,19,20,82b10,17,101,2,3,4,14,18,19,20,82c17,10,101,2,3,4,14,16,17,19,20,83a8,10,121,2,3,4,14,16,21,22,83b8,12,101,2,3,4,14,16,21,22,83c10,12,81,2,3,4,

溫馨提示

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

評論

0/150

提交評論