iT邦幫忙

2026 iThome 鐵人賽

DAY 16
0
ChatGPT & Codex

從 Prompt 到 Pull Request:30 天玩懂 ChatGPT & Codex系列 第 16

# Day 16|請 Codex 修 Bug,但先證明它真的存在

  • 分享至 

  • xImage
  •  

昨天把「新增任務後重新整理,資料就消失」整理成一份可以重現的 Bug 回報,並請 Codex 先診斷、不修改程式。

今天要開始修正,但不是直接要求 Codex 加入 localStorage

第一步是先建立一個會失敗的測試,證明目前程式確實無法保存任務,而且測試失敗的原因和昨天觀察到的現象相同。

為什麼修正前要先寫測試?

如果先修改程式,等功能正常後才補測試,我只能看到測試在新版本通過,卻不知道它能不能抓到原本的問題。

先讓測試在舊程式上失敗,可以確認:

  • 測試真的覆蓋使用者遇到的行為
  • 失敗不是來自測試本身寫錯
  • 修正前後有可以比較的證據
  • 未來相同行為再次壞掉時,測試能攔住它

這個流程通常稱為 Red → Green:先看到代表問題的紅燈,再做最小修改讓它轉為綠燈。

第一階段:只建立失敗測試

我會沿用昨天的診斷任務,先輸入:

根據剛才確認的診斷,請先為「重新整理後任務仍然存在」建立一個會失敗的測試。

測試情境:
1. 以乾淨的瀏覽器儲存狀態開始
2. render Issue Tracker
3. 新增一筆「修正登入頁面」
4. 確認任務已顯示
5. 模擬頁面重新載入,重新建立 App
6. 確認同一筆任務仍然顯示

要求:
- 沿用現有測試工具,不新增套件
- 從使用者可觀察的畫面驗證行為
- 不直接呼叫未來才會建立的儲存函式
- 每個測試前清除 localStorage,避免案例互相影響
- 目前只允許修改測試檔案,不要修改產品程式
- 執行這個測試並保留完整失敗輸出

完成後請停下來,不要修正功能。
請說明測試修改在哪裡、如何模擬重新載入,以及為什麼目前的失敗和回報問題相同。

這段 prompt 的回覆和執行

第二階段:做最小修正

失敗測試確認完成後,才繼續輸入第二段 Prompt:

剛才的失敗測試已確認能重現「重新整理後任務消失」。

現在請做最小修正,讓任務資料保存在瀏覽器的 localStorage,並在 App 啟動時讀回。

要求:
- 遵守 AGENTS.md
- 不新增套件
- 沿用目前的任務資料結構
- 不實作編輯、刪除、搜尋、篩選、排序或拖曳
- 不進行無關重構或重新設計畫面
- 保留並通過剛才的失敗測試
- 避免不同測試共用殘留的 localStorage 資料

完成後請執行:
1. 持久化相關測試
2. 完整測試
3. lint
4. build

最後請回報:
- 實際修改的檔案
- 資料寫入與讀回的流程
- 修正前後的測試結果
- 所有驗證指令與結果
- 是否還有未處理的風險

這段 prompt 的回覆和執行

這是我的 repo,在裡面的 commit 找到 "fix bug" 就是這篇文章寫完時的狀態。

綠燈之後還要做什麼?

持久化測試通過後,我還會確認三件事。

1. 舊測試仍然通過

新增 localStorage 不能破壞原本的新增任務、空白驗證與清空輸入欄位等行為。

2. 手動重新整理

啟動 Issue Tracker,新增幾筆任務後重新整理頁面,確認內容仍然存在。接著關閉並重新開啟頁面,再檢查一次。

3. 測試彼此獨立

localStorage 會留在同一個測試環境中。如果案例執行前沒有清除資料,單獨執行可能通過,和其他測試一起執行卻可能失敗,或因殘留資料得到假成功。

因此要確認每個案例都能從可預期的儲存狀態開始。

今日小結

今天沒有直接叫 Codex「幫我修好」,而是把任務分成兩個階段:先建立能穩定重現問題的失敗測試,確認紅燈原因正確後,再做最小修正讓同一個測試轉為綠燈。


上一篇
# Day 15|不要只說「有錯」:把錯誤訊息變成除錯 Prompt
系列文
從 Prompt 到 Pull Request:30 天玩懂 ChatGPT & Codex16
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言