CYBERSOFT
Đăng nhập

k6 trong CI và observability: cổng, xu hướng, soak test

Chuyên nâng caok6/PerfCI/CDNâng cao
🗓 1 tháng trước19 phút đọc·👁 1,388 lượt xem👤 451 người đọc

Chạy k6 như cổng chất lượng trong pipeline (exit code từ thresholds, GitHub Actions), stream metric tới Prometheus/Grafana/InfluxDB, đối chiếu với metric server, phát hiện hồi quy hiệu năng theo thời gian, soak test và k6 Cloud/phân tán — trên domain viễn thông.

1. Vì sao đưa k6 vào CI và observability

Một bài test tải chạy tay một lần trước khi phát hành có giá trị hạn chế: nó cho bạn ảnh chụp một thời điểm, rồi bị lãng quên. Trong một nhà mạng viễn thông với hàng triệu thuê bao và bản phát hành liên tục, giá trị thật đến từ việc chạy k6 tự động trong pipeline ở mỗi thay đổi lớn, và stream metric tới một hệ thống quan sát để nhìn xu hướng theo thời gian. Chỉ khi ấy bạn mới phát hiện được hồi quy hiệu năng — khi một bản build làm p95 chậm đi 20% so với tuần trước.

Bài viết này tập trung vào ba việc: chạy k6 như một cổng trong pipeline CI (dựa vào exit code từ thresholds), stream metric tới Prometheus/Grafana/InfluxDB để quan sát, và đối chiếu metric phía k6 với metric phía server để tìm nguyên nhân gốc. Cuối cùng ta bàn về soak test và phát hiện hồi quy theo thời gian.

Giá trị của k6 nhân lên khi nó chạy đều đặn và metric được lưu lại — một lần chạy lẻ chỉ là ảnh chụp, một chuỗi lần chạy mới là xu hướng.

2. Exit code: cách k6 nói với pipeline rằng nó trượt

Nền tảng để k6 làm cổng CI là hành vi exit code. Khi mọi threshold pass, k6 kết thúc với exit code 0. Khi có bất kỳ threshold nào trượt, k6 kết thúc với exit code 99. Hệ thống CI (GitHub Actions, GitLab CI, Jenkins...) coi exit code khác 0 là bước thất bại và tự động dừng pipeline. Nhờ vậy, một bản build làm hiệu năng tệ đi sẽ bị chặn tự động, không cần con người ngồi đọc số.

k6 là cổng chất lượng trong pipeline build deploy stg k6 run thresholds → exit code approve prod exit≠0 → chặn deploy, trả về sửa
k6 chặn deploy khi threshold trượt (exit≠0)
bash
# Chạy k6, và exit code sẽ dừng pipeline nếu threshold trượt
k6 run smoke.js
echo "exit code = $?"   # 0 nếu pass, 99 nếu có threshold trượt

# Xuất kết quả ra JSON để lưu artifact và so sánh về sau
k6 run --out json=result.json load.js

# Tóm tắt ra file để pipeline đính kèm làm bằng chứng
k6 run --summary-export=summary.json load.js

Một mẹo quan trọng: trong pipeline nên phân biệt bài smoke (nhanh, chạy mọi PR) với bài load/soak (nặng, chạy theo lịch hoặc trước phát hành). Bài smoke với tải nhỏ và threshold cơ bản đảm bảo không có gì gãy rõ ràng; bài nặng chạy ít thường xuyên hơn để không làm chậm mọi commit.

3. Chạy k6 trong GitHub Actions

Cách phổ biến nhất là dùng action chính thức của Grafana để cài k6, rồi chạy script. Bước k6 sẽ tự làm pipeline đỏ nếu threshold trượt, vì action tôn trọng exit code. Bạn có thể upload kết quả JSON làm artifact để lưu vết và so sánh giữa các lần chạy.

yaml
# .github/workflows/perf.yml
name: perf-gate
on: [pull_request]
jobs:
  k6-smoke:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run k6 smoke test
        uses: grafana/setup-k6-action@v1
      - name: Execute
        uses: grafana/run-k6-action@v1
        with:
          path: ./tests/smoke.js
          # exit code 99 nếu threshold trượt -> step FAIL -> pipeline đỏ
      - name: Upload result
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: k6-result
          path: summary.json

Trong bối cảnh viễn thông, một pipeline điển hình chạy smoke test trên mỗi pull request để bắt hồi quy nghiêm trọng sớm, rồi một job load test theo lịch hằng đêm trên môi trường staging giống production. Kết quả hằng đêm được stream vào Grafana để đội nhìn xu hướng qua các ngày, thay vì chỉ pass/fail của một lần.

🔒

Nội dung bị khoá

Bạn đang xem bản xem trước. Đăng nhập để mở khoá toàn bộ bài viết và tất cả tài liệu Tester/QA.

Đã xem 25% nội dung
  • Đọc trọn vẹn mọi bài viết
  • Lưu bài & ghi chú cá nhân
  • Theo dõi tiến độ đã đọc
  • Luyện phỏng vấn, ISTQB, Mock
Đăng nhập để đọc tiếp

Chưa có mã? Lấy mã qua Fanpage / Zalo CyberSoft.

0

💬 Bình luận (0)

Bạn có thể đọc mọi bình luận. Đăng nhập để bình luận

Chưa có bình luận nào. Hãy là người đầu tiên!