Miért jelez hibásan a teszt a beep állapotára az idő letelte után?

+1 vote
asked Apr 6 in Rendszermodellezés A00 by Szabolcs (27 points)  

Sziasztok!

Azt szeretném kérdezni, hogy az elképzelhető, hogy hibásan jelez a tesztelő?

Mellékeltem röviden a kapott hibát és annak pár soros előzményét. Amikor lejár az ideje a játékosnak, akkor ki kell írnia, hogy XY flag fallen, illetve a sípolnia kell. A tesztelő szerint a sípolás nem történik meg, ugyanakkor a modellem alapján ez megtörténik. Futtattam az App-ot is, megvártam, hogy leteljen az idő és sípolt is amint letelt az ideje.

  • WAIT for 1000 ms at 128000s
  • Successful beep check #36: false expected
  • Successful main display check #37: White moves expected
  • Successful White player display check #38: 1 expected
  • Successful Black player display check #39: 110 expected
  • WAIT for 1000 ms at 129000s
  • Failed beep check #40: expected "true" but found "false"

Az idő csökkentésére az ,,after 1s" hívást használom, az létezik, hogy a teszt pontosan 1000 ms, de valójában ennél egy minimálisan több idő telik el a csipogás hívásáig?

Láttam, hogy volt pár hasonló kérdés, de én nem kaptam számomra teljesen egyértelmű választ azokból sem, ezért írtam én is.

Köszönöm a választ,
Szabolcs.

1 Answer

+1 vote
answered Apr 6 by dkmisu (916 points)  
selected Apr 7 by dkmisu
 
Best answer

A tesztelőnek ez a kódrészlete nem hibás, amit az elmúlt évek alatt sikeresen megoldott több 1000 beadás is alátámaszt.

Ami itt gyakori hiba szokott lenni, hogy az idő letelését valaki másként értelmezi. A specifikáció szerint az idő akkor telik le, amikor az óra 1mp-ről vált 0mp-re, és a sípolásnak is ekkor kell történnie. Gyakori az a félreértés, hogy ezt ezzel szemben úgy értelmezik, hogy az idő akkor telik le, ha 0mp van a képernyőn, és eltelik 1mp.

Amennyiben nem erről van szó, érdemes az állapotgépnek legalább ezt a részét determinisztikusan modellezni, és nem kihasználni a Yakindu által definiált élsorrend mint kiértékelési sorrend szemantikát, mert ez rossz sorrendben felvett éleknél elrejthet egy-egy hibát.

commented Apr 7 by Szabolcs (27 points)  
Köszönöm a választ, megoldódott minden. Egy egységbe átraktam az idő csökkentését és a Beepet és el is fogadta a rendszer.
...