Keuntungan lan Kekurangan Pangembangan Didhukung Tes

Apa pro lan kontra saka Test Driven Development (TDD)?

Test Driven Development minangka metodologi pangembangan perangkat lunak sing sampeyan tulis lan mlayu set tes sadurunge nulis kode.

Gagasanipun yaiku tes kasebut bakal gagal dhisik banjur sampeyan miwiti nulis kode sing cukup kanggo nyoba supaya kabeh tes bisa lulus. Yen wis lulus kabeh tes bisa uga ngukur kriteria sing wis rampung (dev-rampung) lan uga nambah kapercayan karo kualitas kode.


Mangkene, kaya metodologi pangembangan liyane, ana sawetara pro lan kontra sing ana gandhengane karo TDD. Ing kene, kita dhaptar sawetara, nanging sadurunge, luwih becik njlentrehake sawetara poin:

  • Nindakake tes unit ora ateges nindakake TDD. Sampeyan bisa nindakake sing pertama tanpa sing nomer loro. Nyatane, sampeyan bisa nindakake TDD tanpa tes unit (nanging umume wong), ing kasus iki, umume wong nglengkapi tes unit karo rasa tes liyane. Apa sing sampeyan butuhake yaiku tes otomatis, apa wae.
  • Sampeyan bisa nindakake TDD kanggo tes kothak putih, kanggo nyoba kode sampeyan. Nanging sampeyan uga bisa nindakake TDD kanggo nyoba kothak ireng, sing asring diarani Pangembangan Dipandu Prilaku.

Cara tradisional, proses kasebut kanggo kode akeh modul banjur nulis tes unit kanggo verifikasi kode kasebut. Iki minangka kode-pertama, coba metode mengko. Nanging yen sawise menehi kode ora ana wektu utawa sampeyan bakal diluncurake, mula kabeh tes unit bakal dilewati, utawa paling mengko ditindakake kanthi retrospektif.


Saiki, tekan pro lan kontra TDD:





Pro saka Pengembangan Didhukung Tes

  • Amarga sampeyan nulis tes cilik sekaligus, meksa kode sampeyan dadi luwih modular (yen ora angel dites). TDD mbantu sampeyan sinau, ngerti, lan internalisasi prinsip utama desain modular sing apik.
  • TDD uga meksa arsitektur sing apik. Supaya kode unit bisa dites, kode kudu diowahi kanthi bener. Nulis tes dhisik, macem-macem masalah arsitektur cenderung luwih cepet ditemokake.
  • Dokumen kode sampeyan luwih apik tinimbang dokumentasi (ora ketinggalan jaman amarga sampeyan lagi nindakake kabeh wektu).
  • Nggawe kode luwih gampang dijaga lan diresepake. TDD mbantu nyedhiyakake kejelasan sajrone proses implementasine lan nyedhiyakake jaringan keamanan nalika sampeyan pengin nggawe kode maneh sing wis ditulis.
  • Nggawe kolaborasi luwih gampang lan luwih efisien, anggota tim bisa nyunting kode liyane kanthi percaya diri amarga tes bakal menehi informasi yen ana pangowahan supaya kode kasebut tumindak ora kaduga.
  • Amarga TDD ateges meksa sampeyan nulis tes unit sadurunge nulis kode implementasine, refactoring kode dadi luwih gampang lan cepet. Kode refactoring sing ditulis rong taun kepungkur yaiku atos . Yen kode kasebut digawe serep karo tes unit sing apik, prosese bakal digawe luwih gampang.
  • Mbantu nyegah cacat - paling ora mbantu sampeyan nemokake masalah desain utawa syarat nalika wiwitan. TDD menehi peringatan dini kanggo ngrancang masalah (yen luwih gampang diatasi).
  • Mbantu programer ngerti kode tenan.
  • Nggawe suite tes regresi otomatis, pokoke gratis. yaiku sampeyan ora butuh wektu suwe sawise nulis tes unit kanggo nyoba kode implementasine.
  • Iki nyengkuyung langkah-langkah cilik lan ngapikake desain amarga sampeyan bisa ngatasi katergantungan sing ora perlu kanggo nggampangake persiyapan.
  • Sampeyan bisa njlentrehake syarat amarga sampeyan kudu ngerti apa masukan sing kudu sampeyan feed lan output sing dikarepake.
  • Tes unit penting banget minangka jaring pengaman nalika kode kasebut kudu diowahi kanggo nambah fitur anyar utawa ndandani bug sing ana. Amarga pangopènan kira-kira 60 lan 90% siklus urip piranti lunak, dadi angel banget kanggo mbedakake babagan wektu sing dibutuhake kanggo nggawe tes unit sing bisa dibayar kanthi bola-bali sajrone proyek kasebut.
  • Tes nalika nulis uga meksa sampeyan nyoba nggawe antarmuka supaya cukup resik kanggo dites. Kadhangkala angel kanggo ndeleng kaluwihan iki nganti sampeyan bisa nggunakake kode sing durung rampung, lan siji-sijine cara kanggo olahraga lan fokus ing bagean kode yaiku mbukak kabeh sistem lan nyetel titik putus .
  • Kesalahan 'Bodho' kejiret meh wae. Mbantu pangembang nemokake kesalahan sing bakal mbuang-mbuwang wektu kabeh wong yen ditemokake ing QA.


Cons pangembangan didhukung test

  • Suite tes kasebut kudu dikelola; tes bisa uga durung mesthi ditemtokake (yaiku gumantung karo katergantungan eksternal).
  • Tes kasebut bisa uga angel ditulis, kayata. ngluwihi level tes unit.
  • Wiwitane, nyuda pembangunan; kanggo lingkungan wiwitan sing cepet, kode implementasine bisa uga ora siyap sawetara wektu amarga tes nulis luwih dhisik. (Nanging ing jangka panjang, sejatine nyepetake pangembangan)
  • Kaya program apa wae, ana prabédan gedhe antara nindakake lan nindakake kanthi apik. Nulis tes unit sing apik minangka wujud seni. Aspek TDD iki asring ora dibahas, akeh manajer cenderung fokus karo metrik kaya jangkoan kode; metrik kasebut ora ngandhani babagan kualitas tes unit.
  • Tes unit yaiku kabeh sing kudu dituku tim.
  • Tantangan kanggo sinau. Sampeyan bisa medeni lan ora gampang sinau sapa wae dhisik, utamane nyoba sinau dhewe. Sampeyan butuh akeh pengabdian (disiplin, praktek, ketekunan) lan sampeyan kudu duwe target sing pengin terus dadi luwih apik.
  • Ora angel ditrapake kanggo kode warisan sing ana.
  • Ana salah paham sing nggawe programer ora sinau.
  • Ora angel miwiti kerja kanthi cara iki. Apamaneh yen sampeyan wis pirang-pirang taun kerja kanthi cara liya.
  • Sampeyan terkadhang kudu moyoki akeh perkara utawa perkara sing angel dipoyoki. Mupangate kanggo jangka panjang, nanging saiki nglarani.
  • Sampeyan kudu nindakake omah kanthi terus-terusan. Amarga pesenan tes sing saya akeh saya suwe saya suwe, luwih becik nyaring tes kasebut supaya bisa mlaku luwih cepet utawa mbusak tes keluwihane.
  • Kaya teknik sing apik, tes unit bisa ditindakake kanthi ekstrim. Keuntungan paling gedhe yaiku saka usaha moderat, kanthi tes mesthi nggunakake kode kanthi cara paling gampang. Yen sampeyan asring refactore tes, ana kemungkinan yen sampeyan nggunakake akeh wektu ing suite tes.
  • Sampeyan bisa gampang disambi dening 'fluff' utawa fitur mewah ing framework tes unit. Kita kudu eling yen tes sederhana paling cepet digawe lan paling gampang dikelola.
  • Sanajan pancen perlu, nggawe tes gagal bisa dadi angel, nanging mbesuk bakal menehi wektu gedhe.
  • Pemulihan tahap awal uga mbutuhake kelas tes refactore.
  • Kajaba kabeh wong ing tim sing njaga tes kanthi bener, kabeh sistem bisa mudhun kanthi cepet.