Skip to the content.

7 Prinsip Pengujian Software

Berikut adalah penjelasan tentang 7 prinsip dalam software testing, yang sering dijadikan pedoman dalam proses pengujian perangkat lunak:

1. Testing menunjukkan adanya kesalahan (Testing shows the presence of defects)

Prinsip ini menyatakan bahwa tujuan utama dari pengujian perangkat lunak adalah menemukan bug atau cacat (defect) dalam perangkat lunak, bukan untuk membuktikan bahwa perangkat lunak bebas dari bug. Pengujian hanya dapat menunjukkan bahwa ada kesalahan jika ditemukan, tetapi tidak dapat menjamin bahwa perangkat lunak sepenuhnya bebas dari kesalahan.

Contoh Kasus

1. Pengujian Form Login

Skenario: Sebuah aplikasi memiliki form login dengan dua input: username dan password. Terdapat validasi bahwa password minimal harus terdiri dari 8 karakter.

2. Pengujian Aplikasi E-Commerce

Skenario: Aplikasi e-commerce memiliki fitur checkout yang menghitung total harga setelah diskon.

Kesimpulan:


2. Pengujian yang menyeluruh tidak mungkin dilakukan (Exhaustive testing is impossible)

Prinsip ini menyatakan bahwa tidak mungkin untuk menguji semua kombinasi input, jalur eksekusi, atau skenario dalam perangkat lunak secara menyeluruh karena keterbatasan waktu, sumber daya, dan kompleksitas sistem. Oleh karena itu, pengujian harus dilakukan secara selektif dengan memprioritaskan area yang paling penting atau berisiko tinggi.

Kenapa tidak mungkin?

Solusi

Contoh Kasus

1. Aplikasi Form Input

Sebuah form memiliki tiga input:

Jika kita mencoba semua kemungkinan kombinasi input untuk pengujian:

Kesimpulan: Menguji semua kombinasi ini secara menyeluruh tidak mungkin dilakukan dalam waktu yang wajar. Sebagai gantinya:

2. Pengujian Sistem ATM

Sistem ATM memiliki berbagai kombinasi skenario:

  1. Kartu valid vs kartu tidak valid.
  2. Input PIN benar vs salah.
  3. Jumlah penarikan lebih besar, lebih kecil, atau sama dengan saldo.
  4. Pilihan layanan (penarikan, transfer, cek saldo, dll.).

Jika semua kombinasi skenario diuji, hasilnya menjadi eksponensial karena setiap kemungkinan saling berkaitan.

Kesimpulan:

Kesimpulan:


3. Pengujian dini menghemat waktu dan biaya (Early testing saves time and money)

Prinsip ini menyatakan bahwa pengujian perangkat lunak sebaiknya dimulai sedini mungkin dalam siklus pengembangan untuk mendeteksi dan memperbaiki cacat (defects) sejak tahap awal. Semakin awal bug ditemukan, semakin murah dan mudah untuk memperbaikinya, karena kesalahan yang dibiarkan hingga tahap akhir akan memerlukan lebih banyak sumber daya untuk diidentifikasi dan diperbaiki.

Penjelasan

Contoh Kasus

1. Kesalahan dalam Spesifikasi

Sebuah tim mengembangkan aplikasi manajemen keuangan. Pada tahap desain, ditemukan bahwa spesifikasi untuk menghitung bunga salah karena menggunakan rumus yang tidak sesuai. Jika:

2. Bug dalam Desain Antarmuka

Sebuah aplikasi e-commerce dirancang dengan antarmuka pengguna yang tidak intuitif, membuat pengguna kesulitan memahami proses checkout.

3. Kesalahan Validasi Input

Seorang pengembang melewatkan validasi input pengguna dalam modul login (contoh: tidak ada pemeriksaan untuk kata sandi kosong).

Keuntungan Pengujian Dini

  1. Biaya Perbaikan Lebih Murah: Bug yang ditemukan di tahap awal lebih mudah diperbaiki karena perubahan hanya memengaruhi bagian kecil dari proyek.
  2. Mengurangi Risiko Penundaan: Menemukan dan memperbaiki bug dini mengurangi kemungkinan penundaan pada tahap akhir.
  3. Meningkatkan Kualitas: Dengan mendeteksi kesalahan sejak awal, tim dapat memastikan bahwa perangkat lunak dikembangkan di atas pondasi yang kuat.

Kesimpulan:


4. Kumulasi defect (Defects cluster together)

Prinsip ini menyatakan bahwa sebagian besar bug atau cacat perangkat lunak biasanya ditemukan di area tertentu dalam sistem, seperti modul, fitur, atau komponen tertentu. Fenomena ini sering mengikuti Hukum Pareto (80-20 Rule), di mana 80% bug ditemukan dalam 20% area tertentu.

Penjelasan

Contoh Kasus

1. Aplikasi E-Commerce

Sebuah aplikasi e-commerce memiliki beberapa fitur, seperti:

  1. Halaman Login
  2. Keranjang Belanja
  3. Proses Checkout
  4. Pembayaran

Dari pengujian sebelumnya, ditemukan bahwa:

Kesimpulan:

2. Sistem Banking

Sistem perbankan memiliki berbagai modul, seperti:

  1. Pengelolaan Rekening
  2. Transaksi Transfer
  3. Penarikan Uang di ATM
  4. Pelaporan dan Laporan Keuangan

Pengujian menunjukkan bahwa:

Kesimpulan:

Kesimpulan:


5. Paradoks pembasmi bug (The pesticide paradox)

Prinsip ini menyatakan bahwa jika pengujian yang sama dilakukan berulang kali, maka metode pengujian tersebut akan menjadi kurang efektif dalam menemukan bug baru. Seperti pestisida yang digunakan secara berulang terhadap tanaman, efektivitasnya menurun karena hama mulai kebal. Dalam konteks pengujian perangkat lunak, jika skenario pengujian yang sama digunakan terus-menerus, kemungkinan besar hanya akan menemukan bug yang sudah ada sebelumnya, sementara bug baru tetap tersembunyi.

Penjelasan

Contoh Kasus

1. Aplikasi Manajemen Keuangan

Sebuah aplikasi memiliki fitur untuk menghitung anggaran bulanan dengan formula tertentu. Pengujian awal menemukan bug dalam formula penghitungan dengan skenario berikut:

Setelah bug diperbaiki, pengujian yang sama dilakukan berulang kali untuk memverifikasi perbaikan. Namun:

Akibatnya, bug baru terkait skenario di atas tidak terdeteksi.

Solusi: Revisi dan tambahkan skenario pengujian untuk mencakup skenario baru seperti input desimal, nilai nol, atau angka besar.

2. Sistem Reservasi Tiket

Sistem memiliki fitur:

Pengujian awal berhasil menemukan bug pada fitur pembayaran kartu kredit. Setelah bug diperbaiki, pengujian dilakukan secara otomatis hanya untuk fitur ini. Namun:

Solusi: Variasikan pengujian dengan menambahkan skenario baru untuk area yang jarang diuji, seperti pencarian penerbangan internasional.

Kesimpulan:


6. Pengujian tergantung pada konteks (Testing is context dependent)

Prinsip ini menyatakan bahwa pengujian perangkat lunak harus disesuaikan dengan konteks atau tujuan aplikasi. Metode, teknik, dan pendekatan pengujian yang digunakan akan bervariasi tergantung pada jenis perangkat lunak, industri, atau kebutuhan spesifik pengguna.

Penjelasan

Contoh Kasus

1. Aplikasi Perbankan (High-Risk System)

Aplikasi perbankan memproses transaksi keuangan yang sensitif dan memiliki risiko tinggi, sehingga:

2. Aplikasi Game Mobile (Entertainment System)

Aplikasi game mobile memiliki fokus berbeda dibandingkan aplikasi perbankan:

3. Perangkat Lunak Medis (Safety-Critical System)

Perangkat lunak untuk alat medis, seperti monitor detak jantung:

4. Aplikasi E-Commerce

Aplikasi untuk belanja online memerlukan pendekatan yang berbeda:

Kesimpulan


7. Absensi bug bukan jaminan kualitas (Absence of errors fallacy)

Prinsip ini menyatakan bahwa tidak adanya bug dalam perangkat lunak tidak menjamin bahwa perangkat lunak tersebut memenuhi kebutuhan pengguna atau mencapai tujuan bisnisnya. Dengan kata lain, meskipun semua pengujian menunjukkan bahwa perangkat lunak bebas dari kesalahan teknis, perangkat lunak tersebut tetap bisa gagal jika tidak sesuai dengan spesifikasi atau tidak memberikan nilai bagi pengguna.

Penjelasan

Contoh Kasus

1. Aplikasi Pemesanan Tiket

Sebuah aplikasi pemesanan tiket transportasi diuji dan ditemukan bebas dari bug:

Namun, setelah diluncurkan:

Kesimpulan:
Meskipun aplikasi bebas dari bug teknis, itu gagal memenuhi kebutuhan pengguna karena tidak dirancang untuk mendukung skenario utama (pulang-pergi).

2. Aplikasi Manajemen Proyek

Sebuah aplikasi manajemen proyek diuji:

Namun, setelah digunakan oleh tim:

Kesimpulan:
Aplikasi dianggap gagal meskipun secara teknis bebas dari bug, karena kegunaan (usability) tidak diperhatikan.

3. Sistem Perbankan

Sebuah bank meluncurkan sistem baru untuk mengelola transfer internasional. Sistem diuji dan semua transaksi berjalan lancar tanpa kesalahan teknis. Namun:

Kesimpulan:
Meskipun sistem bebas dari kesalahan teknis, itu tidak memenuhi kebutuhan pelanggan, yang menyebabkan penurunan kepuasan pengguna.

Kesimpulan: