Időmilliomos Varázs Ló, avagy variációk tesztadatokra - PICT 2. rész - Passed Blog skip to Main Content
+36 1 789 2525+36 70 387 3566

Időmilliomos Varázs Ló, avagy variációk tesztadatokra – PICT 2. rész

Tartalomjegyzék

Tippek-trükkök
Szőke Ármin

Robot Framework: Adatvezérlés 1.

Robot Framework tippek-trükkök Bevezetés Bocsánat, ez a rész csak egy felvezető a valódi tipp és trükk előtt. Reményeim szerint azért ezt is elolvasod. 2000 ügyfél,

Blog cikkek
Szőke Ármin

JMeter: Eredmény elemzés alapozás

JMeter sorozat Bevezetés Jmeter sorozatunkban már volt szó: Az alapokról ITT Rögzítésről és visszajátszásról ITT HTTP(s) request létrehozásáról ITT És már hallgatóztunk is a Listener-ek

Blog cikkek
Szőke Ármin

JMeter: Listener

JMeter series Introduction In order to be able to evaluate the tests, we need something that can display the results. In Jmeter these are called

|
|
|
Időmilliomos Varázs Ló, avagy variációk tesztadatokra – PICT 2. rész
Folytatjuk a PICT sorozatot, ezúttal a második résszel!

Tipp az olvasáshoz

Sok példa szerepel ebben a cikkben. Sok példa után vagy egy kis matekozás, ahol megmagyarázom, hogy miért azok a darabszámok jönnek ki, amik kijönnek. Ezeket a részeket nyugodtan ugord át, ha nem érdekel a matek. Ugyanakkor ezek a részek segíthetnek jobban megérteni a PICT működését.

Szuperhősök testreszabása (az előző rész tartalma)

Egy számítógépes játékban a hősöket testreszabhatjuk. A következő táblázat tartalmazza a lehetőségeinket:

Hős Izom TódorNagy ZolóSebes ÜlésVarázs Ló
FegyverNincsPéklapátBuzoGányBűzBombaMosatlan ZokniÁsó-Kapa-Nagyharang
RuhaNincsÁlca TálcaVaskádGányGúnyaIzomPóló
KépességNincsRugólábPacaCérnahangIdőmilliomosÁlomgyárosVágyokozó

A kérdés, hogy hogyan teszteljük le a testreszabás funkciót?

Az előző részben a Microsoft PICT eszközével csináltunk olyan kombinációkat, ahol a paraméterpárokra lőttünk. Mivel a gyakorlat azt mutatja, hogy a hibák valamilyen paraméterpár kombinációjából adódnak ezért ez egy jó közelítése a szükséges tesztadat kombinációknak. Az ritkábban fordul elő, hogy több paraméter együttállása okozza a gondot, de ez sem kizárható.

A rész végén feltettünk néhány kérdést:

Mi van akkor, ha Izom Tódor-ra mindenképpen kell ruha? Az is megoldható, hogy ha nincs ruha, nincs fegyver sem? Ha ebben a tesztkörben csak Varázs Ló-vat akarjuk tesztelni Rugóláb képességgel, akkor mit tudunk tenni? Arra is van megoldás, ha 1 hősnek 3 különböző képességet kell választani? Hogyan lehet multiplayer teszteléshez 2 hőst egyidejűleg előállítani?

Ezek a kérdések vagy speciális ügyféligényből, vagy valamilyen plusz kockázatból adódnak. Ebben a részben azt nézzük meg, hogy ezekkel hogyan bánik el a PICT.

Ne legyen meztelen a hős

Izom Tódor nem lehet ruhátlan. Persze nagyon jó negatív teszteset, ha mégis megpróbáljuk, de most egyelőre csak olyan tesztadatokat szeretnénk, amik ennek a feltételnek megfelelnek. Nos a PICT ezt is tudja:

Hős: Izom Tódor,Nagy Zoló,Sebes Ülés,Varázs LóFegyver: Nincs,Péklapát,BuzoGány,BűzBomba,Mosatlan Zokni,Ásó-Kapa-NagyharangRuha: Nincs,Álca Tálca,Vaskád,GányGúnya,IzomPóló
Képesség: Nincs,Rugóláb,Paca,Cérnahang,Időmilliomos,Álomgyáros,Vágyokozó
IF [Hős] = "Izom Tódor" THEN [Ruha] in {"Álca Tálca", "Vaskád", "GányGúnya", "IzomPóló"};

Az utolsó sort lehet egyszerűbben is írni:

IF [Hős] = "Izom Tódor" THEN [Ruha] <> "Nincs";

Kapott rekordok száma: 44.

Ne álljunk meg itt, adjunk hozzá még feltételt: Ha nincs ruha, ne legyen fegyver sem. Adjuk hozzá még ezt a sort is:

IF [Ruha] = "Nincs" THEN [Fegyver] = "Nincs";

Mindkét feltétel teljesülése esetén a kapott rekordok száma: 46.

Megjegyzés: A rekordok száma attól is függ, hogy milyen eltolást alkalmazunk. A PICT többféleképpen is képes az adott feltételeknek megfelelő adathalmazt előállítani. Kérhetjük azt, hogy ez véletlenszerű legyen vagy kérhetjük azt is, hogy ez az N.-dik összeállítás legyen. Alapértelmezetten az első megfelelőt kapjuk, ami nem biztos, hogy a legkevesebb rekordot jelenti. Az előző részben bemutatott /r kapcsoló segítségével lehet véletlenszerű vagy N.-dik összeállítást kérni. Házi feladat: Keress olyan megoldást, ahol a rekordok száma kevesebb, mint 46! (Segítség: Nem kell legyártani a változatokat, mert a /s kapcsolóval csak statisztikát kapsz, legyártott adatsorok nélkül. Így gyorsabb lehet a keresés.)

Oké, megy ez, nem is olyan nehéz. Annyi ilyen feltételt írunk, amennyit csak akarunk. Nézzünk valami mást is.

Feltétlenül Rugólábas Varázs Ló

Érvényes szabályt meg lehet adni feltételek nélkül is. Például, ha csak a Varázs Ló-val tesztelnék a Rugóláb képességet, akkor az utolsó sorokba elég lenne ezt írni:

[Hős] = "Varázs Ló";
[Képesség] = "Rugóláb";

Vagy akár egy sorba is össze lehet vonni:

[Hős] = "Varázs Ló" and [Képesség] = "Rugóláb";

Kapott rekodok száma: 30.

Az eredmény jelzi számunkra, hogy a bemenetben „erős” korlátozó megkötések vannak, így a kimenet bizonyos értékeket nem tartalmaz. Ezeket az értékeket ki is logolja.

Három a magyar igazság, legyen ennyi képesség

Megjegyzés: Ennél a feladatnál a legelső feladatból indulunk ki, így a meztelenségre és a Varázs Ló-ra tett szűkítésekre írt szabályokat már nem alkalmazzuk.

Azt szeretnénk, hogy egy hősnek lehessen három különböző képessége. Ehhez a „Képesség” tulajdonságot meg kell többszöröznünk és valahogy el kell magyaráznunk a PICT-nek, hogy

  • mindig három különböző képességre van szükségünk
  • ha egy képességhármast már kiválasztott, akkor ugyanennek a képességhármasnak más kombinációját már nem szeretnénk. (Tehát, ha van A,B,C képesség, akkor a C,A,B hármasra már nincs szükségünk)

A három képesség

Az első, amit meg kell oldanunk, hogy legyen miből válogatnia a pictnek. Ezt megoldhatjuk úgy, hogy a képesség sor helyett ezt a három sort írjuk be:

Képesség1: Nincs,Rugóláb,Paca,Cérnahang,Időmilliomos,Álomgyáros,Vágyokozó
Képesség2: Nincs,Rugóláb,Paca,Cérnahang,Időmilliomos,Álomgyáros,Vágyokozó
Képesség3: Nincs,Rugóláb,Paca,Cérnahang,Időmilliomos,Álomgyáros,Vágyokozó

Ez működik, de lehet szebben is:

Képesség1: Nincs,Rugóláb,Paca,Cérnahang,Időmilliomos,Álomgyáros,Vágyokozó
Képesség2: <Képesség1>
Képesség3: <Képesség1>

Megjegyzés: Most nincs rá szükségünk, de a szebb megoldás tovább bonyolítható, ha például a 2. képesség többféle lehetne, mint az első. Pl.:

Képesség2: <Képesség1>, Alakváltás

A változatosság gyönyörködtet

Most még azt kell megoldani, hogy három különböző képességünk legyen. Első nekifutásra ez jut az eszünkbe:

[Képesség1]<>[Képesség2] and [Képesség1]<>[Képesség3] and [Képesség2]<>[Képesség3];

Ez nem rossz, mert egy rekordba így nem kerül azonos képesség, de sajnos többször is visszaadja ugyanazt a képesség-hármast. Valahogy meg kell akadályoznunk, hogy ugyanannak a tesztadathármasnak ne forduljon elő másik variációja.

Ennek a megoldásához arra kell rájönni, hogy ha volt már A,B és nem akarunk B,A-t, akkor azt úgy adhatjuk meg, hogy az első adat legyen kisebb, mint a második. (Itt a kisebb a betűrendet jelenti). Ez valójában jól működik két adatnál több esetben is. A megoldás tehát (az első nekifutás helyett):

[Képesség1]<[Képesség2] and [Képesség2]<[Képesség3];

44 rekordot kapunk eredményül. (Ez lehet több vagy kevesebb is attól függően, hogy „honnan” indít a PICT. A /r kapcsolóval lehet más variációkat is lekérni.)

A feltételeink miatt, a Képesség1-be nem kerülhet olyan érték, aminél nem talál két nagyobb értéket mellé, illetve a Képesség3-ba nem kerülhet olyan érték, aminél nem talál két kisebbet és a Képesség2-be nem lehet olyan érték, aminél nem talál egy kisebbet és egy nagyobbat. Ezt a futásnál ki is jelzi nekünk.

Megjegyzés: A betűrend legnagyobb sajnálatunkra nem a magyar ABC szerinti. Az „Álomgyáros” később van, mint a „Nincs”, mert az Á nem az A utáni karakter, hanem valahol a Z után van. Ez az eredményen is látszik, de ettől még ez az eredmény pont megfelel a feltételeinknek.

Jelenleg páronként keressük az összes kombinációt, de előfordulhat, hogy a kockázatok miatt szükség lenne az összes lehetséges képességhármas tesztelésére.

Csoportban az erő

Az összes különböző képességhármast előállíthatjuk akár úgy is, hogy veszünk egy külön állományt, amibe csak a képességeket rakjuk és a képességekre vonatkozó feltételünket, majd a PICT futtatásakor /o:3 paramétert használunk.

Ez esetben pl. a kepesseg.txt fájl tartalma:

Képesség1: Nincs,Rugóláb,Paca,Cérnahang,Időmilliomos,Álomgyáros,Vágyokozó
Képesség2: <Képesség1>
Képesség3: <Képesség1>
[Képesség1]<[Képesség2] and [Képesség2]<[Képesség3];

A futtatandó parancs:

pict kepesseg.txt /o:3

35 rekordot kapunk.

Megjegyzés annak, aki szereti a matekot: Ha szeretsz számolni, akkor ez a lottóhúzáshoz hasonló feladat. 7 értékből „kihúzunk” 3-at. Levezetés: Az első húzást 7 féle számból tehetjük meg, a másodikra csak 6 szám marad és az első helyre 5 számból választhatunk: 7x6x5=210. Viszont a sorrend nem fontos, nekünk egyfajta sorrend kell (növekvő számsorrend), ezért meg kell vizsgálni, hogy a 3 kihúzott értéket hányféleképpen állíthatjuk sorrendbe. (3 értékből hányféleképpen húzhatunk ki 3 értéket) Ez 3x2x1=6. Megfogalmazva: a 210 féle húzásból minden sorból van 6 ugyanolyan, csak más sorrendben. Tehát az eredményünk 210/6=35.

Így viszont a hős, fegyver, ruha hármasokkal még ezeket össze kell variálni. Biztos ez is megoldható, de nagyon “pepecselős”, nehézkes vagy Excel programozós melónak tűnik. Ennél lehetünk lustábbak is. A képességeket külön csoportként is tudjuk kezelni egy kiinduló adatállományon belül. Ehhez, közvetlenül az adatsorok után sorba (még a feltételek elé) ezt kell beírni (tesztadat.txt):

{ Képesség1, Képesség2, Képesség3 } @ 3

Tehát a txt fájl tartalma:

Hős:      Izom Tódor,Nagy Zoló,Sebes Ülés,Varázs Ló
Fegyver:  Nincs,Péklapát,BuzoGány,BűzBomba,Mosatlan Zokni,Ásó-Kapa-Nagyharang  
Ruha:     Nincs,Álca Tálca,Vaskád,GányGúnya,IzomPóló
Képesség1: Nincs,Rugóláb,Paca,Cérnahang,Időmilliomos,Álomgyáros,Vágyokozó
Képesség2: <Képesség1>
Képesség3: <Képesség1>

{ Képesség1, Képesség2, Képesség3 } @ 3

[Képesség1] < [Képesség2] and [Képesség2] < [Képesség3];

A futtatandó parancs:

pict tesztadat.txt

Vagy ha szeretnénk CSV-be kiexportálni:

pict tesztadat.txt > eredmeny.csv

210 esetet kapunk. Igen ez sok, de mi akartuk, hogy sok legyen. Ha a 35 különböző képességkombinációhoz csak a 6 fegyvert hozzápárosítjuk, már 210 esetünk van, szép, hogy ezt a számot tudja úgy tartani, hogy a többi paraméterből is elkészül a párok összevariálása.

Multiplayer

Két hőst akarunk egy rekordban. Az előzőek ismeretében ez nem gond. Fel kell venni „Hős2”, „Ruha2”, „Fegyver2”, stb. paramétereket.  Feltételnek megadhatjuk, hogy a két hősnek mások legyenek a konkrét értékei. Ezt most rátok bízom, oldjátok meg házi feladatként. 😊

Van még?

Ez jó móka!

  • Ha szeretnéd kipróbálni a PICT „telepítése” nélkül, akkor ezen a weboldalon megteheted:

https://pairwise.yuuniworks.com/

Megjegyzés: Ez az  oldal sajnos ékezetes karaktereket nem kezel, így a fenti példák csak az ékezetes karakterek eltávolítása után használhatók itt.

  • Ha a PICT összes funkciójának a leírása érdekel, akkor a hivatalos oldalt tanácsolom, ahol szintén példákon keresztül mutatják be ezeket:

https://github.com/Microsoft/pict/blob/main/doc/pict.md

  • Ha szeretnél alaposabban elmélyedni a témában (páronkénti tesztelés és a PICT képességei), akkor a következő olvasnivalót tanácsolom:

https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.104.1145&rep=rep1&type=pdf

Jó tesztadatot mindenkinek!

Hajrá! 😊

Megosztás

Facebook
LinkedIn
Twitter

Nem szeretnél lemaradni az új bejegyzésekről?

Ezeket olvastad már?

Tippek-trükkök

Robot Framework: Adatvezérlés 1.

Robot Framework tippek-trükkök Bevezetés Bocsánat, ez a rész csak egy felvezető a valódi tipp és trükk előtt. Reményeim szerint azért ezt is elolvasod. 2000 ügyfél,

Blog cikkek

JMeter: Eredmény elemzés alapozás

JMeter sorozat Bevezetés Jmeter sorozatunkban már volt szó: Az alapokról ITT Rögzítésről és visszajátszásról ITT HTTP(s) request létrehozásáról ITT És már hallgatóztunk is a Listener-ek

Tippek-trükkök
Szőke Ármin

Robot Framework: Adatvezérlés 1.

Robot Framework tippek-trükkök Bevezetés Bocsánat, ez a rész csak egy felvezető a valódi tipp és trükk előtt. Reményeim szerint azért ezt is elolvasod. 2000 ügyfél,

Blog cikkek
Szőke Ármin

JMeter: Eredmény elemzés alapozás

JMeter sorozat Bevezetés Jmeter sorozatunkban már volt szó: Az alapokról ITT Rögzítésről és visszajátszásról ITT HTTP(s) request létrehozásáról ITT És már hallgatóztunk is a Listener-ek

Blog cikkek
Szőke Ármin

JMeter: Listener

JMeter series Introduction In order to be able to evaluate the tests, we need something that can display the results. In Jmeter these are called

Érdekel a tesztelés világa?

Dolgozz velünk hazai és nemzetközi projekteken

Back To Top

Várj, ne maradj le legújabb szakmai cikkeinkről

Iratkozz fel hírlevelünkre és minden hónapban elküldjük a legizgalmasabb cikkeket

cookie-icon
Tájékoztatjuk, hogy a honlap felhasználói élmény fokozásának érdekében sütiket alkalmazunk. A honlapunk használatával ön a tájékoztatásunkat tudomásul veszi.