Performance Testing using Jmeter - Kiểm thử hiệu năng bằng Jmeter
Performance Testing - Kiểm thử hiệu năng Là việc xác định một hệ thống, một ứng dụng web có đáp ứng và ổn định với hàng loạt yêu cầu độ tải cao? Được sử dụng để phân tích hiệu suất máy chủ tổng thể dưới tải nặng. Jmeter là gì? Jmeter là công cụ để đo độ tải và performance của đối ...
Performance Testing - Kiểm thử hiệu năng
- Là việc xác định một hệ thống, một ứng dụng web có đáp ứng và ổn định với hàng loạt yêu cầu độ tải cao?
- Được sử dụng để phân tích hiệu suất máy chủ tổng thể dưới tải nặng.
Jmeter là gì?
- Jmeter là công cụ để đo độ tải và performance của đối tượng, có thể sử dụng để test performance trên cả nguồn tĩnh và nguồn động, có thể kiểm tra độ tải và hiệu năng trên nhiều loại server khác nhau như: Web – HTTP, HTTPS, SOAP, Database via JDBC, LDAP, JMS, Mail – SMTP(S), POP3(S) và IMAP(S)…
- Jmeter là một phần mềm mã nguồn mở được viết bằng java. Cha đẻ của JMeter là Stefano Mazzocchi. Sau đó Apache đã thiết kế lại để cải tiến hơn giao diện đồ họa cho người dùng và khả năng kiểm thử hướng chức năng.
Đặc trưng của Jmeter
- Nguồn mở, miễn phí
- Giao diện đơn giản, trực quan dễ sử dụng
- Có thể kiểm thử nhiều kiểu server: Web - HTTP, HTTPS, SOAP, Database - JDBC, LDAP, JMS, Mail - POP3,…
- Một công cụ độc lập có thể chạy trên nhiều nền tảng hệ điều hành khác nhau, trên Linux chỉ cần chạy bằng một shell scrip, trên Windows thì chỉ cần chạy một file .bat
- Đa luồng, giúp xử lý tạo nhiều request cùng một khoảng thời gian, xử lý các dữ liệu thu được một cách hiệu quả.
- Đặc tính mở rộng, có rất nhiều plugin được chia trẻ rộng rãi và miễn phí
Cách thức hoạt động
Jmeter thực hiện giả lập một nhóm người dùng gửi các yêu cầu tới một máy chủ, nhận và xử lý các phản hồi từ máy chủ và cung cấp các kết quả báo cáo hiệu suất dưới dạng biểu đồ trực quan, dễ hiểu.
JMeter Performance Testing bao gồm:
- Load testing: Mô hình hóa dự kiến sử dụng bởi nhiều người dùng truy cập một dịch vụ website trong cùng thời điểm.
- Stress testing: Tất cả các web server có thể tải một dung lượng lớn, khi mà tải trọng vượt ra ngoài giới hạn thì web server bắt đầu phản hồi chậm và gây ra lỗi. Mục đích của stress testing là có thể tìm ra độ tải lớn mà web server có thể xử lý.
Tạo một Kế hoạch kiểm thử hiệu năng bằng Jmeter
Trước khi thực hiện kiểm thử hiệu năng cho bất kỳ 1 hệ thống nào, bạn cũng cần phải xác định được Mục tiêu của việc kiểm thử này là gì?
Để minh họa cho một kế hoạch kiểm thử hiệu năng, tôi thực hiện phân tích hiệu suất của máy chủ website Vietnamnet (http://vietnamnet.vn/): Máy chủ Vietnamnet có thể xử lý bao nhiêu yêu cầu mỗi phút?
1. Thêm Thread Group
-
Click chuột phải vào Test Plan >> Add >> Threads (Users) >> Thread Group
-
Trên cửa sổ Thread Group ta thực hiện nhập Thread properties như sau:
- Number of Threads - Số lượng người sử dụng truy cập vào website: 100
- Ramp-Up Period: 100
- Loop Count - Số thời gian thực hiện kiểm tra: 5
Ramp-Up cùng với Number of Threads sẽ chỉ ra được thời gian trì hoãn trước khi một người dùng tiếp theo bắt đầu sử dụng. Ví dụ: Nếu chúng ta có 100 người dùng và Ram-up 100 giây thì sự chậm trễ giữa những người dùng sẽ là 1 giây.
2. Thêm phần tử Jmeter
HTTP request default
- Click chuột phải vào Thread Group Vietnamnet >> Add >> Config Element >> HTTP Request Defaults
- Trên cửa sổ HTTP Request Defaults ta nhập tên Website như sau:
HTTP Request
-
Click chuột phải vào Thread Group Vietnamnet >> Add >> Sampler >> HTTP Request
-
Trên cửa sổ HTTP Request, trường Path sẽ chỉ ra URL request nào bạn muốn gửi tới máy chủ:
- Nếu để trống JMeter sẽ tạo URL request http://vietnamnet.vn/ tới máy chủ
- Nếu muốn tạo URL request http://vietnamnet.vn/vn/thoi-su/ thì nhập: vn/thoi-su/
3. Thêm Graph result
- Hiển thị kết quả dưới dạng biểu đồ
- Click chuột phải vào Thread Group Vietnamnet >> Add >> Listener >> Graph Results
4. Chạy và lấy kết quả
- Click button "Start" hoặc Ctrl + R để chạy:
- Kết quả test được hiển thị trên Graph với thời gian thực tế:
- Kết quả test:
5. Phân tích kết quả
Để phân tích Performance của Web server, ta tập trung vào hai thông số: Throughput và Deviation.
- Throughput là thông số quan trọng nhất, nó miêu tả cho khả năng server có thể xử lý được độ tải lớn.
Trong kết quả test thông số Throughput của máy chủ Vietnamnet là 300.939/phút. Tức là, máy chủ Vietnamnet có thể xử lý 300.939 yêu cầu trên mỗi phút.
- Deviation thể hiện sự sai lệch hiện tại so với mức trung bình, thông số này càng nhỏ thì càng tốt.
Deviation của Vietnamnet là 118.
Để có cơ sở nhận định về hiệu năng của máy chủ Vietnamnet, tôi đã thực hiện đo hiệu năng của máy chủ Dân trí (http://dantri.com.vn/) với Thread properties như trên, kết quả thu được:
Throughput: 299.464/phút Deviation: 90
Với throughput gần tương đương nhau, nhưng độ lệch của máy chủ Vietnamnet (118) lớn hơn so với Dantri (90), chúng ta có thể xác định rằng hiệu suất của Vietnamnet là thấp hơn Dantri.