Package testing
selain berisikan tools untuk testing juga berisikan tools untuk benchmarking. Cara pembuatan benchmark sendiri cukup mudah yaitu dengan membuat fungsi yang namanya diawali dengan Benchmark
dan parameternya bertipe *testing.B
.
Membuat program pada file main.go
Buat program seperti dibawah ini, yang mana pada program ini terdapat Struct Tabung yang nantinya terdiri dari beberapa method, diantaranya sebagai berikut.
Pertama siapkan terlebih dahulu sebuah struct Tabung
. Variabel object hasil struct ini nantinya kita gunakan sebagai bahan testing.
package main
import "math"
type Tabung struct {
Jarijari, Tinggi float64
}
func (t Tabung) Volume() float64 {
return math.Phi * math.Pow(t.Jarijari, 2) * t.Tinggi
}
func (t Tabung) Luas() float64 {
return 2 * math.Phi * t.Jarijari * (t.Jarijari + t.Tinggi)
}
func (t Tabung) KelilingAlas() float64 {
return 2 * math.Phi * t.Jarijari
}
Lalu, kita akan mengetes performa perhitungan luas tabung. Siapkan fungsi dengan nama BenchmarkHitungLuas()
dengan isi adalah kode berikut.
func BenchmarkHitungLuas(b *testing.B) {
tabung := Tabung{Jarijari: 7, Tinggi: 10}
for i := 0; i < b.N; i++ {
tabung.Luas()
}
}
Jalankan test menggunakan argument -bench=.
, argumen ini digunakan untuk menandai bahwa selain testing
terdapat juga benchmark
yang perlu diuji.
➜ tabung git:(main) ✗ go test -v -bench=.
=== RUN TestTabung_Volume
=== RUN TestTabung_Volume/testing_hitung_volume
--- PASS: TestTabung_Volume (0.00s)
--- PASS: TestTabung_Volume/testing_hitung_volume (0.00s)
=== RUN TestTabung_Luas
=== RUN TestTabung_Luas/testing_hitung_luas_permukaan
--- PASS: TestTabung_Luas (0.00s)
--- PASS: TestTabung_Luas/testing_hitung_luas_permukaan (0.00s)
=== RUN TestTabung_KelilingAlas
=== RUN TestTabung_KelilingAlas/testing_hitung_keliling_alas
--- PASS: TestTabung_KelilingAlas (0.00s)
--- PASS: TestTabung_KelilingAlas/testing_hitung_keliling_alas (0.00s)
goos: darwin
goarch: arm64
pkg: github.com/santekno/tabung
BenchmarkHitungLuas
BenchmarkHitungLuas-8 1000000000 0.3317 ns/op
PASS
ok github.com/santekno/tabung 2.557s
Cara membaca hasil Benchmark
Arti dari 1000000000 0.3317 ns/op adalah, fungsi di atas di-test sebanyak 1 miliar kali, hasilnya membutuhkan waktu rata-rata 0.3317 nano detik untuk run satu fungsi.
Cara Membuat Unit Test Pada Golang
Artikel Terhangat![Gambar Tutorial Microservices dengan Golang Gambar Tutorial Microservices dengan Golang](https://www.santekno.com/images/person-golang-microservice.webp)
Tutorial Microservices dengan Golang
07 Jul 2024![Gambar Membangun Aplikasi Web dengan Golang dan Gin Gambar Membangun Aplikasi Web dengan Golang dan Gin](https://www.santekno.com/images/gin-golang.webp)
Membangun Aplikasi Web dengan Golang dan Gin
07 Jul 2024
![Gambar Tutorial Microservices dengan Golang Gambar Tutorial Microservices dengan Golang](https://www.santekno.com/images/person-golang-microservice.webp)
Tutorial Microservices dengan Golang
![Gambar Membangun Aplikasi Web dengan Golang dan Gin Gambar Membangun Aplikasi Web dengan Golang dan Gin](https://www.santekno.com/images/gin-golang.webp)