Currently Empty: 0.00₫
Performance Test
Spike Test trong kiểm thử hiệu năng

Vì sao Spike Test là điều bạn không nên bỏ qua?
Nếu bạn là “Gai Con”, từng canh mua vé concert “Anh Trai Vượt Ngàn Chông Gai”, mở bán flash sale, hay đơn giản là đăng ký tín chỉ online, chắc hẳn đã trải qua cảnh tượng:
Trang quay vòng vô tận, không thể đăng nhập, và… “F5 đến tuyệt vọng”.
Vấn đề nằm ở chỗ: Hệ thống không được chuẩn bị để xử lý đột biến lưu lượng, và nguyên nhân sâu xa là: thiếu kiểm thử Spike Test – một kỹ thuật kiểm thử hiệu năng ít người thực hiện đúng cách, nhưng lại cực kỳ cần thiết trong môi trường sản phẩm online hiện nay.
Spike Test là gì?
Spike Test là một loại kiểm thử tải tập trung vào mô phỏng sự tăng đột biến của lưu lượng truy cập (user request) trong thời gian rất ngắn – và thường cũng giảm rất nhanh ngay sau đó.
Nó giúp kiểm tra xem hệ thống có:
- Chịu được áp lực truy cập đột ngột không?
- Phục hồi ra sao nếu bị quá tải hoặc sập?
- Có xuất hiện bottleneck hoặc lỗi hệ thống không?
Khi nào cần thực hiện Spike Test?
Bạn nên ưu tiên Spike Test trong các tình huống:
- Website/app có chiến dịch khuyến mãi giới hạn thời gian (Flash Sale, Campaign, Booking…)
- Dự đoán lưu lượng tăng đột biến từ các sự kiện như:
- Mở bán vé concert.
- Chiến dịch truyền thông.
- Sự kiện truyền hình trực tiếp.
- Mong muốn kiểm tra hệ thống sẵn sàng mở rộng theo nhu cầu (scalability readiness)
Cách thực hiện Spike Test bằng JMeter
- Công cụ cần dùng: Apache JMeter
- Plugin: Ultimate Thread Group (cài từ Plugin Manager) hoặc có thể download tại đây.
- Cấu hình mẫu trong Ultimate Thread Group:
- Start Thread Count: Số lượng VU (virtual user).
- Initial Delay (s): Delay trước khi bắt đầu khởi tạo.
- Startup Time (s): Thời gian để tạo toàn bộ số VU.
- Hold Load For (s): Thời gian duy trì tải.
- Shutdown Time (s): Thời gian thả tải (VU ngắt kết nối).
Line 1: Luôn luôn khởi đầu với số lượng người dùng ở mức tải thường.
Line 2: Bắt đầu tăng đột ngột số lượng người dùng trong thời gian ngắn (tăng 40 VUs).
Line 3, 4, 5.. : Thực hiện tương tự như line 3.
Kinh nghiệm thực chiến: Để mô phỏng đúng “tăng sốc – giảm đột ngột”, bạn nên để Startup Time < 30s, giữ Hold Time ngắn (30s – 3 phút), và thả tải cũng nhanh tương ứng.
Cách xác định số lượng tải Spike hợp lý
Có 3 cách thường dùng:
- Phân tích dữ liệu lịch sử: Sử dụng logs hệ thống, traffic metrics, dashboard cũ để tìm các đỉnh đột ngột. Áp dụng tăng trưởng dự báo để nhân hệ số đột biến.
- Tham khảo các chiến dịch tương tự: So sánh với các chiến dịch có hành vi người dùng tương tự trong thị trường.
- Tự giả lập ngưỡng Spike: Bắt đầu với 150% – 200% mức tải trung bình/đỉnh gần nhất, tuỳ vào năng lực hạ tầng → scale phù hợp.
Mục tiêu của Spike Test
- Đo thời gian phản hồi So sánh giữa trạng thái bình thường và khi spike xảy ra.
- Đánh giá tính bền vững Hệ thống giữ được bao lâu trước khi crash?
- Theo dõi lỗi HTTP Bao gồm 500, 502, 504… và xác định vị trí lỗi.
- Ghi nhận khả năng phục hồi Hệ thống có tự hồi phục sau spike không? Mất bao lâu?
- Xác định điểm nghẽn CPU, RAM, Disk, DB, network… bottleneck nằm ở đâu?
Kinh nghiệm thực chiến từ dự án lớn
- Dữ liệu thử nghiệm phải thực tế: Đừng dùng JSON mẫu hoặc dữ liệu giả đơn giản – phải mô phỏng gần đúng hành vi user thật.
- Giám sát nhiều tầng: Kết hợp JMeter + Grafana + Prometheus hoặc APM như New Relic để có cái nhìn full-stack (App → DB → Infra)
- Lập nhiều kịch bản spike khác nhau (nhưng phải dựa trên thực tế nhé):
- Ví dụ:
- Spike trong 30s
- Spike rồi giảm dần
- Spike liên tục 5 lần cách nhau 5 phút
- Ví dụ:
- Đừng test 1 lần duy nhất: Hiệu năng không phải đo bằng 1 cú bắn — phải lặp lại test và phân tích log, biểu đồ nhiều lần để có kết luận đáng tin cậy.
Kết luận
Spike Test là thứ bạn chỉ nhận ra tầm quan trọng khi… hệ thống sập!
Đừng đợi đến khi người dùng tức giận vì “web quay đều như chong chóng”, hãy chuẩn bị sẵn hệ thống của bạn cho kịch bản xấu nhất ngay từ hôm nay.