# K6 Load Testing — Goodgo Platform ## Tổng quan Các bài load test hiệu năng cho những API path quan trọng, sử dụng [K6](https://k6.io/). ## Bộ kiểm thử | Script | Mục tiêu | VU đỉnh | Thời lượng | |--------|----------|---------|-----------| | `auth.js` | Đăng nhập/Đăng ký | 100 | 2min | | `listings.js` | Tìm kiếm + Chi tiết | 500 | 3min | | `search.js` | Tìm kiếm văn bản + Địa lý | 200 | 3min | | `search-advanced.js` | Kết hợp geo + text + bộ lọc, phân trang | 300 | 3min | | `admin.js` | Hàng đợi kiểm duyệt, bảng điều khiển, nhật ký audit | 50 | 2.5min | | `mcp.js` | MCP server discovery, property-search, valuation | 120 | 2.5min | | `payments.js` | Tạo + Danh sách | 50 | 2min | ## Ngưỡng SLA | Chỉ số | Ngưỡng | |--------|--------| | Độ trễ p50 | < 200ms | | Độ trễ p95 | < 500ms | | Độ trễ p99 | < 1000ms | | Tỷ lệ lỗi | < 1% | ### Ngưỡng tuỳ chỉnh theo bộ kiểm thử | Bộ kiểm thử | Chỉ số | Ngưỡng | |-------------|--------|--------| | search-advanced | advanced_search_duration p95 | < 800ms | | search-advanced | geo_filter_search_duration p95 | < 800ms | | admin | moderation_action_duration p95 | < 800ms | | admin | admin_dashboard_duration p95 | < 500ms | | mcp | mcp_property_search_duration p95 | < 1500ms | | mcp | mcp_valuation_duration p95 | < 1000ms | | mcp | mcp_batch_valuation_duration p95 | < 2000ms | ## Điều kiện tiên quyết ```bash # Cài đặt K6 brew install k6 # macOS # hoặc: https://grafana.com/docs/k6/latest/set-up/install-k6/ # Khởi động API pnpm --filter @goodgo/api run dev ``` ## Chạy kiểm thử ```bash # Chạy từng bộ kiểm thử riêng lẻ k6 run load-tests/scripts/auth.js k6 run load-tests/scripts/listings.js k6 run load-tests/scripts/search.js k6 run load-tests/scripts/search-advanced.js k6 run load-tests/scripts/admin.js k6 run load-tests/scripts/mcp.js k6 run load-tests/scripts/payments.js # Chạy với URL API tuỳ chỉnh k6 run -e API_BASE_URL=https://staging.goodgo.vn load-tests/scripts/auth.js # Chạy tất cả các bộ kiểm thử tuần tự for f in load-tests/scripts/*.js; do k6 run "$f"; done # Xuất kết quả dưới dạng JSON k6 run --out json=results/auth.json load-tests/scripts/auth.js ``` ## Tích hợp CI Workflow `load-test.yml` chạy như một giai đoạn thủ công tuỳ chọn trong GitHub Actions. Kích hoạt qua `workflow_dispatch` với bộ chọn suite. ## Cấu trúc thư mục ``` load-tests/ ├── lib/ │ └── config.js # Cấu hình dùng chung, helper, ngưỡng SLA ├── scripts/ │ ├── auth.js # Load test luồng xác thực │ ├── listings.js # Tìm kiếm + chi tiết listings │ ├── search.js # Tìm kiếm full-text + geo (cơ bản) │ ├── search-advanced.js # Tìm kiếm kết hợp geo + text + bộ lọc │ ├── admin.js # Kiểm duyệt admin, bảng điều khiển, audit │ ├── mcp.js # Endpoint MCP server (property-search, valuation) │ └── payments.js # Tạo và liệt kê thanh toán ├── results/ │ └── BASELINE-REPORT.md # Báo cáo hiệu năng baseline └── README.md ```