479 lines
9.8 KiB
Markdown
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! 🚀
|
|
|