Spike Test là một kỹ thuật kiểm thử hiệu năng giúp đánh giá khả năng phản ứng và phục hồi của hệ thống khi đối mặt với sự gia tăng đột ngột về lưu lượng truy cập. Công cụ K6 nổi bật nhờ tính đơn giản, linh hoạt và mạnh mẽ trong việc tạo kịch bản kiểm thử, đặc biệt phù hợp để thực hiện Spike Test.
Trong bài viết này, chúng ta sẽ cùng tìm hiểu:
- Spike Test là gì và tại sao cần thực hiện?
- Hướng dẫn chi tiết cách thực hiện Spike Test với K6.
- Cách phân tích kết quả để đánh giá khả năng chịu tải của hệ thống.
Spike test là gì?
Spike Test là phương pháp kiểm thử hiệu năng nhằm đánh giá hệ thống khi có sự gia tăng đột ngột về số lượng người dùng truy cập (tăng tải đột biến). Mục tiêu của Spike Test là:
- Xác định khả năng chịu tải của hệ thống.
- Đo lường thời gian phản hồi và các chỉ số hiệu năng quan trọng.
- Đánh giá khả năng phục hồi của hệ thống sau khi tải giảm về mức bình thường.
K6 là công cụ tuyệt vời để thực hiện Spike Test nhờ khả năng mô phỏng người dùng ảo (Virtual Users – VUs) và cấu hình kịch bản tải chi tiết.
Hướng dẫn thực hiện Spike test với K6
1. Cài Đặt K6
Để bắt đầu, bạn cần cài đặt K6 trên hệ thống của mình:
- MacOS: Sử dụng Homebrew với lệnh
brew install k6
. - Windows: Cài đặt qua Chocolatey với lệnh
choco install k6
. - Linux: Tải từ trang chủ K6 hoặc cài đặt qua APT/YUM.
Sau khi cài đặt xong, xác minh bằng lệnh:
codek6 version
2. Tạo Kịch Bản Spike Test Với K6
Một kịch bản Spike Test sẽ bao gồm các giai đoạn tải đột biến và giảm tải về mức bình thường. Ví dụ kịch bản dưới đây mô phỏng các yêu cầu GET đến URL cụ thể:
File spike-test.js
:
import http from 'k6/http';
import { sleep } from 'k6';
export let options = {
stages: [
{ duration: '1m', target: 50 }, // Giai đoạn 1: Tăng dần lên 50 VUs
{ duration: '30s', target: 400 }, // Giai đoạn 2: Tăng đột biến lên 400 VUs
{ duration: '2m', target: 400 }, // Giai đoạn 3: Duy trì tải cao
{ duration: '30s', target: 50 }, // Giai đoạn 4: Giảm về 50 VUs
{ duration: '1m', target: 0 }, // Giai đoạn 5: Giảm về 0 VUs
],
};
export default function () {
http.get('http://test.k6.io'); // Gửi GET request đến URL cụ thể
sleep(1); // Nghỉ 1 giây giữa các yêu cầu
}
Giải thích:
stages
: Xác định các giai đoạn tải với số lượng VUs và thời gian cụ thể.http.get
: Gửi yêu cầu HTTP GET đến server.sleep
: Mô phỏng thời gian chờ giữa các yêu cầu như người dùng thực tế.
3. Chạy Kịch Bản Kiểm Thử
Chạy kịch bản bằng lệnh:
k6 run spike-test.js
Kết quả kiểm thử sẽ được hiển thị trực tiếp trên terminal.
Phân Tích Kết Quả Spike Test Với K6
Kết quả kiểm thử sẽ bao gồm các chỉ số hiệu năng quan trọng như:
- Dữ liệu nhận và gửi
- Dữ liệu nhận được: Tổng dung lượng dữ liệu tải về.
- Dữ liệu gửi đi: Tổng dung lượng yêu cầu gửi đến server.
- Thời gian bị chặn yêu cầu (
http_req_blocked
)- Cho biết thời gian yêu cầu bị chặn trước khi kết nối.
- Thời gian phản hồi yêu cầu (
http_req_duration
)- Thời gian từ khi gửi yêu cầu đến khi nhận phản hồi.
- p(90) và p(95): Phản ánh thời gian phản hồi của 90% và 95% yêu cầu.
- Tỷ lệ thất bại yêu cầu (
http_req_failed
)- Cho thấy tỷ lệ yêu cầu thất bại trong quá trình test.
- Tổng số yêu cầu (
http_reqs
)- Tổng số lượng yêu cầu được gửi đi trong quá trình test.
Ví Dụ Phân Tích Kết Quả
- Thời gian phản hồi trung bình: 293ms.
- 90th percentile: 319ms.
- Tỷ lệ yêu cầu thất bại: 0%.
Kết luận: Hệ thống duy trì ổn định khi có sự gia tăng đột biến về số lượng người dùng, với thời gian phản hồi thấp và không có lỗi xảy ra.
Tổng Kết
Spike Test với K6 là một phương pháp hiệu quả để đánh giá khả năng chịu tải của hệ thống khi có sự gia tăng đột biến về lưu lượng truy cập. Kịch bản đơn giản, dễ cấu hình giúp bạn nhanh chóng kiểm tra và phân tích các chỉ số quan trọng.
Kết quả Spike Test sẽ cung cấp cái nhìn toàn diện về sức mạnh và khả năng phục hồi của hệ thống, từ đó giúp bạn đưa ra các điều chỉnh kịp thời để tối ưu hiệu năng.