1. 程式人生 > >[轉]UT-IT-ST-BBIT-SDV-SIT-SVT

[轉]UT-IT-ST-BBIT-SDV-SIT-SVT

sin lin lines 根據 運行 概念 組成 自底向上 合規

V模型體現了設計分層和測試分層的概念,本文以作者自身的理解談談測試執行分層,不過從實際項目運作情況來看,真正做到測試執行分層的並不多,這裏原因有很多種,暫且不論。

  1. UT

  單元測試(Unit Test)的對象是LLD中所劃分定義的程序單元或模塊,它也是單元測試用例設計中可測試的最大單元。該測試對象可能由一個或多個函數(一般就一個函數,涉及函數調用的就用AMOCK打樁返回一個值 zyq)或者類組成,測試設計就是對測試對象進行測試用例設計。

  UT的目的,是通過函數運行來檢查模塊代碼對於LLD文檔的順從性,驗證每個函數的輸入輸出響應,與它在詳細設計文檔中預先定義的是否一致。函數是產品開發實現的最基本單位,下一個實現單位是模塊,從測試的角度看,希望UT完成後,每個函數都牢固可靠,下一步的IT測試將聚焦在函數之間配合能否實現分配需求,而不用擔心函數本身的輸入輸出響應問題。

  單元測試比較適合開發人員做。

  2. IT

  集成測試(Intergration Test)是指把若幹個經過單元測試的單元組裝到一起而進行的測試,集成測試應依據HLD,主要發現接口、依賴中的錯誤或不完善的地方。集成測試的對象為若幹個單元測試對象的組合,至少為兩個。

  IT的目的,是根據模塊設計對模塊的分解,從已驗證的函數開始,逐層向上集成,得到一個可運行的模塊。

  IT可以由開發人員做,也可以由測試人員做。不難看出,UT是面向每一個單元的測試,IT是測試單元之間的接口,可以把UT/IT歸為“單元級”測試。

  3. ST

  CMM定義的ST系統測試(System Test):系統測試是針對軟件項目組所承擔開發的軟件系統進行的整體測試,將軟件系統作為整體運行或實施明確定義的軟件行為子集的測試。主要采用的測試方法是黑盒測試,即不管程序內部的實現邏輯,以檢驗輸入輸出信息是否符合規格說明書中有關需求規定的測試方法。可見ST的測試對象是規格說明書,(ST更傾向是模塊級測試,在ESL平臺或FPGA平臺測試)更確切的說,是模塊需求規格說明書,所以一般也稱為MST。模塊SRS文檔給出了模塊的輸入輸出的相應要求。MST後,每個模塊是牢固可用的。

  4. BBIT

  BBIT為模塊間接口測試,驗證模塊之間的接口能不能配合,有時和聯調混在一起,其實目的並不相同。BBIT的目的,是根據系統設計對系統的分解,從已通過驗證的模塊開始,逐層向上集成,得到一個可運行的系統。而聯調一般涉及軟件、硬件或者不同產品間的配合測試。MST和BBIT可以歸到“模塊級” 的測試,一個驗證模塊,一個驗證模塊間的接口。

  以上UT/IT/MST/BBIT一般由開發人員完成,系統基本可以運行起來了,測試人員可以開展SDV、SIT、SVT了。

  5. SDV

  SDV雖然屬於測試人員開展的系統測試,但是有點偏灰盒測試,因為SDV驗證各子系統的配合是否滿足設計需求(DR),對內部的實現還是關註的,驗證多個模塊集成以後是否滿足設計需求。

  6. SIT

  SIT也是驗證設計需求是否得以滿足,與SDV不同的是,SIT完全把系統當作一個黑盒來測試,不關心內部具體的實現。實際應用中,SDV和SIT 雖然都屬於系統一級的測試,往往由不同項目組(子系統)的測試人員分別測試,他們只關註各自的子系統,所以還是把SDV和SIT歸為“子系統級”的測試比較好。

SDV和SIT的區別:

叠代一有AB兩個需求,叠代二有CDE三個需求,叠代三有F一個需求,那麽每個叠代對AB/CDE/F進行驗證時,叫SDV測試,三個叠代結束後,對ABCDEF進行集合驗證,叫SIT測試

  7. SVT

  SVT是驗收測試,其測試對象是產品包需求OR。產品包需求給出了產品的範圍,從產品可能的應用環境的角度刻畫系統,SVT的目的就是確認(或驗收)產品包需求給出的各種應用場景產品均能滿足。

產品包需求不考慮內部實現的差異,SVT也是從整個系統的角度考慮包需求的各種應用場景,屬於“系統級”的測試。

  各個級別的測試描述完畢,回頭再看看這個分層測試的模型圖,不難發現以下幾個特征:

  1)基於系統架構的分解結構(系統-子系統-模塊-單元),開發按照自頂向下的順序逐層設計,測試按照自底向上的順序逐層驗證,這個分解結構在每一層或每一個階段,將開發和測試過程統一起來。

  2)在每一層,測試的對象是開發相應階段設計的輸出(包括需求和這個階段的設計文檔),測試的目的與開發相應階段設計的思路是相輔相成的,所以決定每個階段的測試如何開展、評價一個測試過程時,如果離開開發過程,只談測試自身的話,是不系統、不全面的。

  3)除了“系統級”的SVT測試以外,其他各層的測試均包含兩個方面:一是對這個層每個構件的測試,有n個構件就要測試n次,二是這n個構件之間接口的測試。例如:nSDV(每個測試項目組的SDV是一個SDV)和SIT、nMST(每個開發項目組的MST是一個MST)和BBIT、nUT和IT。

註意:在正規代碼開發時,開發人員自己做的測試都有覆蓋率,缺陷率要求的,這些要求會給出一個經驗值(最低,最高,平均)。比如UT測試,ST測試,都有經驗數據的,單位kloc(kilo lines of code)

[轉]UT-IT-ST-BBIT-SDV-SIT-SVT