Hogyan működnek a tesztesetek?

+1 vote
asked Apr 15, 2015 in Rendszermodellezés A00 by EcnebAsum (64 points)  

A sakkórám rendesen működik ,amíg kézzel nyomogatom a gombokat, mivel tudom, hogy a hibák 99.98%-a a monitor és a szék között van, ezért azt szeretném megkérdezni, hogy miért írja ki a teszt esetem, azt hogy expected 177 found 180 akkor ,amikor every 1s-el van megszerkesztve a csökkentés, ha after 1000ms-el szerkesztem meg akkor pedig expected 177 found 179. De amikor pedig elindítom a sakkórámat debug módban, szépen csökken mind2 megoldással másodpercenként.

Sajnos ez jellemző egyéb helyeken is(De csak tesztesetekben, ha kézzel kattintgatok akkor jó), azért szeretném azt kérdezni, hogy pontosan hogyan működik a teszteset, mikor frissítsem a kijelző értékét? Mert van ahol úgy csináltam, hogy először van A állapotban, frissíti, átmegy B-be átírja, visszamegy A-ba frissíti a kijelzőn lévő értéket

Előre is köszönöm a segítséget

commented Apr 18, 2015 by eva.vegh (21 points)  
Nekem is ugyanez a problémám, engem is érdekelne a megoldás.
Köszönöm a segítséget!
commented Apr 19, 2015 by eva.vegh (21 points)  
Közben megoldódott a probléma, ha valakinek hasonló gondja lenne: a felesleges átmeneti állapotokat elágazásokkal és az állapotváltások kimenetével kell kiküszöbölni. Elég érzékeny a teszt a felesleges állapotokra. :)
commented Apr 19, 2015 by balazsczap (20 points)  
Ugyanez a probléma volt, ugyanez lett a megoldás.

2 Answers

0 votes
answered Apr 19, 2015 by EcnebAsum (64 points)  
 
Best answer

Az érdeklődők kedvéért leírom a részletes megoldást. Az after 1000ms az nem működhet hurok élként, mert az after csak egyszer hajtódik végre (sajnos az every 1s / ... nem tudom miért nem működött.). a yakindu doksijában is van erre példa, így nem mondok semmi titkosat azzal, hogy két ugyan olyan állapotot kell egymással szembe állítani.

A másik típus probléma az volt, hogy felesleges állapotokat vettem fel.
Például: Alapérték visszaállítása, vagy hogy csökkentek egy értéket.
Ezekre mind hárplis a program, és míg a grafikus felületen működik a teszt elbukik. Gönczy László levelemre azt válaszolta ezzel kapcsolatban, idézem:

a szimuláció/GUI meghajtás során nem figyelhető meg teljesen a
rendszer állapottere, míg a tesztelés pontosan követi a rendszer
változásait.

Nekem ez sokat segített a megértésben, remélem nektek is fog

commented Apr 20, 2015 by oszkar.semerath (1,579 points)  
Sziasztok!
Annyit hozzátennék, hogy a tesztelésnél lecseréljük az órát logikai órára, ami precízen kezeli az események sorrendjét. Ezért például (I) nem kéne hogy számítson, hogy hány állapotot készítetek, de (II) az események után azonnal megvizsgálja az óra kijelzőjét, nem vár egy pillanatot sem.

Az "after 1 s" hurokélként működik, én is így oldottam meg a tesztházikban. Az állapotokon belül az "every 1 s" is működhet, viszont vigyázzunk hogy ilyenkor nincs állapot ki- és belépés.

Amennyiben van konkrét kérdésetek, küldjetek el egy képet egy kis állapotgépről, amin már előjön a probléma.
+1 vote
answered Apr 23, 2015 by oszkar.semerath (1,579 points)  

Szia!
Most néztem egy hasonló problémát, és ott az volt a baj, hogy az állapotátmenetre nem volt feltétel írva. Például csak ennyi volt:

[player == true] / display = "White"

Amennyiben írtunk eseményt is, a probléma megoldódott.

...