Lượt đọc: 1204
Bài viết này mình sẽ hướng dẫn sử dụng JMeter test Websocket. Mục đích để kiểm tra hiệu năng của server khi có lượng lớn người truy cập vào chat group và thực hiện chat trong cùng một khoảng thời gian.
NỘI DUNG CHÍNH
Test plan cần thực hiện
Chat group và thông tin kết nối websocket để thực hiện demo tại link: https://www.websocket.org/echo.html
Test plan đặt ra:
- Thực hiện kết nối chat: wss://echo.websocket.org
- Thực hiện chat
- Số lượng request: 100
- Thời gian: 10s
- Report: Summary report, Tree report

Các bước tạo plan JMeter test Websocket
1. Add, Config Thread Group
Click phải vào Test Plan > Chọn Add > Chọn Threads (Users) > Chọn Thread Group

Thiết lập Thread Properties:
- Number of Threads (users): Số lượng users giả lập được gửi vào trang web
- Ramp-Up Period (in seconds): Thời gian gửi lượng users vào trang web
- Loop Count: Số lần lặp
- Forever: Check để lặp không giới hạn, uncheck để lặp bằng số Loop Count

2. Add Websocket Plugin
Chọn Options > Chọn Plugins Manager > Chọn Available Plugins > Search websocket, cài đặt WebSocket Sampler by Maciej Zaleski và WebSocket Samplers by Peter Doornbosch

3. Add, Config Websocket Sampler
3.1. WebSocket Open Connection
Đầu tiên để join vào chat group cần thực hiện open connection:
Click phải vào Thread Group > Chọn Add > Chọn Sampler > Chọn WebSocket Open Connection

Config WebSocket Open Connection:
- Server URL: chọn wss
- Server name or IP: echo.websocket.org
- Port: 443
- Path: ?encoding=text

Cách lấy các thông số trên từ trang web:
Vào trang demo https://www.websocket.org/echo.html > Nhấn F12 (Ctr + Shift + I) để chọn Inspect > Chọn Network > Chọn XHR > Thực hiện connect và chat để xem kết quả trả về


3.2. WebSocket request-response Sampler
Thêm WebSocket request-response Sampler để thực hiện gửi chat message:
Click phải vào Thread Group > Chọn Add > Chọn Sampler > Chọn WebSocket request-response Sampler

Config WebSocket request-response Sampler:
- Connection: chọn use existing connection
- Request data: nhập chat message this is a text message !

3.3. WebSocket Close
Thêm WebSocket Close để tắt websocket đang mở:
Click phải vào Thread Group > Chọn Add > Chọn Sampler > Chọn WebSocket Close

* Thêm vào 1 WebSocket request-response Sampler nữa phía sau WebSocket Close để test kết quả trước và sau khi tắt websocket.
4. Add Listener
Thêm report thống kê để theo dõi kết quả test.
Click phải vào Thread Group > Chọn Add > Chọn Listener > Chọn Summary Report / View Results Tree

5. Start Test
Nhấn vào icon start / start no pause để bắt đầu chạy test



6. Test Report
Sau khi start test thì bạn đã có thể xem được kết quả test đang chạy cho đến khi kết thúc.
Kết quả trả về cho ta thấy:
Request Chat (after Close) có tỉ lệ lỗi là 100% do không thể thực hiện chat sau khi đã Close Connection websocket.
Response data là this is a text message ! giống với kết quả trả về ở Network: send & receive message (hình bên dưới).



Giải thích các thông số:
#Samples: Tổng số lần run của request. #Samples = Number of Threads (users) * Loop Count |
Average: Thời gian phản hồi trung bình (Response Time) của request, tính cho đến lần gửi cuối cùng |
Min: Respone Time thấp nhất của request đã gửi |
Max: Respone Time cao nhất của request đã gửi |
Std Dev.: Độ lệch chuẩn đo lường sự thay đổi của 1 tập hợp data, dựa trên thống kê. |
Error %: % số lượng request bị lỗi |
Throughput: Throughput = (Tổng số lượng requests) / (Tổng thời gian) * (Đơn vị chuyển đổi). Lượng requests được hệ thống (server) xử lý trong 1 đơn vị thời gian, có thể là giây, phút, hoặc giờ. |
Received KB/sec: Dung lượng nhận được từ server |
Sent KB/sec: Dung lượng gửi lên server |
Avg. Bytes: Dung lượng trung bình của 1 lần response tính bằng bytes |
7. Save Report
Sau khi chạy test plan xong bạn có thể lưu lại kết quả test về file .csv
Tại Summary Report nhấn vào Save Table Data > Nhập File Name > Nhấn Save

Lời kết
Như vậy qua bài viết bạn đã có thể tạo hoàn chỉnh test plan về JMeter test rồi.
Hẹn gặp lại các bạn trong những bài viết tiếp theo trong JMeter Series nhé.
Having read this I thought it was very informative. I appreciate you finding the time and energy to put this short article together. I once again find myself personally spending a lot of time both reading and commenting. But so what, it was still worthwhile!