1. 程式人生 > >黑盒白盒測試剖析(面試專用)

黑盒白盒測試剖析(面試專用)

白盒測試:

因為無論測試方案多完美也不可能100%保證發現所有bug,所以白盒測試只是要用最小的資源做最多的測試檢查,我比較常用的是基本路徑測試法。小程式

基本路徑測試法也就是設計出的測試用例要保證每個基本的獨立路徑要至少執行一次。

畫圖方法:

首先要計算圈複雜度V(G) = 判斷節點 + 1(邊 - 節點 + 2),也就是隻要最多V(G)個測試用例就能覆蓋所有基本路徑了。

匯出基本路徑:每一條基本路徑都要有新的路徑。

還有一點很重要的是,預期結果一定是要從函式的說明或者註釋計算出,絕對不可以看程式結構而算出來,因為一旦我們程式寫錯了你的預期也會跟著錯的,我就犯過一次這樣的錯。

黑盒測試:

也叫功能測試,適合大程式,通過測試來檢測是否每個功能都能正常工作。其實也就是窮舉輸入測試,把所有情況都作為測試情況考慮。

而我常用等價類劃分方法把輸入領域分為若干部分,從每個部分中選取少數代表性的資料作為測試資料。

一般來說應該有所有有效等價類的至少一個測試資料作為輸入條件,而無效等價類也應該至少有一個。

劃分的方法一般是這樣的:其實也要看題目要求

1,如果是有取值範圍的,那就範圍中的一個有效等價類,一左一右兩個無效等價類。

2,如果是必須如何,那就可以一個符合一個不符合兩個等價類。

3,必須遵守若干規則,可以一個有效等價類,若干個無效等價類

還有一點要注意,如果劃分了的等價類還有不同的處理方式,那就要進一步劃分更小的等價類,我有次就犯了這個錯誤。

實戰劃分方法:首先了解機器的方案和sdk版本相關的軟體知識,不及格應該輸出什麼(問背景,蒐集需求)

輸入數的型別(輸入空/nullptr?int ,float,char, /0,NULL?正負0?超過上限?二進位制八進位制?)

輸入是否符合規則(一個數?0個數?兩個?n個?)

與題目中的要求對比,一個要求對應一個等價類。

有沒有隱形要求,例如兩邊之和大於第三邊


設計測試用例:都是靠經驗的了,新用例儘可能覆蓋未被覆蓋的有效等價類,而無效等價類就最好只覆蓋一個。

1,按照【輸入條件】【有效等價類】【無效等價類】這個順序建立等價類表,列出所有劃分出的等價類。

2,為每個等價類規定一個唯一的編號

3,設計新的測試用例,讓其儘可能覆蓋尚未覆蓋的等效等價類。

4,設計新的測試用例,去覆蓋一個,就只能是一個新的無效等價類。

覆蓋率問題:

其實我想過能不能把黑白盒測試結合起來,因為黑盒測試是起步很快,但是覆蓋率會有峰值,例如達到70%就無法提高了。而白盒測試雖然覆蓋率高,但是比較費時,你要分析所有程式碼的邏輯結構,排程關係等等。

所以我就想能不能把黑百盒結合一下,前期用黑盒做,覆蓋那70%,然後改白盒,分析剩下30%的程式碼,增加測試用例,這個只是突發奇想,也沒試驗過行不行。

不過我覺得,100%覆蓋率不應該是測試工程師的最大追求,畢竟越是到後面,測試的效率就越低,我覺得測試工程師的目標應該找出錯誤而不是覆蓋全域性。

為什麼?

(因為測試完之後還會有內測和公測,測試使用者和使用者反饋,如果為測試而測試那工作效率就太低了,這是我的個人想法,也不知道對不對)

——————————————————————

案例:

某程式規定:"輸入三個整數 a  b  c分別作為三邊的邊長構成三角形。通過程式判定所構成的三角形的型別,當此三角形為一般三角形、等腰三角形及等邊三角形時,分別作計算 … "