軟件測試基礎


軟件測試基礎知識

1. 什么是軟件測試?

  業界存在的兩種定義:證“實”和證“偽”。軟件測試就是證明軟件不存在錯誤的過程。-證“實”;軟件測試是為了發現軟件中錯誤而執行程序的過程。-證“偽”。

  軟件測試是在軟件投入正式運行前對需求分析、設計和編碼的結果進行復查的活動;根據需求、設計文檔、代碼、經驗等精心設計一批用例,利用這些測試用例去運行程序,並發現程序錯誤的過程。

 

2. 軟件測試的對象是什么?

  軟件測試不僅僅局限於軟件程序的測試,測試活動貫穿於軟件開發過程的整個周期中。因此,需求分析、概要設計、詳細設計以及編碼各階段所得到的交付件,包括設計文檔,源代碼,應用程序乃至隨軟件版本發布的資料,都是軟件測試的對象

 

3. 軟件測試的分類有哪些?

  按測試用例設計方法,軟件測試分為白盒測試和黑盒測試。這是測試的方法。
  按測試策略和過程,軟件測試分為單元測試,集成測試,確認測試和系統測試。這是測試策略和步驟。

 

4. 什么是白盒測試?

  白盒測試是根據被測程序的內部結構設計測試用例的一種測試方法。也稱結構測試、邏輯驅動測試或基於程序本身的測試。測試者了解待測試程序的內部結構、算法等信息,這是從程序設計者的角度對程序進行的測試。

 

5. 白盒測試的常用方法是什么?

  采用白盒測試方法,業界比較成熟的方法有:程序控制流分析、數據流分析、邏輯覆蓋、域測試、符號測試、路徑測試、測試插裝、程序變異等。其中最常用的是邏輯覆蓋,邏輯覆蓋測試是程序結構測試最常用的測試方法,常用的邏輯覆蓋測試方法包括:

  •  語句覆蓋:設計若干測試用例,運行被測程序,使得每一個可執行語句至少執行一次;
  •  判定覆蓋:設計若干測試用例,運行被測程序,使得程序中每個判斷的取真分支和取假分支至少執行一次;
  •  條件覆蓋:設計若干測試用例,運行被測程序,使得程序中每個判斷的每個條件的可能取值至少執行一次;
  •  判定-條件覆蓋:設計足夠的測試用例,使得判斷中的每個條件的所有可能至少出現一次,並且每個判斷本身的判定結果也至少出現一次;
  •  路徑覆蓋:設計的測試用例要求覆蓋程序所有可能的路徑。

我們開發的代碼要保證語句100%覆蓋,盡量做到判定100%覆蓋。

白盒測試具體說明鏈接:what's the 白盒測試

 

6. 什么是黑盒測試?

  黑盒測試又稱為功能測試、數據驅動測試或基於規格說明的測試。黑盒測試相對於白盒測試而言,並不關心被測對象的內部實現,而是針對被測對象提供的外部功能與規格出發來設計測試用例進行測試。

 

7. 黑盒測試的常用方法是什么?

  等價類划分、邊界值分析、錯誤推測、因果圖、判定表、正交分析、功能圖等。

  其中等價類划分是典型的黑盒測試設計方法,使用最普遍,可避免窮舉法的缺點,基於某具體需求規格和特性測試規范,不用深入了解系統內部實現,對輸入域划分的不同部分選取代表性的數據進行測試,在特性測試用例設計活動中,常與其他工程方法配合使用,如邊界值方法等。

  邊界值划分測試一般分為四步:第一步,確定輸入的范圍;第二步,確定范圍的邊界值;第三步:多個輸入關系分析(可選步驟);第四步,生成測試用例。在划分時一般要找到幾個“點”,根據域測試方法可以把測試域划分為上點、離點和內點:

  • 上點:邊界上的點,如果域的邊界是封閉的,上點就在域范圍內;如果域的邊界是開放的,上點就在域范圍外。
  • 離點:就是離上點最近的一個點,如果域的邊界是封閉的,離點就在域范圍外,如果域的邊界是開放的,離點就在域范圍內
  • 內點:顧名思義,就是在域范圍內的任意一個點。

黑盒測試具體說明鏈接:what's the 黑盒測試

 

8.什么是單元測試(UT, Unit Test)?

  單元測試是對軟件基本組成單元進行的測試,單元測試主要關注每個具體單元模塊內部的邏輯結構和功能是否正確,側重於發現程序設計或實現的邏輯錯誤,基本屬於白盒測試范疇。

  “單元”具有一些基本屬性,如:明確的功能、規格定義,明確的與其他部分的接口定義等,可清晰地與同一程序的其他單元划分開來。如:函數、模塊、類或者組件或函數為基本測試單元。

 

9.什么是單元測試中的測試驅動和測試樁?

  單元本身不能獨立運行,所以必須為每個單元測試開發驅動模塊(Driver)和樁模塊(Stub)以構成一個可運行的軟件系統進行測試。

  驅動模塊:是一個接收測試數據,並把數據傳送給(被測試)模塊,然后顯示或比較相關結果的“主程序”;

  樁模塊的功能是替代那些隸屬於本模塊(被調用)的模塊,使被測對象得以運行。

 

10.單元測試的目的是什么?

  軟件測試目的在於發現錯誤,而單元測試時就不僅僅要檢測代碼的錯誤,而需要測試代碼是否是根據詳細設計進行的,因此我們認為單元測試的主要目的有:

  1. 發現設計和需求中存在的錯誤 ;
  2. 跟蹤需求和設計的實現 ;
  3. 驗證代碼是否於設計相符合;
  4. 發現在編碼過程中引入的錯誤。

 

11.什么是集成測試(IT, Integrated Test)?

  集成測試是把若干個經過單元測試的組件/模塊/單元組裝到一起的測試,主要目的是測試模塊之間的接口 ,以及被對象與系統其他部分的相互作用。

  集成測試主要依據是軟件概要設計說明書,一般不過多的考慮集成測試對象(子模塊)內部的實現,通過對模塊功能、接口設計進行分析,覆蓋所有的功能項目,重點的接口、重點的邊界進行重點測試。

  根據被測對象的規模,集成測試有可分為:模塊內集成測試、子系統內集成測試和子系統間集成測試。

  根據測試過程中組合模塊的方式,集成測試可分為:

  • 非增式集成:又稱一次性集成,對完成單元測試的所有模塊在一起進行測試。
  • 增式集成:又稱遞增式集成,即逐次將未測試的模塊與已測試的模塊組合成較大的系統,在集成的過程中邊連接邊測試,以發現連接過程中產生的問題。

  根據集成的過程又可分為:自頂向下集成、自底向上集成和衍變式集成。

集成測試介於單元測試和系統測試之間,測試方法介於也相應的單元測試方法(白盒測試)和系統測試方法(黑盒測試),即業界通用的灰盒測試方法。

 

12.什么是系統測試(ST, System Test)?

  系統測試是針對軟件項目組所承擔開發的軟件系統進行的整體測試,將軟件系統作為整體運行或實施明確定義的軟件行為子集的測試。主要采用的測試方法是黑盒測試,即不管程序內部的實現邏輯,以檢驗輸入輸出信息是否符合規格說明書中有關需求規定的測試方法。

 

 

 

 

               


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM