2010-03-09 121 views
0

當開發一個軟件時,會進行各種類型的測試 - 單元,集成,功能,手冊。在我當前的項目(帶有sql server的winforms)中,有遺留代碼(沒有測試),我們確實有很多錯誤。 我們正嘗試使用手動+測試(主要集成)的組合來移除它們如何處理這種情況?

但是,仍然有一些錯誤可以逃脫。

例如(一個假設的情況) - 如果客戶已經購買了一些商品價值爲前6個月,應該給他上購買一些折扣,他讓曾經6個月有lapsed.His狀態應更新爲特權。

但是,由於某種原因(代碼中的錯誤)系統沒有這樣做。我們應該如何處理這種情況?我們是否應該在數據庫上運行一個腳本來查找所描述的場景?這種情況的另一個延伸可能是,客戶一旦有特權就必須發送禮物,但系統缺少這樣做。

想法?

回答

1

「我們是否應該在數據庫上運行一個腳本來查找所描述的場景?」

您的意思是「在數據庫中放置腳本以糾正問題」,然後

NO。決不。在任何情況下。通過添加特殊的特殊情況邏輯來解決bug是一個非常糟糕的主意。

  1. 當這種特殊的特殊情況邏輯有它自己的錯誤時,你已經添加了錯誤代碼來嘗試糾正錯誤代碼。淨虧損。

  2. 當您嘗試增強系統時,您有這種特殊的特殊情況下邏輯,沒有任何意義。

    a。如果你幸運的話,你可以修復它本應該解決的問題,這將是多餘的。現在怎麼辦?要刪除哪個副本?

    b。否則,它會與其他代碼相抵觸。現在怎麼辦?哪個是對的?

如果您的意思是「在數據庫中放置腳本以幫助查找和調試問題」,那麼是的。在短時間內,請使用您的各種工具來查找和修復錯誤。一旦找到並修復,此腳本將無用,並且必須刪除

如果您的意思是「在數據庫中編寫腳本以測試應用程序」,那麼是的。這就是單元測試腳本的用途。使用它們。

創建單元測試比創建放入數據庫的腳本要好得多。 單元測試是最好的方法。

+0

「把一個腳本在數據庫中,以幫助查找和調試問題」 - 是的,這就是我meant.But,再這樣的腳本應該是免費的bug(需要測試!) – 2010-03-09 17:43:39

+0

@junky_user:不,不需要沒有bug。您可以使用它來查找並修復錯誤,然後刪除它。 – 2010-03-09 18:04:00

0

你應該有一個自動化的測試套件。該測試套件將實現規範要求的所有場景。由於不能等待6個月來測試折扣是否有效,實際實現將被替換爲mock實現(示例以java爲例,但其他語言也適用相同的原理),例如「模擬」6個月過去了。可以使用斷言來使測試自動化。

一旦準備好了整個測試套件,如果所有測試都通過(像以前一樣)重構/更改代碼,則可以確定沒有功能因重構而中斷。

相關問題