# Skenario Black-Box dan UAT

## Petunjuk Pelaksanaan

Dokumen ini adalah rancangan pengujian manual; mikro-fase 10.2 tidak mengeksekusi seluruh skenario. Penguji mengisi kolom hasil pada salinan dokumen atau lembar UAT terpisah.

Status hasil yang digunakan:

- `LULUS`: hasil aktual sesuai hasil yang diharapkan;
- `GAGAL`: terdapat perbedaan yang dapat direproduksi;
- `TERTUNDA`: prasyarat/data/lingkungan belum tersedia;
- `TIDAK BERLAKU`: disetujui tidak relevan untuk sesi UAT tersebut.

Untuk setiap kegagalan, catat ID skenario, waktu, role, URL, langkah reproduksi, hasil aktual, screenshot, dan tingkat dampak. Jangan memasukkan password, isi `.env`, cookie, atau token CSRF ke bukti.

## Prasyarat Data UAT

- Lingkungan UAT terpisah dari produksi.
- HTTPS atau localhost yang dipercaya.
- Empat akun UAT individual dengan role resmi; password dikelola di luar dokumen.
- Minimal dua akun Pegawai dan dua akun Teknisi untuk menguji ownership.
- Minimal dua aset UAT dengan kode unik.
- File gambar valid JPG/PNG/WEBP dan file negatif berupa format/ukuran yang tidak diizinkan.
- Scheduler SLA dinonaktifkan selama penyusunan data bila notifikasi waktu belum ingin diproses.
- Database UAT telah dibackup sebelum eksekusi penuh.

## Matriks Black-Box

| ID | Role | Skenario dan langkah ringkas | Hasil yang diharapkan |
|---|---|---|---|
| BB-AUTH-01 | Semua | Login dengan username/password valid | Masuk ke dashboard sesuai role; session baru terbentuk |
| BB-AUTH-02 | Semua | Login dengan password salah | Login ditolak dengan pesan generik; password tidak ditampilkan |
| BB-AUTH-03 | Semua | Kirim form login tanpa/CSRF salah | Request ditolak dan tidak membuat sesi login |
| BB-AUTH-04 | Semua | Logout melalui dialog konfirmasi | Sesi berakhir dan kembali ke login |
| BB-AUTH-05 | Semua | Akses URL role lain | Respons akses ditolak; data role lain tidak tampil |
| BB-AUTH-06 | Semua | Nonaktifkan akun aktif di DB, lalu buka halaman lain | Sesi diputus dan pengguna diminta login kembali |
| BB-PROF-01 | Semua | Ubah nama/unit dengan data valid | Profil dan topbar diperbarui |
| BB-PROF-02 | Semua | Ubah password dengan password lama salah | Perubahan ditolak tanpa membocorkan password |
| BB-PROF-03 | Semua | Ubah password valid lalu gunakan token form lama | Password berubah; konteks sesi/CSRF lama tidak dapat digunakan kembali |
| BB-PEG-01 | Pegawai | Buat tiket lengkap dengan satu foto valid | Nomor tiket unik terbit, status Diajukan, log dan notifikasi TU terbentuk |
| BB-PEG-02 | Pegawai | Buat tiket tanpa foto | Validasi menolak pengajuan |
| BB-PEG-03 | Pegawai | Upload ekstensi/MIME tidak sesuai atau melewati batas | Upload ditolak; tidak ada file/record parsial |
| BB-PEG-04 | Pegawai | Cari dan filter Tiket Saya | Hanya tiket milik akun login yang tampil |
| BB-PEG-05 | Pegawai A | Ubah ID URL menjadi tiket Pegawai B | Tiket tidak ditampilkan |
| BB-TU-01 | TU | Buka antrean pemeriksaan dan detail tiket | Data pelapor, aset, foto, status, dan timeline tampil |
| BB-TU-02 | TU | Minta revisi tanpa alasan | Validasi menolak keputusan |
| BB-TU-03 | TU | Minta revisi dengan alasan valid | Status Perlu Revisi, verification/log/notifikasi Pegawai terbentuk |
| BB-PEG-06 | Pegawai | Revisi tiket milik sendiri dan ajukan ulang | Status Revisi Diajukan; foto lama tetap ada; log/notifikasi TU bertambah |
| BB-PEG-07 | Pegawai | Coba revisi tiket yang bukan status Perlu Revisi | Tindakan ditolak tanpa perubahan data |
| BB-TU-04 | TU | Nyatakan tiket Diajukan/Revisi Diajukan sebagai valid | Status Terverifikasi dan verification VALID terbentuk |
| BB-TU-05 | TU | Ajukan tiket terverifikasi tanpa catatan/konfirmasi | Validasi menolak pengajuan |
| BB-TU-06 | TU | Ajukan tiket valid dengan catatan | Status Menunggu Persetujuan; Pimpinan menerima notifikasi |
| BB-PIM-01 | Pimpinan | Filter antrean dan buka detail persetujuan | Tiket yang menunggu keputusan tampil lengkap |
| BB-PIM-02 | Pimpinan | Setujui tiket | Satu approval SETUJU, status Disetujui, log/notifikasi terkait terbentuk |
| BB-PIM-03 | Pimpinan | Tolak tiket tanpa alasan | Validasi menolak keputusan |
| BB-PIM-04 | Pimpinan | Tolak tiket dengan alasan | Satu approval TOLAK, status Ditolak, log/notifikasi terbentuk |
| BB-PIM-05 | Pimpinan | Kirim ulang keputusan untuk tiket yang sudah diputus | Keputusan ganda ditolak; approval lama tetap tunggal |
| BB-TU-07 | TU | Tetapkan SLA kosong/lampau | Validasi menolak penyimpanan |
| BB-TU-08 | TU | Tetapkan SLA masa depan dengan konfirmasi | SLA tersimpan satu kali; log/notifikasi Pegawai terbentuk; status tetap Disetujui |
| BB-TU-09 | TU | Coba menetapkan ulang SLA | Perubahan kedua ditolak |
| BB-TU-10 | TU | Tugaskan Teknisi sebelum SLA | Tindakan tidak tersedia/ditolak |
| BB-TU-11 | TU | Tugaskan Teknisi aktif setelah SLA | Assignment tunggal terbentuk, status Ditugaskan, log/notifikasi terbentuk |
| BB-TEK-01 | Teknisi | Lihat daftar tugas | Hanya assignment milik Teknisi login yang tampil |
| BB-TEK-02 | Teknisi A | Ubah ID URL menjadi assignment Teknisi B | Tugas tidak ditampilkan dan tidak dapat diubah |
| BB-TEK-03 | Teknisi | Mulai tugas baru | `started_at` terisi, status Dikerjakan, log/notifikasi terbentuk |
| BB-TEK-04 | Teknisi | Mulai tugas yang sudah dimulai | Permintaan ditolak tanpa transisi/log ganda |
| BB-TEK-05 | Teknisi | Tambah progres valid | Work log tersimpan dan timeline progres bertambah |
| BB-TEK-06 | Teknisi | Simpan hasil tanpa tindakan | Validasi menolak penyimpanan |
| BB-TEK-07 | Teknisi | Simpan tindakan dan biaya nonnegatif | Hasil tersimpan dan biaya tampil konsisten |
| BB-TEK-08 | Teknisi | Isi biaya negatif/tidak valid | Validasi menolak penyimpanan |
| BB-TEK-09 | Teknisi | Upload bukti selesai valid | File privat dan record BUKTI_SELESAI terbentuk |
| BB-TEK-10 | Teknisi | Tutup tiket tanpa tindakan atau bukti | Penutupan ditolak |
| BB-TEK-11 | Teknisi | Tutup tiket setelah seluruh syarat tersedia | Status Selesai, `completed_at`, log, serta notifikasi terbentuk |
| BB-TEK-12 | Teknisi | Tambah progres setelah selesai | Tindakan ditolak; tugas baca-saja |
| BB-FILE-01 | Pemilik/berwenang | Buka foto melalui route file | Gambar tampil dengan respons privat/no-store |
| BB-FILE-02 | Tidak berwenang | Ubah ID file ke tiket yang tidak boleh dilihat | Akses ditolak; path storage tidak bocor |
| BB-NOTIF-01 | Semua | Tandai satu notifikasi dibaca | Hanya notifikasi milik pengguna berubah dan diarahkan ke objek terkait |
| BB-NOTIF-02 | Semua | Tandai semua dibaca | Seluruh notifikasi milik pengguna berubah; pengguna lain tidak terpengaruh |
| BB-SLA-01 | TU/Teknisi | Jalankan command reminder pada data mendekati SLA | Penerima sesuai role mendapat satu reminder untuk event yang sama |
| BB-SLA-02 | TU/Teknisi/Pimpinan | Jalankan ulang event reminder yang sama | Tidak terbentuk duplikat untuk event key yang sama |
| BB-LAP-01 | TU/Pimpinan | Terapkan kombinasi filter laporan | Ringkasan dan baris mengikuti seluruh filter |
| BB-LAP-02 | TU/Pimpinan | Ekspor CSV dengan filter aktif | CSV memuat metadata dan dataset yang sama; formula berbahaya dinetralisir |
| BB-AUD-01 | TU/Pimpinan | Buka riwayat aset | Seluruh tiket aset dan ringkasan isu tampil baca-saja |
| BB-AUD-02 | TU/Pimpinan | Filter audit periode/pelaku/status | Hanya log sesuai filter tampil kronologis |
| BB-AUD-03 | Pegawai/Teknisi | Coba akses audit penuh | Akses ditolak |
| BB-RESP-01 | Semua | Gunakan halaman utama pada lebar 360 px | Konten dapat dibaca, navigasi dapat dibuka, form dapat digunakan tanpa kehilangan aksi utama |
| BB-ERR-01 | Semua | Buka route tidak ada dan kirim method salah | Muncul 404 atau 405 yang aman tanpa stack trace saat production |

## Skenario UAT Berbasis Proses Bisnis

### UAT-01 — Tiket valid sampai selesai

1. Pegawai membuat tiket dengan foto kerusakan.
2. TU memeriksa dan menyatakan valid.
3. TU mengajukan tiket kepada Pimpinan.
4. Pimpinan menyetujui.
5. TU menetapkan SLA dan menugaskan Teknisi.
6. Teknisi memulai, mencatat progres, tindakan, dan biaya bila ada.
7. Teknisi mengunggah bukti dan menyelesaikan tiket.
8. Pegawai, TU, dan Pimpinan memeriksa hasil akhir, notifikasi, dan timeline.

Kriteria penerimaan: nomor/status konsisten pada seluruh role, bukti privat dapat dilihat pihak berwenang, tidak ada langkah yang dapat dilakukan role salah, dan audit berakhir pada Selesai.

### UAT-02 — Revisi kemudian disetujui

1. Pegawai membuat tiket dengan data yang perlu diperbaiki.
2. TU meminta revisi dengan alasan.
3. Pegawai memperbaiki dan mengajukan ulang.
4. TU memverifikasi valid dan alur dilanjutkan sampai keputusan Pimpinan.

Kriteria penerimaan: alasan revisi terlihat Pegawai, foto lama tidak hilang, status Revisi Diajukan tercatat, dan audit tidak menimpa log lama.

### UAT-03 — Penolakan final

1. Tiket valid diajukan kepada Pimpinan.
2. Pimpinan menolak dengan alasan wajib.
3. Pegawai dan TU membuka hasil keputusan.

Kriteria penerimaan: status Ditolak final, alasan tersedia bagi pihak terkait, tiket tidak dapat diberi SLA/assignment, dan keputusan hanya satu.

### UAT-04 — Ownership dan otorisasi

1. Pegawai A mencoba membuka tiket Pegawai B.
2. Teknisi A mencoba membuka/mengubah assignment Teknisi B.
3. Pegawai/Teknisi mencoba membuka laporan atau audit penuh.
4. Pimpinan mencoba route mutasi TU.

Kriteria penerimaan: seluruh akses lintas ownership/role ditolak tanpa membocorkan isi objek.

### UAT-05 — Monitoring dan laporan

1. Siapkan tiket aktif dengan SLA aman, mendekati, terlambat, dan tiket selesai.
2. TU membuka pemantauan dan menerapkan filter.
3. TU/Pimpinan membuka laporan periode yang sama dan mengekspor CSV.
4. Buka riwayat aset serta audit salah satu tiket.

Kriteria penerimaan: klasifikasi SLA tidak mengubah status proses, angka ringkasan konsisten dengan detail, dan ekspor dapat ditelusuri kembali ke filter.

## Formulir Persetujuan UAT

```text
Nama aplikasi     : Aplikasi Usulan Perbaikan Inventaris
Versi/release     : ______________________________
Lingkungan/URL    : ______________________________
Tanggal           : ______________________________
Unit penguji      : ______________________________

Jumlah LULUS      : ______
Jumlah GAGAL      : ______
Jumlah TERTUNDA   : ______
Isu blocker       : ______________________________

Keputusan:
[ ] Diterima
[ ] Diterima dengan catatan
[ ] Belum diterima

Catatan penerimaan:
__________________________________________________

Perwakilan Pegawai  Nama/TTD: ____________________
Perwakilan TU       Nama/TTD: ____________________
Perwakilan Pimpinan Nama/TTD: ____________________
Perwakilan Teknisi  Nama/TTD: ____________________
Peneliti/Developer  Nama/TTD: ____________________
```

## Checklist Penutupan UAT

- [ ] Seluruh isu blocker telah ditutup atau diterima risikonya secara tertulis.
- [ ] Bukti tidak memuat password, token, cookie, atau data pribadi berlebih.
- [ ] Data UAT tidak akan dipindahkan ke produksi.
- [ ] Pemilik proses menyetujui alur empat role.
- [ ] Perbedaan antara kebutuhan skripsi dan hasil aktual dicatat.
- [ ] Release yang diterima dapat diidentifikasi dan dipulihkan.
