你不知道什么時候下一個開發(fā)者會試圖運行你的程序,他可能優(yōu)化或者錯誤的刪除一些包含本質(zhì)的行。如果你沒有一個測試,它就會失敗,其他的開發(fā)者可能不會知道他們犯了錯誤。
你也可能試圖利用一些常量去替代一些已經(jīng)通過了的測試中調(diào)用的各種各樣的參數(shù),例如,看下面的方法:
Public Function Sum(ByVal x As Integer, ByVal y As Integer, _
ByVal allowNegatives As Boolean) As Integer
If Not allowNegatives Then Throw New Exception()
Return x + y
End Function
你可以打亂代碼去測試覆蓋,這有一些關(guān)于如何測試的變化:
' Try this...
If Not True Then ' replace flag with const
If x < 0 OrElse y < 0 Then Throw New Exception()
End If
' Or this...
If Not allowNegatives Then
' replace check with const
If False OrElse y < 0 Then Throw New Exception()
End If
如果所有的測試依然通過,那么你缺少了一個測試,另外一個紅色標(biāo)志是在你為多種相同值測試的檢查。如下:
Assert.AreEqual(3, retval)
一些方法的關(guān)系只看一次(在一個測試中)意味著你可以安全的返回3作為一個值,然后所有的針對這個方法的測試都將通過,這個當(dāng)然意味著你丟失了一個測試。如果你在單元測試中檢查一下代碼,它就很容易被檢查出來。
確保你的測試寫的越簡單越好,一個單元測試一般不包括一個if switch或者其他任何的邏輯聲明。如果你發(fā)現(xiàn)你自己在你的測試中寫了一些類似于邏輯聲明的東西,這是一個好的機會來測試一個以上的事件,在做這樣的操作的時候,你會使得你的測試比讀和維護更加的困難,在生產(chǎn)代碼中同樣如此。保持你的測試簡單,你在生產(chǎn)代碼中發(fā)現(xiàn)bug要勝于在你的單元測試中。
使測試易于運行 如果你的測試并不容易運行,那么人們不會信任它。你的應(yīng)用程序最有可能有下面兩種類型的測試:
• 測試在沒有任何配置的情況下平穩(wěn)的運行(這種類型的測試,我們可以在任何的機器上,在代碼的最終版上或者在源控制上測試,并且做到?jīng)]有任何故障的測試)
• 在運行前需要一些配置.
第一種類型是你應(yīng)該模仿的,第二種類型是你通常做的,尤其你如果你是一個新的單元測試。如果你發(fā)現(xiàn)你自己測試時有很多的特殊的需求,現(xiàn)在是正常的,但是重要的一點就是你要隔離出兩個組讓他們能夠單獨的去做測試。
更多軟考資料請訪問:考試吧軟件水平考試欄目
希望與更多網(wǎng)友交流,請進入考試吧軟件水平考試論壇
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |