2026-01-14 21:13:18 +07:00

398 lines
9.2 KiB
Markdown

# 🧪 TESTING GUIDE - Panduan Uji Coba UI Baru
## 🎯 Objective
Memverifikasi bahwa semua UI screens berfungsi dengan benar sesuai mockup yang diberikan.
---
## 📱 Test Case 1: Login Screen
### Pre-requisite
- App terbuka dan menampilkan LoginScreen
- Tidak ada user yang login sebelumnya
### Steps
1. Lihat email field dengan icon envelope (✉️)
2. Lihat password field dengan icon lock (🔒)
3. Lihat button LOGIN berwarna putih dengan teks hijau
### Expected Result
✅ UI sesuai mockup (green theme #2E7D32)
✅ Email field active dan bisa diinput
✅ Password field active, input tersembunyi
✅ Login button muncul
### Test Case 1.1: Invalid Input
**Steps**:
1. Kosongkan email field
2. Kosongkan password field
3. Klik LOGIN
**Expected Result**: ❌ Error message "Email dan Password harus diisi"
### Test Case 1.2: Valid Input
**Steps**:
1. Input email: `budi@student.com`
2. Input password: `password123`
3. Klik LOGIN
**Expected Result**: ✅ Navigate ke MenuScreen
---
## 📱 Test Case 2: Menu Screen
### Pre-requisite
- Sudah login (dari Test Case 1.2)
### Steps
1. Lihat greeting "Selamat Datang, Budi!"
2. Lihat 2 menu cards:
- 📅 Jadwal Kuliah
- 📋 Riwayat Absensi
3. Lihat button "MULAI ABSENSI" berwarna putih
4. Lihat icon X di top-right (logout)
### Expected Result
✅ Menu Screen muncul dengan layout benar
✅ Greeting text visible
✅ 2 menu cards dengan icon dan deskripsi
✅ Button "MULAI ABSENSI" berwarna putih dengan teks hijau
✅ Tombol logout (X) di corner
### Test Case 2.1: Click Jadwal Kuliah
**Steps**:
1. Klik card "Jadwal Kuliah"
**Expected Result**: ✅ Navigate ke Schedule screen (jika ada)
### Test Case 2.2: Click Riwayat Absensi
**Steps**:
1. Klik card "Riwayat Absensi"
**Expected Result**: ✅ Navigate ke HistoryScreen
### Test Case 2.3: Click MULAI ABSENSI
**Steps**:
1. Klik button "MULAI ABSENSI"
**Expected Result**: ✅ Navigate ke AttendanceScreen
### Test Case 2.4: Click Logout (X)
**Steps**:
1. Klik icon X di top-right
2. Confirm logout
**Expected Result**: ✅ Navigate ke LoginScreen (user logged out)
---
## 📱 Test Case 3: Attendance Screen
### Pre-requisite
- Dari Menu screen, klik "MULAI ABSENSI"
- AttendanceScreen visible
### Steps
1. Lihat top bar hijau dengan title "Absen Kehadiran"
2. Lihat back arrow (←) di top-left
3. Lihat 4 sections:
- User Info (nama, NPM)
- Lokasi (dengan status ✓/✗)
- Mata Kuliah (input field) ← NEW
- Foto Selfie (dengan button)
4. Lihat button "KIRIM ABSENSI" hijau di bawah
### Expected Result
✅ Attendance screen layout sesuai mockup
✅ Top bar berwarna hijau (#2E7D32)
✅ Semua sections visible
✅ Mata kuliah field tersedia (NEW)
### Test Case 3.1: Update Location
**Steps**:
1. Di section Lokasi, klik "Perbarui Lokasi"
2. Berikan permission akses lokasi
3. Tunggu GPS initialize
**Expected Result**:
✅ Lokasi coordinates ditampilkan (Lat, Lon, Jarak)
✅ Status: ✓ "Dalam Area Absensi" atau ✗ "Luar Area"
✅ Icon location berubah warna (hijau/merah)
### Test Case 3.2: Take Photo
**Steps**:
1. Di section Foto Selfie, klik "AMBIL FOTO"
2. Berikan permission akses kamera
3. Ambil foto selfie
**Expected Result**:
✅ Kamera app terbuka
✅ Foto berhasil diambil
✅ Section Foto Selfie status berubah ke "✓ Foto berhasil diambil"
### Test Case 3.3: Input Mata Kuliah ← NEW
**Steps**:
1. Di section Mata Kuliah, klik input field
2. Type: "Pemrograman Mobile"
3. Confirm input
**Expected Result**:
✅ Text "Pemrograman Mobile" tersimpan di field
✅ Field tidak kosong
✅ Input bisa diedit
### Test Case 3.4: Submit Attendance
**Steps**:
1. Pastikan lokasi valid (✓)
2. Pastikan foto sudah diambil (✓)
3. Pastikan mata kuliah sudah diisi (✓)
4. Klik "KIRIM ABSENSI"
5. Tunggu loading selesai
**Expected Result**:
✅ Loading spinner muncul
✅ Status message: "⏳ Mengirim absensi..."
✅ Request terkirim ke N8N
✅ Navigate ke SuccessScreen
### Test Case 3.5: Submit Without Mata Kuliah
**Steps**:
1. Kosongkan mata kuliah field
2. Klik "KIRIM ABSENSI"
**Expected Result**:
❌ Error message: "⚠️ Harap masukkan nama mata kuliah terlebih dahulu"
❌ Submit button disabled/tidak berfungsi
### Test Case 3.6: Back Button
**Steps**:
1. Klik arrow (←) di top-left
**Expected Result**:
✅ Navigate kembali ke MenuScreen
---
## 📱 Test Case 4: Success Screen
### Pre-requisite
- Dari Test Case 3.4, submit attendance berhasil
### Steps
1. Lihat background hijau (#2E7D32)
2. Lihat icon checkmark besar dalam lingkaran putih (✅)
3. Lihat title "Absensi Berhasil!"
4. Lihat 2 status indicators:
- ✓ Lokasi Tervalidasi
- ✓ Foto Terekam
5. Lihat card dengan waktu dan status
6. Lihat button "LIHAT RIWAYAT" putih
### Expected Result
✅ Success screen muncul dengan layout sesuai mockup
✅ Large checkmark icon visible (✅)
✅ Green background (#2E7D32)
✅ White button "LIHAT RIWAYAT"
✅ All text visible dan readable
### Test Case 4.1: View History
**Steps**:
1. Klik button "LIHAT RIWAYAT"
**Expected Result**:
✅ Navigate ke HistoryScreen
✅ List absensi visible
✅ Data mata kuliah yang baru disubmit terlihat
### Test Case 4.2: Back to Menu (Alternative)
**Steps**:
1. Dari HistoryScreen, klik back button
2. Kembali ke MenuScreen
**Expected Result**:
✅ Navigate ke MenuScreen
✅ Bisa klik "MULAI ABSENSI" lagi untuk absensi berikutnya
---
## 🎨 UI/UX Test Cases
### Test Case 5.1: Color Consistency
**Steps**:
1. Lihat semua screen
2. Check warna yang digunakan
**Expected Result**:
✅ Green (#2E7D32) konsisten di semua top bars
✅ Buttons putih dengan teks hijau
✅ Cards dengan background hijau muda
✅ Status indicators: hijau untuk valid, merah untuk invalid
### Test Case 5.2: Text Readability
**Steps**:
1. Lihat semua text di setiap screen
2. Check apakah text mudah dibaca
**Expected Result**:
✅ All text visible dan readable
✅ No text cutoff
✅ Font size sesuai (headlines, body, labels)
✅ Color contrast sufficient
### Test Case 5.3: Button Usability
**Steps**:
1. Klik semua buttons yang tersedia
2. Check responsiveness
**Expected Result**:
✅ Semua button responsive
✅ Visual feedback saat ditekan
✅ Disabled state jelas
✅ Touch target size adequate (min 48dp)
### Test Case 5.4: Responsive Layout
**Steps**:
1. Test di berbagai ukuran layar:
- Small phone (4.7")
- Medium phone (5.5")
- Large phone (6.5")
2. Rotate landscape
**Expected Result**:
✅ Layout tetap rapi di semua ukuran
✅ Text tidak cut off
✅ Buttons mudah diklik
✅ Landscape mode works correctly
---
## 🔧 Technical Test Cases
### Test Case 6.1: Navigation State
**Steps**:
1. Navigate: Login → Menu → Attendance → Success
2. Klik back button
3. Navigate forward lagi
4. Check app state
**Expected Result**:
✅ State preserved correctly
✅ Data tidak hilang
✅ Navigation smooth tanpa glitch
✅ Back stack correct
### Test Case 6.2: Mata Kuliah Data Persistence
**Steps**:
1. Submit absensi dengan mata kuliah: "Database"
2. Go to HistoryScreen
3. Check apakah "Database" tersimpan
**Expected Result**:
✅ Mata kuliah "Database" visible di history
✅ Data persisted ke database
✅ Data dikirim ke N8N webhook
### Test Case 6.3: Field Reset After Submit
**Steps**:
1. Submit absensi dengan all fields filled
2. Kembali ke Menu
3. Klik "MULAI ABSENSI" lagi
4. Check semua fields kosong
**Expected Result**:
✅ Mata kuliah field kosong
✅ Foto field reset
✅ Lokasi field kosong (need to update again)
✅ Ready untuk absensi berikutnya
### Test Case 6.4: Error Handling
**Steps**:
1. Test dengan no location (disable GPS)
2. Test dengan no photo
3. Test dengan empty mata kuliah
4. Test dengan network error
**Expected Result**:
✅ Proper error messages displayed
✅ Submit button disabled appropriately
✅ User guided ke fix error
✅ No app crash
---
## 📊 Test Results Summary
### Color Theme
- [ ] Green #2E7D32 applied correctly
- [ ] White buttons visible
- [ ] Success green #4CAF50 shows
- [ ] Error red #f44336 shows
### Screens
- [ ] LoginScreen displays correctly
- [ ] MenuScreen displays correctly
- [ ] AttendanceScreen displays correctly
- [ ] SuccessScreen displays correctly
- [ ] All screens responsive
### Features
- [ ] Mata kuliah field works
- [ ] Location validation works
- [ ] Photo capture works
- [ ] Submit functionality works
- [ ] Navigation flows correctly
### Data
- [ ] Mata kuliah saved
- [ ] Data sent to N8N
- [ ] Data visible in history
- [ ] No data loss
---
## 🎯 Pass/Fail Criteria
### PASS if:
✅ All color scheme correct
✅ All screens display as mockup
✅ All buttons functional
✅ Mata kuliah feature works
✅ Navigation smooth
✅ No crashes
✅ Data persisted correctly
✅ Responsive layout
### FAIL if:
❌ Colors don't match
❌ Screen layout wrong
❌ Buttons don't work
❌ Mata kuliah not saved
❌ Navigation broken
❌ App crashes
❌ Data lost
❌ Layout broken
---
## 🚀 Go-Live Checklist
Before deploying:
- [ ] All test cases PASS
- [ ] No crashes found
- [ ] UI matches mockup
- [ ] Mata kuliah feature verified
- [ ] Database integration confirmed
- [ ] N8N webhook tested
- [ ] Performance acceptable
- [ ] Documentation reviewed
---
**Test Date**: _______________
**Tester Name**: _______________
**Status**: ☐ PASS ☐ FAIL ☐ PARTIAL
**Notes**: _____________________________