Testing? Apakah TDD tidak cukup?

Marco Kenata
Basic People
Published in
3 min readApr 18, 2019
Ga sampe segitunya kali

Pada postingan terdahulu, kita sudah mengenal TDD (bukan Ting Ding Dong, melainkan Test Driven Development). Tapi sebelum diberlakukannya TDD, kita harus melihat pentingnya Software Testing itu sendiri yang akan dibahas di postingan ini.

Sebelum kita mendiskusikan mengapa Software Testing itu penting, kita harus melihat apa itu software testing? Software Testing adalah proses eksekusi program yang bertujuan untuk mencari bug yang terdapat dalam suatu aplikasi. Software Testing juga merupakan proses yang mengvalidasi aplikasi atau produk.

Software Testing itu penting dalam pengembangan software masa kini karena hal-hal sebagai berikut :

  1. Merupakan hal yang penting karena memastikan ketahanan software tersebut di mata pengguna
  2. Merupakan QC dari software itu sendiri
  3. Merupakan tolak ukur kualitas, dan mengupayakan untuk memberikan software berkualitas tinggi.
  4. Merupakan tolak ukur efektifitas suatu software.
  5. Merupakan pencegahan untuk tidak mengulanginya di masa depan, karena bergantung dengan biaya.
  6. Penting untuk berada dalam kompetisi bisnis.

Mock & Stub
Setelah kita menyadari betapa pentingnya software testing, kita akan mempelajari bukan satu metode, tapi dua metodedalam software testing, yakni mock & stub.

Pertama-tama, kita akan melihat perbedaan-perbedaan antara kedua metode yang ada. yaitu:

  1. Stubs umumnya digunakan dalam state testing, atau melihat perubahan kondisi, dan mock umumnya digunakan untuk melihat apa yang akan dilakukan oleh software tersebut.
  2. Dalam pengerjaannya, dapat terdapat beberapa stubs tapi hanya terdapat 1 mock.

Kedua, kita harus melihat life cycle masing-masing testing yang cenderung berbeda, yakni:

Stub life cycle :

  1. Setup — pembuatan objek untuk tes
  2. Exercise — pengetesan fungsionalitas
  3. Verify State — pengecekan state dengan assertion
  4. Teardown — pembersihan resources

Mock life cycle :

  1. Setup — pembuatan objek untuk tes
  2. Setup Expectations — pembuatan ekspektasi mock yang digunakan dalam object
  3. Exercise — pengetesan fungsionalitas
  4. Verify Expectations — melihat apakah fungsi-fungsi tersebut dijalankan dengan benar
  5. Verify State — pengecekan state dengan assertion
  6. Teardown — pembersihan resources

Contoh-contoh yang ada di dalam kelompok saya, yakni :

Contoh kodingan yang dites

Kodingan tes yang saya lampirkan ini adalah pengeditan saya sendiri, sehingga saya tahu apa yang akan dites pada saat penggunaan test ini, Pemanfaatannya, yang pertama adalah apakah render berjalan dengan baik, kedua, apakah user sudah masuk ke dalam page, ketiga, apakah modal yang bersangkutan mengambil data demgan benar, dan keempat, apakah modal mengambil data dari tertunda.

Tes-tes yang kita jalankan ini kebanyakan pakai kepunyaan enzyme dan jest. Lalu enzyme sendiri merupakan prefrensi kami untuk melakukan mock. Enzyme sendiri dapat terbagi 2 yaitu, shallow dan juga mount, shallow digunakan mengetes suatu komponen sebagai satu unit dan memastikan bahwa test yang dibuat tidak assert ke behaviour child componentsnya. Sedangkan mount dapat berhubungan antar satu sama lainnya. Kita juga menggunakan snapshot untuk mencegah perubahan yang berlebihan.

Lantas,Apa Keunggulan menggunakan Shallow daripada Mount?

  • Mount lebih lambat
  • Mount tidak fleksibel terhadap perubahan komponen
  • Shallow sifatnya lebih soliter antara satu fungsi dengan lainnya.

Demikian postingan saya,have a nice day!

--

--