標籤:
一、整合測試概念
整合測試也叫組裝測試、聯合測試、子系統測試或組件測試,是在單元測試的基礎上,將所有函數按照概要設計要求組裝成為子系統或系統所進行的測試;它和單元測試所關注的範圍是不同的,因此,它們在發現問題的集合上包含有不相交的地區,不能使用整合測試來替代單元測試,反之亦然。
二、整合測試關注點
1.模組間的介面
把各個模組串連起來的時候,穿越模組介面的資料是否會丟失;
全域資料結構是否有問題,會不會被異常修改;
2.整合後的功能
各個子功能組合起來,能否達到預期要求的父功能;
一個模組的功能是否會對另一個模組的功能產生不利的影響;
單個模組的誤差積累起來,是否會放大,從而達到不可接受的程度。
三、整合測試的層次
四、整合測試策略的主要模式
現有一個模組包含以下幾個函數,將以此為例講解每種模組的運作方式:
1.大爆炸整合方式***
這種方式中,首先對每個模組分別進行單元測試,然後再把所有單元組裝在一起進行測試,最終得到要求的軟體系統,:
缺點:
a.這種一次性組裝方式試圖在輔助模組的協助下,在模組單元測試的基礎上,將所測模組串連起來進行測試。但是由於程式中不可避免地存在模組間介面、全域資料結構等方面的問題,所以一次試運行成功的可能性並不很大;
b.在發現錯誤的時候,其問題定位和修改都比較困難;
c.即使被測系統能夠被一次性整合,但還是會有許多介面錯誤很容易的躲過測試而進入到系統測試範圍內。
適用範圍:
a.一個維護型項目(或功能增強型項目),其以前的產品已經很穩定,並且新增的項目只有少數幾個組建被增加或修改;
b.被測系統比較小,並且它的每個函數都經過了充分的單元測試。
2.自頂向下整合方式***
採用了和設計一樣的順序對系統進行測試,它在第一時間內對系統的控制介面進行驗證;採用自頂向下的整合測試首先集中於頂層的組件,然後逐步測試處於底層的組件;可採用深度優先和廣度優先策略。
優點:
a.在測試過程中較早的驗證了主要的控制和判斷點;
b.如果選用按深度方向組裝的方式,可以首先實現和驗證一個完整的軟體功能;
c.功能可行性較早得到證實,還能夠給開發人員和使用者帶來成功的信心;
d.最多隻需一個驅動,減少了磁碟機開發的費用;
e.支援故障隔離;
缺點:
a.樁的開發和維護時本策略的最大成本;
b.底層組件行為的驗證被延遲了;
c.隨著底層組件的不斷增加,整個系統越來越複雜,導致底層組件的測試不充分,尤其是那些被重用的組件。
適用範圍:
a.產品控制結構比較清晰和穩定;
b.產品的高層介面變化較小;
c.產品的底層介面未定義或經常可能被修改;
d.產品的控制組件是具有較大的技術風險,需要儘早被驗證;
e.希望儘早能夠看到產品的系統功能行為。
3.自底向上整合方式***
優點:
a.允許對底層組件的早期驗證,可以在任何一個葉子節點已經就緒的情況下進行整合測試;
b.在工作的最初可能會並行進行整合,在這一點上比使用自頂向下的策略效率高;
c.減少了樁的工作量,畢竟在整合測試中,樁的工作量遠比驅動的工作量要大得多,但是為了類比一些中斷或異常,可能還是需要設計一定的樁;
d.該方法也支援故障隔離。
缺點:
a.驅動的開發工作量也是很龐大的;
b.對高層的驗證被延遲到了最後,設計上的錯誤不能被及時發現,尤其是對於那些控制結構在整個體系中非常關鍵的產品。
適用範圍:
a.底層介面比較穩定、變動較少的產品;
b.高層介面變化比較頻繁的產品;
c.底層組件較早被完成的產品。
4.三明治整合策略
三明治整合就是這樣一種方法,它把系統劃分成三層,中間一層為目標層;測試的時候,對目標層上面的一層使用由頂向下的整合策略,對目標層下面的一層使用自底向上的整合策略,最後測試在目標層會合。
優點:集合了自頂向下和自底向上兩種策略的優點;
缺點:中介層在被整合前測試不充分;
適用範圍:大部分軟體開發項目都可以使用這種整合策略;
5.基幹整合策略
在很多系統中,尤其是嵌入式系統中,一般可以劃分成兩個部分:核心部分(基幹部分)和外圍部分,這兩部分經常會被不同的項目組並行開發。它具有如下特點:
核心部分提供了系統最基本的功能和服務;
外圍部分以核心為基礎,不能脫離核心而獨自使用;
核心具有很高的耦合性,並且相當複雜,試圖設定樁會是相當困難且成本很高的事情;
外圍部分可以分為應用子系統和控制子系統,應用子系統內耦合性不大,而控制子系統內具有較高的耦合性。
步驟:
a.識別外圍的應用子系統部分、控制子系統部分,基幹部分;
b.對基幹中所有的組件進行大爆炸整合,形成基乾子系統,並使用一個驅動檢查經過大爆炸的基幹;
c.對控制子系統進行自頂向下的整合;
d.對各應用子系統進行自底向上的整合;
e.對基乾子系統,控制子系統和各應用子系統進行大爆炸整合形成整個系統。
優點:具有三明治的優點,更適合於大型複雜項目的整合。
缺點:
a.必須對系統的結構和相互依存性進行仔細的分析;
b.必須開發驅動和樁,並且由於被測系統複雜想導致驅動和樁開發工作量的加大;
c.由於局部採用了大爆炸的策略,因此有些介面可能測試不充分。
6.分層整合策略
通過增量式整合的方法驗證一個具有層次體繫結構的應用系統的穩定性和可互通性;一般通過功能把系統劃分成不同功能層次的子系統,子系統內部具有較高的耦合性,子系統間的關係具有線性層次關係;適用於有明顯層次關係的系統。
步驟:
a.劃分系統的層次;
b.確定每個層次內部的整合策略,該策略可以使用大爆炸整合,自頂向下整合,自底向上整合和三明治整合中的任何一種策略;
c.確定層次間的整合策略,該策略可以使用大爆炸整合,自頂向下整合,自底向上整合和三明治整合中的任何一種策略;
例:
7.基於功能的整合策略
從功能角度出發,按照功能的關鍵程度對組件的整合順序進行組織,目的是儘早的驗證系統關鍵功能。
優點:
a.採用該方法,可以儘快的看到關鍵功能的實現,並驗證關鍵功能的正確性;
b.由於該方法在驗證某個功能的時候,可能會同時加入多個組件,因此在進度上比自底向上,自頂向下或三明治整合要短;
c.可以減少驅動的開發,原因與自頂向下的整合策略類似。
缺點:
a.對有些介面的測試不充分,會丟失許多幾口錯誤;
b.可能會有比較大的冗餘測試。
8.基於進度的整合策略
進度壓力是每個軟體開發項目都會遇到的問題。基於進度的整合就是在兼顧進度和品質兩者之間尋找了一個均衡點。該整合的一個最基本的策略就是把最早可獲得的代碼拿來立即進行整合,必要的時候開發樁核驅動,在最大程度上保持與開發的並行性,從而縮短了項目整合的時間。
優點:
a.具有比較高的並行度;
b.能夠有效縮短項目開發的進度;
缺點:
a.可能最早拿到的組件之間缺乏整體性,只能進行獨立的整合,導致許多介面必須等到後期才能驗證,但此時系統可能已經很複雜,往往無法發現有效介面問題;
b.樁核驅動的工作量可能會變得很龐大;
c.由於進度的原因,組件可能很不穩定且會不斷變動,導致測試的重複和浪費;
9.基於風險的整合策略
基於風險的整合式基於這樣一個假設,既系統風險最高的組件間介面往往是錯誤集中的地方,因此儘早的驗證這些介面有助於加速系統的穩定,從而增加對系統的信心。
優點:具有風險的組件最早進行驗證,有助於系統的快速穩定。
缺點:需要對各組件的風險有一個清晰的分析。
五、整合測試的四個階段
1.整合測試計劃階段:完成整合測試計劃;
2.整合測試設計階段:完成整合測試方案;
3.整合測試實現階段:完成整合測試案例、整合測試規程、整合測試指令碼及資料檔案;
4.整合測試執行階段:執行整合測試案例、修改發現的問題並進行迴歸測試,提交整合測試報告。
軟體測試基礎 - 整合測試(理論部分)