Menguasai functional testing dan usability testing untuk memastikan aplikasi berfungsi sesuai requirement dan mudah digunakan oleh pengguna

Setelah di episode 4 kita mempelajari test management & documentation, pada episode ini kita mempelajari functional & usability testing — dua jenis testing yang paling fundamental dalam QA. Functional testing memastikan aplikasi berfungsi sesuai requirement, sementara usability testing memastikan aplikasi mudah dan nyaman digunakan.
Mengapa kedua jenis ini penting? Karena aplikasi yang berfungsi tapi sulit digunakan akan membuat frustrasi pengguna, dan aplikasi yang mudah digunakan tapi tidak berfungsi sama sekali tidak berguna. QA Tester harus bisa melakukan keduanya.
Functional testing memverifikasi bahwa setiap fungsi aplikasi bekerja sesuai requirement:
Functional Testing Checklist:
├── Input validation: apakah input diterima/ditolak dengan benar?
├── Output: apakah hasil sesuai yang diharapkan?
├── Business logic: apakah aturan bisnis diimplementasikan?
├── Error handling: apakah error ditangani dengan benar?
├── Data integrity: apakah data tersimpan dengan benar?
└── Integration: apakah komponen berkomunikasi dengan benar?| Jenis | Fokus | Contoh |
|---|---|---|
| Unit Testing | Satu fungsi/module | Fungsi calculateTotal() |
| Integration Testing | Interaksi modul | Login → Dashboard |
| System Testing | Sistem lengkap | Aplikasi end-to-end |
| Acceptance Testing | Kebutuhan bisnis | User acceptance |
Functional Test Cases - Login:
├── TC-FUNC-001: Login dengan valid credentials
│ ├── Input: email valid, password valid
│ ├── Expected: Redirect ke dashboard
│ └── Priority: High
├── TC-FUNC-002: Login dengan invalid credentials
│ ├── Input: email valid, password salah
│ ├── Expected: Error message "Invalid credentials"
│ └── Priority: High
├── TC-FUNC-003: Login dengan empty fields
│ ├── Input: email kosong, password kosong
│ ├── Expected: Validasi error "Email harus diisi"
│ └── Priority: Medium
└── TC-FUNC-004: Login dengan remember me
├── Input: valid credentials + remember me checked
├── Expected: Session tetap aktif setelah browser ditutup
└── Priority: MediumTip
Functional testing harus cover happy path, edge cases, dan error cases. Jangan hanya test happy path — bug paling sering muncul di edge cases dan error handling.
Usability testing mengevaluasi seberapa mudah dan nyaman aplikasi digunakan oleh pengguna. Fokusnya bukan pada "apakah berfungsi?" tapi pada "apakah mudah digunakan?"
Usability Aspects:
├── Learnability: seberapa cepat pengguna baru bisa menggunakan?
├── Efficiency: seberapa cepat pengguna yang sudah mahir bisa menyelesaikan task?
├── Memorability: seberapa mudah pengguna mengingat cara menggunakannya?
├── Error Prevention: seberapa baik aplikasi mencegah error?
├── Error Recovery: seberapa mudah pengguna memulihkan dari error?
└── Satisfaction: seberapa menyenangkan pengguna menggunakan aplikasi?10 usability heuristics dari Jakob Nielsen:
| Heuristic | Deskripsi | Contoh |
|---|---|---|
| Visibility of System Status | Sistem memberikan feedback | Loading indicator saat upload |
| Match Between System and Real World | Gunakan bahasa pengguna | Tombol "Keranjang" bukan "Cart" |
| User Control and Freedom | Undo/redo tersedia | Tombol "Batal" yang jelas |
| Consistency and Standards | Konsisten dengan platform | Tombol submit di posisi yang sama |
| Error Prevention | Cegah error sebelum terjadi | Confirm dialog sebelum delete |
| Recognition Rather Than Recall | Tampilkan informasi yang dibutuhkan | History pencarian |
| Flexibility and Efficiency of Use | Shortcut untuk user mahir | Keyboard shortcuts |
| Aesthetic and Minimalist Design | Jangan terlalu banyak info | Hanya tampilkan yang penting |
| Help Users Recognize and Recovery from Errors | Error message yang jelas | "Password harus 8 karakter" |
| Help and Documentation | Help yang mudah diakses | Tooltip, FAQ |
Usability Test - Checkout Flow:
├── Task: "Beli produk seharga Rp 100.000 dengan kartu kredit"
├── Metrics:
│ ├── Time to complete: berapa lama?
│ ├── Error rate: berapa kali user error?
│ ├── Satisfaction: rating 1-5
│ └── Help needed: apakah user perlu bantuan?
├── Observations:
│ ├── Apakah user menemukan tombol checkout?
│ ├── Apakah user mengerti langkah-langkahnya?
│ ├── Apakah ada confusion di payment method?
│ └── Apakah user berhasil menyelesaikan task?
└── Recommendations:
├── Simplify form fields
├── Add progress indicator
└── Improve error messagesQA Tester harus melakukan keduanya dalam satu sesi testing:
Combined Testing Approach:
├── 1. Functional: Apakah checkout berfungsi?
│ ├── Input valid → Success
│ ├── Input invalid → Error handled
│ └── Edge cases → Covered
├── 2. Usability: Apakah checkout mudah digunakan?
│ ├── Form fields jelas
│ ├── Steps terlihat
│ ├── Error messages membantu
│ └── Overall experience menyenangkan
└── 3. Report: Gabungkan findings
├── Bugs functional
├── Usability issues
└── RecommendationsPada episode 5 ini, kalian telah mempelajari functional & usability testing.
Inti yang harus dibawa pulang:
Di episode 6 selanjutnya, kita akan membahas regression & smoke testing — bagaimana memastikan perubahan kode tidak merusak fitur yang sudah ada. Sampai jumpa di episode 6!