TDD 測試驅動開發提示詞:AI 結對編程「紅 → 綠 → 重構」一次只走一步

想用測試驅動開發的方式實現一個功能、或者練習 TDD 時用:讓 AI 當結對夥伴,每輪只提出下一個最小的失敗測試,等你寫實現讓它通過後再重構,避免它一次性把測試和實現全寫完。

NNathaniel bigo··原創首發·AI 輔助撰寫
通用大模型 對話模型通用
我們來做 TDD 結對編程。你負責寫測試和提重構建議,我負責寫實現(除非我說「這一步你來寫」)。

- 語言與測試框架:[語言與測試框架](例:TypeScript + Vitest)
- 要實現的功能:[功能描述]
- 已知的規則和例子:
  [規則與例子]

工作方式(嚴格遵守):
1. 開始前,先把功能拆成一份「測試清單」:從最簡單的情況到最複雜的情況排序,每項一句話。清單可以在過程中增刪。
2. 每一輪只做一件事,並在開頭標明當前階段:
   - 紅:從清單裏挑下一個最簡單、能推動實現前進的測試,只寫這一個測試,說明預期它會因為什麼原因失敗。然後停下,等我運行測試並貼回結果。
   - 綠:我貼回失敗結果後,提示我「用最簡單的方式讓它通過」,可以是看起來很笨的寫法;我貼回實現和通過結果後,你檢查是否真的通過、有沒有寫多餘的代碼。
   - 重構:在所有測試通過的前提下,指出實現和測試代碼裏的重複、命名問題、可以簡化的地方,每次只建議一處改動;沒有需要重構的就說明並進入下一輪。
3. 不要一次寫多個測試,不要提前寫出完整實現。
4. 每輪結束時更新測試清單,用「已完成 / 待做 / 新發現」標記。
5. 如果我的實現明顯超前(寫了還沒有測試覆蓋的邏輯),提醒我先補測試。

現在開始:先給出測試清單,然後進入第一輪「紅」。

高亮處換成你自己的內容:[語言與測試框架]、[功能描述]、[規則與例子]

ChatGPT Plus 充值

已被複製 0 次

使用說明

怎麼填變量:[已知的規則和例子] 寫成具體的輸入輸出最好,比如「空字符串返回 0;"1,2" 返回 3;負數要報錯並列出所有負數」。經典練習題(字符串計算器、保齡球計分、羅馬數字轉換)很適合第一次用這條提示詞。

常見坑:

  • AI 很容易「急」,一次把五個測試和完整實現都寫出來。如果發生了,直接回復「只保留第一個測試,其餘刪掉」,它會回到節奏上。
  • 「綠」階段寫最簡單的實現(甚至直接返回固定值)是 TDD 的正常做法,下一個測試會逼着實現變得通用。不要跳過。
  • 重構階段只改結構不改行為,改完測試必須仍然全部通過。

追問技巧:完成後追問「回顧這次的測試清單,哪些測試其實是多餘的、哪些邊界還沒覆蓋」;也可以說「這一步你來寫」,讓 AI 示範一次實現再換回來。

示例輸出

示例,僅供參考(功能:字符串計算器)

測試清單:

  1. 空字符串返回 0
  2. 單個數字返回它本身
  3. 兩個逗號分隔的數字求和
  4. 任意多個數字求和
  5. 支持換行作為分隔符
  6. 負數拋出錯誤,錯誤訊息列出所有負數

當前階段:紅

ts
import { describe, it, expect } from 'vitest'
import { add } from './calculator'

describe('add', () => {
  it('空字符串返回 0', () => {
    expect(add('')).toBe(0)
  })
})

預期失敗原因:calculator 模組和 add 函數還不存在。請運行測試並把結果貼給我。

同款作品

用這條提示詞做出來的作品;原作者會因此獲得積分

做同款

還沒有同款,來做第一個。

Nathaniel 的更多內容

同主題

同模型

0 條評論

登入 後參與評論

還沒有評論,來搶沙發~