JMeter #01

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

การติดตั้งโปรแกรม

โปรแกรม Jmeter เป็นโปรแกรมสารพัดประโยชน์ใช้สำหรับทดสอบประสิทธิภาพการรองรับโหลดจำนวนมาก โดยในเบื้องต้นผมยังจะไม่อธิบายรายละเอียดโปรแกรมมากนะครับ จะนำเสนอแค่วิธีติดตั้ง และการ Test ในส่วนที่เป็น Web Server แบบไม่มี Script อะไรพิเศษเป็นหลัก แล้ววันหลังค่อยมาเปล่าในส่วนอื่น ๆ เช่นการ Test Load Database, LDAP, FTP, WebService ฯลฯ ถ้ามีโอกาสครับ


ความต้องการพื้นฐานสำหรับโปรแกรม Jmeter

1. Java 6 ขึ้นไป

2. OS ซึ่งรองรับทั้ง Unix, Windows


วิธีการติดตั้งบน Windows 

Test OS : Windows 8.1

1. ติดตั้ง JAVA สามารถทำการ Download และติดตั้งได้จาก

http://www.java.com/en/download/index.jsp

2. ดาวน์โหลดโปรแกรม Jmeter ได้จาก

http://jmeter.apache.org/download_jmeter.cgi

3. Save file .zip ดังรูป

4. ทำการแตกไฟล์ออกมา และทำการรันไฟล์ ApacheMeter.jar ดังรูป (จะปรากฎเป็น icon java สามารถ double click รันได้เลย)

ตัวอย่างการสร้าง Test Plan เพื่อทดสอบ Web Server

1. ทำการสร้าง Thread Group ภายใต้ Test Plan ดังรูป

2. หลังจากนั้นจะปรากฎหน้าต่างให้ตั้งค่าได้ดังนี้

Number of Threads (users) : จำนวนผู้ใช้งานที่ต้องการ ณ เวลานั้น ๆ (concurrent users)

Ramp-up Period (in seconds) : เวลาหน่วงในการเพิ่มผู้ใช้งานจนถึงจำนวน Number of Threads ที่ตั้งไว้ เช่น Number of Threads = 300, Ramp-up Period = 60 แสดงว่า ภายใน 60 วินาทีจะมี จำนวนผู้ใช้เข้าสู่ระบบรวม 300 คน (ค่อย ๆ เพิ่มเข้าไปจนครบ 300 ใน 60 วินาที)

Loop Count : คือจำนวนรอบที่ทำ ถ้าติด Forever ก็แสดงว่าทำตลอดไป

*หมายเหตุ ระวังอย่างตั้งค่าเว่อร์จนเกินไป เครื่องผู้ที่สั่ง Test อาจจะทำงานไม่ไหว Hang ได้


3. จากนั้นทำการสร้าง Sampler ที่เป็น HTTP Request เพื่อกำหนดค่า config เบื้องต้นที่จำเป็นในการทดสอบ ดังรูป

4. จะปรากฎให้ตั้งค่า หลัก ๆ ถ้าต้องการยิงทดสอบธรรมดา ๆ ให้ใส่เฉพาะ Server Name หรือ IP และ Path เช่น /regist.php ถ้าต้องการยิงหน้าแรกก็ใส่ / เฉย ๆ ดังรูป

5. หลังจากนั้นทำการเพิ่มในส่วนของรายงานผล โดยแนะนำ 2 ตัวคือ View Results Tree และ Graph Results

6. ตัวอย่างผลลัพธ์จาก Results Tree (วิธีการรัน Test ให้กดที่ปุ่ม Play สีเขียว และปุ่ม Stop สีแดงเพื่อหยุด)

7. ตัวอย่างผลลัพธ์ในรูปแบบ Graph Results

การสร้าง Load Test เบื้องต้น

การวัดประสิทธิภาพ (Performance Test) [1] แบ่งออกเป็น

  1. Performance Testing
  2. Load Testing
  3. Stress Testing


ในที่นี้จะใช้ JMeter ในการทำ Load Testing โดยจะทดสอบ Web Application ตามเป้าหมายต่อไปนี้

  • ทดสอบกับ Web Page ที่ตั้งไว้ ซึ่งประกอบด้วยภาพจำนวนมาก
  • จำนวน Connection ต่อวินาที ในระดับต่างๆ
  • ในแต่ระดับ จะมีหยุดรอ 10 วินาที ก่อนจะยกระดับที่สูงขึ้น


ขั้นตอนการใช้งาน JMeter สร้าง Load Testing

1.เนื่องจากการทดสอบจะยิงไปที่ Web Page เดียวกันตลอด จึงสร้าง HTTP Request Default เพื่อให้ง่ายต่อการเปลี่ยนแปลง

โดยคลิกขวาที่ Test Pane เลือก Add > Config Element > HTTP Request Default

2.ใน HTTP Request Default กรอก

Server Name or IP

Port Number

Path ตามต้องการ

เช่น ต้องการทดสอบ http://192.168.107.107:80/wordpress/?p=4

3.คลิกขวาที่ Test Plan เลือก Add > Threads (Users) > Thread Group

4.กรอก Name และ Number of Threads (users)

ในตัวอย่างนี้ ตั้งค่า Number of Threads (users) เป็น 10 และ Ramp-Up Period (in seconds) เป็น 1 เพราะต้องการให้ทดสอบระบบว่า เมื่อ มีผู้ใช้ใช้งานพร้อมกัน 10 คนในวินาทีเดียวกันนั้น ระบบจะตอบสนองอย่างไร

5.คลิกขวาที่ Thread Group นี้ (ตอนนี้จะเปลี่ยนชื่อจาก Thread Group เป็น 10 แล้ว) แล้วเลือก Add > Sampler > Http Request

6.ในส่วนนี้ ไม่ต้องแก้ไขอะไร โดย JMeter จะไปเอาค่าที่ตั้งไว้ใน HTTP Request Default ข้างต้นมาใช้

7.ต่อไป เป็นส่วนของการแสดงผล

คลิกขวาที่ Test Plan เลือก Add > Listener > Summary Report

8.ต่อไป ใส่ Timer เพื่อให้ระบบ หยุดพักการทดสอบ เมื่อทำแต่ละ Thread Group เสร็จ เป็นเวลา 10 วินาที ก่อนจะเริ่ม Thread Group ต่อไป


คลิกขวาที่ Test Plan เลือก Add > Timer > Constant Timer 

9.แล้วใส่ค่า 10000 milliseconds หรือ 10 วินาที

10.ในที่นี้ ต้องการทดสอบที่ 10 Users แล้วไป 20 Users ไป จนกระทั่ง 100 Users

ก็ให้ทำการ Duplicate ตัว Thread Group ที่ชื่อ 10 ขึ้นมา



แล้วแก้ Name กับ Number of Threads (users) เป็น 20

แล้วทำซ้ำไปเรื่อยๆ จนได้จำนวนที่ต้องการ (เช่น 10 ถึง 100 เป็นต้น)

11.สุดท้าย ทำการกำหนดให้ JMeter ทำงานทีละ Thread ตามลำดับ

โดยการ คลิกที่ Test Plan

แล้ว เลือก Run Thread Groups consecutively (i.e.run groups one at a time)

12.ต่อไปก็ทำการทดสอบ

ให้คลิก Summary Report

เลือก Include group name in label

แล้วคลิกปุ่ม Run

13.ก็จะได้รายงานผล สามารถ Save Table Data เป็น .csv เอาไป Plot Graph ให้สวยงามได้

0
172