Load testing với Jmeter
Jmeter là gì? Phần mềm kiểm thử tự động mã nguồn mở Jmeter 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. 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 ...
Jmeter là gì?
- Phần mềm kiểm thử tự động mã nguồn mở Jmeter
- 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.
- 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 sites 'web 1.0' web 2.0
Đặc trưng của JMeter: là 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.
Các thông số quan trọng trong JMeter: Thread Groups, Listeners, Assertiong, Sample Generating Controller,, Logic Controllers,... Samples: Những phần tử này gửi các yêu cầu tới server. Có những samplers cho những kiểu request HTTP/HTTPS, FTP, SOAP, JDBC, LDAP, MongoDB, TCP,... Listeners Timers: Tập các kết quả của việc run test, cung cấp cho người dùng các công cụ hiển thị một cách trực quan, dễ hiểu Logic Controllers: Nếu những request được định nghĩa trong các test plan của bạn được thực thi dựa phụ thuộc vào 1 vài logic, lúc đó sẽ cần đến Logic Controllers. Thích hợp với cấu trúc if-then-else và loop trong Java hoặc ngôn ngữ khác. Assertions: Cho phép bạn kiểm tra nếu responses bạn lấy dữ liệu mong đợi hay nhận trong phạm vi thời gian đã định sẵn
- Load testing là một kiểu test hiệu suất mà mục tiêu là kiểm tra workload để tính toán và đánh giá hiệu suất và khả năng của mục đích test để tiếp tục thực hiện các chức năng thích hợp với các workload khác
- Mục đích của load testing là xác định và đảm bảo các chức năng hệ thống thích hợp với nhiều nhất các workload
- Ngoài ra load testing còn đánh giá các tính năng hiệu suất như thời gian phản hồi, tỉ lệ giao dịch và các vấn đề liên quan đến thời gian khác
Tạo 1 Test Plan để thực hiện test web site
Giả lập nhiều user cùng truy cập vào website đồng thời. Click chuột phải vào Test Plan –> Add –> Threads(users) –> Thread Group Để xác thực về số lượng user được giả lập bởi người test và số lần test plan được lặp lại Một số thuộc tính có thể thiết lập như bên dưới: – Name: Có thể tạo bất cứ tên nào cho thread group – Number of Threads: Có thể nhập nhiều threads để giả lập. Mỗi user độc lập được đại diện bởi mỗi thread vì vậy muốn giả lập với 100 user đồng thời thì cần nhập giá trị 100 cho thuộc tính này. – Ramp Up Period: Cho biết thời gian đưa ra bởi jmeter để tạo tất cả những thread. Nếu thiết lập 10s tại cho 100 thread thì Jmeter sẽ thực hiện trong 10s để tạo ra 100 thread. Nếu thiết lập giá trị 0 thì tất cả threads có thể được tạo 1 lần. – Forever: Nếu chọn option này thì Jmeter sẽ quyết định thời gian gửi request – Loop Count: Chọn1 thì các thread được tạo sẽ thực hiện 1 lần ( thay 1 bằng n thì số các thread sẽ lặp n lần).Với đều kiện là Forever check box được uncheck
Tạo request đến Server
Click chuột phải vàoThread Group, chọn Add -> Sampler -> HTTP Request
Các thông số trong form HTTP Request:
- Name: Đặt tên Request
- Server name of IP: Điền vào Domain hoặc IP trang web mà mình đang cần test
- Port Number: Chỉ ra port của web, nếu để trống thì sẽ default là 80
- Protocol: Giao thức được sử dụng là HTTP hoặc HTTPs
- Method: Phương thức để các HTTP request. có các method: GET, POST, HEAD, PUSH..
- Path: Đường dẫn các nguồn để xử lý các request
- Parameter: Biểu diễn danh sách các tham số để gửi cùng request. (có thể thêm hoặc xoá thông số này)
- Send files with the request: Giả lập việc upload file
- Retrieve All embedded Resources: Dùng để download các trang java applet được nhúng trên trang web đang test. Ngoài ra, còn có các thông số cấu hình cho Timeout, respon,….
Xem kết quả của kịch bản test
– Xem kết quả tổng hợp của tất cả các threadClick chuột phải vào Thread group, chọn Add -> Listener -> Summary Report
Xem kết quả của từng Request trong kịch bản Chuột phải Thread Group –> Add –> Listener –> View Results Tree
Xem kết quả dưới dạng đồ thị Chuột phải Thread Group –> Add –> Listener –> Graph Results
Chạy chương trình test
Sau khi thiết lập các request theo kịch bản, trên menu chọn Run–>Start. Click vào View Results Tree , Summary Report hoặc Graph Results để xem kết quả. – View Results Tree hiển thị thông tin các request và kết quả của chúng. Các request xanh là request không lỗi, các request đỏ bị lỗi.
Click vào mỗi request tương ứng bên cạnh sẽ có 3 phần thông tin về request đó : sample result, request, response data.
Summary Report hiển thị kết quả. Bảng thống kê kết quả: Label : tên request Sample : số request Average : thời gian trung bình xử lý các requestMin : thời gian nhỏ nhất xử lý requestMax : thời gian lớn nhất xử lý requestStd. Dev: độ lệch chuẩn của thời gian xử lý các requestError : phần trăm bị lỗi của các request( lỗi kết nối hoặc lỗi cho đầu ra không mong muốn) Thoughput : số request/s của serveravg. bytes : số bytes trung bình của responseKB/sec = (avg.bytes*thoughput)/1024
Graph Results hiển thị kết quả. Hình dưới đây thể hiện kết quả test của kịch bản 100 users cùng truy cập vào youtube.com cùng lúc Những thông số của graph này được biểu thị bằng những màu sắc khác nhau :
- Đen : Tổng số samples hiện tại đang gửi
- Đỏ : Độ lệch chuẩn hiện tại
- Xanh lá : tỷ số throughput hiện tại đại diện cho số request là server đã xử lý
- Xanh dương : Trung bình samples hiện tại
Để phân tích kết quả của bất cứ kịch bản test nào, chúng ta cũng nên tập trung vào 2 chỉ số : Throughput Deviation (độ lệch chuẩn)
Throughput chính là chỉ số quan trọng nhất khi chúng ta cần phân tích. Chỉ số này đại diện cho khả năng xử lý của server dưới một lượng truy cập hoặc 1 lượng tải lớn. Chỉ số này càng cao thì performance của server càng tốt và ngược lại. Trong thử nghiệm này thì, throughput của là 58.229/minute. Nó có nghĩa là Youtube có thể xử lý được 58.229 request trên phút, 1 con số khá ấn tượng. Điều này cũng đồng nghĩa là server của youtube chịu tải rất tốt.
Deviation được thể hiện bằng màu đỏ con số này dùng để so sánh sai số so với trung bình. Con số này càng nhỏ, thì performance của server càng tốt.