Blackbox Testing - Pembubaran PP (PP)
- Domain: PP
- Fitur: Pembubaran PP (Perseroan Perorangan)
- Role/aktor: perseroan (pilih PP, pilih alasan, unggah KTP, tinjau, finalisasi, konfirmasi).
- Tanggal uji: 2026-08-19
- Penguji (sesi): Supervisor PP
- Build/commit: 63c40a17
1. Ringkasan fitur
Pembubaran PP adalah alur mandiri (self-service) terminal untuk membubarkan Perseroan Perorangan yang sudah terdaftar. Berbasis registry: pemohon memilih PP, memilih minimal satu alasan pembubaran dari 6 dasar hukum (UU Cipta Kerja / PP 8/2021), lalu mengunggah KTP pemilik untuk pencocokan identitas. Tidak ada OCR akta. Setelah gate lolos, submission masuk MENUNGGU_KONFIRMASI lalu COMPLETED (yang menandai PP bubar di catatan lokal PoC). Registry berjalan mode real; pengujian memakai PP nyata idPtp 952322 "NIR VANA NET" dengan pemilik SEBASTIAN MUALIM.
2. Full workflow
2.1 Diagram state
stateDiagram-v2
[*] --> READY: POST /start (idPtp) [resume bila ada draft]
READY --> READY: pilih alasan / unggah KTP -> re-validate
READY --> MENUNGGU_KONFIRMASI: POST /finalize (gate lolos)
MENUNGGU_KONFIRMASI --> COMPLETED: POST /konfirmasi (PP bubar)
MENUNGGU_KONFIRMASI --> KEDALUWARSA: lewat batas konfirmasi
COMPLETED --> [*]
2.2 Sequence (aktor - sistem)
sequenceDiagram
actor U as perseroan
participant FE as Frontend
participant BE as Backend
participant REG as Registry PP (read-only)
participant OCR as OCR
U->>FE: Pilih PP terdaftar
FE->>BE: GET /api/pp/pembubaran/registry?q=
FE->>BE: POST /api/pp/pembubaran/start {idPtp}
BE->>REG: lookupPpById -> snapshot pemilik
BE-->>FE: READY (resume bila draft ada)
U->>FE: Pilih alasan + unggah KTP
FE->>BE: POST /:id/alasan {alasanIds}, POST /:id/document (KTP)
BE->>OCR: OCR KTP -> cocokkan NIK/nama ke pemilik terdaftar
U->>FE: Setujui pernyataan + Finalisasi
FE->>BE: POST /finalize -> MENUNGGU_KONFIRMASI
U->>FE: Konfirmasi akhir
FE->>BE: POST /konfirmasi -> COMPLETED (PP bubar)
2.3 Peta route & UI
| Langkah |
Route |
Komponen |
Elemen interaktif utama |
Selector |
| Pilih PP |
/pp/pembubaran |
PpPembubaranSelectPage |
kotak cari, daftar hasil, Lanjutkan |
aria-label="Cari Perseroan Perorangan terdaftar" |
| Unggah |
/pp/pembubaran/:id/upload |
PpPembubaranUploadPage |
dropzone KTP, preview KTP, hapus KTP, picker alasan (6), "Lanjut ke Tinjauan" |
ktp-upload-preview, aria-label="Hapus KTP" |
| Tinjau |
/pp/pembubaran/:id/review |
PpPembubaranReviewPageV2 |
ringkasan PP+pemilik+alasan+KTP, setujui pernyataan, Finalisasi, hitung mundur |
- |
3. Prasyarat & data uji
| ID data |
Tipe |
Berkas |
Deskripsi |
Ekspektasi |
| PP-REG |
Prasyarat |
idPtp 952322 "NIR VANA NET" |
PP nyata aktif, pemilik SEBASTIAN MUALIM |
Bisa dipilih, PP_ACTIVE PASS |
| KTP-Pembubaran |
Positive |
Pembubaran PP/ktp1.jpg |
KTP pemilik (SEBASTIAN MUALIM, NIK 3272020904970001) |
OWNER_MATCH + NAME_MATCH PASS |
4. Matriks skenario uji
| ID |
Tipe |
Lapisan |
Langkah ringkas |
Ekspektasi |
Hasil aktual |
Status |
Bukti |
| TC-01 |
Positive |
API |
GET registry + alasan |
952322 terlist, 6 alasan |
keduanya benar |
PASS |
log |
| TC-02 |
Positive |
API |
Start 952322 (ada draft dari UI) |
resume submission |
resumed:true, READY |
PASS |
log |
| TC-03 |
Negative |
API |
Start idPtp bogus |
404 PP_NOT_FOUND |
404 PP_NOT_FOUND |
PASS |
log |
| TC-04 |
Negative |
API |
Finalisasi tanpa alasan |
409 ALASAN_REQUIRED |
409 ALASAN_REQUIRED |
PASS |
log |
| TC-05 |
Negative |
API |
Pilih alasan [] kosong |
400 ALASAN_REQUIRED |
400 "Pilih minimal satu alasan" |
PASS |
log |
| TC-06 |
Negative |
API |
Unggah documentType=NPWP |
400 must be KTP |
400 "documentType must be KTP" |
PASS |
log |
| TC-07 |
Positive |
API |
Pilih alasan [1] + unggah KTP |
tersimpan, OCR ok |
200 + ocr ok |
PASS |
log |
| TC-08 |
Positive |
API |
Cek 4 aturan validasi |
semua PASS |
ALASAN_NONEMPTY, OWNER_MATCH, OWNER_NAME_MATCH, PP_ACTIVE semua PASS |
PASS |
validations |
| TC-09 |
Negative |
API |
Finalisasi sebelum setuju pernyataan |
409 SECTIONS_NOT_APPROVED |
409 SECTIONS_NOT_APPROVED |
PASS |
log |
| TC-10 |
Positive |
API |
Setujui pernyataan + Finalisasi |
MENUNGGU_KONFIRMASI |
200 MENUNGGU_KONFIRMASI (expiry 7 hari) |
PASS |
log |
| TC-11 |
Positive |
Kode |
Konfirmasi -> COMPLETED (PP bubar) |
COMPLETED |
TIDAK dieksekusi (lihat catatan) |
N/A |
- |
| TC-12 |
Positive |
UI |
Picker -> upload page (KTP + alasan) |
halaman render |
picker + preview KTP SEBASTIAN MUALIM + 6 alasan + "Lanjut ke Tinjauan" |
PASS |
ui-01/02/03 |
Catatan TC-11: langkah POST /konfirmasi menandai PP bubar (COMPLETED PEMBUBARAN_PP lokal). Karena pengujian ini memakai PP nyata (952322) dan pilihan pengguna adalah menghindari perubahan data nyata, langkah konfirmasi TIDAK dijalankan. Mekanismenya identik dengan konfirmasi Perbaikan PP yang sudah terbukti mencapai COMPLETED (lihat laporan Perbaikan TC-02). Efek dissolution hanya ke basis data lokal dev_4; registry PROD tetap read-only tak tersentuh.
5. Cakupan UI (semua yang diakses user)
| Route/Elemen |
Diuji? |
Perilaku benar? |
Catatan |
/pp/pembubaran kotak cari + hasil |
Ya |
Ya |
NIR VANA NET |
| Tombol Lanjutkan (gate PP) |
Ya |
Ya |
disabled sampai PP dipilih |
/pp/pembubaran/:id/upload dropzone KTP + preview |
Ya |
Ya |
preview + NIK/nama terbaca |
| Hapus KTP |
Ada |
- |
selector aria-label="Hapus KTP" tersedia |
| Picker alasan (6 dasar hukum) |
Ya |
Ya |
multi-select |
| "Lanjut ke Tinjauan" (gate KTP+alasan) |
Ya |
Ya |
butuh KTP selesai + alasan |
/pp/pembubaran/:id/review ringkasan + Finalisasi |
Ya (API) |
Ya |
MENUNGGU_KONFIRMASI |
6. Temuan bug & perbaikan
| ID bug |
Severity |
Ringkas |
Reproduksi |
Ekspektasi |
Aktual |
Rekomendasi perbaikan |
| - |
- |
Tidak ditemukan bug |
- |
- |
Seluruh gate dan aturan validasi berperilaku benar |
- |
Tidak ada bug pada Pembubaran PP. Semua gate (alasan wajib, KTP wajib bertipe KTP, pencocokan pemilik, PP aktif, persetujuan pernyataan) berfungsi sesuai harapan. Guardrail sistem (auto-mode) juga mencegah eksekusi dissolution nyata secara tidak sengaja, yang justru sesuai kebijakan read-only.
7. Ringkasan & rekomendasi
- Total skenario: 12 (PASS 11 / N/A 1). Yang N/A adalah TC-11 konfirmasi yang sengaja tidak dieksekusi terhadap PP nyata.
- Cakupan UI: 7/7 kelompok elemen (picker + upload via Playwright, review via API).
- Bug: High 0, Med 0, Low 0.
- Rekomendasi prioritas: tidak ada perbaikan mendesak. Bila diperlukan pengujian dissolution penuh, sediakan PP uji khusus (bukan PP nyata) atau mode mock agar
POST /konfirmasi dan kasus PP_DISSOLVED (start ulang setelah bubar) bisa diverifikasi.
- Gap/keterbatasan: konfirmasi->COMPLETED dan kasus PP_DISSOLVED tidak dieksekusi demi menjaga data registry nyata; keduanya terverifikasi lewat kode dan analog dengan Perbaikan.