jMeter101

61
jMeter 101 @somkiat -- สยามชํานาญกิจ --

description

How to using jMeter for Load Testing web application ?

Transcript of jMeter101

Page 1: jMeter101

jMeter 101

@somkiat-- สยามชาํนาญกจิ --

Page 2: jMeter101

jMeter

● เครอืงมอืชว่ยทํา Load test และ วดัประสทิธภิาพการทํางานของ service ตา่งๆ

● เนน้การทดสอบ Web application● Multi-Threading● พัฒนาดว้ยภาษา Java● ฟรี● Open source● http://jmeter.apache.org/

Page 3: jMeter101

ความสามารถอนืๆ ของ jMeter

● สามารถทํา Unit testing ของสว่นตา่งๆ ได ้○ JDBC○ FTP○ LDAP○ Web service○ JMS○ Mail => SMTP, POP3, IMAP○ HTTP, HTTPS○ TPC

Page 4: jMeter101

สามารถทาํอะไรกบั jMeter ไดบ้า้ง

● ใชสํ้าหรับการทดสอบระบบ○ Load testing○ Performance testing○ Availability testing○ Functional testing

● Monitor ระบบ○ Database○ Web server○ FTP○ ...

Page 5: jMeter101

การทาํงานของ jMeter

● จําลองกลุม่ของผูใ้ชง้านระบบ● สง่ request ไปยงั server● บนัทกึผลการ return จาก server เพอืแสดงประสทิธภิาพการทํางาน

● แสดงผลดว้ยภาพ เชน่ Graph เป็นตน้

Page 6: jMeter101

การทาํงานของ jMeter

เรมิตน้ จบการทาํงาน

แสดงผลการทาํงาน

สรา้ง request เพอืสง่ไปยงั server

Server สง่ขอ้มลูกลบัมา

jMeter บนัทกึขอ้มลู

jMeter ทาํการรวบรวมขอ้มลู เพอืสรปุผลทางสถติ ิ

Page 7: jMeter101

เรมิตน้การใชง้าน

● Download จาก http://jmeter.apache.org● Extract file● Go to folder /bin● Run jmeter.bat/.sh

Page 8: jMeter101

ผลการทาํงาน

Page 9: jMeter101

องคป์ระกอบของ jMeter

● Test plan● Thread Group● Controller● Sampler● Listerner● Timmer● Assertion● Configuration● Pre-processor element● Post-processor element

Page 10: jMeter101

Test Plan

● กําหนดลําดบัการทํางานของ process ตา่งๆ● ประกอบไปดว้ย

○ Thread Group○ Controller○ Listener○ Timer○ Assertion○ Configuration

Page 11: jMeter101

Thread Group

● จดุเรมิตน้การทํางานของแตล่ะ Test Plan● ประกอบไปดว้ย

○ Controller○ Sampler

● ขอ้มลูทตีอ้งกําหนด○ Number of thread○ Ramp-up period○ Loop count

Page 12: jMeter101

Thread Group

Page 13: jMeter101

รายละเอยีดของ Thread Group

Page 14: jMeter101

Configuration

● ทําการกําหนดคา่เรมิตน้ตา่งๆ เชน่○ HTTP Request Default

■ กําหนดคา่เรมิตน้ของ HTTP Request เชน่ url ของ server

■ ไมไ่ดทํ้าหนา้ทสีรา้ง Request○ CSV Data Set Config○ HTTP Cache Manager○ HTTP Cookie Manager○ HTTP Header Manager○

Page 15: jMeter101

HTTP Request Default

● เลอืก Thread Group● click ขวา● เลอืกเมนู

○ Add -> Config Element -> HTTP Request Default

Page 16: jMeter101

HTTP Request Default

Page 17: jMeter101

HTTP Request Default

Page 18: jMeter101

Sampler

● สว่นการทํางานจรงิของ jMeter● สรา้ง Request ตา่งๆ เพอืใหไ้ดผ้ลทตีอ้งการ● ตวัอยา่งเชน่

○ HTTP Request○ FTP Request○ JDBC Request

Page 19: jMeter101

HTTP Request

● กําหนดคา่ตา่งๆ ของ Request นันๆ ○ Path○ Protocol○ Encoding○ HTTP Method

■ GET■ POST■ HEAD■ PUT

○ Parameters

Page 20: jMeter101

HTTP Request

● เลอืก Thread Group● click ขวา● เลอืกเมนู

○ Add -> Sampler -> HTTP Request

Page 21: jMeter101

HTTP Request

Page 22: jMeter101

HTTP Request

Page 23: jMeter101

Listener

● ทําหนา้ทบีนัทกึขอ้มลูของผลการทํางาน เชน่ ขอ้มลูจาก HTTP Request ลง file

● แสดงผลการทํางานในรปูแบบ vistualization● ตวัอยา่ง

○ Graph Result○ View Result in Table○ Summary Report○ Aggregate Graph○ Aggregate Report

Page 24: jMeter101

Graph Result

● แสดงผลการทํางานในรปูแบบ Graph● จะสรา้ง graph ในรปูแบบงา่ยๆ● สามารถบนัทกึลง file ทตีอ้งการได ้● แสดงคา่ตา่งๆ ทาง สถติ ิเชน่ Average, Median

ขอ้ควรระวงัไมค่วรใชง้านในการทํา Load testing เพราะวา่ใชง้าน CPU มากๆๆๆๆ

Page 25: jMeter101

Graph Result

● เลอืก Thread Group● click ขวา● เลอืกเมนู

○ Add -> Listener -> Graph Result

Page 26: jMeter101

Graph Result

Page 27: jMeter101

Graph Result

Page 28: jMeter101

สงัใหท้าํงาน

Page 29: jMeter101

ผลการทาํงานในรปูแบบ Graph Result

Page 30: jMeter101

ผลการทาํงานในรปูแบบ Result in Table

Page 31: jMeter101

ผลการทาํงานในรปูแบบ Aggregate graph

Page 32: jMeter101

TODO :: Google Test Plan

● Step○ Create Test Plan○ Create Thread Group○ Create HTTP Request Default○ Create HTTP Request○ Create Listener ( Report )○ Run ...

Page 33: jMeter101

TODO :: Search Google Test Plan

● Step○ Create Test Plan○ Create Thread Group○ Config Element

■ HTTP Cookie Manager■ HTTP Header Manager

○ Create HTTP Request Default○ Create HTTP Request○ Create Listener ( Report )○ Run ...

Page 34: jMeter101

เฉลย

● https://github.com/up1/jMeter101/○ Google.jmx

Page 35: jMeter101

การ import ขอ้มลูจาก CSV file

● เลอืก Thread Group● click ขวา● เลอืกเมนู

○ Add -> Config Element -> CSV Data Set Config

Page 36: jMeter101

การ import ขอ้มลูจาก CSV file

Page 37: jMeter101

การ import ขอ้มลูจาก CSV file

Page 38: jMeter101

การกาํหนด parameter ตา่งๆ

● File name● File Encoding● Variable Names● Delimiter● Allow quote data● Share mode

Page 39: jMeter101

การ import ขอ้มลูจาก CSV file

Page 40: jMeter101

ตวัอยา่ง CSV file

bugday2013bugdefectincident

Page 41: jMeter101

ตวัอยา่ง CSV file

user1,password1user2,password2user3,password3user4,password4user5,password5

Page 42: jMeter101

การอา้งถงึ Variable จาก Data Set

● ${variable_name}

Page 43: jMeter101

การอา้งถงึ Variable จาก Data Set

Page 44: jMeter101

TODO :: Search Google + CSV

● Step○ Create Test Plan○ Create Thread Group○ Create Data set CSV

■ keyword.csv○ Create config element => CSV○ Create HTTP Request Default○ Create HTTP Request○ Create Listener ( Report )○ Run ...

Page 45: jMeter101

TODO :: Login Test Plan

● Step○ Create Test Plan○ Create Thread Group○ Create Data set CSV

■ userprofile.csv○ Create config element => CSV○ Create HTTP Request Default○ Create HTTP Request○ Create Listener ( Report )○ Run ...

Page 46: jMeter101

เฉลย

● https://github.com/up1/jMeter101/○ LoadDataFromCSV.jmx○ userprofile.csv

Page 47: jMeter101

Batch process with jMeter ( Non-GUI )

jmeter -n -t <Google.jmx>

-n = Run with Non-GUI mode-t = กําหนด file jmx ( Test plan )

Page 48: jMeter101

jMeter Distributed Testing

jMeter Summary

127.0.0.1 192.168.1.10 192.168.1.11

192.168.1.10 192.168.1.10 192.168.1.10

Page 49: jMeter101

Step to config (1)

● เพมิการ Start RMI Registry ของ server ตา่งๆ ใน file jmeter-server.bat

เพมิ RMI Registry ตอ่จาก :setCPSTART "%JAVA_HOME%\jre\bin\rmiregistry"

Page 50: jMeter101

Step to config (2)

● Start RMI Registry ของ server ตา่งๆ ใน file jmeter-server.bat

jmeter-server

Page 51: jMeter101

Step to config (3)

● เพมิ Remote server ใน file jmeter.properties

remote_hosts=127.0.0.1, 192.168.1.10, 192.168.1.11, 192.168.1.12, 192.168.1.13, 192.168.1.14

Page 52: jMeter101

Step to config (4)

● เปิดโปรแกรม jMeter ขนึมา เพอืด ูRemote host

Page 53: jMeter101

Step to config (5)

● Run !!

Page 54: jMeter101

ผลการทาํงาน

Page 55: jMeter101

ขอ้เสยี

● มคีวามซบัซอ้น● GUI คอ่นขา้งสบัสน● ยากตอ่ผูเ้รมิตน้ใชง้าน● Report หว่ย

Page 56: jMeter101

ขอ้ดี

● สําหรับคนทเีขยีน Code เป็น○ สามารถเขยีน plugin เพอืขยายความสามารถได ้

Page 57: jMeter101

ขอ้ดี

● สําหรับคนทเีขยีน Code ไมเ่ป็น○ http://code.google.com/p/jmeter-plugins/

Page 58: jMeter101

Resources

● http://jmeter.apache.org/usermanual/component_reference.html

● http://jmeter.apache.org/usermanual/build-web-test-plan.html

● http://jmeter.apache.org/usermanual/build-adv-web-test-plan.html

Page 59: jMeter101

TODO :: Register Test Plan

● Step○ Create Test Plan○ Create Thread Group○ Create Data set CSV

■ user_register.csv○ Create config element => CSV○ Create HTTP Request Default○ Create HTTP Request○ Create Listener ( Report )○ Run ...

Page 60: jMeter101

TODO :: Information

● Server IP = http://119.59.97.9/● Parameters ( Visible )

○ Firstname○ Lastname○ Company○ Position○ Phone

● HTTP Post method

Page 61: jMeter101

เฉลย

● https://github.com/up1/jMeter101/○ Agile Singapore 2013.jmx○ user_register.csv