[Week 7] Berjalan dengan Pelan (Tapi Pasti?)
Tidak terasa telah berlalu 2 minggu sejak terakhir saya menulis tentang progress saya pada Sprint 1 PPL. Selama itu pula, saya masih sering merasa kebingungan dengan berbagai elemen yang ada pada PPL ini. Tidak hanya proses belajar React-Native yang saya rasa cukup sulit, nyatanya penerapan Test-Driven Development (TDD) pada proses PPL ini membutuhkan waktu belajar yang lumayan lama (bagi saya).
Pengalaman pada mata kuliah Perancangan dan Pemrograman Web (PPW) nyatanya hanya sedikit memberikan bantuan dalam mempelajari React-Native. Paparan JavaScript yang hanya sedikit pada PPW dulu, ditambah kurangnya penerapan self-study oleh saya menghambat proses pembelajaran ini. Belajar sedikit demi sedikit dari bagian terkecil, seperti state dan props, saya merasa ada kemajuan (walaupun hanya sedikit). Namun saya yakin nantinya saya akan menguasai framework ini.
Berlanjut pada fitur selanjutnya, TDD. Harus saya akui, awalnya saya sangat tidak familiar dengan hal seperti ini. Namun berkat kemauan dan usaha saya, akhirnya saya menjadi sedikit familiar dengan TDD. Secara ringkas ada 2 tahap utama dalam TDD kali ini, yang pertama yaitu konfigurasi Continuous Integration (CI), dan yang kedua adalah yang berkaitan dengan testing (unit testing, functional testing, dll.). Tahap pertama dan juga yang menurut saya sangat penting, yaitu konfigurasi CI, sangat menyita waktu saya. Berperan lumayan banyak dalam mengatur konfigurasinya, akhirnya konfigurasi yang ada pun dapat memberikan hasil yang sesuai (success walaupun mungkin masih belum sempurna). 2 minggu yang lalu konfigurasi yang ada baru build dan test, dan itupun masih gagal dua-duanya. Namun akhirnya hari ini telah terselesaikan (lama sekali ya), build aplikasi, tes sesuai dengan unit tests yang ada, lint kode yang ada dengan menggunakan ESLint, serta laporan dari tes yang sudah dilakukan berupa hasil tes dan code coverage (dalam bentuk HTML). Semoga konfigurasi yang ada saat ini dapat membantu kelompok kami dalam membuat kode yang baik.
Tahap yang kedua yaitu testing. Hal yang satu ini saya akui cukup sulit dipelajari. Hal yang membuat bingung adalah karena saya tidak tahu apa yang harus saya tes, karena implementasinya saya belum ada? Walaupun begitu saya mencoba mengimplementasikan TDD ini, dengan cara membuat unit test terlebih dahulu sebelum membuat kodenya. Menggunakan fitur react-test-renderer, saya pun mencoba mengira-ngira komponen apa sajakah yang nantinya akan ada pada kode asli saya, lalu membuat unit testnya. Setelah selesai pun saya melakukan commit RED pada branch untuk user story saya, sebagai penanda bahwa tesnya memang dibuat untuk gagal. Hal yang tidak kalah membingungkan untuk saya yaitu adanya banyak teknologi yang berkaitan dengan testing ini, seperti Jest, enzymes, react-test, dll. Saya masih bingung yang satu punya fitur apa dan untuk apa, yang satu lagi juga. Intinya saya masih bingung menerapkan dan memilih apa yang harus saya gunakan untuk keperluan testing. Namun untuk enzymes sendiri, setelah saya lakukan proses pencarian ternyata baru bisa digunakan untuk React saja, karena memerlukan react-dom, yang mana hal tersebut tidak dimiliki oleh React Native. Oleh karena itu, saya cenderung menggunakan jest dan react-test saja.
Kira-kira seperti itulah progress dan pengalaman saya semenjak week 5 sampai dengan week 7 ini. Semoga saya dapat menjalani sisa Sprint 1 ini dengan baik. Sampai jumpa!
referensi:
- SCELE Fasilkom UI, Mata Kuliah Proyek Perangkat Lunak 2018
- https://www.tutorialspoint.com/react_native
- https://facebook.github.io/react-native/