Apa itu Pengembangan Berbasis Tes: Panduan Pemula

Diterbitkan: 2018-03-12

Pemrogram dan bug telah berjuang tanpa akhir untuk supremasi sejak waktu yang tidak diketahui. Ini tidak dapat dihindari – bahkan programmer terbaik pun menjadi mangsa bug. Tidak ada kode yang benar-benar aman dari bug, itulah sebabnya kami melakukan pengujian. Pemrogram, setidaknya yang waras, menguji kode mereka dengan menjalankannya di mesin pengembangan untuk memastikannya melakukan apa yang seharusnya dilakukan. Secara tradisional, test case ditulis setelah menulis kode, tetapi dalam Test-driven Development, test case otomatis ditulis sebelum menulis bagian kode apa pun sehingga eksekusi dan pengujian dapat diperiksa secara bersamaan.
Dalam artikel ini, kita akan berbicara tentang Pengembangan Berbasis Tes secara mendalam dan mengapa ini lebih baik daripada metode tradisional!

Daftar isi

Apa itu Pengembangan Berbasis Tes?

lingkaran kehidupan TDD
Test-Driven Development dibuat sebagai bagian dari metodologi Extreme Programming (XP) dan disebut sebagai konsep 'Test-First' . Pengembangan berbasis pengujian memungkinkan Anda menguji kode secara menyeluruh, dan juga memungkinkan Anda menguji ulang kode dengan cepat dan mudah karena kode tersebut otomatis. Intinya, sebelum menulis bagian kode apa pun, programmer terlebih dahulu membuat unit-test. Kemudian, programmer membuat kode yang cukup untuk memenuhi unit-test. Setelah tes lulus dan kode di-refactored, programmer dapat melanjutkan dengan membuat perbaikan lebih lanjut. Pengembangan yang didorong oleh pengujian memastikan bahwa kode diuji secara menyeluruh yang mengarah ke kode yang termodulasi, dapat diperluas, dan fleksibel.
Setiap kali fitur baru ditambahkan, fitur tersebut perlu menjalani apa yang disebut "siklus hidup" TDD. Mari kita bicara lebih banyak tentang siklus hidup ini.
Bagaimana Menjadi Pengembang Full Stack

Siklus Hidup Pengembangan Berbasis Tes

Siklus hidup pengembangan yang digerakkan oleh pengujian mencakup semuanya, mulai dari menulis pengujian unit awal hingga mengerjakan ulang kode.
Pengembangan Berbasis Uji

    • Tambahkan tes: Setiap fitur baru perlu menjalani tes sebelum diimplementasikan. Persyaratan penting untuk menulis tes adalah memiliki pemahaman yang jelas tentang semua persyaratan. Ini dicapai dengan menggunakan kasus penggunaan dan cerita pengguna.

    • Jalankan semua pengujian dan periksa pengujian bersih: Ini dilakukan untuk memastikan pengujian kami berfungsi dengan benar. Pada dasarnya, fase ini bertujuan untuk memeriksa apakah tes tidak dilewati oleh kode apa pun yang tidak memenuhi persyaratan. Dengan demikian, langkah ini menghilangkan kemungkinan pengujian yang salah.

    • Tulis kode: Sekarang setelah Anda memiliki tes, langkah nyata berikutnya adalah menulis kode yang menghapus tes. Kode ini tidak perlu sempurna dalam semua aspek, tetapi harus menyelesaikan pengujian. Setelah kami yakin kode ini menyelesaikan pengujian, kode ini dapat dimodifikasi sesuai persyaratan.

    • Jalankan tes: Setelah menulis kode, sekarang saatnya untuk melihat apakah kode tersebut lulus tes atau tidak. Jika kode Anda lulus tes, itu berarti kode Anda memenuhi persyaratan – sampai sekarang.

    • Refactor kode: Ini pada dasarnya dilakukan untuk membersihkan kode. Refactoring tidak menyebabkan kerusakan pada salah satu fungsi; itu hanya untuk membersihkan kode dengan menghapus duplikasi antara kode uji dan kode produksi.

  • Ulangi: Siklus ini sekarang diulang dengan tes baru untuk menambahkan lebih banyak fungsi. Setiap fungsi mengalami siklus yang sama. Pada dasarnya, ukuran langkah tidak boleh lebih dari 1-10 pengeditan di antara setiap uji coba. Jika kode tidak lulus tes dengan cepat, pengembang harus mengembalikan dan tidak melakukan debug secara berlebihan.
Mengapa Perusahaan Ingin Mempekerjakan Pengembang Full Stack

Pro dan Kontra Pengembangan Berbasis Tes

Pengembangan yang digerakkan oleh tes memiliki beberapa kelebihan yang pasti dibandingkan metode pengujian tradisional – yang sebagian besar manual. Namun, itu tidak sempurna. Sama seperti teknologi lainnya, pengembangan yang digerakkan oleh tes juga memiliki serangkaian kekurangan.

Mari kita lihat apa saja manfaat TDD secara detail:

    • Menulis tes kecil memastikan modularitas kode Anda. Berlatih TDD membantu Anda memahami prinsip-prinsip yang mendasari desain modular yang baik.

    • TDD memberikan kejelasan selama implementasi kode Anda yang memungkinkan jaring pengaman selama fase refactoring.

    • Dengan TDD, berkolaborasi menjadi jauh lebih mudah karena sekarang orang dapat mengedit kode dengan percaya diri karena tes akan memberi tahu mereka jika perubahan mereka tidak sesuai dengan tes.

    • Dasar dari TDD adalah unit-tests. Karena itu, refactoring jauh lebih mudah dan lebih cepat. Memfaktorkan ulang kode lama memang merepotkan, tetapi jika kode tersebut didukung oleh unit test, itu menjadi jauh lebih mudah.

    • Ini membantu dalam mengklarifikasi semua persyaratan sebelum Anda memulai bagian pengkodean. Dengan cara ini, banyak ambiguitas yang dapat muncul di kemudian hari dapat dihindari.

    • Pengembangan berbasis pengujian berfokus pada pengujian saat menulis. Ini memaksa programmer untuk membuat antarmuka mereka cukup bersih untuk lulus ujian. Sulit untuk memahami keuntungan ini sampai Anda mengerjakan sepotong kode yang belum mengalami TDD.

  • Kesalahan konyol segera ditangkap. Ini membantu dalam menghilangkan kesalahan-kesalahan yang akan membuang banyak waktu jika ditemukan di QA.

Sekarang, mari kita lihat apa saja batasan pengembangan yang digerakkan oleh pengujian:

    • Rangkaian pengujian yang digunakan untuk pengujian perlu dipertahankan jika tidak, pengujian mungkin tidak sepenuhnya deterministik.

    • Tesnya sulit untuk ditulis – terutama di luar fase pengujian unit.

    • TDD memang memperlambat laju pembangunan, setidaknya pada awalnya.

    • Seperti halnya segala bentuk pengembangan, ada perbedaan besar antara hanya melakukannya dan melakukannya dengan baik. Menulis tes unit yang baik membutuhkan tingkat keahlian khusus.

    • Sulit untuk menerapkan pendekatan ini ke kode lawas Anda (yang sudah ada).

    • TDD mengharuskan Anda untuk melakukan pembersihan rutin. Penting untuk menyempurnakan tes agar berjalan lebih cepat.

    • Sangat mudah untuk terganggu oleh fitur-fitur mewah dalam kerangka pengujian unit apa pun, tetapi harus diingat bahwa pengujian sederhana cenderung memberikan hasil terbaik.

  • Kecuali semua orang dalam tim mempertahankan pengujian mereka dengan benar, seluruh sistem dapat menurun dengan cepat.
Cara Sukses dalam Pekerjaan Pengembangan Perangkat Lunak Pertama Anda

Kesimpulannya…
Pengembangan berbasis pengujian adalah jalan ke depan sejauh masa depan pengembangan aplikasi berjalan. Ada sejumlah kerangka kerja pengujian otomatis seperti PHPUnit, Serenity, Robot, RedWoodHQ, dan banyak lagi. Pilih salah satu yang sesuai dengan kebutuhan Anda dan mulailah membangun aplikasi yang dapat dirawat dengan lebih baik dalam waktu singkat!

Mendaftar di Kursus Rekayasa Perangkat Lunak dari Universitas top dunia. Dapatkan Program PG Eksekutif, Program Sertifikat Tingkat Lanjut, atau Program Magister untuk mempercepat karier Anda.

Menjadi Pengembang Tumpukan Penuh

Diploma PG UpGrad dan IIIT-Bangalore dalam Pengembangan Perangkat Lunak
Program PG Eksekutif dalam Pengembangan Perangkat Lunak dari IITB