[Ext.] TDD

Kelly William
Basic People
Published in
3 min readApr 17, 2019

Ringkasan singkat mengenai TDD:

TDD (Test-Driven Development) merupakan salah satu metodologi development yang digunakan untuk membantu developer lebih terarah dan dipaksa untuk berpikir dalam memikirkan kira-kira bagaimana bentuk spesifikasi input-output (menyusun unittest) sebelum melakukan menulis kode.

Cycle TDD

Pembuatan test yang baik dan benar dapat menggunakan acuan F.I.R.S.T yang tersedia dalam buku Clean Code.

  • [F]ast, Unittest yang dibuat harus cepat. ‘Cepat’ disini diartikan bahwa test yang dibuat tidak boleh berbelit-belit dan relatif cepat dalam pengeksekusiannya. Apabila tidak cepat, unittest dapat memperlambat proses development dan memakan waktu yang lebih lama untuk mengetahui apakah test tersebut pass atau fail. Unittest biasanya lambat dikarenakan ketergantungan terhadap kebutuhan-kebutuhan eksternal, seperti penggunaan database, file, dan jaringan.
  • [I]solated, Test-test yang dibuat dalam unittest tidak bergantung satu sama lain. Hal ini dilakukan agar ketika terdapat tes yang fail, kita dapat dengan mudah mengetahui letak kesalahannya dimana, sehingga tidak perlu dilakukan debug code.
  • [R]epeatable, Test-test yang dibuat selalu menghasilkan output yang sama setiap kali dirun. Untuk memenuhi ini, biasanya input pada setiap tes bersifat isolasi (tiap tes punya inputnya sendiri dan tidak dibagikan ke tes lain).
  • [S]elf-validating, setiap tes harus dapat menentukan apakah outputtersebut dapat dicapai atau tidak (dapat menentukan apakah fail atau pass).
  • [T]imely, Unittest dapat dibuat kapanpun. Dalam tahap awal TDD, kita membuat beberapa tes. Pada saat implementasi, kita boleh menambahkan tes-tes yang belum ditulis diawal pembuatan unittest.

Implementasi Tests pada Projek kami:

Contoh Test pada component ProfilInstansi

Test pertama mengetes apakah component render tanpa crash. Test kedua dilakukan dengan menggunakan bantuan dari modul shallow. Disini, nantinya modul shallow akan membuat snapshot yang berfungsi sebagai acuan “rancangan” yang telah dibuat sebelumnya. Apabila tidak sesuai, test dinyatakan tidak berjalan. NB: Kita juga dapat mengupdate snapshot ketika menjalankan npm test secara manual, kemudian akan menghasilkan snapshot dengan “rancangan” terbaru.

Contoh Snapshot pada component ProfilInstansi

Test tersebut saat ini menghasilkan pipeline akan menghasilkan RED, karena belum terdapat implementasi component pada test tersebut.

Contoh implementasi component ProfilInstansi

Setelah komponen berhasil diimplementasi, maka pipeline akan menghasilkan GREEN.

Untuk dapat menggunakan komponen, kita harus melakukan REFACTOR pada halaman yang akan mengeluarkan komponen tersebut.

Contoh Implementasi pada page ProfilInstansi

Sekian dari saya mengenai TDD. Terima kasih~

--

--