做下去,遇上新難題閱讀時間約 2 分鐘
先看,這個測試真正檢查甚麼
測試全數通過,意思是已執行的檢查符合它們的斷言(assertions),不等於程式的每種行為都已得到證實。例如測試可以確認按下保存後草稿仍在,卻完全沒有量度「保存」按鈕在畫面上是否被頁尾遮住。
JSDOM 這類 DOM 測試環境,可以檢查很有意義的行為:事件觸發、狀態變化、無障礙結構,以及部分鍵盤焦點操作,並非只看 HTML 標籤是否存在。但它不會真正計算排版和繪製畫面,所以不能回答所有捲動或遮擋問題。
空間上的問題,要看真正的畫面
涉及空間與排版的問題,要在真正繪製畫面的瀏覽器裏,分別以有代表性的窄與寬畫面操作:試着捲動到最底部的按鈕、打開和收起輔助面板、用鍵盤操作,再看焦點能否回到原本的按鈕上。除了資料齊全的畫面,也要檢查空白、等候和錯誤狀態。
390px 視窗寬度是很實用的窄畫面檢查,但不是每部手機都合適的保證書。瀏覽器自動操作能檢查真實排版,但螢幕鍵盤彈出、觸控、下載和分享,仍值得拿起實際裝置試一次。不同層次的根據各有用途,不應互相替代。
把欠缺的檢查,說得具體
當實際畫面出現問題、而單元測試沒有發現時,先找出漏掉了哪個假設,再補上合適的回歸檢查,而不必只追求增加測試數量。記下一組可重現的鍵盤焦點操作步驟,配上一張按鈕被擋住的截圖,往往比測試報告上多一個通過數字更有用。
在 My Next Step,我希望既檢查底下的行為,也走過人真正操作的路。任何一邊看似正常,都不能代另一邊作答。