ความจำเป็นของการทำ Load และ Stress Test สำหรับ Web Application และ API Server
ในยุคที่ระบบธุรกิจส่วนใหญ่ทำงานผ่าน Web Application และ API Server ความเสถียรและความสามารถในการรองรับผู้ใช้งานจำนวนมากพร้อมกัน กลายเป็นปัจจัยสำคัญที่ส่งผลโดยตรงต่อความน่าเชื่อถือขององค์กร หากระบบตอบสนองช้า เกิด Error หรือหยุดทำงานในช่วงเวลาสำคัญ ความเสียหายอาจเกิดขึ้นทั้งในด้านรายได้ ภาพลักษณ์ และความเชื่อมั่นของลูกค้าอย่างหลีกเลี่ยงไม่ได้
บางครั้งแม้ว่าระบบจะทำงานได้ดีในสภาพแวดล้อมการทดสอบทั่วไป แต่เมื่อมีผู้ใช้งานจำนวนมากเข้าใช้งานพร้อมกันโดยฉับพลันสถานการณ์ย่อมเปลี่ยนไป เช่น
ภาระโหลดที่เพิ่มขึ้นอย่างรวดเร็วสามารถทำให้เกิดปัญหา เช่น
นี่คือเหตุผลที่การทำ Load Test และ Stress Test มีความจำเป็นอย่างยิ่ง
Load Test คืออะไร และจำเป็นอย่างไร
Load Testing คือการจำลองผู้ใช้งานจำนวนมากเข้าใช้งานระบบในระดับที่คาดว่าจะเกิดขึ้นจริง เพื่อวัดว่า ค่าต่างๆ ดังต่อไปนี้
การทำ Load Test ช่วยให้สามารถวางแผน Capacity ได้อย่างแม่นยำ และลดความเสี่ยงก่อนเปิดใช้งานจริง (Go-Live)
Stress Test คืออะไร และทำไปเพื่ออะไร
Stress Testing คือการทดสอบเกินกว่าระดับการใช้งานปกติ เพื่อดูค่าต่างๆ เหล่านี้
การรู้ ขีดจำกัดสูงสุด ของระบบ ช่วยให้สามารถออกแบบ High Availability และ Disaster Recovery ได้อย่างเหมาะสม
ทำไมต้องทดสอบทั้ง Web และ API
ในปัจจุบัน Web Application มักทำงานร่วมกับ API Server ซึ่งอาจถูกเรียกใช้งานจาก อุปกรณ์หลายต่อหลายแบบดังต่อไปนี้
แม้หน้าเว็บจะดูทำงานปกติ แต่หาก API มีปัญหา ระบบทั้งหมดอาจได้รับผลกระทบ ดังนั้นจึงควรทดสอบทั้งระดับ Frontend และ Backend ควบคู่กัน
ความเสี่ยงของการไม่ทำ Load / Stress Test
การละเลยการทดสอบลักษณะนี้ อาจทำให้ สิ่งที่ไม่คาดฝันได้ดังต่อไปนี้
แล้วอะไรจะช่วยคุณได้ในเรื่องดังกล่าว คำตอบคือ Gatling
Gatling คืออะไร
Gatling คือเครื่องมือสำหรับ Load Testing / Performance Testing แบบ open-source ออกแบบมาสำหรับ DevOps และ CI/CD โดยเฉพาะ มันสามารถทดสอบ เว็บแอปพลิเคชันและ API
ใช้จำลองผู้ใช้งานจำนวนมากเข้าใช้งานระบบพร้อมกัน เพื่อดูว่าเว็บของเรารับโหลดได้แค่ไหน โดยสามารถจำลองได้หลายรูปแบบ (pattern) การสื่อสารกับมันสามารถใช้ Java,Scala,Kotlin หรือ TypeScript ได้
Gatling ช่วยทดสอบ Web ของคุณได้อย่างไร?
ทดสอบว่าเว็บรองรับผู้ใช้กี่คนพร้อมกัน เช่น:
หา “คอขวด” (Bottleneck) โดย Gatling จะช่วยให้คุณเห็นว่า:
เหมาะมากถ้าคุณทำ SaaS หรือระบบที่ต้องรองรับ user พร้อมกันจำนวนมาก
ทดสอบก่อน Go-Live หรือ ก่อนเปิดใช้งานจริง เช่น:
คุณสามารถจำลอง load ล่วงหน้า เพื่อป้องกันระบบล่มวันจริง
ทำ Stress Test จะเป็นการทดสอบแบบเพื่อหาจุด เกินขีดจำกัด เช่น:
Gatling ทำงานอย่างไร?
ขั้นตอนทั่วไป:
1. เขียน Simulation Script
2. กำหนดจำนวน Users และรูปแบบการยิง request
3. รัน Test
4. ดู Report HTML
ตัวอย่างแนวคิดสำหรับการจำลองการทดสอบ และวิธีการจำลองรูปแบบการเข้าใช้งาน
จำลอง 1000 users
เพิ่งจำนวนขึ้นภายใน 60 seconds
call /login
call /dashboard

สำหรับตัวอย่างของ Gatling นั้นละเอียดมาก ตัวอย่าง Report ที่ได้
Report จะบอกค่าดังต่อไปนี้:
เหมาะกับใคร?
เหมาะกับ:
วิธีการติดตั้ง

โดยท่านจะสามารถเลือกภาษาที่ต้องการเขียนคำสั่งได้ ตามตัวเลือกข้างต้น กรณีวันนี้เราขอเลือก Java
2. หลังจากนั้น ทำการเช็คว่าท่านมี JDK และ MVN หรือยังโดยการพิมพ์คำสั่ง
java -version mvn -version
ถ้าไม่เจอท่านสามารถติดตั้งได้โดยพิมพ์คำสั่ง
sudo apt update && sudo apt install default-jdk -y sudo apt install maven -y
หลังจากนั้นเช็คว่าท่านได้มี JAVA_HOME อยู่หรือปล่าว โดยการพิมพ์
echo $JAVA_HOMME
ถ้าไม่มีให้ท่านกำหนด
export JAVA_HOME="/usr/lib/jvm/java-21-openjdk-amd64
ตัวอย่างของเราใช้ version 21 แต่ของท่านอาจจะเปลี่ยนขึ้นอยู่กับ path และ version ที่ท่านใช้
3. หลังจากนั้น ทำการ unzip ไฟล์ที่ท่านดาวน์โหลดมา และเข้าไปยัง
cd ./src/test/java/simulations
4. ทำการสร้างไฟล์สำหรับการทดสอบ

5. หลังจากนั้นก็รันคำสั่ง
mvn gatling:test
แล้วก็เข้าไปดู report สวยๆ ได้เลย
หมายเหตุ : ท่านควรมี IDE สำหรับการแก้ไฟล์ java เช่น VS Code หรือ IntelliJ เพื่อความสะดวกในการทดสอบ