Skip to content

Latest commit

 

History

History
99 lines (65 loc) · 11 KB

File metadata and controls

99 lines (65 loc) · 11 KB

အခန်း (၆) — Bug ရှာခြင်း၊ Test ရေးခိုင်းခြင်း၊ ဒုက္ခကနေ လွတ်မြောက်ခြင်း

လောကမှာ သေချာတာ သုံးခုရှိတယ်လို့ ဆိုကြတယ် — သေခြင်း၊ အခွန်၊ နောက်တစ်ခုက Bug။ Agent ရေးတဲ့ကုဒ်ဆိုတော့ Bug မရှိတော့ဘူးလို့ ထင်ရင် မှားလိမ့်မယ်။ Agent ဆိုတာလည်း မှားတတ်တယ်။ ကွာတာက သူ့အမှားက ယုံကြည်ချက်ပြည့်ဝစွာနဲ့ မှားတာ။ လူဆို မှားရင် စာကြောင်းရေးရင်း လက်တုန်တယ်၊ Agent ကတော့ မှားနေတဲ့ကုဒ်ကိုတောင် သပ်သပ်ရပ်ရပ် Comment လေးတွေနဲ့ ရေးတတ်သေးတယ်။

မြရီစတိုးမှာ Bug ပေါ်ပြီ

Version 1 တင်ပြီး သုံးရက်အကြာ။ ဒေါ်မြရီ့မြေးမလေးဆီက ဖုန်းလာတယ်။

"ဦးလေး... Website က ထူးဆန်းတယ်။ ချောကလက် ၂ ခုထည့်ပြီး ၁ ခုပြန်ဖြုတ်ရင် စုစုပေါင်းငွေက မှားနေတယ်။ ၅၀၀ ဖြစ်ရမှာ ၁,၀၀၀ ပြနေတယ်။"

ကဲ — ရောက်ပြီ။ Junior Developer တစ်ယောက်ရဲ့ ပထမဆုံး Production Bug။ ရင်ခုန်စရာကြီး။ ဒီအချိန်မှာ လုပ်နည်း နှစ်နည်း ရှိတယ်။

နည်း (၁) — ညံ့တဲ့နည်း:

> cart မှာ bug ရှိတယ် ပြင်ပေး

ဒါက ဆေးခန်းသွားပြီး "ကျုပ် နေမကောင်းဘူး၊ ကုပေး" လို့ ပြောတာနဲ့ အတူတူပဲ။ ဆရာဝန်က ဘယ်နား နာလဲ၊ ဘယ်တုန်းက စနာလဲ မေးမှာပဲ။

နည်း (၂) — ကောင်းတဲ့နည်း:

> Cart မှာ bug တွေ့တယ်။ ပြန်ဖြစ်အောင် လုပ်နည်းက —
> ၁။ ရွှေဖီချောကလက်ကို ၂ ခု ထည့်ပါ (တစ်ခု ၅၀၀ ကျပ်)
> ၂။ ၁ ခု ပြန်ဖြုတ်ပါ
> ၃။ စုစုပေါင်းက ၅၀၀ ပြရမှာ ၁,၀၀၀ ပြနေတယ်
>
> အရင်ဆုံး CartContext.jsx ထဲက removeFromCart နဲ့ total တွက်တဲ့ logic ကို ဖတ်ပြီး
> ဘာကြောင့် ဒီလိုဖြစ်နိုင်လဲ ရှာပါ။ တွေ့ရင် ပြင်မယ့်နည်း အရင်ရှင်းပြပါ၊ ပြီးမှ ပြင်ပါ။

ကွာခြားချက်ကို မြင်လား။ ပြန်ဖြစ်အောင်လုပ်နည်း (Steps to reproduce)၊ မျှော်မှန်းရလဒ်၊ တကယ်ဖြစ်နေတဲ့ရလဒ် — ဒီသုံးခုပါရင် Agent ရော လူ Senior ရော Bug ကို ထက်ဝက်လောက် ရှာပြီးသား ဖြစ်သွားတယ်။

Claude က ကုဒ်ဖတ်ပြီး တွေ့တယ် — removeFromCart က ပစ္စည်းကို ဖြုတ်ပေမယ့် quantity ကို ထည့်မတွက်ဘဲ item စာရင်းအဟောင်းနဲ့ total တွက်နေတာ။ သူရှင်းပြ၊ ကျုပ်နားလည်၊ ပြင်ခိုင်း၊ ပြီးရော။

ဒါပေမယ့် — ဒီ Bug ဘာလို့ ကျုပ်မမိတာလဲ

ဒီမေးခွန်းက Bug ကိုယ်တိုင်ထက် အရေးကြီးတယ်။ အဖြေက ရှင်းတယ် — ကျုပ် Test မရေးထားလို့။ လူ့မျက်လုံးနဲ့ စမ်းတာက စမ်းမိတဲ့နေရာပဲ မြင်တယ်။ ချောကလက် ထည့်ကြည့်တယ်၊ ဖြုတ်ကြည့်တယ်၊ ဒါပေမယ့် "နှစ်ခုထည့်ပြီးမှ တစ်ခုဖြုတ်" တဲ့ တွဲစပ်မှုကို မစမ်းမိခဲ့ဘူး။

Test ဆိုတာ ရေးရခက်တယ်၊ ပျင်းစရာကောင်းတယ်လို့ Junior တွေ ထင်တတ်တယ်။ ဟုတ်ပါတယ်၊ ကိုယ်တိုင်ရေးရရင် ပျင်းစရာကောင်းတယ်။ ဒါပေမယ့် အခုခေတ်မှာ Test ရေးတာက Agent ရဲ့ အထူးကျွမ်းကျင်တဲ့ နယ်ပယ် —

> Vitest နဲ့ React Testing Library setup လုပ်ပြီး CartContext အတွက် test တွေ ရေးပါ။
> အနည်းဆုံး ဒီ case တွေ ပါရမယ် —
> - ပစ္စည်းတစ်ခု ထည့်ရင် cart ထဲရောက်ရမယ်
> - တူတဲ့ပစ္စည်း နှစ်ခါထည့်ရင် quantity ၂ ဖြစ်ရမယ်၊ item နှစ်ကြောင်း မဖြစ်ရဘူး
> - quantity ၂ ရှိတဲ့ပစ္စည်းက ၁ ခုဖြုတ်ရင် total မှန်ရမယ် (စောစောက bug ပြန်မပေါ်အောင်)
> - clearCart လုပ်ရင် အကုန်ရှင်းရမယ်
> ရေးပြီးရင် npm test run ပြီး အကုန် pass ကြောင်း ပြပါ။

သတိထားကြည့်ပါ — တွေ့ခဲ့တဲ့ Bug ကို Test Case အဖြစ် ထည့်ခိုင်းထားတယ်။ ဒါကို Regression Test လို့ ခေါ်တယ်။ တစ်ခါကိုက်ဖူးတဲ့ မြွေကို တွင်းဝမှာ ထိန်းသိမ်းရေးကင်မရာ တပ်ထားတာမျိုး။ နောက်တစ်ခါ ဒီ Bug ပြန်ပေါ်ရင် Test က ချက်ချင်း အော်လိမ့်မယ်။

Claude က Test တွေရေး၊ Run ကြည့်၊ တစ်ခု Fail ဖြစ်၊ သူ့ဘာသာသူ ပြင်၊ ထပ် Run — အကုန် Pass။ ဒီလုပ်ငန်းစဉ်တစ်ခုလုံးကို ကျုပ်က လက်ဖက်ရည်သောက်ရင်း ကြည့်နေရုံပဲ။ ဒါပေမယ့် "ကြည့်နေရုံ" ဆိုတာ အရေးကြီးတယ်နော်။ Fail ဖြစ်တဲ့ Test ကို Agent က Test ကို ပြင်ပြီး Pass အောင်လုပ်တာလား၊ ကုဒ်ကို ပြင်ပြီး Pass အောင် လုပ်တာလား ခွဲကြည့်တတ်ရမယ်။ တစ်ခါတလေ Agent က စာမေးပွဲကျမှာစိုးလို့ အဖြေလွှာကို ကိုယ့်ဘာသာ ပြင်တတ်တဲ့ ကျောင်းသားလို ဖြစ်တတ်လို့။ ဒါမျိုးတွေ့ရင် —

> မလုပ်နဲ့။ Test က မှန်တယ်။ Test ကို မပြင်ဘဲ code ကိုပဲ ပြင်ပါ။

လို့ ဆရာလုပ်ပြီး ပြန်ဆုံးမပေးရမယ်။

Debugging မန္တန် — အမြဲသုံးရမယ့် Prompt ပုံစံများ

ကျုပ်လက်တွေ့သုံးပြီး အရာထင်ခဲ့တဲ့ Debugging Prompt ပုံစံလေးတွေ —

Error message တွေ့ရင် —

> npm run dev မှာ ဒီ error တက်တယ် —
> [error message အပြည့်အစုံ paste]
> ဘာကြောင့်လဲ ရှင်းပြပြီး ပြင်ပါ။ ပြင်ပြီးရင် ဘာပြင်လိုက်လဲ အကျဉ်းချုပ်ပြပါ။

Error message ကို ဖြတ်မကူးပါနဲ့။ အပြည့်အစုံ ကူးထည့်ပါ။ Error message ရဲ့ အောက်ဆုံးစာကြောင်းလေးထဲမှာ အဖြေပါနေတတ်တာ မကြာခဏ။

ဘာမှန်းမသိတဲ့ ကုဒ်တွေ့ရင် —

> ဒီ function က ဘာလုပ်နေတာလဲ။ ကျုပ်ကို ကွန်ပျူတာအသုံးပြုတတ်ရုံ သိတဲ့
> ဒေါ်မြရီကို ရှင်းပြသလို ရှင်းပြပါ။

ပြင်ပြီးတိုင်း စစ်ချင်ရင် —

> အခုပြင်လိုက်တာတွေကြောင့် တခြားနေရာ ထိခိုက်နိုင်လား။ ဒီ function ကို သုံးထားတဲ့
> နေရာအားလုံး ရှာပြီး စစ်ပေးပါ။

လက်တွေ့လုပ်ကြည့်ရန်

ကိုယ့် Project ထဲက Bug တစ်ခု (တကယ့်ဟာ မရှိရင် တမင်ဖန်တီးထားတဲ့ဟာ) ကို Steps to reproduce + မျှော်မှန်းရလဒ် + တကယ်ဖြစ်နေတဲ့ရလဒ် သုံးခုနဲ့ Prompt ရေးပြီး Agent ကို ရှာခိုင်းကြည့်ပါ။ ပြီးရင် အဲဒီ Bug ပြန်မပေါ်အောင် Regression Test တစ်ခု ရေးခိုင်းပြီး npm test pass ကြောင်း ကိုယ်တိုင်စစ်ပါ။

Bug နဲ့ Test အကြောင်း ဒီလောက်ဆို လောလောဆယ် လုံလောက်ပြီ။ နောက်အခန်းမှာတော့ ဒီစာအုပ်ရဲ့ အထူးဟင်းလျာ — Skill အကြောင်း။ တစ်ခါသင်ထားရင် Agent က ဘယ်တော့မှ ပြန်မမေ့တဲ့ ပညာစုစည်းနည်း။


← အခန်း (၅) · 🏠 မာတိကာ · အခန်း (၇) →