測試的解剖¶
最簡單來說,測試是要檢視特定行為的結果,並確保結果符合你的預期。行為並非可以透過經驗測量,這也就是為什麼撰寫測試會具有挑戰性。
「行為」是某個系統對特定情況和/或刺激做出反應的方式。但某件事是如何或為何完成的並不如完成的內容重要。
你可以將測試視為分解成四個步驟
安排
動作
斷言
清理
安排是我們為測試準備所有內容的地方。這表示幾乎所有內容,除了「動作」以外。這是排列骨牌,以便動作可以在一個狀態變更步驟中執行其功能。這可能表示準備物件、啟動/終止服務、在資料庫中輸入記錄,甚至像是定義要查詢的 URL、產生尚未存在的使用者認證,或只是等待某個程序完成。
動作是啟動我們要測試的行為的單一狀態變更動作。此行為會執行受測系統 (SUT) 的狀態變更,而我們可以檢視變更後的狀態,對行為做出判斷。這通常會以函式/方法呼叫的形式出現。
斷言是我們檢視變更後的狀態,並檢查其是否符合我們預期的樣子。這是我們蒐集證據來說明行為是否符合預期的部分。我們測試中的 assert
是我們進行測量/觀察並套用判斷的地方。如果某個東西應該是綠色的,我們會說 assert thing == "green"
。
清理是測試在自身執行後進行的,因此其他測試不會受到意外影響。
測試的核心最終是動作和斷言步驟,其中安排步驟僅提供背景。行為存在於動作和斷言之間。