版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第7章實現(xiàn)7.1編碼7.2軟件測試基礎(chǔ)7.3單元測試7.4集成測試7.5確認(rèn)測試7.6白盒測試技術(shù)7.7黑盒測試技術(shù)7.8調(diào)試7.9軟件可靠性1編碼
編碼的任務(wù)是為每個模塊編寫程序,也就是說將詳細(xì)設(shè)計的結(jié)果轉(zhuǎn)換成用某種程序設(shè)計語言寫的程序。編碼階段結(jié)束時交付的是不含有語法錯誤的程序和有關(guān)程序說明的“內(nèi)部文檔”。2程序設(shè)計語言1.程序設(shè)計語言的分類通常我們依據(jù)對數(shù)據(jù)存儲和操作的抽象程度,把品種繁多的程序設(shè)計語言分成機器、匯編、高級和第四代語言四大類。(1)機器語言機器語言主要用0和1代碼對計算機硬件的高低電平進(jìn)行指代,用0、1串對計算機能進(jìn)行的操作及存儲地址等進(jìn)行編碼,是計算機的數(shù)據(jù)操作與存儲能力的第一級邏輯抽象。目前幾乎沒有人用它編程。3(2)匯編語言
匯編語言用英文字母、數(shù)字和一些特殊符號對機器語言指令和存儲空間及數(shù)據(jù)進(jìn)行編碼,為0,1串進(jìn)行命名,可見匯編語言是對機器語言的一級抽象,是對計算機語言的二級抽象。有多少種帶有常用指令集合的微處理機系統(tǒng)結(jié)構(gòu),就有多少種從屬于機器語言的匯編語言。4(3)高級語言
高級語言是把人們利用機器語言或匯編語言編程時所用數(shù)據(jù)的邏輯結(jié)構(gòu)和對數(shù)據(jù)進(jìn)行使用時的操作序列的邏輯結(jié)構(gòu)歸納抽象為類型和語句,利用英文字母、數(shù)字和一些符號通過一定規(guī)則(語法)對其編碼,所用編碼的自然語言含義與對應(yīng)邏輯結(jié)構(gòu)的意義盡量接近。高級語言不依賴于實現(xiàn)這種語言的計算機。5(4)第四代語言
所謂第四代語言就是把某一領(lǐng)域內(nèi)的通用數(shù)據(jù)結(jié)構(gòu)和功能模塊用高級語言進(jìn)行編碼,一般通過顯示屏幕利用菜單形式和用戶進(jìn)行會話,由用戶通過鍵盤等選擇自己所用功能模塊,并填寫相應(yīng)參數(shù),可見第四代語言其實是計算機在某一領(lǐng)域的應(yīng)用,是計算機與人之間進(jìn)行信息交換的工具,是碼義結(jié)合的會話符號系統(tǒng)。62.選擇程序設(shè)計語言的標(biāo)準(zhǔn)(1)理想標(biāo)準(zhǔn)選用的高級語言應(yīng)該有理想的模塊化機制,可讀性好的控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)為了便于調(diào)試和提高軟件的可靠性,語言特點應(yīng)該使編譯程序能夠盡可能多地發(fā)現(xiàn)程序中的錯誤。為了降低軟件開發(fā)和維護的成本,選用的語言應(yīng)該有良好的獨立編譯機制。7(1)實用標(biāo)準(zhǔn)如果系統(tǒng)是由用戶負(fù)責(zé)維護的,那么我們就應(yīng)該選擇用戶熟悉的語言書寫程序。所選擇的語言應(yīng)該與目標(biāo)系統(tǒng)所能提供的編譯程序相匹配。語言有可利用的軟件工具,使目標(biāo)系統(tǒng)的實現(xiàn)和驗證變得容易??筛鶕?jù)工程的規(guī)模從現(xiàn)有的語言中選擇,也可以根據(jù)需要設(shè)計一種新的語言,以滿足用戶的需求。8在與目標(biāo)設(shè)計不矛盾的情況下,應(yīng)該選擇一種程序員所熟悉的語言。應(yīng)該選擇一種標(biāo)準(zhǔn)化程度高,程序可移植性好的語言。選擇語言應(yīng)充分考慮目標(biāo)系統(tǒng)的應(yīng)用范圍。
在工程和科學(xué)計算領(lǐng)域中FORTRAN仍是主要語言,在商業(yè)應(yīng)用方面通常采用COBOL語言,在系統(tǒng)程序及實時應(yīng)用領(lǐng)域采用C語言和Ada語言,在組合論應(yīng)用方面較多地采用LISP語言,在表述知識和邏輯推理方面采用PROLOG語言。93.編碼風(fēng)格編碼風(fēng)格(CodingStyle),又稱程序設(shè)計風(fēng)格,是程序設(shè)計者在創(chuàng)作中喜歡或習(xí)慣使用的表達(dá)自己作品的方式。 從軟件工程學(xué)的角度,良好的編碼風(fēng)格主要體現(xiàn)在程序代碼邏輯清晰,易讀、易理解、易維護,能高效利用系統(tǒng)資源等各個方面。 編碼風(fēng)格強調(diào)“清晰第一”。清晰和效率往往是矛盾的。強調(diào)“清晰第一”,并非不要效率,而是在清晰的前提下求取效率。10(1)程序內(nèi)部文檔大型軟件系統(tǒng)的程序內(nèi)部必須帶有說明性材料,即“內(nèi)部文檔”,內(nèi)部文檔可用注釋語句書寫,程序中適當(dāng)?shù)丶由献⑨?,是提高程序可讀性的有力手段。注釋分為兩類:序言性注釋和描述性注釋序言性注釋出現(xiàn)在模塊的首部,其內(nèi)容一般包括:有關(guān)模塊功能的說明界面描述。包括調(diào)用語句格式,所有參數(shù)的解釋和該模塊需調(diào)用的模塊名等。一些重要變量的使用、限制和一些其它信息。開發(fā)歷史。如作者、復(fù)查者、復(fù)查日期、修改日期和敘述等。11描述性注釋嵌在程序之中,描述性注釋又有功能性的和狀態(tài)性的,功能性注釋說明程序段的功能,通??煞旁诔绦蚨沃?,狀態(tài)性注釋說明數(shù)據(jù)的狀態(tài),通??煞旁诔绦蚨沃?。對于注釋,還應(yīng)注意以下幾點:注釋應(yīng)該與程序一致注釋應(yīng)該提供一些從程序本身難以得到的信息,而不是重復(fù)程序語句是對語句段做注釋,而不是對每個語句作注釋提高可讀性的另一個主要手段是采用縮排法,它使程序的書寫反映其邏輯結(jié)構(gòu)的深度。12(2)數(shù)據(jù)說明數(shù)據(jù)說明的次序應(yīng)該標(biāo)準(zhǔn)化當(dāng)多個變量名在一個語句中說明時,應(yīng)該按字母順序排列這些變量當(dāng)設(shè)計的時候使用了一個復(fù)雜的數(shù)據(jù)結(jié)構(gòu),應(yīng)該用注解說明使用程序設(shè)計語言實現(xiàn)這個數(shù)據(jù)結(jié)構(gòu)的方法和特點13(3)語句構(gòu)造不要為了節(jié)省空間而把多個語句寫在同一行盡量避免復(fù)雜的條件測試盡量減少對“非”條件的測試避免大量使用循環(huán)嵌套和條件嵌套利用括號使邏輯表達(dá)式或算術(shù)表達(dá)式的運算次序清晰直觀14(4)輸入輸出對所有輸入數(shù)據(jù)都進(jìn)行檢驗檢查輸入項重要組合的合法性保持輸入格式簡單使用數(shù)據(jù)結(jié)束標(biāo)記,不要要求用戶指定數(shù)據(jù)的數(shù)目明確提示交互式輸入的請求,詳細(xì)說明可用的選擇或邊界數(shù)值當(dāng)程序設(shè)計語言對格式有嚴(yán)格要求時,應(yīng)保持輸入格式一致設(shè)計良好的輸出報表給所有輸出數(shù)據(jù)加標(biāo)志15(5)效率
提高程序效率的根本途徑在于設(shè)計階段選擇良好的數(shù)據(jù)結(jié)構(gòu)和算法??紤]程序的效率時應(yīng)注意的幾點:在使程序運行得更快前先要使其正確提高程序運行速度時要保持程序的正確性在使程序運行得更快些先使其清晰別貪圖效率上的小利而破壞程序的清晰性讓編譯程序去做簡單的優(yōu)化
16(一)程序運行時間
(1)應(yīng)先簡化算術(shù)和邏輯的表達(dá)式。
(2)仔細(xì)研究嵌套的循環(huán),以確定是否有語句可以從內(nèi)層往外移。
(3)盡量避免使用多維數(shù)組。
(4)盡量避免使用指針和復(fù)雜的列表。
(5)使用執(zhí)行時間短的算術(shù)運算。
(6)即使語言允許,一般也不要采用混合數(shù)據(jù)類型。
(7)盡量使用整數(shù)表達(dá)式和布爾表達(dá)式。17(二)存儲器效率
采用結(jié)構(gòu)化程序設(shè)計,將程序功能合理分塊,使每個模塊或一組密切相關(guān)模塊的程序體積大小與每頁的容量相匹配,可減少頁面調(diào)度、減少內(nèi)外存交換,提高存儲器效率。 在微型計算機系統(tǒng)中,存儲器的容量對軟件設(shè)計和編碼的制約比較大。因此要選擇可生成較短目標(biāo)代碼且存儲壓縮性能優(yōu)良的編譯程序,有時需要采用匯編語言編程。18(三)輸入/輸出的效率
(1)所有輸入/輸出都應(yīng)該有緩沖,以減少過多的通信次數(shù)。
(2)對輔存(如磁盤),應(yīng)選用最簡單的訪問方法。
(3)輔存的輸入/輸出,應(yīng)該以塊為單位進(jìn)行。
(4)終端和打印機的輸入/輸出,應(yīng)當(dāng)考慮設(shè)備的特性,以提高輸入/輸出的質(zhì)量和速度。
(5)不應(yīng)當(dāng)采用不能被人們所理解的超高效的輸入/輸出。19軟件測試(一)軟件測試基礎(chǔ)1.什么是“測試”“測試”的恰當(dāng)定義應(yīng)該是“為了發(fā)現(xiàn)錯誤而執(zhí)行程序”。2.測試策略
在一定的研制時間、研制經(jīng)費的限制下,通過執(zhí)行有限個測試用例,盡可能多地發(fā)現(xiàn)一些錯誤。3.測試的關(guān)鍵
如何測試高產(chǎn)的測試用例204.軟件測試的目標(biāo)(1)測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程(2)好的測試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯誤的測試方案(3)成功的測試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯誤的測試215.軟件測試準(zhǔn)則(1)所有測試都應(yīng)該能追溯到用戶需求(2)應(yīng)該遠(yuǎn)在測試開始之前就制定出測試計劃(3)把Pareto原理應(yīng)用到軟件測試中
Pareto原理說明,測試發(fā)現(xiàn)的錯誤中的80%很可能是由程序中20%的模塊造成的(4)應(yīng)該從“小規(guī)?!睖y試開始,并逐步進(jìn)行“大規(guī)?!睖y試(5)窮舉測試是不可能的
窮舉測試就是把程序所有可能的執(zhí)行路徑都檢查一遍的測試(6)為了達(dá)到最佳的測試效果,應(yīng)該由獨立的第三方從事測試工作
“最佳效果”是指有最大可能性發(fā)現(xiàn)錯誤的測試226.測試方法
兩種測試方法:黑盒測試和白盒測試黑盒法的特點:測試人員將程序看成一個“黑盒”,不關(guān)心程序內(nèi)部是怎么做的,而只是想檢查程序是否符合它的“功能說明”。所以使用黑盒法時,測試用例是完全根據(jù)程序的功能說明來設(shè)計的?!咀ⅰ咳绻胗煤诤蟹òl(fā)現(xiàn)程序中所有的錯誤,則必須用輸入數(shù)據(jù)的所有可能值來檢查程序是否都能產(chǎn)生正確的結(jié)果。
23白盒法的特點:需了解程序內(nèi)部的結(jié)構(gòu),此時測試用例是根據(jù)程序的內(nèi)部邏輯來設(shè)計的。如果想用白盒法來發(fā)現(xiàn)程序中所有的錯誤,則至少必須使程序中的每種可能的路徑都執(zhí)行一次?!咀ⅰ渴褂冒缀蟹〞r還應(yīng)該認(rèn)識到:即使試遍所有的路徑,仍不能保證程序符合它的功能要求,因為程序中有些錯誤是與數(shù)據(jù)有關(guān)的。例如:程序錯誤地將語句X:=Y+Z編寫成X:=Y-Z,但測試中執(zhí)行該語句時,變量Z的值恰好是零,這個錯誤就不能被發(fā)現(xiàn)。另外,程序中還可能遺漏了某些路徑。247.測試步驟(1)模塊測試(單元測試)把每個模塊作為一個單獨的實體來測試,通常比較容易設(shè)計檢驗?zāi)K正確性的測試方案(2)子系統(tǒng)測試把經(jīng)過單元測試的模塊放在一起形成一個子系統(tǒng)來測試(3)系統(tǒng)測試把經(jīng)過測試的子系統(tǒng)裝配成一個完整的系統(tǒng)來測試25(4)驗收測試把軟件系統(tǒng)作為單一的實體進(jìn)行測試,使用實際數(shù)據(jù)(系統(tǒng)將來要處理的信息)進(jìn)行測試(5)平行運行同時運行新開發(fā)出來的系統(tǒng)和將被它取代的舊系統(tǒng),以便比較新舊兩個系統(tǒng)的處理結(jié)果,這樣做的目的:(1)可以在準(zhǔn)生產(chǎn)環(huán)境中運行新系統(tǒng)而又不冒風(fēng)險(2)用戶能有一段熟悉新系統(tǒng)的時間(3)可以驗證用戶指南和使用手冊之類的文檔(4)能夠以準(zhǔn)生產(chǎn)模式對新系統(tǒng)進(jìn)行全負(fù)荷測試,可以用測試結(jié)果驗證性能指標(biāo)268.測試階段的信息流27(二)軟件測試過程軟件測試過程由單元測試、集成測試和驗收測試三部分組成。1.單元測試(1)單元測試的內(nèi)容單元測試主要考察模塊接口局部數(shù)據(jù)結(jié)構(gòu)重要的執(zhí)行通路出錯處理和影響邊界測試28模塊接口1)參數(shù)數(shù)目和由調(diào)用模塊送來的變元的數(shù)目、屬性是否一致?2)參數(shù)和變元的單位系統(tǒng)是否一致?3)傳送給被調(diào)用模塊的變元的目數(shù)、屬性是否與參數(shù)的數(shù)目、屬性相同?4)傳送給被調(diào)用模塊的變元的單位系統(tǒng)是否等于參數(shù)的單位系統(tǒng)?5)引用內(nèi)部函數(shù)時,變元次序、屬性和數(shù)目是否正確?6)是否修改了只作輸入用的變元?7)全程變量的定義和使用在各個模塊中是否一致?29當(dāng)一個模塊執(zhí)行外部的I/O操作時,需附加以下測試:1)文件屬性正確嗎?2)OPEN語句是否正確?3)緩沖區(qū)大小與記錄長度是否匹配?4)使用文件之前先打開文件了嗎?5)文件結(jié)束的條件處理了嗎?6)I/O錯誤查檢處理了嗎?7)輸出信息中有文字書寫錯誤嗎?8)格式說明書與輸入/輸出語句是否一致?30
局部數(shù)據(jù)結(jié)構(gòu)1)不正確或不一致的數(shù)據(jù)說明2)錯誤的初始化或沒有賦初值3)變量名的拼寫或縮寫錯誤4)數(shù)據(jù)類型不相容5)上溢、下溢和地址異常在單元測試時,除局部數(shù)據(jù)結(jié)構(gòu)外,全程數(shù)據(jù)對模塊的影響也應(yīng)檢查。31重要的執(zhí)行通路1)誤解或錯誤理解算術(shù)運算的優(yōu)先次序2)混合運算中運算對象的類型彼此不相容3)初始化不正確4)精度不夠5)表達(dá)式的符號表示不正確6)不同數(shù)據(jù)類型的數(shù)進(jìn)行比較7)不正確的邏輯運算符或不正確的優(yōu)先順序8)本應(yīng)相等,但因精確度不夠使之不等9)差1錯(多一次或少一次循環(huán))10)不正?;虿淮嬖诘难h(huán)結(jié)束條件11)當(dāng)遇到發(fā)散的循環(huán)時,無法終止循環(huán)12)錯誤地修改循環(huán)變量32
出錯處理1)輸出的出錯信息難以理解2)指出的錯誤并不是所遇到的錯誤3)未進(jìn)行出錯處理就先進(jìn)行系統(tǒng)干預(yù)4)錯誤處理不正確5)描述錯誤的信息不足以幫助確定錯誤的位置33邊界測試邊界測試是單元測試步驟中最后的,也是最重要的任務(wù),軟件常常在邊界上出錯。例如,在處理n維數(shù)組的第n個元素時很可能出錯。因此,在為數(shù)據(jù)結(jié)構(gòu)、控制變量及數(shù)據(jù)值設(shè)計測試情況時,把測試安排在略低于、等于、略高于他們的最大值或最小值處是很可能發(fā)現(xiàn)錯誤的。34(2)單元測試的方法人工測試人工測試也稱人工代碼審查,既可由程序員自己來完成,也可由審查小組來完成。后者對單元測試很有效,可以查出30%—70%的邏輯設(shè)計錯誤和編碼錯誤。計算機測試每一個被測試的單元不都是一個獨立的程序模塊,模塊自己不能運行,必須依靠其它模塊來驅(qū)動,同時每一個模塊在整個系統(tǒng)結(jié)構(gòu)中的執(zhí)行往往又調(diào)用一些下屬模塊。驅(qū)動程序和存根程序。351)驅(qū)動程序驅(qū)動程序的作用是模擬x的調(diào)用模塊,它接收不同測試用例的數(shù)據(jù),并把這些數(shù)據(jù)傳送給被測試的模塊x,然后打印有關(guān)的結(jié)果。2)存根程序存根程序的作用是模擬被測模塊的下屬模塊,印出對入口的檢驗或操作結(jié)果,并把控制歸還給調(diào)用他的模塊。驅(qū)動程序X存根程序1存根程序i…362.集成測試集成測試是組裝軟件的系統(tǒng)技術(shù),在裝配的過程中對組裝的模塊進(jìn)行測試。集成測試的目的是發(fā)現(xiàn)與模塊接口有關(guān)的問題,它包括了子系統(tǒng)測試和系統(tǒng)測試兩個過程。集成測試方法:非漸增式測試方法——自底向上的結(jié)合技術(shù)漸增式測試方法——自頂向下的結(jié)合技術(shù)深度優(yōu)先的結(jié)合策略寬度優(yōu)先的結(jié)合策略37(1)兩種測試方法及比較漸增式測試方法,是把下一個要測試的模塊同已經(jīng)測好的模塊結(jié)合起來進(jìn)行測試,測試完成后再把下一個應(yīng)該測試的模塊結(jié)合進(jìn)來測試,這種方法每次只增加一個模塊。非漸增式測試方法,先分別測試每個模塊,然后再把所有的模塊按設(shè)計要求放在一起結(jié)合成所要的程序。這兩種測試方法漸增式測試方法要更好些。由于它測試的徹底性,對于提高軟件質(zhì)量有較大幫助,目前應(yīng)用軟件均采用此方法進(jìn)行集成測試。38
非漸增式測試方法原因漸增式測試方法原因測試工作量大要編寫測試用的軟件多較小已測試的模塊可作為部分測試軟件發(fā)現(xiàn)接口錯誤時間晚最后組裝早邊測試邊組裝錯誤定位難最后組裝易邊測試邊組裝軟件測試的徹底性差只進(jìn)行單元測試和組裝測試好除單元測試外邊組裝邊測試使系統(tǒng)經(jīng)歷多次回歸測試測試所占用的機器時間短可以多人并行測試長只能由一個人進(jìn)行測試,測試中有回歸測試測試的人力使用情況充分可并行測試不充分不能進(jìn)行并行測試測試進(jìn)度快可并行測試慢只能一個人進(jìn)行測試用戶的滿意率較低測試不徹底高有回歸測試,測試徹底類原因比較內(nèi)容39(2)自頂向下的結(jié)合在漸增式測試方法中,把模塊結(jié)合到軟件系統(tǒng)中去采用自頂向下的結(jié)合技術(shù)。從主控制模塊開始,沿著控制層次向下移動,逐漸把各個模塊都一一結(jié)合起來,從而構(gòu)成目標(biāo)系統(tǒng)。40深度優(yōu)先策略先把軟件結(jié)構(gòu)的一條主控制路徑上的所有模塊都結(jié)合裝配起來,然后再結(jié)合裝配中央或右側(cè)的控制路徑,直到所有模塊都被結(jié)合進(jìn)去為止。其中主控制路徑的選擇取決于系統(tǒng)的應(yīng)用特點,同時也帶有很大任意性,在某種程度上也與人的因素有關(guān)。M1-M2-M5-M8-M6-M3-S7-S441寬度優(yōu)先策略
寬度優(yōu)先的結(jié)合策略是沿著軟件結(jié)構(gòu)水平地移動,把處于同一個控制層次上的所有模塊組裝起來,然后再組裝下一個控制層次中的所有模塊,如此繼續(xù)進(jìn)行下去,直到所有模塊都被結(jié)合進(jìn)軟件結(jié)構(gòu)為止。M1-M2-M3-S4-M5-M6-S7-M842自頂向下的結(jié)合過程1)用主控程序作為測試驅(qū)動模塊,用存根程序代替所有下屬于主控制模塊的模塊;2)選擇一種結(jié)合策略,每次用一個實際模塊代換一個存根程序;3)每結(jié)合一個模塊,就進(jìn)行相應(yīng)的測試;4)為了保證不引進(jìn)新的錯誤,可以進(jìn)行回歸測試從2)開始不斷重復(fù)進(jìn)行上述過程,直到構(gòu)造成完整的軟件結(jié)構(gòu)為止。43(3)自底向上的結(jié)合這種結(jié)合方法是從軟件結(jié)構(gòu)最底層模塊開始進(jìn)行裝配和測試。它不需要存根程序,因為從最底層向上結(jié)合,在逐步處理以上層次的模塊時所需要的子模塊總可以得到。但這種結(jié)合方法需要驅(qū)動程序。自底向上結(jié)合技術(shù)一般支持非漸增式測試方法。44
自底向上的結(jié)合過程為:1)把低層模塊組成族,以實現(xiàn)某個特定的軟件子功能;2)為每個族寫一個驅(qū)動程序,作為測試的控制,用以協(xié)調(diào)測試數(shù)據(jù)的輸入和輸出;3)對族進(jìn)行測試;4)去掉驅(qū)動程序,沿軟件結(jié)構(gòu)自動向上移動,把子功能族結(jié)合起來形成更大的子功能族。45自頂向下集成測試方法優(yōu)點:不需要設(shè)計驅(qū)動程序,能在測試早期實現(xiàn)并驗證系統(tǒng)的主要功能,發(fā)現(xiàn)上層模塊的接口錯誤;缺點:需要存根程序,并且與存根程序有關(guān)的測試較困難,低層關(guān)鍵模塊中的錯誤發(fā)現(xiàn)較晚。自底向上集成測試方法優(yōu)點:不需要設(shè)計存根程序,測試用例的設(shè)計比自頂向下集成測試容易;缺點:直到把最后一個模塊結(jié)合進(jìn)來以前,程序作為一個整體始終不存在。463.確認(rèn)測試軟件的有效性是確認(rèn)測試的任務(wù),軟件有效的標(biāo)準(zhǔn),也是確認(rèn)測試的基礎(chǔ)。確認(rèn)測試的目標(biāo)是:檢查系統(tǒng)的功能、性能要求是否已達(dá)到用戶所要求的那樣,文檔資料是否正確、完整,系統(tǒng)的可移植性、兼容性、錯誤的恢復(fù)能力和易維護性等是否滿足。
47確認(rèn)測試對已測試過的純技術(shù)性問題不再測試,對用戶特別感興趣的功能和性能需要增加測試,按照用戶的實際使用過程,使用實際數(shù)據(jù)進(jìn)行測試。確認(rèn)測試是以用戶為主進(jìn)行的,用戶參與設(shè)計測試方案,參與實地測試,參與評價測試結(jié)果。確認(rèn)測試屬于黑盒測試。確認(rèn)測試的結(jié)果可能有兩種:功能和性能與用戶要求一致,軟件是可以接受的。功能或性能與用戶的要求有差距。48(三)設(shè)計測試方案白盒測試邏輯覆蓋黑盒測試等價類劃分邊界值錯誤推測圖形技術(shù)49①②③④1.邏輯覆蓋邏輯覆蓋是以程序內(nèi)部邏輯為基礎(chǔ)的測試技術(shù),它考慮測試用例對程序內(nèi)部邏輯覆蓋的程度。最常用的邏輯覆蓋標(biāo)準(zhǔn)主要有以下五種。(1)語句覆蓋語句覆蓋的含義是:選擇足夠的測試用例(測試數(shù)據(jù)),使程序中每個語句至少都能執(zhí)行一次。50(1)a,b判定取真A>1,B=0,A=2,X>1(2)選擇測試數(shù)據(jù)A=2,B=0,X=2(3)實現(xiàn)執(zhí)行路徑覆蓋
sacbed512.判定覆蓋判定覆蓋又叫分支覆蓋,它的含義是:選擇足夠的測試用例,使程序中的每個判定至少取得一次“真”值和“假”值,也就是使程序中的每個分支至少執(zhí)行一次。(1)若選擇覆蓋路徑為sacbed和sabd時,測試數(shù)據(jù)為A=2,B=0,X=3和A=1,B=0,X=1
(2)若選擇覆蓋路徑為sacbd和sabed時,測試數(shù)據(jù)為A=3,B=0,X=1和A=2,B=1,X=1523.條件覆蓋條件覆蓋的含義是:選擇足夠的測試用例,使得判定中的每個條件取得各種可能的結(jié)果。
a點有下述可能結(jié)果:A>2,A≤2,B=0,B≠0b點有下述可能結(jié)果:A=2,A≠2,X>1,X≤1只要選擇測試數(shù)據(jù)
A=2,B=0,X=4和
A=1,B=1,X=1就可以滿足條件覆蓋。其覆蓋路徑為sacbed和sabd534.判定/條件覆蓋判定/條件覆蓋能同時滿足判定覆蓋和條件覆蓋兩種覆蓋標(biāo)準(zhǔn)。它的含義是:選擇足夠的測試用例,使得判定表達(dá)式中的每個條件都取到各種可能的值,而且每個判定表達(dá)式也都取到各種可能的結(jié)果。下述兩組測試數(shù)據(jù)滿足判定/條件覆蓋:A=2,B=0,X=4和A=1,B=1,X=1但這兩組測試數(shù)據(jù)與前述的條件覆蓋中選取的兩組數(shù)據(jù)相同,則不能不說,有時判定/條件覆蓋也并不比條件覆蓋更強。545.條件組合覆蓋條件組合覆蓋的含義是:選擇足夠的測試用例,使得每個判定表達(dá)式中條件的各種可能組合都至少出現(xiàn)一次。顯然,滿足條件組合覆蓋標(biāo)準(zhǔn)的測試數(shù)據(jù),也一定滿足判定覆蓋、條件覆蓋和判定/條件覆蓋,條件組合覆蓋是最強的一個覆蓋標(biāo)準(zhǔn)。共有八種可能的條件組合:(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下面四組測試數(shù)據(jù)可以使上面列出的八種條件組合每種至少出現(xiàn)一次:
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的所有結(jié)點,則稱G′是G的點覆蓋。7.邊覆蓋圖論中邊覆蓋的含義是:如果連通圖G的子圖G″是連通的,而且包含G的所有邊,則稱G″是G的邊覆蓋。8.路徑覆蓋路徑覆蓋的含義是:選取足夠多測試數(shù)據(jù),使程序的每條可能路徑都至少執(zhí)行一次(如果程序圖中有環(huán),則要求每個環(huán)至少經(jīng)過一次)。572.等價類劃分等價類劃分是用黑盒法設(shè)計測試用例的一種技術(shù)。窮盡的黑盒測試需要使用所有有效的和無效的輸入數(shù)據(jù)來測試程序,但這是不可行的。所以只能選取少量的有代表性的輸入數(shù)據(jù),以較小的代價暴露出較多的程序錯誤。58如果把所有可能的輸入數(shù)據(jù)(有效的和無效的)劃分成若干個等價類,則可以合理地做出下述假定:每類中的一個典型值在測試中的作用與這一類中所有其他值的作用相同。因此,可以從每個等價類中只取一組數(shù)據(jù)作為測試數(shù)據(jù)。這樣選取的測試數(shù)據(jù)最有代表性,最可能發(fā)現(xiàn)程序中的錯誤。59(1)劃分等價類1)如果規(guī)定了輸入值的范圍,則可劃分出一個有效的等價類,兩個無效的等價類;2)如果規(guī)定了輸入數(shù)據(jù)的個數(shù),也可以劃分出一個有效的等價類和兩個無效的等價類;3)如果規(guī)定了輸入數(shù)據(jù)的一組值,而且程序?qū)Σ煌斎胫底霾煌幚?,則每個允許的輸入值是一個有效的等價類,此外還有一個無效的等價類;604)如果規(guī)定了輸入數(shù)據(jù)必須遵循的規(guī)則,則可以劃分出一個有效的等價類和若干個無效的等價類;5)如果規(guī)定了輸入數(shù)據(jù)為整型,則可以劃分出正整數(shù)、零和負(fù)整數(shù)等三個有效類;6)如果程序的處理對象是表格,則應(yīng)該使用空表,以及含一項或多項的表。61(2)設(shè)計測試用例1)為每個等價類編號;2)設(shè)計一個新的測試用例,使它盡可能多地覆蓋尚未被覆蓋的有效等價類,重復(fù)這一步驟直到所有有效等價類都被覆蓋為止;3)設(shè)計一個新的測試用例,使它覆蓋一個而且只覆蓋一個尚未被覆蓋的無效等價類,重復(fù)這一步驟,直到所有無效等價類都被覆蓋為止。623.邊界值分析使用剛好等于、小于或大于邊界值的數(shù)據(jù)來進(jìn)行測試,有較大的可能發(fā)現(xiàn)錯誤。用邊界值分析技術(shù)設(shè)計測試方案首先應(yīng)確定邊界情況,這需要經(jīng)驗和創(chuàng)造性,通常輸入等價類和輸出等價類的邊界,是應(yīng)該著重測試的程序邊界情況。63
通常設(shè)計測試方案時總是聯(lián)合使用等價劃分和邊界值分析兩種技術(shù),協(xié)調(diào)邊界值分析和等價類劃分二者之間的差別:邊界值分析技術(shù)不是從一個等價類中任選一個測試用例作代表;邊界值分析技術(shù)不僅注意輸入條件,它還根據(jù)輸出情況設(shè)計測試用例。
64例:計算機輸出整數(shù)的范圍在-32768~32767之間,若我們要測試機器所能表示整數(shù)的邊界情況,則有如下測試方案和輸出結(jié)果。輸入-32769,輸出“無效輸入”輸入-32768,輸出-32768輸入-32767,輸出-32767輸入32766,輸出32766輸入32767,輸出32767輸入32768,輸出“無效輸入”654.錯誤推測人們也可以通過經(jīng)驗或直覺推測程序中可能存在的各種錯誤,有針對性地設(shè)計檢查這些錯誤的測試用例,這就是錯誤推測技術(shù)。錯誤推測技術(shù)沒有確定的步驟,在很大程度上是憑經(jīng)驗進(jìn)行的。66(四)綜合策略白盒法和黑盒法各有長處和短處,每種方法都可提供一組有用的測試用例,這種測試用例容易發(fā)現(xiàn)某種類型的錯誤,但不易發(fā)現(xiàn)其他類型的錯誤,然而沒有一種方法能提供一組“完整的”測試用例。因此,實際軟件測試方案設(shè)計是不同方法的綜合應(yīng)用。比較合理的策略是:(1)在任何情況下都需使用邊界值分析(2)必要的話,再用等價分類法補充一些測試用例(3)再用錯誤推測法附加測試用例(4)檢查上述例子的邏輯覆蓋程度,如果未能滿足某些覆蓋標(biāo)準(zhǔn),則再增加足夠的測試用例。67(五)綜合應(yīng)用舉例例:程序TRIANGLE讀入三個整數(shù)值,代表三角形的三條邊,判斷這三個值構(gòu)成的三角形屬于等邊、等腰、任意三角形中的哪一種。第一步,綜合使用邊界值分析、等價類劃分和錯誤推測技術(shù),設(shè)計出以下十一種應(yīng)測試的情況。681.正常的任意三角形;2.正常的等邊三角形;3.正常的等腰三角形;4.退化的三角形;5.三條邊不構(gòu)成三角形;6.一條邊長度為零;7.兩條邊長度為零;8.三條邊長度全為零;9.輸入數(shù)據(jù)中包含負(fù)整數(shù);10.輸入數(shù)據(jù)不全;11.輸入數(shù)據(jù)中包含非整數(shù)型的數(shù)據(jù);有效等價類69無效等價類測試功能測試數(shù)據(jù)
a
b
c1.等邊2.等腰3.任意4.非三角形5.退化情況6.零數(shù)據(jù)7.負(fù)數(shù)據(jù)8.遺漏數(shù)據(jù)9.無效數(shù)據(jù)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種情況設(shè)計測試用例第三步,依據(jù)測試用例,檢查覆蓋程度。編號測試數(shù)據(jù)覆蓋邊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)系上傳者。文件的所有權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國自動打磨機行業(yè)市場現(xiàn)狀分析及競爭格局與投資發(fā)展研究報告(2024-2030版)
- 2024年中國攪拌臂市場調(diào)查研究報告
- 中國納米銅行業(yè)運營現(xiàn)狀及投資方向研究研究報告(2024-2030版)
- 中國粘膠短纖行業(yè)發(fā)展態(tài)勢及供需趨勢預(yù)測研究報告(2024-2030版)
- 中國空氣格行業(yè)市場現(xiàn)狀分析及競爭格局與投資發(fā)展研究報告(2024-2030版)
- 中國磁盤存儲系統(tǒng)行業(yè)運行形勢與應(yīng)用前景預(yù)測研究報告(2024-2030版)
- 中國硫酸行業(yè)前景動態(tài)與發(fā)展方向預(yù)測研究報告(2024-2030版)
- 母親節(jié)油畫課程設(shè)計
- 化工制圖課程設(shè)計致謝
- 城市污水管網(wǎng)課程設(shè)計
- 國家開放大學(xué)《商務(wù)英語3》形考任務(wù)1-8參考答案
- 商檢、法檢、三檢的區(qū)別
- tsg z6002-2010特種設(shè)備焊接操作人員考核細(xì)則
- .運維服務(wù)目錄
- 公路工程工地試驗室標(biāo)準(zhǔn)化試驗檢測項目、參數(shù)檢驗頻率一覽表
- 高填方,深挖路塹邊坡和軟基監(jiān)測方案
- 投標(biāo)文件質(zhì)量保證措施
- 應(yīng)用地球化學(xué)元素特征判別沉積環(huán)境
- 培訓(xùn)師授課評分表
- 田麥久《運動訓(xùn)練學(xué)》(第2版)配套題庫(含考研真題)
- MACD二次綠柱縮短的選股公式.doc
評論
0/150
提交評論