Sử dụng Jmeter để test Performance testing cho Website
Đối với một trang Web hay ứng dụng bất kỳ, bên cạnh việc đảm bảo các chức năng trong đó phải hoạt động đúng, không có lỗi thì một số vấn đề khác đặc ra khi bạn muốn release trang web đó cho người dùng như sau: Liệu ứng dụng có đáp ứng đủ cho người dùng 1 cách nhanh chóng? Liệu việc xử lý của ...
Đối với một trang Web hay ứng dụng bất kỳ, bên cạnh việc đảm bảo các chức năng trong đó phải hoạt động đúng, không có lỗi thì một số vấn đề khác đặc ra khi bạn muốn release trang web đó cho người dùng như sau:
- Liệu ứng dụng có đáp ứng đủ cho người dùng 1 cách nhanh chóng?
- Liệu việc xử lý của ứng dụng có đáp ứng được yêu cầu người dùng, khả năng chịu tải và hơn thế nữa?
- Liệu ứng dụng có xử lý được số lượng giao dịch theo yêu cầu kinh doanh?
- Liệu ứng dụng có ổn định như mong muốn của người dùng về khả năng chịu tải không?
Nếu như những câu hỏi này không được trả lời, issue không được giải quyết sớm trên môi trường kiểm thử. Một khi đã release ra thị trường mà không đáp ứng được nhu cầu của người sử dụng, lúc đó việc kiểm thử và khắc phục càng khó khăn hơn. Do khá nhiều lý do khác biệt mà Performance testing không được thực hiện trên live product (ảnh hưởng đến end user, có thể gây ra issue cho live product,…). Thay vì đó việc Performance Testing được thực hiện trên môi trường beta. Kiểm tra tự động hiệu năng phần mềm làm rõ ràng những rủi ro của việc triển khai phần mềm, ngăn ngừa hệ thống downtime và sẵn sàng trước các vấn đề gặp phải.
Các yếu tố được kiểm thử bởi kiểm thử tải bao gồm:
- Thời gian đáp ứng
- Tỷ lệ lỗi
- Lưu lượng dữ liệu
- Số yêu cầu trên 1 giây
- Số người dùng đồng thời
- Tài nguyên máy
Jmeter được xây dựng và phát triển bởi Stefano Mazzocchi để kiểm thử hiệu năng FTP Server, máy chủ CSDL, Java servlet và các đối tượng.
Phạm vi ứng dụng của Jmeter:
- Nổi trội hơn JMeter là công cụ LoadRuner nhưng bị hạn chế LoadRuner chỉ sử dụng được trên Windows, có phí và chỉ hỗ trợ giao thứ nền HTTP
- JMeter thì nổi trội hơn do hỗ trợ nhiều giao thức và sử dụng trên nhiều môi trường khác nhau: Web - HTTP, HTTPS, SOAP, Database - JDBC, LDAP, JMS, Mail - POP3,…
Đặc trưng của JMeter:
Sử dụng để kiểm thử hiệu suất cả về tài nguyên tĩnh và tài nguyên động như các tập tin tĩnh, Java Services, CGI script, đối tượng của ngôn ngữ Java, CSDL, FTP Server,....JMeter cung cấp 1 giao diện người dùng thân thiện dễ sử dụng.
- Xác định tiêu chí thực hiện kiểm thử tải
- Xác định kịch bản chính
- Xác định chuẩn đo
- Thiết kế các thử nghiệm riêng
- Chạy thử nghiệm
- Phân tích kết quả: Sau khi thực hiện kiểm thử ta nắm bắt dữ liệu từ kết quả và thực hiện so sánh nó với dữ liệu mong muốn đặt ra trong các trường hợp kiểm thử. Ta tiến hành phân tích đánh giá dữ liệu thu được với dữ liệu của kết quả mong muốn, đưa ra các dự đoán về các nút thắt cổ chai, các giá trị ngưỡng tiềm tàng. Thu thập năm bắt số liệu bổ sung cho phần thử nghiệm tiếp theo nếu có.
Sau đây sẽ là chi tiết của từng bước với việc test cũ thể trên trang kenh14.vn
1. Xác định tiêu chí thực hiện kiểm thử tải
Trong trường hợp ví dụ này mình sẽ kiểm tra:
- Thời gian đáp ứng
- Tài nguyên hệ thống (CPU)
2. Xác định kịch bản chính
Sẽ thực hiện test độ chịu tải của Kenh14 theo các thông số dưới đây: Cùng lúc có 10 user access vào web, và kiểm tra độ chịu tải trong 10 phút liên tục. Số lượng user access vào từng trang cụ thể như sau:
- Trang TOP: 3
- Du lịch: 2
- Học đường: 2
- Xã hội: 2
- Chi tiết bài viết: 1
Số liệu người truy cập vào trang có thể được thống kê qua một số công cụ theo dõi và phân tích website như: Google Analytics, SEOmoz’s Page Strength Tool, FeedBurner...
3. Xác định chuẩn đo
- Thời gian đáp ứng: Nếu vượt quá 10000 : FAILED
- Tỉ lệ sử dụng CPU của WEB Server và DB server: Nếu thời gian chờ In/Out (I/O) của CPU tiếp tục trên 10s : FAILED
4. Thiết kế các thử nghiệm riêng
Các bước thực hiện cài đặt chi tiết Jmeter như sau
Add Thread Group
Click chuột phải vào Test Plan -> Thread Group -> Threads (Users) -> Thread Group Trên cửa sổ Thread Group thực hiện nhập Thread properties như sau:
- Trang TOP: 3
- Number of Threads: 3 (Số lượng người sử dụng truy cập vào trang TOP)
- Loop Count: Forever (Vì Jmeter không cho chọn thời gian nên mình sẽ chọn Forever và sau 10' sẽ tự STOP)
- Ramp-Up Period: 1 (Ramp-Up sẽ nói trước với Jmeter sẽ mất bao nhiêu thời gian trì hoãn trước khi bắt đầu một người sử dụng tiếp theo.)
Add phần tử Jmeter
- HTTP request default: Add -> Config Element -> HTTP Request Defaults.
- Trên cửa sổ HTTP Request Defaults chúng ta nhập tên Website như dưới đây: kenh14.vn
- HTTP request default: Add -> Sampler -> HTTP Request. Ở đây là trang HOME nên mình nhập là "/". còn nếu trang du lịch sẽ chọn "/doi-song/du-lich.chn"
Add Grap Result
Chuột phải vào Test plan, Add -> Listener -> Summary Report
Làm lại tất cả steps trên cho những Thread Group sau: 2. Du lịch: 2 3. Học đường: 2 4. Xã hội: 2 5. Chi tiết bài viết: 1
5. Chạy thử nghiệm
Click button "Start" hoặc Ctrl + R để chạy. Chờ 10' và STOP để lấy kết quả
6. Phân tích kết quả:
Sau khi thực hiện kiểm thử ta nắm bắt dữ liệu từ kết quả và thực hiện so sánh nó với dữ liệu mong muốn đặt ra trong các trường hợp kiểm thử. Ta tiến hành phân tích đánh giá dữ liệu thu được với dữ liệu của kết quả mong muốn, đưa ra các dự đoán về các nút thắt cổ chai, các giá trị ngưỡng tiềm tàng. Thu thập năm bắt số liệu bổ sung cho phần thử nghiệm tiếp theo nếu có. Kết quả:
- Thời gian đáp ứng: Min 56, Max 1349 ==> PASSED
- Tỉ lệ sử dụng CPU của WEB Server và DB server: Phần này trong thời gian chạy có thể dùng 1 số app xem thông số của Server để do và so sánh
Đây chỉ là một ví dụ cho trường hợp cụ thể, thùy theo yêu cầu test sẽ có config khác nhau. Hy vọng bài viết có ích cho các ban mới làm quen với Jmeter.