Apakah masuk akal untuk berbicara tentang "pengembangan tangkas" atau mengklaim bahwa Anda menerapkan "metodologi tangkas" jika basis kode yang Anda kerjakan memiliki cakupan uji unit 0%? (Dan Anda, sebagai tim, tidak melakukan apa-apa tentang itu).
Untuk memperjelas: bagi saya, itu tidak masuk akal. Dalam pengalaman pribadi saya, saya menemukan bahwa tes unit adalah satu-satunya alat yang memungkinkan Anda untuk benar-benar "gesit" (yaitu menanggapi perubahan, meningkatkan desain Anda, berbagi pengetahuan, dll ...) dan TDD adalah satu-satunya latihan yang membawa Anda ke sana .
Mungkin ada beberapa cara lain, tetapi saya masih tidak bisa melihat bagaimana mereka bisa bekerja.
unit-testing
agile
tdd
Kodok Jahat
sumber
sumber
Jawaban:
Untuk menjadi bertele-tele, tidak ada dalam Agile Manifesto atau Panduan Scrum yang membuat referensi untuk praktik teknis, seperti pengujian unit atau TDD, sama sekali. Jadi, ya, secara teori Anda bisa memberikan awal dan sering dengan fokus pada kolaborasi dan nilai tanpa mereka dan menyebut diri Anda Agile, Anda bahkan mungkin sebenarnya memiliki kelincahan .
Namun dalam praktiknya, hampir tidak mungkin untuk secara konsisten memberikan nilai ( ke dalam produksi ) setiap beberapa minggu tanpa test suite yang baik. Ini termasuk tes integrasi serta tes unit. Tes unit hanya berjalan sejauh ini. Ada alasan mengapa itu piramida dan bukan persegi panjang.
Tanpa tes sebagai jaring pengaman, Anda akan memperkenalkan banyak bug regresi di setiap rilis, atau takut akan refactoring. Keduanya akan sangat memengaruhi kemampuan Anda untuk melanjutkan dengan kecepatan yang berkelanjutan . Jika Anda tidak dapat mempertahankan langkah Anda atau mengubah kursus (mendesain ulang) saat diperlukan, maka Anda tidak memiliki kelincahan. Bagaimanapun, kelincahan adalah tujuan yang kita perjuangkan.
sumber
Manifesto tangkas hanya menyatakan:
Individu dan interaksi atas proses dan alat
Bekerja perangkat lunak melalui dokumentasi komprehensif
Kolaborasi pelanggan atas negosiasi kontrak
Menanggapi perubahan setelah mengikuti rencana
Tidak disebutkan unit test di sana. Bahkan 12 prinsip tidak menyebutkan pengujian.
Jadi, secara teknis, mungkin untuk menjadi tim yang gesit tanpa menulis unit test. Namun dalam praktiknya, sangat sulit untuk melihat bagaimana sebuah tim dapat mempertahankan perangkat lunak yang berfungsi di lingkungan yang gesit tanpa tes untuk membantu mereka dalam membuat perubahan konstan.
sumber
Meskipun tidak ada kata langsung yang menyatakan tentang pengujian unit atau TDD atau jenis tes apa pun dalam manifesto tangkas seperti yang dijawab orang lain di sini, saya percaya bahwa Scrum Master atau Pengembang yang baik akan dapat melihat salah satu pernyataan dalam manifesto.
Bekerja dengan perangkat lunak melalui dokumentasi yang komprehensif.
Bagaimana orang tahu jika perangkat lunak ini berfungsi? Manifes tidak perlu secara eksplisit menyatakan istilah pengujian. Ini singkat.
Pengujian unit (dalam konteks topik) akan membuat fase pengkodean Anda lambat pada tahap sebelumnya tetapi akan sia-sia saat Anda maju, membuat pengembangan menjadi jauh lebih cepat dan maju. Ini memberi Anda kontrol butiran halus pada pengujian level kode serta membuat skalabilitas desain Anda, memberi Anda kepercayaan diri bahwa perangkat lunak Anda berfungsi dan dapat dengan mudah menangani regresi; yang akan membuat pengembangan Anda gesit.
sumber
Ini sangat masuk akal. Agile bukan tentang pengujian, seperti yang telah disebutkan orang lain, tetapi untuk secara khusus menjawab pertanyaan Anda:
Tidak, Anda tidak perlu pengujian unit sama sekali.
Anda dapat menjalankan proses yang gesit dengan pengujian integrasi saja. Anda dapat menjalankan tes integrasi otomatis setiap malam misalnya dan memperbaiki bug yang ditemukan pada hari berikutnya. Anda bisa meminta tester manual yang menjalankan tes integrasi secara terus menerus jika Anda mau. Terlepas dari sistem, pengujian unit sepenuhnya opsional.
Anda mungkin menemukan pengujian unit membantu Anda berkembang, dan cukup adil untuk itu, tetapi ada banyak hal yang dapat membantu pengembangan yang mungkin tidak Anda miliki.
Anda memang membutuhkan beberapa bentuk pengujian, bahkan jika itu adalah 'penguji beta pelanggan' yang lama. Jika pelanggan Anda sangat terlibat dalam proses dan tidak keberatan menemukan bug, maka ini bisa berhasil - karena mereka cenderung menemukan bug yang bahkan orang lain pun tidak menganggapnya bug!
sumber
Itu tidak wajib. Pengujian sangat bagus ketika Anda memiliki orang yang benar-benar tahu cara menggunakannya. Ketika Anda tidak, tidak hanya itu tidak perlu, itu menjadi kewajiban. Saya akan mengatakan ada banyak programmer yang tidak terlalu ahli dalam hal itu.
Saya senang Anda mengakui dalam pertanyaan Anda bahwa menjadi gesit adalah tentang bagaimana Anda benar-benar merilis perangkat lunak alih-alih mengikuti beberapa metodologi. Agile Manifesto adalah referensi yang bagus, tapi itu bukan panduan yang pasti. Tangkas ada sebelum itu. Ada beberapa cara untuk mengembangkan perangkat lunak agar "lebih gesit" tetapi kombinasi yang berbeda dapat digunakan pada berbagai proyek.
Jika Anda merilis perangkat lunak baru dengan kecepatan yang dapat diterima oleh klien, Anda mungkin gesit. Saya juga akan memasukkan tidak memiliki terlalu banyak push-back dan mengeluh tentang perubahan fitur oleh pengembang. Memperbaiki satu hal hanya untuk merusak yang lain juga tidak ideal. Ketika Anda pengguna adalah beberapa versi di belakang dalam peningkatan, Anda mungkin tidak sangat gesit apakah Anda menguji atau tidak.
sumber
Saya ingin membantah argumen (jawaban lain) bahwa manifesto Agile jelas menyatakan sesuatu tentang ini, yaitu:
Saya sangat suka definisi LeSS tentang keunggulan teknis dan itu termasuk pengujian unit dan TDD. Sekarang Anda dapat berdebat bahwa Anda mungkin tidak memerlukan unit-tes dan atau TDD untuk mencapai ini, tetapi ini adalah cara yang paling umum dan mungkin disarankan.
Jika Anda dapat mencegah produk Anda dari menolak perubahan dengan cara lain Anda mungkin berada di jalur yang benar, tetapi:
Scrum tidak memiliki praktik teknis, tetapi Jeff mengatakan yang berikut tentang hal itu:
Saya berharap tim Scrum tanpa praktik teknis pada akhirnya dengan menggunakan retrospektif datang dengan praktik serupa. Anda ingin menjadi terlalu produktif, bukan?
Model Agile fluence , menyebutkannya di tingkat dua bintang:
Jika Anda hanya menargetkan tingkat kefasihan Agile pertama Anda dapat melewati praktik tersebut, tetapi produk yang lebih besar dan lebih lama berjalan setidaknya harus mencoba mencapai level dua bintang.
Jadi konsensus umum adalah ya tanpa pengujian unit yang baik, kode bersih dan praktik refactor, saat ini tidak mungkin untuk benar-benar Agile. Ini mungkin berubah di masa mendatang saat praktik teknis baru muncul.
Menurut Anda apa jawabannya jika kita bertanya kepada beberapa orang yang menandatangani manifesto seperti Robert C. Martin, Martin Fowler atau Kent Beck? Mungkin mereka akan mengatakan itu tergantung, tetapi umumnya itu adalah sesuatu yang harus Anda lakukan.
sumber