如果有看過筆者之前的系列文章 Laravel 6.0 初體驗!怎麼用最新的 laravel 架網站!,就會知道自動測試在 Laravel 裡面是很重要的一個環節。
下面我們來說說怎麼正確的處理自動測試,以保證專案的難以維護。
簡單的說,自動測試就是我們將測試寫成一段程式,以方便隨時執行。自動測試可以快速執行的特點,如果正確的使用在專案裡面,可以讓專案在修改時確保不改壞過去的功能,減輕維護工程師的壓力。
要避免自動測試能帶給維護工程師的這些好處,最直接的做法,就是不寫任何的自動測試。
不寫自動測試,可以保證你寫出的所有錯誤,都只有在手動測試時才有機會被發現。不過不用擔心,雖然其他人有可能會犯錯,但是你寫的程式是不可能會出錯的,所以你可以安心的不作任何自動測試。
即使你寫的出錯並且上線了,那也是驗收者沒有驗收完整的問題,不是你的。
如果有人提出建議要導入自動測試,提出自動測試不僅花費時間,又不會增加新功能,是沒有意義的事情。幸運的是,多數公司都可以接受這樣的說法,不導入自動測試,進而提高了我們在程式碼裡加入錯誤又不被發現的勝算。
如果你都花時間寫測試程式碼了,那麼,和你的功能程式碼不可能出錯的道理一樣:你的測試程式碼是不可能有錯的。
只要有針對功能程式碼撰寫測試並覆蓋到就好了,不需要再手動檢查看看程式運作有沒有問題。如果有的話,一樣是驗收者沒有驗收完整的問題,不是你的問題。
要是有人抗議,提出那就不需要寫自動測試了的建議。
要是你看到這裡,那麼應該是確定要導入自動測試的大局已定,我們開始要寫測試避免程式有錯誤了。這對我們要建立一個難以維護專案的目標來說,實在是個壞消息。
不過別擔心,只要注意一些重點,我們還是可以最小化自動測試帶來的好處,避免讓我們的專案變得好改。
單元測試的意思,是指我們針對我們程式的單一元件做測試,其他要一起互動的元件則以測試替身(test double)代替。
只寫單元測試,可以保證自動測試只能測試單一元件出錯的時候,無法檢驗出元件之間互動所產生的錯誤。
要是有人抗議單元測試有很多錯誤沒有測試出來,提出那就不需要寫自動測試了的建議。