HomeOur Team
[Performance testing with Jmeter - phần 2] Jmeter overview

[Performance testing with Jmeter - phần 2] Jmeter overview

By phuong.nguyen
Published in Testing
October 26, 2022
5 min read

Hôm nay chúng ta sẽ tìm hiểu về 1 trong những công cụ test performance phổ biến nhất hiện nay, đó là JMeter.

1. JMeter là gì?

JMeter là 1 mã nguồn mở, viết bằng Java và được thiết kế để test performance. Ngoài ra, có thể sử dụng JMeter để manual/automation test API. JMeter mô phỏng thao tác trên ứng dụng của một lượng user nhất định. Khi bắt đầu thực hiện test, JMeter gửi các request đến server và lưu lại tất cả phản hồi. Sau khi tính toán, JMeter sẽ tạo một báo cáo về performance của hệ thống vừa test. Screen Shot 2022-10-23 at 14.17.12.png JMeter có thể test performance nhiều loại applications/server/protocol khác nhau:

  • Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET,…)
  • SOAP/REST Webservices
  • FTP
  • Database via JDBC
  • LDAP
  • Message-oriented middleware (MOM) via JMS
  • Mail - SMTP(S), POP3(S) and IMAP(S)
  • Native commands or shell scripts
  • TCP
  • Java Objects

2. Cách cài đặt JMeter

JMeter có thể chạy trên tất cả hệ điều hành (Windows, MacOS,…) miễn là có cài đặt Java 8+. Mọi người search Google để biết cách cài đặt Java nha ^^. Còn JMeter thì chỉ cần download file nén về, giải nén và có thể sử dụng luôn. (JMeter version 5.4.1 có một số bug khi chạy trên Java 14+, không biết version 5.5 các bác đã fix chưa ><)

  • Bước 1: Truy cập link https://jmeter.apache.org/download_jmeter.cgi
  • Bước 2: Tại mục Binaries, download apache-jmeter-5.5.zip đối với Windows và apache-jmeter-5.5.tgz đối với MacOS và Linux. Nếu muốn chỉnh sửa hoặc phát triển thêm tính năng thì download tại mục Source nhé ^^ Screenshot_42.png
  • Bước 3: Giải nén Screenshot_43.png
  • Bước 4: Khởi chạy JMeter với GUI mode
    • Đối với Windows: Vào folder bin > Chạy file ApacheJMeter
    • Đối với MacOS: Mở terminal > Chạy lệnh cd <file path>/apache-jmeter-5.5/bin./jmeter

JMeter GUI trông sẽ như thế này nè ^^ Screenshot_45.png

3. JMeter elements

Test plan mô tả series of step mà JMeter sẽ thực hiện khi chạy test. Test plan cần tối thiểu một thread group và một hoặc nhiều samplers. Các elements của test plan gồm:

  • Thread Group
  • Samplers
  • Logic Controllers
  • Pre-Processor Elements
  • Post-Processor Elements
  • Assertions
  • Timers
  • Test Fragment
  • Configuration Element
  • Listeners Mỗi element có một chức năng khác nhau.

3.1. Thread group

Thread group là thành phần bắt buộc và là điểm bắt đầu trong test plan. Tất cả controller và sampler đều phải nằm trong thread group. Nó điều khiển số lượng thread mà JMeter sử dụng khi chạy test. Để tạo thread group, click chuột phải vào Test Plan > Chọn Add > Chọn Threads > Chọn Thread Group. Screen Shot 2022-12-07 at 20.48.33.png Có thể điều chỉnh các thông số sau:

  • Number of threads (users): Số lượng thread JMeter sử dụng khi chạy test. Mỗi thread sẽ thực thi 1 lượt các element trong thread group.
  • Rarm-up period (seconds): Thời gian khởi tạo các thread. Nếu number of threads = 5 và rarm-up = 5s thì mỗi thread sẽ được khoải tạo cách nhau 1s
  • Loop count: Số lần lặp. Screen Shot 2022-12-07 at 21.23.10.png Note: Rarm-up chỉ ảnh hưởng đến thời gian khởi tạo lần đầu tiên của thread. Sau đó, mỗi thread tự lặp theo loop count. (huhmm, kiểu chỉ chênh nhau về thời gian xuất phát, sau đó thì đường ai nấy chạy ý ^^).

3.2 Sampler

Sampler gửi request đến server và đợi response. Nó được thực thi theo thứ tự xuất hiện trong test plan. Để tạo sampler, click chuột phải vào Thread Group > Chọn Add > Chọn Sampler > Chọn loại sampler Screen Shot 2022-12-07 at 21.25.19.png Ví dụ về HTTP request: Với URL https://jmeter.apache.org/index.html > Điền data vào sampler như sau:

  • Name: Index (Có thể điền tuỳ ý)
  • Protocol: https
  • Server name or IP: jmeter.apache.org
  • Method: GET
  • Path: /index.htmlScreen Shot 2022-12-07 at 21.33.40.png

3.3 Listener

Listener cung cấp toàn bộ thông tin mà JMeter thu thập được trong quá trình chạy test. Để tạo listener, click chuột phải vào nơi muốn đặt > Chọn Add > Chọn Listener > Chọn loại listener Screen Shot 2022-12-07 at 21.38.10.png Ví dụ: View Results Tree sẽ hiển thị chi tiết sampler request và response dưới dạng HTML hoặc XML. Screen Shot 2022-12-07 at 21.41.20.png Listener có thể xuất file data dạng CSV hoặc XML. Tất cả listener đều lưu cùng 1 data/kết quả chạy test, chỉ khác nhau về cách hiển thị trên màn hình. Có thể đặt listener ở bất cứ đâu trong test plan. Nếu đặt listener trong thread group thì nó sẽ thu thập data của tất cả element trong thread group. Nếu đặt listener trong sampler thì nó chỉ thu thập data của sampler đó thôi.

3.4 Configuration element

Configuration element sẽ làm việc với các sampler. Nó không gửi request mà chỉ thêm hoặc chỉnh sửa request. Một configuration element chỉ có thể truy cập từ trong nhánh nơi mà đặt nó. Để tạo configuration element, click chuột phải vào nơi muốn đặt > Chọn Add > Chọn Config element > Chọn loại config element Screen Shot 2022-12-11 at 10.15.54.png Ví dụ về HTTP request default: Thông thường các sampler sẽ có cùng domain, vì vậy có thể đặt config domain ở 1 chỗ, nếu muốn thay đổi môi trường test thì chỉ cần thay đổi ở 1 chỗ thôi. Nếu config domain trong sampler để trống thì sẽ tự động lấy từ HTTP request default. Screen Shot 2022-12-11 at 10.25.27.png

3.5 Logic controller

Logic controller thay đổi thứ tự chạy test của JMeter. Ví dụ: Mặc định JMeter sẽ gửi request lần lượt theo thứ tự xuất hiện của Sampler. Nếu không muốn chạy theo thứ tự mặc định đó, mà muốn chạy random thì có thể sử dụng Random Order Controller. Để tạo Random Order Controller, click chuột phải vào thread group > Chọn Add > Chọn Logic controller > Chọn Random Order Controller. Screen Shot 2022-12-11 at 10.37.56.png Sau đó kéo thả các Sampler muốn chạy random vào trong Random Order Controller. Mỗi lần chạy test thì thứ tự gửi request sẽ là random. Screen Shot 2022-12-11 at 10.44.12.png

3.6 Timer

Mặc định, JMeter sẽ thực thi sampler theo thứ tự mà không dừng. Một timer element sẽ tạo ra một khoảng thời gian chờ trước mỗi sampler. Nếu có nhiều timer element trong 1 thread group thì sẽ cộng dồn. Để thêm timer, click chuột phải vào nơi muốn đặt > Chọn Add > Chọn Timer > Chọn loại timer Screen Shot 2022-12-11 at 10.52.38.png Ví dụ về Constant Timer: Nếu đặt constant timer trong thread group với thread delay = 3000ms thì cứ sau mỗi 3s sẽ thực thi 1 sampler theo thứ tự. Screen Shot 2022-12-11 at 11.01.04.png Nếu chỉ muốn delay 1 sampler thì đặt constant timer trong sampler đó.

3.7 Assertions

Assertions dùng để verify giữa kết quả thực tế và kết quả mong muốn. Assertions tác động lên tất cả sampler trong phạm vi, nếu chỉ muốn verify 1 sampler thì đặt assertion trong sampler đó.

3.8 Pre-Processor, Post-Processor Elements

Pre-Processor định nghĩa những hành động thực hiện trước khi thực thi sampler. Pre-Processor thường dùng để điều chỉnh thiết lập, cập nhật biến trước khi thực thi Sampler. Ngược lại Post-Processor định nghĩa những hành động thực hiện sau khi thực thi sampler. Post-Processor thường dùng để xử lý response mà server trả về. Note: Assertion, Pre-Processor và Post-Processer khá rộng nên mình sẽ viết chi tiết trong các bài khác nhé. Thứ tự ưu tiên thực thi trong 1 test plan:

  • Configuration Element
  • Pre-Processor Elements
  • Timers
  • Samplers
  • Post-Processor Elements
  • Assertions
  • Listeners

Tags

JmeterPerformance testing

Share

phuong.nguyen

phuong.nguyen

Tester

Expertise

Related Posts

[Performance testing với Jmeter - Phần 1] Performance testing overview
Testing
[Performance testing với Jmeter - Phần 1] Performance testing overview
October 22, 2022
4 min
© 2023, All Rights Reserved.
Powered By

Quick Links

HomeOur Team

Social Media