Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

jMeter ● เครืองมือช่วยทํา Load test และ วัดประสิทธิภาพการทํางานของ service ต่างๆ ● เน้นการทดสอบ Web application ● Multi-Threading ● พัฒนาด ้วยภาษา Java ● ฟรี ● Open source ● http://jmeter.apache.org/

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

สามารถทําอะไรกับ jMeter ได้บ้าง ● ใช ้สําหรับการทดสอบระบบ ○ Load testing ○ Performance testing ○ Availability testing ○ Functional testing ● Monitor ระบบ ○ Database ○ Web server ○ FTP ○ ...

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

การทํางานของ jMeter เริมต้น จบการทํางาน แสดงผลการ ทํางาน สร้าง request เพือส่งไปยัง server Server ส่งข้อมูลกลับมา jMeter บันทึกข้อมูล jMeter ทําการรวบรวมข้อมูล เพือสรุปผลทางสถิติ

Slide 7

Slide 7 text

เริมต้นการใช้งาน ● Download จาก http://jmeter.apache.org ● Extract file ● Go to folder /bin ● Run jmeter.bat/.sh

Slide 8

Slide 8 text

ผลการทํางาน

Slide 9

Slide 9 text

องค์ประกอบของ jMeter ● Test plan ● Thread Group ● Controller ● Sampler ● Listerner ● Timmer ● Assertion ● Configuration ● Pre-processor element ● Post-processor element

Slide 10

Slide 10 text

Test Plan ● กําหนดลําดับการทํางานของ process ต่างๆ ● ประกอบไปด ้วย ○ Thread Group ○ Controller ○ Listener ○ Timer ○ Assertion ○ Configuration

Slide 11

Slide 11 text

Thread Group ● จุดเริมต ้นการทํางานของแต่ละ Test Plan ● ประกอบไปด ้วย ○ Controller ○ Sampler ● ข ้อมูลทีต ้องกําหนด ○ Number of thread ○ Ramp-up period ○ Loop count

Slide 12

Slide 12 text

Thread Group

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

Configuration ● ทําการกําหนดค่าเริมต ้นต่างๆ เช่น ○ HTTP Request Default ■ กําหนดค่าเริมต ้นของ HTTP Request เช่น url ของ server ■ ไม่ได ้ทําหน้าทีสร ้าง Request ○ CSV Data Set Config ○ HTTP Cache Manager ○ HTTP Cookie Manager ○ HTTP Header Manager ○

Slide 15

Slide 15 text

HTTP Request Default ● เลือก Thread Group ● click ขวา ● เลือกเมนู ○ Add -> Config Element -> HTTP Request Default

Slide 16

Slide 16 text

HTTP Request Default

Slide 17

Slide 17 text

HTTP Request Default

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

HTTP Request ● กําหนดค่าต่างๆ ของ Request นันๆ ○ Path ○ Protocol ○ Encoding ○ HTTP Method ■ GET ■ POST ■ HEAD ■ PUT ○ Parameters

Slide 20

Slide 20 text

HTTP Request ● เลือก Thread Group ● click ขวา ● เลือกเมนู ○ Add -> Sampler -> HTTP Request

Slide 21

Slide 21 text

HTTP Request

Slide 22

Slide 22 text

HTTP Request

Slide 23

Slide 23 text

Listener ● ทําหน้าทีบันทึกข ้อมูลของผลการทํางาน เช่น ข ้อมูลจาก HTTP Request ลง file ● แสดงผลการทํางานในรูปแบบ vistualization ● ตัวอย่าง ○ Graph Result ○ View Result in Table ○ Summary Report ○ Aggregate Graph ○ Aggregate Report

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

Graph Result ● เลือก Thread Group ● click ขวา ● เลือกเมนู ○ Add -> Listener -> Graph Result

Slide 26

Slide 26 text

Graph Result

Slide 27

Slide 27 text

Graph Result

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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 ...

Slide 34

Slide 34 text

เฉลย ● https://github.com/up1/jMeter101/ ○ Google.jmx

Slide 35

Slide 35 text

การ import ข้อมูลจาก CSV file ● เลือก Thread Group ● click ขวา ● เลือกเมนู ○ Add -> Config Element -> CSV Data Set Config

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

การกําหนด parameter ต่างๆ ● File name ● File Encoding ● Variable Names ● Delimiter ● Allow quote data ● Share mode

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

ตัวอย่าง CSV file bugday2013 bug defect incident

Slide 41

Slide 41 text

ตัวอย่าง CSV file user1,password1 user2,password2 user3,password3 user4,password4 user5,password5

Slide 42

Slide 42 text

การอ้างถึง Variable จาก Data Set ● ${variable_name}

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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 ...

Slide 45

Slide 45 text

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 ...

Slide 46

Slide 46 text

เฉลย ● https://github.com/up1/jMeter101/ ○ LoadDataFromCSV.jmx ○ userprofile.csv

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

Step to config (1) ● เพิมการ Start RMI Registry ของ server ต่างๆ ใน file jmeter-server.bat เพิม RMI Registry ต่อจาก :setCP START "%JAVA_HOME% \jre\bin\rmiregistry"

Slide 50

Slide 50 text

Step to config (2) ● Start RMI Registry ของ server ต่างๆ ใน file jmeter-server.bat jmeter-server

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

Step to config (4) ● เปิดโปรแกรม jMeter ขึนมา เพือดู Remote host

Slide 53

Slide 53 text

Step to config (5) ● Run !!

Slide 54

Slide 54 text

ผลการทํางาน

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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 ...

Slide 60

Slide 60 text

TODO :: Information ● Server IP = http://119.59.97.9/ ● Parameters ( Visible ) ○ Firstname ○ Lastname ○ Company ○ Position ○ Phone ● HTTP Post method

Slide 61

Slide 61 text

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