你不知道什么時候下一個開發者會試圖運行你的程序,他可能優化或者錯誤的刪除一些包含本質的行。如果你沒有一個測試,它就會失敗,其他的開發者可能不會知道他們犯了錯誤。
你也可能試圖利用一些常量去替代一些已經通過了的測試中調用的各種各樣的參數,例如,看下面的方法:
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
你可以打亂代碼去測試覆蓋,這有一些關于如何測試的變化:
' 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
如果所有的測試依然通過,那么你缺少了一個測試,另外一個紅色標志是在你為多種相同值測試的檢查。如下:ssert.AreEqual(3, retval)
一些方法的關系只看一次(在一個測試中)意味著你可以安全的返回3作為一個值,然后所有的針對這個方法的測試都將通過,這個當然意味著你丟失了一個測試。如果你在單元測試中檢查一下代碼,它就很容易被檢查出來。
確保你的測試寫的越簡單越好,一個單元測試一般不包括一個if switch或者其他任何的邏輯聲明。如果你發現你自己在你的測試中寫了一些類似于邏輯聲明的東西,這是一個好的機會來測試一個以上的事件,在做這樣的操作的時候,你會使得你的測試比讀和維護更加的困難,在生產代碼中同樣如此。保持你的測試簡單,你在生產代碼中發現bug要勝于在你的單元測試中。
使測試易于運行? 如果你的測試并不容易運行,那么人們不會信任它。你的應用程序最有可能有下面兩種類型的測試:
測試在沒有任何配置的情況下平穩的運行(這種類型的測試,我們可以在任何的機器上,在代碼的最終版上或者在源控制上測試,并且做到沒有任何故障的測試)
在運行前需要一些配置.
第一種類型是你應該模仿的,第二種類型是你通常做的,尤其你如果你是一個新的單元測試。如果你發現你自己測試時有很多的特殊的需求,現在是正常的,但是重要的一點就是你要隔離出兩個組讓他們能夠單獨的去做測試。
我們的想法是任意一個開發者都應該有能力修改和運行一些不需要設置特殊的配置的測試進行測試。如果這有一些測試需要在運行前有特殊的關注,開發者應該知道他們,然后他可以花一些時間學習這些測試的方法。因為很多的開發者比較的懶(當然,不是你),你可以設想,他們不會去做那些特殊的設置,相反,他們會讓測試失敗因為他們有更好的事情去做。
文章來源于領測軟件測試網 http://www.kjueaiud.com/