Il test del software è un processo che valuta le metriche dei programmi utilizzando strumenti, script o manualmente.

Il test è parte integrante del ciclo di sviluppo del software. Test completi forniscono informazioni approfondite sull'integrità della tua applicazione.

Puoi prevenire e correggere i bug scrivendo test, valutando le prestazioni del programma e automatizzando i flussi di lavoro.

Iniziare con i test in Go

La libreria standard Go fornisce un'evoluzione test pacchetto. Il test il pacchetto include funzionalità di benchmarking, fuzzing, skipping, sub-testing, sub-benchmarking e altre funzionalità.

Testare con questo pacchetto è facile. Ecco una semplice struttura di test che servirà da modello per il test:

genere Casi struttura {
// l'output atteso del test
previsto int

// l'output della funzione
effettivo int

// il valore che stai passando alla funzione
discussione corda
}

Ecco una semplice funzione che converte le stringhe in numeri interi. Il tuo test testerà questa funzione.

importare
instagram viewer
(
"strconv"
)

funzStringaInteger(str corda)int {
intero, err := strconv. Atoi (str)

Se ehm!= zero {
Restituzione0
}

Restituzione numero intero
}

Il StringaInteger la funzione ritorna 0 se c'è un errore sulla conversione e il numero intero se non ci sono errori.

Ecco una funzione di test per StringToInteger:

funzTestStringToInteger(test *test. T) {
ExpectInt := StringToInteger("3")

caseInstance := Casi {
previsto: previstoInt,
effettivo: 3,
}

Se caseInstance.expected == caseInstance.actual {
// un po' di codice qui
} altro {
test. Fallire()
}
}

Il TestStringToInteger la funzione di test accetta a test. T oggetto come argomento. Il previstoInt variabile contiene il risultato della conversione della stringa. Il caseInstance variabile è la struttura Cases istanziata per il test. Il Se istruzione confronta i valori attesi ed effettivi.

Il Fallire il metodo restituisce un test non riuscito nell'istruzione else se i valori non sono uguali.

Vai fornisce a test comando per automatizzare e recuperare informazioni dettagliate su test e programmi.

andare test
andare aiuto alla prova

La pagina della guida fornisce informazioni dettagliate su come vai alla prova lavori:

L'ecosistema Go ospita molte librerie che rendono i test più accessibili e flessibili. C'è un sacco di funzionalità oltre a test pacchetto, compreso regressione e unit test.

Il Pacchetto Testimonianza

Il pacchetto Testimoniare è uno dei framework Go più popolari per testare i pacchetti. Fornisce gli strumenti necessari per scrivere test efficienti, con semplici asserzioni, derisione e funzioni della suite di test.

Testify è adatto per lo sviluppo basato su test poiché il pacchetto fornisce a deridere pacchetto. Ciò fornisce un meccanismo per scrivere oggetti fittizi che puoi usare al posto di oggetti reali durante i test.

Il pacchetto prevede inoltre:

  • Un asserire pacchetto che fornisce metodi utili per scrivere test facili e leggibili.
  • UN richiedere pacchetto simile al asserire pacchetto per la restituzione di risultati booleani.
  • UN suite pacchetto per suite di test con struct.

Testimoniare si estende sul test pacchetto e puoi usare il vai alla prova comando per eseguire i test scritti con il pacchetto Testify.

Testify supporta le versioni Go dalla 1.13. Puoi aggiungere il pacchetto come dipendenza del progetto con questo comando:

andare ottenere github.com/stretchr/testify

Ecco un semplice test di asserzione con il pacchetto Testify asserire pacchetto:

pacchetto principale

importare (
"test"
"github.com/stretchr/testify/assert" // solo per asserire il pacchetto
)

// il nome della funzione dovrebbe essere "Qualcosa" per convenzione
funzProva qualcosa(t *test. T) {
// Affermare l'uguaglianza
asserire. Uguale (t, 123, 123, "dovrebbero essere uguali")

// Affermare la disuguaglianza
asserire. Non uguale (t, 123, 456, "non dovrebbero essere uguali")
}

Il Prova qualcosa la funzione test accetta la struttura del tipo di test di test pacchetto come argomento. Il Pari e Non uguale i metodi sono per asserzioni basate su uguaglianza e disuguaglianza di Testify asserire pacchetto.

Il pacchetto GoConvey

GoConvey è uno strumento di test Go pronto per l'espressività sul test pacchetto. Include terminale (CLI) e browser (GUI) funzionalità di test.

Il pacchetto GoConvey si integra con il test pacchetto, che fornisce un'interfaccia utente Web per lavorare con i test Go nativi. Include anche funzionalità per test di regressione, output personalizzabili e generazione di codice di test. È possibile eseguire test automaticamente, accedere ai formati di copertura in HTML e personalizzare la GUI.

Esegui questo comando nel terminale del tuo spazio di lavoro Go per installare il pacchetto Go Convey.

andare ottenere github.com/smartystreets/goconvey

Ecco un semplice esempio di scrittura di test con il pacchetto GoConvey.

pacchetto principale

importare (
. "github.com/smartystreets/goconvey/convey"
"test"
)

funzProva qualcosa(t *test. T) {
// Passa t solo alle chiamate Convey di livello superiore
Convey("Dichiara variabile", t, funz() {
x := 1

Convey("variabile incrementale", funz() {
x++

Convey("affermare l'uguaglianza", funz() {
Quindi (x, dovrebbe essere uguale, 2)
})
})
})
}

Dovrai importare il trasportare pacchetto utilizzando la notazione punto per il test.

La funzione Convey dal Trasportare il pacchetto aiuta con l'ambito del test. L'ultimo Trasportare la chiamata di funzione nell'esempio di codice afferma l'uguaglianza tra il X variabile e 2, usando il Dovrebbe essere uguale funzione.

Il pacchetto HTTP Expect

Il HTTP Aspetta package è un pacchetto dichiarativo, conciso e di facile utilizzo per i test HTTP end-to-end e API REST di Go. Puoi usarlo per creare richieste HTTP in modo incrementale e ispezionare le risposte e i relativi payload in modo ricorsivo.

Il http aspetta package è un insieme di builder concatenabili per richieste e asserzioni HTTP su risposte HTTP e payload. È costruito sul http, teste altri pacchetti. Il pacchetto funziona bene anche con il built-in httptest pacchetto.

http aspetta fornisce funzionalità per la creazione di richieste con costruzione di URL, intestazioni, cookie e payload. Gestisce le asserzioni di risposta, le asserzioni del carico utile, la stampa graziosa e i WebSocket.

Esegui questo comando nel terminale della tua directory di lavoro per installare il file http aspetta pacchetto.

andare ottenere github.com/gavv/httpexpect

Ecco un semplice esempio di test di una funzione di gestione con il http aspetta pacchetto.

pacchetto principale

importare (
"fmt"
"github.com/gavv/httpexpect/v2"
"rete/http"
"net/http/httptest"
"test"
)

funzesempioHandler()http.Gestore {
Restituzione http. HandlerFunc(funz(scrittore http. ResponseWriter, richiesta *http. Richiesta) {
fmt. Fprintln (sceneggiatore, "Hello World")
})
}

funzTestexampleHandler(t *test. T) {
// crea http. Gestore
gestore := esempioHandler()

// esegui il server usando httptest
server := httptest. NewServer (gestore)
differire server. Chiudere()

// crea un'istanza http attend
aspetta := http aspetta. Nuovo (t, server. URL)

// Funziona?
aspettare. OTTENERE("/").
Aspettare().
Stato (http. StatoOK).JSON().Array().Empty()
}

Il esempioHandler funzione handler restituisce un gestore HTTP per il http aspetta pacchetto. Il TestexampleHandler function dichiara un'istanza della funzione handler. Quindi crea un nuovo server per testare l'endpoint con httptest pacchetto.

Il aspettare variabile è tua http aspetta istanza che colpisce il OTTENERE richiedere il percorso radice dell'endpoint sul server. Il Stato la funzione ritorna il codice di stato (in questo caso, 200) se il test ha esito positivo.

Scrivi test completi e intuitivi

I test fanno molto per valutare l'integrità della tua applicazione e ci sono molti modelli e metodi di test che puoi usare per i tuoi programmi. Al centro del tuo flusso di lavoro di test, dovresti scrivere test intuitivi che puoi migliorare man mano che i tuoi programmi cambiano nel tempo.