လွယ်လွယ်ပြောရရင် Load Testing ဆိုတာ Website ဒါမှမဟုတ် App တစ်ခုကို သုံးစွဲသူ အများကြီး တစ်ပြိုင်နက် ဝင်လာတဲ့အခါ ခံနိုင်ရည်ရှိလား ဆိုတာ ကြိုတင် စမ်းသပ်တဲ့ နည်းလမ်းပါ။ Site ကို လူ ၁၀ ယောက်သုံးတဲ့အခါ မြန်ပေမယ့် လူ ၁၀,၀၀၀ တစ်ပြိုင်နက်ဝင်လာရင် ပြိုကျသွားနိုင်ပါတယ်။ အဲဒါကို အမှန်တကယ် ဖြစ်မလာခင် ကြိုသိအောင် အတု User တွေနဲ့ စမ်းတာကို Load Testing လို့ ခေါ်တာပါ။
ကျွန်တော် ဒါကို တံတားနဲ့ ဥပမာပေးချင်တယ်။ တံတားအသစ်တစ်စင်း ဆောက်ပြီးရင် Engineer တွေက ကားအလေးကြီးတွေ အများကြီး တစ်ပြိုင်နက် တင်ပြီး တံတား ခံနိုင်လား စမ်းပါတယ်။ တကယ့် ကားတွေ မဖြတ်ခင် ကြိုစမ်းတာပါ။ တံတား ပြိုကျသွားရင် ဆောက်တဲ့အချိန်မှာပဲ ပြင်လို့ရပါတယ်။ Website လည်း အဲဒီလိုပါပဲ။ Sale ပွဲကြီးနေ့၊ လက်မှတ်ရောင်းတဲ့ရက်၊ သတင်းကြီး ထွက်တဲ့နေ့တွေမှာ လူသိန်းချီ ဝင်လာနိုင်ပါတယ်။ အဲဒီအချိန်မှ Site ကျသွားရင် ငွေတွေ ဆုံးရှုံးပြီး နာမည်ပါ ပျက်ပါတယ်။ Load Testing က အဲဒီ အန္တရာယ်ကို ကြိုတင် ရှာဖွေပေးတာပါ။
Load Testing မှာ ဘာတွေ တိုင်းတာလဲ?
Load Test တစ်ခုမှာ အဓိက ကြည့်ရတဲ့ အချက် ၃ ချက်ရှိပါတယ်။
Response Time — User က နှိပ်လိုက်တာနဲ့ Site က ဘယ်လောက်မြန်မြန် တုံ့ပြန်လဲ ဆိုတာပါ။ လူနည်းနည်းရှိတုန်းက 0.5 စက္ကန့်ဆို လူများလာရင် 5 စက္ကန့်ဖြစ်သွားနိုင်ပါတယ်။
Throughput — တစ်စက္ကန့်မှာ Request ဘယ်နှစ်ခု ကိုင်တွယ်နိုင်လဲ ဆိုတာပါ။ Request များလာရင် Server က မနိုင်တော့ဘဲ တန်းစီစောင့်ရပါတယ်။
Error Rate — Request တွေထဲက ဘယ်နှစ်ရာခိုင်နှုန်းက Error ပြန်လာလဲ ဆိုတာပါ။ Error များလာရင် Server က ဝန်မနိုင်တော့ဘူးဆိုတဲ့ သဘောပါ။
ဒီ ၃ ချက်ကို ဂရပ်နဲ့ ကြည့်လိုက်ရင် Site က ဘယ်အချိန်မှာ စပြီး နှေးသွားလဲ၊ ဘယ်နေရာမှာ ပြိုကျလဲ ဆိုတာ ရှင်းရှင်းလင်းလင်း မြင်ရပါတယ်။
Load Testing အမျိုးအစားများ
Load Testing ကို ရည်ရွယ်ချက်အလိုက် အမျိုးမျိုး ခွဲလို့ရပါတယ်။
Load Test — ပုံမှန် အသုံးပြုသူ ပမာဏနဲ့ Site အလုပ်လုပ်လား စမ်းတာပါ။ ဥပမာ တစ်နေ့ User ၁,၀၀၀ လာတဲ့ Site ကို User ၁,၀၀၀ နဲ့ စမ်းတာပါ။
Stress Test — ကန့်သတ်ချက်ထက် ကျော်လွန်ပြီး တွန်းစမ်းတာပါ။ User ၁၀,၀၀၀၊ ၅၀,၀၀၀ ဆိုပြီး တိုးသွားရင်း Site ဘယ်မှာပြိုကျလဲ ရှာတာပါ။ ပြိုကျတဲ့ အမှတ်ကို Breaking Point လို့ ခေါ်ပါတယ်။
Spike Test — လူ ရုတ်တရက် အများကြီး ဝင်လာတဲ့အခါ ဘာဖြစ်လဲ စမ်းတာပါ။ လက်မှတ်ရောင်းတဲ့အချိန်၊ Flash Sale စတဲ့အချိန်လိုပေါ့။
Soak Test — ဝန်ကို အချိန်ကြာကြာ (နာရီပေါင်းများစွာ) တင်ထားပြီး Memory Leak လို ပြဿနာတွေ ရှိလား စမ်းတာပါ။
Load Testing ကို ဘယ် Tool တွေနဲ့ လုပ်တာလဲ?
နာမည်ကြီး Tool တွေကတော့ —
JMeter — Apache ရဲ့ Free Tool ပါ။ အသုံးများဆုံးနဲ့ အဟောင်းဆုံး Tool တစ်ခုပါ။
k6 — JavaScript နဲ့ Test ရေးလို့ရတဲ့ ခေတ်မီ Tool ပါ။ CI/CD ထဲ ထည့်ရလွယ်ပါတယ်။
Locust — Python နဲ့ ရေးလို့ရပြီး User အရေအတွက် များများနဲ့ စမ်းလို့ရပါတယ်။
Artillery — Node.js အခြေခံပြီး API Load Test လုပ်ဖို့ ကောင်းပါတယ်။
ဒီ Tool တွေက Virtual User တွေကို ဖန်တီးပြီး Site ကို တစ်ပြိုင်နက် တိုက်ခိုက်ပေးပါတယ်။ Virtual User ၁,၀၀၀ ဆိုတာ လူ ၁,၀၀၀ တစ်ပြိုင်နက် Site ကို သုံးနေသလိုပါပဲ။
Load Test လုပ်ပြီးရင် ဘာလုပ်ရမလဲ?
Test ရလဒ်ကို ကြည့်ပြီး အားနည်းတဲ့ နေရာကို ရှာရပါတယ်။
Database Query နှေးနေရင် Index ထည့်တာ၊ Query ပြင်တာ လုပ်ရပါတယ်။
Server တစ်ခုတည်း မနိုင်ရင် Load Balancer နဲ့ Server အများကြီး ခွဲဝေရပါတယ်။
Static File တွေ နှေးနေရင် CDN သုံးပြီး ပုံတွေ၊ CSS တွေကို အနီးဆုံး Server ကနေ ပေးရပါတယ်။
Cache မရှိရင် Cache ထည့်ပြီး တူညီတဲ့ Request ကို Database ထိ မသွားဘဲ ပြန်ပေးရပါတယ်။
ပြင်ပြီးရင် Load Test ကို ပြန်လုပ်ပြီး တိုးတက်လာလား စစ်ရပါတယ်။ ဒီလိုမျိုး စမ်း-ပြင်-ပြန်စမ်း ဆိုတဲ့ စက်ဝိုင်းက Site ကို တကယ်ခိုင်မာသွားစေပါတယ်။
Load Testing က “ဖြစ်လာမှ ပြင်” မဟုတ်ဘဲ “မဖြစ်ခင် ကြိုသိ” တဲ့ နည်းလမ်းပါ။ Site တစ်ခုကို လူအများကြီး သုံးမယ်လို့ မျှော်လင့်ထားရင် Launch မလုပ်ခင် Load Test တစ်ခါ လုပ်ကြည့်ပါ။ တံတား ဆောက်ပြီးမှ ကားတင်စမ်းတာထက် ဆောက်နေတုန်း စမ်းတာက ပိုစိတ်ချရပါတယ်။ ကိုယ့် Site လည်း အဲဒီလိုပဲ စိတ်ချရအောင် ကြိုစမ်းထားလိုက်ပါ။
—