Unit Testing

Dalam postingan ini, saya akan memberikan Anda pengantar singkat tentang unit testing dan manfaatnya. Jadi, mari kita mulai!

Apa itu Unit Testing?

Unit testing atau Pengujian Unit adalah metode verifikasi perangkat lunak di mana programmer menguji suatu unit program layak atau tidaknya untuk dipakai. Unit testing ini fokusnya pada verifikasi pada unit yang terkecil pada desain perangkat lunak (komponen atau modul perangkat lunak).

Berikut ini adalah sebuah contoh. Bayangkan Anda memiliki fungsi ini dan ini adalah fungsi penghitungan dasar yang akan mengambil input dan tergantung pada beberapa kondisi, ia akan mengembalikan nilai yang berbeda.

public float CalculateTax(int input) 
{
    if (x) return ...;
    if (y) return ...;
    return ...;
}

Jika Anda ingin menguji fungsi ini secara manual, Anda harus menjalankan aplikasi, mungkin Anda harus login (jika aplikasi diserta otentikasi keamanan) atau mungkin melakukan beberapa klik di sana-sini untuk sampai ke modul di mana fungsi ini digunakan. Kemudian, Anda harus mengisi formulir, mengirimkannya dan memverifikasi apakah fungsi ini mengembalikan hasil yang benar. Dan kemudian Anda harus mengulangi semua langkah ini, setiap kali menggunakan nilai yang berbeda.

Pengujian Manual Itu Mahal

Seperti yang Anda lihat diatas, itu sangat memakan waktu. Alur kerja untuk menguji fungsi tersebut dapat berlangsung beberapa menit. Tentunya ini bukan satu-satunya fungsi dalam aplikasi Anda. Mungkin dalam sebuah aplikasi, Anda memiliki puluhan atau ratusan fungsi seperti itu. Saat aplikasi Anda berkembang dalam skala dan kompleksitas, waktu yang dibutuhkan untuk menguji secara manual semua menjadi sangat banyak. Jadi, itu sebabnya saya sarankan menggunakan pengujian otomatis.

Manual Unit Testing

Dengan pengujian otomatis, Anda perlu membuat proyek terpisah untuk menulis tes. Dalam proyek itu Anda akan menulis kode dan langsung memanggil fungsi ini dengan input berbeda dan memverifikasi bahwa fungsi ini mengembalikan output yang tepat.

var result = CalculateTax(1);
Verify(result == 1.5f);

Saya menyebut jenis tes ini sebagai Unit Tests. Dengan unit tests, kita akan menguji unit aplikasi secara terpisah tanpa dependensi eksternal seperti file, database, layanan web, dll. Tes yang menyertakan dependensi eksternal ini disebut Integration Tests dan mudah-mudahan dilain waktu akan kita bahas topik itu di posting lain.

Baca Juga:  Peran dan Hak Akses di Laravel – Bagian 2

Unit Tests Dapat Diulang

Hal yang baiknya adalah adalah unit tests dapat diulang. Anda hanya perlu menulisnya sekali dan menjalankannya beberapa kali tanpa batas. Jadi, setiap kali Anda mengubah kode Anda dan sebelum menggunakan di aplikasi Anda, dengan pendekatan ini, Anda dapat menguji semua jalur eksekusi dalam fungsi ini dalam sepersekian detik. Anda dapat menulis beberapa ratus atau ribuan unit tests untuk berbagai bagian aplikasi Anda, dan menjalankan semuanya hanya dalam beberapa detik.

Membantu Menulis Kode dengan Baik

Saat menulis tes, Anda dipaksa untuk memikirkan skenario/kasus setiap fungsi dalam aplikasi Anda. Anda perlu menulis tes untuk fungsi-fungsi yang akan diuji, memberinya berbagai input dan memastikan mereka memberikan hasil seperti yang Anda harapkan. Ini akan membantu Anda menghasilkan aplikasi berkualitas lebih baik dengan bug yang lebih sedikit.

Banyak bug dalam aplikasi adalah hasil dari kasus yang tidak terduga. Salah satu fungsi Anda menerima input yang lupa Anda prediksi dan boom! Itu meledak! Dengan tes unit, Anda memastikan bahwa setiap fungsi bekerja dengan input berbeda dalam berbagai keadaan.

Manfaat Unit Testing

  • Sering-seringlah menguji kode Anda dan dalam waktu yang lebih singkat
  • Dapatkan lebih banyak bug sebelum diterapkan pada aplikasi
  • Rilis aplikasi Anda dengan penuh percaya diri
  • Perbaiki kode Anda dengan penuh percaya diri
  • Tulis kode yang lebih bersih dan terawat

Kesimpulan

Itulah pengantar singkat tentang Unit Testing dan mengapa Anda perlu mempelajarinya. Perlu diketahui, bukan berarti dengan unit test bebas bug. Tetapi dengan unit test, Anda dapat merilis sebuah aplikasi dengan kualitas yang lebih baik dan bug yang lebih sedikit.