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

下載本文檔

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

文檔簡(jiǎn)介

第7章實(shí)現(xiàn)7.1編碼7.2軟件測(cè)試基礎(chǔ)7.3單元測(cè)試7.4集成測(cè)試7.5確認(rèn)測(cè)試7.6白盒測(cè)試技術(shù)7.7黑盒測(cè)試技術(shù)7.8調(diào)試7.9軟件可靠性1編碼

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

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

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

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

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

提高程序效率的根本途徑在于設(shè)計(jì)階段選擇良好的數(shù)據(jù)結(jié)構(gòu)和算法。考慮程序的效率時(shí)應(yīng)注意的幾點(diǎn):在使程序運(yùn)行得更快前先要使其正確提高程序運(yùn)行速度時(shí)要保持程序的正確性在使程序運(yùn)行得更快些先使其清晰別貪圖效率上的小利而破壞程序的清晰性讓編譯程序去做簡(jiǎn)單的優(yōu)化

16(一)程序運(yùn)行時(shí)間

(1)應(yīng)先簡(jiǎn)化算術(shù)和邏輯的表達(dá)式。

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

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

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

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

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

(7)盡量使用整數(shù)表達(dá)式和布爾表達(dá)式。17(二)存儲(chǔ)器效率

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

(1)所有輸入/輸出都應(yīng)該有緩沖,以減少過(guò)多的通信次數(shù)。

(2)對(duì)輔存(如磁盤),應(yīng)選用最簡(jiǎn)單的訪問(wèn)方法。

(3)輔存的輸入/輸出,應(yīng)該以塊為單位進(jìn)行。

(4)終端和打印機(jī)的輸入/輸出,應(yīng)當(dāng)考慮設(shè)備的特性,以提高輸入/輸出的質(zhì)量和速度。

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

在一定的研制時(shí)間、研制經(jīng)費(fèi)的限制下,通過(guò)執(zhí)行有限個(gè)測(cè)試用例,盡可能多地發(fā)現(xiàn)一些錯(cuò)誤。3.測(cè)試的關(guān)鍵

如何測(cè)試高產(chǎn)的測(cè)試用例204.軟件測(cè)試的目標(biāo)(1)測(cè)試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過(guò)程(2)好的測(cè)試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試方案(3)成功的測(cè)試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試215.軟件測(cè)試準(zhǔn)則(1)所有測(cè)試都應(yīng)該能追溯到用戶需求(2)應(yīng)該遠(yuǎn)在測(cè)試開(kāi)始之前就制定出測(cè)試計(jì)劃(3)把Pareto原理應(yīng)用到軟件測(cè)試中

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

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

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

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

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

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

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

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

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

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

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

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

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

a點(diǎn)有下述可能結(jié)果:A>2,A≤2,B=0,B≠0b點(diǎn)有下述可能結(jié)果:A=2,A≠2,X>1,X≤1只要選擇測(cè)試數(shù)據(jù)

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

A=1,B=1,X=1就可以滿足條件覆蓋。其覆蓋路徑為sacbed和sabd534.判定/條件覆蓋判定/條件覆蓋能同時(shí)滿足判定覆蓋和條件覆蓋兩種覆蓋標(biāo)準(zhǔn)。它的含義是:選擇足夠的測(cè)試用例,使得判定表達(dá)式中的每個(gè)條件都取到各種可能的值,而且每個(gè)判定表達(dá)式也都取到各種可能的結(jié)果。下述兩組測(cè)試數(shù)據(jù)滿足判定/條件覆蓋:A=2,B=0,X=4和A=1,B=1,X=1但這兩組測(cè)試數(shù)據(jù)與前述的條件覆蓋中選取的兩組數(shù)據(jù)相同,則不能不說(shuō),有時(shí)判定/條件覆蓋也并不比條件覆蓋更強(qiáng)。545.條件組合覆蓋條件組合覆蓋的含義是:選擇足夠的測(cè)試用例,使得每個(gè)判定表達(dá)式中條件的各種可能組合都至少出現(xiàn)一次。顯然,滿足條件組合覆蓋標(biāo)準(zhǔn)的測(cè)試數(shù)據(jù),也一定滿足判定覆蓋、條件覆蓋和判定/條件覆蓋,條件組合覆蓋是最強(qiáng)的一個(gè)覆蓋標(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下面四組測(cè)試數(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.點(diǎn)覆蓋圖論中點(diǎn)覆蓋的含義是:如果連通圖G的子圖G′是連通的,而且包含G的所有結(jié)點(diǎn),則稱G′是G的點(diǎn)覆蓋。7.邊覆蓋圖論中邊覆蓋的含義是:如果連通圖G的子圖G″是連通的,而且包含G的所有邊,則稱G″是G的邊覆蓋。8.路徑覆蓋路徑覆蓋的含義是:選取足夠多測(cè)試數(shù)據(jù),使程序的每條可能路徑都至少執(zhí)行一次(如果程序圖中有環(huán),則要求每個(gè)環(huán)至少經(jīng)過(guò)一次)。572.等價(jià)類劃分等價(jià)類劃分是用黑盒法設(shè)計(jì)測(cè)試用例的一種技術(shù)。窮盡的黑盒測(cè)試需要使用所有有效的和無(wú)效的輸入數(shù)據(jù)來(lái)測(cè)試程序,但這是不可行的。所以只能選取少量的有代表性的輸入數(shù)據(jù),以較小的代價(jià)暴露出較多的程序錯(cuò)誤。58如果把所有可能的輸入數(shù)據(jù)(有效的和無(wú)效的)劃分成若干個(gè)等價(jià)類,則可以合理地做出下述假定:每類中的一個(gè)典型值在測(cè)試中的作用與這一類中所有其他值的作用相同。因此,可以從每個(gè)等價(jià)類中只取一組數(shù)據(jù)作為測(cè)試數(shù)據(jù)。這樣選取的測(cè)試數(shù)據(jù)最有代表性,最可能發(fā)現(xiàn)程序中的錯(cuò)誤。59(1)劃分等價(jià)類1)如果規(guī)定了輸入值的范圍,則可劃分出一個(gè)有效的等價(jià)類,兩個(gè)無(wú)效的等價(jià)類;2)如果規(guī)定了輸入數(shù)據(jù)的個(gè)數(shù),也可以劃分出一個(gè)有效的等價(jià)類和兩個(gè)無(wú)效的等價(jià)類;3)如果規(guī)定了輸入數(shù)據(jù)的一組值,而且程序?qū)Σ煌斎胫底霾煌幚恚瑒t每個(gè)允許的輸入值是一個(gè)有效的等價(jià)類,此外還有一個(gè)無(wú)效的等價(jià)類;604)如果規(guī)定了輸入數(shù)據(jù)必須遵循的規(guī)則,則可以劃分出一個(gè)有效的等價(jià)類和若干個(gè)無(wú)效的等價(jià)類;5)如果規(guī)定了輸入數(shù)據(jù)為整型,則可以劃分出正整數(shù)、零和負(fù)整數(shù)等三個(gè)有效類;6)如果程序的處理對(duì)象是表格,則應(yīng)該使用空表,以及含一項(xiàng)或多項(xiàng)的表。61(2)設(shè)計(jì)測(cè)試用例1)為每個(gè)等價(jià)類編號(hào);2)設(shè)計(jì)一個(gè)新的測(cè)試用例,使它盡可能多地覆蓋尚未被覆蓋的有效等價(jià)類,重復(fù)這一步驟直到所有有效等價(jià)類都被覆蓋為止;3)設(shè)計(jì)一個(gè)新的測(cè)試用例,使它覆蓋一個(gè)而且只覆蓋一個(gè)尚未被覆蓋的無(wú)效等價(jià)類,重復(fù)這一步驟,直到所有無(wú)效等價(jià)類都被覆蓋為止。623.邊界值分析使用剛好等于、小于或大于邊界值的數(shù)據(jù)來(lái)進(jìn)行測(cè)試,有較大的可能發(fā)現(xiàn)錯(cuò)誤。用邊界值分析技術(shù)設(shè)計(jì)測(cè)試方案首先應(yīng)確定邊界情況,這需要經(jīng)驗(yàn)和創(chuàng)造性,通常輸入等價(jià)類和輸出等價(jià)類的邊界,是應(yīng)該著重測(cè)試的程序邊界情況。63

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

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

a

b

c1.等邊2.等腰3.任意4.非三角形5.退化情況6.零數(shù)據(jù)7.負(fù)數(shù)據(jù)8.遺漏數(shù)據(jù)9.無(wú)效數(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ì)測(cè)試用例第三步,依據(jù)測(cè)試用例,檢查覆蓋程度。編號(hào)測(cè)試數(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論