Pengembangan berbasis pengujian (test-driven development, TDD) adalah pendekatan pengembangan perangkat lunak di mana pengujian perangkat lunak ditulis sebelum penulisan fungsi-fungsinya yang relevan.
Pengembang menulis kode yang cukup untuk melewati setiap pengujian, kemudian pengujian dan kode tersebut disempurnakan sebelum beralih ke pengujian baru dan kemudian fitur baru.
Pengembangan berbasis pengujian pada dasarnya memaksa pengembang untuk memperlambat, memvalidasi, dan menyempurnakan kode mereka dalam siklus evaluasi yang lebih pendek. Meskipun tidak diperlukan, tim DevOps mendorong pembuat kode, dari pemula hingga profesional berpengalaman, untuk menggunakan TDD di berbagai bahasa pemrograman. Misalnya, Java, Python, dan sebagainya, antarmuka pemrograman aplikasi (application programming interface, API) dan aplikasi program.
Pemrograman dengan metode ini memperkuat hubungan antara pengodean, pengujian (dalam bentuk pengujian tingkat unit otomatis), dan desain kode. Meskipun pengembangan berbasis pengujian dapat meningkatkan waktu pengembangan awal, metode ini telah terbukti dapat meningkatkan fungsionalitas kode dan ketangkasan, serta menghemat waktu secara keseluruhan.
Dengan segera mengidentifikasi dan mengatasi kesalahan apa pun, pengembang yang menggunakan TDD dapat mencegah masalah kecil berkembang menjadi masalah yang lebih besar. Pengembangan berbasis pengujian memaksa pengembang untuk memvalidasi dan menyempurnakan kode selama proses pengembangan, sehingga menyederhanakan pemeriksaan kualitas akhir dan perbaikan.
Kerangka kerja pengujian alternatif mencakup penulisan kode produksi sebelum semua pengujian otomatis ditulis, atau penulisan seluruh rangkaian pengujian sebelum kode produksi ditulis. Metode ini, meskipun belum tentu tidak efektif, telah terbukti meningkatkan waktu debugging yang diperlukan, terutama pada proyek yang lebih besar dan lebih kompleks.
Meskipun pengembangan berbasis pengujian umumnya digunakan untuk pembuatan kode produksi baru, metode ini juga sering digunakan untuk meningkatkan debugging kode lama yang dikembangkan dengan teknik yang lebih lama atau teknik lainnya.
Pengembangan berbasis pengujian memutarbalikkan proses pengembangan tradisional dengan menempatkan pengujian sebelum pengembangan. Sebagai pendekatan berulang, pengembangan berbasis pengujian meningkatkan kualitas dan keterbacaan kode dengan mendorong alur kerja yang dapat diuji dan menghasilkan kode berkualitas tinggi di tingkat unit. Ketika menerapkan pengujian unit, pengembang berfokus pada sebagian kecil logika, misalnya sebuah algoritma. Menulis kode secara khusus agar lulus pengujian tidak hanya menghasilkan kode yang lebih bersih dan lebih andal, tetapi juga membantu meningkatkan dokumentasi.
Buletin industri
Ikuti perkembangan tren industri yang paling penting—dan menarik—di bidang AI, otomatisasi, data, dan lainnya dengan buletin Think. Lihat Pernyataan Privasi IBM.
Langganan Anda akan disediakan dalam bahasa Inggris. Anda akan menemukan tautan berhenti berlangganan di setiap buletin. Anda dapat mengelola langganan atau berhenti berlangganan di sini. Lihat Pernyataan Privasi IBM kami untuk informasi lebih lanjut.
Ada dua tingkat utama pada pengembangan berbasis pengujian.
Pada TDD Penerimaan (acceptance test-driven development, ATDD), yang terkadang disebut sebagai Pengembangan Berbasis Perilaku (Behavior-Driven Development, BDD), pemrogram menulis satu pengujian penerimaan dan kemudian kode baru yang cukup untuk lulus pengujian. Pengujian penerimaan terkadang disebut sebagai pengujian pelanggan atau pengujian penerimaan pelanggan.
Secara umum, ini dapat dipahami sebagai contoh pengujian yang diperlukan untuk fungsionalitas minimum sebagaimana diuraikan oleh pemangku kepentingan produk. ATDD berupaya mengidentifikasi persyaratan yang terperinci dan dapat dieksekusi. Pengujian penerimaan dapat dilakukan dengan menggunakan berbagai alat pengujian, seperti Fitnesse atau RSpec.
Terkadang cukup disebut sebagai TDD, TDD pengembang mengharuskan pembuat kode untuk menulis satu pengujian guna mengevaluasi solusinya sendiri untuk pengujian ATDD. TDD pengembang menggunakan alat otomatisasi pengujian, seperti JUnit atau VBUNit.
Ketika menggunakan strategi pengembangan berbasis pengujian, pembuat kode pertama-tama menulis pengujian untuk memeriksa setiap elemen atau fungsi bagian perangkat lunak sebelum menulis kode yang cukup untuk lulus pengujian tersebut. Setelah selesai, perangkat lunak diuji kembali. Jika lulus, kode akan disempurnakan (dalam proses yang dikenal sebagai pemfaktoran ulang atau refactoring) agar hanya menyertakan elemen-elemen yang penting. Pengembang kemudian mengulangi proses ini untuk setiap fungsi perangkat lunak berikutnya.
Proses pengembangan berbasis pengujian dibagi menjadi lima langkah terpisah:
Sederhananya, proses pengembangan berbasis pengujian mengikuti siklus yang berulang, yang disebut sebagai siklus merah-hijau-faktor ulang (red-green-refactor). Tahapan siklusnya adalah:
Meskipun asal-usul spesifik pengembangan berbasis pengujian tidak diketahui, konsep menulis pengujian terlebih dahulu, lalu dilanjutkan dengan kode produksi, bukanlah praktik yang umum hingga pertengahan tahun 1990-an. Sebelum itu, kerangka kerja pengujian memisahkan pengembang dari pengujian basis kode mereka sendiri. Namun, seiring dengan perkembangan rekayasa perangkat lunak, tim DevOps membutuhkan metodologi yang lebih cepat dan lebih fleksibel untuk memenuhi permintaan pemangku kepentingan, terutama ketika berhadapan dengan kebutuhan pemangku kepentingan yang berubah dengan cepat.
Pengembangan berbasis pengujian dikembangkan dari dan bersama dengan berbagai kerangka kerja pengujian baru, serta telah diadopsi sebagai komponen modular dalam berbagai kerangka kerja lainnya. Yang paling menonjol, TDD disertakan dalam konsep Extreme Programming (XP), yakni kerangka kerja pengembangan perangkat lunak yang dikembangkan untuk meningkatkan kualitas perangkat lunak dan kualitas hidup pengembang.
Insinyur perangkat lunak Kent Beck, yang merupakan tokoh penting dalam komunitas Tangkas dan pencipta Extreme Programming, dikenal sebagai sosok yang “menemukan kembali” pengembangan berbasis pengujian. Menurut pernyataan Beck:
“Deskripsi awal TDD tertulis di sebuah buku lawas tentang pemrograman. Dikatakan bahwa kita perlu mengambil pita input, mengetikkan secara manual pita output yang kita harapkan, lalu memprogram hingga pita output sebenarnya itu sesuai dengan output yang diharapkan. Setelah menulis kerangka kerja xUnit pertama di Smalltalk, saya ingat pernah membaca hal ini dan mencobanya. Itulah asal mula TDD bagi saya. Ketika menjelaskan TDD kepada pemrogram yang lebih senior, saya sering mendengar komentar, " Tentu saja. Bagaimana lagi kita bisa memprogram?" Oleh karena itu, saya menyebut diri sebagai orang yang "menemukan kembali" TDD.”
Tanggal-tanggal penting dalam evolusi pengembangan berbasis pengujian meliputi:
Sebagai komponen dari Extreme Programming, pengembangan berbasis pengujian telah terbukti bermanfaat tidak hanya untuk membuat kode yang lebih baik, tetapi juga untuk meningkatkan kualitas pembuat kode. Dengan TDD, pembuat kode dapat memperoleh insight yang lebih baik tentang proyek mereka dan membantu mendorong desain program. Dengan memusatkan contoh pengujian sebelum setiap fitur diimplementasikan, pengembang harus memvisualisasikan bagaimana sebuah fungsi akan digunakan oleh klien atau pengguna. Pendekatan ini memosisikan antarmuka produk sebelum implementasi dan membantu pengembang membuat aplikasi yang lebih berfokus pada pengguna.
Beberapa manfaat lain dari pengembangan berbasis pengujian meliputi:
Meskipun pengembangan berbasis pengujian (TDD) memiliki banyak manfaat, bukan berarti tidak ada tantangan. Meskipun tingkat keparahan tantangan ini bergantung pada proyek atau dapat dimitigasi dengan berbagai teknik lain, beberapa kelemahan TDD meliputi:
Bangun bisnis yang lebih tangguh dengan didukung solusi AI untuk manajemen aset dan rantai pasokan yang cerdas.
Transformasikan operasi bisnis Anda dengan IBM menggunakan data yang lengkap dan teknologi AI yang tangguh untuk mengintegrasikan proses pengoptimalan.
IBM Cloud Pak for Business Automation adalah seperangkat modular komponen perangkat lunak terintegrasi untuk manajemen operasi dan otomatisasi.