Go’da test, hata ayıklama ve kod kalitesi
Tablo tabanlı testler, kıyaslamalar ve bulanık testlerle kodunu sınar; delve ile hata ayıklar, statik analizle hataları çalışmadan yakalarsın.
Seviye 201 · 18 ders · 15 pratik lab
Dersler
Test yazmak
- Test dosyaları, t.Error ve t.Fatal farkı
- Tablo tabanlı testler
- Alt testler ve t.Parallel
- Yardımcı işlevler, testdata klasörü ve altın dosyalar
- Arayüzlerle sahte bağımlılıklar
- Kapsama: go test -cover ve HTML raporu
- Kısa görev: hazır bir ayrıştırıcıyı testlerle kuşat
Ölçmek ve bulanık test
- Kıyaslamalar: testing.B ve benchstat
- Örnek işlevler: çalışan belgeler
- Bulanık test: go test -fuzz ile beklenmedik girdiler
- pprof’a giriş: CPU ve bellek profili
- Kısa görev: bulanık testle gizli çökmeyi bul ve düzelt
Hata ayıklama ve statik analiz
- delve ile adım adım hata ayıklama
- go vet: derleyicinin görmediği hatalar
- staticcheck ve gofmt ile tutarlı kod
- Derleme etiketleri ve tek komutla test hattı
- Kısa görev: analiz bulgularını sıfıra indir
Bitirme
- Bitirme görevi: test ve kapsamı yüzde sekseni geçen günlük ayrıştırıcı
Pratik lablar
- t.Error ile t.Fatal farkını kullanmak: nil sonuçta panikleyen testi, ön koşulda t.Fatal ve bağımsız denetimlerde t.Error kullanacak şekilde düzelt.
- Süre ayrıştırıcısı için tablo testi: Süre metni ayrıştırıcısı için adlandırılmış alt testli tablo yaz; hatalı girdiler ve sınır değerleriyle gizli hatayı ortaya çıkar.
- Paralel alt testlerde paylaşılan durumu düzeltmek: t.Parallel eklenince ara sıra kırılan testlerde paylaşılan paket değişkenini ve geçici dizini bul; her alt teste kendi durumunu ver.
- Test yardımcısında doğru satırı göstermek: Hata satırını yardımcının içinde gösteren karşılaştırma fonksiyonuna t.Helper ekle ve temizliği t.Cleanup ile yap.
- Rapor çıktısını altın dosyayla sınamak: Rapor üreticisinin çıktısını testdata altındaki altın dosyayla karşılaştır ve -update bayrağıyla yenilenebilir yap.
- Saat ve posta bağımlılığını sahteyle değiştirmek: time.Now ve gerçek posta gönderimine bağlı hatırlatma servisini arayüzlerle ayır; sahte saat ve kaydeden sahte gönderici ile sınır zamanlarını sına.
- Kapsanmayan dalı bulup test eklemek: Kapsam raporunda kırmızı kalan hata dallarını bul ve paketi yüzde doksan kapsamın üstüne çıkar.
- İki uygulamayı benchstat ile karşılaştırmak: Dizgi birleştirmenin iki uygulaması için ayırmaları da raporlayan kıyaslamalar yaz ve farkın anlamlı olduğunu benchstat ile göster.
- Profilden sıcak yolu bulup hızlandırmak: Kıyaslamadan CPU ve bellek profili al; en çok ayırma yapan satırı bul, gider ve kıyaslamada en az iki kat iyileşme göster.
- Çalışan örnek fonksiyon yazmak: Paketin iki dışa açık fonksiyonu için Output yorumlu örnek fonksiyonlar yaz ve go test ile doğrulandığını göster.
- Kodlayıcıyı gidiş-dönüş özelliğiyle fuzz etmek: Kodla ve çöz çifti için gidiş-dönüş özelliğini sınayan fuzz testi yaz ve bulduğu girdiyi tohum olarak ekleyip hatayı düzelt.
- Gizli çökmeyi fuzzing ile bulup kapatmak: Ayar satırı ayrıştırıcısında yalnızca özel girdide ortaya çıkan indis paniğini fuzzing ile bul, küçültülmüş girdiyi regresyon testi yap ve kapat.
- go vet bulgularını gidermek: Yanlış biçim fiili ve kopyalanan kilit gibi go vet uyarılarını düzelt ve gofmt farkını sıfırla.
- Yanlış toplamı delve ile izlemek: Fatura toplamını yanlış hesaplayan programda dlv ile kesme noktası koy, değişkenleri izle ve gölgelenen değişkeni bulup düzelt.
- Tek komutlu test hattı ve derleme etiketleri: Bütünleşme testlerini derleme etiketiyle ayır; biçim, vet, staticcheck, yarış ve kapsam eşiğini sırayla çalıştıran tek betiği yaz ve bulguları sıfıra indir.
Kurs hakkında
Tablo tabanlı testler, kıyaslamalar ve bulanık testlerle kodunu sınar; delve ile hata ayıklar, statik analizle hataları çalışmadan yakalarsın.
Ne öğreneceksin
- Test yazmak
- Ölçmek ve bulanık test
- Hata ayıklama ve statik analiz
- Bitirme
Ön koşullar
Aynı yolun 101 düzeyindeki kurslarını bitirmiş olmak ya da o konuları biliyor olmak yeterlidir.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 201 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.