CBT Manual UAT - SPMB, Independent, Learning
Versi: 1.1
Tanggal: 2026-06-11
Status: Draft operasional untuk UAT manual (diselaraskan workspace enrollment Phase 3)
Cakupan: CBT context learning, admission atau SPMB, dan independent
Alur linear per context:
Dokumen ini tetap menjadi referensi matriks role dan skenario test case detail (CBT-IND / CBT-SPMB).
1. Compliance Agent
| Item |
Nilai |
| Mode kerja |
Default |
| Workspace root |
/home/scola/odoo (server) atau root clone lokal |
| Dokumen wajib dibaca |
docs/ai-guidelines/development-guide.md, docs/ai-guidelines/workspace-governance.md, docs/ai-guidelines/architecture-api.md, docs/qa/testing-guidelines.md |
| Referensi implementasi |
docs/domains/cbt/README.md, docs/implementation/cbt-exam-workspace-enrollment-plan.md, docs/implementation/cbt-e2e-hardening-implementation-plan.md, route CBT, service CBT, dan halaman SPMB terkait |
| Arsitektur API |
Same-origin /api; production tidak boleh bergantung pada VITE_API_URL cross-origin |
2. Tujuan UAT
Dokumen ini dipakai QA manual untuk membuktikan bahwa fitur CBT dapat dipakai end-to-end oleh semua role yang terlibat:
- Admin atau CBT manager mengatur kebijakan CBT dan audit.
- Guru atau author membuat bank soal dan ujian learning/independent.
- Admin SPMB atau admin staff membuat CBT admission, mengaitkan ke jadwal SPMB, dan sinkronisasi peserta/nilai.
- Proctor memonitor ujian dan melakukan intervensi terbatas.
- Grader menilai jawaban essay dan memfinalisasi nilai.
- Siswa, pendaftar SPMB, dan peserta independent mengerjakan ujian dari entry point masing-masing.
- Admin akademik atau role pelaporan memeriksa hasil, analytics, integrity report, dan pipeline nilai.
3. Prasyarat Environment
| Item |
Syarat |
| Frontend |
https://dev.gcgscola.id atau http://localhost:5173 |
| Backend |
Same-origin /api; untuk E2E lokal gunakan E2E_ODOO_URL=https://be-dev.gcgscola.id bila perlu |
| Modul |
scola_cbt aktif, SPMB aktif untuk admission, LMS/academic grade aktif untuk learning |
| Browser |
Chrome atau Edge terbaru. Pakai incognito/profil browser terpisah per role |
| Data waktu |
Jadwalkan ujian dengan waktu mulai dan selesai yang jelas. Pakai timezone sekolah yang sama dengan konfigurasi tenant |
| Evidence |
Screenshot halaman, Network request penting, ID exam, ID attempt, ID schedule, dan hasil export bila tersedia |
3.1 Akun UAT yang Dibutuhkan
| Role UAT |
Fungsi |
Catatan |
| Admin / CBT manager |
Pengaturan CBT, audit log, full access operasional |
Jangan dipakai untuk negative RBAC |
| Admin SPMB |
Membuat CBT SPMB, jadwal SPMB, sync peserta/nilai |
Route /admin/spmb/* |
| Admin staff SPMB |
Operasi SPMB harian dan CBT SPMB |
Route /admin-staff/admissions/* |
| Guru author |
Membuat bank soal dan ujian learning/independent |
Role guru biasa tidak otomatis menjadi proctor |
| Guru proctor terdelegasi |
Monitoring ujian yang ditugaskan |
Harus masuk assignment cbt_proctor_user_ids untuk ujian target |
| Guru grader terdelegasi |
Menilai essay ujian yang ditugaskan |
Harus masuk assignment cbt_grader_user_ids untuk ujian target |
| Guru generic low privilege |
Negative RBAC |
Harus non-admin, bukan Back Office/Scola Admin/Settings/CBT Manager |
| Siswa |
Mengerjakan CBT learning |
Route /student/cbt |
| Pendaftar SPMB |
Mengerjakan CBT admission |
Route /spmb/cbt atau jadwal tes SPMB |
| Peserta external independent |
Mengerjakan CBT publik |
Route /cbt/public |
Catatan dev environment: pada audit 2026-05-04, budi.santosa bukan guru generic karena memiliki beberapa role privileged. Untuk negative RBAC gunakan akun guru low-privilege yang benar-benar bersih.
3.2 Data Seed Minimal
- 1 question set aktif dengan minimal 5 soal:
- Pilihan ganda single answer.
- Pilihan ganda multi answer.
- Benar/salah.
- Isian singkat.
- Essay.
- Minimal 1 soal memakai asset media, misalnya gambar atau dokumen.
- 1 rombel/batch aktif dengan minimal 2 siswa.
- 1 mata pelajaran dan komponen nilai untuk publish learning CBT.
- 1 gelombang SPMB aktif, 1 jenis tes, 1 jadwal seleksi, dan minimal 2 pendaftar dengan slot.
- 1 peserta external independent dengan
participant_code.
- 3 user staff berbeda untuk author, proctor, dan grader.
4. Matriks Role, Halaman, dan Isi Halaman
| Workflow |
Role |
Halaman |
Capability/akses |
Isi utama halaman |
| Global |
Admin |
/admin/cbt/settings |
academics.cbt.config |
Durasi default, grace period, auto-submit timeout, navigasi mundur, flag soal, navigator soal, fullscreen, tab/blur/paste flag, multi-login, scoring, retake, autosave |
| Global |
Admin/auditor |
/admin/cbt/audit |
academics.cbt_audit.view |
Filter event, tanggal, tabel waktu, event, user, ujian, siswa, alasan |
| Authoring |
Guru author |
/faculty/question-bank |
academics.question_bank.manage |
Daftar bank soal, create/edit/delete question set |
| Authoring |
Guru author |
/faculty/question-bank/:setId |
academics.question_bank.manage |
Detail question set, daftar soal, import .xlsx/.xls/.csv, template import |
| Authoring |
Guru author |
/faculty/question-bank/:setId/question/new |
academics.question_bank.manage |
Form soal, opsi, kunci jawaban, poin, tag, asset |
| Learning/Independent |
Guru author |
/faculty/cbt/exams |
academics.cbt_exams.manage |
Daftar ujian CBT non-kelas, create ringkas (nama/context/tipe/question set) |
| Learning/Independent |
Guru author |
/faculty/cbt/exams/:examId/:tab? |
academics.cbt_exams.manage |
Kelola Ujian: tab Ringkasan, Pengaturan, Peserta, Penilaian; token; staff; grading; analytics; export |
| Learning |
Guru author |
/faculty/assignments/exam-create atau flow ulangan kelas |
academics.assignments.manage |
Form ulangan kelas dengan pilihan question set CBT, durasi, komponen nilai, batch, publish ke gradebook |
| Proctor |
Assigned proctor |
/faculty/cbt/proctor |
academics.cbt_proctor.manage plus scope backend |
Dropdown ujian yang boleh diproctor, summary peserta, progress, flag, extend time, force submit, reset attempt |
| Grading |
Author/assigned grader |
/faculty/cbt/exams/:examId/grading/:attemptId |
academics.cbt_exams.manage atau assignment backend |
Detail jawaban, rubric/regrade, input skor essay, komentar, finalize |
| Reporting |
Guru/admin terkait |
/faculty/cbt/exams/:examId/analytics |
academics.cbt_exams.manage |
Statistik ujian, distribusi nilai, export XLSX |
| Reporting |
Guru/admin terkait |
/faculty/cbt/exams/:examId/item-analysis |
academics.cbt_exams.manage |
Analisis butir soal |
| Reporting |
Guru/proctor/admin |
/faculty/cbt/exams/:examId/integrity-report |
academics.cbt_exams.manage atau proctor context |
Event integritas per attempt, export integrity |
| Student learning |
Siswa |
/student/cbt |
academics.cbt_exams.sit |
Daftar ulangan CBT, filter status, modal token, status nilai bila tersedia |
| Runner learning |
Siswa |
/student/cbt/runner/:exam_id |
academics.cbt_exams.sit |
Runner fullscreen, timer, autosave, navigator, flag review, tipe soal, submit |
| SPMB admin |
Admin SPMB |
/admin/spmb/cbt/exams |
admissions.cbt_author.manage |
Daftar/create CBT context admission, forced admission context |
| SPMB admin |
Admin SPMB |
/admin/spmb/cbt/exams/:examId/:tab? |
admissions.cbt_author.manage |
Kelola Ujian admission (tab workspace sama), participant read-only, staff, grading/report links |
| SPMB admin |
Admin SPMB |
/admin/spmb/cbt/proctor |
admissions.cbt_proctor.manage |
Proctor console terfilter context admission |
| SPMB admin |
Admin SPMB |
/admin/spmb/cbt/exams/:examId/grading/:attemptId |
admissions.cbt_grade.manage |
Grading attempt admission |
| SPMB staff |
Admin staff |
/admin-staff/admissions/cbt/exams |
admissions.cbt_author.manage |
Sama seperti admin SPMB, path staff |
| SPMB staff |
Admin staff |
/admin-staff/admissions/cbt/proctor |
admissions.cbt_proctor.manage |
Proctor console admission untuk admin staff |
| SPMB schedule |
Admin/admin staff |
/admin/spmb/test atau /admin-staff/admissions/test |
admissions.schedule.view |
Jadwal seleksi, tab CBT Admission, pilih CBT exam, sync peserta, sync nilai, sync semua |
| Pendaftar |
Pendaftar |
/spmb/admission/:id/tests |
admissions.portal.view |
Jadwal tes pendaftar, kartu CBT Admission, tombol Mulai CBT |
| Pendaftar |
Pendaftar |
/spmb/cbt |
admissions.portal.view |
Semua jadwal CBT admission yang siap atau blocked |
| Runner SPMB |
Pendaftar |
/spmb/cbt/runner/:exam_id |
admissions.portal.view |
Runner CBT admission berbasis auth SPMB |
| Independent public |
Peserta external |
/cbt/public |
Public |
Input Exam ID, Exam Token, Participant Code |
| Runner independent |
Peserta external |
/cbt/public/runner/:exam_id |
Public token |
Runner CBT independent dengan token publik |
5. Panduan Eksekusi UAT
Untuk setiap test case:
- Jalankan di browser baru atau profil terpisah sesuai role.
- Catat URL aktual dan role yang sedang login.
- Simpan screenshot awal dan akhir untuk P0.
- Bila ada API gagal, simpan response Network tab.
- Isi status
PASS, FAIL, atau SKIP.
- FAIL harus mencantumkan severity, screenshot, role, data ID, dan langkah reproduksi.
Prioritas:
| Prioritas |
Definisi |
| P0 |
Blocker go-live. Workflow utama tidak boleh gagal |
| P1 |
Penting untuk operasional harian, tetapi ada workaround |
| P2 |
Polishing, UX, atau edge case non-kritis |
6. Setup Umum CBT
CBT-CMN-001 - Pengaturan Kebijakan Global - P0
Role: Admin
URL: /admin/cbt/settings
| Langkah |
Harapan |
| Buka halaman pengaturan CBT |
Halaman tidak 404/blank dan memuat policy saat ini |
| Ubah durasi default, grace period, autosave, fullscreen, tab switch, navigator soal |
Kontrol terlihat jelas dan tidak overlap di desktop/mobile |
| Klik Simpan |
Notifikasi sukses muncul dan refresh tetap mempertahankan nilai |
| Login dengan role non-admin |
Route ditolak atau menu tidak terlihat |
CBT-CMN-002 - Audit Log CBT - P0
Role: Admin/auditor
URL: /admin/cbt/audit
| Langkah |
Harapan |
| Buka audit log |
Tabel memuat event atau empty state yang jelas |
Filter event attempt_started, attempt_submitted, token_invalid, grade_published |
Data terfilter tanpa error |
| Filter tanggal |
Data sesuai rentang tanggal |
| Klik Refresh |
Data terbaru muncul |
CBT-CMN-003 - Bank Soal dan Import - P0
Role: Guru author
URL: /faculty/question-bank
| Langkah |
Harapan |
| Buat question set baru |
Data tersimpan dan tampil di list |
| Buka detail question set |
Jumlah soal awal tampil |
| Tambah soal PG, multi answer, true/false, short answer, essay |
Semua tipe tersimpan dengan poin dan kunci jawaban yang benar |
| Tambah soal dengan asset |
Asset tampil di preview authoring dan runner |
Download/gunakan template import, lalu import .xlsx atau .csv valid |
Soal masuk ke question set dan error row ditampilkan bila ada |
| Coba hapus question set yang sudah dipakai ujian |
Sistem menolak atau memberi peringatan proteksi data |
7. Workflow Learning CBT
CBT-LRN-001 - Buat Ulangan CBT Kelas - P0
Role: Guru author/guru mapel
URL: /faculty/assignments/exam-create atau tombol Buka Ulangan Kelas dari /faculty/cbt/exams
| Langkah |
Harapan |
| Pilih rombel, mapel, tipe ujian, waktu mulai/selesai |
Field wajib jelas dan validasi berjalan |
| Aktifkan CBT dengan memilih question set |
Durasi CBT aktif, komponen nilai wajib dipilih |
| Isi total nilai, KKM, remedial policy, max attempts |
Nilai tersimpan sesuai input |
| Simpan/publish ujian |
Ujian tercatat sebagai context learning dan muncul di detail CBT |
| Buka detail ujian |
Informasi ujian, peserta, token, dan pengaturan CBT terlihat |
CBT-LRN-002 - Peserta Learning dari Rombel - P0
Role: Guru author
URL: /faculty/cbt/exams/:examId
| Langkah |
Harapan |
| Periksa tabel peserta |
Siswa dari rombel target tersedia atau dapat ditambahkan |
| Tambah satu siswa |
Siswa masuk peserta dan tidak duplikat |
| Hapus siswa pada state yang masih boleh diedit |
Siswa terhapus dengan konfirmasi |
| Coba tambah siswa di luar scope rombel bila UI memungkinkan |
Backend menolak atau UI tidak menampilkan opsi yang tidak valid |
CBT-LRN-003 - Delegasi Petugas Ujian Learning - P0
Role: Guru author/admin akademik
URL: /faculty/cbt/exams/:examId
| Langkah |
Harapan |
Buka kartu Petugas Ujian dan klik Atur |
Modal menampilkan user staff |
| Pilih author tambahan, proctor, dan grader |
Chip/nama tampil pada kolom yang benar |
| Simpan petugas |
Data persist setelah refresh |
| Login sebagai proctor terdelegasi |
/faculty/cbt/proctor hanya menampilkan ujian yang ditugaskan |
| Login sebagai guru generic yang tidak ditugaskan |
Proctor console tidak menampilkan ujian target |
CBT-LRN-004 - Launch Siswa dan Token - P0
Role: Siswa
URL: /student/cbt
| Langkah |
Harapan |
| Buka daftar ujian CBT |
Ujian learning muncul dengan status waktu yang benar |
| Klik kartu ujian sebelum waktu mulai |
Sistem menolak mulai atau menampilkan alasan blocked |
| Klik saat waktu aktif |
Modal token muncul |
| Isi token salah |
Error jelas dan audit token_invalid tercatat |
| Isi token benar |
Redirect ke /student/cbt/runner/:exam_id dan attempt dimulai |
| Periksa list schedule |
Token tidak terekspos langsung di list siswa |
CBT-LRN-005 - Runner Learning - P0
Role: Siswa
URL: /student/cbt/runner/:exam_id
| Langkah |
Harapan |
| Runner terbuka |
Header ujian, mapel, timer, status sync, tombol Selesai terlihat |
| Jawab semua tipe soal |
Jawaban tersimpan dan indikator progress berubah |
| Tandai soal untuk review |
Nomor soal berubah status dan persist selama sesi |
| Pindah tab/window atau paste jika policy aktif |
Integrity event tercatat dan proctor melihat flag |
| Refresh browser saat ujian berlangsung |
State attempt dan jawaban tersimpan kembali |
| Submit manual |
Attempt berubah submitted dan user diarahkan keluar runner |
| Biarkan waktu habis |
Auto-submit berjalan dan jawaban setelah expired ditolak |
CBT-LRN-006 - Proctor Learning - P0
Role: Assigned proctor
URL: /faculty/cbt/proctor
| Langkah |
Harapan |
| Pilih ujian dari dropdown |
Hanya ujian yang boleh diproctor tampil |
| Monitor saat siswa mulai |
Summary total, belum mulai, in progress, selesai, flagged berubah realtime atau setelah refresh |
| Buka flag peserta |
Modal integrity flags menampilkan jenis event dan waktu |
| Extend time dengan alasan |
Waktu peserta bertambah dan audit tercatat |
| Force submit dengan alasan |
Attempt submitted, siswa melihat pesan dihentikan |
| Reset attempt dengan alasan |
Attempt kembali ke state awal sesuai opsi full reset |
| Coba proctor ujian tidak ditugaskan via direct URL/API |
Backend menolak |
CBT-LRN-007 - Grading Essay dan Finalisasi - P0
Role: Guru author atau assigned grader
URL: /faculty/cbt/exams/:examId lalu /faculty/cbt/exams/:examId/grading/:attemptId
| Langkah |
Harapan |
| Buka section Penilaian |
Attempt submitted muncul |
| Klik Nilai |
Workspace memuat jawaban dan asset |
| Beri skor essay dan komentar |
Skor tersimpan dan total nilai berubah |
| Finalize grading |
Status attempt menjadi graded |
| Coba skor di luar rentang |
Validasi menolak |
| Login sebagai grader tidak ditugaskan |
Tidak bisa melihat attempt ujian target |
CBT-LRN-008 - Publish Nilai Learning ke Gradebook/e-Rapor - P0
Role: Guru author/admin akademik
URL: /faculty/cbt/exams/:examId dan report hasil CBT
| Langkah |
Harapan |
| Pastikan semua attempt sudah graded |
Publish enabled bila semua syarat terpenuhi |
| Buka Mapping Nilai |
Komponen gradebook terhubung ke ujian |
| Klik Publish ke Gradebook |
Nilai masuk gradebook secara idempotent |
| Buka report/pipeline |
Stage grading, gradebook, e-Rapor menampilkan status dan failure reason bila ada |
| Re-run publish |
Tidak membuat nilai duplikat |
| Buka portal siswa/e-Rapor terkait |
Nilai yang dipublish terlihat sesuai policy publikasi |
CBT-LRN-009 - Analytics, Item Analysis, Integrity Report, Export - P1
Role: Guru author/admin akademik
URL: Detail ujian dan route analytics
| Langkah |
Harapan |
| Buka Analisis Soal |
Distribusi nilai dan statistik tampil |
| Buka Item Analysis |
Analisis butir soal tampil sesuai attempt |
| Buka Integrity Report |
Event integritas per attempt tampil |
| Klik Export XLSX |
Download memakai path /api/scola_cbt/export/... dan file bisa dibuka |
| Login role yang tidak boleh export |
Tombol disabled atau backend menolak |
8. Workflow SPMB CBT Admission
CBT-SPMB-001 - Buat CBT Admission - P0
Role: Admin SPMB atau admin staff
URL: /admin/spmb/cbt/exams atau /admin-staff/admissions/cbt/exams
| Langkah |
Harapan |
| Klik Buat Ujian Baru |
Modal create terbuka dengan context admission terpaksa/forced |
| Isi nama, tipe ujian, question set, kode, durasi, waktu, total nilai |
Validasi field wajib berjalan |
| Simpan |
Ujian dibuat dengan badge context Admission |
| Buka detail |
Participant admission read-only dan pesan sinkronisasi jadwal terlihat |
| Login guru generic |
Tidak bisa membuat exam_context=admission |
CBT-SPMB-002 - Delegasi Petugas SPMB - P0
Role: Admin SPMB/admin staff
URL: Detail CBT admission
| Langkah |
Harapan |
| Atur author/proctor/grader spesifik |
Assignment tersimpan |
| Login proctor terdelegasi |
/admin/spmb/cbt/proctor atau /admin-staff/admissions/cbt/proctor menampilkan ujian admission target |
| Login proctor tidak ditugaskan |
Ujian target tidak muncul |
| Login grader terdelegasi |
Grading route admission dapat dibuka untuk attempt ujian target setelah submitted |
| Direct access ke exam admission lain |
Ditolak |
CBT-SPMB-003 - Mapping Jadwal SPMB ke CBT - P0
Role: Admin SPMB/admin staff
URL: /admin/spmb/test atau /admin-staff/admissions/test
| Langkah |
Harapan |
| Buat/edit jadwal seleksi |
Form jadwal memuat gelombang, jenis tes, tanggal, jam, lokasi, kapasitas, slot peserta |
Buka tab CBT Admission |
Dropdown hanya memuat CBT context admission |
| Pilih CBT exam dan simpan |
Card jadwal menampilkan nama CBT, ID exam, Auth SPMB, linked participant count |
| Klik Sync Peserta |
Participant CBT dibuat/linked dari slot SPMB |
| Refresh detail CBT admission |
Tabel participant menampilkan peserta hasil sync secara read-only |
| Coba sync tanpa CBT exam |
UI/backend menolak dengan pesan jelas |
CBT-SPMB-004 - Pendaftar Melihat Jadwal CBT - P0
Role: Pendaftar
URL: /spmb/admission/:id/tests dan /spmb/cbt
| Langkah |
Harapan |
| Buka jadwal tes pendaftar |
Card CBT Admission tampil bila jadwal punya cbt_exam_id |
| Klik Lihat Semua CBT |
/spmb/cbt menampilkan jadwal siap dan blocked |
| Jadwal belum aktif/belum memenuhi syarat |
Masuk bagian Belum Bisa Dimulai dengan reason |
| Jadwal aktif |
Masuk bagian Siap Dikerjakan dengan tombol Mulai Ujian |
| Pendaftar lain tanpa slot |
Tidak melihat jadwal ujian target |
CBT-SPMB-005 - Runner Admission - P0
Role: Pendaftar
URL: /spmb/cbt/runner/:exam_id
| Langkah |
Harapan |
Klik Mulai Ujian dari /spmb/cbt |
Runner terbuka tanpa meminta participant code manual |
| Jawab soal objektif dan essay |
Autosave berjalan |
| Submit |
Attempt submitted dan diarahkan kembali ke SPMB dengan status submitted |
| Buka kembali setelah submitted |
Sistem mencegah attempt baru kecuali retake dibuka |
| Token invalid atau feature disabled |
Pesan warning kembali ke SPMB start |
CBT-SPMB-006 - Proctor Admission - P0
Role: Proctor SPMB terdelegasi/admin SPMB
URL: /admin/spmb/cbt/proctor atau /admin-staff/admissions/cbt/proctor
| Langkah |
Harapan |
| Buka proctor SPMB |
Judul Proctor CBT SPMB dan dropdown hanya context admission |
| Pendaftar mulai ujian |
Status peserta berubah in progress |
| Lihat progress/flag |
Nama peserta, participant type, progress, flag tampil |
| Force submit atau extend time dengan alasan |
Action sukses, audit tercatat, attempt berubah sesuai action |
| Coba memonitor independent/learning dari route SPMB |
Tidak muncul di dropdown |
CBT-SPMB-007 - Grading dan Sync Nilai SPMB - P0
Role: Admin SPMB/admin staff/assigned grader
URL: Detail CBT admission dan /admin*/.../grading/:attemptId
| Langkah |
Harapan |
| Buka Penilaian setelah pendaftar submit |
Attempt admission muncul |
| Nilai essay dan finalize |
Total score terhitung |
| Buka jadwal seleksi |
Klik Sync Nilai atau Sync Semua |
| Periksa card jadwal |
Summary nilai menunjukkan synced, missing_attempt nol untuk peserta yang submit |
| Periksa detail pendaftar/ranking |
Skor tes masuk terisi dan ranking memakai skor terbaru |
| Re-run sync nilai |
Idempotent, tidak menggandakan hasil |
CBT-SPMB-008 - SPMB Negative RBAC - P0
| Role |
Langkah |
Harapan |
| Guru generic |
POST/create admission CBT atau buka route SPMB CBT internal |
Ditolak oleh FE dan backend |
| Admin staff tanpa capability CBT |
Buka /admin-staff/admissions/cbt/exams |
403/redirect atau menu tidak tampil |
| Pendaftar A |
Direct URL runner exam pendaftar B |
Ditolak karena slot/admission tidak cocok |
| Proctor tidak assigned |
Buka status exam admission via API |
Ditolak |
| Grader tidak assigned |
Buka attempt grading admission |
Ditolak |
9. Workflow CBT Independent
Alur terbaru (Phase 3): create ringkas → tab Pengaturan → tab Peserta (enroll multi-rombel). Lihat buat-ujian-cbt.md §B.
CBT-IND-001 - Buat Ujian Independent - P0
Role: Guru author/admin akademik
URL: /faculty/cbt/exams
| Langkah |
Harapan |
| Klik Buat Ujian Baru |
Modal create ringkas terbuka (nama, context, tipe, question set) |
Pilih context Independent |
Hint menjelaskan pengaturan & peserta di tab detail |
| Isi nama, tipe ujian, koleksi soal |
Validasi berjalan |
| Klik Buat & Atur Pengaturan |
Redirect ke /faculty/cbt/exams/:id/settings |
| Tab Pengaturan: isi jadwal, durasi, KKM → Simpan |
Field tersimpan; ujian siap di-enroll |
| Tab Ringkasan |
Checklist publish + token terlihat |
CBT-IND-002 - Peserta Independent (Enrollment Center) - P0
Role: Guru author/admin akademik
URL: /faculty/cbt/exams/:examId/participants
| Langkah |
Harapan |
| Buka tab Peserta |
Panel enrollment + tabel peserta |
Pilih satu atau lebih rombel (bukan [CBT]*) |
Preview jumlah siswa per rombel (student_count) |
| Klik Daftarkan dari rombel |
Peserta internal aktif muncul di tabel |
| Klik Tambah Peserta |
Modal: siswa internal (filter rombel) atau external |
| Import internal: paste NIS/NISN per baris |
Peserta student ter-resolve |
Import external: Nama,KODE atau upload CSV template |
Peserta external muncul |
| Centang beberapa baris → Block / Hapus |
Bulk state/remove berhasil |
| Block participant tunggal |
Peserta tidak bisa start runner |
| Unblock participant |
Peserta bisa start lagi jika waktu/token valid |
CBT-IND-003 - Public Start dan Runner Independent - P0
Role: Peserta external
URL: /cbt/public
| Langkah |
Harapan |
Buka /cbt/public |
Form Exam ID, Exam Token, Participant Code terlihat |
| Isi Exam ID salah |
Error jelas atau redirect failed |
| Isi token salah |
Start ditolak dan audit token_invalid tercatat |
| Isi participant code blocked |
Start ditolak |
| Isi data valid |
Redirect ke /cbt/public/runner/:exam_id |
| Kerjakan dan submit |
Attempt submitted, kembali ke /cbt/public?status=submitted |
CBT-IND-004 - Proctor dan Grading Independent - P0
Role: Assigned proctor/grader
URL: /faculty/cbt/proctor, /faculty/cbt/exams/:examId/grading/:attemptId
| Langkah |
Harapan |
| Proctor membuka dropdown |
Exam independent yang ditugaskan tampil |
| Peserta external mulai ujian |
Participant type external terlihat |
| Proctor force submit/extend/reset |
Action sukses dan audit tercatat |
| Grader membuka attempt submitted |
Jawaban dan participant external termuat |
| Finalize grading |
Nilai final masuk report independent |
| Coba sync gradebook/e-Rapor |
Tidak tersedia untuk independent, atau ditolak dengan pesan jelas |
CBT-IND-005 - Report Independent - P1
Role: Author/admin akademik
URL: Detail exam, analytics, item analysis, integrity report
| Langkah |
Harapan |
| Buka analytics |
Statistik peserta independent tampil |
| Export hasil |
File berisi participant code/name, score, status |
| Buka integrity report |
Event peserta external tampil |
| Periksa visibility data |
Peserta independent tidak muncul di gradebook/e-Rapor learning |
10. Cross-Workflow RBAC dan Contract
| Role |
Menu/route yang harus tampil |
Menu/route yang tidak boleh tampil |
| Siswa |
/student/cbt, runner siswa |
/faculty/cbt/*, /admin/cbt/*, /admin/spmb/cbt/* |
| Pendaftar |
/spmb/cbt, runner SPMB |
/student/cbt, /faculty/cbt/*, admin SPMB internal |
| Peserta external |
/cbt/public dan runner publik |
Semua route authenticated |
| Guru author |
Bank soal, ujian CBT, grading own/assigned |
Proctor console jika tidak punya capability/assignment |
| Assigned proctor |
Proctor console untuk ujian assigned |
Edit bank soal, create exam admission, grading unrelated |
| Assigned grader |
Grading ujian assigned |
Proctor action, grading unrelated |
| Admin SPMB/admin staff |
CBT SPMB, jadwal SPMB, proctor/grading SPMB sesuai capability |
Direct management context non-SPMB bila tidak punya capability akademik |
| Admin |
Settings/audit dan operasi sesuai role |
Tidak boleh bypass backend scope tanpa capability yang sesuai |
CBT-RBAC-002 - Backend sebagai Security Boundary - P0
| Langkah |
Harapan |
| Buka route direct yang tidak ada di menu |
Backend tetap menolak akses data/action |
| Coba query list proctor exams sebagai user tidak assigned |
Response sukses dengan list kosong atau 403 yang jelas |
| Coba start exam bukan peserta |
Ditolak |
| Coba grade attempt ujian lain |
Ditolak |
| Coba export hasil dengan role yang tidak boleh export |
Ditolak/disabled |
CBT-CONTRACT-001 - Same-Origin API dan Export - P0
| Langkah |
Harapan |
| Buka DevTools Network saat list/create/start/submit |
Request memakai /api/... dari same-origin |
| Klik export hasil dan integrity |
URL download diawali /api/scola_cbt/export/... atau host FE yang sama |
Build production tidak set VITE_API_URL cross-origin |
Tidak ada CORS credential issue |
| Error backend JSON-RPC |
UI menampilkan pesan jelas, bukan blank page |
CBT-SEC-001 - Token dan Timing - P0
| Langkah |
Harapan |
| Token di list exam author |
Masked by default, reveal hanya saat user klik Lihat |
| Token di student schedule |
Tidak tampil |
| Regenerate token |
Token lama tidak bisa dipakai, token baru bisa dipakai |
Start attempt dekat exam.end_time |
attempt.end_time tidak melewati waktu selesai ujian |
| Submit/sync setelah timeout |
Ditolak atau auto-submit, tidak menerima jawaban baru |
CBT-UX-001 - UX Minimum - P1
| Area |
Harapan |
| Empty state |
Menjelaskan apa yang harus dilakukan berikutnya |
| Error state |
Pesan spesifik, tidak hanya Failed |
| Loading |
Ada spinner/loading text pada aksi lama |
| Mobile |
List, modal, runner, dan proctor tidak overlap di viewport mobile |
| Terminologi |
Konsisten: Proctor, Penilai, Peserta, Pendaftar, Siswa sesuai konteks (bukan Participant di UI) |
| Alur |
User tidak perlu pindah halaman berulang tanpa petunjuk. CTA berikutnya jelas |
11. Known Gaps yang Wajib Diretest
Daftar ini berasal dari audit operasional 2026-05-04. Jika backend sudah dipatch setelah audit, test case di bawah harus berubah dari expected fail menjadi PASS.
| Gap |
Test wajib |
Expected ideal |
| Assigned grader admission pernah tidak melihat submitted attempt |
CBT-SPMB-007, CBT-RBAC-002 |
Assigned grader melihat hanya attempt ujian yang ditugaskan |
| Grader terdelegasi pernah membutuhkan ACL OpenEduCat yang terlalu luas |
CBT-LRN-007, CBT-SPMB-007, CBT-IND-004 |
Controller melakukan scoped access check berbasis assignment, bukan akses global |
| Assignment staff pernah memberi global CBT group |
CBT-RBAC-001, CBT-RBAC-002 |
Group hanya membuka shell/menu; data/action tetap exam-scoped |
| Failed create pernah meninggalkan draft exam |
CBT-SPMB-001, CBT-IND-001 dengan input invalid |
Failed create rollback penuh, tidak ada draft orphan |
| QA generic teacher belum stabil di dev |
CBT-SPMB-008 |
Tersedia akun guru low-privilege non-admin untuk regression RBAC |
12. Exit Criteria
UAT CBT dapat dinyatakan lulus bila:
- Semua P0 untuk
learning, admission/SPMB, dan independent PASS.
- Tidak ada route role-sensitive yang bisa dibuka oleh role tidak berhak.
- Token tidak terekspos ke siswa/pendaftar di halaman schedule/list.
- Attempt timing, autosave, submit, timeout, dan force submit konsisten.
- Grading essay dan finalize bekerja untuk author dan assigned grader sesuai scope.
- SPMB sync peserta dan sync nilai idempotent.
- Learning publish ke gradebook/e-Rapor idempotent dan menampilkan pipeline/failure reason.
- Export memakai same-origin
/api.
- Audit log mencatat event penting: create/publish exam, start/submit attempt, invalid token, proctor action, grade publish.
- Semua known gap di section 11 sudah PASS atau didaftarkan sebagai defect terpisah dengan owner dan target fix.
13. Template Laporan UAT
| Field |
Isi |
| Tanggal eksekusi |
|
| Environment |
|
| Browser |
|
| Tester |
|
| Build/commit FE |
|
| Versi module BE |
|
| Workflow diuji |
Learning / SPMB / Independent |
| Role diuji |
|
| Data ID |
Exam ID, Attempt ID, Schedule ID, Participant ID |
| Ringkasan hasil |
PASS / FAIL / PARTIAL |
| Defect blocker |
|
| Screenshot/evidence |
|
| Catatan follow-up |
|
ID:
Severity: P0/P1/P2
Workflow:
Role:
URL:
Data ID:
Steps:
Expected:
Actual:
Evidence:
Suspected area: FE / BE / Data / Environment
13. Riwayat
| Tanggal |
Versi |
Perubahan |
| 2026-05-04 |
1.0 |
Dokumen awal matriks UAT CBT |
| 2026-06-11 |
1.1 |
§9 Independent: create ringkas, tab workspace, enrollment center, bulk peserta; matriks route :tab? |