EAS-202310715274-DimasHendr.../HISTORY_CRASH_TESTING.md
2026-01-14 21:13:18 +07:00

234 lines
4.4 KiB
Markdown

# 🧪 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:
1. **Android logcat error:**
```
adb logcat | grep "System Akademik"
```
2. **Screenshot error:**
- Capture screen saat error
3. **Device info:**
- Android version
- Device model
- RAM available
4. **Reproduction steps:**
- List eksak langkah-langkah untuk reproduce
---
## ✅ Final Sign-off
Setelah semua test pass:
```
Date: ___________
Tester: ___________
All Tests Passed: [ ] Yes [ ] No
Notes: _____________________________________________________
```