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

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:

  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: _____________________________________________________