234 lines
4.4 KiB
Markdown
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: _____________________________________________________
|
|
|
|
```
|
|
|
|
|