Menguasai exploratory testing melalui session-based testing, heuristics, dan pendekatan kreatif untuk menemukan bug yang tidak tercover oleh test case formal

Setelah di episode 6 kita mempelajari regression & smoke testing, pada episode ini kita mempelajari exploratory testing — pendekatan testing yang mengandalkan kreativitas dan intuisi tester untuk menemukan bug yang mungkin terlewat oleh test case formal. Exploratory testing adalah seni dan sains dalam dunia QA.
Mengapa exploratory testing penting? Karena test case formal tidak bisa menangkap semua skenario. Bug paling menarik sering ditemukan saat tester "bermain-main" dengan aplikasi tanpa script yang ketat. Exploratory testing memungkinkan tester mengeksplorasi aplikasi secara kreatif dan menemukan bug yang tidak terduga.
Exploratory testing adalah pendekatan di mana tester merancang dan menjalankan test secara bersamaan:
Exploratory Testing vs Scripted Testing:
├── Scripted Testing:
│ ├── Rancang test case → Jalankan test case
│ ├── Terstruktur & terdokumentasi
│ └── Bisa diulang dengan konsisten
└── Exploratory Testing:
├── Rancang & jalankan test secara bersamaan
├── Kreatif & adaptif
└── Menemukan bug tak terdugaSession-based testing adalah struktur untuk exploratory testing:
Exploratory Session Structure:
├── Charter (Misi): apa yang ingin dicari?
│ ├── Contoh: "Eksplorasi fitur checkout dengan berbagai payment method"
│ └── Fokus: area spesifik yang ingin diuji
├── Timebox (Batas Waktu): berapa lama?
│ ├── Standard: 60-90 menit
│ └── Short: 30 menit
├── Notes (Catatan): apa yang ditemukan?
│ ├── Bug yang ditemukan
│ ├── Observasi
│ └── Pertanyaan untuk tim
└── Debrief (Evaluasi): apa hasilnya?
├── Ringkasan temuan
├── Risiko yang ditemukan
└── Rekomendasi| Charter | Fokus | Waktu |
|---|---|---|
| Eksplorasi login dengan berbagai input | Edge cases di login | 60 menit |
| Eksplorasi checkout flow | Payment, shipping, coupon | 90 menit |
| Eksplorasi mobile responsiveness | Berbagai ukuran layar | 60 menit |
| Eksplorasi error handling | Apa yang terjadi saat error? | 45 menit |
Note
Session charter harus spesifik. "Eksplorasi aplikasi" terlalu luas. "Eksplorasi fitur checkout dengan kartu kredit, e-wallet, dan bank transfer" lebih baik karena punya fokus jelas.
Heuristics adalah panduan untuk mengeksplorasi area tertentu:
Quality Criteria Heuristics:
├── Capability: Apa yang bisa dilakukan aplikasi?
├── Reliability: Seberapa handal?
├── Usability: Seberapa mudah digunakan?
├── Efficiency: Seberapa cepat?
├── Security: Seberapa aman?
├── Compatibility: Kompatibel dengan apa?
├── Installability: Mudah diinstall?
└── Maintainability: Mudah dimaintain?SFDPOT Heuristics:
├── Structure: Bagaimana aplikasi di-structure?
├── Function: Apa fungsi-fungsi yang tersedia?
├── Data: Apa jenis data yang di-handle?
├── Platform: Di platform apa aplikasi berjalan?
├── Operations: Bagaimana user mengoperasikan?
└── Time: Bagaimana faktor waktu mempengaruhi?Test Tour Styles:
├── Guidebook Tour: ikuti dokumentasi/user guide
├── Landmark Tour: kunjungi fitur-fitur utama
├── Badneighbor Tour: coba hal yang tidak seharusnya dilakukan
├── Money Tour: fokus pada area yang menghasilkan uang
├── Obsessive Compulsive Tour: ulangi action yang sama berulang
└── Antimage Tour: balik semua asumsi developerBerikut contoh exploratory session untuk fitur checkout:
Exploratory Session - Checkout Flow:
├── Charter: "Eksplorasi checkout dengan berbagai skenario"
├── Timebox: 90 menit
├── Session Log:
│ ├── Menit 0-15: Happy path checkout
│ │ ├── Tambah produk → Checkout → Bayar → Selesai
│ │ └── Observasi: Flow smooth, tidak ada masalah
│ ├── Menit 15-30: Edge cases
│ │ ├── Checkout dengan 0 produk
│ │ ├── Checkout dengan produk out of stock
│ │ └── Temuan: BUG - Checkout dengan 0 produk tetap lanjut
│ ├── Menit 30-45: Payment methods
│ │ ├── Coba semua payment method
│ │ └── Temuan: BUG - E-wallet timeout tapi user tetap dianggap sukses
│ ├── Menit 45-60: Error handling
│ │ ├── Putus koneksi saat checkout
│ │ ├── Refresh halaman saat checkout
│ │ └── Temuan: OBSERVASI - Error message tidak jelas
│ ├── Menit 60-75: Security
│ │ ├── Ubah harga di URL
│ │ ├── Tambah produk yang tidak ada di database
│ │ └── Temuan: BUG - Harga bisa diubah via URL
│ └── Menit 75-90: Usability
│ ├── Checkout tanpa login
│ ├── Checkout dengan screen reader
│ └── Temuan: USABILITY - Checkout flow membingungkan
├── Debrief:
│ ├── Total bugs: 3
│ ├── Total observations: 2
│ ├── Risiko tinggi: Price manipulation via URL
│ └── Rekomendasi: Fix price validation di backendExploratory Testing Tips:
├── 1. Mulai dengan charter yang jelas
│ └── Jangan eksplorasi tanpa arah
├── 2. Gunakan heuristics sebagai panduan
│ └── SFDPOT, Quality Criteria
├── 3. Catat SEMUA yang ditemukan
│ ├── Bug
│ ├── Observasi
│ └── Pertanyaan
├── 4. Jangan takut mencoba hal konyol
│ └── Bug sering muncul di skenario tak terduga
├── 5. Debrief dengan tim
│ └── Share findings & dapatkan insight
└── 6. Variasi setiap sesi
└── Jangan ulangi eksplorasi yang samaTip
Exploratory testing bukan "testing tanpa plan". Ia punya charter, timebox, dan debrief. Yang membedakannya adalah tester merancang test secara real-time berdasarkan apa yang mereka temukan selama eksplorasi.
Pada episode 7 ini, kalian telah mempelajari exploratory testing sebagai seni dan sains dalam QA.
Inti yang harus dibawa pulang:
Di episode 8 selanjutnya, kita akan membahas defect reporting & lifecycle — bagaimana menulis bug report yang efektif dan memahami lifecycle sebuah bug dari ditemukan hingga diperbaiki. Sampai jumpa di episode 8!