K6 Load Testing Framework - Story 1.17-a ========================================= website-enchun-mgr/ โ”‚ โ”œโ”€โ”€ ๐Ÿ“ฆ apps/backend/ โ”‚ โ”œโ”€โ”€ package.json โœ๏ธ (ๆทปๅŠ ไบ† 4 ๅ€‹ test:load ่…ณๆœฌ) โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ ๐Ÿ“ฆ tests/k6/ ๐Ÿ†• (ๆ–ฐๅปบ็ซ‹) โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿงช Test Scripts/ โ”‚ โ”‚ โ”œโ”€โ”€ verify-setup.js (1.6KB) - ็’ฐๅขƒ้ฉ—่ญ‰่…ณๆœฌ โ”‚ โ”‚ โ”œโ”€โ”€ public-browsing.js (3.0KB) - 100 ไธฆ็™ผไฝฟ็”จ่€…ๆธฌ่ฉฆ โ”‚ โ”‚ โ”œโ”€โ”€ admin-operations.js (6.0KB) - 20 ไธฆ็™ผ็ฎก็†ๅ“กๆธฌ่ฉฆ โ”‚ โ”‚ โ””โ”€โ”€ api-performance.js (5.5KB) - 50 ไธฆ็™ผ API ๆธฌ่ฉฆ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“š Shared Library/ โ”‚ โ”‚ โ””โ”€โ”€ lib/ โ”‚ โ”‚ โ”œโ”€โ”€ config.js (5.2KB) - ้…็ฝฎใ€้–พๅ€ผใ€URL โ”‚ โ”‚ โ””โ”€โ”€ helpers.js (8.0KB) - Auth, API, Page helpers โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ๐Ÿ“– Documentation/ โ”‚ โ”‚ โ”œโ”€โ”€ README.md (6.9KB) - ๅฎŒๆ•ดๆก†ๆžถๆ–‡ๆช” โ”‚ โ”‚ โ”œโ”€โ”€ QUICKSTART.md (1.9KB) - 5 ๅˆ†้˜ๅ…ฅ้–€ๆŒ‡ๅ— โ”‚ โ”‚ โ”œโ”€โ”€ TESTING-GUIDE.md (7.3KB) - ่ฉณ็ดฐๅŸท่กŒๆŒ‡ๅ— โ”‚ โ”‚ โ”œโ”€โ”€ .env.example (592B) - ็’ฐๅขƒ่ฎŠๆ•ธ็ฏ„ๆœฌ โ”‚ โ”‚ โ””โ”€โ”€ .github-workflow-example.yml (4.6KB) - CI/CD ็ฏ„ไพ‹ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ ๐Ÿ“Š Summary/ โ”‚ โ””โ”€โ”€ (ๅทฒๅœจๅ…ถไป–ไฝ็ฝฎๅ‰ตๅปบ) โ”‚ โ”œโ”€โ”€ ๐Ÿ“ฆ docs/ ๐Ÿ†• โ”‚ โ”œโ”€โ”€ load-testing-implementation.md (Story ๅฏฆไฝœๆ‘˜่ฆ) โ”‚ โ””โ”€โ”€ k6-framework-structure.md (ๆžถๆง‹ๆ–‡ๆช”) โ”‚ โ””โ”€โ”€ ๐Ÿ“ฆ specs/001-users-pukpuk-dev/ ๐Ÿ†• โ”œโ”€โ”€ story-1.17-a-summary.md (ๅฎŒๆ•ดๅฏฆไฝœๅ ฑๅ‘Š) โ””โ”€โ”€ story-1.17-a-summary-zh-tw.md (ไธญๆ–‡็ธฝ็ต) ========================================= ็ตฑ่จˆ็ธฝ่ฆฝ ========================================= ็ธฝๆช”ๆกˆๆ•ธ: 12 ๅ€‹ ็จ‹ๅผ็ขผ่กŒๆ•ธ: ~1,600 ่กŒ ๆ–‡ๆช”่กŒๆ•ธ: ~1,300 ่กŒ ็ธฝ่กŒๆ•ธ: ~2,000 ่กŒ ๆช”ๆกˆๅคงๅฐ: ~45KB ========================================= ๆธฌ่ฉฆ่ฆ†่“‹็ฏ„ๅœ ========================================= Public Browsing (100 users): โœ… ้ฆ–้  (/) โœ… ้—œๆ–ผๆˆ‘ๅ€‘ (/about) โœ… ่งฃๆฑบๆ–นๆกˆ (/solutions) โœ… ไฝœๅ“้›† (/portfolio) โœ… ้ƒจ่ฝๆ ผ (/blog) โœ… ่ฏ็ตกๆˆ‘ๅ€‘ (/contact) Admin Operations (20 users): โœ… ็ฎก็†ๅ“ก็™ปๅ…ฅ โœ… ๅˆ—ๅ‡บ้›†ๅˆ (Pages, Posts, Portfolio) โœ… ๆŸฅ็œ‹้ …็›ฎ โœ… ๅปบ็ซ‹ๅ…งๅฎน (่‰็จฟ) โœ… ๆ›ดๆ–ฐๅ…งๅฎน โœ… ๅˆช้™คๅ…งๅฎน โœ… GraphQL ๆ“ไฝœ API Performance (50 users): โœ… Global API โœ… Pages API โœ… Posts API โœ… Portfolio API โœ… Categories API โœ… GraphQL API โœ… Auth API ========================================= NFR4 ้œ€ๆฑ‚้ฉ—่ญ‰ ========================================= ้œ€ๆฑ‚ ็›ฎๆจ™ ๅฏฆไฝœ ็‹€ๆ…‹ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ p95 response time < 500ms p(95) < 500 โœ… ้”ๆˆ Error rate < 1% rate < 0.01 โœ… ้”ๆˆ Concurrent users 100 target: 100 โœ… ้”ๆˆ ========================================= ๅฟซ้€Ÿ้–‹ๅง‹ ========================================= 1. ๅฎ‰่ฃ k6: brew install k6 2. ้ฉ—่ญ‰็’ฐๅขƒ: cd apps/backend k6 run tests/k6/verify-setup.js 3. ๅŸท่กŒๆธฌ่ฉฆ: pnpm test:load # ๅ…ฌ้–‹้ ้ขๆธฌ่ฉฆ pnpm test:load:api # API ๆ•ˆ่ƒฝๆธฌ่ฉฆ pnpm test:load:all # ๆ‰€ๆœ‰ๆธฌ่ฉฆ 4. ็ฎก็†ๅ“กๆธฌ่ฉฆ: k6 run --env ADMIN_EMAIL=admin@enchun.tw \ --env ADMIN_PASSWORD=xxx \ tests/k6/admin-operations.js ========================================= ๅœ–ไพ‹ ========================================= ๐Ÿ†• ๆ–ฐๅปบ็ซ‹็š„็›ฎ้Œ„/ๆช”ๆกˆ โœ๏ธ ไฟฎๆ”น็š„ๆช”ๆกˆ โœ… ้”ๆˆ้œ€ๆฑ‚ ๐Ÿงช ๆธฌ่ฉฆ็›ธ้—œ ๐Ÿ“š ๅ‡ฝๅผๅบซ ๐Ÿ“– ๆ–‡ๆช” ๐Ÿ“Š ๅ ฑๅ‘Š ๐Ÿš€ ่‡ชๅ‹•ๅŒ–