接下來我們要來介紹測試囉
其實測試應該是要在開發前寫好,
身為一個 Rails Developer,
寫測試是必備的基本功
Ruby 沒有所謂的編譯期的型別檢查,
可能程式跑到一半就出現 nil 之類的,
而造成錯誤,這時候寫測試就非常重要
我們來看看維基百科怎麼定義。
測試
描述一種用來促進鑑定軟體的正確性、完整性、安全性和品質的過程。
寫出簡單明瞭、完整符合需求的程式碼,應該是所有工程師的理想目標
寫測試可以幫助我們達成這個目標
當然寫測試的目的並不只有這個
寫測試的好處多多;壞處,我想不太到
有明確的規格可遵循開發
客戶開出需求給我們,通常是範圍極大,或者沒有聚焦於重點的要求
這時候要做的是將需求轉換為規格,讓我們跟客戶達成共識,有了規格,在日後的開發也會有一套標準能遵循,避免日後的爭議
了解程式的整個脈絡
會將功能切分成好幾個小區塊,設想各種不同的情境,最後將整個情境串連起來,讓我們更能掌握整個程式碼運作的脈絡
保證程式碼能運作
自動化測試能確保我們寫出來的程式在其他情境下是跑得動的
減少 bug 發生的機率
經過不斷地修改、驗收測試,可預期使用者在流程中會遇到哪些 bug ,這些我們可以提前在測試中消除掉,且少了 bug 好處多多,有機會讓開發時程加速,以及重構應該也會更輕鬆哦!
單元測試
將功能切分成一個個小單位,以不同的狀況及情境去測試,這時候的測試不會碰到資料庫的資料,可使用變數來進行測試。
整合測試
是業界比較常寫到的測試,會需要針對資料庫或是外部系統去做資料的新增/讀取/修改/刪除,假設我們今天要做記帳系統,要去測試 使用者每花一次錢,帳戶剩下多少
系統測試
測試整個應用程式的所有功能,會包含外部的系統(如金流系統)一起測試
使用者接受度測試
應用程式是為了使用者的需求而寫出來的,好用與否也是使用者說的算,所以在上線前必須要先讓使用者測試
BDD 行動驅動開發
程式開發人員與測試人員一起將需求轉換成規格,
需要考量到不同的情境,規劃出不同的腳本,
並使用腳本進行測試及開發,
降低使用者及開發人員的資訊落差,
讓開發出來的功能符合使用者的需求。
TDD 測試驅動開發
當腳本完成後,就會開始進入測試流程,
不斷地測試、未通過、撰寫/修改程式碼,直到最後通過。