單元測試應該測試什麼? Right BICEP

2021-04-07 07:42:16 字數 2222 閱讀 9082

單元測試應該測試什麼?——

right-bicep

right——

結果是否正確?

b——是否所有的邊界條件都是正確的

?i——

能查一下反響關聯嗎?

c——能用其它手段交叉檢查一下嗎

?e——

你是否可以強制錯誤條件發生?

p——是否滿足效能要求?

結果是否正確

這個最簡單不過了,就是看程式執行之後的結構和文件是否一致。當然可能很多的時候乙個方法沒有很完整的文件描述它,那至少也應該有簡單的文字描述,否則沒有判斷是否正確的依據了。乙個原則是:對於驗證被測方法是否正確的這件事情,如果某些做法能夠使它變得更加容易,那麼就採納它吧。

邊界條件

correct

很多臭蟲都會集中在邊界附近,所以應該多注意。

一致性(conformance)——

值是否符合預期的格式?

很多時候,傳遞給方法的值或者方法執行後產生的值必須符合某種特定的格式。必須考慮的是,如果資料不能像期望的那樣符合格式要求,將會出現什麼情況。

有序性

(ordering)——

一組值是該有序的,還是該無序的?

應該考慮資料順序,或者是在乙個很大的資料集合中某一資料的位置。

區間性

(range)——

值是否在乙個合理的最大值和最小值的範圍之內?

對於乙個變數,它所屬型別的取值範圍可能比需要的或想要的更加寬廣。比如,人的年齡、角度等。

引用、耦合性

(reference)——

**是否引用了一些不受**本身直接控制的外部因素?

如果對於類的狀態、其它物件的狀態,或者全域性應用程式的狀態,需要作一些假設,那麼就需要對**進行測試,保證其在假設未滿足的情況下執行良好。前置條件和後置條件都必須檢測。

前置條件(

preconditions

):系統必須處於什麼狀態下,該方法才能執行。當前置條件不能滿足的情況下程式是否能夠正確執行。

後置條件(

postconditions

):方法執行之後將會有哪些狀態發生。程式的返回結構必須檢查,伴隨產生的***也必須檢查。

存在性(existence)——

值是否存在(要小心

null、0

、「」、有時可能還需要注意空格字串)?

存在性的問題很容易出現在方法的引數上,也經常出現在方法要用到的類的屬性上。特別是引用型別,要特別注意。當遇到

null

等值時,採取什麼策略需要及早考慮。應該形成一貫的處理策略,形成風格。可以考慮丟擲異常,並且

message

描述問題應盡量細緻明確。

基數性

(cardinality)——

是否恰好有足夠的值?

對基數性問題的認識我目前還不是很透徹。

時間性,絕對的或者相當的

(time)——

所有事情是否都是按順序發生的?是否在正確的時間?是否及時?

測試邊界是最有價值的工作,因為

bug通常會集中在這裡。邊界測試需要考慮的主要問題:

完全偽造或者不一致的輸入資料。

格式錯誤的資料。

空值或者不完整的值,如0,

0.0, 「」,

null

之類的。

一些與意料中的合理值相去甚遠的數值。

如果是傳入一系列資料,要考慮是否允許重複,考慮值是否應該有特定順序,順序是否可能有錯誤等。

檢查反向關聯

對於一些方法,我們可以使用反向的邏輯關係來驗證它們。要注意的是,當你同時編寫了原方法和它的方向測試時,一些

bug可能會被在兩個函式中都出現的錯誤所掩蓋。在可能的情況下,應該使用不同的原理來編寫反向測試。

使用其他手段來實現交叉檢查

通常解決乙個問題會有多種手段,如果你選擇了其中乙個方法,那麼就可以用其它的方法來檢驗它。另一種方法就是:使用類本身不同組成部分的資料,並且確信它們能「合起來」。

強制產生錯誤條件

應當能夠通過強制引發錯誤,來測試你的**是如何處理所有這些真實世界中的問題的。

下面是一些我們能想到的環境方面的因素:

記憶體耗光

磁碟用滿

時鐘出問題

網路不可用或者有問題

系統過載

受限的調色盤

顯示解析度過高或者過低

效能特性

乙個檢查起來會很有益處的部分是效能特性,而不是效能本身。

單元測試應該測試什麼? Right BICEP

單元測試應該測試什麼?right bicep right 結果是否正確?b 是否所有的邊界條件都是正確的?i 能查一下反響關聯嗎?c 能用其它手段交叉檢查一下嗎?e 你是否可以強制錯誤條件發生?p 是否滿足效能要求?結果是否正確 這 個最簡單不過了,就是看程式執行之後的結構和文件是否一致。當然可能很...

單元測試應該測什麼

單元測試應該全面覆蓋專案開發的 但是依賴的第三方 不應該被測試。凡是非本專案開發的 都可以認為是第三方 比如,我們專案依賴別的部門提供的儲存服務,連線此服務需要使用他們提供的乙個指令碼,而這個指令碼存放在我們的util目錄中。像這個指令碼,就是所謂的第三方 我用下面這段話來說服領導將這個指令碼從測試...

單元測試我們應該注意什麼!

今天老師在軟體工程中講了單元 測試這一環節,首先給我們乙個小函式,要我們分析它怎麼樣,如下 int largest int list,int length return max 針對這個函式我覺得有幾點可以說的。1.輸入陣列數值範圍影響程式正常執行。如輸入 1,2,3 1,2,3 0 1 2 257...