單元測試是用來對乙個模組、乙個函式或者乙個類來進行正確性檢驗的測試工作。
比如對函式abs()
,我們可以編寫出以下幾個測試用例:
輸入正數,比如1
、1.2
、0.99
,期待返回值與輸入相同;
輸入負數,比如-1
、-1.2
、-0.99
,期待返回值與輸入相反;
輸入0
,期待返回0
;
輸入非數值型別,比如none
、、
{}
,期待丟擲typeerror
。
把上面的測試用例放到乙個測試模組裡,就是乙個完整的單元測試。
如果單元測試通過,說明我們測試的這個函式能夠正常工作。如果單元測試不通過,要麼函式有bug,要麼測試條件輸入不正確,總之,需要修復使單元測試能夠通過。
單元測試通過後有什麼意義呢?如果我們對abs()
函式**做了修改,只需要再跑一遍單元測試,如果通過,說明我們的修改不會對abs()
函式原有的行為造成影響,如果測試不通過,說明我們的修改與原有行為不一致,要麼修改**,要麼修改測試。
這種以測試為驅動的開發模式最大的好處就是確保乙個程式模組的行為符合我們設計的測試用例。在將來修改的時候,可以極大程度地保證該模組行為仍然是正確的。
單元測試可以有效地測試某個程式模組的行為,是未來重構**的信心保證。
單元測試的測試用例要覆蓋常用的輸入組合、邊界條件和異常。
單元測試**要非常簡單,如果測試**太複雜,那麼測試**本身就可能有bug。
單元測試通過了並不意味著程式就沒有bug了,但是不通過程式肯定有bug。
單元測試,測試什麼?
我們一直強調單元測試的重要性,但是有乙個問題可能沒有認真去想過,測試是重要的,但是我們測試什麼呢?最近重讀 單元測試之道 書中給出了答案 right bicep 1.right 正確 很顯然,如果 執行的結果與你預期的不符合,那麼這段 肯定是有問題的。需要注意的是,right並意味著正確,因為正確只...
單元測試,測試什麼?
我們一直強調單元測試的重要性,但是有乙個問題可能沒有認真去想過,測試是重要的,但是我們測試什麼呢?最近重讀 單元測試之道 書中給出了答案 right bicep 1.right 正確 很顯然,如果 執行的結果與你預期的不符合,那麼這段 肯定是有問題的。需要注意的是,right並意味著正確,因為正確只...
為什麼要編寫單元測試?原因是單元測試有不少的優點
為什麼要編寫單元測試?原因是單元測試有不少的優點,能夠給我們的工作帶來很大的幫助。單元測試的優點 1.幫助開發人員編寫 提公升質量 減少bug。如果大家分析一下我們bug原因的構成,我想有會有一部分bug的原因是開發人員在編寫工作 的時候沒有考慮到某些case或者邊際條件。造成這種問題的原因很多,其...