TDD atau Test Driven Development adalah suatu pendekatan dalam разработка программного обеспечения,di mana sebelum mulai mengimplementasikan fitur/fungsionalitas pada sebuah программное обеспечение, программистmembuat тестян акан memvalidasi апа ян акан dilakukan оле кодян акан dibuat. Тестовые примерыuntuk setiap fungsionalitas dibuat terlebih dahulu dan dijalankan. Jika suatu testgagal, maka programmer menuliskan codeagar testtersebut lewat.

Пермасалахан пада Традиционное тестирование

Традиционное тестированиеян сая максуд кали ини адалах пембуатан тестsetelah suatu fitur diimplementasikan. Pendekatan ini memunculkan suatu permasalahan, yaitu разработчикdituntut untuk membuat testagar seluruh codeuntuk fitur yang dia buat ter-test секара кеселурухан.

Hal ini akan menjadi semakin parah apabila разработчикtersebut ternyata over engineeringketika mengerjakan fiturnya. Over engineeringadalah istilah untuk pengimplementasian codeyang terlalu berlebihan dibanding spesifikasi awalnya. Alhasil test yang perlu dibuat каламбур semakin banyak dan komplex.

Permasalahan ини seharusnya dapat dihindari apabila TDD diterapkan. Testyang dibuat disesuaikan dengan spesifikasi program, kemudian tugas разработчикadalah menuliskan cukup codehanya untuk melewati test немногословно. Dengan demikian, codeyang ditulis hanyalah codeyang diperlukan, tanpa keluar dari область тестирования.

TDD против традиционного тестирования

Selain mengatasi permasalahan pada традиционное тестированиеyang sudah dibahas sebelumnya, TDD juga memiliki beberapa keunggulan dibanding традиционное тестирование:

  • Dengan традиционное тестирование, jika sebuah test sukses, belum tentu codeyang sudah ditulis bebas dari defect atau ошибкаkarena bisa jadi ada baris codeyang belum dites. Pada TDD, jika suatu testgagal, artinya kita membuat progress dan perlu membuat внедрят агаровый testtersebut berhasil.
  • TDD dapat memastikan codeyang ditulis sesuai dengan requirement yang ada. Hal ini dikarenakan тестpada TDD didasarkan pada требование.
  • Пада TDD, фокус utamanya adalah bagaimana membuat производственный кодyang dapat memverifikasi testyang dibuat. Sebaliknya, pada традиционное тестирование fokusnya menjadi bagaimana mendesain test yang baik dan dapat meng-cover seluruh codeyang sudah dibuat .
  • Jika TDD dilakukan dengan benar, maka akan selalu didapatkan 100% покрытие тестами. Hal ini mungkin karena codeyang ditulis hanya untuk membuat suatu test berhasil.

Bagaimana прозы дари TDD?

TDD merupakan sebuah siklus yang terdiri dari 3 tahap, yaitu:

  1. Пембуатан тест
  2. кодовыйагаровый тест Penulisan berhasil
  3. Рефакторинг

Tiga tahapan tersebut juga sering dikenal sebagai КРАСНЫЙ, ЗЕЛЕНЫЙ, РЕФАКТОР. Mari bahas lebih lanjut masing-masing tahapannya.

КРАСНЫЙ

Ketika spesifikasi untuk suatu fitur sudah didapatkan, hal pertama kali yang perlu dilakukan adalah membuat sebuah модульный тестян merepresentasikan fungsionalitas dari sebagian fitur tersebut. Contohnya, terdapat fitur untuk membuat sebuah navbar. Testpertama yang bisa dibuat adalah mengecek apakah menu-menu pada navbarsudah tampil. Ketika test tersebut dijalankan, dapat dipastikan testtersebut akan не пройден.

ЗЕЛЕНЫЙ

Setelah dibuat test yang sudah disebutkan pada tahap RED, maka tahap selanjutnya adalah membuatреаласи codeyang dapat membuat testtersebut lolos. Артинья, разработчикperlu membuat komponen navbaryang berisi menu-menu pada test. Apabila testdijalankan kembali, seharusnya test tersebut berhasil.

РЕФАКТОР

Pada tahap рефакторинг, кодyang sudah dibuat dapat diperbaiki/di-improve,tetapi tetap lolos testyang sudah dibuat. Pada kasus navbarmisalnya, proses refactordapat berupa perbaikan styling pada komponen. Tentunya mengubah warna tulisan pada navbartidak akan mengubah status testyang sudah ada.

Setelah satu siklus tersebut selesai, kita dapat lanjut ke siklus baru. Contohnya dalam kasus navbardi atas, kita dapat menambahkan test baru yang akan menguji fungsionalitas dari navbar(contoh: ketika suatu menu diklik maka url harus pindah ). Setelah test tersebut dibuat maka dapat dilanjutkan ke tahap GREEN dan REFACTOR. Siklus TDD краткий, акан terus diulang hingga keseluruhan fitur pada требованияdibuat.

Contoh пенерапан TDD

Пада contoh кали ини, фитур янь акан dibuat adalah кнопка навигации ян акан mengubah isi konten дари suatu halaman. Используйте краткий merupakan bagian dari sebuah proyek React Native. Протестируйтеdibuat menggunakan, нативную библиотеку тестирования реакции. Proyek ini disimpan dalam sebuah репозиторий gitlabdan terdapat CI/CDyang akan menjalankan testuntuk setiap commit.

*Tambahan mengenai commit,bianya nama commitdisertai dengan tahapan TDD-nya, misalnya [RED] Add test for navigation button

Тахап РЕД

Пада тахап ини, дибуат тестян акан менгечек дуа хал: халаман дапат ди-рендер дан томбол навигаси бекерджа сесуай фунгсинья (менгубах контен халаман).

Apabila test dijalankan seharusnya masih belum lolos.

Тахап ЗЕЛЕНЫЙ

Pada tahap ini, dibuat codeimplementasi yang membuat testsebelumnya lolos. Contoh codeimplementasinya adalah sebagai berikut:

*OnramperScreen,SendScreen,дан ReceiveScreenмерупакан компонен ян berisi konten halaman.

Apabila test dijalankan kembali, seharusnya sudah lolos.

Тахап РЕФАКТОР

Ди тахап ини, ян сая лакукан ханьяла менгуба стиль кодаатау гая пенулисан код, танпа менгуба функционитас дари кодян судах ада. Пада тахап ини, тест harus tetap lolos.

Бонус: Дженис-Дженис тестирует программное обеспечение для пенгембангана.

Dilihat dari skala dan alurnya, tes dapat disusun dengan urutan berikut модульное тестирование, интеграционное тестирование, функциональное тестирование, сквозное тестирование, приемочный тест, а также тест производительности.

Модульный тест

Tes ini bertujuan untuk menguji pada level method atau class yang dibuat dalam sebuah модуль/услуга. Модульный тест dapat dilakukan dengan sangat cepat dan tidak memerlukan banyak biaya.

Интеграционный тест

Pada sebuah aplikasi tidak jarang memiliki beberapa услуги/модули sekaligus. Tes ini bertujuan untuk memastikan antar services/modules dapat berjalan dan berintegrasi sesuai dengan tujuannya.

Функциональный тест

Jika kedua tes sebelumnya masih berfokus пада isi дари программа ITU sendiri, функциональный тест berfokus пада pengujian fungsionalitas дари suatu aplikasi dalam segi bisnis, contohnya menguji untuk mendaftarkan акун.

Сквозной тест

Сквозной тест menguji fungsionalitas дари aplikasi secara keseluruhan. Jenis тес ини berusaha untuk mereplika perilaku pengguna ди dunia nyata dalam menggunakan aplikasi.

Тест производительности

Jenis тес ини tidak berfokus пада fungsionalitas дари suatu aplikasi tetapi Performa Ян dihasilkannya. Sebagai contoh, bagaimana aplikasi tersebut menangani beban запрос ян tinggi.

Референси