# 如何運行流程測試 ## 📝 說明 `user-profile-flow.js` 是一個**場景模組**,不是可以直接運行的測試文件。它提供了可重複使用的流程函數,需要在測試文件中導入並使用。 ## 🚀 快速開始 ### 方式 1: 使用已創建的測試文件(推薦) 我們已經創建了使用這些流程的測試文件: #### 冒煙測試 ```bash # 設置 API 地址 export BASE_URL=http://localhost:8888 # 運行使用者資料流程冒煙測試 make smoke-user-profile-flow ``` #### 負載測試 ```bash # 設置 API 地址 export BASE_URL=http://localhost:8888 # 運行使用者資料流程負載測試 make load-user-profile-flow ``` ### 方式 2: 使用通用 run 命令 ```bash # 設置 API 地址 export BASE_URL=http://localhost:8888 # 運行指定的流程測試 make run TEST=tests/smoke/smoke-user-profile-flow-test.js ``` ### 方式 3: 直接使用 k6(如果本地已安裝) ```bash # 設置 API 地址 export BASE_URL=http://localhost:8888 # 運行測試 k6 run tests/smoke/smoke-user-profile-flow-test.js ``` ## 📋 可用的流程函數 `user-profile-flow.js` 提供了以下流程函數: ### 1. `getAndUpdateProfileFlow` 取得並更新個人資料流程 ```javascript import { getAndUpdateProfileFlow } from '../../scenarios/e2e/user-profile-flow.js'; const result = getAndUpdateProfileFlow({ baseUrl: 'http://localhost:8888', accessToken: 'your_access_token', updateData: { nickname: 'NewNickname', preferred_language: 'zh-tw', }, }); ``` ### 2. `emailVerificationFlow` 完整 Email 驗證流程(請求 → 提交) ```javascript import { emailVerificationFlow } from '../../scenarios/e2e/user-profile-flow.js'; const result = emailVerificationFlow({ baseUrl: 'http://localhost:8888', accessToken: 'your_access_token', verifyCode: '123456', // 需要從外部獲取 }); ``` ### 3. `phoneVerificationFlow` 完整手機驗證流程(請求 → 提交) ```javascript import { phoneVerificationFlow } from '../../scenarios/e2e/user-profile-flow.js'; const result = phoneVerificationFlow({ baseUrl: 'http://localhost:8888', accessToken: 'your_access_token', verifyCode: '123456', // 需要從外部獲取 }); ``` ### 4. `passwordChangeFlow` 登入狀態下修改密碼流程 ```javascript import { passwordChangeFlow } from '../../scenarios/e2e/user-profile-flow.js'; const result = passwordChangeFlow({ baseUrl: 'http://localhost:8888', accessToken: 'your_access_token', currentPassword: 'OldPassword123!', newPassword: 'NewPassword123!', }); ``` ### 5. `userProfileInitializationFlow` 完整的使用者資料初始化流程(註冊 → 登入 → 取得資訊 → 更新資訊) ```javascript import { userProfileInitializationFlow } from '../../scenarios/e2e/user-profile-flow.js'; const result = userProfileInitializationFlow({ baseUrl: 'http://localhost:8888', loginId: 'test@example.com', password: 'Test123456!', updateData: { nickname: 'TestUser', preferred_language: 'zh-tw', currency: 'TWD', }, }); ``` ## 📝 創建自定義測試文件 如果你想創建自己的測試文件來使用這些流程,可以參考以下模板: ```javascript /** * 自定義流程測試 */ import { userProfileInitializationFlow } from '../../scenarios/e2e/user-profile-flow.js'; export const options = { scenarios: { custom_flow: { executor: 'shared-iterations', vus: 1, iterations: 1, maxDuration: '30s', tags: { test_type: 'custom', flow: 'user_profile' }, }, }, thresholds: { checks: ['rate==1.0'], http_req_duration: ['p(95)<3000'], }, }; export default function () { const baseUrl = __ENV.BASE_URL || 'http://localhost:8888'; // 使用流程函數 const result = userProfileInitializationFlow({ baseUrl, loginId: `test_${Date.now()}@example.com`, password: 'Test123456!', }); if (!result.success) { console.error(`Test failed: ${result.step} - ${result.error}`); return; } console.log('Test passed!'); } ``` 然後運行: ```bash make run TEST=tests/your-custom-test.js ``` ## 🎯 測試文件位置 - **冒煙測試**: `tests/smoke/smoke-user-profile-flow-test.js` - **負載測試**: `tests/pre/load-user-profile-flow-test.js` ## 📚 相關文檔 - [AI_GUIDE.md](./AI_GUIDE.md) - 如何添加新 API 場景 - [README.md](./README.md) - 完整文檔 - [QUICK_START.md](./QUICK_START.md) - 快速開始指南