Yazılım testi, araçları, komut dosyalarını veya manuel olarak programların ölçümlerini değerlendiren bir süreçtir.

Test, yazılım geliştirme döngüsünün ayrılmaz bir parçasıdır. Kapsamlı testler, uygulamanızın bütünlüğü hakkında derinlemesine bilgi sağlar.

Testler yazarak, program performansını değerlendirerek ve iş akışlarını otomatikleştirerek hataları önleyebilir ve düzeltebilirsiniz.

Go'da Test Etmeye Başlarken

Go standart kitaplığı, gelişen bir test yapmak paket. bu test yapmak paket, kıyaslama, bulanıklaştırma, atlama, alt test, alt kıyaslama ve diğer işlevlere sahiptir.

Bu paketle test yapmak kolaydır. Test için bir model olarak hizmet edecek basit bir test yapısı:

tip vakalar yapı {
// testin beklenen çıktısı
beklenen int

// fonksiyonun çıktısı
gerçek int

// fonksiyona ilettiğiniz değer
argüman sicim
}

İşte dizeleri tam sayılara dönüştüren basit bir işlev. Testiniz bu işlevi test edecektir.

içe aktarmak (
"strconv"
)

işlevStringToInteger(str sicim)int {
tamsayı, hata := strconv. Atoi (saray)

eğer hata != sıfır {
dönüş0
}

dönüş tam sayı
}

instagram viewer

bu StringToInteger fonksiyon döndürür 0 dönüştürmede bir hata varsa ve hata yoksa tamsayı.

İşte StringToInteger için bir test işlevi:

işlevTestStringToInteger(test *test. T) {
beklenenInt := StringToInteger("3")

caseInstance := Vakalar {
beklenen: beklenenInt,
gerçek: 3,
}

eğer caseInstance.expected == caseInstance.actual {
// burada bir kod
} başka {
Ölçek. Başarısız()
}
}

bu TestStringToInteger test işlevi bir kabul eder test yapmak. T argümanı olarak nesne. bu beklenenInt değişken, dize dönüşümünün sonucunu tutar. bu caseInstance değişken, test için somutlaştırılmış Cases yapısıdır. bu eğer ifadesi beklenen ve gerçek değerleri karşılaştırır.

bu Başarısız Değerler eşit değilse yöntem, else ifadesinde başarısız bir test döndürür.

Git sağlar Ölçek Testleriniz ve programlarınız hakkında bilgileri otomatikleştirmek ve almak için komut.

Git Ölçek
Git yardım testi

Yardım sayfası, nasıl yapılacağı hakkında ayrıntılı bilgi sağlar. teste git İşler:

Go ekosistemi, testi daha erişilebilir ve esnek hale getiren birçok kitaplığa ev sahipliği yapar. ötesinde pek çok işlevsellik vardır. test yapmak dahil olmak üzere paket regresyon ve birim testi.

Tanıklık Paketi

Tanıklık paketi paketleri test etmek için en popüler Go çerçevelerinden biridir. Kolay iddialar, alay etme ve test paketi işlevleriyle verimli testler yazmak için ihtiyaç duyacağınız araçlar sağlar.

Testify, test odaklı geliştirme için uygundur, çünkü paket alay paket. Bu, testte gerçek nesneler yerine kullanabileceğiniz sahte nesneler yazmak için bir mekanizma sağlar.

Paket ayrıca şunları sağlar:

  • Bir iddia etmek kolay, okunabilir testler yazmak için yararlı yöntemler sağlayan paket.
  • A gerekmek pakete benzer iddia etmek boole sonuçlarını döndürmek için paket.
  • A süit yapılara sahip test takımları için paket.

Tanıklık uzanır test yapmak paketini kullanabilir ve teste git Testify paketiyle yazılmış testleri çalıştırma komutu.

Testify, 1.13'ten itibaren Go sürümlerini destekler. Bu komutla paketi proje bağımlılığı olarak ekleyebilirsiniz:

Git github.com/stretchr/testify'ı edinin

İşte Testify paketinin sunduğu basit bir iddia testi iddia etmek paket:

paket ana

içe aktarmak (
"test yapmak"
"github.com/stretchr/testify/assert" // sadece paketi onayla
)

// işlev adı, kurallara göre "Bir Şey" olmalıdır
işlevTestBir Şey(t *test. T) {
// eşitlik iddiası
iddia etmek. eşit (t, 123, 123, "eşit olmalılar")

// eşitsizliğin öne sürülmesi
iddia etmek. NotEqual (t, 123, 456, "eşit olmamalılar")
}

bu TestBir Şey test işlevi, test tipi yapısını alır test yapmak argüman olarak paketleyin. bu Eşit ve Eşit değil yöntemler, Testify'ın eşitlik ve eşitsizliğe dayalı iddiaları içindir. iddia etmek paket.

GoConvey Paketi

GoConvey üzerinde ifade için hazırlanmış bir Go test aracıdır. test yapmak paket. O içerir terminal (CLI) ve tarayıcı (GUI) test etme işlevi.

GoConvey paketi, test yapmak paket, yerel Go testleriyle çalışmak için bir web kullanıcı arabirimi sağlar. Ayrıca regresyon testleri, özelleştirilebilir çıktılar ve test kodu üretimi için işlevsellik içerir. Testleri otomatik olarak çalıştırabilir, HTML'deki kapsam biçimlerine erişebilir ve GUI'yi özelleştirebilirsiniz.

Go Convey paketini kurmak için Go çalışma alanınızın terminalinde bu komutu çalıştırın.

Git github.com/smartystreets/goconvey'i edinin

GoConvey paketiyle test yazmaya ilişkin basit bir örnek.

paket ana

içe aktarmak (
. "github.com/smartystreets/goconvey/convey"
"test yapmak"
)

işlevTestBir Şey(t *test. T) {
// t'yi yalnızca üst düzey İletim çağrılarına iletin
Convey("Değişken bildir", t, işlev() {
x := 1

Convey("artış değişkeni", işlev() {
x++

Convey("eşitliği iddia et", işlev() {
Yani (x, ShouldEqual, 2)
})
})
})
}

içe aktarmanız gerekecek iletmek test için nokta gösterimini kullanan paket.

İletim işlevinden İletmek paket, test kapsamı belirlemeye yardımcı olur. Son İletmek kod örneğindeki işlev çağrısı, x değişken ve 2, kullanmak Eşittir işlev.

HTTP Beklenti Paketi

bu HTTP Beklentisi paketi, Go'nun uçtan uca HTTP ve REST API testi için kullanımı kolay, özlü, bildirime dayalı bir pakettir. Artımlı olarak HTTP istekleri oluşturmak ve yanıtları ve bunların yüklerini yinelemeli olarak incelemek için kullanabilirsiniz.

bu httpbeklenti paket, HTTP yanıtları ve yükleri üzerindeki HTTP istekleri ve iddiaları için zincirlenebilir bir oluşturucular kümesidir. üzerine inşa edilmiştir http, test yapmak, ve diğer paketler. Paket ayrıca yerleşik ile iyi çalışır httptesti paket.

httpbeklenti URL yapısı, başlıklar, tanımlama bilgileri ve yüklerle istek oluşturma için işlevsellik sağlar. Yanıt iddialarını, yük iddialarını, güzel yazdırmayı ve WebSockets'i işler.

Yüklemek için çalışma dizininizin terminalinde bu komutu çalıştırın. httpbeklenti paket.

Git github.com/gavv/httpexpect'i edinin

Bir işleyici işlevini aşağıdaki komutla test etmenin basit bir örneği: httpbeklenti paket.

paket ana

içe aktarmak (
"fmt"
"github.com/gavv/httpexpect/v2"
"net/http"
"net/http/httptest"
"test yapmak"
)

işlevörnekİşleyici()http.işleyici {
dönüş http. İşleyiciFunc(işlev(yazar http. ResponseWriter, istek * http. Rica etmek) {
fmt. Fprintln (yazar, "Merhaba Dünya")
})
}

işlevTestÖrneğiİşleyici(t *test. T) {
// http oluştur. işleyici
işleyici := örnekHandler()

// httptest kullanarak sunucuyu çalıştır
sunucu := httptest. NewServer (işleyici)
ertelemek sunucu. Kapat()

// http bekle örneği oluştur
bekle := httpbeklen. Yeni (t, sunucu. URL)

// çalışıyormu?
beklemek. ALMAK("/").
Beklemek().
Durum (http. StatusOK).JSON().Array().Empty()
}

bu örnekİşleyici işleyici işlevi, aşağıdakiler için bir HTTP işleyicisi döndürür. httpbeklenti paket. bu TestÖrneğiİşleyici işlev, işleyici işlevinin bir örneğini bildirir. Daha sonra uç noktayı test etmek için yeni bir sunucu oluşturur. httptesti paket.

bu beklemek değişken senin httpbeklenti isabet eden örnek ALMAK sunucuda uç nokta kök yolunu isteyin. bu Durum fonksiyon döndürür durum kodu (bu durumda, 200) test başarılı olursa.

Kapsamlı ve Sezgisel Testler Yazın

Testler, uygulamanızın bütünlüğünü değerlendirmede uzun bir yol kat eder ve programlarınız için kullanabileceğiniz birçok test modeli ve yöntemi vardır. Test iş akışınızın özünde, programlarınız zamanla değiştikçe geliştirebileceğiniz sezgisel testler yazmalısınız.