TDD dalam Proyek A1

Reza Ramadhansyah
PPL Teman Bisnis
Published in
4 min readApr 18, 2019

Halo! Kembali lagi dalam tulisan saya yang kesekian kalinya. Kali ini saya ingin berbagi sedikit tentang TDD (Test Driven Development) dan apa pengaruhnya dalam pengerjaan proyek kelompok kami. Let’s Go!

Pengertian

TDD sendiri merupakan pendekatan dimana sebelum kita membuat code yang cukup untuk sebuah produk dan refactoring, kita membuat test terlebih dahulu untuk menentukan tujuan yang akan kita capai dalam kodingan.

Biasanya para developer tidak terlalu memperhatikan prinsip TDD karena mereka tidak terjun secara langsung untuk membuat kodingan yang mereka inginkan. Padahal konsep TDD dibuat agar para developer dapat memahami requirements yang telah diberikan dengan baik.

Lalu, jika kita membuat test dahulu bukannya kodingan akan gagal karena belum ada apapun?

Nah disinilah prinsip TDD mulai diterapkan. TDD menerapkan 3 cycle diantaranya adalah:

1. Red

Dalam fase ini, developer akan membuat test secukupnya sesuai kebutuhan tanpa memikirkan coverage 100%. Jadi implementasi dilakukan sengaja untuk “menggagalkan” testing yang dibuat.

2. Green

Pada fase ini, developer memulai implementasi semua fungsi yang dibutuhkan sesuai dengan test yang dibuat pada fase RED. Tahap ini belum memikirkan bagaimana cara membuat coverage menjadi 100%, tetapi mementingkan untuk membuat fungsi agar lolos test yang telah dibuat.

3. Refactor

Barulah pada fase ini, developer harus memikirkan konsep clean code untuk membuat code coverage menjadi 100%. Banyak hal yang dapat diubah dalam fase ini, hanya saja perubahan tersebut tidak boleh membuat hasil test yang sudah GREEN menjadi RED karena suatu kesalahan. Pada intinya Refactor digunakan untuk memperbaiki kekurangan yang masih ada dalam fase GREEN.

https://easternpeak.com/blog/a-test-driven-approach-to-app-development-the-main-benefits-for-your-business/

Penerapan TDD dalam Proyek

Pada proyek ini, saya mendapatkan tugas untuk menampilkan page seperti Users, DNU, dan sebagainya. Nah untuk mengetahui apakah page tersebut muncul atau tidak, saya membuat unit testing untuk melihat return code ketika page dijalankan apakah sesuai atau tidak.

Beberapa Testing untuk Page

Nah dalam tahap ini saya tidak memikirkan apakah code coverage sudah 100% atau belum. Dan page belum terimplementasi dengan benar karena testing dibuat dahulu, jadi hasil testing pasti gagal [RED].

Berikutnya, membuat page yang dibutuhkan sesuai unit test yang telah dibuat, pada langkah ini seharusnya unit test akan berhasil meskipun code coverage belum 100% [GREEN].

Selanjutnya, melakukan refactoring atas hal-hal yang belum membuat code coverage menjadi 100% dengan menggunakan konsep clean code [REFACTOR].

Contoh lain yang saya kerjakan untuk membuat API untuk search user berdasarkan UID.

  1. [RED] Membuat unit test untuk mendapatkan user berdasarkan UID tertentu. Pada tahapan ini seperti yang dijelaskan sebelumnya, pada tahapan ini belum melakukan implementasi, tetapi lebih menekankan kepada tujuan apa yang ingin kita capai dari implementasi kode yang ingin kita lakukan. Disini, saya ingin mendapatkan user berdasarkan UID.
Hasil commit yang masih gagal karena belum ada implementasi
Testing yang dibuat untuk search by UID

2. [GREEN] Pada tahap ini mulai dilakukan implementasi untuk meloloskan test case yang telah kita buat. Deploy akan berhasil dan belum mengecek apakah code coverage sudah 100% karena tujuan dari tahap ini adalah untuk memulai implementasi dan meloloskan test.

Hasil implementasi API

3. [REFACTOR] Pada tahap ini, saya berusaha untuk menaikkan code coverage menjadi 100% dan hasil deploy masih tetap [GREEN] saat terjadi perubahan. Misalnya mengubah nama suatu function dalam test yang saya lakukan. Hanya saja karena API bercampur dengan pekerjaan teman saya yang lain, code coverage masih belum mencapai 100% karena ada line yang belum ter-cover.

Refactor yang masih bisa terdeploy
code coverage pada local

Penutup

Akhir kata, testing sangat membantu kami untuk mengetahui baris kode mana yang perlu diperbaiki agar mendapatkan code coverage 100%. Meskipun pada awalnya saya juga agak sedikit malas untuk membuat test terlebih dahulu, tetapi pada akhirnya dapat membantu kelompok menyelesaikan masalah tanpa harus mencari manual pada masing-masing baris kodingan.

Thank you for reading!

--

--