關於白盒測試的一些想法

2021-09-23 13:43:38 字數 1920 閱讀 8866

近一年多一直在從事服務端的測試

工作,雖然之前也做過兩年,但融合了自動化測試功能測試以及單元測試,所以精力有限,接觸到的白盒測試比較碎也比較淺。近期專案進入了調整期,有時間整理下對於專案測試中的**測試一些感觸。 順便對未來的工作方向和計畫做好準備工作。

2023年可能需要繼續負責服務端專案測試工作,但到底白盒測試和功能測試以及模組測試,自動化測試之間應該如何進行抉擇,如何進行搭配,相互補充,來達到專案高質,高效的目的呢? 站在整個專案的角度,從以下幾個維度對白盒測試進行了一些思考:

1.   什麼樣的專案可以考慮做白盒測試

1.1.  大專案,週期比較長(因為需要前期介入review rd**)

1.2.  功能測試不放心的專案,介面比較明確,重要函式做的修改

1.3.  對整個專案了解較清晰,時間要求較低

1.4.  新專案

1.5.  邏輯較複雜的模組

1.6.  通用類的

1.7.  非同步的、多執行緒的程式

1.8.  函式用到的外部資料較多的不適合做,構造起來非常複雜,如大量的信令、詞典等

2.  如何結合白盒測試和其它測試方法

首先,需要根據專案特點,比如專案週期,專案難度等來確定測試方法。

然後,如果滿足做白盒測試的條件,則需要先確定白盒測試處於專案測試中的什麼階段,如果是迭代或優化類的專案,建議進行分層測試,重點對更新的**進行白盒測試,其它的進行傳統的自動化或手工回歸測試。如果是週期比較長的全新專案,可以考慮在rd編碼階段介入,了解介面和底層內部函式構造,為白盒測試做準備。        為了避免白盒測試和功能測試的交叉工作量,可以底層庫用白盒測試,上層功能測試用功能測試,在功能測試上就不再關注底層的測試,可借助分層測試思想。

3.  如何降低白盒測試成本

不管從技術還是從週期上,白盒測試成本比較大,所以站在高效和簡易的基礎上,盡量借助工具來儘量減少白盒測試範圍,比如可以借助:

3.1.   手工測試+**覆蓋率測試來覆蓋一部分**

3.2.   c**可以用gdb(其它語言也有)來構造一些比較難引入的上層變數,再結合**覆蓋率來做

3.3.   單測工具,比如cppunit,gtest等來做介面測試

3.4.   其它

我們之前的做法是將模組測試做成自動化case,然後新版本來後,進行自動化測試回歸,並結合**覆蓋率來出乙份覆蓋報告(從分支和**行兩個維度),然後再對新公升級的**進行review,並拓展用例來覆蓋,如果功能測試實在無法模擬,會採取gtest,最後仍不好模擬會採用gdb掛載的方式

4、 白盒測試收益和風險是什麼

4.1. 功能測試無法深入到底層的測試上,白盒測試可以

4.2. 投入成本較大,收益較小

4.3. 通過白盒測試只能發現函式級的錯誤,較難發現函式介面之間的錯誤

4.4.  時間會增加,覆蓋率會增加

4.5.  可促進rd的單元測試做的更充分

4.6.  短期收益不明顯,長遠會有收益

5、白盒測試方法

5.1. 最基層的函式做詳細的測試(傾向於功能),策略較複雜的做詳細測試(傾向於邏輯),通過自己寫5.2. 程式去呼叫被測函式,外層的通過gdb的方式去測試

5.3. 自己寫驅動去呼叫被測程式或構造上下層來驗證被測程式

5.5. 通過程式包裝被測程式,通過多執行緒的方式去實現多個動作之間的互動

5.6. cppunit去做,但呼叫關係較複雜的測試很難去實現,支援case的管理、驗證

5.7. 可借助gtest去實現,擴充套件為和c++test類似的功能

白盒測試一些方法

白盒測試足針對軟體內部結構的測試,土要是川覆蓋的方式對程式 進行測 戚。下面就白盒測試中的六種典型覆蓋方法進行 1 語句覆蓋 作為最基本的邏輯覆蓋方法,語句覆蓋 的含義是 選擇足夠多的測試資料,使得被測程式中的每個語句至少執行一次。通過語句覆蓋,可以直觀地從源 得到測試用例,無須細分每條判定表示式 ...

java白盒測試的想法

我們在進行日常程式開發和維護的時候,或許總有乙個疑問,為什麼老有改不完的bug!其實,陷入這種困境的原因往往是不注重單元測試導致的。我們知道一般將測試分為黑盒測試和白盒測試兩部分,黑盒測試較為基礎直觀,是從錯誤的表面現象中去找問題的原因,一般的bs測試人員都是在進行這種測試,總體講黑盒測試對技術的要...

白盒測試及其存在的一些問題

白盒測試,又稱結構測試 透明盒測試 邏輯驅動測試或基於 的測試。盒子就是指被測的軟體,白盒的意思就是軟體內部的結構是可視的,測試人員可以根據 在分析完程式的結構之後,我們全面了解程式內部邏輯結構 對所有邏輯路徑進行測試。我們要窮舉路徑,從檢查程式的邏輯著手,得出測試資料。但有的時候,貫穿程式的獨立路...