# ๐Ÿงช Step-by-Step Testing Guide untuk Registrasi ## ๐ŸŽฏ Tujuan Memastikan fitur registrasi dan login bekerja dengan sempurna setelah perbaikan. --- ## ๐Ÿ“‹ Pre-Test Checklist - [ ] Android Studio sudah open - [ ] Project sudah ter-load - [ ] Emulator/Device sudah connected - [ ] Tidak ada build error --- ## ๐Ÿš€ Test Scenario 1: Registrasi Pertama Kali (Sukses) ### Input Data: ``` Nama Lengkap: Febby Dwiss NPM: 20231071513 Password: password123 ``` ### Langkah-Langkah: 1. **Jalankan aplikasi** - Tekan โ–ถ๏ธ (Run) di Android Studio - Tunggu app terbuka di emulator - Pastikan melihat LoginScreen 2. **Klik "Belum punya akun? Daftar"** - Otomatis navigate ke RegisterScreen - Melihat 3 input field: Nama, NPM, Password 3. **Isi form dengan data di atas** - Nama: `Febby Dwiss` (atau nama apa saja) - NPM: `20231071513` (atau NPM valid yang belum terdaftar) - Password: `password123` 4. **Klik tombol "Daftar"** - Tunggu beberapa detik - Observasi: Lihat Toast notification ### Expected Output โœ…: ``` Toast: "Pendaftaran Berhasil! Silakan login" Screen: Automatically navigate to LoginScreen Database: Akun disimpan ke database ``` ### Jika Gagal โŒ: ``` Buka Logcat: 1. View โ†’ Tool Windows โ†’ Logcat 2. Filter: DatabaseHelper 3. Cari ERROR message 4. Screenshot error dan share ``` --- ## ๐Ÿš€ Test Scenario 2: Registrasi dengan NPM Duplikat (Harus Ditolak) ### Input Data: ``` Nama Lengkap: User Berbeda NPM: 20231071513 (SAMA dengan Test 1) Password: password456 ``` ### Langkah-Langkah: 1. **Dari LoginScreen, klik "Belum punya akun? Daftar"** - Navigate ke RegisterScreen 2. **Isi form dengan data di atas** - Nama: `User Berbeda` - NPM: `20231071513` (SAMA dengan test sebelumnya) - Password: `password456` 3. **Klik tombol "Daftar"** - Tunggu beberapa detik ### Expected Output โœ…: ``` Toast: "NPM sudah terdaftar! Gunakan NPM lain atau login" Screen: TETAP di RegisterScreen (tidak navigate) Database: Data TIDAK ditambahkan ``` ### Jika Gagal โŒ: ``` Jika toast mengatakan berhasil padahal NPM sudah ada = BUG โ†’ Screenshot dan share ``` --- ## ๐Ÿš€ Test Scenario 3: Registrasi dengan NPM Terlalu Pendek ### Input Data: ``` Nama Lengkap: Test User NPM: 2023107 (HANYA 7 DIGIT, kurang dari 8) Password: password123 ``` ### Langkah-Langkah: 1. **Dari LoginScreen, klik "Belum punya akun? Daftar"** 2. **Isi form:** - Nama: `Test User` - NPM: `2023107` (hanya 7 digit) - Password: `password123` 3. **Klik tombol "Daftar"** ### Expected Output โœ…: ``` Toast: "NPM harus minimal 8 karakter" Screen: TETAP di RegisterScreen Database: Data TIDAK ditambahkan ``` --- ## ๐Ÿš€ Test Scenario 4: Registrasi dengan NPM Mengandung Huruf ### Input Data: ``` Nama Lengkap: Test User NPM: 2023ABC7 (BERISI HURUF) Password: password123 ``` ### Langkah-Langkah: 1. **Dari LoginScreen, klik "Belum punya akun? Daftar"** 2. **Isi form:** - Nama: `Test User` - NPM: `2023ABC7` (atau kombinasi huruf+angka apa saja) - Password: `password123` 3. **Klik tombol "Daftar"** ### Expected Output โœ…: ``` Toast: "NPM hanya boleh berisi angka" Screen: TETAP di RegisterScreen Database: Data TIDAK ditambahkan ``` --- ## ๐Ÿš€ Test Scenario 5: Registrasi dengan Password Terlalu Pendek ### Input Data: ``` Nama Lengkap: Test User NPM: 20231071234 Password: pass1 (HANYA 5 KARAKTER) ``` ### Langkah-Langkah: 1. **Dari LoginScreen, klik "Belum punya akun? Daftar"** 2. **Isi form:** - Nama: `Test User` - NPM: `20231071234` (angka valid) - Password: `pass1` (hanya 5 karakter) 3. **Klik tombol "Daftar"** ### Expected Output โœ…: ``` Toast: "Password minimal 6 karakter" Screen: TETAP di RegisterScreen Database: Data TIDAK ditambahkan ``` --- ## ๐Ÿš€ Test Scenario 6: Registrasi dengan Form Kosong ### Input Data: ``` Nama Lengkap: (KOSONG) NPM: (KOSONG) Password: (KOSONG) ``` ### Langkah-Langkah: 1. **Dari LoginScreen, klik "Belum punya akun? Daftar"** 2. **Langsung klik "Daftar" tanpa isi form** ### Expected Output โœ…: ``` Toast: "Nama lengkap tidak boleh kosong" (atau salah satu validasi yang dipicu duluan) Screen: TETAP di RegisterScreen Database: Data TIDAK ditambahkan ``` --- ## ๐Ÿš€ Test Scenario 7: Login dengan Data Terdaftar (Sukses) ### Input Data: ``` NPM: 20231071513 (dari Test Scenario 1) Password: password123 (dari Test Scenario 1) ``` ### Langkah-Langkah: 1. **Dari RegisterScreen, klik "Sudah punya akun? Login"** - Navigate ke LoginScreen 2. **Isi form dengan data di atas** - NPM: `20231071513` - Password: `password123` 3. **Klik tombol "Login"** - Tunggu beberapa detik ### Expected Output โœ…: ``` Toast: (tidak ada atau success toast) Screen: Navigate ke AbsensiScreen (Home) Display: "Selamat Datang, Febby Dwiss" "NPM: 20231071513" Database: Session saved ``` --- ## ๐Ÿš€ Test Scenario 8: Login dengan NPM Salah ### Input Data: ``` NPM: 99999999999 (NPM yang tidak terdaftar) Password: password123 ``` ### Langkah-Langkah: 1. **Di LoginScreen, isi form:** - NPM: `99999999999` - Password: `password123` 2. **Klik tombol "Login"** ### Expected Output โœ…: ``` Toast: "NPM atau Password salah" Screen: TETAP di LoginScreen Database: Session NOT saved ``` --- ## ๐Ÿš€ Test Scenario 9: Login dengan Password Salah ### Input Data: ``` NPM: 20231071513 (BENAR) Password: wrongpass (SALAH) ``` ### Langkah-Langkah: 1. **Di LoginScreen, isi form:** - NPM: `20231071513` - Password: `wrongpass` 2. **Klik tombol "Login"** ### Expected Output โœ…: ``` Toast: "NPM atau Password salah" Screen: TETAP di LoginScreen Database: Session NOT saved ``` --- ## ๐Ÿ“Š Test Results Summary Buat tabel untuk tracking test results: | # | Test Case | Input | Expected | Actual | Pass/Fail | |---|-----------|-------|----------|--------|-----------| | 1 | Registrasi Sukses | NPM baru | Toast sukses + navigate | | โœ…/โŒ | | 2 | NPM Duplikat | NPM existing | Toast ditolak | | โœ…/โŒ | | 3 | NPM Pendek | 7 digit | Toast ditolak | | โœ…/โŒ | | 4 | NPM Huruf | ABC+angka | Toast ditolak | | โœ…/โŒ | | 5 | Password Pendek | 5 karakter | Toast ditolak | | โœ…/โŒ | | 6 | Form Kosong | Semua kosong | Toast ditolak | | โœ…/โŒ | | 7 | Login Sukses | Data benar | Toast sukses + navigate | | โœ…/โŒ | | 8 | Login NPM Salah | NPM tidak ada | Toast ditolak | | โœ…/โŒ | | 9 | Login Pass Salah | Password salah | Toast ditolak | | โœ…/โŒ | --- ## ๐Ÿ” Debugging Tools ### 1. Logcat untuk Error Tracking ```bash # Buka Logcat di Android Studio: View โ†’ Tool Windows โ†’ Logcat # Filter untuk DatabaseHelper: Search: "DatabaseHelper" # Filter untuk RegisterScreen: Search: "RegisterScreen" # Jalankan test scenario # Lihat apakah ada E/ (ERROR) message ``` ### 2. Database Inspector (Optional) ```bash # Android Studio Built-in: View โ†’ Tool Windows โ†’ App Inspection # Atau gunakan terminal: adb shell cd /data/data/id.ac.ubharajaya.sistemakademik/databases/ sqlite3 Akademik.db SELECT * FROM users; .exit ``` ### 3. Shared Preferences Viewer (Optional) ```bash # Untuk debug local data adb shell cd /data/data/id.ac.ubharajaya.sistemakademik/shared_prefs/ ls cat filename.xml ``` --- ## โš ๏ธ Common Issues & Solutions ### Issue 1: "Database is locked" **Gejala:** Registrasi hang/tidak response **Solusi:** ``` 1. Klik STOP โน๏ธ di Android Studio 2. Tunggu 5 detik 3. Klik RUN โ–ถ๏ธ lagi 4. Hapus app data sebelum test lagi ``` ### Issue 2: "UNIQUE constraint failed" **Gejala:** Toast "Pendaftaran Gagal" saat NPM sudah ada **Solusi:** ``` 1. Gunakan NPM yang berbeda 2. Atau clear app data: Settings โ†’ Apps โ†’ Sistem Akademik โ†’ Storage โ†’ Clear All Data ``` ### Issue 3: "File not found Akademik.db" **Gejala:** Error saat first run **Solusi:** ``` 1. App akan auto-create database on first run 2. Tunggu 2-3 detik 3. Jika tetap error, clear app data dan restart ``` ### Issue 4: "NPM format invalid but still goes through" **Gejala:** NPM dengan huruf tetap berhasil register **Solusi:** ``` 1. Buka MainActivity.kt 2. Periksa validasi NPM di RegisterScreen 3. Pastikan !npm.all { it.isDigit() } di-check sebelum db.addUser() ``` --- ## ๐Ÿ“ฑ Device/Emulator Requirements - **Android Version:** API 24+ (Android 7.0+) - **RAM:** Minimal 2GB - **Storage:** Minimal 100MB - **Internet:** Tidak diperlukan untuk testing lokal --- ## ๐ŸŽฏ Success Criteria โœ… Semua 9 test scenario PASS โœ… Tidak ada force-close/crash โœ… Logcat tidak ada ERROR message โœ… Database file terbuat otomatis โœ… Data persisten (tidak hilang setelah restart app) --- ## ๐Ÿ“ Test Report Template ```markdown # Test Report - Registrasi & Login **Tanggal Testing:** [Tanggal] **Tester:** [Nama] **Device/Emulator:** [Device Name, API Level] **App Version:** [Build Version] ## Test Results | Test Case | Status | Notes | |-----------|--------|-------| | 1. Registrasi Sukses | PASS/FAIL | | | 2. NPM Duplikat | PASS/FAIL | | | 3. NPM Pendek | PASS/FAIL | | | 4. NPM Huruf | PASS/FAIL | | | 5. Password Pendek | PASS/FAIL | | | 6. Form Kosong | PASS/FAIL | | | 7. Login Sukses | PASS/FAIL | | | 8. Login NPM Salah | PASS/FAIL | | | 9. Login Pass Salah | PASS/FAIL | | ## Summary - **Total Tests:** 9 - **Passed:** X - **Failed:** Y - **Success Rate:** X/9 (XX%) ## Issues Found - [Issue 1] - [Issue 2] ## Recommendations - [Rec 1] - [Rec 2] ``` --- ## โœจ Tips untuk Testing Efisien 1. **Buat 2-3 akun test** untuk digunakan di multiple scenarios 2. **Catat NPM/Password** yang sudah dibuat 3. **Clear app data antar test cycle** jika diperlukan 4. **Screenshots error** untuk reference 5. **Test di emulator + real device** untuk konsistensi --- ## ๐ŸŽ‰ After All Tests Passed Jika semua test passed: 1. โœ… Dokumentasikan hasil 2. โœ… Screenshot successful screens 3. โœ… Clear app data untuk production use 4. โœ… Siap untuk fitur berikutnya (Absensi, GPS, Camera) --- Happy Testing! ๐Ÿš€