在單元測試的基礎上,需要將所有模塊按照設計要求組裝成為系統。這時需要考慮:
在把各個模塊連接起來的時侯,穿越模塊接口的數據是否會丟失;
一個模塊的功能是否會對另一個模塊的功能產生不利的影響;
各個子功能組合起來,能否達到預期要求的父功能;
全局數據結構是否有問題;
單個模塊的誤差累積起來,是否會放大,從而達到不能接受的程度。
單個模塊的錯誤是否會導致數據庫錯誤。
選擇什么方式把模塊組裝起來形成一個可運行的系統,直接影響到模塊測試用例的形式、所用測試工具的類型、模塊編號的次序和測試的次序、以及生成測試用例的費用和調試的費用。通常,把模塊組裝成為系統的方式有兩種方式:
?、?一次性集成方式
它是一種非增殖式集成方式。也叫做整體拼裝。使用這種方式,首先對每個模塊分別進行模塊測試,然后再把所有模塊組裝在一起進行測試,最終得到要求的軟件系統。
由于程序中不可避免地存在涉及模塊間接口、全局數據結構等方面的問題,所以一次試運行成功的可能性并不很大。
?、?增殖式集成方式 軟件測試
又稱漸增式集成方式。首先對一個個模塊進行模塊測試,然后將這些模塊逐步組裝成較大的系統,在組裝的過程中邊連接邊測試,以發現連接過程中產生的問題。最后通過增殖逐步組裝成為要求的軟件系統。
自頂向下的增殖方式:將模塊按系統程序結構,沿控制層次自頂向下進行集成。由于這種增殖方式在測試過程中較早地驗證了主要的控制和判斷點。在一個功能劃分合理的程序結構中,判斷常出現在較高的層次,較早就能遇到。如果主要控制有問題,盡早發現它能夠減少以后的返工。
自底向上的增殖方式:從程序結構的最底層模塊開始組裝和測試。因為模塊是自底向上進行組裝,對于一個給定層次的模塊,它的子模塊(包括子模塊的所有下屬模塊)已經組裝并測試完成,所以不再需要樁模塊。在模塊的測試過程中需要從子模塊得到的信息可以直接運行子模塊得到。
?、?混合增殖式測試
自頂向下增殖的方式和自底向上增殖的方式各有優缺點。自頂向下增殖方式的缺點是需要建立樁模塊。要使樁模塊能夠模擬實際子模塊的功能將是十分困難的。同時涉及復雜算法和真正輸入/輸出的模塊一般在底層,它們是最容易出問題的模塊,到組裝和測試的后期才遇到這些模塊,一旦發現問題,導致過多的回歸測試。而自頂向下增殖方式的優點是能夠較早地發現在主要控制方面的問題。自底向上增殖方式的缺點是“程序一直未能做為一個實體存在,直到最后一個模塊加上去后才形成一個實體”。就是說,在自底向上組裝和測試的過程中,對主要的控制直到最后才接觸到。但這種方式的優點是不需要樁模塊,而建立驅動模塊一般比建立樁模塊容易,同時由于涉及到復雜算法和真正輸入/輸出的模塊最先得到組裝和測試,可以把最容易出問題的部分在早期解決。此外自底向上增殖的方式可以實施多個模塊的并行測試。
有鑒于此,通常是把以上兩種方式結合起來進行組裝和測試。
衍變的自頂向下的增殖測試:它的基本思想是強化對輸入/輸出模塊和引入新算法模塊的測試,并自底向上組裝成為功能相當完整且相對獨立的子系統,然后由主模塊開始自頂向下進行增殖測試。
自底向上-自頂向下的增殖測試:它首先對含讀操作的子系統自底向上直至根結點模塊進行組裝和測試,然后對含寫操作的子系統做自頂向下的組裝與測試。
回歸測試:這種方式采取自頂向下的方式測試被修改的模塊及其子模塊,然后將這一部分視為子系統,再自底向上測試,以檢查該子系統與其上級模塊的接口是否適配。
原文轉自:http://www.anti-gravitydesign.com