什麼是白盒測試?很多人都聽說過白盒測試。通常的說法是,白盒測試是能看到全部產品源**的測試。常常,白盒測試都是和牛人綁在一起的。個人認為這是一種比較狹隘的說法。然而究竟什麼是白盒測試呢?可能有很多的人在做了很長時間的白盒測試以後發現,自己其實不是在做白盒測試,而是在做灰盒測試,原因是不夠「白」,因為他沒有看到全部的產品**。其實,我個人認為,這是做白盒測試的誤區。從廣義來說,個人認為,白盒測試就是**級的測試,是軟體半成品的測試,不存在所謂的灰盒測試。所謂的灰盒測試,只不過是因為**的暴露程度不同而已,從本質上來說,都是白盒測試。其實,無論是作為乙個測試者,還是作為乙個開發者,誰也不能保證通曉所有的**,尤其是在現代軟體企業中工程師的職責和分工越來越細,第
二、三方庫越來越豐富了以後。
然而,我們該如何構建白盒測試體系呢?由前面的討論,我們可以知道,產品**的暴露程度在白盒測試體系中有著十分重要的作用。如下圖:
在**暴露量等於零的時候,測試的粒度和廣度不是等於零的,這裡代表的是黑盒測試。隨著**暴露量的增加,測試的粒度和廣度並不是線性上公升的,這裡主要體現了乙個含義,**暴露量的邊際效應該是遞減的。也就是說,**暴露量的增加給測試帶來的難度是增加的。當**暴露量達到100%的時候,我們也很難做到測試覆蓋率達到100%。
由此分析,我們可以將白盒測試體系按照**暴露量由多到少做如下的劃分:深度測試,單元測試,介面測試,整合測試,壓力測試與效能分析。這是乙個完整的白盒測試體系,可以適用於各種系統的測試。深度測試,是指深入到系統中的每乙個函式進行測試;單元測試,是指對系統中的各子業務單元進行測試,需要完成業務單元的開發以後進行;介面測試,包含兩個方面的內容,即系統內部介面和外部介面,內部介面測試需要考慮系統內部多型的實現,外部介面則需要測試系統提供服務的有效性;整合測試,常常是系統的所有**開發完成以後,可以對系統中所有業務單元進行整合,對各種業務邏輯進行測試,需要深入了解系統的需求;壓力測試與效能分析,這個部分其實也許不能算是白盒測試的範疇,然而,我依然把這一部分納入到白盒測試體系考慮的範疇,這也許是乙個很有效的考察系統效能的途徑,因為通過白盒測試的方法,我們可以對系統進行精確施壓,對於這個問題,我在後面的分析中還會繼續談到。
然而,我們該如何做白盒測試呢?經過個人的實踐與總結,系統切分是白盒測試應用的乙個很重要的方法。我們需要像庖丁解牛一樣,將系統進行有效的切分,對切分出來的系統進行逐個測試。大型複雜系統可以切分成若干個小系統,小系統又可以切分成若干子系統等等。例如,某應用系統,使用者終端是最終產品,在終端的下面我們可能有業務層的動態庫,在業務層的動態庫下面,我們可能有很多的基本功能動態庫等等。對於**的j2ee架構,我們也可以進行同樣的系統拆分。對於切分的粒度,我們需要深入考慮投入產出比。切的過細,會導致投入過多,可能得到的效果不一定明顯,也存在著邊際效用遞減的可能;而切的過粗則可能產出達不到要求。因此,在做系統切分的時候,需要掌握乙個平衡點,對現有的資源和產品的測試需求做仔細的權衡。由於系統的切分,同時由於精確施壓,我們可以對單一子系統的效能做很好的分析與衡量,這將對系統的整體效能分析有非常大的幫助。
根據個人做白盒測試成功與失敗的經驗總結,在做白盒測試的時候,有一些重要的原則可能是決定白盒測試成敗的關鍵。原則一:在做系統切分的時候,我們要找到正確的系統邊界;在測試的時候,我們需要站在正確的角度來看待系統,找到正確的系統介面,並對其進行測試;原則二:直接面對產品**或者介面進行測試,不要使用中介軟體進行轉換;原則三:在做白盒測試之前需要先做好業務邏輯的抽象與設計,提高測試**的重用性,避免大量的貼上與複製;原則四:測試指令碼語言最好與產品開發語言一致,例如,c++開發的產品最好用c++來測試,當然,這會增加一定的技術難度。
python 白盒測試 白盒測試方法
白盒測試是單元測試階段常用到的測試方法,其特點有 1 可以構成測試資料,使特定程式部分得到測試 2 有一定的充分性度量手段 3 可獲得較多工具支援 4 通常只用於單元測試。下邊通過一段 來看一下白盒測試中的邏輯覆蓋 那麼為了清晰,我們畫出乙個該程式的流程圖 1 語句覆蓋 語句覆蓋是最弱的邏輯覆蓋準則...
白盒測試的測試方法
邏輯覆蓋法是白盒測試最常用的測試方法,基本包括語句覆蓋,判定覆蓋,條件覆蓋,條件判定覆蓋,條件組合覆蓋,路徑覆蓋6種。對程式的邏輯覆蓋很少,只關心判定表示式的值,是很弱的邏輯覆蓋標準。基本思想 設計若干測試用例,執行被測程式,使程式中每個可執行語句至少執行一次。優點 檢查所有語句 覆蓋率高 缺點 無...
黑盒測試 白盒測試
黑盒測試 black box testing,又稱為功能測試或資料驅動測試 是把測試物件看作乙個黑盒子。利用黑盒測試法進行動態測試時,需要測試軟體產品的功能,不需測試軟體產品的內部結構和處理過程。黑盒測試注重於測試軟體的功能性需求,也即黑盒測試使軟體工程師派生出執行程式所有功能需求的輸入條件。黑盒測...