Pengujian unit
Pengujian uni ini umumnya otomatis, tapi mungkin masih dilakukan secara manual. IEEE tidak menganjurkan salah satunya dibandingkan yang lain. Tujuanpengujian unit ini adalah untuk mengisolasi suatu unit dan memvalidasi kebenarannya. Pendekatan manual dari pengujian unit dapat menggunakan dokumen yang berisi perintah langkah demi langkah. Namun ini dapat dilakukan dengan efisien dengan
otomatisasi, dan memungkinkan banyak manfaat yang tercantum dalam artikel ini. Sebaliknya, jika tidak direncanakan dengan hati-hati, kasus pengujian unit yang ceroboh dapat dieksekusi sebagai kasus uji integrasi yang melibatkan banyak komponen-komponen perangkat lunak, dan dengan demikian menghalangi pencapaian kebanyakan tujuan yang ditetapkan untuk pengujian unit, atau malah menggagalkan semuanya.
Untuk sepenuhnya merealisasikan efek isolasi saat menggunakan pendekatan otomatis, unit atau badan kode yang diuji dieksekusi di dalam kerangka kerja di luar lingkungan alamiahnya. Dengan kata lain, unit tersebut dieksekusi di luar produk atau konteks tempat unit tersebut diciptakan. Pengujian dengan cara terisolasi seperti ini mengungkapkan ketergantungan antara kode dalam
unit yang sedang diuji dan unit-unit lain atau ruang data dalam produk. Ketergantungan ini kemudian dapat dihilangkan.
Dengan menggunakan kerangka kerja otomatisasi, pengembang mengkodekan kriteria, atau hasil yang diketahui benar, ke dalam uji untuk memeriksa kebenaran unit tersebut. Dalam eksekusi kasus uji, kerangka kerja mencatat uji yang gagal melewati kriteria apa pun. Banyak kerangka kerja juga akan menandai secara otomatis kasus uji yang gagal ini dan melaporkannya
dalam rangkuman. Tergantung kepada parahnya kegagalan yang terjadi, kerangka kerja mungkin akan berhenti melakukan uji selanjutnya.
Karena itu, pengujian unit secara tradisional adalah pemotivasi pemrogram untuk menciptakan kode yang independen dan kohesif. Praktik ini mempromosikan kebiasaan yang sehat dalam pengembangan perangkat lunak. Pola desain, pengujian unit, dan refaktorisasi sering berjalan bersama-sama sehingga akhirnya muncul solusi terbaik.
Kerangka kerja unit pengujian biasanya adalah produk pihak ketiga yang tidak didistribusikan sebagai bagian dari rangkaian pengkompilasi (compiler suite). Kerangka kerja ini membantu menyederhanakan proses pengujian unit, dan telah dikembangkan untuk berbagai macam bahasa pemrograman. Contoh kerangka kerja pengujian mencakup solusi sumber terbuka seperti berbagai kerangka kerja yang dikenal
secara kolektif sebagai xUnit, dan solusi komersial seperti Typemock Isolator.NET/Isolator++, TBrun, JustMock, Parasoft Development Testing (Jtest, Parasoft C/C++tes, dotTEST), Testwell CTA++ dan VectorCAST/C++.
Biasanya kita dapat melakukan pengujian unit tanpa dukungan dari kerangka kerja tertentu dengan menulis kode klien yang menjalankan unit yang diuji test dan menggunakan penegasan, penanganan eksepsi, atau mekanisme pengendali aliran lainnya untuk memberi tanda kegagalan. Pengujian unit tanpa kerangka kerja adalah berharga karena ada halangan adopsi pengujian unit; memiliki
sedikit pengujian unit tidak lebih baik daripada tidak ada sama sekali, padahal sekali kerangka kerja sudah diterapkan, menambahkan pengujian unit menjadi relatif mudah. Pada beberapa kerangka kerja yang banyak fitur pengujian unit yang tidak ada atau harus ditulis secara manual.
Beberapa bahasa pemrograman mendukung secara langsung pengujian unit. Tata bahasanya memungkinkan langsung deklarasi pengujian unit tanpa mengimpor pustaka (baik standar ataupun pihak ketiga). Selain itu, syarat boolean dari pengujian unit dapat dinyatakan dalam sintaks yang sama sebagai ekspresi boolean yang digunakan dalam kode bukan pengujian unit, seperti apa yang digunakan untuk pernyataaan if dan while.
Bahasa dengan pengujian unit terintegrasi meliputi: Beberapa bahasa tanpa dukungan pengujian unit terintegrasi memiliki pustaka/kerangka kerjapengujian unit yang sangat baik. Di antaranya: