軟件測試筆記(十)如何作到有效的集成測試?

前言

軟件產品的構成都是很是複雜的,這也就意味着它將含有多個模塊,這些模塊經過接口進行交互。針對於這些集成模塊的測試,咱們稱之爲集成測試。也能夠認爲它是由單元測試擴展出來的。架構

集成測試的定義

集成測試是測試單元模塊之間的鏈接或數據傳輸的過程。它又稱爲I&T(集成與測試)。微服務

它分爲大爆炸法、自上而下法、自下而上法和三明治或混合集成法(自上而下和自下而上相結合)。這個過程是經過使用名爲stub和Drivers的虛擬程序來執行,其不須要實現軟件整個模塊,而只是模擬與調用模塊的數據通訊便可。工具

它一般是在單元測試以後完成以後執行的。集成測試中涉及的每一個模塊都應該在集成測試以前進行單元測試。經過在集成測試以前進行單元測試,能夠提升執行軟件集成測試的信心。單元測試

集成測試也須要編寫相應的測試計劃,從而減小了測試的混亂,併爲有效執行集成測試提供了清晰的路徑。測試

集成測試的目標

  1. 下降風險
  2. 驗證接口的功能和非功能行爲是否符合設計和規定
  3. 創建對接口質量的信心
  4. 查找缺陷(可能接口自己或組件或系統內)
  5. 防止集成接口的缺陷在後期測試中發現

如何寫集成測試用例

假設網頁程序中有三個模塊,如「登陸頁」、「收件箱」和「刪除郵件」。spa

在編寫集成測試用例時,咱們不關注單個模塊的功能,由於在單元測試期間應該覆蓋單個模塊,在集成測試階段咱們主要關注模塊之間的通訊。根據上述假設,咱們必須關注「登陸頁面如何連接到收件箱頁面」和「收件箱頁面如何連接到刪除郵件模塊」。設計

image.png

什麼是大爆炸式的集成測試

它是將全部模塊合併一次,並在完成單個模塊測試後驗證功能。在大爆炸式集成測試中,只有在全部模塊都準備好以後,才能集成各個模塊。而後他們會去檢查它是否表現良好。在這種類型的測試中,可能會出現一些缺點,例如,多是在很後期發現缺陷。很難定位缺陷是來自於某個模塊或者是接口,亦或是集成方面的問題。blog

什麼是自上而下的集成測試

image.png

在自上向下的集成測試中,測試是自上而下進行的。首先測試高級模塊,而後測試低級模塊,最後將低級模塊集成到高級模塊,以確保系統工做正常。接口

在這種類型的測試中,若是模塊尚未準備好進行集成測試,那麼樁程序(stub)將用做臨時模塊。ci

什麼是自下而上的集成測試

image.png

在自下而上的集成測試中,測試是自下而上進行的。首先測試底層模塊,而後測試高層模塊,最後將高層模塊集成到低層,以確保系統按預期工做驅動程序用做集成測試的臨時模塊。

樁和驅動程序有什麼區別

樁和驅動程序用於組件級的測試

image.png

假設咱們在一個應用程序中有兩個模塊,即「模塊1」和「模塊2」。開發人員只開發了應用程序的「模塊1」。在他們完成「模塊2」的開發以前,咱們(測試人員)收到了測試「模塊1」的要求。咱們能夠測試「模塊1」,若是其與「模塊2」沒有依賴關係。假設「模塊1」依賴於「模塊2」。那咱們該怎麼辦?在這種狀況下若是想要測試「模塊1」,須要開發人員建立一個樁(stub)模塊來替換「模塊2」。若是「模塊2」依賴於「模塊1」,但「模塊1」還沒有就緒,則採用相同的方法在本例中,咱們使用驅動(driver)替換「模塊1」。

像咱們以前提過的登陸而且登陸郵箱頁面的案例。
您必須測試登陸頁面(假設,郵箱頁面正在開發中)。登陸頁面將在登陸後調用郵箱頁面,但郵箱頁面還沒有就緒。爲了克服這種狀況,開發人員編寫了一個虛擬程序做爲郵箱頁面。這個就是樁(stub)程序。

樁(stub)被稱爲「程序」。若是「調用的程序」不完整,則將其替換爲樁。(這是自上而下的方法)。

再來講說驅動程序,登陸頁面已經準備好了,但不是郵箱頁面。此次假設郵箱頁面已經準備好測試,可是登陸頁面尚未準備好。爲了克服這種狀況,開發人員編寫了一個相似於登陸頁面的虛擬程序。這個虛擬程序就是驅動程序,驅動程序也就是「調用程序」。若是「調用程序」不完整,則將其替換爲驅動程序。(這種狀況在自下而上的方法中發生)。

驅動
自頂向下集成測試中使用樁 自下而上集成測試中使用驅動程序
在開發子程序時使用樁 開發過程當中使用驅動程序
首先測試最上層的模塊 最底層模塊最早測試
它用來模擬未集成的底層模塊的行爲 它用來模擬未集成的上層模塊的行爲
樁是被調用程序 驅動是調用程序

什麼是混合集成測試

混合集成測試也稱爲三明治集成測試。它是自頂向下和自下而上集成測試的結合。

集成測試的工具

一些集成測試工具以下:

  1. Citrus Integration Testing
  2. VectorCAST/C++
  3. FitNesse
  4. Validata

總結

集成測試是測試環節中很重要的一個部分,尤爲是在今天軟件產品的架構都在向微服務的架構轉變,那麼集成各個服務間的測試就顯得尤其重要。但願對你們有所幫助,若是有疑問或者想法,也請你們留言區回覆。

相關文章
相關標籤/搜索