集成測試
1.什么是集成測試
集成測試是指在單元測試的基礎(chǔ)上,將所有模塊按照設(shè)計要求組裝成為子系統(tǒng)或系統(tǒng),進(jìn)行測試。
集成測試最簡單的形式是:把兩個已經(jīng)測試過的單元組合成一個組件,測試它們之間的接口。從這一層意義上講,組件是指多個單元的集成聚合。在現(xiàn)實(shí)方案中,許多單元組合成組件,而這些組件又聚合為程序的更大部分。方法是測試片段的組合,并最終擴(kuò)展成進(jìn)程,將模塊與其他組的模塊一起測試。最后,將構(gòu)成進(jìn)程的所有模塊一起測試。此外,如果程序由多個進(jìn)程組成,應(yīng)該成對測試它們,而不是同時測試所有進(jìn)程。
集成測試測試組合單元時出現(xiàn)的問題。通過使用要求在組合單元前測試每個單元并確保每個單元的生存能力的測試計劃,可以知道在組合單元時所發(fā)現(xiàn)的任何錯誤很可能與單元之間的接口有關(guān)。這種方法將可能發(fā)生的情況數(shù)量減少到更簡單的分析級別。一個有效的集成測試有助于解決相關(guān)的軟件與其它系統(tǒng)的兼容性和可操作性的問題。
集成測試是在單元測試的基礎(chǔ)上,測試在將所有的軟件單元按照概要設(shè)計規(guī)格說明的要求組裝成模塊、子系統(tǒng)或系統(tǒng)的過程中各部分工作是否達(dá)到或?qū)崿F(xiàn)相應(yīng)技術(shù)指標(biāo)及要求的活動。也就是說,在集成測試之前,單元測試應(yīng)該已經(jīng)完成,集成測試中所使用的對象應(yīng)該是已經(jīng)經(jīng)過單元測試的軟件單元。這一點(diǎn)很重要,因?yàn)槿绻唤?jīng)過單元測試,那么集成測試的效果將會受到很大影響,并且會大幅增加軟件單元代碼糾錯的代價。
集成測試是單元測試的邏輯擴(kuò)展。在現(xiàn)實(shí)方案中,集成是指多個單元的聚合,許多單元組合成模塊,而這些模塊又聚合成程序的更大部分,如分系統(tǒng)或系統(tǒng)。集成測試采用的方法是測試軟件單元的組合能否正常工作,以及與其他組的模塊能否集成起來工作。最后,還要測試構(gòu)成系統(tǒng)的所有模塊組合能否正常工作。集成測試所持的主要標(biāo)準(zhǔn)是《軟件概要設(shè)計規(guī)格說明》,任何不符合該說明的程序模塊行為都應(yīng)該加以記載并上報。
所有的軟件項(xiàng)目都不能擺脫系統(tǒng)集成這個階段。不管采用什么開發(fā)模式,具體的開發(fā)工作總得從一個一個的軟件單元做起,軟件單元只有經(jīng)過集成才能形成一個有機(jī)的整體。具體的集成過程可能是顯性的也可能是隱性的。只要有集成,總是會出現(xiàn)一些常見問題,工程實(shí)踐中,幾乎不存在軟件單元組裝過程中不出任何問題的情況。從表中可以看出,集成測試需要花費(fèi)的時間遠(yuǎn)遠(yuǎn)超過單元測試,直接從單元測試過渡到系統(tǒng)測試是極不妥當(dāng)?shù)淖龇ā?
活動 輸入 輸出 參與角色和職責(zé) 制定集成測試計劃 設(shè)計模型
設(shè)計模型集成測試用例
測試過程測試設(shè)計員負(fù)責(zé)設(shè)計集成測試用例和測試過程 實(shí)施集成測試 集成測試用例
測試過程
工作版本測試腳本(可選)
測試過程(更新)測試設(shè)計員負(fù)責(zé)編制測試腳本(可選),更新測試過程。 驅(qū)動程序或穩(wěn)定樁 設(shè)計員負(fù)責(zé)設(shè)計驅(qū)動程序和裝,實(shí)施員負(fù)責(zé)實(shí)施驅(qū)動程序和樁 執(zhí)行集成測試 測試腳本(可選)
工作版本測試結(jié)果 測試員負(fù)責(zé)執(zhí)行測試并記錄測試結(jié)果 評估集成測試 集成測試計劃
測試結(jié)果測試評估摘要 測試員負(fù)責(zé)會同及成員、編碼員、設(shè)計員等有關(guān)人員(具體化)評估此次測試,并生成測試評估摘要。
2.集成測試的目標(biāo)
集成測試的目標(biāo)是按照設(shè)計要求使用那些通過單元測試的構(gòu)件來構(gòu)造程序結(jié)構(gòu)。單個模塊具有高質(zhì)量但不足以保證整個系統(tǒng)的質(zhì)量。有許多隱蔽的失效是高質(zhì)量模塊間發(fā)生非預(yù)期交互而產(chǎn)生的。以下兩種測試技術(shù)是用于集成測試:
1、功能性測試。使用黑盒測試技術(shù)針對被測模塊的接口規(guī)格說明進(jìn)行測試。
2、非功能性測試。對模塊的性能或可靠性進(jìn)行測試。
另外,集成測試的必要性還在于一些模塊雖然能夠單獨(dú)地工作,但并不能保證連接起來也能正常工作。程序在某些局部反映不出來的問題,有可能在全局上會暴露出來,影響功能的實(shí)現(xiàn)。此外,在某些開發(fā)模式中,如迭代式開發(fā),設(shè)計和實(shí)現(xiàn)是迭代進(jìn)行的。在這種情況下,集成測試的意義還在于它能間接地驗(yàn)證概要設(shè)計是否具有可行性。
3.集成測試應(yīng)考慮問題
1、在把各個模塊連接起來的時候,穿越模塊接口的數(shù)據(jù)是否會丟失;
2、各個子功能組合起來,能否達(dá)到預(yù)期要求的父功能;
3、一個模塊的功能是否會對另一個模塊的功能產(chǎn)生不利的影響;
4、全局?jǐn)?shù)據(jù)結(jié)構(gòu)是否有問題;
5、是采用何種系統(tǒng)組裝方法來進(jìn)行組裝測試;
6、組裝測試過程中連接各個模塊的順序;
7、模塊代碼編制和測試進(jìn)度是否與組裝測試的順序一致;
8、測試過程中是否需要專門的硬件設(shè)備;
9、單個模塊的誤差積累起來,是否會放大,從而達(dá)到不可接受的程度。
因此,單元測試后,有必要進(jìn)行集成測試,發(fā)現(xiàn)并排除在模塊連接中可能發(fā)生的上述問題,最終構(gòu)成要求的軟件子系統(tǒng)或系統(tǒng)。對子系統(tǒng),集成測試也叫部件測試。
任何合理地組織集成測試,即選擇什么方式把模塊組裝起來形成一個可運(yùn)行的系統(tǒng),直接影響到模塊測試用例的形式、所用測試工具的類型、模塊編號和測試的次序、生成測試用例和調(diào)試的費(fèi)用。通常,有兩種不同的組裝方式:一次性組裝方式和增值式組裝方式。
4.集成測試過程
根據(jù)IEEE標(biāo)準(zhǔn) 集成測試劃分為4個階段:計劃階段,設(shè)計階段,實(shí)現(xiàn)階段,執(zhí)行階段(實(shí)施階段)
5.集成測試的實(shí)施方案
集成測試的實(shí)施方案有很多種,如自底向上集成測試、自頂向下集成測試、Big-Bang集成測試、三明治集成測試、核心集成測試、分層集成測試、基于使用的集成測試等。常見的有: