Unit Testing
Pada Go kita dapat melakukan unit test menggunakan built-in package yang sudah disediakan Go yaitu testing
. Selain internal package, kita juga dapat menggunakan external package untuk proses unit testing pada Go. Salah satunya adalah testify.
Hello Testing
Kita akan mencoba membuat testing untuk mengecek apakah suatu fungsi mengembalikan sebuah string Hello, Go Testing
. Pada file main.go
kita akan membuat fungsi sayHello
untuk mengembalikan string Hello, Go Testing
dan memanggilnya pada fungsi main
.
Untuk melakukan testing, pada Go ada beberapa rules yang perlu kita perhatikan:
Kita harus membuat file baru dengan format nama file
xxxx_test.go
. Contohmain_test.go
Nama pada fungsi testing harus berawalan
Test
. ContohTestSayHello
.Parameter pada fungsi testing hanya memiliki 1 parameter yaitu
t *testing.T
Untuk menggunakan
*testing.T
kita perlu melakukan import packagetesting
Sekarang mari kita membuat file yang digunakan untuk melakukan testing. Kita akan membuat file bernama main_test.go
. Kita masih membuat dalam package yang sama yaitu pada package main
. Lalu kita melakukan import package testing
.
Nama fungsi untuk testing yang kita buat adalah TestSayHello
. Statement di dalam fungsi ini berisi beberapa hal. Kita membuat variabel baru got
yang berperan untuk menyimpan hasil dari fungsi yang ingin kita testing.
Lalu kita membuat 1 variabel baru want
yang berperan untuk menyimpan suatu kondisi testing yang diharapkan.
Jadi dari sini kita bisa melakukan sebuah kondisi menggunakan if
untuk mengecek apakah fungsu sayHello
yang telah kita buat sesuai ekpektasi hasilnya. Jika tidak maka akan menampilkan error.
Kode lengkapnya dapat kamu lihat di bawah ini:
Untuk menjalankan testing pada Go, kita menggunakan perintah berikut ini pada command line:
atau jika kita ingin menjalankan spesifik file tertentu dan ingin menampilkan output secara lengkap dapat menggunakan perintah berikut ini:
Argument -v
atau verbose digunakan menampilkan semua output log pada saat pengujian.
Jika kita jalankan program diatas maka hasilnya akan seperti berikut ini:
Status testing diatas adalah PASS
yang berarti lolos uji tes.
Kita akan membuat skenario jika hasil uji tes gagal yaitu dengan mengganti nilai dari variabel want
Jika testing dilakukan kembali, maka akan terlihat seperti berikut ini:
Maka hasilnya akan FAIL
karena hasil uji test gagal memenuhi kriteria.
Method Test
Kamu bisa melihat method lengkapnya yang dapat digunakan pada Go di tabel ini:
Method
Kegunaan
Log()
Menampilkan log
Logf()
Menampilkan log menggunakan format
Fail()
Menandakan terjadi Fail()
dan proses testing fungsi tetap diteruskan
FailNow()
Menandakan terjadi Fail()
dan proses testing fungsi dihentikan
Failed()
Menampilkan laporan fail
Error()
Log()
diikuti dengan Fail()
Errorf()
Logf()
diikuti dengan Fail()
Fatal()
Log()
diikuti dengan failNow()
Fatalf()
Logf()
diikuti dengan failNow()
Skip()
Log()
diikuti dengan SkipNow()
Skipf()
Logf()
diikuti dengan SkipNow()
SkipNow()
Menghentikan proses testing fungsi, dilanjutkan ke testing fungsi setelahnya
Skiped()
Menampilkan laporan skip
Parallel()
Menge-set bahwa eksekusi testing adalah parallel
Test Scenario
Kita akan membuat contoh lain dalam bentuk skenario. Anggaplah aplikasi Go kita ingin memiliki 2 fitur:
Aplikasi menampilkan teks
Hello, David
dimanaDavid
adalah nama dari seseorang yang akan kita kirim melalui argumen fungsi.Jika saat memanggil fungsi tidak terdapat argumen nama seseorang, maka program harus menggantinya dengan teks
friend
.
Dari fitur di atas maka kita dapat membuat test case untuk 2 skenario tersebut.
Pertama, kita akan membuat test case terlebih dahulu pada file main_test.go
:
Kita bisa lihat dari kode di atas untuk melakukan Subtest, dapat menggunakan method Run
.
Lalu kita akan coba membuat program berdasarkan skenario tes di atas. Kita akan membuat program utama pada file main.go
:
Jika kita jalankan testing pada kode di atas maka akan menampilkan hasil berikut ini:
Benchmark
Saat kita membuat program atau fungsi, tentunya kita ingin memastikan program yang kita buat sudah memiliki performa yang baik. Kita dapat melakukan testing performa fungsi pada program Go dengan cara benchmarking.
Untuk melakukan Benchmark, pada Go ada beberapa rules yang perlu yaitu nama pada fungsi benchmark testing harus berawalan Benchmark
. Contoh BenchmarkSayHello
.
Kita akan membuat fungsi sederhana pada file main.go
Kita akan mengecek performa fungsi Calculate
menggunakan benchmark testing. Selanjutnya kita akan membuat testing pada file main_test.go
Untuk menjalankan benchmark testing agak sedikit berbeda yaitu dengan menjalankan perintah berikut ini pada command line
Maka hasil yang kita dapatkan
Kita bisa melihat bahwa kita mengeksekusi fungsi Calculate
sebanyak 1000,000,000
kali , pada kecepatan 0.3069
per operation, dan untuk keseluruhan pada kecepatan 1.462
detik untuk menjalankan fungsi tersebut.
Tentu saja nantinya makin kompleks sebuah fungsi maka akan mengalami peningkatan dari segi waktu. Dengan kita melakukan benchmark testing ini, kita akan lebih mengetahui bagaimana performa dari fungsi yang kita buat dan dapat meningkatkannya kembali.
Last updated