Testarea software-ului este un proces care evaluează valorile programelor folosind instrumente, scripturi sau manual.

Testarea este o parte integrantă a ciclului de dezvoltare a software-ului. Testarea cuprinzătoare oferă informații aprofundate despre integritatea aplicației dvs.

Puteți preveni și remedia erori prin scrierea de teste, evaluarea performanței programului și automatizarea fluxurilor de lucru.

Noțiuni introductive cu testarea în Go

Biblioteca standard Go oferă o evoluție testarea pachet. The testarea pachetul are benchmarking, fuzzing, skipping, sub-testare, sub-benchmarking și alte funcționalități.

Testarea cu acest pachet este ușoară. Iată o structură simplă de testare care va servi drept model pentru test:

tip Cazuri struct {
// rezultatul așteptat al testului
așteptat int

// ieșirea funcției
real int

// valoarea pe care o transmiteți funcției
argument şir
}

Iată o funcție simplă care convertește șiruri de caractere în numere întregi. Testul dumneavoastră va testa această funcție.

instagram viewer
import (
"strconv"
)

funcStringToInteger(str şir)int {
întreg, err := strconv. Atoi (str)

dacă greș!= zero {
întoarcere0
}

întoarcere întreg
}

The StringToInteger funcția revine 0 dacă există o eroare la conversie și numărul întreg dacă nu există erori.

Iată o funcție de testare pentru StringToInteger:

funcTestStringToInteger(test *testare. T) {
expectInt := StringToInteger("3")

caseInstance := Cazuri {
așteptat: așteptatInt,
real: 3,
}

dacă caseInstance.expected == caseInstance.actual {
// ceva cod aici
} altfel {
Test. Eșuează ()
}
}

The TestStringToInteger funcția de testare acceptă a testarea. T obiect ca argument al acestuia. The aşteptatInt variabila deține rezultatul conversiei șirurilor. The caseInstance variabila este structura Cases instanțiată pentru test. The dacă declarația compară valorile așteptate și cele reale.

The Eșuează metoda returnează un test eșuat în instrucțiunea else dacă valorile nu sunt egale.

Go oferă o Test comandă pentru automatizarea și preluarea informațiilor despre testele și programele dvs.

merge Test
merge test de ajutor

Pagina de ajutor oferă informații detaliate despre cum du-te la testare lucrări:

Ecosistemul Go găzduiește multe biblioteci care fac testarea mai accesibilă și mai flexibilă. Există o mulțime de funcționalități dincolo de testarea pachet, inclusiv regresie și testare unitară.

Pachetul Testify

Pachetul Testify este unul dintre cele mai populare cadre Go pentru testarea pachetelor. Oferă instrumente de care veți avea nevoie pentru a scrie teste eficiente, cu afirmații ușoare, batjocură și funcții de suită de testare.

Testify este potrivit pentru dezvoltarea bazată pe teste, deoarece pachetul oferă a a-și bate joc pachet. Acesta oferă un mecanism pentru scrierea obiectelor simulate pe care le puteți utiliza în locul obiectelor reale în testare.

Pachetul mai prevede:

  • Un afirma pachet care oferă metode utile pentru scrierea de teste prietenoase și ușor de citit.
  • A cere pachet similar cu afirma pachet pentru returnarea rezultatelor booleene.
  • A suită pachet pentru suite de testare cu structuri.

Testify se extinde pe testarea pachet și puteți utiliza du-te la testare comandă pentru a rula teste scrise cu pachetul Testify.

Testify acceptă versiunile Go de la 1.13. Puteți adăuga pachetul ca dependență de proiect cu această comandă:

merge obțineți github.com/stretchr/testify

Iată un test simplu de afirmare cu pachetul Testify afirma pachet:

pachet principal

import (
"testare"
„github.com/stretchr/testify/assert” // afirm doar pachetul
)

// Numele funcției ar trebui să fie „Ceva” prin convenție
funcTestează ceva(t *testare. T) {
// afirmând egalitatea
afirma. Egal (t, 123, 123, „ar trebui să fie egali”)

// afirmând inegalitatea
afirma. NotEqual (t, 123, 456, „nu ar trebui să fie egali”)
}

The Testează ceva funcția de testare preia structura de tip de testare a testarea pachet ca argument. The Egal și Nu este egal metodele sunt pentru afirmații bazate pe egalitate și inegalitate din Testify afirma pachet.

Pachetul GoConvey

GoConvey este un instrument de testare Go pregătit pentru expresivitate peste testarea pachet. Include terminal (CLI) și browser (GUI) testarea funcționalității.

Pachetul GoConvey se integrează cu testarea pachet, oferind o interfață de utilizator web pentru lucrul cu teste native Go. Include, de asemenea, funcționalități pentru teste de regresie, ieșiri personalizabile și generare de cod de testare. Puteți rula teste automat, puteți accesa formate de acoperire în HTML și puteți personaliza interfața grafică.

Rulați această comandă în terminalul spațiului de lucru Go pentru a instala pachetul Go Convey.

merge obțineți github.com/smartystreets/goconvey

Iată un exemplu simplu de scriere a testelor cu pachetul GoConvey.

pachet principal

import (
. „github.com/smartystreets/goconvey/convey”
"testare"
)

funcTestează ceva(t *testare. T) {
// Treceți numai t în apelurile de nivel superior Transmisie
Convey("Declară variabila", t, func() {
x := 1

Transmite ("variabila de incrementare", func() {
x++

Transmite ("afirmă egalitatea", func() {
Deci (x, ShouldEqual, 2)
})
})
})
}

Va trebui să importați transmite pachet folosind notația cu puncte pentru test.

Funcția de transport de la Transmite pachetul ajută la stabilirea domeniului de testare. Ultimul Transmite apelul de funcție din exemplul de cod afirmă egalitatea între X variabilă şi 2, folosind ShouldEqual funcţie.

Pachetul HTTP Expect

The HTTP Așteptați pachetul este un pachet declarativ, concis și ușor de utilizat pentru testarea HTTP și REST API de la Go. Îl puteți folosi pentru a crea solicitări HTTP în mod incremental și pentru a inspecta răspunsurile și încărcăturile lor utile în mod recursiv.

The httpse asteapta pachetul este un set de constructori care se pot înlănțui pentru cereri și aserțiuni HTTP privind răspunsurile și încărcăturile utile HTTP. Este construit pe http, testarea, și alte pachete. Pachetul funcționează bine și cu sistemul încorporat httptest pachet.

httpse asteapta oferă funcționalitate pentru crearea cererilor cu construcția URL, antete, cookie-uri și încărcături utile. Se ocupă de afirmații de răspuns, aserțiuni de încărcare utilă, imprimare destul de mare și WebSockets.

Rulați această comandă în terminalul directorului dvs. de lucru pentru a instala httpse asteapta pachet.

merge obțineți github.com/gavv/httpexpect

Iată un exemplu simplu de testare a unei funcții de gestionare cu httpse asteapta pachet.

pachet principal

import (
"fmt"
„github.com/gavv/httpexpect/v2”
"net/http"
"net/http/httptest"
"testare"
)

funcexampleHandler()http.Handler {
întoarcere http. HandlerFunc(func(scriitor http. ResponseWriter, solicitați *http. Cerere) {
fmt. Fprintln (scriitor, „Hello World”)
})
}

funcTestexampleHandler(t *testare. T) {
// creează http. Handler
handler := exampleHandler()

// rulează serverul folosind httptest
server := httptest. NewServer (handler)
amâna Server. Închide()

// creează o instanță http aștept
așteptați := http așteptați. Nou (t, server. URL)

// functioneaza?
aştepta. OBȚINE("/").
Aştepta().
Stare (http. StatusOK).JSON().Array().Empty()
}

The exampleHandler funcția handler returnează un handler HTTP pentru httpse asteapta pachet. The TestexampleHandler funcția declară o instanță a funcției de gestionare. Apoi creează un nou server pentru testarea punctului final cu httptest pachet.

The aştepta variabila este a ta httpse asteapta exemplu care lovește OBȚINE cere calea rădăcină a punctului final pe server. The stare funcția revine codul de stare (în acest caz, 200) dacă testul reușește.

Scrieți teste cuprinzătoare și intuitive

Testele merg în mare măsură în evaluarea integrității aplicației dvs. și există multe modele și metode de testare pe care le puteți utiliza pentru programele dvs. În centrul fluxului de lucru de testare, ar trebui să scrieți teste intuitive pe care să le puteți îmbunătăți pe măsură ce programele dvs. se schimbă în timp.