Pengujian perangkat lunak adalah proses yang mengevaluasi metrik program menggunakan alat, skrip, atau secara manual.
Pengujian merupakan bagian integral dari siklus pengembangan perangkat lunak. Pengujian komprehensif memberikan informasi mendalam tentang integritas aplikasi Anda.
Anda dapat mencegah dan memperbaiki bug dengan menulis tes, mengevaluasi kinerja program, dan mengotomatiskan alur kerja.
Memulai Pengujian di Go
Pustaka standar Go menyediakan pengujian kemasan. Itu pengujian paket memiliki benchmarking, fuzzing, skipping, sub-testing, sub-benchmarking, dan fungsi lainnya.
Pengujian dengan paket ini mudah. Berikut adalah struct pengujian sederhana yang akan berfungsi sebagai model untuk pengujian:
Tipe kasus struktur {
// output yang diharapkan dari tes
mengharapkan ke dalam// keluaran dari fungsi
sebenarnya ke dalam
// nilai yang Anda berikan ke fungsi
argumen rangkaian
}
Berikut adalah fungsi sederhana yang mengubah string menjadi bilangan bulat. Pengujian Anda akan menguji fungsi ini.
impor (
"strkonv"
)fungsiStringToInteger(str rangkaian)ke dalam {
bilangan bulat, err := strconv. Atoi (str)jika salah != nol {
kembali0
}
kembali bilangan bulat
}
Itu StringToInteger fungsi kembali 0 jika ada kesalahan pada konversi dan bilangan bulat jika tidak ada kesalahan.
Berikut adalah fungsi pengujian untuk StringToInteger:
fungsiTestStringToInteger(pengujian * pengujian. T) {
diharapkanInt := StringToInteger("3")caseInstance := Kasus {
diharapkan: diharapkanInt,
sebenarnya: 3,
}
jika caseInstance.expected == caseInstance.actual {
// beberapa kode di sini
} kalau tidak {
uji. Gagal()
}
}
Itu TestStringToInteger fungsi tes menerima a pengujian. T objek sebagai argumennya. Itu diharapkanInt variabel menyimpan hasil konversi string. Itu contoh kasus variabel adalah struct Kasus yang dipakai untuk pengujian. Itu jika pernyataan membandingkan nilai yang diharapkan dan nilai aktual.
Itu Gagal metode mengembalikan tes yang gagal dalam pernyataan else jika nilainya tidak sama.
Go menyediakan uji perintah untuk mengotomatisasi dan mengambil wawasan tentang pengujian dan program Anda.
Pergilah uji
Pergilah tes bantuan
Halaman bantuan memberikan informasi rinci tentang bagaimana pergi tes bekerja:
Ekosistem Go adalah rumah bagi banyak perpustakaan yang membuat pengujian lebih mudah diakses dan fleksibel. Ada banyak fungsi di luar pengujian paket, termasuk regresi dan pengujian unit.
Paket Bersaksi
Paket Bersaksi adalah salah satu kerangka kerja Go paling populer untuk menguji paket. Ini menyediakan alat yang Anda perlukan untuk menulis pengujian yang efisien, dengan pernyataan yang mudah, ejekan, dan fungsi rangkaian pengujian.
Testify cocok untuk pengembangan yang didorong oleh pengujian karena paket ini menyediakan mengejek kemasan. Ini menyediakan mekanisme untuk menulis objek tiruan yang dapat Anda gunakan sebagai pengganti objek nyata dalam pengujian.
Paket ini juga menyediakan:
- Sebuah menegaskan paket yang menyediakan metode bermanfaat untuk menulis tes yang ramah dan mudah dibaca.
- SEBUAH memerlukan paket mirip dengan menegaskan paket untuk mengembalikan hasil boolean.
- SEBUAH rangkaian paket untuk suite uji dengan struct.
Bersaksi meluas di pengujian paket, dan Anda dapat menggunakan pergi tes perintah untuk menjalankan tes yang ditulis dengan paket Testify.
Testify mendukung versi Go dari 1.13. Anda dapat menambahkan paket sebagai ketergantungan proyek dengan perintah ini:
Pergilah dapatkan github.com/stretchr/testify
Berikut adalah tes pernyataan sederhana dengan paket Testify menegaskan kemasan:
kemasan utama
impor (
"pengujian"
"github.com/stretchr/testify/assert" // hanya menegaskan paket
)// nama fungsi harus "Sesuatu" dengan konvensi
fungsiUji Sesuatu(t *pengujian. T) {
// menegaskan kesetaraan
menegaskan. sama (t, 123, 123, "mereka harus sama")
// menyatakan ketidaksetaraan
menegaskan. Tidak Sama (t, 123, 456, "mereka tidak boleh sama")
}
Itu Uji Sesuatu fungsi tes mengambil struct tipe pengujian dari pengujian paket sebagai argumen. Itu Setara dan Tidak sama metode adalah untuk pernyataan berbasis kesetaraan dan ketidaksetaraan dari Testify's menegaskan kemasan.
Paket GoConvey
Sampaikan adalah alat pengujian Go yang diprioritaskan untuk ekspresivitas di atas pengujian kemasan. Itu termasuk terminal (CLI) dan browser (GUI) fungsionalitas pengujian.
Paket GoConvey terintegrasi dengan pengujian paket, menyediakan antarmuka pengguna web untuk bekerja dengan pengujian Go asli. Ini juga mencakup fungsionalitas untuk uji regresi, keluaran yang dapat disesuaikan, dan pembuatan kode uji. Anda dapat menjalankan tes secara otomatis, mengakses format cakupan dalam HTML, dan menyesuaikan GUI.
Jalankan perintah ini di terminal ruang kerja Go Anda untuk menginstal paket Go Convey.
Pergilah dapatkan github.com/smartystreets/goconvey
Berikut adalah contoh sederhana tes menulis dengan paket GoConvey.
kemasan utama
impor (
. "github.com/smartystreets/goconvey/convey"
"pengujian"
)fungsiUji Sesuatu(t *pengujian. T) {
// Hanya berikan t ke panggilan Sampaikan tingkat atas
Sampaikan("Deklarasikan variabel", t, fungsi() {
x := 1Sampaikan("variabel kenaikan", fungsi() {
x++
Sampaikan("tegaskan persamaan", fungsi() {
Jadi (x, ShouldEqual, 2)
})
})
})
}
Anda harus mengimpor mengangkut paket menggunakan notasi titik untuk pengujian.
Fungsi Sampaikan dari Mengangkut paket membantu dengan pelingkupan tes. Yang terakhir Mengangkut panggilan fungsi dalam contoh kode menegaskan kesetaraan antara x variabel dan 2, menggunakan Harus Sama fungsi.
Paket Harapan HTTP
Itu HTTP Harapkan package adalah paket deklaratif yang mudah digunakan, ringkas, untuk pengujian HTTP dan REST API end-to-end Go. Anda dapat menggunakannya untuk membuat permintaan HTTP secara bertahap dan memeriksa respons dan muatannya secara rekursif.
Itu httpmengharapkan package adalah sekumpulan builder yang dapat dirantai untuk permintaan HTTP dan pernyataan tentang respons dan muatan HTTP. Itu dibangun di atas http, pengujian, dan paket lainnya. Paket ini juga bekerja dengan baik dengan built-in httptest kemasan.
httpmengharapkan menyediakan fungsionalitas untuk pembuatan permintaan dengan konstruksi URL, header, cookie, dan muatan. Ini menangani pernyataan respons, pernyataan muatan, pencetakan cantik, dan WebSockets.
Jalankan perintah ini di terminal direktori kerja Anda untuk menginstal httpmengharapkan kemasan.
Pergilah dapatkan github.com/gavv/httpexpect
Berikut adalah contoh sederhana pengujian fungsi handler dengan httpmengharapkan kemasan.
kemasan utama
impor (
"fmt"
"github.com/gavv/httpexpect/v2"
"bersih/http"
"net/http/httptest"
"pengujian"
)fungsicontohHandler()http.Pawang {
kembali http. HandlerFungsi (fungsi(penulis http. ResponseWriter, minta *http. Meminta) {
fmt. Fprintln (penulis, "Halo Dunia")
})
}fungsiTestexampleHandler(t *pengujian. T) {
// buat http. Pawang
penangan := contohHandler()// jalankan server menggunakan httptest
server := httptest. Server Baru (penangan)
menunda server. Menutup()// buat http harapkan contoh
mengharapkan := httpmengharapkan. Baru (t, server. URL)
// apakah itu bekerja?
mengharapkan. DAPATKAN("/").
Mengharapkan().
Statusnya (http. StatusOK).JSON().Array().Empty()
}
Itu contohHandler fungsi handler mengembalikan handler HTTP untuk httpmengharapkan kemasan. Itu TestexampleHandler function mendeklarasikan turunan dari fungsi handler. Itu kemudian membuat server baru untuk menguji titik akhir dengan httptest kemasan.
Itu mengharapkan variabel adalah milikmu httpmengharapkan contoh yang menimpa DAPATKAN meminta jalur root titik akhir di server. Itu Status fungsi kembali kode status (pada kasus ini, 200) jika tes berhasil.
Tulis Tes Komprehensif dan Intuitif
Pengujian sangat membantu dalam mengevaluasi integritas aplikasi Anda, dan ada banyak pola dan metode pengujian yang dapat Anda gunakan untuk program Anda. Inti dari alur kerja pengujian Anda, Anda harus menulis pengujian intuitif yang dapat Anda tingkatkan saat program Anda berubah seiring waktu.