TDD dan Implementasinya dalam Proyek Perangkat Lunak

Aan Nur Wahidi
4 min readMay 10, 2021

--

Sumber : https://www.rishabhsoft.com/blog/unit-testing-for-android-mobile-applications

TDD atau Test Driven Development merupakan salah satu metode pengembangan software yang telah lama dikenal. Dahulu kita membuat implementasinya lalu kemudian melakukan test kemudian agar mengetahui bug dan masalah lainnya sebelum dipublikasikan. Namun dengan TDD kita akan membuat test terlebih dahulu sebelum implementasinya, apa kelebihan hal tersebut?

Test Driven Development

TDD merupakan metode pada pengembangan software yang mengutamakan pembuatan test terlebih dahulu lalu dengan test tersebut akan dibuat implementasinya, dengan kata lain dasar pembuatan software-nya adalah test.

Sumber : https://www.nouraraar.com/test-driven-development-in-swift/

Terdapat 3 tahap dalam TDD yaitu Red , Green, dan Refactor.

  • Red, pada tahap ini dilakukan pembuatan test tanpa adanya implementasi code. Test tersebut berdasarkan requirements yang ada. Misal terdapat requirements yang mengharuskan ada text tertentu pada halaman. Nah kemudian kita akan membuat test yang akan berhasil sesuai requirements tersebut.
  • Green, pada tahap ini setelah selesai membuat test, akan dibuat implementasinya agar memenuhi test-test yang telah dibuat.
  • Refactor, setelah kita membuat implementasi yang memenuhi test kemudian kita akan me-refactor yaitu simplifikasi code agar memenuhi clean code.

Implementasi TDD dalam Proyek Perangkat Lunak

Saya melakukan TDD pada proyek mata kuliah PPL (Proyek Perangkat Lunak). Proyek yang saya dan tim saya ambil adalah Hepicircle-Admin, yaitu aplikasi Hepi Circle untuk Administrator. Proyek ini merupakan aplikasi Android yang menggunakan Flutter sebagai framework-nya. Saya dan tim juga telah membuat design sehingga dapat membuat test lebih mudah.

Menuliskan Test (Red)

Berikut adalah salah satu contoh test yang saya buat, test ini dimaksudkan untuk suatu splashcreen widget. Splashscreen merupakan halaman yang akan ditampilkan pertama kali saat membuka aplikasi. Saya ingin mencoba untuk testing, text apa saja yang ada pada widget tersebut.

Kemudian pada tahap testing akan gagal.

Namun kalian dapat mencoba untuk membuat implementasi yang kosong saja seperti ini. Agar pipeline gagal bukan karena linter namun karena test yang gagal.

Membuat Implementasi hingga Green

Setelah saya membuat test, Saya akan mencoba mengimplementasikan requirements ke dalam code. Berikut adalah potongan code dari implementasinya.

Kemudian pipeline akan berhasil.

Refactor Code

Setelah membuat implementasinya, tentunya terdapat code yang dikiranya bisa diperbaiki untuk mengurangi bug atau code smells.Kita dapat melihat tingkatan bug dan code smells pada SonarQube. Seperti penambahan const pada widget yang konstan.

Code Coverage

Tentunya dalam membuat test akan ada kemungkinan suatu code tidak tercakupi dalam test. Coverage akan memberitahu seberapa persen kah test kita mencakupi seluruh code yang ada pada implementasi.

Bagaimana TDD Membantu dalam Proyek Perangkat Lunak

Pada kali ini saya akan menjelaskan bagaimana TDD membantu saya membuat CountDown (method yang akan digunakan sebagai penghitung mundur untuk mengirim ulang OTP) dalam menerapkan ke dalam suatu widget.

Terlihat potongan test sederhana, namun cukup untuk membantu saya mengimplementasikannya. Pada baris pertama saya akan mengecek terlebih dahulu text yang akan saya gunakan. Kemudian saya akan pump secara async (Kita tidak perlu harus menunggu sebanyak waktu yang ditentukan) selama 3 detik. Lalu akan saya coba test apakah text kemudian akan berubah menjadi 57 dari yang semula 60.

Setelah timer berakhir kemudian akan dimunculkan suatu teks untuk mengirim ulang OTP. Saya akan menambahkan test untuk hal tersebut.

Dan berikut hasil yang didapat.

Kelebihan dan Kekurangan TDD

Kelebihannya yaitu:

  • Meminimalisir bug, dengan TDD kita akan membuat test terlebih dahulu untuk mengurangi kemungkinan error yang terjadi pada implementasinya. Sehingga dengan TDD ketika membangun code, bug-bug yang sudah diprediksi dapat diselesaikan dengan cepat.
  • Meningkatkan produktivitas

Kekurangannya yaitu:

  • Dalam pembangunan aplikasi dengan metodologi ini dibutuhkan tim pembangun yang sudah berpengalaman dan memahami bagaimana menulis test yang baik dan juga mengerti sedikit tentang arsitektur yang baik sehingga tidak cocok bagi tim pembangun pemula [1].
  • Apabila tidak memiliki abstarksi design atau prototype akan lebih sulit membangun aplikasi karena hanya berdasarkan requirements sehingga hanya menggunakan design thinking.

Kesimpulan

TDD merupakan metode yang sangat baik untuk diterapkan, selain mengurangi waktu untuk debugging juga dapat meningkatkan produktivitas pada pengerjaan proyek. Namun tetap saja memiliki kekurangannya untuk menerapkan hal tersebut.

Referensi

--

--