軟體測試方法
根據利用的被測對象資訊的不同,可以将軟體測試方法分為:黑盒測試、灰盒測試、白盒測試。
1、白盒測試
1)概念:是依據被測軟體分析程式内部構造,并根據内部構造分析用例,來對内部控制流程進行測試,可完全不顧程式的整體功能實作情況,即已知軟體産品的内部實作過程,可以通過測試證明每種内部操作是否符合設計規格的要求,所有内部成分是否已經過檢查。
2)思想:白盒測試又被稱為玻璃盒測試、透明盒測試、開放盒測試、結構化測試、邏輯驅動測試、是基于程式結構的邏輯驅動測試。
3)測試對象: 函數、算法與資料結構
4)目的
(1)一般在測試前期進行,通過達到一定的邏輯覆寫率名額,使得軟體内部邏輯控制結構上的問題能基本得到消除;
(2)保證内部結構達到一定的覆寫程度,能夠給予軟體代碼品質更大的保證;
(3)白盒測試發現問題後,解決問題的成本較低。
5)白盒測試的常用技術:
(1)靜态分析:包括控制流分析、資料流分析、資訊流分析
(2)動态分析:邏輯覆寫測試(分支測試、路徑測試等)、程式插裝等 ,邏輯覆寫測試根據覆寫的對象不同,可以分為:語句覆寫、判定(分支)覆寫、條件覆寫、判定條件覆寫、條件組合覆寫、路徑覆寫。 程式插裝指調試程式時,在程式中插入一些列印語句,程式執行時列印出我們關心的資訊,通過這些資訊了解執行過程中程式的一些動态行為。
6)白盒測試的特點:
(1)測試人員需要了解軟體的實作;
(2)可以檢測代碼中的每條分支和路徑;
(3)揭示隐藏在代碼中的錯誤;
(4)對代碼的測試比較徹底;
(5)實作代碼結構上的優化;
(6)投入較大,成本高;
(7)無法檢測代碼中遺漏的路徑和資料敏感性錯誤;
(8)不驗證規格的正确性。
2、黑盒測試
1)定義:把測試對象看成是一個黑盒,隻考慮其整體特性,不考慮其内部具體實作過程。即已知産品的需求規格,但不知其内部實作,可以進行測試證明每個需求是否實作。
2)思想:基于規格的測試,測試類型都來源于品質模型。
3)測試對象:系統、子系統、子產品、子子產品、函數等。
4)常用的黑盒測試方法:等價類劃分法、邊界值分析法、因果圖分析法、判定表法、狀态遷移法等。
5)目的:減少測試時的測試用例數,用盡量少的測試用例完成測試,發現更多的問題。
6)黑盒測試的特點
(1)對于更大的代碼單元來說(子系統甚至系統級)比白盒測試效率要高;
(2)測試人員不需要了解軟體的實作細節,包括特定的程式設計語言;
(3)從使用者的視角進行測試,很容易被了解和接受;
(4)有助于暴露任何規格不一緻或有歧義的問題;
(5)沒有清洗和簡明的規格,測試用例很難設計;
(6)不能控制内部執行路徑,會有很多内部程式路徑沒有被測試到;
(7)不能直接針對特定的程式段,這些程式可能非常複雜(是以可能隐藏更多的問題)
3、灰盒測試
利用被測對象的整體特性資訊,采用黑盒測試方法;利用被測對象的内部具體實作資訊,采用白盒測試方法;介于白盒和黑盒測試之間的測試方法測試方法稱之為灰盒測試。
1)定義:如果即利用被測對象的整體特性資訊,又利用被測對象的内部具體實作資訊,采用得就是灰盒測試方法。兩種資訊占得比例不同,相應的灰階就不同。
2)适用對象:一般內建測試采用灰盒測試方法。
按照被測試的軟體系統是否運作,将測試分為靜态測試和動态測試。
1、靜态測試
1)定義:不運作被測試的軟體系統,而是采用其他手段和技術對被測試軟體進行檢測的一種測試技術,例如:代碼走讀、文檔評審、程式分析等。
2)常用技術:靜态分析技術。
(1)定義:靜态分析是一種不通過執行程式而分析程式的技術。
(2)功能:檢查軟體的表示和描述是否一緻,沒有沖突或者沒有歧義
(3)目的:糾正軟體系統在描述、表示和規格上的錯誤,是以是任何進一步測試的前提。
(4)靜态分析技術主要有3種不同的程式測試可能性
考慮程式是否滿足編碼規則,文法上是否具有一緻性和完整性;
考慮文檔描述是否規範、準确、便于查閱;
考慮程式和文檔之間的一緻性。
(5)靜态分析技術有:控制流分析、資料流分析和資訊流分析,下面一一介紹:
1、控制流分析
(控制流相關概念)
程式元素:一個程式元素通常是一個條件,一個簡單的語句或者一塊語句(多個連續語句)。
控制流關系:一個程式的控制流關系(Control Flow Relation)叙述了程式元素和他們執行的次序之間的關系。
控制流圖:對應于控制流關系的圖被稱為控制流圖。
控制流矩陣:有控制流圖得到,反映相鄰程式元素之間的先後順序關系。
(控制流分析能發現的問題 )
通過對控制流資訊進行分析,確定寫出的程式不應包含:轉向并不存在的标号;沒用的語句标号;從程式入口進入後無法達到的語句;不能達到停機語句的語句。
2、資料流分析
(資料流相關概念 )
資料流分析最初是随着編譯系統要生成有效的目标碼而出現的,這類方法主要用于代碼優化(代碼優化主要包含:結構優化即可讀性、時間效率和空間效率優化、可移植性優化)。資料流分析法關鍵是資料的引用和定義。 資料的定義:如果程式中某一語句執行時能改變某程式變量V的值,則稱V是被該語句定義的。
資料的引用:如果程式中一語句的執行引用了記憶體中變量V的值,則稱V是被該語句引用的。
(資料流分析步驟 )
根據代碼得到資料流表
分析資料流表找到以下兩種錯誤:變量未定義但被引用
變量定義但未被引用
2、動态測試
1)定義:按照預先設計的資料和步驟去運作被測軟體系統,進而對被測試軟體進行檢測的一種測試技術。
2)特點:主要分析軟體系統在模拟或是真實的環境中執行之前、之中、之後的動态行為。
3)常用技術:動态分析技術
(1)定義:對軟體系統運作行為進行分析,包含程式在受控的環境下使用特定的輸入進行正式的運作,和期望的結果比較以檢查系統運作是正确還是不正确。
(2)常用動态分析技術:
路徑測試
分支測試
性能測試
(3)常用動态分析工具及功能
測試覆寫率分析:用于測試對代碼的檢測範圍;
跟蹤:跟蹤程式執行期間的所有路徑
調整:度量程式執行過程中所有的資源
模拟:模拟系統的部分
3、所有測試方法都可以歸類為手工測試和自動化測試。
1、手工測試
1)定義:手工測試是傳統的測試方法,由測試人員手工編寫測試用例,執行,觀察結果。
2)缺點:測試工作量大,重複多,回歸測試難以實作
2、自動化測試
1)定義:自動化測試指利用軟體測試工具自動實作全部或者部分測試工作:管理、設計、執行和報告,自動化測試節省大量的測試開銷,并能夠完成一些手工測試無法實作的測試。
2)自動化測試的意義
(1)對程式新版本運作前一版本執行的測試,提高回歸測試效率
(2)可以運作更多更頻繁的測試
(3)可以執行手工測試困難或不可能做到的測試,比如大量的重複操作或者內建測試
(4)更好的利用資源,比如測試儀器或者被測對象
(5)測試具有一緻性和可重複性,及自動化測試的步驟和結果完全一樣的測試的複用性,及自動化測試甲苯可以拆分開給其他測試腳本使用
(6)可以更快地将軟體推向市場,軟體釋出前進行高效的回歸測試,減少軟體釋出的時間
(7)增加軟體的信任度,通過自動化測試提高了測試效率,可以吧節約的時間拿出來做更多的測試
3)自動化測試的限制
(1)不能取代手工測試,自動化測試隻能提高測試效率,不能提高測試有效性,即不可能發現更多缺陷更多
(2)對測試設計依賴性極大,測試設計的不好會遺漏問題
(3)自動化測試對軟體開發具有很大的依賴性,開發出現變更可能導緻前面的自動化測試完全失效
(4)工具本身并不具備想象力,工具不具有智能
4)自動化測試的誤區
(1)不現實的期望,希望自動化能取代手工測試
(2)缺乏測試實踐經驗,手工測試都做不好,或者經驗積累不夠,就嘗試自動化,很難成功
(3)期望自動化測試發現大量新缺陷,自動化隻能保證測試執行效率,確定已有的問題不會再發生,發現新缺陷不是其目的
(4)安全性錯覺,認為進行了自動化測試的軟體就是安全的、品質有保證的隻有手工測試做好了,明确了測試的觀察點,才能把自動化測試做好,是以手工測試是自動化測試的一個基礎
軟體測試報告請咨詢@軟體測評閑聊站
标簽:黑盒測試、白盒測試、灰盒測試