軟件測試相關概念以及原則
軟件測試:使用人工或自動的手段來運行或測量軟件系統的過程,以檢驗軟件系統是否滿足規定的要求,並找出與預期結果之間的差異。
軟件測試的測試對象:軟件概要設計、軟件詳細設計、軟件運行環境、可運行程序、軟件源代碼、軟件需求
五大要素:質量、人員、資源、流程、技術
兩大目標:測試覆蓋率、測試效率
遵循的原則: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、機械,發現缺陷率低,一次性投入較大
軟件測試相關概念以及原則