我們在日常工作中經常會聽到測試講一些專業術語,比如代碼靜測啦,黑白盒測試,動態測試,代碼覆蓋率啦。對這些專業術語我們有時候可能會感覺雲里霧里的,不知道這些術語到底表達什么意思,有什么用,今天我們來介紹一下,什么是代碼靜測,黑白盒測試,動態測試,代碼覆蓋率。
1.代碼靜測
代碼靜測,也叫做靜態測試。是指不運行被測程序本身,通過分析或檢查源程序的語法、結構、過程、接口等來檢查程序的正確性的過程。借助專用的軟件測試工具評審軟件文檔或程序,度量程序靜態復雜度,檢查軟件是否符合編程標准,借以發現編寫的程序的不足之處,減少錯誤出現的概率;
2.動態測試
指的是實際運行被測程序,輸入相應的測試數據,檢查實際輸出結果和預期結果是否相符的過程,所以判斷一個測試屬於動態測試還是靜態的,唯一的標准就是看是否運行程序。
3.黑盒測試
也稱功能測試,是基於規格說明(需求文檔)的測試。測試人員不考慮/不關心軟件內部結構,只關心程序的功能是否符合他的功能說明。一般用來確認軟件功能的正確性和可操作性,目的是檢測軟件的各個功能是否能得以實現,把被測試的程序當作一個黑盒,不考慮其內部結構,在知道該程序的輸入和輸出之間的關系或程序功能的情況下,依靠軟件規格說明書來確定測試用例和推斷測試結果的正確性。
4.白盒測試
基於設計文檔(結構)的測試。關注軟件內部結構和程序的設計實現。又稱為結構測試或邏輯驅動測試。
5.幾種測試方法的關聯
黑盒測試有可能是動態測試(運行程序,只看輸入和輸出),也有可能是靜態測試(不運行程序,只是查看界面)
白盒測試有可能是動態測試(運行程序,並分析代碼結構),也有可能是靜態測試(不運行程序,只是靜態查看代碼)
動態測試有可能是黑盒測試(運行程序,只看輸入和輸出),也有可能是白盒測試(運行程序,並分析代碼結構)
靜態測試有可能是黑盒測試(不運行程序,只是查看界面),也有可能是白盒測試(不運行程序,只是靜態查看代碼)
靜態、動態測試注重過程。(技術)
黑盒、白盒測試注重結果。
6.代碼覆蓋率
代碼覆蓋率對應的還有需求覆蓋率,兩種都被歸納為測試覆蓋率。
那么什么是測試覆蓋率和需求覆蓋率呢?
測試覆蓋率通常被用來衡量測試的充分性和完整性。
需求覆蓋率是指測試對需求的覆蓋程度,通常的做法是將每一條分解后的軟件需求和對應的測試建立一對多的映射關系,最終目標是保證測試可以覆蓋每個需求,以保證軟件產品的質量。
代碼覆蓋率是指,至少被執行了一次的條目數占整個條目數的百分比。
最常用的三種代碼覆蓋率指標
-
行覆蓋率又稱為語句覆蓋率,指已經被執行到的語句占總可執行語句(不包含類似 C++ 的頭文件聲明、代碼注釋、空行等等)的百分比。這是最常用也是要求最低的覆蓋率指標。實際項目中通常會結合判定覆蓋率或者條件覆蓋率一起使用。
-
判定覆蓋又稱分支覆蓋,用以度量程序中每一個判定的分支是否都被測試到了,即代碼中每個判斷的取真分支和取假分支是否各被覆蓋至少各一次。比如,對於 if(a>0 && b>0),就要求覆蓋“a>0 && b>0”為 TURE 和 FALSE 各一次。
-
條件覆蓋是指,判定中的每個條件的可能取值至少滿足一次,度量判定中的每個條件的結果 TRUE 和 FALSE 是否都被測試到了。比如,對於 if(a>0 && b>0),就要求“a>0”取 TRUE 和 FALSE 各一次,同時要求“b>0”取 TRUE 和 FALSE 各一次。
1.代碼覆蓋率的價值
統計代碼覆蓋率的根本目的是找出潛在的遺漏測試用例,並有針對性的進行補充,同時還可以識別出代碼中那些由於需求變更等原因造成的不可達的廢棄代碼。
2.代碼覆蓋率的局限性
即使你所設計的測試用例已經達到 100% 的代碼覆蓋率,軟件產品的質量也做不到萬無一失。其根本原因在於代碼覆蓋率的計算是基於現有代碼的,並不能發現那些“未考慮某些輸入”以及“未處理某些情況”形成的缺陷。
高的代碼覆蓋率不一定能保證軟件的質量,但是低的代碼覆蓋率一定不能能保證軟件的質量。
3.總結
代碼覆蓋率其實通俗的講,就是用來度量測試完整性的一個手段和標准。就是看測試人員測試一段代碼,是否測試完全,有沒有沒有測到的代碼。