Semua Artikel
Diposting pada 21 Maret 2025

Apa itu Unit Testing? Mengapa Kita Memerlukannya

By Khafid Ilham - Creator
Penulis

Unit testing adalah salah satu jenis pengujian perangkat lunak (software) yang berfokus pada pengujian unit-unit terkecil dalam sebuah sistem perangkat lunak. Unit-unit ini bisa berupa function, method, atau class. Unit testing merupakan pengujian paling awal yang dilakukan oleh developer sebelum melakukan pengujian lebih lanjut, seperti integration test, functional test, dan end-to-end test.

Tujuan Unit Testing

1. Menemukan Bug Lebih Awal

Unit testing memungkinkan kita untuk menemukan bug lebih awal dalam tahap pengembangan, sehingga kita tidak perlu menjalankan keseluruhan sistem untuk menemukan bug. Bug yang ditemukan pada tahap ini biasanya terkait dengan kesalahan logika, penulisan sintaks, dan masalah lain yang bisa berakibat lebih besar di kemudian hari.

2. Meningkatkan Kualitas Kode

Dengan membuat kode yang dapat dites (testable), developer akan terdorong untuk lebih disiplin dalam menulis kode secara rapi dan sesuai dengan tanggung jawabnya (menerapkan single responsibility principle). Kode yang testable biasanya merupakan kode yang telah dipecah menjadi unit-unit kecil dengan fungsi yang spesifik, sehingga lebih mudah diuji secara independen.

3. Menghasilkan Dokumentasi

Karena unit test biasanya ditulis dalam format given-when-then, maka dokumentasi yang dihasilkan akan membantu developer memahami bagaimana fungsi tertentu bekerja, bagaimana input diberikan, serta output yang dihasilkan. Dokumentasi ini sangat berguna dalam pengembangan jangka panjang.

Karakteristik Kode yang Baik untuk Unit Test

Kode yang baik adalah kode yang mudah untuk diuji. Berikut adalah beberapa karakteristik kode yang testable:

1. High-cohesion

Cohesion mengacu pada sejauh mana elemen-elemen dalam sebuah unit bekerja sama untuk mencapai tujuan yang sama. Dalam konteks unit testing, high-cohesion berarti setiap fungsi atau method hanya melakukan satu tugas. Hal ini membuat kode lebih mudah untuk diuji dan dipahami.

2. Low-coupling

Dalam pengembangan perangkat lunak, coupling mengacu pada seberapa besar ketergantungan antara suatu fungsi atau kelas dengan fungsi atau kelas lainnya. Low-coupling berusaha untuk mengurangi ketergantungan tersebut sehingga perubahan dalam satu fungsi tidak berdampak besar terhadap fungsi lainnya. Dengan demikian, kode menjadi lebih fleksibel dan mudah diuji secara independen.

3. Principle of Least Surprise

Prinsip ini menyatakan bahwa sebuah fungsi atau method harus melakukan apa yang diharapkan oleh pengguna tanpa efek samping yang tidak diinginkan. Hal ini membantu dalam memastikan kode lebih mudah untuk diuji dan dipahami.