ดัชนีรายงานผลการทดสอบ (Test Reports Index)
อ้างอิง TOR: ข้อ 4.7.4 (Functional Test + SIT บนสภาพแวดล้อมทดสอบ), ข้อ 4.7.5 (Regression อัตโนมัติทุก API และ CTA) และข้อ 4.7.9 (ส่งมอบรายงานผลการทดสอบ ชุดทดสอบ และไฟล์ CI/CD พร้อม Source Code) ฉบับ: 1.0 — วันที่ 3 ตุลาคม พ.ศ. 2569
เอกสารนี้เป็น ดัชนี รวมรายงานผลการทดสอบทุกประเภทและวิธีสร้างซ้ำ ตัวเลขผลการทดสอบอยู่ในรายงานแต่ละฉบับซึ่งสร้างอัตโนมัติจากการรันเครื่องมือจริง (มีหัว “สร้างอัตโนมัติเมื่อ …”) เอกสารนี้ไม่คัดลอกตัวเลขมาเพื่อไม่ให้ข้อมูลล้าสมัยเมื่อรันใหม่ แผนและกรณีทดสอบอยู่ที่
/documents/master-test-plan
1. รายงานผลการทดสอบ
| รายงาน | ลิงก์ | TOR | เนื้อหา | คำสั่งสร้างซ้ำ |
|---|---|---|---|---|
| Unit Test Coverage | /documents/coverage-report | 4.7.3 | coverage ของ src/domain + src/application (lines/functions/branches/statements) เทียบ gate ≥80% | npx tsx scripts/reports/coverage-report.ts (รัน vitest run --coverage แล้วอ่าน coverage/coverage-summary.json) |
| ประสิทธิภาพ | /documents/performance-report | 4.7.6, 12.2, ก.1.4.1, ก.1.4.2 | latency p50/p95, TTFT p95, error rate, FCP, ผล seed บัญชีจำนวนมาก | npm run report:perf (+ npm run seed:perf-users -- --count=1000000) |
| Vulnerability Scan | /documents/vulnerability-scan-report | 4.8.1, ก.2.2.2, 7.2.6 | ผล npm audit แยกระดับความรุนแรง + แผนแก้ไข | npm run report:security |
| Penetration Test | /documents/pentest-report | 4.8.2, ก.2.1.1 | ไม่ได้ดำเนินการในรอบนี้ตามคำสั่งของผู้ว่าจ้าง — รายงานบันทึกเหตุผลและแผนดำเนินการ | — |
| ทดสอบการกู้คืนข้อมูล | /documents/restore-test-report | ก.1.6.3 | backup → ทำลาย → restore → เทียบจำนวนแถวรายตาราง + integrity_check | npm run report:restore-test |
| Baseline/Acceptance Evaluation | /documents/baseline-evaluation-report | 4.7.7, 7.2.3, ก.5.3 | คะแนน 7 ชุด Benchmark ทั้งรอบ baseline และ acceptance เทียบเกณฑ์ขั้นต่ำและค่ารับประกัน | npx tsx scripts/eval/run-acceptance.ts --label baseline --qa-prompt 1 → npm run eval:acceptance → npm run report:evaluation |
| AI Security / Guardrail | /documents/guardrail-security-report | 7.2.7, ก.4.4 | อัตราการป้องกัน GR-1, GR-2 และ Prompt Injection 20 เคส แยกประเภทการโจมตี | npm run report:evaluation หรือปุ่มรันที่ /admin/evaluation/security-report |
| การนำเข้าข้อมูล | /documents/ingestion-report | 7.2.5, 4.5.2, ข.1 | จำนวนเอกสาร/chunks, ความครอบคลุม 91 เล่ม, รายการล้มเหลว | npm run report:ingestion |
| SLA รายเดือน | /documents/sla-monthly-report | 12.1–12.5 | Availability, p95 latency, TTFT, error rate, defect เทียบ SLA | npm run report:sla หรือปุ่ม export ที่ /admin/sla-report |
คำสั่งรวม: npm run report:all (= security → perf → restore-test → ingestion → evaluation → sla ตามลำดับใน package.json)
2. ผลการทดสอบอัตโนมัติระดับโค้ด
| ระดับ | คำสั่ง | ผลลัพธ์ที่ได้ |
|---|---|---|
| Unit + API + regression ทุก API | npm test (OPENAPI_COVERAGE=1 vitest run) | สรุปผลบน console; ล้มเหลวเมื่อมี endpoint ที่ไม่ถูกทดสอบ |
| Unit + API + coverage gate | npm run test:coverage | coverage/ (text-summary, coverage-summary.json, HTML) |
| Functional/SIT (API) | npm run test:sit (vitest run tests/api) | ฐานข้อมูลทดสอบแยกต่อไฟล์ |
| E2E (Playwright × 3 viewport) | npm run test:e2e (ต้องมี dev server ที่ E2E_PORT, ค่าเริ่มต้น 3210 — config เปิดให้เองถ้ายังไม่รัน) | test-results/e2e-results.json + trace/screenshot เมื่อล้มเหลว |
| Type check / Lint | npx tsc --noEmit -p . / npm run lint | — |
| ทดสอบไฟล์ IaC | npx vitest run tests/unit/infra-yaml.test.ts | parse ci-cd.yml และ Helm chart ทุกไฟล์ |
3. Functional Test และ SIT (TOR 4.7.4)
- Functional Test: E2E 26 สถานการณ์ใน
tests/e2e/{public,chat,admin}.spec.tsครอบคลุมเส้นทางผู้ใช้ทั่วไป ผู้ดูแล และ SUPER_ADMIN รันบน Chromium 3 ขนาดหน้าจอ - SIT: API test 24 ไฟล์เรียก route handler จริงพร้อม middleware logic ต่อฐานข้อมูลทดสอบที่ seed ใหม่ทุกไฟล์ (
tests/helpers/global-setup.ts) ทดสอบการทำงานร่วมกันของ use case, Prisma, RAG pipeline (Mock LLM), ingestion pipeline และ audit - สภาพแวดล้อมทดสอบระยะ Production: namespace
mbu-test(deploy จาก branchrelease/*) — ยังไม่ได้ติดตั้งจริง สถานะข้อ 4.7.4 ใน/torจึงเป็น partial
4. แนวทาง Regression อัตโนมัติ (TOR 4.7.5)
4.1 Regression ทุก API: openapi-coverage
การตรวจมี 2 ชั้น:
- ชั้น static —
tests/api/openapi-coverage.test.tsตรวจว่า ทุก operation ใน registry (apiRegistryในsrc/server/api/openapi/index.ts— 107 operation ซึ่งเป็นแหล่งเดียวกับ/api/openapi.json) มีไฟล์ในtests/apiที่ import handler ของ method นั้นจาก@/app<path>/routeถ้าขาดชุดทดสอบล้มเหลวพร้อมรายการ endpoint - ชั้น runtime — ทุก route ห่อด้วย
withApi({ path, ... })ซึ่งบันทึก"METHOD path"ที่ถูกเรียกจริงลงไฟล์coverage/.api-calls-<pid>.log; เมื่อรันทั้งชุดด้วยOPENAPI_COVERAGE=1(ตั้งไว้ในnpm testและnpm run test:coverage) ขั้น teardown ในtests/helpers/global-setup.tsเทียบกับรายการในไฟล์ registry เขียนผลที่coverage/openapi-coverage.json(total,called,missing) และตั้ง exit code เป็นล้มเหลวถ้ามี endpoint ที่ไม่ถูกเรียก- ข้อจำกัดที่พบจากการอ่านโค้ด: ขั้น runtime อ่าน registry ด้วย regex ที่จับเฉพาะ
pathที่เป็นสตริงตรง ๆ — ไฟล์กลุ่มที่สร้าง path ด้วย template literal (admin-kb.ts,admin-eval.ts) จึงถูกตรวจด้วยชั้น static เป็นหลัก
- ข้อจำกัดที่พบจากการอ่านโค้ด: ขั้น runtime อ่าน registry ด้วย regex ที่จับเฉพาะ
- การเพิ่ม endpoint ใหม่จึงบังคับให้ต้องมีกรณีทดสอบเสมอ และแต่ละกลุ่ม endpoint มีกรณีสำเร็จและกรณีสิทธิ์ไม่พอ (401/403)
4.2 Regression ของ CTA (Call-to-Action) หน้าเว็บ
E2E ทดสอบปุ่ม/การกระทำหลักโดยใช้ data-testid: สมัคร/เข้าสู่ระบบ/OAuth, ส่งคำถาม, Expand All, citation chip → modal, 👍/👎, RAG Trace, Dhamma Talk บันทึก artifact, สลับภาษา/ธีม, ดาวน์โหลดเอกสาร, ฟังก์ชันผู้ดูแล (เปลี่ยน config → revert, prompt rollback, อัปโหลดเอกสาร, export audit, defect, unavailable)
4.3 เมื่อใดต้องรัน Regression
| เหตุการณ์ | ชุดที่รัน |
|---|---|
| ทุก push / pull request (CI) | lint → vitest run --coverage → npm audit → build → Playwright (ตาม .github/workflows/ci-cd.yml) |
| แก้ prompt / config AI | npm test + รัน Benchmark ที่เกี่ยวข้อง (npx tsx scripts/eval/run-acceptance.ts --only <ชุด>) |
| นำเข้าเอกสารชุดใหญ่ | tests/api/knowledge-base.test.ts + Benchmark RET-1..3 + npm run report:ingestion |
| ก่อนส่งมอบงวด | npm run test:coverage, npm run test:e2e, npm run report:all |
หมายเหตุ: ไฟล์ CI/CD ส่งมอบแล้วแต่ ยังไม่ได้รันบน GitHub Actions จริง ในรอบสาธิต (ดู
/documents/cicd-pipeline) การรัน regression ในรอบนี้ทำบนเครื่องพัฒนาด้วยคำสั่งข้างต้น
5. ชุดทดสอบและไฟล์ที่ส่งมอบพร้อม Source Code (TOR 4.7.9)
| รายการ | ตำแหน่ง |
|---|---|
| Unit tests (29 ไฟล์) | tests/unit/ (รวม tests/unit/components/) |
| API/SIT tests (24 ไฟล์) | tests/api/ |
| E2E tests (3 spec) | tests/e2e/ |
| Test helpers และ fixtures | tests/helpers/, tests/fixtures/kb/ |
| Benchmark datasets 7 ชุด + Injection | seed/benchmarks/*.csv + ที่มา seed/benchmarks/SOURCES.md |
| สคริปต์สร้างชุด Benchmark | scripts/data/benchmarks/ |
| สคริปต์ทดสอบ/รายงาน | scripts/perf/, scripts/security/, scripts/reports/, scripts/eval/, scripts/restore-test.sh |
| การตั้งค่าเครื่องมือทดสอบ | vitest.config.ts, playwright.config.ts |
| ไฟล์ CI/CD | .github/workflows/ci-cd.yml (คำอธิบาย: /documents/cicd-pipeline) |
| Infrastructure as Code | infra/helm/mbu-buddhist-ai/ |