選單

測試固定裝置裡的身份資料怎麼組織?可重現與可維護

測試固定裝置裡的身份資料若沒有命名與結構,很快就會腐化。本文說明身份樣本該按什麼組織、值得先準備哪些邊界樣本,以及為什麼每次隨機產生會讓失敗無法重現。

發佈於

  • 測試資料
  • 身份資訊

測試固定裝置指的是那份跟著測試一起留在版控裡的樣本資料,它的價值來自穩定:同一份裝置在每次執行都產生相同結果,失敗才有辦法重現。以下說明身份樣本該怎麼組織與命名、值得先準備哪些邊界案例,以及它為什麼會隨時間腐化。

固定裝置與即時產生的分工

兩者解決的是不同問題,不該互相取代。固定裝置負責穩定,適合核心流程與回歸測試;即時產生負責廣度,能在短時間內造出大量組合,適合探索性測試與壓力情境。

分工的方式通常是分層:核心流程用固定樣本,探索階段用產生器,發現問題後把造成問題的那一筆固定下來,成為新的樣本。這樣既保住可重現性,也不會讓手寫樣本成為唯一的資訊來源。

最需要避免的是把產生器直接接進固定裝置。一旦兩者混在一起,每次調整產生邏輯都會讓整批樣本變動,審查的人看到的是一大片差異,而不是一個有意義的新案例。若樣本數量真的很大,可以讓產生器輸出一次結果後就固定成檔案,之後不再重新產生,這樣既省下人工撰寫的時間,也保住可重現性。

身份樣本該按什麼命名?

名稱是固定裝置唯一的老師。當一筆樣本只叫「身份範例」時,後人無法判斷它為什麼存在、能不能改;若名稱同時帶上國家與場景,例如標明是某國的年齡門檻邊界或某國的單名案例,用途就一目瞭然。

名稱也讓覆蓋率變得可檢查。把樣本名稱列出來,就能看出哪些國家只有一筆、哪些情境完全沒有樣本,而不必逐筆閱讀內容。這比等待某個人記得補充來得可靠。若名稱裡帶上規則類型,還能進一步看出同一類規則是否重複準備了好幾筆長得一樣的樣本。

避免只用序號命名。序號在新增與刪除之間很容易重排,參照它的測試也會跟著失效;名稱只要維持語意,就能承受內容的調整。若某筆樣本真的說不出用途,那通常代表它可以直接刪掉。

值得先準備的邊界樣本有哪些?

與其準備一批長得差不多的紀錄,不如準備幾筆各自代表一種失敗模式的樣本。以身份資料來說,值得先涵蓋的類型包括:

  • 極高齡的樣本,用來檢查年齡計算與報表分組。
  • 超長姓名,用來檢查欄位長度與顯示排版。
  • 只有單名、沒有姓氏的樣本,用來檢查必填規則與字串拼接。
  • 含變音符號與非拉丁字元的樣本,用來檢查正規化與比對。
  • 生日落在閏日的樣本,用來檢查日期換算。
  • 落在保留號段的證件號,用來檢查拒絕邏輯。

這些樣本不需要很多,但要能各自說明它對應哪一種錯誤。若某筆樣本既測不到邊界,也重現不了特定缺陷,那它存在的意義就只是增加維護成本。

為什麼每次隨機產生會讓失敗無法重現?

因為失敗的條件也一起消失了。當測試每次執行都拿到不同的紀錄,一次失敗之後無法再跑出同樣的輸入,也就無法確認修改是否真的解決了問題。團隊往往只能反覆重跑,期待它再次出現。

隨機資料還有一個副作用:它讓差異難以閱讀。審查時看到的是整批欄位都在跳動,而不是一個針對特定情境的新案例,於是很難判斷改動到底帶來了什麼影響。這種難以閱讀的差異也會拖慢審查速度,因為審查的人必須先分辨哪些變動是刻意的、哪些只是隨機的結果。

務實的折衷是把隨機當成發現工具,而不是長期資產。發現問題後,把造成問題的那一筆(或一組條件)固定進裝置,讓它成為回歸測試的一部分;這樣既保留了探索的廣度,也累積了可重現的案例。每次固定下來的樣本,最好同時在檔名或註解裡寫上它當初對應的缺陷或回報編號,日後才有辦法判斷它是否還有意義。

給開發者:裝置的結構與防腐化

  • 每個樣本一組明確的識別名稱,包含國家與場景。
  • 樣本保持靜態,需要隨機資料時另外用產生器取得。
  • 相關欄位取自同一組來源,避免出現跨國家的矛盾組合。
  • 檔案開頭寫明用途、涵蓋範圍與最後更新時間。
  • 只被單一測試使用的樣本,可以考慮直接寫在該測試裡,減少間接層級。
  • 新增樣本時同步檢查是否已有相同用途的樣本,避免重複。

本站的身份產生器可以一次產生一整條彼此對應的紀錄,適合拿來造樣本後再固定下來;這些內容只供測試,不能拿來冒充真人,也不能當成任何真實身分的證明。樣本裡的欄位該如何互相對應,整理在身份資料一致性;地址類樣本的組織方式可以參考測試固定裝置裡的地址資料。

裝置會不會隨時間腐化?

會,而且通常沒有人注意到。當產品規則改變、欄位增減,或某個國家改用新的證件格式,舊樣本就會從「像真的」變成「一看就知道過時」。它仍然能通過測試,因為它測的是舊規則。

防止腐化的方式是把樣本當成程式碼看待:定期抽樣檢視、在規則變動時一併更新、並在檔案裡註明它最後一次被確認的內容。可重現測試資料在流程上怎麼運作,可以參考可重現的測試資料。

一份裝置要涵蓋多少國家才夠?

沒有標準答案,但可以用兩個問題決定:產品實際服務哪些地區,以及哪些地區的規則差最多。與其為每個國家準備一筆結構相同的樣本,不如先覆蓋規則明顯不同的幾類,例如純數字證件號、字母數字混合、內含出生日期,以及需要校驗位的格式。

當產品新增一個地區時,最經濟的做法是同時補上該地區的樣本,而不是等到問題出現才回頭補。若新地區與既有樣本屬於同一類規則,也可以先在文件中註明這是有意的取捨,讓後人知道那是判斷,而不是遺漏。

覆蓋率也應該看得見。把樣本名稱與涵蓋的地區列成一張清單,就能一眼看出哪些地區只有一筆、哪些規則完全沒有樣本,而不必等人憑印象回答。

下一步

把裝置裡的身份樣本名稱逐筆念出來,看看有沒有哪一筆說不出用途;再挑三筆補上邊界情境,例如單名、閏日與超長姓名。做完之後跑一次完整測試,確認這些樣本真的會走到你想檢查的那條路徑,而不是被其他規則先擋下來。

繼續閱讀

線上身份與測試資料產生器相關文章