Özet - Test
- Go kursu
- Orta seviye
- Ders 46/80
- 4 dk
Tablo testi ve yardımcıları birleştirerek bir matematik testi yazarsın.
Test özeti
Go test araç kutusu: _test.go dosyaları, TestXxx(t *testing.T), t.Errorf/t.Fatalf, tablo testleri + t.Run, t.Helper/t.Cleanup/t.TempDir, ExampleXxx + // Output:. Komut satırında -run, -v, -race, -cover.
Bağımlılıkları arayüzle almak (ör. io.Writer, repository arayüzü) kodu sahte nesnelerle test etmeyi kolaylaştırır.
Fuzz test örneği
Fuzz testi, "her girdide doğru olması gereken" bir özelliği denetler:
func FuzzTersCevir(f *testing.F) {
f.Add("merhaba")
f.Fuzz(func(t *testing.T, s string) {
if Ters(Ters(s)) != s {
t.Errorf("çift ters %q != %q", Ters(Ters(s)), s)
}
})
}Bulunan başarısız girdiler testdata/fuzz/ altına kaydedilir ve sonraki normal testlerde de çalışır.
Uygulama Özellik testi
Ters(s string) string fonksiyonunu rune'larla yaz. "gopher", "çğü" ve "" girdileri için Ters(Ters(s)) == s özelliğinin hepsinde doğru olduğunu yazdır.
Başlangıç kodu
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
package main
import "fmt"
func Ters(s string) string {
r := []rune(s)
for i, j := 0, len(r)-1; i < j; i, j = i+1, j-1 {
r[i], r[j] = r[j], r[i]
}
return string(r)
}
func main() {
hepsi := true
for _, s := range []string{"gopher", "çğü", ""} {
if Ters(Ters(s)) != s {
hepsi = false
}
}
fmt.Println(hepsi)
}Beklenen çıktı
true
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Go 1.18 ile gelen <code>FuzzXxx</code> testleri ne yapar?
- Rastgele üretilen girdilerle hata arar Doğru cevap
- Testleri paralel çalıştırır
- Kapsamı ölçer
- Benchmark yapar
Açıklama: go test -fuzz=FuzzParse, verilen tohumlardan yeni girdiler türetip panic veya başarısız kontrol bulmaya çalışır.
2 Tohum ekle
func FuzzParse(f *testing.F) {
f.____("42")
f.Fuzz(func(t *testing.T, s string) { Parse(s) })
}
func FuzzParse(f *testing.F) {
f.Add("42")
f.Fuzz(func(t *testing.T, s string) { Parse(s) })
}
Açıklama: f.Add fuzz motoruna başlangıç girdisi (tohum) verir.
3 Test türü
| Kavram | Anlamı |
|---|---|
TestXxx |
Birim test |
ExampleXxx |
Belge + test |
BenchmarkXxx |
Performans ölçümü |
FuzzXxx |
Rastgele girdi |