天天看點

測試基本理論

基本概念

軟體測試是在軟體投入運作前,對軟體需求分析、設計規格說明和編碼的最終複審,是軟體品質保證的關鍵步驟;軟體測試是在一定的軟體、硬體、網絡環境下,遵循相對規範的軟體測試流程,使用合理的測試方法以及适當的測試工具運作或測試某個系統的過程。

測試目的

評價一個程式和系統的特性或能力,并确定它是否達到預期的結果;在軟體分發到最終使用者手中之前,以最少的時間和人力找出軟體中潛在的各種錯誤和缺陷

測試原則

  1. 所有測試的标準都是建立在使用者需求之上
  2. 盡早定義好産品的品質标準
  3. 測試應盡早介入
  4. 窮盡測試是不可能的
  5. 測試應貫穿于軟體整個生命周期
  6. 程式員應避免檢查自己的程式
  7. 要站在客戶的角度進行測試

測試分類

  1. 按照内部結構

    白盒測試:已知産品的内部工作過程,可以通過測試證明每種内部操作是否符合設計規格要求,所有内部成分是否已經過檢查

    黑盒測試:已知産品的功能設計規格,可以進行測試證明每個實作了的功能是否符合要求

    灰盒測試:介于白盒與黑盒之間,在關注輸出正确的同時也考慮内部的實作邏輯

  2. 按照是否運作

    靜态測試:不實際運作被測軟體,而隻是靜态地檢查程式代碼、界面或文檔中可能存在的錯誤的過程

    動态測試:實際運作被測程式,輸入相應的測試資料,檢查實際輸出結果和預期結果是否相符的過程

  3. 按照開發階段

    單元測試: 又叫子產品測試,對用源代碼實作的每一個程式單元進行測試,檢查各個程式子產品是否正确地實作了規定的功能

    內建測試:又叫組裝測試,通常在單元測試的基礎上,将所有程式子產品進行有序的、遞增測試。重點測試不同子產品的接口部分

    系統測試:指将整個軟體系統看成一個整體進行測試,包括對功能、性能以及軟體所運作的軟硬體環境進行測試

    驗收測試: 指按照項目任務書或合同、供需雙方約定的驗收依據文檔進行的對整個系統的測試與評審,決定是否接收或拒收系統

  4. 按照測試類型

    功能測試:指在對一個新版本進行系統大規模的測試之前,先驗證一下軟體的基本功能是否實作,是否具備可測性

    性能測試:是為了獲得系統在某種特定的條件下(包括特定的負載條件下)的性能名額資料;

    壓力測試:壓力測試是在強負載(大資料量、大量并發使用者等)下,檢視應用系統的操作行為,進而發現系統的某項功能隐患、系統是否具有良好的容錯能力和可恢複能力;壓力測試可分為高負載下的長時間的穩定性壓力測試和極限負載下導緻系統崩潰的破壞性壓力測試;

    負載測試:負載測試是模拟軟體系統所承受的負載條件的負荷,通過不斷加載的方式來觀察不同負載下系統的響應時間和資料吞吐量、系統占用的資源(如CPU、記憶體)等,以檢驗系統的行為和特性,來發現系統可能存在的性能瓶頸、記憶體洩漏、不能實時同步等問題;負載測試更多地展現了一種方法或一種技術

    接口測試:主要用于檢測外部系統與系統之間以及内部各個子系統之間的互動點。測試的重點是要檢查資料的交換,傳遞和控制管理過程,以及系統間的互相邏輯依賴關系

    界面測試:是對所有人機互動界面提供的操作和顯示界面進行的測試,以檢驗是否滿足使用者的需求

    可靠性測試:也稱軟體的可靠性評估,指根據軟體系統可靠性結構(單元與系統間可靠性關系)、壽命類型和各單元的可靠性試驗資訊,利用機率統計方法,評估出系統的可靠性特征量

    恢複性測試:主要檢查系統的容錯能力,當系統出錯時,能否在指定時間間隔内修正錯誤并重新啟動系統

    邊界測試:用來探測和驗證代碼在處理極端的或偏門的情況時會發生什麼,包括一、輸入域/輸出域的邊界;二、資料結構的邊界;三、狀态轉換的邊界;四、功能界限的邊界或端點

    容量測試:通過測試預先分析出反映軟體系統應用特征的某項名額的極限值(如最大并發使用者數、資料庫記錄數等),系統在其極限狀态下沒有出現任何軟體故障或還能保持主要功能正常運作

    相容性測試:指測試軟體在特定的硬體平台上、不同的應用軟體之間、不同的作業系統平台上、不同的網絡等環境中是否能夠很友好的運作的測試

    安全性測試:是有關驗證應用程式的安全服務和識别潛在安全性缺陷的過程

    冒煙測試:指在對一個新版本進行系統大規模的測試之前,先驗證一下軟體的基本功能是否實作,是否具備可測性

    其他專項測試:安裝測試、文檔測試、易用性測試、健壯性測試、本地化測試、無障礙測試、回歸測試、Monkey測試、A/B測試、驗收測試

測試設計方法

  1. 等價類劃分

    有效等價類:對于程式規格說明來說是合理的、有意義的輸入資料構成的集合

    無效等價類:與有效等價類相反

  2. 邊界值分析:對輸入或輸出的邊界值進行測試的黑盒測試方法
  3. 錯誤推斷:基于經驗和直覺推測程式中可能存在的各種錯誤,進而有針對性的設計測試用例的方法
  4. 因果圖法:利用圖解法分析輸入的各種組合情況,進而設計測試用例的方法,它适合于檢查程式輸入條件的各種組合情況
  5. 判定表驅動:判定表是分析和表達多邏輯條件下執行不同操作的情況的方法
  6. 正交實驗法:從大量的實驗資料中挑選适量的,有代表性的點來進行測試用例設計的方法,類似的方法還有聚類分析法、因子法等
  7. 功能圖法:綜合了邏輯覆寫和路徑覆寫的測試方法,偏向于灰盒測試的一種測試方法
  8. 場景法:根據不同的觸發場景來設計測試用例

測試計劃和方案

  1. 測試計劃:

    對測試全過程的組織、資源、原則等進行規定和限制,并制定測試全過程各個階段的任務配置設定以及時間進度安排,并提出對各項任務的評估,風險分析和管理需求。

  2. 測試方案:

    描述需要測試的特性,測試的方法,測試環境的規劃,測試工具的設計和選擇,測試用例的設計方法,測試代碼的設計方案。

    測試方案需要在測試計劃的指導下進行,測試計劃提出“做什麼”,而測試方案明确“如何做”!