Load Test API ด้วย JMeter ง่ายๆสำหรับผู้เริ่มต้น (Window only)
อะไรคือ JMeter
JMeter เป็นแอพพลิเคชั่นที่เป็น open source แล้วก็เป็น Java app เพียวเลย ซึ่งตัว JMeter ใช้เป็นตัวทำ Load Test หรือ วัด Performance.
ทำไมต้อง JMeter
เพราะว่าอันดับแรกคือ JMeter เป็นฟรี open souce ซึ่งเราสามารถดาวน์โหลดมาใช้ได้ฟรีๆเลย ซึ่งเป็นโปรแกรมที่เป็น UI ใช้ง่าย ไม่จำเป็นต้องเขียนโค้ด ง่ายต่อทั้งเทสเตอร์แล้วก็โปรแกรมเมอร์เองในการนำมาเทสประสิทธิภาพของโปรแกรม
หลังจากที่พอจะรู้คอนเสปเบื้องต้นของ JMeter แล้วเรามาดูกันว่าใช้งานจริงเป็นอย่างไร
การติดตั้ง JMeter
- ต้องติดตั้ง Java ก่อน สามารถตรวจสอบได้ว่าคอมพิวเตอร์ของคุณมี java หรือยัง โดยการ พิมพ์คำสั่งต่อไปนี้ ใน Command Promt
c:\user\dev> java -version
2. ดาวน์โหลด JMeter จาก เว็บ
https://jmeter.apache.org/download_jmeter.cgi
3. แยกไฟล์ซิปแล้วก็นำไปเก็บไว้ที่ไหนก็ได้
วิธีใช้งานเบื้องต้น
เปิดโปรแกรม JMeter เข้าไปตรงที่คุณเก็บไฟล์ไว้
--> JMeter/bin -->jmeter.bat, ApacheJMeter.jar
เมื่อเปิดโปรแกรมได้แล้ว จะเห็นหน้าตาโปรแกรมเป็นแบบนี้ สำหรับเบื้องต้นนี้จะเป็นตัวอย่างการ ทดสอบ load test ของ API สำหรับการ Login
ขั้นตอนแรกสำหรับการทำ load test ก็คือการสร้าง Thread Group ขึ้น โดยการคลิกขวา เลือก Add →Threads(Users) →Thread Group
ตรง Thread Group สิ่งที่ต้องใส่คือ
- Number of Threads (users): 50
- Ramp-Up Reriod (in seconds) : 1
- Loop Count : 1
สิ่งแรกคือจำนวน request ที่ต้องการจะยิง หรือก็คือเรียกเป็น Thread นั่นเอง ส่วน Ramp-Up คือ จำนวน วินาที ที่ reqest จะยิงเข้ามา และ Loop Count คือจำนวนวนรอบทั้งหมด ซึ่งในตัวอย่างนี้ เราจะ ส่ง request ไปทั้งหมด 50 requests หรือเท่าไหร่ก็ได้ตามแต่ request ที่อยากเทสใน 1 วินาที เป็นจำนวน 1 รอบ
ขั้นตอนต่อมาคือการเลือก Http Header โดย คลิกขวาที่ Thread Group →Add →Config Element →HTTP Header Manger
ในส่วนของ Header นั้นจะมีหน้าตาแบบนี้ สิ่งแรกที่ต้องทำคือ การ เพิ่ม Header เข้าไป ต้องกด Add จากนั้นจะขึ้นให้ใส่เค่า Name , Value ซึ่งตรงนี้ก็จะเหมือน Header ทั่วไปเวลาต้อ้งการยิง request api
Name=Content-Type
Value=application/json
หลังจากนั้นคือการ เพิ่ม HTTP Request โดยส่วนนี้จะเป็นการใส่ Http request ที่เราจะทดสอบนั่นเอง โดยการคลิกขวาที่ Thread Group ที่เราสร้างไว้ก่อนหน้านี้
Thread Group →Add →Sampler →HTTP request
ส่วน Http Request ที่สำคัญที่ต้องใส่ ก็จะมี
- Protocal [http] : ตรงนี้ถ้าไม่ใส่จะ default เป็น http
- Server name or IP : ใส่ชื่อ เซิร์ฟเวอร์ หรือ ไอพีก็ได้ ซึ่งสำหรับตัวอย่าง จะใช้เป็น Localhost แทน
- Port Number : ใส่พอร์ดที่จะใช้ ตัวอย่างใช้เป็นพอร์ต 1234
- Method : เป็น method ซึ่งจะใช้เป็นแบบ post, get หรืออะไรก็ได้สามารถกดเลือกได้
- Path : เป็น path ที่จะยิง request เข้าไป
- Body Data : ตรงนี้จะเป็น ส่วน Body ที่จะใช้ ซึ่งก็สามารถเขียนในแบบ json ได้ สำหรับตัวอย่างในการล็อกอินก็จะใช้
{
"loginId": "username1",
"password": "1234"
}
เมื่อเราตั้งค่าอะไรเรียบร้อยแล้ว สามารถกด run ได้เลย ซึ่งจะมี result หลายแบบให้เราเรียกดู หนึ่งในนั้นคือ Summary Report ซึ่งก่อนที่เราจะ run เราต้องสร้าง report ขึ้นมาก่อน สามารถสร้างได้โดยการคลิกขวาที่ Thread Group → Add → Listener →Summary Report
หลังจากเพิ่ม summary report เรียบร้อยแล้ว สามารถ กด run ได้ที่ปุ่ม สีเขียวในรูป
หลังจากที่มัน run เสร็จแล้วเรามาดูผลใน report summary ได้เลย ซึ่งใน report นี้จะประกอบไปด้วย
- Samples : คือจำนวน request ทั้งหมดที่เรายิงไป
- Average : คือ ค่าเฉลี่ยของ response ทั้งหมด
- Min : ค่า response ที่น้อยที่สุด หน่วยเป็น ms
- Max : ค่า response ที่มากที่สุด หน่วยเป็น ms
- Std Dev: ค่า standard deviation (σ) ค่าเบี่ยงเบนมาตรฐาน ที่วัด ค่าเฉลี่ยระยะห่างของค่าเฉลี่ย (μ) ซึ่งจะทำให้เราสามารถหา การกระจายหรือหรือคววามแปรผัน จากค่าเฉลี่ย
- Error : ข้อผิดพลาดในการยิง request ทั้งหมด
- Throughput : เป็น load processed จริงของ Server ระหว่างยิงrequest ซึ่งเป็นตัวชี้วัด ว่าโปรแกรมของคุณรับได้กี่ request/second ยิ่งตัวเลขมากเท่าไหร่ยิ่งดี
หลังจากที่เรายิง request ไปเสร็จแล้วก็จะได้ report หน้าตาแบบนี้ ซึ่งแต่ละตัวเลขก็มีความหมายตามที่ได้อธิบายไปด้านบน
สรุป จากการทำ Load Test นี้ สิ่งที่ได้และตอบโจทย์ในการเทสนี้ ก็คือ ค่า Throughput ที่เป็นตัวบ่งชี้ว่าโปรแกรมของคุณสามารถรับโหลด ได้แค่ไหน ซึ่งคุณสามารถ เพิ่ม จำนวน request ได้เรื่อยๆ
จากในตัวอย่างนี้ ยิงไป 50 requests แต่ถ้าอยากรู้ว่ารับ load ได้มากเท่าไหร่ ก็ลองเพิ่มจำนวน request ไปเรื่อยๆ ยิ่งไปจนกว่าค่า Error ไม่เท่ากับ 0 ซึ่งเท่านี้คุณก็จะสามารถรู้ performance ของ โปรแกรมคุณได้แล้ว