軟體測試之 軟體測試方法

2022-05-30 09:39:07 字數 4322 閱讀 7647

1、介紹測試方法;

2、區分黑盒測試、灰盒測試和白盒測試(邏輯覆蓋測試);

3、區分靜態測試(控制流分析、資料流分析、資訊流分析;同行評審)和動態測試(動態測試工具);

4、了解手工測試和自動化測試。

在介紹以上軟體測試方法時,需要先了解軟體產品的概念,軟體研發過程中產生的所有文件和**都可以稱之為軟體產品,同時,只要是軟體產品,都是測試的物件,即軟體測試物件為軟體生命週期中產生的所有文件和**。1、白盒測試
1)概念(定義):是依據被測軟體分析程式內部構造,並根據內部構造分析用例,來對內部控制流程進行測試,可完全不顧程式的整體功能實現情況,即已知軟體產品的內部實現過程,可以通過測試證明每種內部操作是否符合設計規格的要求,所有內部成分是否已經過檢查。

2)思想:白盒測試又被稱為玻璃盒測試、透明盒測試、開放盒測試、結構化測試、邏輯驅動測試、是基於程式結構的邏輯驅動測試。

3)測試物件: 函式、演算法與資料結構

4)目的

(1)一般在測試前期進行,通過達到一定的邏輯覆蓋率指標,使得軟體內部邏輯控制結構上的問題能基本得到消除;

(2)保證內部結構達到一定的覆蓋程度,能夠給予軟體**質量更大的保證;

(3)白盒測試發現問題後,解決問題的成本較低。

5)白盒測試的常用技術:

(1)靜態分析:包括控制流分析、資料流分析、資訊流分析

(2)動態分析:邏輯覆蓋測試(分支測試、路徑測試等)、程式插裝等

邏輯覆蓋測試根據覆蓋的物件不同,可以分為:語句覆蓋、判定(分支)覆蓋、條件覆蓋、判定條件覆蓋、條件組合覆蓋、路徑覆蓋。

程式插裝指除錯程式時,在程式中插入一些列印語句,程式執行時列印出我們關心的資訊,通過這些資訊了解執行過程中程式的一些動態行為。

邏輯覆蓋率的統計通過程式插裝來實現。

6)白盒測試的特點:

(1)測試人員需要了解軟體的實現;

(2)可以檢測**中的每條分支和路徑;

(3)揭示隱藏在**中的錯誤;

(4)對**的測試比較徹底;

(5)實現**結構上的優化;

(6)投入較大,成本高;

(7)無法檢測**中遺漏的路徑和資料敏感性錯誤;

(8)不驗證規格的正確性。

2、黑盒測試
1)定義:把測試物件看成是乙個黑盒,只考慮其整體特性,不考慮其內部具體實現過程。即已知產品的需求規格,但不知其內部實現,可以進行測試證明每個需求是否實現。

3)測試物件:系統、子系統、模組、子模組、函式等。

4)常用的黑盒測試方法:等價類劃分法、邊界值分析法、因果圖分析法、判定表法、狀態遷移法等。

6)黑盒測試的特點

(1)對於更大的**單元來說(子系統甚至系統級)比白盒測試效率要高;

(2)測試人員不需要了解軟體的實現細節,包括特定的程式語言;

(3)從使用者的視角進行測試,很容易被理解和接受;

(4)有助於暴露任何規格不一致或有歧義的問題;

(5)沒有清洗和簡明的規格,測試用例很難設計;

(6)不能控制內部執行路徑,會有很多內部程式路徑沒有被測試到;

(7)不能直接針對特定的程式段,這些程式可能非常複雜(因此可能隱藏更多的問題)

3、灰盒測試

利用被測物件的整體特性資訊,採用黑盒測試方法;利用被測物件的內部具體實現資訊,採用白盒測試方法;介於白盒和黑盒測試之間的測試方法測試方法稱之為灰盒測試。

1)定義:如果即利用被測物件的整體特性資訊,又利用被測物件的內部具體實現資訊,採用得就是灰盒測試方法。兩種資訊占得比例不同,相應的灰度就不同。

2)適用物件:一般整合測試採用灰盒測試方法。

1、靜態測試
1)定義:不執行被測試的軟體系統,而是採用其他手段和技術對被測試軟體進行檢測的一種測試技術,例如:**走讀、文件評審、程式分析等。

2)常用技術:靜態分析技術。

(1)定義:靜態分析是一種不通過執行程式而分析程式的技術。

(2)功能:檢查軟體的表示和描述是否一致,沒有衝突或者沒有歧義

(3)目的:糾正軟體系統在描述、表示和規格上的錯誤,因此是任何進一步測試的前提。

(4)靜態分析技術主要有3種不同的程式測試可能性

*1*:考慮程式是否滿足編碼規則,語法上是否具有一致性和完整性;

*2*:考慮文件描述是否規範、準確、便於查閱;

*3*:考慮程式和文件之間的一致性。

(5)靜態分析技術有:控制流分析、資料流分析和資訊流分析,下面一一介紹:

*1*控制流分析

#1#控制流相關概念

………1、程式元素:乙個程式元素通常是乙個條件,乙個簡單的語句或者一塊語句(多個連續語句)。

………2、控制流關係:乙個程式的控制流關係(control flow relation)敘述了程式元素和他們執行的次序之間的關係。

………3、控制流圖:對應於控制流關係的圖被稱為控制流圖。

………4、控制流矩陣:有控制流圖得到,反映相鄰程式元素之間的先後順序關係。

#2#控制流分析能發現的問題

通過對控制流資訊進行分析,確保寫出的程式不應包含:轉向並不存在的標號;沒用的語句標號;從程式入口進入後無法達到的語句;不能達到停機語句的語句。

*2*資料流分析

#1#資料流相關概念

資料流分析最初是隨著編譯系統要生成有效的目標碼而出現的,這類方法主要用於**優化(**優化主要包含:結構優化即可讀性、時間效率和空間效率優化、可移植性優化)。

資料流分析法關鍵是資料的引用和定義。

………1、資料的定義:如果程式中某一語句執行時能改變某程式變數v的值,則稱v是被該語句定義的。

………2、資料的引用:如果程式中一語句的執行引用了記憶體中變數v的值,則稱v是被該語句引用的。

#2#資料流分析步驟

………1、根據**得到資料流表

………2、分析資料流表找到以下兩種錯誤:

變數未定義但被引用

變數定義但未被引用

2、動態測試
1)定義:按照預先設計的資料和步驟去執行被測軟體系統,從而對被測試軟體進行檢測的一種測試技術。

2)特點:主要分析軟體系統在模擬或是真實的環境中執行之前、之中、之後的動態行為。

3)常用技術:動態分析技術

(1)定義:對軟體系統執行行為進行分析,包含程式在受控的環境下使用特定的輸入進行正式的執行,和期望的結果比較以檢查系統執行是正確還是不正確。

(2)常用動態分析技術:

*1*:路徑測試

*2*:分支測試

*3*:效能測試

(4)常用動態分析工具及功能

*1*:測試覆蓋率分析:用於測試對**的檢測範圍;

*2*:跟蹤:跟蹤程式執行期間的所有路徑

*3*:調整:度量程式執行過程中所有的資源

*4*:模擬:模擬系統的部分

1、手工測試
1)定義:手工測試是傳統的測試方法,由測試人員手工編寫測試用例,執行,觀察結果。

2)缺點:測試工作量大,重複多,回歸測試難以實現

2、自動化測試
1)定義:自動化測試指利用軟體測試工具自動實現全部或者部分測試工作:管理、設計、執行和報告,自動化測試節省大量的測試開銷,並能夠完成一些手工測試無法實現的測試。

2)自動化測試的意義

(1)對程式新版本執行前一版本執行的測試,提高回歸測試效率

(2)可以執行更多更頻繁的測試

(3)可以執行手工測試困難或不可能做到的測試,比如大量的重複操作或者整合測試

(4)更好的利用資源,比如測試儀器或者被測物件

(5)測試具有一致性和可重複性,及自動化測試的步驟和結果完全一樣的測試的復用性,及自動化測試甲苯可以拆分開給其他測試指令碼使用

(6)可以更快地將軟體推向市場,軟體發布前進行高效的回歸測試,減少軟體發布的時間

(7)增加軟體的信任度,通過自動化測試提高了測試效率,可以吧節約的時間拿出來做更多的測試

3)自動化測試的限制

(1)不能取代手工測試,自動化測試只能提高測試效率,不能提高測試有效性,即不可能發現更多缺陷更多

(2)對測試設計依賴性極大,測試設計的不好會遺漏問題

(3)自動化測試對軟體開發具有很大的依賴性,開發出現變更可能導致前面的自動化測試完全失效

(4)工具本身並不具備想象力,工具不具有智慧型

4)自動化測試的誤區

(1)不現實的期望,希望自動化能取代手工測試

(2)缺乏測試實踐經驗,手工測試都做不好,或者經驗積累不夠,就嘗試自動化,很難成功

(3)期望自動化測試發現大量新缺陷,自動化只能保證測試執行效率,確保已有的問題不會再發生,發現新缺陷不是其目的

(4)安全性錯覺,認為進行了自動化測試的軟體就是安全的、質量***的只有手工測試做好了,明確了測試的觀察點,才能把自動化測試做好,所以手工測試是自動化測試的乙個基礎

軟體測試之測試方法

啊啊啊啊啊,每天都那麼晚才能寫部落格,我的辦事效率真的不太行啊!每天想著今天早點弄完然後寫部落格,但是不知不覺就很晚了,但是還是要堅持更。今天說一下軟體測試中通常要用到一些測試方法,幾種比較重要的方法,如下 靜態測試 不執行程式本身,而尋找程式 中可能存在的錯誤或評估,程式 的過程 動態測試 實際執...

軟體測試之黑盒測試方法

1 劃分等價類 等價類是指某個輸入域的子集合。在該子集合中,各個輸入資料對於揭露程式中的錯誤都是等效的。並合理地假定 測試某等價類的代表值就等於對這一類其它值的測試。因此,可以把全部輸入資料合理劃分為若干等價類,在每乙個等價類中取乙個資料作為測試的輸入條件,就可以用少量代表性的測試資料。取得較好的測...

軟體測試 軟體測試方法分類

目錄 軟體測試方法分類 一 從是否關心內部結構來看 1.白盒測試 2.黑盒測試 3.灰盒測試 二 從是否執行 看 1.靜態測試 2.動態測試 三 從開發過程級別看 1.單元測試 2.整合測試 3.系統測試 4.驗收測試 四 從執行過程是否需要人工干預來看 1.手工測試 2.自動化測試 五 從測試實施...