# Day 21 驗證紀錄 驗證日期:2026-08-09 ## 測試命令 ```shell mvn clean test ``` 第一次執行時,受限環境禁止 Maven 連到 Maven Central,建置停在外掛解析階段,JUnit 尚未啟動。確認下載來源後核准這次連線,再以相同命令執行。 成功結果: ```text Running com.ithome.day21.report.DailyReportBatchDebugTest Tests run: 3, Failures: 0, Errors: 0, Skipped: 0 BUILD SUCCESS ``` ## 縮小案例的診斷數字 測試替身使用可控制的單調時鐘,不等待真實時間: ```text 舊流程+郵件 900 ms:customer-002 在 950 ms 才開始準備 舊流程+郵件 0 ms:customer-002 在 50 ms 開始準備 兩階段實驗+郵件 900 ms:customer-002 仍在 50 ms 開始準備 ``` 固定的讀資料與 PDF 時間分別為 10 ms、40 ms。只把郵件測試替身從 900 ms 換成 0 ms,就移除 900 ms 等待,因此縮小案例支持「同步等待郵件回應阻塞下一份報表」;這不是正式環境的效能量測。 ## 已驗證範圍 - 舊流程必須完成第一位測試客戶的寄信呼叫,才會開始第二份報表。 - 兩階段實驗先準備全部報表,再進入郵件邊界。 - 舊流程與兩階段實驗的第二封信都在 1900 ms 完成;實驗沒有解決郵件總耗時。 - 診斷資料只包含測試客戶代號、階段名稱與毫秒數。 ## 尚未驗證 - 正式資料庫、PDF 套件、郵件服務與實際客戶量下的延遲分布。 - 郵件是否成功排入佇列、送達、重試,以及重跑時的冪等性。 - 記憶體上限、背壓、交易與多執行個體併發行為。