Lewati ke isi

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:

  1. Jalankan di browser baru atau profil terpisah sesuai role.
  2. Catat URL aktual dan role yang sedang login.
  3. Simpan screenshot awal dan akhir untuk P0.
  4. Bila ada API gagal, simpan response Network tab.
  5. Isi status PASS, FAIL, atau SKIP.
  6. 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

CBT-RBAC-001 - Menu dan Route Capability - P0

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

Format Defect

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?