Tarkvara testimine on protsess, mis hindab programmide mõõdikuid tööriistade, skriptide või käsitsi.

Testimine on tarkvara arendustsükli lahutamatu osa. Põhjalik testimine annab põhjalikku teavet teie rakenduse terviklikkuse kohta.

Saate ennetada ja parandada vigu, kirjutades teste, hinnates programmi jõudlust ja automatiseerides töövooge.

Go testimisega alustamine

Go standardraamatukogu pakub arenevat testimine pakett. The testimine paketil on võrdlusuuringud, fuzzing, vahelejätmine, alamtestimine, alam-benchmarking ja muud funktsioonid.

Selle paketiga testimine on lihtne. Siin on lihtne testistruktuur, mis toimib testi mudelina:

tüüp Juhtumid struktuur {
// testi eeldatav väljund
oodatud int

// funktsiooni väljund
tegelik int

// väärtus, mille funktsioonile edastate
argument string
}

Siin on lihtne funktsioon, mis teisendab stringid täisarvudeks. Teie test testib seda funktsiooni.

importida (
"strconv"
)

funcStringToInteger(str string)int {
täisarv, err := strconv. Atoi (st)

kui eks!= null {
tagasi0
}

tagasi täisarv
}

instagram viewer

The StringToInteger funktsioon tagastab 0 kui teisendamisel on viga, ja täisarv, kui vigu pole.

Siin on StringToIntegeri testfunktsioon:

funcTestStringToInteger(test *testimine. T) {
oodatudInt := StringToInteger("3")

caseInstance := Juhtumid {
oodatud: oodatudInt,
tegelik: 3,
}

kui caseInstance.expected == caseInstance.actual {
// siin mingi kood
} muidu {
katsetada. Ebaõnnestumine ()
}
}

The TestStringToInteger testfunktsioon aktsepteerib a testimine. T argument. The oodatudInt muutuja sisaldab stringi teisenduse tulemust. The caseInstance muutuja on testi instantseeritud Cases struktuur. The kui avaldus võrdleb eeldatavat ja tegelikku väärtust.

The Ebaõnnestumine meetod tagastab muu lauses ebaõnnestunud testi, kui väärtused ei ole võrdsed.

Go pakub a katsetada käsk teie testide ja programmide automatiseerimiseks ja ülevaate saamiseks.

mine katsetada
mine aidake testida

Abilehel on üksikasjalik teave selle kohta, kuidas mine testima töötab:

Go ökosüsteem on koduks paljudele raamatukogudele, mis muudavad testimise kättesaadavamaks ja paindlikumaks. Lisaks on palju funktsioone testimine pakett, sealhulgas regressiooni- ja ühikutestimine.

Tunnistamise pakett

Pakett Testify on üks populaarsemaid Go raamistikke pakettide testimiseks. See pakub tööriistu, mida vajate tõhusate testide koostamiseks lihtsate väidete, pilkamise ja testimiskomplekti funktsioonidega.

Testify sobib testipõhiseks arendamiseks, kuna pakett sisaldab a mõnitama pakett. See annab mehhanismi näidisobjektide kirjutamiseks, mida saate testimisel kasutada pärisobjektide asemel.

Pakett sisaldab ka:

  • An väita pakett, mis pakub kasulikke meetodeid sõbralike ja loetavate testide kirjutamiseks.
  • A nõuda pakett sarnaneb väita pakett tõeväärtuslike tulemuste tagastamiseks.
  • A sviit pakett testkomplektide jaoks koos struktuuridega.

Tunnistada laieneb testimine paketti ja saate kasutada mine testima käsk Testify paketiga kirjutatud testide käivitamiseks.

Testify toetab Go versioone alates 1.13. Saate lisada paketi projekti sõltuvusena selle käsuga:

mine hankige github.com/stretchr/testify

Siin on lihtne kinnitustest Testify paketiga väita pakett:

pakett peamine

importida (
"testimine"
"github.com/stretchr/testify/assert" // ainult kinnita pakett
)

// funktsiooni nimi peaks kokkuleppeliselt olema "Midagi".
funcTest Midagi(t * testimine. T) {
// võrdsuse kinnitamine
väita. Võrdne (t, 123, 123, "need peaksid olema võrdsed")

// ebavõrdsuse kinnitamine
väita. NotEqual (t, 123, 456, "nad ei tohiks olla võrdsed")
}

The Test Midagi testfunktsioon võtab testimise tüüpi struktuuri testimine pakett argumendina. The Võrdne ja Pole võrdne meetodid on võrdsuse ja ebavõrdsusepõhiste väidete jaoks Testify's väita pakett.

GoConvey pakett

GoConvey on Go testimistööriist, mis on loodud väljendusvõime saavutamiseks testimine pakett. See sisaldab terminal (CLI) ja brauser (GUI) testimise funktsionaalsus.

GoConvey pakett integreerub testimine pakett, mis pakub veebikasutajaliidest Go natiivsete testidega töötamiseks. See sisaldab ka regressioonitestide, kohandatavate väljundite ja testkoodi genereerimise funktsioone. Saate käivitada teste automaatselt, pääseda juurde HTML-i katvusvormingutele ja kohandada GUI-d.

Käivitage see käsk oma Go tööruumi terminalis, et installida pakett Go Convey.

mine hankige github.com/smartystreets/goconvey

Siin on lihtne näide testide kirjutamisest GoConvey paketiga.

pakett peamine

importida (
. "github.com/smartystreets/goconvey/convey"
"testimine"
)

funcTest Midagi(t * testimine. T) {
// Edastage t ainult tipptasemel Edastage kõned
Convey("Deklareeri muutuja", t, func() {
x := 1

Convey("increment muutuja", func() {
x++

Convey("assert võrdsus", func() {
Niisiis (x, ShouldEqual, 2)
})
})
})
}

Peate importima edasi andma pakett, kasutades testi jaoks punktimärki.

Funktsioon Edastage alates Edastage pakett aitab testi ulatust määrata. Viimane Edastage funktsioonikutse koodinäites kinnitab võrdsust x muutuv ja 2, kasutades Peaks Võrdne funktsiooni.

HTTP ootuspakett

The HTTP oodata pakett on lihtsalt kasutatav, kokkuvõtlik, deklaratiivne pakett Go's otsast lõpuni HTTP ja REST API testimiseks. Saate seda kasutada HTTP-päringute järkjärguliseks koostamiseks ning vastuste ja nende kasuliku koormuse rekursiivseks kontrollimiseks.

The httpexpect pakett on aheldatavate koostajate komplekt HTTP-päringute ja HTTP-vastuste ja kasulike koormuste väidete jaoks. See on üles ehitatud http, testimineja muud paketid. Pakett töötab hästi ka sisseehitatud httptest pakett.

httpexpect pakub funktsioone päringu koostamiseks URL-i konstruktsiooni, päiste, küpsiste ja kasulike koormustega. See käsitleb vastuse väiteid, kasuliku koormuse väiteid, ilusat printimist ja WebSockette.

Käivitage see käsk oma töökataloogi terminalis, et installida httpexpect pakett.

mine hankige github.com/gavv/httpexpect

Siin on lihtne näide käitleja funktsiooni testimisest rakendusega httpexpect pakett.

pakett peamine

importida (
"fmt"
"github.com/gavv/httpexpect/v2"
"net/http"
"net/http/httptest"
"testimine"
)

funcnäideHandler()http.Käitleja {
tagasi http. HandlerFunc(func(kirjanik http. ResponseWriter, päring *http. taotlus) {
fmt. Fprintln (kirjanik, "Tere maailm")
})
}

funcTestexampleHandler(t * testimine. T) {
// loo http. Käitleja
töötleja := näideHandler()

// käivitage server httptesti abil
server := httptest. NewServer (töötleja)
edasi lükata server. Sulge()

// loo http oodatav eksemplar
oodata := httpexpect. Uus (t, server. URL)

// Kas see töötab?
oodata. GET("/").
Oodata ().
Olek (http. StatusOK).JSON().Array().Empty()
}

The näideHandler funktsioon käitleja tagastab HTTP-käsitleja jaoks httpexpect pakett. The TestexampleHandler funktsioon deklareerib käitleja funktsiooni eksemplari. Seejärel loob see uue serveri lõpp-punkti testimiseks rakendusega httptest pakett.

The oodata muutuja on sinu httpexpect näide, mis tabab SAADA päringu lõpp-punkti juurteed serveris. The Olek funktsioon tagastab olekukood (sel juhul, 200), kui test õnnestub.

Kirjutage põhjalikke ja intuitiivseid teste

Testid aitavad teie rakenduse terviklikkuse hindamisel kaugele kaasa ning oma programmide jaoks saate kasutada palju testimismustreid ja -meetodeid. Testimise töövoo keskmes peaksite kirjutama intuitiivseid teste, mida saate programmide aja jooksul muutudes täiustada.