---
title: "ดัชนีรายงานผลการทดสอบ"
titleEn: "Test Reports Index"
clauses: ["4.7.4", "4.7.5", "4.7.9"]
phase: 2
category: "ทดสอบ"
generated: false
---

# ดัชนีรายงานผลการทดสอบ (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`](/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`](/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`](/documents/vulnerability-scan-report) | 4.8.1, ก.2.2.2, 7.2.6 | ผล `npm audit` แยกระดับความรุนแรง + แผนแก้ไข | `npm run report:security` |
| Penetration Test | [`/documents/pentest-report`](/documents/pentest-report) | 4.8.2, ก.2.1.1 | **ไม่ได้ดำเนินการในรอบนี้ตามคำสั่งของผู้ว่าจ้าง** — รายงานบันทึกเหตุผลและแผนดำเนินการ | — |
| ทดสอบการกู้คืนข้อมูล | [`/documents/restore-test-report`](/documents/restore-test-report) | ก.1.6.3 | backup → ทำลาย → restore → เทียบจำนวนแถวรายตาราง + integrity_check | `npm run report:restore-test` |
| Baseline/Acceptance Evaluation | [`/documents/baseline-evaluation-report`](/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`](/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`](/documents/ingestion-report) | 7.2.5, 4.5.2, ข.1 | จำนวนเอกสาร/chunks, ความครอบคลุม 91 เล่ม, รายการล้มเหลว | `npm run report:ingestion` |
| SLA รายเดือน | [`/documents/sla-monthly-report`](/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 จาก branch `release/*`) — ยังไม่ได้ติดตั้งจริง สถานะข้อ 4.7.4 ใน `/tor` จึงเป็น partial

## 4. แนวทาง Regression อัตโนมัติ (TOR 4.7.5)

### 4.1 Regression ทุก API: `openapi-coverage`

การตรวจมี 2 ชั้น:

1. **ชั้น 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
2. **ชั้น 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 เป็นหลัก
3. การเพิ่ม 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/` |
