Sekarang, orang sering membicarakan tentang pengembangan agile.
Apa itu Pengembangan Agile?
Pengembangan agile adalah kemampuan pengembangan perangkat lunak yang merespons kebutuhan yang berubah dengan cepat. Nama, konsep, proses, dan terminologi spesifik mereka bervariasi. Dibandingkan dengan “non-agile,” mereka menekankan kolaborasi erat antara tim programmer dan ahli bisnis, komunikasi tatap muka (dianggap lebih efektif daripada dokumentasi tertulis), dan seringkali mengeluarkan rilis perangkat lunak baru, kecil dan tim yang mengorganisir diri sendiri untuk penulisan fitur kecil dan berharga, serta pendekatan organisasi tim yang beradaptasi dengan kebutuhan yang berubah, dengan fokus yang lebih besar pada peran orang dalam pengembangan perangkat lunak.
Namun, ada beberapa versi serupa dari metode pengembangan agile TDD, seperti TDD: BDD, DDD, dan ATDD. Izinkan saya memperkenalkan metode ini secara singkat sebelum memperkenalkan TDD secara rinci:
TDD: Pengembangan Berbasis Uji
Pengembangan Berbasis Uji (TDD) adalah proses pengembangan perangkat lunak, yang bergantung pada mengubah persyaratan perangkat lunak menjadi kasus uji sebelum perangkat lunak sepenuhnya dikembangkan, dan melacak semua pengembangan perangkat lunak dengan menguji perangkat lunak secara berulang untuk semua kasus uji. Ini adalah kebalikan dari mengembangkan perangkat lunak terlebih dahulu dan kemudian membuat kasus uji. Beberapa model populer mendukung TDD dengan sangat baik, seperti MVC dan MVP.

BDD: Pengembangan Berbasis Perilaku (Behavior Driven Development)
Pengembangan berbasis perilaku (BDD) juga merupakan proses pengembangan perangkat lunak agile. Ini mendorong kolaborasi antara pengembang, penguji jaminan kualitas, dan perwakilan pelanggan dalam proyek perangkat lunak. Ini mendorong tim untuk menggunakan percakapan dan contoh konkret untuk memformalkan pemahaman bersama tentang bagaimana aplikasi seharusnya bekerja. Ini berasal dari pengembangan berbasis uji (TDD).

ATDD: Pengembangan Berbasis Uji Penerimaan
Untuk mempromosikan realisasi kode fungsional melalui kasus uji unit, tim perlu mendefinisikan standar kualitas yang diharapkan dan aturan penerimaan, serta mempromosikan praktik TDD pengembang dan kinerja penguji melalui rencana uji penerimaan yang jelas dan konsisten (termasuk serangkaian skenario uji). Bagi pengembang, ini menekankan bagaimana mengimplementasikan sistem dan bagaimana mengujinya.

DDD: Desain Berbasis Domain
DDD mengacu pada desain berbasis domain, yaitu pengembangan berbasis domain. DDD sebenarnya dibangun di atas fondasi ini karena fokus pada desain lapisan layanan, fokus pada implementasi bisnis, menggabungkan analitik dan desain, dan tidak lagi mempertahankannya dalam keadaan terpisah, untuk secara benar dan komprehensif mengimplementasikan kebutuhan pelanggan dan membangun model skalabilitas bisnis.

Rencana implementasi TDD
Melalui pengujian untuk mempromosikan seluruh pengembangan, tetapi pengembangan berbasis uji bukan hanya pekerjaan uji sederhana, tetapi proses untuk mengkuantifikasi analisis persyaratan, desain, dan kontrol kualitas.
Prinsip pengembangan
Tulis kode uji terlebih dahulu, dan kemudian tulis kode untuk fungsi.
- Tulis kode uji sesuai dengan dokumen persyaratan, bukan untuk merealisasikan fungsi;
- Jangan ingin menyelesaikan semuanya sekaligus. Saat menguji blok fungsional besar, Anda harus terlebih dahulu membaginya menjadi blok fungsional yang lebih kecil untuk diuji;
- Ingatlah untuk tidak menulis kode untuk menyelesaikan fungsi, gunakan kode yang paling sederhana untuk mengimplementasikan fungsi;
- Jika persyaratan dapat diuji, tulis kode uji, dan tinggalkan yang tidak dapat diuji atau merasa bahwa mereka tidak perlu diuji;
- Sebelum mengubah/menambahkan kode fungsi apa pun, Anda harus terlebih dahulu memikirkan apakah Anda ingin mengubah/menambahkan kasus uji;
- Kode fungsi/kode uji, struktur yang tidak masuk akal, kode duplikat, dll., refactor tepat waktu setelah pengujian berhasil.
Proses pengembangan TDD
- Analisis dan tentukan skenario uji target;
- Tambahkan uji unit untuk memverifikasi input dan output dari skenario uji;
- Jalankan pengujian dan dapatkan hasil pengujian yang gagal;
- Tulis kode fungsi yang paling sederhana untuk lulus uji;
- Jalankan pengujian lagi dan lihat bahwa pengujian berhasil;
- Lakukan refactoring kode, termasuk kode fungsional dan kode uji unit;
- Ulangi langkah-langkah di atas sampai pengembangan selesai.
Manfaat TDD
- Mengurangi beban pada pengembang. Melalui proses yang jelas, mari kita fokus pada satu titik pada satu waktu, dan beban berpikir menjadi lebih ringan.
- Jaring perlindungan. Menyediakan pengujian unit yang lengkap memberikan jaring perlindungan untuk kode produk, memudahkan untuk memenuhi perubahan dalam persyaratan atau meningkatkan desain kode. Jadi jika persyaratan proyek Anda stabil, selesai sekaligus, dan tidak ada perubahan selanjutnya, manfaat TDD menjadi lebih sedikit.
- Jelaskan persyaratan sebelumnya. Menulis uji terlebih dahulu dapat membantu kita memikirkan persyaratan dan menjelaskan rincian persyaratan sebelumnya, daripada menemukan persyaratan yang tidak jelas hanya di tengah kode.
- Umpan balik cepat. Banyak orang mengatakan bahwa ketika TDD, volume kode saya meningkat, sehingga efisiensi pengembangan menurun. Namun, jika Anda tidak memiliki uji unit, Anda harus mengujinya secara manual, Anda menghabiskan banyak waktu untuk menyiapkan data, meluncurkan aplikasi, memodifikasi antarmuka, dan sebagainya, dan umpan balik menjadi lambat. Secara tepat, umpan balik cepat adalah manfaat dari pengujian unit.
Prinsip Agile & Scrum
- Manifesto Agile dan Dua Belas Prinsip
- 10 Aturan Dasar yang Paling Sering Disebutkan dalam Scrum
- Bagaimana Tim Scrum Bekerja? — Panduan Singkat
Scrum Skala Besar
This post is also available in Deutsch, English, Español, فارسی, Français, 日本語, Polski, Portuguese, Ру́сский, Việt Nam, 简体中文 and 繁體中文.