วิธีการใช้งาน JMeter เบื้องต้น เพื่อทดสอบระบบ

Jmeter-beginner-cover

Apache JMeter เป็น Open Source ที่ถูกพัฒนาโดย Java ที่ใช้ในการทดสอบประสิทธิภาพการทำงานของระบบ โดยจะจำลองโหลดผู้ใช้งานบนระบบ เพื่อทดสอบหาความผิดพลาด เพื่อให้ผู้พัฒนานำไปแก้ไขต่อไป

ซึ่งเจ้าตัวนี้รองรับการใช้งานได้ทั้งใน Window, Mac และ Linux อีกด้วย มีเครื่องมือที่ช่วยในการสร้างกราฟและรายงาน

ในบทความนี้จะเน้นไปทาง วิธีการใช้งานเบื้องต้นของ JMeter เพื่อทดสอบระบบ API ว่าสามารถรองรับ Load ได้เท่าไหร่

ดาวน์โหหลด JMeter

สำหรับผู้อ่านท่านใดที่ยังไม่มีโปรแกรม JMeter ก็สามารถโหลดได้จากลิ้งนี้เลย

โดยก่อนที่จะใช้ จำเป็นต้องติดตั้ง Java 8+ สามารถหาโหลดได้ทั่วไป

ซึ่งการใช้งานสามารถเปิดโดยตรงจากตัวโปรแกรมที่มีชื่อไฟล์ว่า jmeter.batch หรือสามารถ run ผ่าน command line ได้เช่นกัน

ตั้งค่าตัวแปร

ก่อนที่จะไปทำอะไรนั้น ผมจะเริ่มจากกาารสร้างค่าตัวแปรคงที่เพื่อที่จะเอาไว้ใช้งานกับข้อมูลในขั้นตอนต่อๆไป
ในที่นี้จะมี PATH คือเว็บที่เราต้องการจะทำการรีเควส และ TOKEN สำหรับเว็บที่ต้องมีการเข้ารหัสก่อน ในที่นี้เว็บที่ผมทำการยิงไปต้องทำการเข้ารหัสผ่าน JWT Token Header ด้วย จึงได้กำหนดตัวแปรตัวนี้ขึ้นมา

Constant variables setting in JMeter

เพิ่ม Thread Group

ทำการตั้งค่าใน Thread Properties

  • Number of Threads : 10
  • Ramp-up period : 60
  • Loop Count : Infinite
  • Same user on each iteration : checked (เพื่อให้ไม่มี Connection Time ระหว่างการ Request)
  • Specify Thread lifetime: Check
  • Duration : 120

จากการตั้งค่าข้างต้นหมายถึง มี users ใช้งาน 10 คน โดยค่อยๆเพิ่มขึ้นจึงครบ 60 วินาที จากนั้นใช้งานไปจนถึง 120 วินาที โดยให้รันไปเรื่อยๆจนครบ

เพิ่ม Http Request ที่ต้องการให้ Request

  • ตั้งค่าดังรูป โดยสามารถใช้งานตัวแปร PATH ผ่าน ${PATH} และทำการเปลี่ยนชื่อ เผื่อให้ง่ายต่อการจัดการ
  • จากนั้นก็จะทดสอบทั้ง POST และ PUT method ก็สามารถ Duplicate ค่าที่เราตั้งก่อนหน้าได้เลย
  • โดย Post และ Put ผมจำใส่ค่า ลงไปใน Body ดังนี้
{
    "name":"1",
    "description":"5",
    "floatData":${random_number1-100},
    "boolData":true,
    "arrayData":[5,5],
    "objectData":{"key":5}
}

สังเกตว่าจะมีตัวแปร ${random_number1-100} ซึ่งค่านี้จะสร้างขึ้นมาจากการสุ่มซึ่งสามารถตั้งค่าตามได้ในขั้นตอนต่อไป

ตั้งค่า random variables

ค่าตัวแปรนี้จะไม่ซ้ำในแต่ละการ request เพื่อให้มีความสมจริง ค่านี้ผมเอาไปใช้ใส่ทั้งใน path และ body โดยสามารถตั้งค่าตามรูปภาพได้เลย

สร้าง Listener เพื่อดูรายงานประสิทธิภาพ

โดยปกติที่ผมชอบใช้ Report ดังนี้

  • Summary Report เพื่อดูภาพรวม
  • View Results Tree โดยตั้งค่าให้แสดงผลเฉพาะ Error เพื่อเอาไว้ดูว่าของ Request ที่ส่งไป Error อะไร
  • Response Time Graph เพื่อดูการตอบสนองของแต่ละ Request

เพียงเท่านี้เราก็สามารถลองทดสอบระบบเราได้แล้ว

กำหนด Header

Important!

สำคัญ ต้องกำหนด Header ด้วย ไมงั้นจะไม่สามารถรับส่งข้อมูลได้ โดยผมจะใส่ไว้บนหัวเลย เนื่องจากทุก PATH ต้องผ่าน Header ตัวนี้

โดยกำหนดตามค่าดังนี้

Accept: */*
Accept-Encoding : gzip, deflate, br
Connection :keep-alive
Content-Type : application/json
Authorization : Bearer ${TOKEN}

ผลการทดสอบ API

หลังจากที่เราได้ตั้งค่ามาทั้งหมดแล้วอย่าลืม Save เพื่อเอาไว้ใช้เป็น ค่าตั้งต้นจะได้ไม่ต้องมาตั้งค่าใหม่ โดยต้องเลือก Save Test Plan As โดยจะได้นามสกุลไฟล์เป็น jmx

Run Performance Test in JMeter
Run Performance Test in JMeter

เพียงเท่านี้เราก็จะได้ผลการทดสอบสำหรับ load test โดยสามารถไปปรับ number of Threads ให้เยอะขึ้นเพื่อดูว่าระบบเราสามารถรองรับได้เท่าไหร่

ในกรณีที่ตั้งค่า number of Threads สูงๆ

สำกรับการทดสอบที่มี number of Threads มากๆ แนะนำให้รัน ผ่าน Command line เพราะถ้าหากรันผ่าน GUI ตัว Jmeter จะเก็บค่าไม่ทัน โดยต้อง cd เข้าไปที่ ..\apache-jmeter-5.6.2\bin ก่อนแล้วถึงรันโค้ดดังนี้

./jmeter  -n -t "\loadTest\starter setup.jmx" -l \loadTest\test_results.jtl

จากนั้นเราสามารถไปเปิดไฟล์ test_results.jtl ผ่าน JMeter ผ่าน Listener ที่เราต้องการได้อีกที เช่นต้องการมาดู Response Time Graph ทีหลังดังรูปเป็นต้น

จะได้ค่าประมาณนี้

หวังว่าบทความนี้ก็จะช่วยให้ผู้อ่านรู้วิธีการใช้งานคร่าวๆของ JMeter program ทุกคนก็สามารถไปลองเล่นกันได้เลย

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x