戰(zhàn):從需求到上線的十大模塊)
1. 別再把AI編程當(dāng)成自動寫代碼機(jī)了過去一年身邊幾乎每個(gè)團(tuán)隊(duì)都在折騰AI編程從最早嘗鮮用Copilot補(bǔ)全代碼到后來用ChatGPT問代碼報(bào)錯(cuò)再到現(xiàn)在的Cursor、Claude、通義靈碼這類工具全面鋪開。但一個(gè)很奇怪的現(xiàn)象是有人靠AI把開發(fā)效率翻了好幾倍有人折騰了大半年除了讓它寫點(diǎn)工具函數(shù)和正則之外什么都沒改變。差距到底出在哪我自己的結(jié)論是AI編程的提效價(jià)值被大多數(shù)人嚴(yán)重誤讀了。它不是一個(gè)輸入需求就吐代碼的魔法盒子而是一套嵌入到研發(fā)全流程里的協(xié)作系統(tǒng)。同樣是寫一個(gè)訂單模塊會用它的人和不會用它的人產(chǎn)出速度和代碼質(zhì)量可以差出一個(gè)量級。這篇文章把我自己在實(shí)際項(xiàng)目里的經(jīng)驗(yàn)整理成了十大模塊按軟件開發(fā)的生命周期從上游到下游排開每個(gè)模塊我都會講清楚三件事AI到底在這個(gè)環(huán)節(jié)做了什么、提效的原理是什么、落到自己的項(xiàng)目里應(yīng)該怎么搭這套體系。最后再給一套我們團(tuán)隊(duì)實(shí)際跑通的落地方案可以直接拿去參考。適合誰看如果你正在用AI輔助日常開發(fā)但總覺得卡在問一句答一句的階段如果你想在公司內(nèi)部推AI編程標(biāo)準(zhǔn)化流程但不知道怎么設(shè)計(jì)或者你只是好奇AI編程除了補(bǔ)全代碼還能做什么——這篇文章應(yīng)該都能幫到你。先說一句總綱AI編程提效的本質(zhì)是把開發(fā)流程里那些高重復(fù)、低創(chuàng)新、強(qiáng)上下文依賴的環(huán)節(jié)自動化和半自動化把人的精力騰出來去做真正需要判斷力、業(yè)務(wù)理解和架構(gòu)能力的事情。十個(gè)模塊的拆解本質(zhì)上都是在圍繞這句話展開。2. 上游模塊需求和設(shè)計(jì)階段的AI介入很多團(tuán)隊(duì)把AI編程等同于寫代碼這是最大的誤區(qū)。實(shí)際上需求分析和方案設(shè)計(jì)階段的提效空間遠(yuǎn)比編碼階段大得多而且ROI更高。因?yàn)橐粋€(gè)小時(shí)的方案錯(cuò)誤后面需要十個(gè)小時(shí)的返工來彌補(bǔ)AI在這個(gè)環(huán)節(jié)的價(jià)值恰恰是幫你減少這種返工。2.1 需求分析從模糊描述到結(jié)構(gòu)化需求的拆解做技術(shù)的人都遇到過這種情況產(chǎn)品經(jīng)理丟過來一段話首頁要加一個(gè)活動入口能展示用戶參與狀態(tài)點(diǎn)擊進(jìn)去是活動詳情頁還要有分享功能。就這么一段話背后隱藏著一堆需要確認(rèn)的問題活動入口的展示規(guī)則是什么用戶未登錄狀態(tài)怎么處理分享出去的鏈接誰來打開活動過期要不要下線數(shù)據(jù)埋點(diǎn)怎么做傳統(tǒng)模式下這些問題的答案要靠開發(fā)一遍遍找產(chǎn)品確認(rèn)。我見過不少項(xiàng)目光需求澄清就能來回拉鋸一周。AI在這件事上能做的是先把模糊描述拆解成結(jié)構(gòu)化問題清單幫你在第一時(shí)間發(fā)現(xiàn)需求里的信息缺口。具體操作是這么做的把產(chǎn)品給的原始描述粘貼給AI要求它按功能列表、業(yè)務(wù)規(guī)則、狀態(tài)流轉(zhuǎn)、異常場景、埋點(diǎn)需求、權(quán)限要求這幾個(gè)維度輸出需求拆解初稿。AI會基于它對常見業(yè)務(wù)系統(tǒng)的理解自動補(bǔ)上那些沒說但大概率存在的邊界條件——比如未登錄態(tài)、空數(shù)據(jù)態(tài)、接口超時(shí)、權(quán)限不足這類典型異常分支。我們團(tuán)隊(duì)實(shí)測下來一段300字左右的模糊需求描述AI能在兩三分鐘內(nèi)產(chǎn)出一份包含30到50個(gè)判斷點(diǎn)的結(jié)構(gòu)化拆解文檔。雖然不可能全部準(zhǔn)確但它最大的價(jià)值是把原本需要人憑經(jīng)驗(yàn)去想的可能性清單變成了看得見的文字開發(fā)拿著這份清單去和產(chǎn)品過一輪確認(rèn)和補(bǔ)充的成本比從零開始想低得多。提效原理很簡單AI壓縮了從模糊需求到完整需求邊界之間的思維成本。人在沒有參考的情況下做這件事靠的是經(jīng)驗(yàn)積累和臨場發(fā)散容易遺漏AI靠的是海量業(yè)務(wù)模式的統(tǒng)計(jì)規(guī)律覆蓋面天然更廣。2.2 技術(shù)方案設(shè)計(jì)讓AI做方案窮舉和對比需求確定之后進(jìn)入技術(shù)方案階段。傳統(tǒng)流程里資深工程師根據(jù)經(jīng)驗(yàn)選一個(gè)方案然后團(tuán)隊(duì)評審。這里有個(gè)天然的問題個(gè)人經(jīng)驗(yàn)是有邊界的一個(gè)常年用Spring Cloud的團(tuán)隊(duì)碰到一個(gè)新的場景第一反應(yīng)還是Spring Cloud的解法很難跳出熟悉區(qū)去考慮其他可能。AI在這個(gè)環(huán)節(jié)真正有價(jià)值的用法不是讓它給一個(gè)方案而是讓它輸出方案候選集。把需求背景、約束條件比如團(tuán)隊(duì)技術(shù)棧、部署環(huán)境、性能要求、工期限制告訴AI要求給出三到五種可選技術(shù)方案每種方案說明架構(gòu)思路、核心流程、優(yōu)點(diǎn)、缺點(diǎn)、預(yù)估工作量、潛在風(fēng)險(xiǎn)。舉個(gè)例子我們?nèi)ツ曜鲆粋€(gè)多租戶數(shù)據(jù)隔離方案傳統(tǒng)思路肯定是獨(dú)立數(shù)據(jù)庫、共享庫獨(dú)立Schema、共享表加租戶ID三選一。讓AI做方案窮舉后它額外補(bǔ)充了列級加密動態(tài)數(shù)據(jù)脫敏讀寫分離加租戶路由中間件這類組合方案還主動對比了大用戶量場景下共享表方案可能遇到的性能瓶頸和索引設(shè)計(jì)問題。雖然最終選的還是共享表加租戶ID但評審會上有了完整對比做出的決定更有底氣團(tuán)隊(duì)成員對方案的風(fēng)險(xiǎn)認(rèn)知也一致了。2.3 接口定義從口頭約定到自動化契約生成前后端聯(lián)調(diào)是整個(gè)研發(fā)流程里返工率最高的環(huán)節(jié)之一。前端要的字段格式和后端給的不一致、字段命名風(fēng)格不同、嵌套層級理解偏差、異常返回結(jié)構(gòu)各寫各的——這些問題幾乎每個(gè)迭代都會出現(xiàn)。AI在這里能做一件很實(shí)際的事根據(jù)需求描述直接生成接口契約文檔再讓前后端分別基于這份契約去開發(fā)和Mock。把接口的用途、輸入?yún)?shù)、輸出結(jié)構(gòu)、異常場景描述給AI讓它生成OpenAPI規(guī)范的YAML文件前端可以直接用這個(gè)文件生成Mock服務(wù)后端可以基于它做參數(shù)校驗(yàn)和響應(yīng)結(jié)構(gòu)定義。這套流程跑起來之后聯(lián)調(diào)環(huán)節(jié)的溝通成本至少下降一半。因?yàn)榻涌诘氖聦?shí)來源從人的口頭約定變成了機(jī)器可讀的契約文件任何一方的改動都可以通過Diff對比清楚發(fā)現(xiàn)。3. 編碼階段的四大核心提效點(diǎn)到了編碼環(huán)節(jié)AI的提效反而需要更精細(xì)地選擇切入點(diǎn)。代碼補(bǔ)全是大多數(shù)人最熟悉的AI應(yīng)用但它只是冰山一角。我按照實(shí)際提效幅度從大到小排列依次講四個(gè)模塊。3.1 存量代碼理解和重構(gòu)AI最被低估的能力我越來越覺得AI編程對存量代碼的理解能力其實(shí)際價(jià)值遠(yuǎn)超過新代碼生成。原因很簡單大部分開發(fā)者的日常工作中讀代碼的時(shí)間往往比寫代碼更多尤其是接手一個(gè)老項(xiàng)目或者需要在一個(gè)幾萬行代碼的模塊里定位問題的時(shí)候。傳統(tǒng)模式下你打開一個(gè)不熟悉的代碼倉庫先看目錄結(jié)構(gòu)再找入口文件然后一層層往下追調(diào)用鏈很可能還要看歷史提交記錄才能搞清楚某段代碼為什么這么寫。這個(gè)過程非常消耗時(shí)間和精力。AI的做法完全不一樣。你只需要讓AI先把倉庫的關(guān)鍵代碼梳理一遍就能快速生成一份結(jié)構(gòu)化說明。舉個(gè)例子我處理過的一個(gè)訂單系統(tǒng)40多萬行Java代碼沒有任何文檔。我直接把核心模塊的代碼目錄和幾個(gè)關(guān)鍵類丟給AI讓它梳理模塊職責(zé)、核心調(diào)用鏈路、數(shù)據(jù)流走向、各個(gè)Service之間的依賴關(guān)系。半小時(shí)后它產(chǎn)出了一份十幾頁的分析報(bào)告包含完整的調(diào)用鏈摘要和核心類說明。這對于一個(gè)初次接觸這個(gè)系統(tǒng)的開發(fā)者來說可能相當(dāng)于別人一整天的工作量。理解存量代碼的價(jià)值不只是看得懂更直接的作用是讓開發(fā)者在新需求開發(fā)時(shí)能快速找到應(yīng)該改哪里、不應(yīng)該碰哪里。具體到方法上我建議的做法是用AI生成代碼庫的全局結(jié)構(gòu)分析了解模塊劃分和依賴關(guān)系針對要改動的具體功能點(diǎn)讓AI追蹤相關(guān)調(diào)用鏈和數(shù)據(jù)流轉(zhuǎn)路徑讓AI識別代碼中的潛在風(fēng)險(xiǎn)點(diǎn)——比如存在共享狀態(tài)的地方、異常處理不一致的地方、大而全的上帝類改動前讓AI預(yù)判改動影響范圍這套組合拳下來開發(fā)者的代碼嗅覺雖然不會突然提升但對陌生代碼庫的探索效率會得到非常明顯的改善。3.2 單測和接口測試生成被忽視的提效大戶說個(gè)很多團(tuán)隊(duì)都有的痛單元測試覆蓋率在CI里卡著指標(biāo)但程序員寧愿寫新功能也不愿意寫單測。為什么因?yàn)閱螠y代碼有大量重復(fù)性的模板代碼——構(gòu)造Mock對象、打樁、設(shè)置期望、驗(yàn)證調(diào)用。這種工作技術(shù)含量不算高但極其瑣碎而且和業(yè)務(wù)代碼邏輯強(qiáng)綁定寫起來耗時(shí)很長。AI生成單測恰恰是解決這個(gè)問題的絕佳場景因?yàn)閱螠y的代碼形態(tài)高度規(guī)范化對AI來說非常容易學(xué)習(xí)模式。實(shí)際操作時(shí)我一般把要測試的類、方法簽名、相關(guān)業(yè)務(wù)邏輯描述扔給AI讓它可以產(chǎn)出測試代碼。它生成的單測通常包含正常路徑、邊界條件、異常處理這幾類用例。一個(gè)有經(jīng)驗(yàn)的開發(fā)者做一遍代碼審查修正和補(bǔ)強(qiáng)主要場景整體耗時(shí)大約只有手寫單測的三分之一到四分之一。更值得一提的用途是接口測試。讓AI根據(jù)接口定義文件生成Postman集合或自動化接口測試腳本它可以把正常請求、參數(shù)缺失、類型錯(cuò)誤、鑒權(quán)失敗、業(yè)務(wù)異常等場景一次性生成出來。這種密度的手寫工作量大但讓AI做就非常順手。運(yùn)行一遍你會發(fā)現(xiàn)自己手寫時(shí)的思維盲區(qū)——很多你壓根沒想到要測的邊界條件AI基于常見測試模式自動覆蓋了。3.3 代碼補(bǔ)全和代碼生成Coding階段的加速器聊回大家最熟悉的代碼補(bǔ)全能力。但從使用體驗(yàn)角度說普通的逐字預(yù)測式補(bǔ)全——也就是光標(biāo)跟在后面自動聯(lián)想下一個(gè)單詞、下一句代碼的方式——在寫樣板代碼和重復(fù)性代碼時(shí)的效果還不錯(cuò)但寫核心業(yè)務(wù)邏輯時(shí)幫助有限因?yàn)楹诵倪壿嬕蕾噺?qiáng)上下文理解僅憑當(dāng)前文件的內(nèi)容很難精準(zhǔn)預(yù)測。真正讓效率產(chǎn)生質(zhì)變的是對話式編程和Agent式編程的引入。兩者的核心區(qū)別在于不是AI猜你下一個(gè)字符而是你告訴AI你要做什么AI幫你完成一個(gè)完整函數(shù)或模塊。我自己的使用習(xí)慣是對于工具函數(shù)、數(shù)據(jù)處理邏輯、格式轉(zhuǎn)換、配置解析這類可以明確定義的代碼直接給AI一段清晰的描述和輸入輸出要求大部分時(shí)候一次生成的代碼就能直接跑通。對于需要調(diào)用內(nèi)部SDK或復(fù)雜業(yè)務(wù)邏輯的代碼要先讓AI理解相關(guān)接口的定義再讓它生成代碼。這里有個(gè)實(shí)際的效率對比寫一個(gè)Excel導(dǎo)入功能需要解析Excel、做格式校驗(yàn)、按規(guī)則轉(zhuǎn)換數(shù)據(jù)、輸出錯(cuò)誤報(bào)告。手寫大約需要兩個(gè)小時(shí)包括查POI的API和調(diào)格式用AI生成并調(diào)試基本在半小時(shí)到四十分鐘內(nèi)能完成。注意這不是AI直接能用而是先讓AI生成初版再做代碼審查和調(diào)整本質(zhì)上把寫代碼的時(shí)間變成了審代碼的時(shí)間。3.4 代碼評審把人工審查從抽檢變成全檢代碼評審是工程質(zhì)量的重要保障?,F(xiàn)實(shí)情況是全面的代碼評審對團(tuán)隊(duì)配置和時(shí)間投入的要求較高很多團(tuán)隊(duì)做Code Review只能做到抽查式或者流于形式只看一下Diff。AI做代碼評審最大的特點(diǎn)是量大管飽但不帶情緒。它可以從這幾個(gè)維度自動審查潛在的Bug模式和空指針風(fēng)險(xiǎn)并發(fā)場景下的競態(tài)條件資源泄漏問題未關(guān)閉的連接、未釋放的鎖明顯違反團(tuán)隊(duì)編碼規(guī)范的地方單測覆蓋明顯不足的關(guān)鍵分支安全風(fēng)險(xiǎn)硬編碼密鑰、SQL拼接、不安全的反序列化我們把AI代碼評審接入MR流程后在人工審查之前先跑一輪。AI指出的問題可能有一部分是誤報(bào)但剩下那部分真問題——特別是資源泄漏和并發(fā)隱患這類靠肉眼不容易發(fā)現(xiàn)的問題——價(jià)值就非常高了。人工審查者就可以把精力集中在真正的架構(gòu)合理性、可維護(hù)性這些AI暫時(shí)做不了的事情上不再把時(shí)間花在那些可以自動發(fā)現(xiàn)的細(xì)節(jié)問題上。4. 下游流程的AI化改造調(diào)試、文檔、測試和運(yùn)維一般認(rèn)為代碼能跑了就萬事大吉了其實(shí)軟件開發(fā)后半段——調(diào)試、寫文檔、測試、部署——往往占了一個(gè)迭代周期的60%以上時(shí)間。AI在這個(gè)階段的提效反而是最直觀的。4.1 報(bào)錯(cuò)排查讓AI當(dāng)你的第一道排查線寫代碼報(bào)錯(cuò)是日常。傳統(tǒng)流程是拷貝報(bào)錯(cuò)信息、打開搜索引擎、在搜索結(jié)果里逐個(gè)排查。這個(gè)流程在遇到冷門錯(cuò)誤時(shí)尤其痛苦經(jīng)常搜到的是過時(shí)的、不相關(guān)的內(nèi)容或者對著StackOverflow上的舊帖無從下手。用AI排查報(bào)錯(cuò)在體驗(yàn)上是徹底改善的。把完整報(bào)錯(cuò)堆棧、相關(guān)代碼片段、運(yùn)行環(huán)境信息一起丟給AI讓它沿著線索分析。AI做得好的一點(diǎn)是它不會只盯著報(bào)錯(cuò)最后一行看而是會主動考慮調(diào)用棧里每一層可能的影響結(jié)合它對常見框架實(shí)現(xiàn)機(jī)制的理解給出可能的原因和排查建議。當(dāng)然AI給出的原因不一定完全正確尤其在涉及內(nèi)部業(yè)務(wù)邏輯和私有框架時(shí)。但即便如此它仍然會成為第一道排查線——用一分鐘時(shí)間從AI那里得到帶著優(yōu)先級排序的可能原因清單這比盲目搜索的效率高很多。還有一種更高效的做法把日志分析交給AI。某次我們遇到一個(gè)定時(shí)任務(wù)偶爾失敗的問題幾千行日志人工翻要找很長時(shí)間讓AI按時(shí)間線提煉了執(zhí)行軌跡、錯(cuò)誤出現(xiàn)的規(guī)律和前后的狀態(tài)變化。它發(fā)現(xiàn)了一個(gè)我們沒注意到的規(guī)律——失敗總是發(fā)生在內(nèi)存GC日志之后的幾秒內(nèi)。順著這個(gè)線索排查找到了JVM參數(shù)配置導(dǎo)致的老年代GC頻繁觸發(fā)的問題。4.2 文檔生成那些不想寫但必須有的文檔技術(shù)文檔的重要性每個(gè)人都承認(rèn)但寫起來確實(shí)需要耐心。這個(gè)環(huán)節(jié)AI能做的事情直接明了根據(jù)代碼生成API文檔、根據(jù)Pull Request描述自動生成變更文檔、根據(jù)代碼邏輯自動繪制調(diào)用關(guān)系說明、根據(jù)接口定義生成接入文檔。我現(xiàn)在寫接口文檔的習(xí)慣是讓AI先根據(jù)接口代碼生成初版補(bǔ)充請求示例和響應(yīng)示例最后我再做整體審校。相比從空白文檔開始寫效率提升大約從一小時(shí)縮短到十幾分鐘。更重要的是AI生成的文檔格式非常規(guī)范不會像人手寫一樣遺漏字段說明。代碼注釋同理。與其在代碼里堆注釋不如要求AI理解方法邏輯之后給每個(gè)核心方法生成主流程關(guān)鍵分支注意事項(xiàng)風(fēng)格的注釋。這樣在代碼閱讀時(shí)的理解成本會大幅降低。4.3 回歸測試場景生成讓測試覆蓋提效的最后一塊拼圖在大廠里有一種叫測試左移的思路越早發(fā)現(xiàn)問題修復(fù)成本越低。但在實(shí)踐層面從代碼反推測試場景是一件很勞心費(fèi)力的事尤其是面對復(fù)雜的業(yè)務(wù)狀態(tài)流轉(zhuǎn)時(shí)。AI在這里可以扮演場景窮舉器的角色。把核心業(yè)務(wù)邏輯和狀態(tài)機(jī)描述給AI讓它枚舉所有可能的狀態(tài)轉(zhuǎn)換路徑、分支條件和異常組合再為每個(gè)場景自動生成測試數(shù)據(jù)模板。這個(gè)價(jià)值不在于AI生成的測試數(shù)據(jù)能直接用——它很可能貼近預(yù)期但不夠精確——而在于它能夠在測試設(shè)計(jì)時(shí)窮舉那些容易被忽略的邊緣情況。測試人員的核心工作就從想場景變成了審場景專業(yè)判斷用在審核上價(jià)值密度不同了。5. 工程級落地手把手搭建一套可運(yùn)行的AI編程提效鏈路上文拆解了單個(gè)模塊的用途后這一部分我們聊聊如何把這些模塊串成一個(gè)完整的工程落地體系。從實(shí)際執(zhí)行的角度看真正影響AI編程落地效果的往往不是工具本身有多強(qiáng)而是有沒有一套標(biāo)準(zhǔn)化的流程和分工方式。5.1 工具選型不同環(huán)節(jié)用不一樣的工具市面上AI編程工具非常多各有側(cè)重。我們團(tuán)隊(duì)目前在用的組合如下場景工具適用原因IDE內(nèi)補(bǔ)全和對話Cursor / 通義靈碼理解性強(qiáng)上下文關(guān)聯(lián)好支持倉庫級分析深度對話和大上下文處理Claude長上下文能力突出適合整體分析復(fù)雜問題代碼評審自動化接入CI的AI評審插件MR自動觸發(fā)零額外人工負(fù)擔(dān)測試生成基于大模型的單測生成插件能理解業(yè)務(wù)代碼語義不局限于模板匹配工具選型有兩條經(jīng)驗(yàn)可以分享。第一條不要貪多求全一個(gè)團(tuán)隊(duì)最多選兩套核心工具一套IDE內(nèi)綁定的一套獨(dú)立對話的其余按需補(bǔ)充即可。工具太多團(tuán)隊(duì)連熟悉都熟悉不過來更別提用出效果。第二條對于國內(nèi)團(tuán)隊(duì)IDE內(nèi)綁定的工具建議優(yōu)先考慮通義靈碼這類響應(yīng)速度和定制能力更適合本土場景的工具獨(dú)立對話類的根據(jù)場景選擇即可。工具選型不是追新核心看它能否滿足你的完整工作流需求。5.2 提示詞模板庫把個(gè)人經(jīng)驗(yàn)變成團(tuán)隊(duì)資產(chǎn)AI編程提效最大的變量是提示詞的質(zhì)量。同樣的工具問法不同產(chǎn)出質(zhì)量可以差別非常大。遺憾的是大部分團(tuán)隊(duì)把提示詞當(dāng)作個(gè)人手感來積累沒有沉淀成團(tuán)隊(duì)的標(biāo)準(zhǔn)化資產(chǎn)。我們內(nèi)部的做法是建立了一個(gè)提示詞模板庫按照使用場景分類每個(gè)模板規(guī)定了標(biāo)準(zhǔn)化的輸入格式和期望的輸出格式。下面列幾個(gè)實(shí)際在用的模板框架需求拆解模板你是一名資深產(chǎn)品經(jīng)理和技術(shù)負(fù)責(zé)人。 以下是一個(gè)原始需求描述 [粘貼原始需求] 請按以下格式輸出需求分析 1. 核心功能列表 2. 業(yè)務(wù)規(guī)則和約束條件 3. 狀態(tài)流轉(zhuǎn)和分支場景 4. 異常場景和邊界情況 5. 需要向需求方確認(rèn)的問題清單存量代碼分析模板你是一名資深開發(fā)工程師。以下是項(xiàng)目中的代碼文件 [粘貼代碼或提供文件路徑] 請分析并輸出 1. 該模塊的核心職責(zé)和對外接口 2. 主要數(shù)據(jù)結(jié)構(gòu)和關(guān)鍵數(shù)據(jù)流 3. 核心方法調(diào)用鏈和依賴關(guān)系 4. 明顯的代碼風(fēng)險(xiǎn)點(diǎn)和重構(gòu)建議 5. 測試覆蓋薄弱的地方報(bào)錯(cuò)排查模板以下是運(yùn)行代碼時(shí)出現(xiàn)的錯(cuò)誤信息 [粘貼報(bào)錯(cuò)堆棧] 相關(guān)代碼如下 [粘貼相關(guān)代碼] 運(yùn)行環(huán)境 [描述系統(tǒng)版本、依賴版本等] 請按以下結(jié)構(gòu)回答 1. 問題根因分析按可能性從高到低排列 2. 每種根因?qū)?yīng)的驗(yàn)證方法 3. 修復(fù)建議和需要注意的坑測試設(shè)計(jì)模板以下是待測試的代碼邏輯 [粘貼代碼] 請?jiān)O(shè)計(jì)完整的測試方案 1. 正常路徑測試用例 2. 邊界條件測試用例 3. 異常路徑測試用例 4. 并發(fā)和時(shí)序相關(guān)測試場景 5. 每個(gè)用例的輸入、預(yù)期輸出和驗(yàn)證點(diǎn)模板本質(zhì)上解決的是標(biāo)準(zhǔn)的輸入結(jié)構(gòu)和標(biāo)準(zhǔn)的輸出結(jié)構(gòu)問題。當(dāng)團(tuán)隊(duì)所有人的提問方式統(tǒng)一后AI產(chǎn)出的質(zhì)量方差會明顯縮小新人也更容易快速上手這套流程。5.3 人機(jī)分工的黃金法則AI跑量人做判斷所有AI編程提效體系到最后都會收斂到同一個(gè)問題上人和AI之間怎么分工我個(gè)人的經(jīng)驗(yàn)是三條原則第一凡是有明確對錯(cuò)標(biāo)準(zhǔn)的工作盡量交給AI跑。接口測試用例生成、數(shù)據(jù)格式校驗(yàn)代碼、配置解析、單測生成、日志分析這些都是有清晰判斷標(biāo)準(zhǔn)的工作AI做起來又快又好人的投入產(chǎn)出比很低。第二凡是需要多步上下文推理的工作人和AI協(xié)作。比如存量代碼重構(gòu)AI先全面分析調(diào)用鏈人做重構(gòu)方案決策AI再批量執(zhí)行具體修改。整個(gè)流程里人和AI多次交互每次AI負(fù)責(zé)它擅長的量大活細(xì)人負(fù)責(zé)方案判斷。第三凡是核心架構(gòu)決策和價(jià)值判斷的工作人必須親自把關(guān)。系統(tǒng)怎么拆分、業(yè)務(wù)邊界怎么劃、關(guān)鍵技術(shù)選型、數(shù)據(jù)模型設(shè)計(jì)這些決定項(xiàng)目命運(yùn)的事情AI可以當(dāng)參謀但不能當(dāng)決策者。違反了這三條原則的團(tuán)隊(duì)通常會出現(xiàn)兩個(gè)極端要么過于相信AI導(dǎo)致代碼質(zhì)量失控要么完全不信任AI導(dǎo)致所有環(huán)節(jié)還是人工執(zhí)行工具成為了擺設(shè)。6. 一個(gè)完整的實(shí)戰(zhàn)場景復(fù)盤從需求到上線的AI輔助全流程理論說了不少這一節(jié)我們完整走一遍一個(gè)真實(shí)的小型需求——開發(fā)一個(gè)優(yōu)惠券列表領(lǐng)取使用記錄的功能模塊從需求到上線的全流程看每個(gè)環(huán)節(jié)AI具體怎么介入。第一步需求拆解產(chǎn)品給的原始需求是用戶可以在會員中心看到可領(lǐng)取的優(yōu)惠券列表點(diǎn)擊領(lǐng)取后可以在訂單結(jié)算時(shí)選擇使用使用后可以查看使用記錄。我們把這段描述喂給AI按模板輸出需求拆解。AI產(chǎn)出的結(jié)構(gòu)主要包括功能列表優(yōu)惠券列表頁、領(lǐng)取接口、我的券包列表、訂單結(jié)算時(shí)可用券選擇、使用記錄查詢業(yè)務(wù)規(guī)則每種券的面額、使用門檻、有效期、適用商品類目狀態(tài)流轉(zhuǎn)待領(lǐng)取→已領(lǐng)取未使用→已使用/已過期異常場景券已領(lǐng)完、券已過期、用戶未登錄、重復(fù)領(lǐng)取、使用優(yōu)惠券后訂單退款怎么辦待確認(rèn)問題優(yōu)惠券是否可疊加、退款時(shí)優(yōu)惠券是否返還、黑名單用戶是否可以領(lǐng)券這里最有價(jià)值的是異常場景部分的產(chǎn)出。產(chǎn)品描述里一條都沒提但實(shí)際開發(fā)時(shí)必須全部考慮。這事要人工去想大概率會漏掉退款后優(yōu)惠券處理這條。第二步接口定義和MockAI根據(jù)需求模型生成OpenAPI的YAML文件定義GET /api/coupons/available、POST /api/coupons/{id}/claim、GET /api/coupons/my、POST /api/orders/preview攜帶券ID算優(yōu)惠價(jià)等接口。YAML里自動覆蓋了每個(gè)接口的參數(shù)校驗(yàn)規(guī)則、響應(yīng)格式、錯(cuò)誤碼定義。前端拿到Y(jié)AML后直接生成Mock服務(wù)開始開發(fā)后端按照契約先實(shí)現(xiàn)接口框架。整個(gè)接口討論環(huán)節(jié)被壓縮到一次評審會內(nèi)搞定。第三步編碼后端把接口定義和數(shù)據(jù)庫表結(jié)構(gòu)設(shè)計(jì)描述給AI讓它生成MyBatis的Mapper和基礎(chǔ)Service代碼。前端把頁面效果描述給AI讓它生成列表頁和券包的Vue組件代碼。實(shí)際編碼過程中AI生成的代碼大約能用七成剩余三成主要涉及具體的項(xiàng)目內(nèi)封裝和樣式適配。但即便如此這個(gè)模塊的整體開發(fā)時(shí)間比手寫大約節(jié)省了40%。第四步測試和Code ReviewAI生成單測覆蓋了券狀態(tài)流轉(zhuǎn)的主要分支和異常場景。AI評審插件在MR上自動跑了靜態(tài)檢查和代碼掃描發(fā)現(xiàn)了兩個(gè)問題一處是領(lǐng)券時(shí)缺少對用戶維度的并發(fā)控制有超發(fā)風(fēng)險(xiǎn)另一處是查詢可用券時(shí)沒有過濾已下架券。這兩個(gè)問題在人工評審前就被標(biāo)記出來處理成本極低。如果代碼已經(jīng)合入再被發(fā)現(xiàn)返工代價(jià)要高得多。第五步文檔AI根據(jù)接口代碼生成API文檔根據(jù)數(shù)據(jù)庫表結(jié)構(gòu)生成數(shù)據(jù)字典。運(yùn)營要看的活動說明文檔也是基于需求描述生成的初版。這個(gè)環(huán)節(jié)AI完全替代了大部分手工文檔工作。整套流程走下來一個(gè)預(yù)估4人天的工作實(shí)際用了2.5人天左右。提效幅度最明顯的不在單個(gè)環(huán)節(jié)的速度變快在于各環(huán)節(jié)之間因?yàn)樾畔鬟f誤差導(dǎo)致的返工明顯減少。7. 關(guān)于AI編程的邊界認(rèn)知和常見誤區(qū)最后這部分聊聊我對AI編程邊界的一些判斷。市面上很多討論不是高估了AI的能力就是低估了使用AI的成本真正用好的團(tuán)隊(duì)往往對邊界有清晰的認(rèn)知。7.1 AI編程做不好的幾類事第一類高度依賴特定業(yè)務(wù)上下文的系統(tǒng)設(shè)計(jì)。AI很擅長基于統(tǒng)計(jì)規(guī)律給出一般性正確的方案但每個(gè)系統(tǒng)在設(shè)計(jì)時(shí)都有大量歷史包袱和具體的業(yè)務(wù)約束這些上下文如果不在對話中充分交代AI給出的方案就會顯得正確但不可用。第二類跨系統(tǒng)的全局一致性把控。一個(gè)復(fù)雜的業(yè)務(wù)變更往往涉及服務(wù)端、前端、數(shù)據(jù)遷移、定時(shí)任務(wù)、消息隊(duì)列等多個(gè)系統(tǒng)的聯(lián)動修改AI目前還很難獨(dú)立完成這種跨系統(tǒng)的一致性變更管理需要人做全局規(guī)劃。第三類代碼質(zhì)量的價(jià)值觀判斷。有些代碼跑得通但擴(kuò)展性差有些代碼雖然丑但對當(dāng)前業(yè)務(wù)來說剛好合適這些判斷背后是工程價(jià)值觀的取舍個(gè)性化程度很高目前的AI還做不到真正共情式的判斷。它只能根據(jù)你給的標(biāo)準(zhǔn)去評價(jià)標(biāo)準(zhǔn)本身需要人來定。7.2 容易被忽略的使用成本AI編程工具的使用成本往往被低估。表面上看工具訂閱費(fèi)用不高但實(shí)際成本是隱性的上下文整理成本給AI講清楚一個(gè)復(fù)雜問題的背景本身就需要時(shí)間和表達(dá)能力。這個(gè)成本在簡單問題上不顯眼在復(fù)雜問題上會凸顯出來。結(jié)果驗(yàn)證成本AI生成代碼的上限很高但下限也很低每一段AI代碼都需要人來做驗(yàn)證。這個(gè)成本本質(zhì)上是從寫代碼轉(zhuǎn)移到了審代碼上。團(tuán)隊(duì)學(xué)習(xí)成本新工具上手、提示詞寫法、代碼審查標(biāo)準(zhǔn)的變化都需要團(tuán)隊(duì)花時(shí)間來適應(yīng)。所以AI編程的真正提效不是把開發(fā)者的工作量歸零而是把工作重心從制造轉(zhuǎn)向判斷。一個(gè)人從寫代碼的人變成審代碼、做決策的人這個(gè)轉(zhuǎn)變本身需要適應(yīng)過程。7.3 未來一段時(shí)間的演化方向以這一年的工具迭代速度來看IDE內(nèi)AI的能力邊界在快速擴(kuò)展但從工程落地的角度我認(rèn)為接下來值得重點(diǎn)關(guān)注的不是單點(diǎn)能力有多強(qiáng)而是工具鏈的整合程度。代碼補(bǔ)全、代碼評審、測試生成、文檔維護(hù)這些能力目前還是分散在不同工具里的如果能整合進(jìn)統(tǒng)一的開發(fā)流程讓AI的能力在軟件開發(fā)的整個(gè)生命周期里無縫流轉(zhuǎn)那才是真正的效率革命。目前的狀態(tài)是個(gè)人手感和團(tuán)隊(duì)流程共同決定最終效果。工具的能力上限只是天花板真正的提效空間取決于團(tuán)隊(duì)把這套體系用到多熟練。