Sử dụng JMeter cho performance testing
Performance Testing rất quan trọng trong việc xác định ứng dụng web được kiểm thử sẽ đáp ứng các yêu cầu tải cao. Performance Testing có thể được sử dụng để phân tích hiệu suất tổng thể của máy chủ dưới tải nặng.
Sử dụng JMeter cho Performance & Load Testing
Sử dụng Công cụ kiểm thử Apache JMeter mang lại các lợi ích sau trong Performance Testing:
- JMeter có thể được sử dụng để kiểm thử hiệu năng của tài nguyên tĩnh như JavaScript và HTML, cũng như các tài nguyên động như JSP, Servlets và AJAX.
- JMeter có thể kiểm tra số lượng người dùng đồng thời tối đa mà trang web có thể xử lý.
- JMeter cung cấp các phân tích đồ họa về báo cáo hiệu suất.
Kiểm thử hiệu suất JMeter bao gồm:
- Load Testing: Mô hình hóa việc sử dụng dự kiến bằng cách mô phỏng đồng thời nhiều người dùng truy cập các dịch vụ Web.
- Stress Testing: Mỗi máy chủ web có khả năng tải tối đa. Khi tải vượt quá giới hạn, máy chủ web bắt đầu phản hồi chậm và tạo ra lỗi. Mục đích của Stress Testing là tìm tải tối đa mà máy chủ web có thể xử lý.
Hình dưới đây cho thấy cách Load Testing mô phỏng tải nặng:
Bài viết này được đăng tại [free tuts .net]
Tạo một kế hoạch kiểm thử Performance trong JMeter
Trong bài viết này, chúng ta thực hiện phân tích hiệu suất của Google.com cho 1000 người dùng.
Trước khi kiểm thử hiệu năng của ứng dụng web, chúng ta nên xác định:
- Normal Load: Số người dùng trung bình truy cập trang web của bạn
- Heavy Load: Số lượng người dùng tối đa truy cập trang web của bạn
- Mục tiêu của bạn trong lần kiểm thử này là gì?
Dưới đây là các bước thực hiện ví dụ thực tế này:
Bước 1: Thêm Thread Group
- Khởi động JMeter
- Chọn Test Plan cần thực hiện
- Thêm Thread Group
Nhấp chuột phải vào "Test Plan" và thêm một thread group mới: Add -> Threads (Users) -> Thread Group
Trong bảng điều khiển Thread Group, nhập Thread Properties như sau:
- Number of Threads: 100 (Số lượng người dùng kết nối với trang web mục tiêu: 100)
- Loop Count: 10 (Số thời gian để thực hiện kiểm thử)
- Ramp-Up Period: 100
Thread Count và Loop Counts là khác nhau.
Ramp-Up Period cho JMeter biết phải trì hoãn bao lâu trước khi bắt đầu user tiếp theo. Ví dụ: nếu có 100 users, Ramp-Up period là 100 giây, thì độ trễ giữa những người dùng bắt đầu sẽ là 1 giây (100 giây / 100 người dùng).
Bước 2: Thêm JMeter elements
- HTTP request Default
Element này có thể được thêm bằng cách nhấp chuột phải vào Thread Group và chọn: Add -> Config Element -> HTTP Request Defaults.
Trong bảng điều khiển HTTP Request Defaults, nhập tên Trang web được kiểm thử (http://www.google.com)
- HTTP Request
Nhấp chuột phải vào Thread Group và chọn: Add -> Sampler -> HTTP Request.
Trong Bảng điều khiển HTTP Request, trường Path cho biết URL request nào bạn muốn gửi đến máy chủ Google.
Ví dụ: nếu bạn nhập "calendar" trong trường Path . JMeter sẽ tạo yêu cầu URL http://www.google.com/calendar đến máy chủ Google.
Nếu bạn giữ trường Path trống, JMeter sẽ tạo yêu cầu URL http://www.google.com đến máy chủ Google.
Trong trường hợp này, bạn giữ trường Path trống để làm cho JMeter tạo yêu cầu URL http://www.google.com đến máy chủ của Google.
Bước 3: Thêm Graph result
JMeter có thể hiển thị kết quả kiểm thử ở định dạng đồ thị.
Nhấp chuột phải vào Test Plan, Add -> Listener -> Graph Results.
Bước 4: Chạy kiểm thử và nhận kết quả kiểm thử
Nhấn nút Run (Ctrl + R) trên Thanh công cụ để bắt đầu quá trình kiểm thử phần mềm. Bạn sẽ thấy màn hình kết quả kiểm thử trên Biểu đồ trong thời gian thực.
Hình dưới đây trình bày biểu đồ của một test plan mô phỏng 100 users đã truy cập trên trang web www.google.com.
Ở dưới cùng của hình ảnh, có các số liệu thống kê sau, được thể hiện bằng màu sắc:
- Màu Đen: Tổng số samples hiện tại được gửi.
- Màu xanh dương: Trung bình hiện tại của tất cả các samples được gửi.
- Màu đỏ: Độ lệch chuẩn hiện tại.
- Màu xanh lá cây: Tốc độ Thông lượng đại diện cho số lượng yêu cầu mỗi phút mà máy chủ xử lý.
Hãy phân tích hiệu suất của máy chủ Google trong hình dưới đây:
Để phân tích hiệu suất của máy chủ web đang kiểm thử, bạn nên tập trung vào 2 tham số:
- Thông lượng (Throughput)
- Độ lệch (Deviation)
Thông lượng là thông số quan trọng nhất. Nó đại diện cho khả năng của máy chủ để xử lý tải nặng. Thông lượng càng cao thì hiệu suất máy chủ càng tốt.
Trong trường hợp này, thông lượng của máy chủ Google là 1,491.193 / phút. Điều đó có nghĩa là máy chủ Google có thể xử lý 1,491.193 yêu cầu mỗi phút. Giá trị này khá cao nên chúng tôi có thể kết luận rằng máy chủ Google có hiệu suất tốt.
Độ lệch được thể hiện bằng màu đỏ - nó cho biết độ lệch so với mức trung bình. Độ lệch càng nhỏ càng tốt.
Hãy so sánh hiệu suất của máy chủ Google với các máy chủ web khác. Đây là kết quả kiểm tra hiệu suất của trang web http://www.yahoo.com/ (Bạn có thể chọn các trang web khác).
Thông lượng của một trang web được kiểm tra http://www.yahoo.com là 867.326 / phút, có nghĩa là máy chủ này xử lý 867.326 yêu cầu mỗi phút, thấp hơn Google.
Độ lệch là 2689, cao hơn nhiều so với Google (577). Vì vậy, có thể xác định hiệu suất của trang web này kém hơn máy chủ Google.
LƯU Ý: Các giá trị trên phụ thuộc vào một số yếu tố như tải máy chủ của Google, tốc độ internet, hiệu năng CPU,... Do đó, rất khó để nhận được kết quả tương tự như trên.
Xử lý sự cố:
Nếu bạn gặp vấn đề trong khi chạy kịch bản trên, hãy làm như sau:
- Kiểm tra xem bạn đang kết nối với internet thông qua proxy hay không. Nếu có, loại bỏ proxy.
- Khởi động Jmeter
- Mở file PerformanceTestPlan.jmx trong Jmeter
- Nhấp đúp chuột vào Thread Group-> Graph Result
- Chạy kiểm thử