2026-01-14 21:33:58 +07:00

479 lines
9.8 KiB
Markdown

# 🧪 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! 🚀