4.4 KiB
🧪 Testing Guide - History Screen Crash Fix
📋 Pre-Test Checklist
- Build project successfully
- No lint errors
- App dapat di-launch
- Bisa login dengan NPM & Nama
🧪 Test Case 1: Normal Flow
Objective: Verify history tampil dengan baik setelah submit absensi
Steps:
1. Launch app
2. Login dengan NPM: "12345678" dan Nama: "Test User"
3. Tunggu loading selesai (max 2 detik)
4. Klik tombol "Mulai Absensi"
5. Izinkan akses lokasi
6. Ambil foto
7. Isi mata kuliah
8. Klik "KIRIM ABSENSI"
9. Tunggu success message
10. Klik "Lihat Riwayat"
Expected Result:
✅ History Screen terbuka
✅ Record absensi ditampilkan dengan sempurna
✅ Data nama, npm, status, waktu tampil benar
✅ Tidak ada crash
Actual Result:
- Pass
- Fail (Dokumentasikan error)
🧪 Test Case 2: Rapid Navigation (Edge Case)
Objective: Verify app handle jika navigate ke history sebelum loading selesai
Steps:
1. Launch app
2. Login dengan NPM: "98765432" dan Nama: "Cepat"
3. LANGSUNG (jangan tunggu) klik Menu → History
(Atau navigate ke history sebelum LaunchedEffect selesai)
Expected Result:
✅ Tampil pesan: "NPM tidak ditemukan. Silakan login ulang."
ATAU
✅ Loading state ditampilkan
✅ Tidak ada crash
✅ Bisa kembali ke menu
Actual Result:
- Pass
- Fail (Dokumentasikan error)
🧪 Test Case 3: Empty History
Objective: Verify app handle jika belum ada record absensi
Steps:
1. Fresh app (clear app data)
2. Login dengan NPM & Nama
3. Jangan submit absensi apapun
4. Buka History
Expected Result:
✅ Tampil pesan: "Belum ada riwayat kehadiran"
✅ Tidak ada crash
✅ UI tetap responsif
Actual Result:
- Pass
- Fail (Dokumentasikan error)
🧪 Test Case 4: Multiple Records
Objective: Verify app handle multiple history records
Steps:
1. Login
2. Submit absensi 5 kali (dengan delay 5 detik antar submit)
3. Tunggu semua terkirim
4. Buka History
Expected Result:
✅ Semua 5 records ditampilkan
✅ Diurutkan dari yang terbaru (DESC)
✅ Mata kuliah, status, waktu tampil benar
✅ Tidak ada crash
✅ LazyColumn scroll lancar
Actual Result:
- Pass
- Fail (Dokumentasikan error)
🧪 Test Case 5: Data Consistency
Objective: Verify data di history sama dengan data yang di-submit
Steps:
1. Login sebagai "Andi Wijaya" (NPM: "2024001")
2. Ambil lokasi
3. Ambil foto
4. Isi mata kuliah: "Pemrograman Mobile"
5. Klik KIRIM
6. Buka History
7. Cek detail record pertama
Expected Result:
✅ Nama: "Andi Wijaya"
✅ NPM: "2024001"
✅ Mata Kuliah: "Pemrograman Mobile"
✅ Lokasi: Valid (✓ icon)
✅ Status: "Diterima" atau "Pending"
✅ Waktu: Match dengan waktu submit
Actual Result:
- Pass
- Fail (Dokumentasikan error)
🧪 Test Case 6: Error State (Negative Test)
Objective: Verify app handle database error gracefully
Steps:
1. (Dev only) Simulate database error di repository
2. Login
3. Buka History
Expected Result:
✅ Tampil error message yang user-friendly
✅ Tidak ada crash
✅ Bisa navigate kembali
Actual Result:
- Pass
- Fail (Dokumentasikan error)
🧪 Test Case 7: Logout & Re-login
Objective: Verify history clear setelah logout dan login dengan user berbeda
Steps:
1. Login sebagai "User A" (NPM: "111111")
2. Submit absensi
3. Buka History → verify data User A
4. Logout
5. Login sebagai "User B" (NPM: "222222")
6. Buka History (history kosong)
7. Submit absensi
8. Buka History → verify data User B saja
Expected Result:
✅ User A: Lihat 1 record
✅ Logout berhasil
✅ User B: History kosong (tidak ada data User A)
✅ User B: Submit 1 record
✅ User B: Lihat 1 record baru
✅ Tidak ada crash
Actual Result:
- Pass
- Fail (Dokumentasikan error)
📝 Logging/Debug Info
Jika test fail, dokumentasikan:
-
Android logcat error:
adb logcat | grep "System Akademik" -
Screenshot error:
- Capture screen saat error
-
Device info:
- Android version
- Device model
- RAM available
-
Reproduction steps:
- List eksak langkah-langkah untuk reproduce
✅ Final Sign-off
Setelah semua test pass:
Date: ___________
Tester: ___________
All Tests Passed: [ ] Yes [ ] No
Notes: _____________________________________________________