昨天我們提到當我們要維護一個舊專案裡的測試時,我們可以選擇花時間和精力把壞掉的測試修好,也可以選擇不修壞掉的測試。這兩個選擇看起來各有它的優缺點,我們該怎麼選擇呢?還是有其它的方法呢?
在第一個選擇裡,我們花時間和精力去修改那些壞掉的測試,也許我們要花兩個星期。在這兩個星期裡我們是沒有任何產出的,但這值得嗎?我不知道,這要看情況,但大部分是不值得的。把時間拿去做更有價值的事情,除非你沒事做了。
在第二個選擇裡,我們不把壞掉的改正確,就把它放在那裡。但之後修改維護的時候我們可能會加測試,也可能會把舊的程式碼改壞,但是在有一些壞掉的測試在的情況下,我們無法知道每次的修改是否正確,或是說要花費額外的時間才有辦法確認。
這邊的建議是,把它砍了。
如果我們把目前壞掉的測試砍掉會是什麼情況?
我們有了一個有一些測試的舊專案,而且它的所有測試都是通過的。這個好處是日後我們在修改的時候,只要跑測試就知道我們是否有改壞東西。
當我們想新加測試時,也只需要專注在讓這個測試通過就好,不用花時間去注意是否改壞其它的地方,因為原本的測試會幫我們驗證。
把它砍了?那原本壞掉的測試情境怎麼辦?我的答案是不理它,當它們沒有存在過。
我們可以想一下,當我們拿到這個專案時,它應該已經上線了,上線代表什麼意思,它有通過 QA 的測試,也就是說,雖然那些測試是壞的,但 QA 的測試是過的。
那些壞掉的測試也許是函數多加了一些參數,或介面修改了,原因有很多,但 QA 的測試是通過的。
這是否跟我們花 30 分鐘為每個項目寫測試時,也是有一些測試案例沒有寫,但是它們也有可能通過 QA 的測試,如果沒有通過的,我們也會補上測試是一樣的。
如果你問我什麼時候才要考慮那些被砍掉的測試?我會說,當它發生問題的時候,也就是說不管是 QA 找到 Bug 或是線上出現問題需要修改的時候。這時才需要考慮把發生問題的這個情境下的測試補上去,其它的就不需要了。