Testovanie softvéru je proces, ktorý hodnotí metriky programov pomocou nástrojov, skriptov alebo manuálne.

Testovanie je neoddeliteľnou súčasťou cyklu vývoja softvéru. Komplexné testovanie poskytuje podrobné informácie o integrite vašej aplikácie.

Chybám môžete predchádzať a opravovať ich písaním testov, vyhodnocovaním výkonu programu a automatizáciou pracovných postupov.

Začíname s testovaním v Go

Štandardná knižnica Go poskytuje vývoj testovanie balík. The testovanie Balík má benchmarking, fuzzing, skipping, sub-testing, sub-benchmarking a ďalšie funkcie.

Testovanie s týmto balíkom je jednoduché. Tu je jednoduchá testovacia štruktúra, ktorá bude slúžiť ako model pre test:

typu Prípady štrukturovať {
// očakávaný výstup testu
očakávané int

// výstup funkcie
skutočné int

// hodnota, ktorú odovzdávate funkcii
argument reťazec
}

Tu je jednoduchá funkcia, ktorá konvertuje reťazce na celé čísla. Váš test otestuje túto funkciu.

importovať (
"strconv"
)

funcStringToInteger(str reťazec)int {
celé číslo, chyba := strconv. Atoi (str)

ak chyba!= nula {
vrátiť0
}

vrátiť celé číslo
}

instagram viewer

The StringToInteger funkcia sa vracia 0 ak je chyba pri prevode a celé číslo, ak nie sú žiadne chyby.

Tu je testovacia funkcia pre StringToInteger:

funcTestStringToInteger(test *testovanie. T) {
očakávanéInt := StringToInteger("3")

caseInstance := Prípady {
očakávané: expectInt,
skutočné: 3,
}

ak caseInstance.expected == caseInstance.actual {
// tu je nejaký kód
} inak {
test. Zlyhanie ()
}
}

The TestStringToInteger testovacia funkcia akceptuje a testovanie. T objekt ako svoj argument. The očakávanáInt premenná obsahuje výsledok konverzie reťazca. The caseInstance premenná je inštanciovaná štruktúra Cases pre test. The ak vyhlásenie porovnáva očakávané a skutočné hodnoty.

The Zlyhanie metóda vráti neúspešný test v príkaze else, ak sa hodnoty nezhodujú.

Go poskytuje a test príkaz na automatizáciu a získavanie prehľadov o vašich testoch a programoch.

ísť test
ísť pomôcť otestovať

Stránka pomocníka poskytuje podrobné informácie o tom, ako ísť otestovať Tvorba:

Ekosystém Go je domovom mnohých knižníc, vďaka ktorým je testovanie prístupnejšie a flexibilnejšie. Okrem toho existuje veľa funkcií testovanie balík vrátane regresné a jednotkové testovanie.

Balíček Svedčiť

Balíček Testify je jedným z najpopulárnejších rámcov Go na testovanie balíkov. Poskytuje nástroje, ktoré budete potrebovať na písanie efektívnych testov, s jednoduchými tvrdeniami, zosmiešňovaním a funkciami testovacieho balíka.

Testify je vhodný pre testom riadený vývoj, pretože balík poskytuje a posmievať sa balík. To poskytuje mechanizmus na písanie falošných objektov, ktoré môžete pri testovaní použiť namiesto skutočných objektov.

Balíček tiež poskytuje:

  • An tvrdiť balík, ktorý poskytuje užitočné metódy na písanie priateľských a čitateľných testov.
  • A vyžadovať balík podobný ako tvrdiť balík na vrátenie boolovských výsledkov.
  • A apartmán balík pre testovacie súpravy so štruktúrami.

Svedčiť sa rozprestiera na testovanie balík a môžete použiť ísť otestovať príkaz na spustenie testov napísaných s balíkom Testify.

Testify podporuje verzie Go od 1.13. Balík môžete pridať ako závislosť projektu pomocou tohto príkazu:

ísť získajte github.com/stretchr/testify

Tu je jednoduchý test tvrdení s balíkom Testify tvrdiť balík:

balík hlavné

importovať (
"testovanie"
"github.com/stretchr/testify/assert" // iba balík tvrdiť
)

// názov funkcie by mal byť podľa konvencie "Niečo".
funcTestovať niečo(t *testovanie. T) {
// presadzovanie rovnosti
tvrdiť. Rovná sa (t, 123, 123, „mali by si byť rovní“)

// tvrdenie o nerovnosti
tvrdiť. NotEqual (t, 123, 456"nemali by si byť rovní")
}

The Testovať niečo testovacia funkcia preberá štruktúru testovacieho typu testovanie balík ako argument. The Rovnaký a Nerovná sa metódy sú pre tvrdenia založené na rovnosti a nerovnosti od spoločnosti Testify tvrdiť balík.

Balík GoConvey

GoConvey je testovací nástroj Go pripravený na výraznosť testovanie balík. Obsahuje terminál (CLI) a prehliadač (GUI) testovanie funkčnosti.

Balík GoConvey sa integruje s testovanie balík poskytujúci webové používateľské rozhranie pre prácu s natívnymi Go testami. Zahŕňa tiež funkcie pre regresné testy, prispôsobiteľné výstupy a generovanie testovacieho kódu. Môžete automaticky spúšťať testy, pristupovať k formátom pokrytia v HTML a prispôsobiť GUI.

Spustite tento príkaz v termináli vášho pracovného priestoru Go a nainštalujte balík Go Convey.

ísť získajte github.com/smartystreets/goconvey

Tu je jednoduchý príklad písania testov s balíkom GoConvey.

balík hlavné

importovať (
. "github.com/smartystreets/goconvey/convey"
"testovanie"
)

funcTestovať niečo(t *testovanie. T) {
// Preneste iba t do hovorov Convey najvyššej úrovne
Convey("Deklarovať premennú", t, func() {
x := 1

Convey("premenná prírastku", func() {
x++

Convey("tvrdiť rovnosť", func() {
Takže (x, malo by sa rovnať, 2)
})
})
})
}

Budete musieť importovať sprostredkovať balík pomocou bodkovej notácie pre test.

Funkcia Convey z Preniesť balíček pomáha s rozsahom testu. Posledný Preniesť volanie funkcie v príklade kódu presadzuje rovnosť medzi X variabilné a 2, pomocou Mala by sa rovnať funkciu.

Balík očakávaní HTTP

The Očakáva sa HTTP package je ľahko použiteľný, stručný, deklaratívny balík na end-to-end testovanie HTTP a REST API od Go. Môžete ho použiť na postupné vytváranie požiadaviek HTTP a rekurzívne kontrolovať odpovede a ich užitočné zaťaženie.

The httpexpect package je sada reťaziteľných zostavovateľov pre požiadavky HTTP a tvrdenia o odpovediach HTTP a užitočných zaťaženiach. Je postavená na http, testovaniea ďalšie balíčky. Balenie funguje dobre aj so vstavaným httptest balík.

httpexpect poskytuje funkcie na vytváranie požiadaviek s konštrukciou URL, hlavičkami, súbormi cookie a užitočnými zaťaženiami. Zaoberá sa tvrdeniami odozvy, tvrdeniami o užitočnom zaťažení, peknou tlačou a WebSockets.

Spustite tento príkaz v termináli vášho pracovného adresára a nainštalujte ho httpexpect balík.

ísť získajte github.com/gavv/httpexpect

Tu je jednoduchý príklad testovania funkcie handlera s httpexpect balík.

balík hlavné

importovať (
"fmt"
"github.com/gavv/httpexpect/v2"
"net/http"
"net/http/httptest"
"testovanie"
)

funcexampleHandler()http.Handler {
vrátiť http. HandlerFunc(func(spisovateľ http. ResponseWriter, vyžiadajte *http. žiadosť) {
fmt. Fprintln (spisovateľ, "Ahoj svet")
})
}

funcTestexampleHandler(t *testovanie. T) {
//vytvor http. Handler
handler := exampleHandler()

// spustiť server pomocou httptest
server := httptest. NewServer (obslužný program)
odložiť server. Zavrieť()

// vytvorte http očakávanú inštanciu
očakávať := httpočakávať. Nové (t, server. URL)

// funguje to?
očakávať. GET("/").
Očakávať ().
Stav (http. StatusOK).JSON().Array().Empty()
}

The exampleHandler funkcia handler vracia obsluhu HTTP pre httpexpect balík. The TestexampleHandler function deklaruje inštanciu funkcie handlera. Potom vytvorí nový server na testovanie koncového bodu s httptest balík.

The očakávať premenná je vaša httpexpect príklad, ktorý zasiahne GET vyžiadať koreňovú cestu koncového bodu na serveri. The Postavenie funkcia sa vracia stavový kód (v tomto prípade, 200), ak je test úspešný.

Napíšte komplexné a intuitívne testy

Testy idú dlhou cestou pri hodnotení integrity vašej aplikácie a existuje veľa testovacích vzorov a metód, ktoré môžete použiť pre svoje programy. Jadrom vášho pracovného postupu testovania by ste mali písať intuitívne testy, ktoré môžete zlepšovať, keď sa vaše programy časom menia.