TDD: Ngikut Aja

Gregorius Aprisunnea
3 min readMar 7, 2020

### Tulisan ini dibuat untuk tugas menulis artikel mata kuliah Perancangan Perangkat Lunak (PPL) di fakultas ilmu komputer Universitas Indonesia ###

Pada artikel ini, saya akan menjelaskan secara singkat dasar-dasar TDD. Pada mata kuliah PPL , kami diwajibkan menerapkan TDD dalam mengerjakan proyek yang diberikan. TDD adalah singkatan dari Test Driven Development. Menurut wikipedia, berikut merupakan definisi TDD:

Test-driven development (TDD) is a software development process that relies on the repetition of a very short development cycle: requirements are turned into very specific test cases, then the code is improved so that the tests pass

Langkah-langkah dalam menerapkan TDD

  1. Membuat test
    Pada tahap ini, kita membuat test sesuai dengan product backlog kita. Kemudian, push test ini ke remote repository (git). Pada tahap ini, test kita memang pasti fail dikarenakan belum ada kode yang kita implementasikan. Tahap ini disebut RED stage.
  2. Menulis kode
    Setelah membuat test, barulah kita mengimplemen kode kita. Ingat, kita hanya menuliskan kode dengan tujuan “lulus” test yang telah kita buat, jangan membuat kode lebih dari yang sudah ter-cover oleh test. Kemudian, push ke remote repository (git). Tahapan ini disebut GREEN stage.
  3. Refaktor kode
    Setelah menerapkan langkah 1 dan 2, kita masuk ke tahap yang disebut REFACTOR stage. Pada tahap ini, kita ingin meningkatan kualitas kode kita dengan menambahkan komentar, merapikan kode, dan sebagainya dengan tujuan meningkatkan keindahan kode.

Kelebihan dan kekurangan TDD

TDD memaksa developer untuk meciptakan kode secara lebih modular. Dengan demikian, developer akan lebih terfokus terhadap apa yang harus dikerjakan. Kelebihan lainnya adalah kesalahan implementasi kode pun akan langsung terlihat saat kode tersebut di test. Terlebih, Developer akan memiliki suatu “safety line” sehingga saat melakukan refaktor atau mengubah kode yang sudah dibuat cukup lama, developer merasa yakin kodenya benar sebab ada unit test.

Namun, disamping semua kelebihan TDD tersebut, ada beberapa hal yang perlu diperhatikan. TDD juga merupakan suatu implementasi yang di-coding, sehingga, implementasinya akan menambah pekerjaan developer. Dengan demikian, TDD memerlukan lebih banyak waktu, uang, dan tenaga. Selain itu, implementasi test di TDD harus di-maintain, sehingga untuk kode yang cepat berubah seperti di front-end, TDD akan sedikit menyulitkan.

TDD memang akan memakan banyak sumber daya, tetapi, untuk jangka panjang, TDD juga akan memberikan banyak keuntungan. Apabila anda ingin membaca lebih banyak tenatang kelebihan dan kekurangan TDD, anda dapat membacanya disini.

Implementasi TDD di kelompok NgikutAja

Kelompok NgikutAja menerapkan TDD pada fase developmentnya. Berikut merupakan contoh kode test yang dibuat kelompok NgikutAja untuk melakukan testing terhadap komponen Navbar pada React.

Contoh Unit Test Navbar

Mengikuti tahapan dalam TDD, setelah test ini dibuat, akan di push ke git repository pada fase [RED]. Kemudian, baru setelah itu akan diimplemen kode. Kode ini nantinya juga akan di push ke git repository pada fase [GREEN]. Setelah itu, apabila merasa dibutuhkan, kita dapat melakukan refaktor kode. Jangan lupa untuk melakukan test ulang terhadap kode yang di refaktor. Apabila sudah lulus semua test, push lagi ke git repository pada fase [REFACTOR].

Jenis testing dalam TDD

Sebagai tambahan, saya hendak menjelaskan secara singkat beberapa bentuk testing yang mungkin perlu diketahui untuk memahami TDD lebih dalam:

  1. Unit Test
    Test yang dilakukan untuk masing-masing bagian terkecil dari kode yang dibuat, misalnya suatu React Component akan memiliki Unit Test seperti contoh diatas.
  2. Integration Test
    Test yang dilakukan ketika kita melakukan kombinasi berbagai komponen-komponen kecil untuk membentuk suatu komponen yang bisa menyatukan seluruh komponen kecil tersebut. Tujuan test ini adalah memastikan bahwa komponen-komponen kecil tersebut menyatu dan berfungsi dengan baik.
  3. Acceptance Test
    Acceptance test dilakukan dengan memastikan software yang dibuat sudah sesuai dengan user stories.

Penutupan

TDD merupakan konsep yang menarik untuk dipelajari. Pada artikel ini, saya telah menjelaskan dasar-dasar dari TDD beserta sebuah contoh unit test. Demikian artikel singkat saya mengenai TDD ini. Mohon maaf apabila terdapat kesalahan dan mohon masukannya.

--

--