k6 - daniel-qa/RooCode GitHub Wiki

用 k6 模擬 API 層級的壓測情境。

  • 安裝

直接載執行檔,加入環境變數中

https://github.com/grafana/k6/releases

  • 測試 js
import http from 'k6/http';
import { check, sleep } from 'k6';

export let options = {
  vus: 50, // 50 個虛擬使用者
  duration: '30s', // 測試時間
};

const BASE_URL = 'https://sharing-test.teammodel.net';

export default function () {
  // 登入請求
  let loginRes = http.post(`${BASE_URL}/login`, {
    loginId: '1595321354',
    loginPassword: 'Habook2022.',
  });

  check(loginRes, {
    '登入成功': (res) => res.status === 200 && res.body.includes("mindmap"),
  });

  // 模擬新增節點的 API(需你提供實際路由與資料格式)
  let addRes = http.post(`${BASE_URL}/api/nodes/add`, JSON.stringify({
    name: `add-${__VU}`,
    parentId: 'root111',
  }), {
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${loginRes.json('token') || ''}`, // 若需要 token
    }
  });

  check(addRes, {
    '新增節點成功': (res) => res.status === 200,
  });

  sleep(1);
}

  • 執行測試
k6 run load-test.js