Apa itu Pengujian Negatif? Uji kasus Dengan Contoh
⚡ Ringkasan Cerdas
Pengujian Negatif memeriksa bagaimana aplikasi perangkat lunak berperilaku ketika menerima data masukan atau kondisi operasi yang tidak terduga, sehingga produk tersebut dapat berfungsi dengan baik meskipun mengalami penurunan kinerja, alih-alih mengalami kerusakan, merusak data, atau memunculkan celah keamanan.

Pengujian Negatif
Pengujian Negatif Pengujian negatif adalah jenis pengujian perangkat lunak yang digunakan untuk memeriksa aplikasi perangkat lunak terhadap data dan kondisi masukan yang tidak terduga. Data atau kondisi yang tidak terduga berkisar dari kesalahan tipe data dalam kolom formulir sederhana hingga serangan peretasan yang disengaja. Tujuan pengujian negatif adalah untuk mencegah aplikasi mengalami kerusakan akibat masukan yang tidak valid dan untuk meningkatkan kualitas serta stabilitas produk.
Pengujian positif saja hanya membuktikan bahwa sistem berfungsi dalam kondisi normal. Pengujian negatif menegaskan bahwa sistem yang sama juga mampu menangani kondisi abnormal, yang merupakan persyaratan dari produk yang tahan terhadap kesalahan.
Contoh Pengujian Negatif
Lift adalah contoh yang paling sering digunakan untuk menjelaskan pengujian negatif, karena perilaku normal dan perilaku kegagalannya sama-sama mudah dibayangkan.
Prinsip kerja lift cukup familiar: menekan nomor lantai akan mengirimkan lift ke lantai tersebut, dan pintu akan terbuka secara otomatis begitu lift mencapai lantai yang ditentukan.
Beberapa skenario negatif untuk peningkatan yang sama tercantum di bawah ini, di samping asumsi yang dibuat oleh hasil tes positif.
| Pengujian Negatif | Pengujian Positif |
|---|---|
| Apa jadinya jika jumlah orang (berat) melebihi batas yang ditentukan? | Diasumsikan hanya sejumlah orang yang ditentukan yang akan masuk ke dalam lift. |
| Apa yang terjadi jika seseorang merokok atau menyebabkan kebakaran di dalam lift? | Diasumsikan tidak akan ada asap atau api di dalam lift. |
| Apa yang terjadi jika terjadi pemadaman listrik selama pengoperasian? | Diasumsikan tidak akan terjadi pemadaman listrik saat lift beroperasi. |
Semua kasus ini termasuk dalam kategori hasil tes negatif. Tidak ada satu pun yang dapat dipastikan tidak akan pernah terjadi, jadi setiap kasus harus dikendalikan.
Bayangkan jika kondisi kelebihan beban tidak pernah diperiksa, dan lift berperilaku tidak normal setelah kelebihan muatan. Celah tunggal itu merusak keandalan sistem dan bahkan dapat membahayakan nyawa. Inilah yang dimaksud dengan pengujian negatif dalam praktiknya, dan mengapa hal itu penting.
Perangkat lunak berperilaku dengan cara yang sama. Tes negatif sengaja menyimpang dari prosedur operasional normal. Pertimbangkan formulir pendaftaran.
| Pengujian Negatif | Pengujian Positif |
|---|---|
| Masukkan alamat email yang tidak valid di kolom email. | Hanya alamat email yang valid yang akan dimasukkan ke dalam kolom email. |
| Masukkan nomor telepon yang tidak valid, misalnya karakter tertentu, di kolom nomor telepon. | Hanya angka yang dimasukkan di kolom angka. |
| Unggah gambar dengan ukuran di luar batas yang ditentukan. | Hanya gambar yang berada dalam batas ukuran yang ditentukan yang dapat diunggah. |
| Mengunggah file yang tidak valid seperti XML or SQL berkas di kolom unggahan gambar | Hanya format gambar yang valid seperti .jpg atau .png yang diunggah. |
Masing-masing kasus negatif ini tetap harus membuat sistem tetap berfungsi. Jika sebuah karakter diketikkan ke dalam kolom angka, aplikasi tidak dapat memproses data yang tidak terduga dan tidak pernah diharapkan, dan mungkin akan mengalami crash. Lebih buruk lagi, Injeksi SQL Kesalahan penulisan string pada kolom yang sama dapat menghapus isi basis data. Kerugian semacam itu adalah alasan mengapa pengujian negatif ada.
Mengapa Pengujian Negatif?
Pengujian memakan waktu dan uang, jadi memutuskan apa, bagaimana, dan seberapa banyak yang harus diuji itu penting. Alasan untuk menghabiskan sebagian anggaran tersebut untuk pengujian negatif terlihat berbeda dari kedua sisi proyek.
Perspektif organisasi
Memberikan produk berkualitas baik kepada klien adalah tanggung jawab organisasi, dan pengujian negatif merupakan bagian dari kewajiban tersebut. Hal ini juga merupakan bukti bagi organisasi bahwa mereka telah melakukan segala upaya yang wajar untuk mencegah kegagalan, meskipun tidak ada sistem yang sepenuhnya bebas dari kesalahan.
Dampak adalah faktor penentu. Sebuah situs e-commerce mungkin lolos setiap pengujian positif dan tetap memiliki celah yang memungkinkan penyerang menjalankan injeksi SQL dan menghapus data di baliknya. Itu adalah pelanggaran keamanan yang serius, dan hanya pengujian negatif yang dapat mendeteksinya.
Aplikasi yang dapat diakses publik, khususnya situs web, hampir tidak memberikan kendali atas bagaimana pengunjung menggunakannya, sehingga pengujian negatif adalah satu-satunya cara untuk memastikan bahwa penggunaan yang tidak biasa tercakup dan terkendali. Hal yang sama berlaku untuk pengguna jahat: penyerang secara aktif mencari peluang untuk merusak sistem, dan skenario peretasan termasuk dalam cakupan pengujian negatif.
Perspektif klien
Klien mengharapkan produk tanpa kerentanan sama sekali, dan pengujian negatif adalah hal yang mendukung harapan tersebut. Untuk produk sensitif seperti e-commerce atau perdagangan saham online, pengujian keamanan dan hasil tes negatif bersifat wajib, bukan opsional.
Satu-satunya kekhawatiran utama klien adalah biaya. Setelah dampak kegagalan dianalisis, klien dapat memutuskan sejauh mana upaya pengujian negatif harus dilakukan.
Cara Melakukan Tes Negatif
Pengujian negatif dimulai dengan mempertimbangkan setiap input yang secara fisik dapat diterima oleh aplikasi, bukan hanya input yang seharusnya diterima. Masing-masing input tersebut termasuk dalam sebuah Uji Kasus bahkan ketika jelas-jelas itu adalah cara yang salah untuk menggunakan fitur tersebut. Kolom email diuji dengan semua hal yang bukan alamat email yang valid, dan kontrol unggah gambar diuji dengan setiap jenis file yang bukan gambar.
Daftar kemungkinan input yang tidak valid pada dasarnya tidak terbatas, sehingga kasus uji negatif harus diprioritaskan. Untuk kolom gambar yang hanya menerima file .png, kandidat unggahan meliputi .jpeg, .xml, .xls, dan banyak lainnya. File XML atau SQL memiliki potensi dampak yang jauh lebih besar daripada file .jpeg, sehingga kasus-kasus tersebut dieksekusi terlebih dahulu. Pemeringkatan kasus berdasarkan dampaknya sebelum eksekusi adalah hal yang membuat pengujian negatif tetap terjangkau.
Sebagian besar kasus uji negatif berasal dari sejumlah kecil teknik desain yang sudah mapan, bukan dari improvisasi:
- Nilai batas: Gunakan nilai-nilai yang berada tepat di luar rentang yang valid, seperti 0 dan 101 untuk kolom yang menerima nilai 1 hingga 100.
- Kelas kesetaraan tidak valid: Pilih satu perwakilan dari setiap kelas input yang ditolak, misalnya huruf dalam bidang numerik.
- Kesalahan tebakan: Gunakan pengalaman dari cacat sebelumnya untuk menargetkan input yang paling mungkin menyebabkan kegagalan fitur semacam ini.
- Data yang cacat dan berbahaya: tag skrip, fragmen SQL, dan muatan data berukuran besar yang menguji validasi dan penanganan keamanan.
- Pengujian kabur: Menghasilkan sejumlah besar input acak atau yang telah dimodifikasi secara otomatis untuk menemukan kesalahan yang belum ditangani.
- Alur terputus: membatalkan, menyegarkan, habis waktu, atau kehilangan konektivitas di tengah transaksi.
Teknik apa pun yang menghasilkan kasus tersebut, hasil yang diharapkan harus dicatat sebagai kegagalan yang terkontrol dan mudah dibaca — pesan validasi, unggahan yang ditolak, pengembalian yang bersih — dan tidak pernah hanya sebagai "sistem tidak mengalami kerusakan".
Keuntungan dan Kerugian dari Hasil Tes Negatif
Seperti teknik pengujian lainnya, pengujian negatif memiliki kelebihan dan kekurangan yang bergantung pada di mana, kapan, dan seberapa banyak pengujian tersebut diterapkan.
Keuntungan Pengujian Negatif
- Hal ini secara langsung melindungi kualitas produk, karena produk berkualitas baik adalah produk yang tidak memiliki kerentanan yang dapat dieksploitasi.
- Hal ini memperluas cakupan. Input yang tidak valid mencapai sistem yang sedang berjalan, baik disengaja maupun tidak sengaja, sehingga kasus negatif harus berjalan bersamaan dengan kasus positif agar cakupannya bermakna.
- Hal ini meningkatkan kepercayaan klien sebelum perilisan dilakukan.
- Hal ini mengungkap cacat yang secara struktural tidak dapat dijangkau oleh pengujian positif, seperti pengecualian yang tidak ditangani dan validasi input yang lemah.
Kerugian dari Pengujian Negatif
- Dalam beberapa situasi, hal itu merupakan pemborosan waktu dan energi. Jika sebuah aplikasi dibangun untuk satu pengguna, kasus 100 pengguna simultan tidak perlu diuji, jadi memilih kondisi yang tepat sangat penting dan beberapa sistem hanya membutuhkan sedikit pengujian negatif.
- Diperlukan orang-orang yang terampil dan berpengalaman untuk mendesain kasus-kasus tersebut.
- Dari sudut pandang klien, hal ini menambah biaya dan dapat menunda perilisan.
- Hal ini menimbulkan persaingan dalam hal upaya. Tim yang menghabiskan banyak uang untuk pengujian negatif mungkin akan kurang berinvestasi dalam pengujian positif.
