Ohjelmistojen testaus on prosessi, joka arvioi ohjelmien mittareita käyttämällä työkaluja, komentosarjoja tai manuaalisesti.

Testaus on olennainen osa ohjelmistokehityssykliä. Kattava testaus antaa syvällistä tietoa sovelluksesi eheydestä.

Voit estää ja korjata virheitä kirjoittamalla testejä, arvioimalla ohjelman suorituskykyä ja automatisoimalla työnkulkuja.

Testauksen aloittaminen Gossa

Go-standardikirjasto tarjoaa kehittyvän testaus paketti. The testaus Paketissa on benchmarking-, sumea-, ohitus-, osatestaus-, osavertailu- ja muita toimintoja.

Testaus tällä paketilla on helppoa. Tässä on yksinkertainen testirakenne, joka toimii mallina testille:

tyyppi Tapaukset struct {
// testin odotettu tulos
odotettavissa int

// funktion tulos
todellinen int

// arvo, jonka siirrät funktiolle
Perustelu merkkijono
}

Tässä on yksinkertainen toiminto, joka muuntaa merkkijonot kokonaisluvuiksi. Testi testaa tämän toiminnon.

tuonti (
"strconv"
)

funcStringToInteger(str merkkijono)int {
kokonaisluku, err := strconv. Atoi (katu)

jos virhe! = nolla {
palata0
}

palata kokonaisluku
}

The StringToInteger funktio palauttaa 0 jos muunnoksessa on virhe ja kokonaisluku, jos virheitä ei ole.

Tässä on StringToIntegerin testifunktio:

funcTestStringToInteger(testi *testaus. T) {
expectInt := StringToInteger("3")

caseInstance := Tapaukset {
odotettu: odotettuInt,
todellinen: 3,
}

jos caseInstance.expected == caseInstance.actual {
// tässä jotain koodia
} muu {
testata. Epäonnistui ()
}
}

The TestStringToInteger testitoiminto hyväksyy a testaus. T argumenttina. The odotettuInt muuttuja sisältää merkkijonon muuntamisen tuloksen. The caseInstance muuttuja on testin instantoitu Cases-rakenne. The jos lausunto vertaa odotettua ja todellista arvoa.

The Epäonnistui menetelmä palauttaa epäonnistuneen testin else-käskyssä, jos arvot eivät ole samat.

Go tarjoaa a testata komento, jonka avulla voit automatisoida ja hakea tietoja testeistäsi ja ohjelmistasi.

mennä testata
mennä auta testiä

Ohjesivulla on yksityiskohtaisia ​​tietoja siitä, miten mene testiin toimii:

Go-ekosysteemissä on monia kirjastoja, jotka tekevät testauksesta helpompaa ja joustavampaa. Sen lisäksi on paljon toimintoja testaus paketti, mukaan lukien regressio- ja yksikkötestaus.

Todista-paketti

Testify-paketti on yksi suosituimmista Go-kehyksistä pakettien testaamiseen. Se tarjoaa työkaluja, joita tarvitset tehokkaiden testien kirjoittamiseen, ja siinä on helppoja väitteitä, pilkkaamista ja testaussarjan toimintoja.

Testify soveltuu testilähtöiseen kehitykseen, koska paketti sisältää a pilkata paketti. Tämä tarjoaa mekanismin valeobjektien kirjoittamiseen, joita voit käyttää todellisten objektien sijasta testauksessa.

Paketti sisältää myös:

  • An väittää paketti, joka tarjoaa hyödyllisiä tapoja kirjoittaa ystävällisiä, luettavia testejä.
  • A vaatia paketti samanlainen kuin väittää paketti loogisten tulosten palauttamiseen.
  • A sviitti paketti testisarjoille rakenteilla.

Todistaa ulottuu testaus pakettia, ja voit käyttää mene testiin -komento suorittaa Testify-paketilla kirjoitettuja testejä.

Testify tukee Go-versioita 1.13 alkaen. Voit lisätä paketin projektiriippuvuudeksi tällä komennolla:

mennä hanki github.com/stretchr/testify

Tässä on yksinkertainen väitetesti Testify-paketin kanssa väittää paketti:

paketti pää

tuonti (
"testaus"
"github.com/stretchr/testify/assert" // vain vahvista paketti
)

// funktion nimen tulisi olla "Jotain" sopimuksen mukaan
funcTestaa jotain(t *testaus. T) {
// tasa-arvon puolustaminen
väittää. yhtä suuri (t, 123, 123, "niiden pitäisi olla samanarvoisia")

// väittää eriarvoisuutta
väittää. NotEqual (t, 123, 456, "niiden ei pitäisi olla samanarvoisia")
}

The Testaa jotain testitoiminto ottaa testaustyyppisen rakenteen testaus paketti argumenttina. The Yhtä suuri ja NotEqual menetelmät ovat tasa-arvoon ja eriarvoisuuteen perustuvia väitteitä Testify'silta väittää paketti.

GoConvey-paketti

GoConvey on Go-testaustyökalu, joka on valmis ilmaisemaan ilmaisukykyä testaus paketti. Se sisältää pääte (CLI) ja selain (GUI) toiminnallisuuden testaus.

GoConvey-paketti integroituu testaus paketti, joka tarjoaa verkkokäyttöliittymän natiivi Go-testien kanssa työskentelemiseen. Se sisältää myös toiminnot regressiotesteihin, mukautettaviin lähtöihin ja testikoodin luomiseen. Voit suorittaa testejä automaattisesti, käyttää kattavuusmuotoja HTML: ssä ja mukauttaa graafista käyttöliittymää.

Asenna Go Convey -paketti suorittamalla tämä komento Go-työtilan päätteessä.

mennä Hanki github.com/smartystreets/goconvey

Tässä on yksinkertainen esimerkki testien kirjoittamisesta GoConvey-paketilla.

paketti pää

tuonti (
. "github.com/smartystreets/goconvey/convey"
"testaus"
)

funcTestaa jotain(t *testaus. T) {
// Välitä t vain huipputason Convey-kutsuihin
Convey("Ilmoita muuttuja", t, func() {
x := 1

Convey("lisämuuttuja", func() {
x++

Convey("assert tasa-arvo", func() {
Joten (x, ShouldEqual, 2)
})
})
})
}

Sinun on tuotava välittää paketti käyttäen pistemerkintää testissä.

Siirrä-toiminto osoitteesta Välittää paketti auttaa testin laajuuden määrittämisessä. Viimeinen Välittää funktiokutsu koodiesimerkissä väittää tasa-arvon välillä x muuttuva ja 2, käyttämällä Pitäisi tasapuolinen toiminto.

HTTP Expect -paketti

The HTTP Odottaa paketti on helppokäyttöinen, ytimekäs, ilmoittava paketti Go: n päästä päähän HTTP- ja REST API -testaukseen. Voit käyttää sitä rakentamaan HTTP-pyyntöjä asteittain ja tarkastamaan vastauksia ja niiden hyötykuormia rekursiivisesti.

The httpexpect paketti on joukko ketjutettavia rakentajia HTTP-pyyntöjä ja HTTP-vastauksia ja hyötykuormia koskeviin väitteisiin. Se on rakennettu http, testausja muut paketit. Paketti toimii hyvin myös sisäänrakennetun kanssa httptesti paketti.

httpexpect tarjoaa toimintoja pyyntöjen rakentamiseen URL-rakenteen, otsikoiden, evästeiden ja hyötykuormien avulla. Se käsittelee vastausvahvistuksia, hyötykuorman väitteitä, kaunista tulostusta ja WebSocketit.

Suorita tämä komento työhakemistosi päätteessä asentaaksesi httpexpect paketti.

mennä Hanki github.com/gavv/httpexpect

Tässä on yksinkertainen esimerkki käsittelijän toiminnon testaamisesta httpexpect paketti.

paketti pää

tuonti (
"fmt"
"github.com/gavv/httpexpect/v2"
"net/http"
"net/http/httptest"
"testaus"
)

funcesimerkki Käsittelijä()http.Käsittelijä {
palata http. HandlerFunc(func(kirjoittaja http. ResponseWriter, pyydä *http. Pyyntö) {
fmt. Fprintln (käsikirjoittaja, "Hello World")
})
}

funcTestexampleHandler(t *testaus. T) {
// luo http. Käsittelijä
Käsittelijä := esimerkkiHandler()

// suorita palvelin httptestillä
palvelin := httptest. NewServer (käsittelijä)
lykätä palvelin. Kiinni()

// luo http odotusinstanssi
odottaa := httpexpect. Uusi (t, palvelin. URL)

// toimiiko se?
odottaa. SAADA("/").
Odottaa().
Tila (http. TilaOK).JSON().Array().Empty()
}

The esimerkki Käsittelijä Käsittelijäfunktio palauttaa HTTP-käsittelijän httpexpect paketti. The TestexampleHandler funktio ilmoittaa käsittelijäfunktion esiintymän. Sitten se luo uuden palvelimen päätepisteen testaamista varten httptesti paketti.

The odottaa muuttuja on sinun httpexpect esimerkki, joka osuu SAADA pyytää päätepisteen juuripolkua palvelimella. The Tila funktio palauttaa tilakoodi (tässä tapauksessa, 200), jos testi onnistuu.

Kirjoita kattavia ja intuitiivisia testejä

Testit auttavat pitkälle sovelluksesi eheyden arvioinnissa, ja voit käyttää ohjelmissasi monia testausmalleja ja -menetelmiä. Testauksen työnkulun ytimessä sinun tulee kirjoittaa intuitiivisia testejä, joita voit parantaa ohjelmiesi muuttuessa ajan myötä.