Apa itu Unit Testing?
UNIT TESTING adalah jenis pengujian perangkat lunak di mana setiap unit atau komponen perangkat lunak diuji. Tujuannya adalah untuk memvalidasi bahwa setiap unit kode perangkat lunak bekerja seperti yang diharapkan. Pengujian Unit dilakukan selama pengembangan (tahap pengkodean) aplikasi oleh pengembang. Unit Test mengisolasi bagian kode dan memverifikasi kebenarannya. Sebuah unit dapat berupa fungsi, metode, prosedur, modul, atau objek individual.
Dalam SDLC, STLC, V Model, Pengujian unit adalah pengujian tingkat pertama yang dilakukan sebelum pengujian integrasi. Pengujian unit adalah teknik pengujian WhiteBox yang biasanya dilakukan oleh pengembang. Padahal, dalam dunia praktis karena waktu yang terbatas atau keengganan pengembang untuk menguji, teknisi QA juga melakukan pengujian unit.
Dalam tutorial ini, Anda akan belajar-
- Mengapa Pengujian Unit?
- Bagaimana melakukan Pengujian Unit
- Teknik Pengujian Unit
- Alat Pengujian Unit
- Test Driven Development (TDD) & Pengujian Unit
- Mitos Pengujian Unit
- Keuntungan Pengujian Unit
- Kekurangan Pengujian Unit
- Praktik Terbaik Pengujian Unit
Mengapa Pengujian Unit?
Pengujian Unit penting karena pengembang perangkat lunak terkadang mencoba menghemat waktu melakukan pengujian unit minimal dan ini adalah mitos karena pengujian unit yang tidak tepat menyebabkan biaya tinggi Perbaikan kerusakan selama Pengujian Sistem, Pengujian Integrasi, dan bahkan Pengujian Beta setelah aplikasi dibangun. Jika pengujian unit yang tepat dilakukan pada pengembangan awal, maka pada akhirnya akan menghemat waktu dan uang.
Berikut adalah alasan utama untuk melakukan pengujian unit dalam rekayasa perangkat lunak:
- Pengujian unit membantu memperbaiki bug di awal siklus pengembangan dan menghemat biaya.
- Ini membantu pengembang untuk memahami basis kode pengujian dan memungkinkan mereka membuat perubahan dengan cepat
- Tes unit yang baik berfungsi sebagai dokumentasi proyek
- Tes unit membantu penggunaan ulang kode. Migrasikan kode dan pengujian Anda ke proyek baru Anda. Sesuaikan kode hingga pengujian dijalankan kembali.
Bagaimana melakukan Pengujian Unit
Untuk melakukan Pengujian Unit , pengembang menulis bagian kode untuk menguji fungsi tertentu dalam aplikasi perangkat lunak. Pengembang juga dapat mengisolasi fungsi ini untuk menguji lebih ketat yang mengungkapkan ketergantungan yang tidak perlu antara fungsi yang sedang diuji dan unit lain sehingga ketergantungan dapat dihilangkan. Pengembang umumnya menggunakan kerangka kerja UnitTest untuk mengembangkan kasus uji otomatis untuk pengujian unit.
Pengujian Unit terdiri dari dua jenis
- Manual
- Otomatis
Pengujian unit biasanya otomatis tetapi masih dapat dilakukan secara manual. Rekayasa Perangkat Lunak tidak menyukai satu sama lain tetapi otomatisasi lebih disukai. Pendekatan manual untuk pengujian unit dapat menggunakan dokumen petunjuk langkah demi langkah.
Di bawah pendekatan otomatis-
- Seorang pengembang menulis bagian kode dalam aplikasi hanya untuk menguji fungsinya. Mereka kemudian akan berkomentar dan akhirnya menghapus kode pengujian saat aplikasi diterapkan.
- Pengembang juga dapat mengisolasi fungsi untuk mengujinya dengan lebih teliti. Ini adalah praktik pengujian unit yang lebih menyeluruh yang melibatkan salin dan tempel kode ke lingkungan pengujiannya sendiri daripada lingkungan aslinya. Mengisolasi kode membantu mengungkapkan ketergantungan yang tidak perlu antara kode yang sedang diuji dan unit lain atau ruang data dalam produk. Dependensi ini kemudian dapat dihilangkan.
- Seorang pembuat kode umumnya menggunakan Kerangka UnitTest untuk mengembangkan kasus uji otomatis. Menggunakan kerangka kerja otomatisasi, pengembang kode kriteria ke dalam pengujian untuk memverifikasi kebenaran kode. Selama eksekusi kasus uji, kerangka kerja mencatat kasus uji yang gagal. Banyak kerangka kerja juga akan secara otomatis menandai dan melaporkan, secara ringkas, kasus uji yang gagal ini. Bergantung pada tingkat keparahan kegagalan, kerangka kerja dapat menghentikan pengujian selanjutnya.
- Alur kerja Pengujian Unit adalah 1) Membuat Kasus Uji 2) Review / Pengerjaan Ulang 3) Baseline 4) Jalankan Uji Kasus.
Teknik Pengujian Unit
The Teknik Unit Testing terutama dikategorikan menjadi tiga bagian yang kotak pengujian Hitam yang melibatkan pengujian dari antarmuka pengguna bersama dengan input dan output, pengujian kotak putih yang melibatkan menguji perilaku fungsional dari aplikasi perangkat lunak dan kotak pengujian Gray yang digunakan untuk mengeksekusi uji suite, metode pengujian, kasus uji dan melakukan analisis risiko.
Teknik cakupan kode yang digunakan dalam Pengujian Unit tercantum di bawah ini:
- Cakupan Pernyataan
- Cakupan Keputusan
- Cakupan Cabang
- Cakupan Kondisi
- Cakupan Mesin Keadaan Hingga
Untuk lebih lanjut di lihat https://www.guru99.com/code-coverage.html
Contoh Uji Unit: Objek Mock
Pengujian unit bergantung pada objek tiruan yang dibuat untuk menguji bagian kode yang belum menjadi bagian dari aplikasi lengkap. Objek tiruan mengisi bagian yang hilang dari program.
Misalnya, Anda mungkin memiliki fungsi yang membutuhkan variabel atau objek yang belum dibuat. Dalam pengujian unit, hal tersebut akan dihitung dalam bentuk objek tiruan yang dibuat semata-mata untuk tujuan pengujian unit yang dilakukan pada bagian kode tersebut.
Alat Pengujian Unit
Ada beberapa perangkat lunak pengujian unit otomatis yang tersedia untuk membantu pengujian unit. Kami akan memberikan beberapa contoh di bawah ini:
- Junit: Junit adalah alat pengujian gratis yang digunakan untuk bahasa pemrograman Java. Ini memberikan pernyataan untuk mengidentifikasi metode pengujian. Alat ini menguji data terlebih dahulu dan kemudian dimasukkan ke dalam potongan kode.
- NUnit: NUnit banyak digunakan kerangka pengujian unit yang digunakan untuk semua bahasa .net. Ini adalah alat open source yang memungkinkan penulisan skrip secara manual. Ini mendukung tes berbasis data yang dapat berjalan secara paralel.
- JMockit: JMockit adalah alat pengujian Unit sumber terbuka. Ini adalah alat cakupan kode dengan metrik garis dan jalur. Ini memungkinkan mocking API dengan pencatatan dan sintaks verifikasi. Alat ini menawarkan cakupan Jalur, Cakupan Jalur, dan Cakupan Data.
- EMMA: EMMA adalah perangkat sumber terbuka untuk menganalisis dan melaporkan kode yang ditulis dalam bahasa Java. Emma mendukung jenis cakupan seperti metode, garis, blok dasar. Ini berbasis Java sehingga tanpa ketergantungan perpustakaan eksternal dan dapat mengakses kode sumber.
- PHPUnit: PHPUnit adalah alat pengujian unit untuk programmer PHP. Dibutuhkan sebagian kecil kode yang disebut unit dan menguji masing-masing secara terpisah. Alat ini juga memungkinkan pengembang untuk menggunakan metode pernyataan yang ditentukan sebelumnya untuk menegaskan bahwa sistem berperilaku dengan cara tertentu.
Itu hanyalah beberapa dari alat pengujian unit yang tersedia. Masih banyak lagi, terutama untuk bahasa C dan Java, tetapi Anda pasti akan menemukan alat pengujian unit untuk kebutuhan pemrograman Anda terlepas dari bahasa yang Anda gunakan.
Test Driven Development (TDD) & Pengujian Unit
Pengujian unit di TDD melibatkan penggunaan ekstensif kerangka pengujian. Kerangka pengujian unit digunakan untuk membuat pengujian unit otomatis. Kerangka kerja pengujian unit tidak unik untuk TDD, tetapi sangat penting untuk itu. Di bawah ini kami melihat beberapa dari apa yang dibawa TDD ke dunia pengujian unit:
- Tes ditulis sebelum kode
- Sangat bergantung pada kerangka pengujian
- Semua kelas dalam aplikasi diuji
- Integrasi yang cepat dan mudah dimungkinkan
Mitos Pengujian Unit
Mitos: Ini membutuhkan waktu, dan saya selalu melebihi jadwal Kode saya sangat solid! Saya tidak perlu tes unit.
Mitos pada dasarnya adalah asumsi yang salah. Asumsi ini menyebabkan lingkaran setan sebagai berikut -
Truth is Unit testing meningkatkan kecepatan pengembangan.
Pemrogram berpikir bahwa Pengujian Integrasi akan menangkap semua kesalahan dan tidak menjalankan pengujian unit. Setelah unit terintegrasi, kesalahan yang sangat sederhana yang dapat dengan mudah ditemukan dan diperbaiki dalam unit yang diuji membutuhkan waktu yang sangat lama untuk dilacak dan diperbaiki.
Keuntungan Pengujian Unit
- Pengembang yang ingin mempelajari fungsionalitas apa yang disediakan oleh sebuah unit dan bagaimana menggunakannya dapat melihat pengujian unit untuk mendapatkan pemahaman dasar tentang API unit.
- Pengujian unit memungkinkan pemrogram untuk merefaktor kode di kemudian hari, dan memastikan modul masih berfungsi dengan benar (yaitu pengujian Regresi). Prosedurnya adalah menulis kasus uji untuk semua fungsi dan metode sehingga setiap kali perubahan menyebabkan kesalahan, itu dapat dengan cepat diidentifikasi dan diperbaiki.
- Karena sifat modular dari pengujian unit, kami dapat menguji bagian-bagian proyek tanpa menunggu bagian lain diselesaikan.
Kekurangan Pengujian Unit
- Pengujian unit tidak dapat diharapkan untuk menangkap setiap kesalahan dalam suatu program. Tidaklah mungkin untuk mengevaluasi semua jalur eksekusi bahkan dalam program yang paling remeh sekalipun
- Pengujian unit pada dasarnya berfokus pada unit kode. Oleh karena itu tidak dapat menangkap kesalahan integrasi atau kesalahan tingkat sistem yang luas.
Pengujian unit disarankan untuk digunakan bersama dengan aktivitas pengujian lainnya.
Praktik Terbaik Pengujian Unit
- Kasus Uji Unit harus independen. Jika terjadi peningkatan atau perubahan persyaratan, kasus uji unit tidak boleh terpengaruh.
- Uji hanya satu kode dalam satu waktu.
- Ikuti konvensi penamaan yang jelas dan konsisten untuk pengujian unit Anda
- Jika terjadi perubahan kode dalam modul apa pun, pastikan ada Test Case unit yang sesuai untuk modul tersebut, dan modul tersebut lulus pengujian sebelum mengubah implementasinya
- Bug yang diidentifikasi selama pengujian unit harus diperbaiki sebelum melanjutkan ke fase berikutnya di SDLC
- Terapkan pendekatan "uji sebagai kode Anda". Semakin banyak kode yang Anda tulis tanpa pengujian, semakin banyak jalur yang harus Anda periksa untuk menemukan kesalahan.
Ringkasan
- UNIT TESTING didefinisikan sebagai jenis pengujian perangkat lunak di mana setiap unit atau komponen perangkat lunak diuji.
- Seperti yang Anda lihat, mungkin ada banyak hal yang terlibat dalam pengujian unit. Ini bisa rumit atau agak sederhana tergantung pada aplikasi yang sedang diuji dan strategi pengujian, alat dan filosofi yang digunakan. Pengujian unit selalu diperlukan pada tingkat tertentu. Itu sudah pasti.