Programinės įrangos testavimas yra procesas, kurio metu įvertinama programų metrika naudojant įrankius, scenarijus arba rankiniu būdu.

Testavimas yra neatsiejama programinės įrangos kūrimo ciklo dalis. Išsamus testavimas suteikia išsamios informacijos apie jūsų programos vientisumą.

Galite užkirsti kelią ir ištaisyti klaidas rašydami testus, vertindami programos našumą ir automatizuodami darbo eigas.

Bandymų „Go“ pradžia

„Go“ standartinė biblioteka suteikia besivystančią testavimas paketą. The testavimas Paketas turi lyginamosios analizės, neryškumo, praleidimo, antrinio testavimo, antrinio palyginimo ir kitų funkcijų.

Bandymas naudojant šį paketą yra paprastas. Štai paprasta bandymo struktūra, kuri bus bandymo pavyzdys:

tipo Atvejai struktūra {
// laukiama testo išvestis
tikimasi tarpt

// funkcijos išvestis
faktinis tarpt

// reikšmė, kurią perduodate funkcijai
argumentas styga
}

Štai paprasta funkcija, kuri eilutes paverčia sveikaisiais skaičiais. Jūsų testas patikrins šią funkciją.

importuoti (
"strconv"
)

funcStringToInteger(str styga)tarpt {
sveikasis skaičius, klaida := strconv. Atoi (str)

jeigu klysta! = nulis {
grąžinti0
}

grąžinti sveikasis skaičius
}

The StringToInteger funkcija grąžinama 0 jei konvertuojant įvyko klaida, ir sveikasis skaičius, jei klaidų nėra.

Štai StringToInteger bandomoji funkcija:

funcTestStringToInteger(testas *testavimas. T) {
expectInt := StringToInteger("3")

caseInstance := Atvejai {
Tikimasi: TikėtinaInt,
faktinis: 3,
}

jeigu caseInstance.expected == caseInstance.actual {
// čia kažkoks kodas
} Kitas {
bandymas. Nepavyko ()
}
}

The TestStringToInteger testavimo funkcija priima a testavimas. T objektas kaip jo argumentas. The tikimasi Tarpt kintamasis turi eilutės konvertavimo rezultatą. The atvejo pavyzdys kintamasis yra egzempliorių Cases struktūra testui. The jeigu pareiškime palyginamos tikėtinos ir faktinės vertės.

The Nepavyko metodas grąžina nepavykusį testą teiginyje else, jei reikšmės nėra lygios.

Go suteikia a bandymas komanda, skirta automatizuoti ir gauti įžvalgas apie jūsų testus ir programas.

eik bandymas
eik padėti išbandyti

Pagalbos puslapyje pateikiama išsami informacija, kaip tai padaryti eik išbandyti veikia:

„Go“ ekosistemoje yra daugybė bibliotekų, todėl testavimas tampa prieinamesnis ir lankstesnis. Be to, yra daug funkcijų testavimas paketą, įskaitant regresijos ir vieneto testavimas.

Liudijimo paketas

Paketas liudyti yra viena iš populiariausių „Go“ sistemų, skirtų paketams testuoti. Jame pateikiami įrankiai, kurių jums prireiks norint parašyti efektyvius testus su lengvais tvirtinimais, pašaipomis ir testavimo rinkinio funkcijomis.

„Testify“ tinka bandymais pagrįstam kūrimui, nes pakete yra a pasityčioti paketą. Tai suteikia netikrų objektų rašymo mechanizmą, kurį galite naudoti vietoje tikrų objektų testuojant.

Pakuotėje taip pat yra:

  • An tvirtinti paketą, kuriame pateikiami naudingi metodai, kaip rašyti draugiškus, skaitomus testus.
  • A reikalauti pakuotė panaši į tvirtinti paketą, skirtą loginiams rezultatams grąžinti.
  • A komplektas paketas bandymų komplektams su struktūromis.

Liudijimas tęsiasi testavimas paketą ir galite naudoti eik išbandyti komandą, kad paleistumėte testus, parašytus su paketu Testify.

„Testify“ palaiko „Go“ versijas nuo 1.13. Galite pridėti paketą kaip projekto priklausomybę naudodami šią komandą:

eik Gaukite github.com/stretchr/testify

Štai paprastas tvirtinimo testas su „Testify“ paketu tvirtinti paketas:

paketą pagrindinis

importuoti (
"bandymas"
"github.com/stretchr/testify/assert" // tik patvirtinimo paketas
)

// funkcijos pavadinimas pagal susitarimą turėtų būti „Kažkas“.
funcIšbandyti kažką(t * testavimas. T) {
// teigdamas lygybę
tvirtinti. Lygus (t, 123, 123, „jie turėtų būti lygūs“)

// teigdamas nelygybę
tvirtinti. NotEqual (t, 123, 456, „jie neturėtų būti lygūs“)
}

The Išbandyti kažką testavimo funkcija paima testavimo tipo struktūrą testavimas paketą kaip argumentą. The Lygus ir Nėra lygus metodai yra skirti lygybei ir nelygybe pagrįstiems teiginiams iš „Testify’s“. tvirtinti paketą.

„GoConvey“ paketas

„GoConvey“. yra „Go“ testavimo įrankis, paruoštas išraiškingumui testavimas paketą. Tai įeina terminalas (CLI) ir naršyklė (GUI) testavimo funkcionalumas.

„GoConvey“ paketas integruojamas su testavimas paketą, suteikiantį žiniatinklio vartotojo sąsają, skirtą darbui su vietiniais „Go“ testais. Tai taip pat apima regresijos testų, pritaikomų išėjimų ir bandomojo kodo generavimo funkcijas. Galite automatiškai vykdyti testus, pasiekti aprėpties formatus HTML ir tinkinti GUI.

Vykdykite šią komandą „Go“ darbo srities terminale, kad įdiegtumėte „Go Convey“ paketą.

eik Gaukite github.com/smartystreets/goconvey

Štai paprastas testų rašymo su „GoConvey“ paketu pavyzdys.

paketą pagrindinis

importuoti (
. "github.com/smartystreets/goconvey/convey"
"bandymas"
)

funcIšbandyti kažką(t * testavimas. T) {
// Perduokite t tik į aukščiausio lygio Perduoti skambučius
Convey("Deklaruoti kintamąjį", t, func() {
x := 1

Convey("prieaugio kintamasis", func() {
x++

Convey("tvirtinti lygybę", func() {
Taigi (x, ShouldEqual, 2)
})
})
})
}

Jums reikės importuoti perteikti paketą naudojant taško žymėjimą testui.

Funkcija Perduoti iš Perteikti paketas padeda nustatyti bandymo apimtį. Paskutinis Perteikti funkcijos iškvietimas kodo pavyzdyje teigia lygybę tarp x kintamasis ir 2, naudojant Turėtų Lygus funkcija.

HTTP laukimo paketas

The Tikėtis HTTP paketas yra lengvai naudojamas, glaustas, deklaratyvus paketas, skirtas Go galutiniam HTTP ir REST API testavimui. Jį galite naudoti norėdami palaipsniui kurti HTTP užklausas ir rekursyviai tikrinti atsakymus bei jų naudingąsias apkrovas.

The httptikėtis paketas yra grandininių kūrimo priemonių rinkinys, skirtas HTTP užklausoms ir tvirtinimams dėl HTTP atsakymų ir naudingųjų apkrovų. Jis pastatytas ant http, testavimas, ir kiti paketai. Paketas taip pat gerai veikia su įmontuotu httptestas paketą.

httptikėtis suteikia užklausų kūrimo funkciją su URL kūrimu, antraštėmis, slapukais ir naudingomis apkrovomis. Jis tvarko atsakymo tvirtinimus, naudingos apkrovos tvirtinimus, gražų spausdinimą ir „WebSockets“.

Paleiskite šią komandą savo darbo katalogo terminale, kad įdiegtumėte httptikėtis paketą.

eik Gaukite github.com/gavv/httpexpect

Štai paprastas tvarkyklės funkcijos bandymo pavyzdys su httptikėtis paketą.

paketą pagrindinis

importuoti (
"fmt"
"github.com/gavv/httpexpect/v2"
"net/http"
"net/http/httptest"
"bandymas"
)

funcpavyzdysHandler()http.Prižiūrėtojas {
grąžinti http. HandlerFunc(func(rašytojas http. ResponseWriter, užklausa *http. užklausa) {
fmt. Fprintln (rašytojas, „Sveikas pasaulis“)
})
}

funcTestexampleHandler(t * testavimas. T) {
// sukurti http. Prižiūrėtojas
tvarkytojas := exampleHandler()

// paleiskite serverį naudodami httptest
serveris := httptest. NewServer (tvarkytojas)
atidėti serveris. Uždaryti()

// sukurti http laukiamą egzempliorių
tikėtis := httpexpect. Naujas (t, serveris. URL)

// ar tai veikia?
tikėtis. GET("/").
Tikėtis ().
Būsena (http. BūsenaGerai).JSON().Array().Empty()
}

The pavyzdysHandler tvarkyklės funkcija grąžina HTTP tvarkyklę httptikėtis paketą. The TestexampleHandler funkcija deklaruoja tvarkyklės funkcijos egzempliorių. Tada jis sukuria naują serverį, skirtą galutinio taško testavimui su httptestas paketą.

The tikėtis kintamasis yra jūsų httptikėtis atvejis, kuris pataiko į GAUTI užklausos galutinio taško šakninis kelias serveryje. The Būsena funkcija grąžinama būsenos kodas (tokiu atveju, 200), jei testas sėkmingas.

Rašykite išsamius ir intuityvius testus

Testai labai padeda įvertinti jūsų programos vientisumą, be to, yra daug testavimo modelių ir metodų, kuriuos galite naudoti savo programoms. Testavimo darbo eigos esmėje turėtumėte parašyti intuityvius testus, kuriuos galėtumėte patobulinti laikui bėgant keičiantis programoms.