Adatvezérelt tesztelés (7 példát tartalmaz munkaprocesszálásra), jazzteam szoftver

Adatvezérelt Testing (DDT) - megközelítés épület / építészet automatizált teszteket (egység, az integráció, a leggyakrabban vonatkozik backend vizsgálat), ahol a tesztet képes arra, hogy egy sor bemenettel és egy referencia eredmény vagy referencia állapot. amellyel össze kell hasonlítani a bemeneti paraméterek futtatásakor kapott eredményt. Ilyen összehasonlítás az ilyen vizsgálat kimutatása. Továbbá, a bemeneti paraméterek részeként a teszt végrehajtási lehetőségei vagy a logikát befolyásoló zászlók is átadhatók.

Adatvezérelt tesztelés (7 példát tartalmaz munkaprocesszálásra), jazzteam szoftver

Gyakran lefedi a rendszert vagy a módszer nagyon bonyolult, és lehetetlen megadni az explicit referenciaértékeket, itt beszélhetünk a referencia kimeneti állapotokról. Néha meg kell értenie, mi lesz a bemeneti leírás, és mi lesz a kimenet. Például:

  • A beviteli leírás része lehet az adatbázis állapota. azaz a DDT funkcionális tartalmazza az adatbázis készletet. Ezt az állapotot SQL dumpból lehet venni, és programozva generálhat java-ra (a második mód könnyebben karbantartható). Lásd a 4. és 6. példát.
  • A referencia kimeneti állapot egy része ismét az adatbázis állapota lehet. De előfordul, hogy minden sokkal bonyolultabb, és ellenőriznünk kell, nem csak az állam, hanem egy sor hívások, esemény, és még az összefüggésben minden egyes hívás után a rendszeren belül, akkor egy jó ötlet lehet építeni hívási fa alatt a sweep teszt. azaz a szükséges formátum (például XML vagy JSON) naplózása, majd a referenciaadatok lesznek a korábban tesztelt hívásfák. By the way, a referencia hívás fa írható az első futás, majd kézzel ellenőrizni. hogy ez a helyes, akkor már tesztekhez használják. Lásd a 3. és 7. példát.

Használat előnyei

Vagy egy ilyen teszt készítője munkatársainak adhat munkatársait, amellyel egyszerűen elkészítheti a referenciaértékeket. Ie célszerű elkerülni a programozóktól származó adatkészletek létrehozásának függését, és az automatákat, a projektben bárki képes legyen felkészíteni őket.

Továbbá könnyebbé válik a projektmenedzser számára a fejlesztés irányítása, nem kell az algoritmusok lényegét, sőt a kód minőségét is, a DDT-tesztek eléggé elegendőek ahhoz, hogy továbblépjenek.

A DDT felhasználás, furcsa módon, lehet használni a projektek a kevésbé képzett mérnökök, mint a jó borító nehéz területen használnak DDT-t, amint minden azt mutatja, és az emberek kárára Continuous Integration and sweep vizsgálatokat helyben vagy a Dev környezet, lehetősége van arra, hogy meghatározza a hozott problémák .

Tudomásul veszem, hogy a Robot Framework-tesztek bizonyos DDT-orientált megközelítéssel és sok előnyökkel járnak.

A DDT legegyszerűbb formája a JUnitben paraméterezett teszt, amikor a teszteléshez adatkészleteket szolgáltatnak a Data Providers segítségével.

DDT - nem csodaszer, de az illetékes alkalmazások a megfelelő helyeken nagyon segítenek.

Hogyan lehet megérteni, mikor kell létrehozni a DDT-t?

Hogyan lehet DDT-t létrehozni?

Legtöbbször elegendő egy hurok létrehozása a fő teszten, valamint a kimeneti adatok és a referenciaértékek összehasonlítása, valamint a jelentések készítése naplózással vagy más eszközökkel.

De nem triviális esetekben építhetünk egy architektúrát a DDT létrehozásának szükségessége köré. Lásd a 3. és 7. példát.

Feladat. Szám átírása egy digitális rekordba egy stringben. Például 134345 "százharmincnéháromszázötven". * Tekintsük a lefordításokat - a befejeződések különbsége (például kettő és kettő).

  • Az algoritmusnak annyi tetszőleges számot kell működnie, mint a bitek értékei - millió, ezer, milliárd stb. - ki kell venni a könyvtárból, például egy szövegfájlt.
  • Ügyeljen arra, hogy hozzon létre egy Adatvezérelt teszt (I felhasználóként, képesnek kell lennie arra, hogy belépjen több szett 1.Number 2.pravilny benchmark eredmények, a vizsgálati függetlenül megvizsgálja minden sorozat, és azt mondja, hogy ez nem igaz), ami azt bizonyítja, hogy az algoritmus működik. Használja a JUnit alkalmazást.
  • Ha lehetséges, használjon OOP-ot.

Feladat. Végezze el a HTML-elemzőket a semmiből. Vagy hajtsa végre a DOM-modellben a sortörést.

Egy mérnök így fog menni. Időt kér arra, hogy kivonja a specifikációt. Aztán megkéri, hogy gondoljon az építészetre. Akkor prototípusokat fog csinálni. Valahogy teszteljük őket. Mindezek az idők, napok, hetek, menedzserek és csapatok nem tudják ellenőrizni állapotát a gyakorlatban.

Az első nap második mérnöke elvégzi az első egység tesztet, amely ellenőrzi a legegyszerűbb esetet - egy üres karakterláncot, vagy egy üres tagot , vagy valami más egyszerű. És minden nap új államokba dob, kibővítve a kódját. Logikusan ez lezárja a DDT, és hagyja, hogy az egész csapat, a vezetők és a tesztelők, hogy dobja a különböző változatai a HTML és a referencia eredmény (pl a DOM fában objektumok írhatók az első nekifutás az algoritmus és ellenőrzött kézzel). Ebben a megközelítésben a felhalmozott esetben megváltoztatja az algoritmus és a logika nem hozza le a korábbi adatállományok, és lehetséges, hogy világosan megértsük, mi már megvalósult. Sőt, a beállított bemeneti adatok és referencia értékek sorolhatunk mappa, almappák és így hozza létre a dokumentációt elemző.

3. Az XML2Selenium tesztelésének automatizálására szolgáló platform tesztelésének módszere

Az XML2Selenium plug-ineken és a plug-inek interakcióján alapuló rendszer. A bővítmények eseményeket generálnak, feliratkozhatnak más plug-inek eseményeire. Vagyis a felhasználó rejtett bonyolult kölcsönhatásából.

Az XML2Selenium gördülhet az XML formátumú teszteken, és tesztelheti a Web UI alkalmazást (belül használjuk a Selenium / Web Driver programot).

Természetesen bármilyen változás a rendszer kernel tudja törni a logika interakció, hogy megöli visszafelé kompatibilis (amikor az új plug-inek), sőt, a lényege a rendszer szükséges a munka Senior-mérnökök, a költség nem magas volt.

Ezt a megközelítést alkalmaztuk. Úgy vezették be egy speciális JVM paraméter, amely kérte, hogy tartsa a mag összes hívási fa és az eseményt ezt a tesztet, mint a regisztráció, inicializálás, és a teljes életciklusa plug-inek, valamint a kontextus között eltelt dugó után atomi művelet teszt. Így kaptunk által generált egy képet, amely tartalmazta a teljes leadott a rendszer viselkedését, itt egy példa egy ilyen fájl:

Adatvezérelt tesztelés (7 példát tartalmaz munkaprocesszálásra), jazzteam szoftver

Ha egy fejlesztő vagy tesztelő manuálisan ellenőrizzük, hogy a fa erre a tesztre - helyesen, akkor elküldi a beállított referencia értékeket, és így tovább Continuous Integration szerveren Jenkins mester ágat minden futó teszt képest egy elemzési fa, ami nagyon stabil állapotban a rendszer .

4. Az egyik projekt végrehajtására alkalmazott módszer az adatok feltöltésének tesztelésére

Ebben az esetben a projektnek meg kellett vizsgálnia, hogy az adatleírási komponens milyen jól működik. A kirakodás nem volt triviális, az adatbázis állapotától függött, és mindig hibák jelentek meg. Meg lehet mondani, hogy a csapat nem ellenőrizte az összetevő stabilitását. Szükséges volt radikálisan növelni stabilitását.

A megoldás a DDT használata volt. A bemeneti paraméter egy XML-formátumú adatbázis dump. A referenciaérték a korábban ellenőrzött letöltési fájl, amely minden bizonnyal hibamentes. Így a tesztelés az adatbázis különböző verzióinak létrehozására korlátozódott, valamint a referenciafájlok ellenőrzésére és ilyen tesztkészletek létrehozására.

A projektet elegendő regresszióval látták el. Minden alkalommal, amikor egy hiba jelent meg a kirakodásban, egy újabb adatsort adtak hozzá, amely a helyzetet lefedte. A készletek felhalmozódtak, létük nem engedte meg új hibákat, és egy idő után az összetevő stabilizálódott.

Ha jól emlékszem, már végre, hogy a kívánt állam a Java adatbázis, hogy ne függjön a guba, és frissítse őket állandóan változik sémát.

5. Valódi projekt - a hibakezelés tesztelése összetett nyelvtanban

A projekt lényege a következő volt. Részéről a kliens a szerver jött egy teljes leírását XML nem csak a felületen, ami szükséges, hogy render, hanem a viselkedés, amely átvitt bináris formátumban ugyanabban az XML. Vagyis a viselkedés bármi lehet, van egy plug-in rendszer.

Ez az XML viszonylag összetett szintaxis volt, és csapatunk független volt a háttérfejlesztőktől. Meg kellett védenünk magunkat a rossz XML-től, csak akkor kezdtünk el felépíteni az UI-t, amikor 100% -uk értette, hogy az XML helyes.

Ehhez DDT-t használtunk. Nagy mennyiségű XML bemeneti változatot hoztunk létre, beleértve a helytelen, helytelen, és ellenőrizzük, hogy a szükséges kivételek a szükséges üzenetekkel ki vannak dobva.

Adatvezérelt tesztelés (7 példát tartalmaz munkaprocesszálásra), jazzteam szoftver

Így a bemeneti paraméter - az XML szabvány állam - a fajta kivétel az üzenetet, vagy akár csak részben a stack trace. Ez hozta létre több száz teszt készletek, és minden alkalommal, amikor van valami ebben a formában voltak új paraméterek, vagy voltak új kivételek és hibák - Tesztek bővült. A projekt végén ez volt a rendszer legstabilabb része.

Adatvezérelt tesztelés (7 példát tartalmaz munkaprocesszálásra), jazzteam szoftver

Ez a kép egy olyan Excel-fájl egy részét mutatja, amelyben a bemeneti paraméter és a referencia-viselkedés - esetünkben a kivételekkel (típus és üzenet) kapcsolatos információk vannak megadva.

6. Komplex adatbetöltés tesztelése. A tárolt eljárások logikájának elkülönítése

Az egyik projekt esetében az adatokat CSV (nagyon összetett belső formátumú) formátumban töltik le az adatbázisba. Ráadásul megvan a régi kód, és a terhelés logikája a tárolt eljárásokban történik, amelyekben körülbelül tízezer vonal van. A feladat az volt, hogy stabilizálják a kirakodás e komponensét, és regressziós tesztet biztosítsanak.

Amint a 4. példa adatkiírás szoktuk DDT és bemeneti paraméterek 1) az állam az adatbázis (szoktuk lerakó SQL formátumban), és 2) a letöltendő fájl. Referenciaértékként egy XLS-fájlt használtunk, amely a letöltés után az adatbázis szükséges adatainak tartalmát képviselte.

Minden olyan hiba, ami gyakran történt, DDT-be helyeztük.

Hamarosan kiderült, hogy a javítások nem befolyásolják az utolsó hibákat, és a hibákat, hogy egyre kevésbé, és az ellenőrzésre - magasabb lett, mert most már lehet, hogy gyorsan és hatékonyan játszani őket automatikusan azáltal, hogy új készletek.

Ebben a projektben az idő hiánya miatt nyers dömpingeket használtunk, ezért a jövőben a rendszer potenciális támogatása költségeket igényel.

Amikor létrehoz egy SOA platform (azaz a keretet SOA projektek) vizsgálata feladatul kapta, hogy végezzen a rendszer, buszrendszer, játék minden lehetséges helyzeteket, amelyek során előforduló SOA projekt teljes életciklusa alatt.

A feladat végrehajtásához létrehozott egy olyan keretrendszert, amely lehetővé teszi a rendszer leírása alapján történő telepítését - valójában ezek a különböző virtuális kiszolgálók, amelyek a SOA platformon keresztül kapcsolódnak egymáshoz. Mindegyik kiszolgáló telepítette a rendszerbuszhoz csatlakozó alkalmazást, és ügyesen végrehajtotta a kapott parancsfájlokat. A továbbított parancsfájlokban a kívánt viselkedést és a szükséges szkriptet varrtuk össze.

Így a bemeneti adatok voltak: 1) fájl leíró topológia a rendszer, és 2) egy szkriptkésztletet minden csomópont a topológia, aki azt mondta, hogy előfordul minden csomópont, és a referencia értékek fa (egyfajta napló) üzeneteket dolgoz egy ilyen rendszerben.