【正文】
少應(yīng)具有以下幾種特征之一:(1) 、滿足某些軟件需求。關(guān)鍵模塊關(guān)鍵模塊在組裝測(cè)試時(shí),測(cè)試者應(yīng)當(dāng)確定關(guān)鍵模塊,在組裝測(cè)試時(shí),測(cè)試者應(yīng)當(dāng)確定關(guān)鍵模塊,對(duì)這些關(guān)鍵模塊及早進(jìn)行測(cè)試。這種方式采取自頂向下的方式測(cè)試所修改的模塊及其子這種方式采取自頂向下的方式測(cè)試所修改的模塊及其子模塊,然后將這一部分視為子系統(tǒng),再自底向上測(cè)試,模塊,然后將這一部分視為子系統(tǒng),再自底向上測(cè)試,以檢查該子系統(tǒng)與其上級(jí)模塊的接口是否適配。( 3 ) 、回歸測(cè)試。它首先對(duì)含讀操作的子系統(tǒng)自底向上直至根結(jié)點(diǎn)模塊進(jìn)它首先對(duì)含讀操作的子系統(tǒng)自底向上直至根結(jié)點(diǎn)模塊進(jìn)行組裝和測(cè)試,然后對(duì)含寫操作的子系統(tǒng)做自頂向下的行組裝和測(cè)試,然后對(duì)含寫操作的子系統(tǒng)做自頂向下的組裝與測(cè)試。( 2 ) 、自底向上 自頂向下的增殖測(cè)試。它的基本思想是強(qiáng)化對(duì)輸入 /輸出模塊的和引入新算法模它的基本思想是強(qiáng)化對(duì)輸入 /輸出模塊的和引入新算法模塊的測(cè)試,并自底向上組裝成為功能相當(dāng)完整且相對(duì)獨(dú)塊的測(cè)試,并自底向上組裝成為功能相當(dāng)完整且相對(duì)獨(dú)立的子系統(tǒng),然后由主模塊開始自頂向下進(jìn)行增殖測(cè)立的子系統(tǒng),然后由主模塊開始自頂向下進(jìn)行增殖測(cè)試。混合增值式測(cè)試混合增值式測(cè)試( 1 ) 、衍變的自頂向下的增殖測(cè)試。是則結(jié)束測(cè)試,否則執(zhí)行 ( 2) ?!?( 4) 、判斷是否已組裝到達(dá)主模塊?! ?( 3) 、為子系統(tǒng)配備驅(qū)動(dòng)模塊,進(jìn)行新的 ( 3) 、為子系統(tǒng)配備驅(qū)動(dòng)模塊,進(jìn)行新的測(cè)試?!?( 2) 、用實(shí)際模塊代替驅(qū)動(dòng)模塊,與它已測(cè) ( 2) 、用實(shí)際模塊代替驅(qū)動(dòng)模塊,與它已測(cè)試的直屬子模塊組裝成為子系統(tǒng)。在模塊的測(cè)試過(guò)程中需要從子模塊得到的信息可塊的測(cè)試過(guò)程中需要從子模塊得到的信息可以直接運(yùn)行子模塊得到以直接運(yùn)行子模塊得到步驟步驟 ( 1) 、由驅(qū)動(dòng)模塊控制最底層模塊的并行測(cè) ( 1) 、由驅(qū)動(dòng)模塊控制最底層模塊的并行測(cè)試;也可以把最底層模塊組合成實(shí)現(xiàn)某一特試;也可以把最底層模塊組合成實(shí)現(xiàn)某一特定軟件功能的簇,由驅(qū)動(dòng)模塊控制它進(jìn)行測(cè)定軟件功能的簇,由驅(qū)動(dòng)模塊控制它進(jìn)行測(cè)試。因?yàn)槟K是自底向上進(jìn)行組裝,對(duì)于一個(gè)給定層次的模塊,它上進(jìn)行組裝,對(duì)于一個(gè)給定層次的模塊,它的子模塊 ( 包括子模塊的所有下屬模塊 ) 已經(jīng)組的子模塊 ( 包括子模塊的所有下屬模塊 ) 已經(jīng)組裝并測(cè)試完成,所以不再需要樁模塊。自底向上的增值方式自底向上的增值方式這種組裝的方式是從程序模塊結(jié)構(gòu)的最底層這種組裝的方式是從程序模塊結(jié)構(gòu)的最底層的模塊開始組裝和測(cè)試。( 3 ) 、自底向上組裝和測(cè)試軟件。此方法可行,但會(huì)導(dǎo)致很大的額外開銷,因?yàn)闃赌K會(huì)變的越來(lái)越復(fù)此方法可行,但會(huì)導(dǎo)致很大的額外開銷,因?yàn)闃赌K會(huì)變的越來(lái)越復(fù)雜。( 2 ) 、進(jìn)一步開發(fā)能模擬實(shí)際模塊功能的樁模塊。此方法使我們失去了對(duì)很多在特定測(cè)試和特定模塊組合之間的對(duì)應(yīng)性此方法使我們失去了對(duì)很多在特定測(cè)試和特定模塊組合之間的對(duì)應(yīng)性控制,這樣可能導(dǎo)致在確定錯(cuò)誤發(fā)生原因時(shí)的困難性,并且違背自頂控制,這樣可能導(dǎo)致在確定錯(cuò)誤發(fā)生原因時(shí)的困難性,并且違背自頂向下方法的高度受限的本質(zhì)。如果不能使樁模塊正確地向上傳遞有用的信息,可以采用以下解決辦法息,可以采用以下解決辦法( 1 ) 、將很多測(cè)試推遲到樁模塊用實(shí)際模塊替代了之后進(jìn)行。樁模塊 s t u b樁模塊 s t u b 樁模塊 s t u b樁模塊 s t u bAB CD顯示跟蹤信息顯示傳遞的信息從一個(gè)表 ( 或外部文件 ) 返回一個(gè)值進(jìn)行一項(xiàng)表查詢以根據(jù)輸入?yún)?shù)返回輸出參數(shù)表示傳遞的數(shù)據(jù)消息解決策略解決策略應(yīng)當(dāng)讓樁模塊正確而有效地模擬子模塊的功能和合理的接口,應(yīng)當(dāng)讓樁模塊正確而有效地模擬子模塊的功能和合理的接口,不能是只包含返回語(yǔ)句或只顯示該模塊已調(diào)用信息,不執(zhí)行任不能是只包含返回語(yǔ)句或只顯示該模塊已調(diào)用信息,不執(zhí)行任何功能的啞模塊。在自頂向下組裝階段,還需要用樁模塊代替較低層的模塊,所以關(guān)于樁模塊的編寫,根據(jù)模塊代替較低層的模塊,所以關(guān)于樁模塊的編寫,根據(jù)情況可能不同有如下圖所示的幾種選擇。在為了充分測(cè)試較高層的處理而需要較低層處理的信息時(shí),了充分測(cè)試較高層的處理而需要較低層處理的信息時(shí),就會(huì)出現(xiàn)這類問(wèn)題。缺點(diǎn)缺點(diǎn)自頂各下的組裝和測(cè)試存在著一個(gè)邏輯次序問(wèn)題。如果這主要控制有問(wèn)題,盡早發(fā)現(xiàn)它能夠減少以后的要控制有問(wèn)題,盡早發(fā)現(xiàn)它能夠減少以后的返工,所以這是十分必要的。在一個(gè)功能劃分合理的程序模塊結(jié)構(gòu)中,判斷常常出現(xiàn)在較合理的程序模塊結(jié)構(gòu)中,判斷常常出現(xiàn)在較高的層次里,因而較早就能遇到。單擊此處鍵入頁(yè)面標(biāo)題單擊此處鍵入頁(yè)面標(biāo)題單擊此處鍵入項(xiàng)目列表文本單擊此處鍵入項(xiàng)目列表文本AA AAs1 s2 s3s4s2s2s3s3BBBE EC s3測(cè)試 A加入 B加入 E加入 CAB C DE s5AB C DE F加入 D加入 F按深度方向組裝優(yōu)點(diǎn)優(yōu)點(diǎn)自頂向下的增殖方式在測(cè)試過(guò)程中較早地驗(yàn)自頂向下的增殖方式在測(cè)試過(guò)程中較早地驗(yàn)證了主要的控制和判斷點(diǎn)。( 4 ) 、判斷是否所有的模塊都已組裝到系統(tǒng)中?是則結(jié)束( 4 ) 、判斷是否所有的模塊都已組裝到系統(tǒng)中?是則結(jié)束測(cè)試,否則轉(zhuǎn)到 ( 2 ) 去執(zhí)行。( 3 ) 、進(jìn)行回歸測(cè)試(即重新執(zhí)行以前做過(guò)的全部測(cè)試或( 3 ) 、進(jìn)行回歸測(cè)試(即重新執(zhí)行以前做過(guò)的全部測(cè)試或部分測(cè)試),排除組裝過(guò)程中引起的錯(cuò)誤的可能。( 2 ) 、采用深度優(yōu)先( d e p t h f i r s t)(如下圖)或?qū)挾葍?yōu)( 2 ) 、采用深度優(yōu)先( d e p t h f i r s t)(如下圖)或?qū)挾葍?yōu)先( b re a d t h f i r s t)的策略,用實(shí)際模塊替換相應(yīng)樁模先( b re a d t h f i r s t)的策略,用實(shí)際模塊替換相應(yīng)樁模塊,再用樁代替它們的直接下屬模塊,與已測(cè)試的模塊塊,再用樁代替它們的直接下屬模塊,與已測(cè)試的模塊或子系統(tǒng)組裝成新的子系統(tǒng)。其步驟如下:( 1 ) 、以主模塊為所測(cè)模塊兼驅(qū)動(dòng)模塊,所有直屬于主模( 1 ) 、以主模塊為所測(cè)模塊兼驅(qū)動(dòng)模塊,所有直屬于主模塊的下屬模塊全部用樁模塊對(duì)主模塊進(jìn)行測(cè)試。自頂向下的增值方式自頂向下的增值方式這種組裝方式是將模塊按系統(tǒng)程序結(jié)構(gòu),沿控制層次自這種組裝方式是將模塊按系統(tǒng)程序結(jié)構(gòu),沿控制層次自頂向下進(jìn)行組裝。最后增值逐步組裝成為要求的軟件系統(tǒng)。首先是對(duì)一個(gè)個(gè)模塊進(jìn)行模塊單元測(cè)試,然后將這些模塊組裝成較大模塊單元測(cè)試,然后將這些模塊組裝成較大系統(tǒng),在組裝的過(guò)程中邊連接邊測(cè)試,以發(fā)系統(tǒng),在組裝的過(guò)程中邊連接邊測(cè)試,以發(fā)現(xiàn)連接過(guò)程中產(chǎn)生的問(wèn)題。增值式組裝方式增值式組裝方式增值式組裝方式( Inc r ement al Int egr at i on )增值式組裝方式( Inc r ement al Int egr at i on )又稱漸增式組裝。單擊此處鍵入頁(yè)面標(biāo)題單擊此處鍵入頁(yè)面標(biāo)題AB C DE Fd1 d2 d3 d4 d5DB Cs1s2EFAABCDFEs3s4 s5( a )( b )在圖中,模塊 d1 、 d2 、 d3 、 d4 、 d5 是對(duì)各個(gè)模塊做單在圖中,模塊 d1 、 d2 、 d3 、 d4 、 d5 是對(duì)各個(gè)模塊做單元測(cè)試時(shí)建立的驅(qū)動(dòng)模塊, s1 、 s2 、 s3 、 s4 、 s5 是為單元測(cè)試時(shí)建立的驅(qū)動(dòng)模塊, s1 、 s2 、 s3 、 s4 、 s5 是為單元測(cè)試而建立的樁模塊。按這種組裝方式,首先對(duì)每個(gè)模塊分別進(jìn)行模塊測(cè)試,然后再把所有模塊組裝在別進(jìn)行模塊測(cè)試,然后再把所有模塊組裝在一起進(jìn)行測(cè)試,最終得到要求的軟件系統(tǒng)。一次性組裝方式一次性組裝方式一次性組裝方式是一種非增值組裝方式一次性組裝方式是一種非增值組裝方式( Non In c r em en ta l In te gr ati on ),也叫整體( Non In c r em en ta l In te gr ati on ),也叫整體拼裝。通常,有兩種不同的組裝方式:裝方式: 一次性組裝方式和增值式組裝一次性組裝方式和增值式組裝 方方式。5、單個(gè)模塊的誤差積累起來(lái),是否會(huì)放5、單個(gè)模塊的誤差積累起來(lái),是否會(huì)放大,從而達(dá)到不可接受的程度大,從而達(dá)到不可接受的程度方法方法任何合理地組織集成測(cè)試,即選擇什么方式任何合理地組織集成測(cè)試,即選擇什么方式把模塊組裝起來(lái)形成一個(gè)可運(yùn)行的系統(tǒng) ,直接把模塊組裝起來(lái)形成一個(gè)可運(yùn)行的系統(tǒng) ,直接影響到模塊測(cè)試用例的形式、所用測(cè)試工具影響到模塊測(cè)試用例的形式、所用測(cè)試工具的類型、模塊編號(hào)和測(cè)試的次序、生成測(cè)試的類型、模塊編號(hào)和測(cè)試的次序、生成測(cè)試用例和調(diào)試的費(fèi)用。4、全局?jǐn)?shù)據(jù)結(jié)構(gòu)是否有問(wèn)題。3、一個(gè)模塊的功能是否會(huì)對(duì)另一個(gè)模塊的3、一個(gè)模塊的功能是否會(huì)對(duì)另一個(gè)模塊的功能產(chǎn)生不利的影響。2、各個(gè)子功能組合起來(lái),能否達(dá)到預(yù)期要2、各個(gè)子功能組合起來(lái),能否達(dá)到預(yù)期要求的父功能。需要考慮的問(wèn)題需要考慮的問(wèn)題1、在把各個(gè)模塊連接起來(lái)的時(shí)候,穿越模1、在把各個(gè)模塊連接起來(lái)的時(shí)候,穿越模塊接口的數(shù)據(jù)是否會(huì)丟失。程序在某些局部反映不出來(lái)的問(wèn)題,在全局上很可能暴露出來(lái),影響來(lái)的問(wèn)題,在全局上很可能暴露出來(lái),影響功能的實(shí)現(xiàn)。實(shí)踐表明,一些模塊雖然能夠單獨(dú)地工作,但并不能保證連接起來(lái)然能夠單獨(dú)地工作,但并不能保證連接起來(lái)也能正常的工作。在單元測(cè)試的基礎(chǔ)上,將所有模塊按照設(shè)計(jì)在單元測(cè)試的基礎(chǔ)上,將所有模塊按照設(shè)計(jì)要求(如根據(jù)結(jié)構(gòu)圖)組裝成為子系統(tǒng)或系要求(如根據(jù)結(jié)構(gòu)圖)組裝成為子系統(tǒng)或系統(tǒng),進(jìn)行集成測(cè)試。單擊此處鍵入子標(biāo)題單擊此處鍵入子標(biāo)題集成測(cè)試集成測(cè)試單擊此處增加藝術(shù)圖片基本概念基本概念集成測(cè)試( Inte gr ati on T es ti ng ),也叫組裝集成測(cè)試( Inte gr ati on T es ti ng ),也叫組裝測(cè)試、聯(lián)合測(cè)試、子系統(tǒng)測(cè)試或部件測(cè)試。樁模塊 ( S T UB) :用來(lái)代替所測(cè)模塊調(diào)用的子樁模塊 ( S T UB) :用來(lái)代替所測(cè)模塊調(diào)用的子模塊。當(dāng)被測(cè)試模塊能完成一定功能時(shí),也可以不要驅(qū)動(dòng)模塊。它接收測(cè)試數(shù)據(jù),把這些數(shù)據(jù)傳遞給所測(cè)試模塊,最后數(shù)據(jù),把這些數(shù)據(jù)傳遞給所測(cè)試模塊,最后再輸出實(shí)測(cè)結(jié)果。單擊此處鍵入項(xiàng)目列表文本單擊此處鍵入項(xiàng)目列表文本單元測(cè)試的環(huán)境單元測(cè)試的環(huán)境單擊此處鍵入頁(yè)面標(biāo)題單擊此處鍵入頁(yè)面標(biāo)題驅(qū)動(dòng)模塊:所測(cè)模塊的主程序。 I I、特別要注意數(shù)據(jù)流,控制流中剛好等于、大 I I、特別要注意數(shù)據(jù)流,控制流中剛好等于、大于、小于確定的比較值時(shí)出現(xiàn)錯(cuò)誤的可能性。 例如: 例如: I、在 n 次循環(huán)的第 n 次,取最大最小值時(shí)容易發(fā) I、在 n 次循環(huán)的第 n 次,取最大最小值時(shí)容易發(fā)生錯(cuò)誤。邊界測(cè)試邊界測(cè)試邊界上出現(xiàn)錯(cuò)誤的是常見的?! ?V 、在對(duì)錯(cuò)誤進(jìn)行處理之前,錯(cuò)誤條件已經(jīng)引起系 V 、在對(duì)錯(cuò)誤進(jìn)行處理之前,錯(cuò)誤條件已經(jīng)引起系統(tǒng)的干預(yù)等?! ?IV 、對(duì)錯(cuò)誤條件的處理不正確?! ?III 、顯示的錯(cuò)誤與實(shí)際的錯(cuò)誤不符?! ?II 、出錯(cuò)的描述不足以對(duì)錯(cuò)誤定位和確定出錯(cuò)的原 II 、出錯(cuò)的描述不足以對(duì)錯(cuò)誤定位和確定出錯(cuò)的原因。表明出錯(cuò)處理模塊有錯(cuò)誤或缺陷的情況有:表明出錯(cuò)處理模塊有錯(cuò)誤或缺陷的情況有: I、出錯(cuò)的描述難以理解。這種出錯(cuò)處理也是模塊功能的一部分。錯(cuò)誤處理測(cè)試錯(cuò)誤處理測(cè)試比較完善的模塊設(shè)計(jì)要求能預(yù)見出錯(cuò)的條件,并設(shè)置適比較完善的模塊設(shè)計(jì)要求能預(yù)見出錯(cuò)的條件,并設(shè)置適當(dāng)?shù)某鲥e(cuò)處理,以便在程序出錯(cuò)時(shí),能對(duì)出錯(cuò)程序重新當(dāng)?shù)某鲥e(cuò)處理,以便在程序出錯(cuò)時(shí),能對(duì)出錯(cuò)程序重新做安排,保證其邏輯上的正確性。 V I I I、不適當(dāng)?shù)匦薷牧搜h(huán)變量等?! ? V I I、當(dāng)遇到發(fā)散的迭代時(shí)不能終止的循環(huán)?! ?VI 、錯(cuò)誤的或不可能的循環(huán)終止條件。 即不正確的多循環(huán)或少循環(huán)一次?! ? V 、 “ 差 1 錯(cuò) ” 。 IV 、關(guān)系表達(dá)式中不正確的變量和比較符?! ?I I I、因浮點(diǎn)運(yùn)算精度問(wèn)題而造成的兩值比較不 I I I、因浮點(diǎn)運(yùn)算精度問(wèn)題而造成的兩值比較不等。 I I、不正確的邏輯運(yùn)算符或優(yōu)先次序。單擊此處鍵入頁(yè)面標(biāo)題單擊此處鍵入頁(yè)面標(biāo)題常見的比較和控制流錯(cuò)誤有:常見的比較和控制流錯(cuò)誤有: I 、不同數(shù)據(jù)類型量的比較?! ? I I、運(yùn)算的方式錯(cuò)誤(即運(yùn)算的對(duì)象彼此在類型上 I I、運(yùn)算的方式錯(cuò)誤(即運(yùn)算的對(duì)象彼此在類型上不相容;算法錯(cuò)誤;初始化不正 確;不相容;算法錯(cuò)誤;初始化不正 確;運(yùn)算精度不夠;表達(dá)式的符號(hào)表示不正確等)。常見的不正確計(jì)算有:常見的不正確計(jì)算有: I、運(yùn)算的優(yōu)先次序不正確或誤解了運(yùn)算的優(yōu)先次 I、運(yùn)算的優(yōu)先次序不正確或誤解了運(yùn)算的優(yōu)先次序。設(shè)計(jì)測(cè)試用例查找由于錯(cuò)誤的 計(jì)算,不正確的比計(jì)測(cè)試用例查找由于錯(cuò)誤的 計(jì)算,不正確的比較或不正常的控制流而導(dǎo)致的錯(cuò)誤。路徑測(cè)試路徑測(cè)試對(duì)基本執(zhí)行路徑和循環(huán)進(jìn)行測(cè)試會(huì)發(fā)現(xiàn)大量的錯(cuò)誤?! ? V 、不一致的數(shù)據(jù)類型?! ?IV 、變量名拼寫錯(cuò)誤或書寫錯(cuò)誤?! ?III 、錯(cuò)誤的初始值或錯(cuò)誤的缺省值?! ? I I、使用尚未賦值或尚未初始化的變量。應(yīng)設(shè)計(jì)測(cè)試用例以檢查以下各種錯(cuò)誤:用例以檢查以下各種錯(cuò)誤: I 、檢查不正確或不一致的數(shù)據(jù)類型說(shuō)明。局部數(shù)據(jù)結(jié)構(gòu)測(cè)試局部數(shù)據(jù)結(jié)構(gòu)測(cè)試模塊的局部數(shù)據(jù)結(jié)構(gòu)是最常見的錯(cuò)誤來(lái)源。 VI