PlusMagi's Blog By Pitt Phunsanit API,Automated Testing,Backend,JavaScript,Testing Load Testing with k6: การเขียน Script ด้วย JavaScript ยิงทดสอบสปีดและหา Breaking Point ของ API

Load Testing with k6: การเขียน Script ด้วย JavaScript ยิงทดสอบสปีดและหา Breaking Point ของ API

ในโลกของการพัฒนาซอฟต์แวร์ยุคปัจจุบัน ความเร็วและความเสถียรของระบบไม่ได้เป็นเพียงแค่ฟีเจอร์เสริม แต่คือหัวใจสำคัญที่กำหนดประสบการณ์ของผู้ใช้งานโดยตรง การที่เว็บไซต์หรือ API ต้องรองรับผู้เข้าชมจำนวนมากพร้อมกัน โดยเฉพาะในช่วงโปรโมชั่นใหญ่ หรือช่วงที่มีการใช้งานสูง ถือเป็นความท้าทายทางวิศวกรรมที่นักพัฒนาต้องให้ความสำคัญอย่างยิ่งยวด


เจาะลึกรายละเอียดและประเด็นสำคัญ

การทดสอบโหลด (Load Testing) คือกระบวนการจำลองสถานการณ์ที่ระบบต้องรับภาระงานเกินกว่าปกติ เพื่อค้นหาจุดอ่อนหรือขีดจำกัดของโครงสร้างพื้นฐาน ไม่ว่าจะเป็น Database, Network หรือ Application Logic การใช้เครื่องมืออย่าง k6 ซึ่งเขียนด้วย JavaScript ทำให้เราสามารถกำหนด Scenario ที่ซับซ้อนได้อย่างยืดหยุ่นและรวดเร็ว

หัวใจสำคัญของการทดสอบนี้คือการที่เราต้องหา “Breaking Point” หรือจุดที่ระบบเริ่มทำงานผิดปกติอย่างชัดเจน การใช้ JavaScript ในการเขียน Script ช่วยให้เราสามารถสร้าง User Journey ที่สมจริง ตั้งแต่การล็อกอิน, การเรียกข้อมูลสินค้าจำนวนมาก ไปจนถึงการทำธุรกรรม ซึ่งช่วยให้ทีมพัฒนาทราบล่วงหน้าก่อนที่จะเกิดปัญหาจริงใน Production Environment

import http from 'k6/http';
import { check, sleep } from 'k6';

export default function () {
  // จำลองการเรียก API 3 ครั้งในแต่ละรอบ (Virtual User)
  http.get('https://api.example.com/users');
  sleep(1); // หน่วงเวลาเพื่อจำลองพฤติกรรมผู้ใช้จริง
}

export const options = {
  vus: 50,      // จำนวน Virtual Users ที่จะส่งเข้ามาพร้อมกัน
  duration: '30s', // ระยะเวลาในการทดสอบทั้งหมด
};


การนำไปประยุกต์ใช้ในชีวิตและการทำงานยุคใหม่

  • การผนวกเข้ากับ CI/CD Pipeline: แทนที่จะรัน Load Test เป็นกิจกรรมที่แยกส่วน การนำ k6 Script ไปรันอัตโนมัติทุกครั้งที่มีการ Merge Code เข้าสู่ Branch หลัก จะช่วยให้ทีมสามารถตรวจจับ Regression Performance ได้ทันที ทำให้แก้ไขได้ตั้งแต่เนิ่นๆ ก่อนถึงมือผู้ใช้งานจริง
  • การเปรียบเทียบ Baseline Performance: เมื่อระบบมีการอัปเดตฟีเจอร์ใหม่ การรัน Load Test เดิมซ้ำจะช่วยให้เราทราบว่าประสิทธิภาพโดยรวม (เช่น Latency หรือ Throughput) ลดลงหรือไม่ ซึ่งเป็นเครื่องมือสำคัญในการรักษาคุณภาพของโค้ดฐาน

การทำ Load Testing ไม่ใช่แค่การ “หาว่าระบบพังเมื่อไหร่” แต่คือการสร้างความมั่นใจให้กับผลิตภัณฑ์ของเราอย่างเป็นรูปธรรม มันเปลี่ยนจากการแก้ไขปัญหาเฉพาะหน้า (Reactive) ไปสู่การป้องกันเชิงรุก (Proactive) ทำให้เราสามารถส่งมอบประสบการณ์ดิจิทัลที่ราบรื่นและน่าเชื่อถือได้อย่างสม่ำเสมอ


อ่านเพิ่มเติม

Exit mobile version