TDD AND AWARENESS OF SOFTWARE ARCHITECTURE

Gunawan Santoso
println-mic
Published in
2 min readApr 18, 2018

Dalam tulisan ini saya akan mensharingkan mengenai Test Driven Development, mulai dari pengenalan, bagaimana melakukannya, serta kekurangan dan kelebihannya.

Apa itu TDD ?

TDD adalah satu satu teknik programming dimana penulisan kode implementasi dan testing dilakukan secara bersamaan. Proses pengembangannya dilakukan secara iteratif. Dengan demikian kode yang dibut dapat dievaluasi secara berulang dengan test yang telah dibuat.

Bagaimana melakukan TDD ?

Secara umum ada beberapa langkah dalam melakukan TDD :

  1. Testing, sebelum membuat implementasi kode, file testing dibuat terlebih dahulu. Test tersebut dapat mencakup semua kemungkinan input, output, dan error pada implementasi kode.
  2. Implementasi kode, Ketika testing dijalankan, testing tersebut tentunya akan gagal karena belum ada kode yang di dimplementasi. pada tahap ini dibuat kode minimal yang dapat membuat test tersebut berhasil.
  3. Refaktor, setelah kode berhasil melewati semua test, maka dapat dilakukan perbaikan kode yang lebih baik. Biasanya dilakukan clean code, dan diterapkan design pattern, atau menghapus kode-kode duplikasi

Kelebihan TDD ?

Dibanding dengan cara pengembangan yang umum dilakukan oleh programmer, yaitu dengan membuat testing diakhir setelah implementasi kode dibuat, TDD memiliki beberapa keuntungan :

  1. Mengurangi beban pembuatan test di akhir. Pembuatan test diakhir akan lebih sulit karena kode yang di implementasi cukup banyak dan perlu menulusuri lagi semua logic yang ada pada kode tersebut. Dengan membuat test di awal, dimana implementasi kode masih sedikit, beban dalam membuat testing menjadi lebih ringan.
  2. Mendorong programmer untuk memikirkan semua logika input, output, dan error pada kodingan mereka.

Kekurangan TDD ?

  1. Membuat test sebelum mengetahui implementasi kode itu sulit
  2. Sangat memakan waktu di awal untuk pemula

Awareness Of Software Architecture

Software architecture merupakan struktur dari sebuah sistem software yang mendefinisikan komponen-komponennya beserta relasinya antara komponen-komponen tersebut.

Dalam mengembangan aplikasi Println, struktur aplikasi kami terdiri dari beberapa komponen beserta tanggung jawabnya:

  1. Frontend, menangani semua interaksi user dengan aplikasi
  2. Backend, menyediakan akses data ke frontend dan backend
  3. Microservice (Print), mengatur proses print dengan printer
  4. Dropbox, sebagai media penyimpanan file yang diupload oleh user
gambaran arsitektur Println

Sekian sharing dari saya mengenai TDD dan software architecture :)

--

--