Menyiapkan Test pada CI/CD

Yudistira Hanifmuti
PPL Teman Bisnis
Published in
3 min readMar 19, 2019

Test ini, Test itu… Pokoknya harus ada test dulu

Sejak mata kuliah PPW (Web Design Development), kami selalu dituntut untuk menerapkan TDD. “TDD lagi, TDD lagi”. Sudah tidak kaget lagi kalau di PPL sekarang diangkat kembali tentang penerapan TDD. Salah satu tahapan untuk menerapkan TDD adalah menyiapkan environment untuk test.

Suasana ujian SBMPTN

Gitlab CI/CD

Kami menggunakan pipeline pada gitlab sehingga semua proses yang ingin dilakukan dapat dibuat otomatis, termasuk untuk test. Arsitektur dari aplikasi yang kami kerjakan terbagi menjadi tiga komponen yaitu, frontend, backend dan android. Kali ini saya ingin berbagi cerita bagaimana CI/CD kami diatur untuk backend yaitu untuk Unit test dan Style test.

Unit Test

Unit Test dijalankan untuk menguji komponen-komponen dari aplikasi sebagai suatu unit yang independen. Gambar di bawah ini adalah script untuk menjalankan unit test pada backend.

Sepotong stage pada .gitlab-ci.yml

Menyiapkan environment test

Aplikasi backend kami menggunakan python, yaitu Django REST. Untuk menjalankannya, aplikasi harus berjalan di atas suatu image yang memiliki python sehingga image yang kami gunakan adalah python:3.6 (untuk versi sesuai dengan kebutuhan).

Bagian dari script yang menjelaskan persiapan sebelum test ada pada bagian before_script. Hal-hal yang dilakukan pada script tersebut adalah:

  1. Pindah ke folder backend/
  2. Install requirement yang dibutuhkan
  3. Melakukan migrasi untuk database jika ada perubahan
  4. Melakukan collectstatic jika dibutuhkan
  5. Jalankan aplikasi dan server menyala

Proses Testing Berlangsung

Untuk menjalankan test pada aplikasi Django, cukup memanggil perintah manage.py test . Jika ada test yang gagal, hasil test akan ditunjukkan pada standard output dan pipeline akan berubah status menjadi failed.

Dari 3 tes berhasil semua :D

Perintah untuk test dibungkus dengan memanggil perintah coverage run . Dengan menjalankan coverage, kita bisa mendapatkan pula code coverage dari aplikasi yang dijalankan. Hasil coverage ini ditunjukkan dengan memanggil perintah coverage report -m .

Code coverage 100% !!

Unit Test yang berhasil dan Code Coverage 100% merupakan standar minimal yang harus dipenuhi dalam mengembangkan perangkat lunak. Nilai-nilai ini menunjukkan bahwa aplikasi yang Anda buat sudah layak untuk digunakan, walau pun belum bisa dipastikan terhindar dari bug.

Code Style Test

Style Code Test atau Linter Test merupakan test yang dijalankan untuk mengukur seberapa besar persentase kode yang ditulis sudah memenuhi kaidah penulisan kode tertentu.

Untuk persiapan test masih sama dengan unit test. Bagian yang berbeda adalah baris terbawah untuk menjalankan test. Perintah tersebut menjalankan script python yang isinya menjalankan linter namun dengan tambahan argumen — fail-under . Kami menggunakan pylint sebagai linter.

7.23/10 :(

Untuk code style, kami memasang batasan 7.0 berdasarkan persetujuan. Namun, sebaiknya batasan ini dipasang setinggi mungkin. Semakin tinggi batasannya maka dapat dikatakan semakin rapi kode yang Anda miliki.

Saya rasa tulisan ini sudah cukup. Sampai jumpa di tulisan saya yang berikutnya. Semoga bermanfaat. Terima kasih.

Bye

— Muhammad Yudistira Hanifmuti

--

--