集成測試關(guān)鍵詞: 集成測試
集成測試(也叫組裝測試,聯(lián)合測試)是單元測試的邏輯擴(kuò)展。它的最簡單的形式是:兩個(gè)已經(jīng)測試過的單元組合成一個(gè)組件,并且測試它們之間的接口。從這一層意義上講,組件是指多個(gè)單元的集成聚合。在現(xiàn)實(shí)方案中,許多單元組合成組件,而這些組件又聚合成程序的更大部分。方法是測試片段的組合,并最終擴(kuò)展進(jìn)程,將您的模塊與其他組的模塊一起測試。最后,將構(gòu)成進(jìn)程的所有模塊一起測試。此外,如果程序由多個(gè)進(jìn)程組成,應(yīng)該成對測試它們,而不是同時(shí)測試所有進(jìn)程。 集成測試識別組合單元時(shí)出現(xiàn)的問題。通過使用要求在組合單元前測試每個(gè)單元并確保每個(gè)單元的生存能力的測試計(jì)劃,可以知道在組合單元時(shí)所發(fā)現(xiàn)的任何錯(cuò)誤很可能與單元之間的接口有關(guān)。這種方法將可能發(fā)生的情況數(shù)量減少到更簡單的分析級別。 集成測試是在單元測試的基礎(chǔ)上,測試在將所有的軟件單元按照概要設(shè)計(jì)規(guī)格說明的要求組裝成模塊、子系統(tǒng)或系統(tǒng)的過程中各部分工作是否達(dá)到或?qū)崿F(xiàn)相應(yīng)技術(shù)指標(biāo)及要求的活動(dòng)。也就是說,在集成測試之前,單元測試應(yīng)該已經(jīng)完成,集成測試中所使用的對象應(yīng)該是已經(jīng)經(jīng)過單元測試的軟件單元。這一點(diǎn)很重要,因?yàn)槿绻唤?jīng)過單元測試,那么集成測試的效果將會(huì)受到很大影響,并且會(huì)大幅增加軟件單元代碼糾錯(cuò)的代價(jià)。 集成測試是單元測試的邏輯擴(kuò)展。在現(xiàn)實(shí)方案中,集成是指多個(gè)單元的聚合,許多單元組合成模塊,而這些模塊又聚合成程序的更大部分,如分系統(tǒng)或系統(tǒng)。集成測試采用的方法是測試軟件單元的組合能否正常工作,以及與其他組的模塊能否集成起來工作。最后,還要測試構(gòu)成系統(tǒng)的所有模塊組合能否正常工作。集成測試所持的主要標(biāo)準(zhǔn)是《軟件概要設(shè)計(jì)規(guī)格說明》,任何不符合該說明的程序模塊行為都應(yīng)該加以記載并上報(bào)。
所有的軟件項(xiàng)目都不能擺脫系統(tǒng)集成這個(gè)階段。不管采用什么開發(fā)模式,具體的開發(fā)工作總得從一個(gè)一個(gè)的軟件單元做起,軟件單元只有經(jīng)過集成才能形成一個(gè)有機(jī)的整體。具體的集成過程可能是顯性的也可能是隱性的。只要有集成,總是會(huì)出現(xiàn)一些常見問題,工程實(shí)踐中,幾乎不存在軟件單元組裝過程中不出任何問題的情況。從圖1可以看出,集成測試需要花費(fèi)的時(shí)間遠(yuǎn)遠(yuǎn)超過單元測試,直接從單元測試過渡到系統(tǒng)測試是極不妥當(dāng)?shù)淖龇ā? 集成測試的必要性還在于一些模塊雖然能夠單獨(dú)地工作,但并不能保證連接起來也能正常工作。程序在某些局部反映不出來的問題,有可能在全局上會(huì)暴露出來,影響功能的實(shí)現(xiàn)。此外,在某些開發(fā)模式中,如迭代式開發(fā),設(shè)計(jì)和實(shí)現(xiàn)是迭代進(jìn)行的。在這種情況下,集成測試的意義還在于它能間接地驗(yàn)證概要設(shè)計(jì)是否具有可行性。 集成測試的目的是確保各單元組合在一起后能夠按既定意圖協(xié)作運(yùn)行,并確保增量的行為正確。它所測試的內(nèi)容包括單元間的接口以及集成后的功能。使用黑盒測試方法測試集成的功能。并且對以前的集成進(jìn)行回歸測試。 一、集成測試過程
二、單元測試工作內(nèi)容及其流程
三、集成測試需求獲取 集成測試需求所確定的是對某一集成工作版本的測試的內(nèi)容,即測試的具體對象。集成測試需求主要來源于設(shè)計(jì)模型(Design Model)和集成構(gòu)件計(jì)劃(Integration Build Plan)。集成測試著重于集成版本的外部接口的行為。因此,測試需求須具有可觀測、可測評性。 1. 集成工作版本應(yīng)分析其類協(xié)作與消息序列,從而找出該工作版本的外部接口。 2. 由集成工作版本的外部接口確定集成測試用例。 3. 測試用例應(yīng)覆蓋工作版本每一外部接口的所有消息流序列。 注意:一個(gè)外部接口和測試用例的關(guān)系是多對多,部分集成工作版本的測試需求可映射到系統(tǒng)測試需求,因此對這些集成測試用例可采用重用系統(tǒng)測試用例技術(shù)。 四、集成測試工作機(jī)制 軟件集成測試工作由產(chǎn)品評測部擔(dān)任。需要項(xiàng)目組相關(guān)角色配合完成。如圖示: 軟件評測部:
軟件項(xiàng)目組:
集成測試工作內(nèi)容及其流程工作流程:
五、集成測試產(chǎn)生的工件清單 1、 軟件集成測試計(jì)劃 六、集成測試常用方案選型 集成測試的實(shí)施方案有很多種,如自底向上集成測試、自頂向下集成測試、Big-Bang集成測試、三明治集成測試、核心集成測試、分層集成測試、基于使用的集成測試等。在此,筆者將重點(diǎn)討論其中一些經(jīng)實(shí)踐檢驗(yàn)和一些證實(shí)有效的集成測試方案。
·自底向上集成測試 自底向上的集成(Bottom-Up Integration)方式是最常使用的方法。其他集成方法都或多或少地繼承、吸收了這種集成方式的思想。自底向上集成方式從程序模塊結(jié)構(gòu)中最底層的模塊開始組裝和測試。因?yàn)槟K是自底向上進(jìn)行組裝的,對于一個(gè)給定層次的模塊,它的子模塊(包括子模塊的所有下屬模塊)事前已經(jīng)完成組裝并經(jīng)過測試,所以不再需要編制樁模塊(一種能模擬真實(shí)模塊,給待測模塊提供調(diào)用接口或數(shù)據(jù)的測試用軟件模塊)。自底向上集成測試的步驟大致如下: 步驟一: 按照概要設(shè)計(jì)規(guī)格說明,明確有哪些被測模塊。在熟悉被測模塊性質(zhì)的基礎(chǔ)上對被測模塊進(jìn)行分層,在同一層次上的測試可以并行進(jìn)行,然后排出測試活動(dòng)的先后關(guān)系,制定測試進(jìn)度計(jì)劃。圖2給出了自底向上的集成測試過程中各測試活動(dòng)的拓?fù)潢P(guān)系。利用圖論的相關(guān)知識,可以排出各活動(dòng)之間的時(shí)間序列關(guān)系,處于同一層次的測試活動(dòng)可以同時(shí)進(jìn)行,而不會(huì)相互影響。 步驟二: 在步驟一的基礎(chǔ)上,按時(shí)間線序關(guān)系,將軟件單元集成為模塊,并測試在集成過程中出現(xiàn)的問題。這里,可能需要測試人員開發(fā)一些驅(qū)動(dòng)模塊來驅(qū)動(dòng)集成活動(dòng)中形成的被測模塊。對于比較大的模塊,可以先將其中的某幾個(gè)軟件單元集成為子模塊,然后再集成為一個(gè)較大的模塊。 步驟三: 將各軟件模塊集成為子系統(tǒng)(或分系統(tǒng))。檢測各自子系統(tǒng)是否能正常工作。同樣,可能需要測試人員開發(fā)少量的驅(qū)動(dòng)模塊來驅(qū)動(dòng)被測子系統(tǒng)。 步驟四: 將各子系統(tǒng)集成為最終用戶系統(tǒng),測試是否存在各分系統(tǒng)能否在最終用戶系統(tǒng)中正常工作。 方案點(diǎn)評: 自底向上的集成測試方案是工程實(shí)踐中最常用的測試方法。相關(guān)技術(shù)也較為成熟。它的優(yōu)點(diǎn)很明顯: 管理方便、測試人員能較好地鎖定軟件故障所在位置。但它對于某些開發(fā)模式不適用,如使用XP開發(fā)方法,它會(huì)要求測試人員在全部軟件單元實(shí)現(xiàn)之前完成核心軟件部件的集成測試。盡管如此,自底向上的集成測試方法仍不失為一個(gè)可供參考的集成測試方案。 ·核心系統(tǒng)先行集成測試 核心系統(tǒng)先行集成測試法的思想是先對核心軟件部件進(jìn)行集成測試,在測試通過的基礎(chǔ)上再按各外圍軟件部件的重要程度逐個(gè)集成到核心系統(tǒng)中。每次加入一個(gè)外圍軟件部件都產(chǎn)生一個(gè)產(chǎn)品基線,直至最后形成穩(wěn)定的軟件產(chǎn)品。核心系統(tǒng)先行集成測試法對應(yīng)的集成過程是一個(gè)逐漸趨于閉合的螺旋形曲線,代表產(chǎn)品逐步定型的過程。其步驟如下: 步驟一: 對核心系統(tǒng)中的每個(gè)模塊進(jìn)行單獨(dú)的、充分的測試,必要時(shí)使用驅(qū)動(dòng)模塊和樁模塊; 步驟二: 對于核心系統(tǒng)中的所有模塊一次性集合到被測系統(tǒng)中,解決集成中出現(xiàn)的各類問題。在核心系統(tǒng)規(guī)模相對較大的情況下,也可以按照自底向上的步驟,集成核心系統(tǒng)的各組成模塊。 步驟三: 按照各外圍軟件部件的重要程度以及模塊間的相互制約關(guān)系,擬定外圍軟件部件集成到核心系統(tǒng)中的順序方案。方案經(jīng)評審以后,即可進(jìn)行外圍軟件部件的集成。 步驟四: 在外圍軟件部件添加到核心系統(tǒng)以前,外圍軟件部件應(yīng)先完成內(nèi)部的模塊級集成測試。 步驟五: 按順序不斷加入外圍軟件部件,排除外圍軟件部件集成中出現(xiàn)的問題,形成最終的用戶系統(tǒng)。 方案點(diǎn)評: 該集成測試方法對于快速軟件開發(fā)很有效果,適合較復(fù)雜系統(tǒng)的集成測試,能保證一些重要的功能和服務(wù)的實(shí)現(xiàn)。缺點(diǎn)是采用此法的系統(tǒng)一般應(yīng)能明確區(qū)分核心軟件部件和外圍軟件部件,核心軟件部件應(yīng)具有較高的耦合度,外圍軟件部件內(nèi)部也應(yīng)具有較高的耦合度,但各外圍軟件部件之間應(yīng)具有較低的耦合度。 ·高頻集成測試 高頻集成測試是指同步于軟件開發(fā)過程,每隔一段時(shí)間對開發(fā)團(tuán)隊(duì)的現(xiàn)有代碼進(jìn)行一次集成測試。如某些自動(dòng)化集成測試工具能實(shí)現(xiàn)每日深夜對開發(fā)團(tuán)隊(duì)的現(xiàn)有代碼進(jìn)行一次集成測試,然后將測試結(jié)果發(fā)到各開發(fā)人員的電子郵箱中。該集成測試方法頻繁地將新代碼加入到一個(gè)已經(jīng)穩(wěn)定的基線中,以免集成故障難以發(fā)現(xiàn),同時(shí)控制可能出現(xiàn)的基線偏差。使用高頻集成測試需要具備一定的條件: 可以持續(xù)獲得一個(gè)穩(wěn)定的增量,并且該增量內(nèi)部已被驗(yàn)證沒有問題; 大部分有意義的功能增加可以在一個(gè)相對穩(wěn)定的時(shí)間間隔(如每個(gè)工作日)內(nèi)獲得; 測試包和代碼的開發(fā)工作必須是并行進(jìn)行的,并且需要版本控制工具來保證始終維護(hù)的是測試腳本和代碼的最新版本; 必須借助于使用自動(dòng)化工具來完成。高頻集成一個(gè)顯著的特點(diǎn)就是集成次數(shù)頻繁,顯然,人工的方法是不勝任的。 高頻集成測試一般采用如下步驟來完成: 步驟一: 選擇集成測試自動(dòng)化工具。如很多Java項(xiàng)目采用Junit+Ant方案來實(shí)現(xiàn)集成測試的自動(dòng)化,也有一些商業(yè)集成測試工具可供選擇。 步驟二: 設(shè)置版本控制工具,以確保集成測試自動(dòng)化工具所獲得的版本是最新版本。如使用CVS進(jìn)行版本控制。 步驟三: 測試人員和開發(fā)人員負(fù)責(zé)編寫對應(yīng)程序代碼的測試腳本。 步驟四: 設(shè)置自動(dòng)化集成測試工具,每隔一段時(shí)間對配置管理庫的新添加的代碼進(jìn)行自動(dòng)化的集成測試,并將測試報(bào)告匯報(bào)給開發(fā)人員和測試人員。 步驟五: 測試人員監(jiān)督代碼開發(fā)人員及時(shí)關(guān)閉不合格項(xiàng)。 按照步驟三至步驟五不斷循環(huán),直至形成最終軟件產(chǎn)品。 方案點(diǎn)評: 該測試方案能在開發(fā)過程中及時(shí)發(fā)現(xiàn)代碼錯(cuò)誤,能直觀地看到開發(fā)團(tuán)隊(duì)的有效工程進(jìn)度。在此方案中,開發(fā)維護(hù)源代碼與開發(fā)維護(hù)軟件測試包被賦予了同等的重要性,這對有效防止錯(cuò)誤、及時(shí)糾正錯(cuò)誤都很有幫助。該方案的缺點(diǎn)在于測試包有時(shí)候可能不能暴露深層次的編碼錯(cuò)誤和圖形界面錯(cuò)誤。 以上我們介紹了幾種常見的集成測試方案,一般來講,在現(xiàn)代復(fù)雜軟件項(xiàng)目集成測試過程中,通常采用核心系統(tǒng)先行集成測試和高頻集成測試相結(jié)合的方式進(jìn)行,自底向上的集成測試方案在采用傳統(tǒng)瀑布式開發(fā)模式的軟件項(xiàng)目集成過程中較為常見。讀者應(yīng)該結(jié)合項(xiàng)目的實(shí)際工程環(huán)境及各測試方案適用的范圍進(jìn)行合理的選型。
原創(chuàng)作者:jerry 1引言 14風(fēng)險(xiǎn)及應(yīng)急計(jì)劃 |
|
|