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
}
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 := 1Convey("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.