什麼是測試#
維基百科的定義:
在規定的條件下對程序進行操作,以發現程序錯誤,衡量軟體質量,並對其是否能滿足設計要求進行評估的過程。
也可以這樣理解:測試的作用是為了提高代碼質量和可維護性。
- 提高代碼質量:測試就是找 BUG,找出 BUG,然後解決它。BUG 少了,代碼質量自然就高了。
- 可維護性:對現有代碼進行修改、新增功能從而造成的成本越低,可維護性就越高。
什麼時候寫測試#
如果你的程序非常簡單,可以不用寫測試。例如下面的程序,功能簡單,只有十幾行代碼:
function add(a, b) {
return a + b
}
function sum(data = []) {
let result = 0
data.forEach(val => {
result = add(result, val)
})
return result
}
console.log(sum([1,2,3,4,5,6,7,8,9,10])) // 55
如果你的程序有數百行代碼,但封裝得很好,完美的踐行了模組化的理念。每個模組功能單一、代碼少,也可以不用寫測試。
如果你的程序有成千上萬行代碼,數十個模組,模組與模組之間的互動錯綜複雜。在這種情況下,就需要寫測試了。試想一下,在你對一個非常複雜的專案進行修改後,如果沒有測試會是什麼情況?你需要將跟這次修改有關的每個功能都手動測一遍,以防止有 BUG 出現。但如果你寫了測試,只需執行一條命令就能知道結果,省時省力。
測試類型與框架#
測試類型有很多種:單元測試、集成測試、白盒測試...
測試框架也有很多種:Vitest、Jest、Jasmine、LambdaTest...
單元測試#
什麼是單元測試?維基百科中給出的定義為:
單元測試(英語:Unit Testing)又稱為模組測試,是針對程序模組(軟體設計的最小單位)來進行正確性檢驗的測試工作。
從前端角度來看,單元測試就是對一個函數、一個組件、一個類做的測試,它針對的粒度比較小。
單元測試應該怎麼寫呢?
- 根據正確性寫測試,即正確的輸入應該有正常的結果。
- 根據錯誤性寫測試,即錯誤的輸入應該是錯誤的結果。