TDD | Bagaimana dan Mengapa Kita Menggunakan TDD ? Apa keuntungannya? (Berdasarkan pengalaman pribadi)

Adietya Christian
3 min readMar 25, 2023

--

Image From https://www.perfecto.io/blog/test-driven-development

Apa Itu TDD?

TDD atau Test-Driven Development adalah sebuah teknik pengembangan software yang fokus pada pengujian (testing) untuk mencapai pembuatan kode yang berkualitas. Dalam TDD, developer menulis test terlebih dahulu sebelum menulis kode program yang sebenarnya.

Proses TDD berjalan sebagai berikut:

  1. Menulis test yang menggambarkan behavior yang diharapkan dari suatu fungsi atau fitur yang akan diimplementasi.
  2. Menjalankan test yang telah ditulis. Test ini seharusnya gagal, karena kode program yang sebenarnya belum dibuat.
  3. Menulis kode program yang diperlukan untuk memenuhi permintaan test.
  4. Menjalankan test lagi untuk memastikan bahwa kode program yang baru ditulis telah memenuhi permintaan test.
  5. Melakukan refactor pada kode program, jika diperlukan.

Kenapa Harus TDD?

Ada beberapa alasan mengapa TDD ini baik untuk digunakan, antara lain sebagai berikut.

  1. Meningkatkan kualitas kode program: Dalam TDD, kode program akan diuji secara terus menerus dan dikembangkan dengan cara yang konsisten. Hal ini memastikan bahwa kode program berkualitas dan memiliki kemampuan untuk memenuhi permintaan test yang telah ditetapkan.
  2. Mempermudah debugging: Dengan adanya test, developer dapat dengan mudah menemukan bug dan memperbaikinya sebelum bug tersebut menyebabkan masalah yang lebih besar.
  3. Meningkatkan confident: Dengan adanya test, developer dapat memastikan bahwa kode program bekerja dengan baik dan dapat diandalkan. Hal ini meningkatkan kepercayaan pengguna terhadap software yang dibuat.

Contoh Implementasi TDD

Contoh penerapan TDD (dalam kasus ini menggunakan framework React untuk membangun website):

// Button.test.js
import React from 'react';
import { render, screen } from '@testing-library/react';
import Button from './Button';

test('Button renders correctly', () => {
render(<Button>Click me</Button>);
const buttonElement = screen.getByText(/Click me/i);
expect(buttonElement).toBeInTheDocument();
});
// Button.js
import React from 'react';

const Button = ({ children }) => {
return (
<button>{children}</button>
);
};

export default Button;

Pada contoh di atas, terdapat file Button.js yang berisi implementasi dari komponen Button. Kemudian, pada file Button.test.js, kita menulis unit test untuk memastikan bahwa komponen Button dapat ditampilkan dengan benar di halaman web. Unit test tersebut mengecek apakah teks yang ditampilkan pada button sesuai dengan nilai yang diberikan pada prop children.

Keuntungan yang Saya Dapat Ketika Menggunakan TDD

Sebagai seorang software developer, saya sering merasa bingung untuk memulai saat bekerja dengan tim untuk mengembangkan aplikasi yang kompleks dan besar. Namun, sejak saya mulai menggunakan pendekatan Test Driven Development (TDD) dalam pengembangan perangkat lunak, saya merasa lebih efektif dan efisien dalam menyelesaikan tugas-tugas tersebut.

Salah satu keuntungan utama dari menggunakan TDD adalah bahwa metode ini membuat saya untuk memikirkan secara matang tentang desain dan fungsionalitas yang diperlukan sebelum mulai menulis kode. Dengan cara ini, saya dapat mengurangi jumlah bug dan kesalahan yang terjadi di kemudian hari karena saya dapat mengidentifikasi dan memperbaiki masalah lebih awal dalam siklus pengembangan.

Selain itu, dengan menggunakan TDD, saya juga merasa lebih produktif karena saya dapat lebih cepat mengetahui ketika saya membuat kesalahan dalam kode saya dan dapat memperbaikinya dengan cepat. Proses pengembangan menjadi lebih terstruktur dan mudah diatur, sehingga memungkinkan saya untuk mengembangkan fitur secara lebih efisien dan efektif.

TDD Mempermudah Dalam Berkolaborasi

Dalam kelompok, penggunaan TDD juga membantu kami untuk lebih mudah berkolaborasi. Setiap anggota tim dapat membuat tes terlebih dahulu untuk fitur yang akan mereka tambahkan dan memastikan bahwa kode mereka berfungsi dengan baik. Dengan cara ini, kelompok kami dapat memastikan bahwa setiap perubahan yang dilakukan tidak merusak bagian lain dari aplikasi.

Selain itu, dengan TDD, kita juga dapat lebih mudah melakukan refactor karena kita dapat memastikan bahwa setiap perubahan yang dilakukan tidak mengganggu fungsionalitas yang ada. Hal ini memungkinkan kelompok kami untuk meningkatkan kualitas kode dan mempercepat proses pengembangan.

Kesimpulan

Dalam keseluruhan, penggunaan TDD telah memberikan banyak keuntungan bagi saya dan kelompok saya dalam mengembangkan suatu software, khususnya Peers ini. Metode ini membantu saya mengembangkan aplikasi yang lebih baik dengan meminimalkan jumlah bug dan kesalahan, meningkatkan produktivitas saya, dan memungkinkan kolaborasi yang lebih mudah dengan anggota tim lainnya. Oleh karena itu, saya sangat merekomendasikan penggunaan TDD dalam pengembangan perangkat lunak bagi siapa saja yang ingin meningkatkan efisiensi dan efektivitas dalam pengembangan perangkat lunak.

References:

Jurnal:

  • Shull, F., Melnik, G., Turhan, B., Layman, L., Diep, M., & Erdogmus, H. (2010). What do we know about test-driven development?. IEEE software, 27(6), 16–19.
  • Janzen, D., & Saiedian, H. (2005). Test-driven development concepts, taxonomy, and future direction. Computer, 38(9), 43–50.

Website:

  1. https://www.guru99.com/test-driven-development.html
  2. https://www.browserstack.com/guide/what-is-test-driven-development
  3. https://www.binaracademy.com/blog/test-driven-development-tdd-adalah
  4. https://medium.com/koding-kala-weekend/tdd-the-series-part-1-apa-itu-test-driven-development-tdd-ff92c95c945f

--

--

Adietya Christian
Adietya Christian

Written by Adietya Christian

A Passionate Computer Science Student Interested in Mobile Application Development

No responses yet