軟體測試:使用人工或自動的手段來執行或測量軟體系統的過程,以檢驗軟體系統是否滿足規定的要求,並找出與預期結果之間的差異。
軟體測試的測試物件:軟體概要設計、軟體詳細設計、軟體執行環境、可執行程式、軟體原始碼、軟體需求
五大要素:質量、人員、資源、流程、技術
兩大目標:測試覆蓋率、測試效率
遵循的原則:1、測試顯示缺陷的存在,但不能證明系統不存在缺陷
2、窮盡測試是不可能的,應設定及時終止的條件
3、測試應儘早進行
4、缺陷具備群集特性
5、不定期評審測試用例和方法,增加不同的測試方法
6、二八原則:用百分之八十的時間和資源用在百分之二十的重點模組上面
7、測試活動依賴於測試背景
軟體測試的分類
--------------按測試階段分類
單元測試:對軟體中的最小可測試單元進行檢測和驗證。
原則:1、儘可能保證各個測試用例是相互獨立的
2、一般由程式碼的開發人員來實施
益處:1、能儘快發現缺陷
2、有利於重構
3、簡化整合
4、文件編寫
5、使用者設計
限制:1、不可能覆蓋所有的執行路徑
2、每一行程式碼,一般需要3-5行測試程式碼才能完成單元測試,所以存在一個投入和產出的平衡
測試框架:Junit-Java nunit-.net PHPunit-php CPPunit-c++
------
整合測試:是在單元測試的基礎上,測試再將所有的軟體單元按照概要設計規格說明的要求組裝成模組、子系統或系統的過程中, 各部分工作是否達到或實現相應技術指標及要求的活動。
主要實施方案:1、bigbang:一次性整合,把大部分的開發模組都耦合起來形成一個完整的軟體系統為系統的主要組成部分,
並把他們拿來做整合測試,把所有的東西組裝好
2、自頂向下:這是一個遞增的組裝軟體結構的方法
3、自底向上(常用):從程式模組最底層開始逐層向上組裝並逐層測試
好處:針對已經組裝過的測試不需要針對上一層裝模組
優點:比較好的鎖定軟體故障所在位置
4、核心系統整合:先把核心軟體系統挑選出來,並把這部分進行整合測試,在測試通過的基礎上再逐步擴充套件到外圍部件
5、高頻整合
整合測試和單元測試區別:1、測試物件的不同:單元測試針對的是軟體基本單元,最小單元。整合測試以模組與子系統為單元,模組與模組之間介面的關係
2、測試依據不同:單元測試針對軟體詳細設計,整合測試針對軟體概要設計
3、測試方法不同:整合測試關注介面之間整合,單元測試只關心在單元的類之間
------
系統測試:是將經過整合測試的軟體,作為計算機系統的一個部分,與系統中其他部分結合起來,在實際執行環境下對計算機系統進行的一系列嚴格有效的測試,以發現軟體潛在的問題,保證系統正常執行。
關注點:1、系統本身的使用
2、系統與其他相關係統之間的連通
3、系統在不同使用壓力下的表現
4、系統在真實使用環境下的表現
系統測試和整合測試的區別:1、測試物件的不同:整合測試是由通過了單元測試的各個模組所整合起來的構件。系統測試除了軟體外,還包括計算機硬體及相關的外圍裝置、資料採集和傳輸機構、支援軟體、系統操作人員等整個系統
2、測試時間:整合測試介於單元測試和系統測試之間,系統測試在整合測試之後
3、測試內容:整合測試專注於各個單元模組之間的介面,系統測試專注於整個系統的功能和效能
4、測試角度:整合測試偏於技術角度的驗證,系統測試偏於業務角度的驗證
------
驗收測試:也成交付測試。針對使用者需求,業務流程的正式測試,確定系統是否滿足驗收標準,由使用者、客戶或其他授權機構決定是否接受系統
--------------按測試手段分類
黑盒測試:黑盒測試著眼於程式外部結構,不考慮內部邏輯結構,主要針對軟體介面和軟體功能進行測試
優點:1、容易實施,不需要關注內部的實現
2、更貼近使用者的使用角度
缺點:1、測試覆蓋率較低,一般只能覆蓋到程式碼量的不到40%
2、針對黑盒的自動化測試,複用率較低,維護成本較高
黑盒測試主要測試什麼?
1、是否有不正確或遺漏的功能
2、在介面上,輸入是否能正確接收,能否輸出正確的結果
3、是否有資料結構錯誤或外部資訊(例如資料檔案)訪問錯誤
4、效能上是否能滿足要求
注:主要在系統測試階段使用黑盒測試
黑盒測試主要設計方法:等價類劃分法、邊界值分析法、錯誤推測法、因果圖法、正交實驗分析法、狀態遷移圖法、流程分析法
-----
白盒測試:白盒測試又稱結構化測試;是一種測試用例設計方法,盒子指的是被測試的軟體,白盒指的是盒子是可視的,你清楚盒子內部的東西以及裡面是如何運作的。"白盒"法全面瞭解程式內部邏輯結構、對所有邏輯路徑進行測試
優點:1、迫使測試人員去仔細思考軟體的 實現、理解原理
2、可以檢驗程式碼中的每條分支和路徑
3、揭示隱藏在程式碼中的錯誤
4、對程式碼的測試比較徹底
缺點:1、昂貴:較高的覆蓋率
2、無法檢測程式碼中遺漏的路徑和資料敏感性錯誤
3、不能直接驗證需求的正確性
白盒測試的主要測試方法:程式碼檢測法、靜態結構分析法、靜態質量度量法、邏輯覆蓋法、基本路徑測試法
-------
灰盒測試:介於黑盒、白盒測試之間的,關注輸出對於輸入的正確性,同時也關注內部
-------
靜態測試: 是指無需執行被測程式,而是通過評審軟體文件或程式碼,度量程式靜態複雜度,檢測軟體是否符合程式設計標準,藉以發現編寫的程式的不足之處,減少錯誤出現的概率
-------
動態測試:是指通過執行被測程式,檢查執行結果與預期結果的差異,並分析執行效率,正確性和健壯性等
-------
手工測試:由專門的測試人員從使用者視角來驗證軟體是否滿足設計要求的行為。更適用針對深度的測試和強調主觀判斷的測試
------
自動化測試:使用單獨的測試工具軟體控制元件制測試的自動化執行以及對預期和結果進行自動檢查
手工測試VS自動化測試
手工測試:1、易發現缺陷,容易實施
2、創造性,靈活性
3、覆蓋量化難,重複測試效率低
4、不一致性,可靠性低,人力資源依賴
自動化測試:1、高效率,速度快
2、高複用性,覆蓋率容易度量
3、準確,可靠,不知疲勞
4、機械,發現缺陷率低,一次性投入較大