又被問說 : 為什要unit test。
流傳 : 程式開發人員不該測試自己寫的程式碼。
因為比起別人,自己更難發現自己程式上的問題,思考的邏輯都是一樣,問題在那就是測試不到,或者測試也是錯的。
但還是要保證自己的程式結果,符合自己的預期,所以自己寫unit test還是有必要。
unit test 為我帶來的好處 :
1. 動腦設計好class。code較有模組化、單元化、獨立性、可驗證測試。
2. 修改後的測試較完整、快速、避免產生沒想到的Bug發生。
3. 防止重複的Bug一再發生。
4. 可達自動化測試、Daily Test。
TDD (Test-Driven Development)
BDD (Behavior-Driven Development)
測試涵蓋率 code coverage :
所有production code被執行到的比率。軟體測試中的一種度量,越高越好。
但想想就算100%,表示所有Production code都有執行到,但跟有沒有Bug沒有關係,這是一個Gap。
另code coverage 要高,就要瞭解 Production code,設計好的 Test Case。
如下範例,測試 Debit(-1.2)
public void Debit(double amount)
{
if (amount < 0)
{
throw new NotImplementedException();
}
else if (amount > m_balance)
{
throw new NotImplementedException();
}
m_balance += amount;
}