A szoftvertesztelés olyan folyamat, amely eszközök, szkriptek vagy manuális segítségével értékeli a programok mérőszámait.

A tesztelés a szoftverfejlesztési ciklus szerves része. Az átfogó tesztelés mélyreható információkat nyújt az alkalmazás integritásával kapcsolatban.

Megelőzheti és javíthatja a hibákat tesztek írásával, a program teljesítményének kiértékelésével és a munkafolyamatok automatizálásával.

Kezdő lépések a Go-ban való teszteléssel

A Go szabványos könyvtára fejlődő tesztelés csomag. Az tesztelés A csomag benchmarking, fuzzing, kihagyás, résztesztelés, al-benchmarking és egyéb funkciókkal rendelkezik.

A tesztelés ezzel a csomaggal egyszerű. Íme egy egyszerű tesztstruktúra, amely modellként szolgál a teszthez:

típus Esetek struct {
// a teszt várható kimenete
várt int

// a függvény kimenete
tényleges int

// a függvénynek átadandó érték
érv húr
}

Íme egy egyszerű függvény, amely a karakterláncokat egész számokká alakítja. A teszt ezt a funkciót teszteli.

import (
"strconv"
)

funcStringToInteger(str húr)int {
integer, err := strconv. Atoi (str)

ha hiba! = nulla {
Visszatérés0
}

instagram viewer

Visszatérés egész szám
}

Az StringToInteger függvény visszaadja 0 ha hiba van az átalakításkor, és az egész számot, ha nincs hiba.

Íme egy tesztfüggvény a StringToIntegerhez:

funcTestStringToInteger(teszt * tesztelés. T) {
expectInt := StringToInteger("3")

caseInstance := Esetek {
várható: VárhatóInt,
tényleges: 3,
}

ha caseInstance.expected == caseInstance.actual {
// itt valami kód
} más {
teszt. Sikertelen()
}
}

Az TestStringToInteger tesztfüggvény elfogadja a tesztelés. T tárgyat érvként. Az vártInt változó tartalmazza a karakterlánc-konverzió eredményét. Az caseInstance változó a teszt példányos Cases struktúrája. Az ha kimutatás összehasonlítja a várható és a tényleges értékeket.

Az Sikertelen metódus sikertelen tesztet ad vissza az else utasításban, ha az értékek nem egyenlőek.

Go biztosít a teszt parancs a tesztek és programok automatizálásához és információk lekéréséhez.

megy teszt
megy segít teszt

A súgóoldal részletes információkat tartalmaz a módjáról menj tesztelni művek:

A Go ökoszisztéma számos könyvtárnak ad otthont, amelyek elérhetőbbé és rugalmasabbá teszik a tesztelést. Rengeteg funkció van ezen kívül tesztelés csomag, beleértve regressziós és egységteszt.

A Tanúságtétel csomag

A Testify csomag az egyik legnépszerűbb Go keretrendszer a csomagok tesztelésére. Eszközöket biztosít a hatékony tesztek írásához, egyszerű állításokkal, gúnyolódással és tesztelőcsomag-funkciókkal.

A Testify alkalmas tesztvezérelt fejlesztésre, mivel a csomag a gúny csomag. Ez egy olyan mechanizmust biztosít álobjektumok írásához, amelyeket valódi objektumok helyett használhat a tesztelés során.

A csomag a következőket is tartalmazza:

  • An állítja csomag, amely hasznos módszereket kínál barátságos, olvasható tesztek írásához.
  • A igényelnek csomaghoz hasonló állítja csomag a logikai eredmények visszaadásához.
  • A lakosztály csomag tesztcsomagokhoz struktúrákkal.

Tanúskodni kiterjed a tesztelés csomagot, és használhatja a menj tesztelni parancsot a Testify csomaggal írt tesztek futtatásához.

A Testify támogatja a Go 1.13-as verzióit. A csomagot projektfüggőségként adhatja hozzá ezzel a paranccsal:

megy töltse le a github.com/stretchr/testify webhelyet

Íme egy egyszerű állítási teszt a Testify csomaggal állítja csomag:

csomag fő-

import (
"tesztelés"
"github.com/stretchr/testify/assert" // csak assert csomag
)

// A függvény nevének megegyezés szerint "Valami"-nek kell lennie
funcTeszt Valamit(t * tesztelés. T) {
// az egyenlőség érvényesítése
állítja. egyenlő (t, 123, 123, "egyenlőnek kell lenniük")

// egyenlőtlenség állítása
állítja. NotEqual (t, 123, 456, "nem szabad egyenlőnek lenniük")
}

Az Teszt Valamit teszt függvény a tesztelési típusú struktúrát veszi fel tesztelés csomagot érvként. Az Egyenlő és Nem egyenlő módszerek az egyenlőségen és az egyenlőtlenségen alapuló állításokhoz valók a Testify-tól állítja csomag.

A GoConvey csomag

GoConvey egy Go tesztelő eszköz, amely a kifejezőképességre alapozott tesztelés csomag. Magába foglalja terminál (CLI) és böngésző (GUI) tesztelési funkcionalitás.

A GoConvey csomag integrálódik a tesztelés csomag, amely webes felhasználói felületet biztosít a natív Go-tesztekkel való munkához. Regressziós tesztek, testreszabható kimenetek és tesztkód generálási funkciókat is tartalmaz. Automatikusan futtathat teszteket, hozzáférhet a lefedettségi formátumokhoz HTML-ben, és testreszabhatja a grafikus felhasználói felületet.

Futtassa ezt a parancsot a Go munkaterület termináljában a Go Convey csomag telepítéséhez.

megy töltse le a github.com/smartystreets/goconvey webhelyet

Íme egy egyszerű példa tesztírásra a GoConvey csomaggal.

csomag fő-

import (
. "github.com/smartystreets/goconvey/convey"
"tesztelés"
)

funcTeszt Valamit(t * tesztelés. T) {
// Csak a t adja át a legfelső szintű Convey hívásoknak
Convey("Változó deklarálása", t, func() {
x := 1

Convey("növekmény változó", func() {
x++

Convey("az egyenlőséget érvényesíteni", func() {
Tehát (x, ShouldEqual, 2)
})
})
})
}

Importálnia kell a közvetíteni pont jelölést használva a teszthez.

A Convey funkció a közvetíteni csomag segít a teszt hatókörének meghatározásában. Az utolsó közvetíteni függvényhívás a kódpéldában egyenlőséget állít a x változó és 2, használni a ShouldEqual funkció.

A HTTP Expect csomag

Az HTTP várható A csomag egy könnyen használható, tömör, deklaratív csomag a Go végpontok közötti HTTP és REST API teszteléséhez. Használhatja HTTP-kérések növekményes létrehozására, valamint a válaszok és azok hasznos terhelésének rekurzív vizsgálatára.

Az httpexpect A csomag egy láncolható építőkészlet a HTTP-kérésekhez és a HTTP-válaszokra és a hasznos adatokra vonatkozó állításokhoz. Arra épül http, tesztelés, és egyéb csomagok. A csomag a beépítettvel is jól működik httpteszt csomag.

httpexpect funkcionalitást biztosít a kérések létrehozásához URL-szerkesztéssel, fejlécekkel, cookie-kkal és hasznos adatokkal. Kezeli a válasz állításokat, a hasznos teher állításait, a szép nyomtatást és a WebSocketeket.

Futtassa ezt a parancsot a munkakönyvtár termináljában a telepítéshez httpexpect csomag.

megy töltse le a github.com/gavv/httpexpect webhelyet

Íme egy egyszerű példa egy kezelőfunkció tesztelésére a httpexpect csomag.

csomag fő-

import (
"fmt"
"github.com/gavv/httpexpect/v2"
"net/http"
"net/http/httpteszt"
"tesztelés"
)

funcexampleHandler()http.Kezelő {
Visszatérés http. HandlerFunc(func(író http. ResponseWriter, kérje a *http. Kérés) {
fmt. Fprintln (író, "Hello World")
})
}

funcTesztexampleHandler(t * tesztelés. T) {
// http létrehozása. Kezelő
kezelő := example Handler()

// futtassa a szervert a httptest segítségével
szerver := httpteszt. NewServer (kezelő)
elhalasztja szerver. Bezárás()

// http várható példány létrehozása
elvárás := httpexpect. Új (t, szerver. URL)

// működik?
elvárják. KAP("/").
Expect().
Állapot (http. StatusOK).JSON().Array().Empty()
}

Az exampleHandler kezelő függvény egy HTTP-kezelőt ad vissza a httpexpect csomag. Az TesztexampleHandler függvény deklarálja a kezelő függvény egy példányát. Ezután létrehoz egy új kiszolgálót a végpont teszteléséhez a httpteszt csomag.

Az elvárják változó a tiéd httpexpect példány, amely eltalálja a KAP kérje végpont gyökérútvonalát a kiszolgálón. Az Állapot függvény visszaadja az állapotkódot (ebben az esetben, 200), ha a teszt sikeres.

Írjon átfogó és intuitív teszteket

A tesztek nagyban hozzájárulnak az alkalmazás integritásának értékeléséhez, és számos tesztelési mintát és módszert használhat a programokhoz. A tesztelési munkafolyamat középpontjában olyan intuitív teszteket kell készítenie, amelyeken javíthat, ahogy a programok idővel változnak.