測試地址清理流程時,怎麼做不含真人資料的測試名單?

地址測試資料要同時滿足兩件事:不含真人資料,而且能走到你想驗證的程式路徑。全部使用「範例市、學習路」雖然隱私安全,卻會在官方行政區或路名檢查階段就失敗,無法證明全形數字、之號、樓層與室號的正向解析是否正常。正向案例應採公開機關的公開地址作為基底,不放姓名、電話或私人房號;明確虛構或不存在的地址則保留在失敗案例,預期系統拒絕或要求人工確認。
先分成正向、邊界與失敗三組
| 類別 | 使用資料 | 要驗證的事情 | 不能推論 |
|---|---|---|---|
| 正向 | 公開機關的公開地址文字 | 工具能否解析與標準化指定格式 | 門牌或附加樓室實際存在 |
| 邊界 | 公開地址基底加語法變體 | 欄位是否保留、狀態是否降級 | 變體是可投遞地址 |
| 失敗 | 明確虛構、衝突、缺漏或空白 | 系統是否安全拒絕、說明原因 | 工具應替使用者補值 |
| 隱私 | 不像地址的唯一測試字串 | 請求、網址與紀錄是否外傳 | 地址解析品質 |
公開地址基底的作用只是避免借用私人住址,並讓縣市、行政區與路名能通過官方資料層。任何為了測試而加上的樓層、室號或之號,都要標成「語法測試值,不主張該單位實際存在」。測試通過代表程式把欄位解析成預期結構,不是政府或郵局確認了門牌。
一組可執行的最小案例
| case_id | 輸入 | 類型 | 預期重點 |
|---|---|---|---|
| P01 | 臺北市信義區市府路1號 | 正向 | 全形 1 轉為半形,行政區與路名可判讀 |
| P02 | 台北市信義區市府路1號 | 正向 | 台/臺整理後保持同一元件結構 |
| B01 | 臺北市信義區市府路1號3樓2室 | 邊界 | 樓與室分欄;只驗語法,不主張樓室存在 |
| B02 | 臺北市中正區重慶南路一段122號之1 | 邊界 | 之號保留為副號,不得併成1221號 |
| F01 | 範例市示範區學習路12號 | 失敗 | 官方行政區與道路不存在,預期無法確認或錯誤 |
| F02 | 臺北市大安區不存在路99號 | 失敗 | 路名衝突,預期錯誤,不輸出可採用英文 |
| F03 | 中山路100號 | 失敗 | 同名道路且缺行政區,預期無法確認 |
| F04 | 空字串(只在解析器直接函式測試) | 失敗 | 回傳無法確認或錯誤,不得產生成功地址 |
P01、P02 使用的是公開市政機關的公開地址文字,不包含私人收件人;B01、B02 則清楚標為語法測試,不用於寄送。若組織不允許在測試檔保存任何真實地點,即使是公開機關,也可在隔離的單元測試環境使用程式既有測試向量,而對外示範只展示遮罩後欄位與狀態,不展示完整地址。
把預期寫成可判斷條件
每筆至少包含 case_id、input、purpose、expected_status、expected_fields、must_not_happen 與資料類型。P01 的 expected_fields 可以寫「county=臺北市、district=信義區、road=市府路、number=1」;must_not_happen 則寫「不得把全形數字留在標準值、不得宣稱門牌已驗證」。B02 要檢查 number=122、number_sub=1,並禁止合成 1221。
失敗案例不要只寫「應失敗」,而要寫安全結果。F01 不得被標成確定,F02 不得輸出可直接採用的英文地址,F03 不得從同名道路猜行政區,F04 要直接呼叫解析器處理空字串,確認回傳無法確認或錯誤,且不得沿用上一筆結果。前端批次介面會先去除空白行,因此 F04 不可列入批次輸入筆數。這些負面斷言能抓到系統為了提高成功率而偷偷補值的回歸。
執行與讀回方式
- 先在地址格式檢查工具逐筆跑正向與失敗案例,保存狀態、原因及標準化結果。
- 用批次地址整理工具只跑 P01 至 F03 共七筆非空輸入,核對輸出仍為七列、順序一致且四種狀態統計相加為七。前端會逐行 trim,只有非空列才放進批次,所以 F04 不計入這個數字。
- F04 另在可載入同一解析器的單元測試中直接執行 parse(空字串) 再 assess,預期狀態為 uncertain(無法確認),且不產生英文地址;這不是從頁面文字框操作的案例。
- 以 case_id 對照預期,不用排序後的列位置,避免新增案例後比錯列。
- 正向案例只檢查指定欄位;未列為測試目標的顯示差異,不要隨便改成硬性斷言。
- 失敗案例確認沒有英文輸出、沒有去重鍵,也沒有自動補行政區或門牌。
- 規則或官方資料更新造成結果改變時,先判斷是合理規則變更還是缺陷,不直接修改預期迎合新輸出。
- 測試完成後產出只有 case_id、版本、通過與失敗原因的報告,不把輸入資料複製到客服或公開紀錄。
需要測兩筆格式差異時,可把 P01 與 P02 放入地址比較工具,預期工具在元件可判讀後辨識為同一寫法候選。B01 與不含樓室的 P02 則應呈現同一門牌但單位資訊不完整的差異。比較結果仍只描述字串與元件,不證明市府路1號的任何特定樓室存在。
隱私缺陷要用另一組識別字
若目標是檢查網址、分析、錯誤追蹤或伺服器紀錄,不需要讓地址解析成功。可以使用「AM-PRIVACY-TEST-20260926」這類明確測試識別字,追蹤它是否離開瀏覽器。把解析回歸與傳輸隱私分開,才能知道失敗是工具正確拒絕虛構地址,還是資料被不必要地送出。
個人資料保護法的實際適用仍要依情境判斷,但不使用客戶名單作測試,是更安全也更容易重現的做法。若要重現真人資料曾觸發的錯誤,只抽取必要特徵,例如全形數字、換行、前導零或之號,重新組成公開基底或明確虛構的失敗案例,不複製姓名、電話、訂單編號與完整私人地址。
完整批次欄位與人工覆核流程可參考Excel 地址批次整理指南。案例通過只表示目前版本對已列規則符合預期;沒有涵蓋的地址型態仍屬未知。每次新增規則都應補一個正向案例、一個邊界案例和至少一個失敗案例,避免只證明成功路徑而忽略安全拒絕。