Trước khi chạy phải có tiêu chí đạt bằng số, nếu không thì kết quả chỉ là một đống biểu đồ. Tiêu chí gồm ba phần: mức tải (bao nhiêu người dùng đồng thời hoặc bao nhiêu request/giây), ngưỡng độ trễ, ngưỡng tỉ lệ lỗi.
Chỉ số cần đọc trong k6:
- http_req_duration theo percentile p95/p99, không phải trung bình. Trung bình che mất phần đuôi: p95 3 giây vẫn có thể cho ra trung bình 300ms.
- http_req_failed — tỉ lệ request lỗi. Độ trễ đẹp mà 20% request lỗi thì kết quả vô nghĩa.
- Throughput thực tế đạt được (số request hoàn tất mỗi giây) so với mức mình định bắn — nếu thấp hơn nhiều thì hệ thống đã bão hoà.
k6 diễn đạt tiêu chí bằng thresholds, và test tự fail khi vượt ngưỡng:
export const options = {
vus: 50,
duration: '2m',
thresholds: {
http_req_duration: ['p(95)<400'],
http_req_failed: ['rate<0.01'],
},
}Mấy điểm hay bị hỏi thêm:
- Đo cả phía server, không chỉ phía client: CPU, số connection DB đang dùng, thời gian query chậm. Kết quả cần chỉ ra nút thắt ở đâu, chứ không chỉ nói "chậm".
- Warm-up: bỏ qua giai đoạn đầu (JIT, cache lạnh, pool chưa mở đủ) khỏi phần đánh giá.
- Đừng load test trên môi trường khác cấu hình production rồi suy ra kết luận; và tuyệt đối không bắn tải vào API bên thứ ba.