Strategi Testing
🧩 1. Pengertian Testing
Testing adalah proses mengevaluasi perangkat lunak untuk menemukan cacat (bug) dan memastikan produk berfungsi sesuai kebutuhan fungsional dan non-fungsional.
🎯 Tujuan:
- Menemukan kesalahan atau cacat pada sistem.
- Memastikan kualitas perangkat lunak sebelum dirilis.
🧠Tujuan Umum:
- Verifikasi & validasi sistem
- Mengurangi risiko kegagalan
- Meningkatkan kepercayaan stakeholder
- Menjamin keamanan
- Efisiensi biaya
- Meningkatkan pengalaman pengguna
🔄 2. Software Testing Life Cycle (STLC)
Proses sistematis untuk memastikan software memenuhi kebutuhan dan bebas dari cacat.
🔹 Tahapan STLC:
a. Test Planning
- Menentukan strategi pengujian
- Identifikasi lingkungan, test case, waktu, biaya, dan tanggung jawab
b. Test Design
- Menulis dan meninjau test case
- Membuat data/skenario pengujian
- Menentukan hasil yang diharapkan
- Memperbarui Requirement Traceability Matrix
c. Test Execution
- Component Testing – Menguji komponen program secara individual
- Integration Testing – Menguji keterhubungan antar sub-sistem
- System Testing – Pengujian terhadap sistem secara menyeluruh
- Acceptance Testing – Pengujian oleh pengguna akhir sebelum rilis
d. Pelaporan & Analisis
- Menyajikan hasil uji (berhasil/gagal)
- Evaluasi kualitas aplikasi
- Identifikasi bug & isu teknis
- Memberikan rekomendasi perbaikan
🧱 3. Klasifikasi Software Testing
🔸 Berdasarkan Abstraksi
1. Unit Testing
Berfokus pada pengujian unit terkecil dari perangkat lunak seperti fungsi, metode, atau kelas secara individual.
Tujuan: Memverifikasi bahwa setiap unit bekerja dengan benar.
Contoh: Menguji fungsi perhitungan diskon untuk memastikan hasilnya akurat.
2. Integration Testing
Mengujikan interaksi antara beberapa modul yang telah diuji secara terpisah.
Tujuan: Memastikan modul-modul yang berbeda dapat berkomunikasi dan bekerja sama dengan baik.
Contoh: Memastikan modul login terhubung dengan modul profil pengguna.
3. System Testing
Menguji seluruh sistem sebagai satu kesatuan yang terintegrasi.
Tujuan: Memastikan sistem memenuhi persyaratan fungsional dan non-fungsional.
Contoh: Menguji performa dan fitur pada aplikasi e-commerce secara keseluruhan.
4. Acceptance Testing
Dilakukan oleh pengguna atau klien sebagai tahap akhir sebelum peluncuran.
Tujuan: Memvalidasi apakah sistem sesuai dengan kebutuhan bisnis dan siap digunakan.
Contoh: Klien menguji aplikasi mobile sebelum diluncurkan ke pasar.
🔸 Berdasarkan Fungsi
1. Fungsional Testing
Berfokus pada apa yang dilakukan sistem.
Tujuan: Memastikan setiap fungsi sistem bekerja sesuai kebutuhan.
Contoh: Menguji login, reset password, dan transaksi pembayaran.
2. Non-Fungsional Testing
Berfokus pada bagaimana sistem bekerja.
Tujuan: Menguji aspek performa, keamanan, reliabilitas, dan tampilan.
Contoh: Menguji performa saat flash sale atau tampilan responsif pada berbagai perangkat.
🔸 Berdasarkan Domain
1. Performance Testing
Tujuan: Memastikan sistem tetap stabil dan cepat di bawah beban tinggi.
Contoh: Website tetap berjalan lancar saat ribuan pengguna aktif bersamaan.
2. Security Testing
Tujuan: Mengidentifikasi celah keamanan dan melindungi data pengguna.
Contoh: Mencegah serangan SQL Injection atau Cross-Site Scripting (XSS).
3. Usability Testing
Tujuan: Mengevaluasi kemudahan penggunaan dan pengalaman pengguna.
Contoh: Menilai apakah navigasi dan ikon mudah dipahami pengguna baru.
🔸 Berdasarkan Struktur
1. Black-Box Testing
Tester tidak mengetahui struktur internal atau kode program.
Fokus: Menguji input dan output sistem berdasarkan spesifikasi.
Kelebihan: Tidak butuh pengetahuan teknis kode dan relevan bagi end-user.
Kekurangan: Tidak dapat mendeteksi bug tersembunyi di logika program.
2. White-Box Testing
Tester memahami struktur dan logika internal dari program.
Fokus: Mengevaluasi alur logika, algoritma, dan struktur data.
Kelebihan: Cakupan kode luas, mampu menemukan bug tersembunyi.
Kekurangan: Membutuhkan pengetahuan teknis dan waktu yang lebih lama.
✅ Kesimpulan
- Software testing adalah bagian penting dari Software Development Life Cycle (SDLC).
- Tujuannya memastikan software berkualitas, bebas bug, aman, dan memenuhi kebutuhan pengguna.
- Tahapan testing membantu mencegah kesalahan sejak dini agar produk yang dirilis dapat diandalkan dan disukai pengguna.
