Using Model-Based Testing for Quality Assurance of Protocol Documentation

Ezen a héten van az ETAPS konferencia itt Budapesten, és részben a tanszékünk szervezi, úgyhogy aki él és mozog, az kint van a helyszínen. A regisztráció intézése, technika felügyelete mellett azért szerencsére jut idő az előadásokra is, vasárnap a Model Based Testing 2008 workshopon ültem bent. Az első meghívott előadó előadását emelném itt ki, nagyon élvezetes volt.

Wolfgang Grieskamp (Microsoft): Using Model-Based Testing for Quality Assurance of Protocol Documentation

A hivatalos leírás ez volt: "Microsoft is producing high-quality documentation for Windows client-server and server-server protocols. My group in the Windows organization is responsible for verifying the documentation to ensure it is of the highest quality. We are applying various test-driven methods including, when appropriate, a model-based testing (MBT) approach. Our experiences so far, after applying MBT on a large scale to many protocols using test vendors in India and in China, confirm that it works and that it scales, provided it is accompanied by sound tool support and clear methodological guidance. This talk describes certain aspects of the quality assurance process we put in place, specifically focusing on its MBT anchor."

Grieskamp az MS Researchnél volt és MBT-vel foglalkozott, az AsmL nyelv és a hozzá kapcsolódó eszközök, pl. Spec Explorer egyik kidolgozója. Ezek segítségével programok működését és követelményeit lehet precízen megfogalmazni, majd ellenőrizni. Egy éve átment a Microsoft céghez, és most éles protokollokat tesztelnek.

Az EU kötelezte az MS-t, hogy tegye elérhetővé egy csomó protokolljának a specifikációját. Ezeket el is kezdték feltölteni, pár elérhető már itt: Windows Open Protocols. A publikálás előtt azonban le kellett ellenőrizni, hogy jók-e a specifikációk, megfelelnek-e az implementációknak, mert ha hibás valamelyik publikált leírás, akkor az EU napi bírságot fizettet az MS-sel:)

A munkamenet az, hogy a meglévő dokumentációkat közös formákra hozzák (types, messages, behaviour, stb., itt látható például a DHCP kiegészítések leírásában). Ezután XML-eket gyártanak a dokumentációk egy részéből (az idő rövidsége miatt ezt kézzel csinálták meg a jelenleg elérhetővé tett dokumentumokra). Egy külső csoport (főleg kínai és indiai alvállalkozók) közben elkezdik megírni a teszt terveket, végigmennek a szövegen és minden fontosabb mondathoz készítenek egy követelményt, amit tesztelni kell. Ezeket a terveket egy külső szakértő ellenőrzi, és ha minden rendben, akkor mehet a tesztelés.

Ilyen leírásból több mint 100 darab van, rövidebbek-hosszabbak. Az SMB2 specifikációja pl. 300 oldal, ebből kb. 2000 követelmény lett, ezért a tesztek egy részét automatikusan generálták. Így az elmúlt évben kb. 200 mérnökévnyi munkát fektettek abba, hogy az akadémiai kísérleti eszközként létező Spec Explorerből napi használatban működő program legyen.

A folyamat nagyjából a következő (sajnos nincs meg az előadásban mutatott ábra, volt róla szó, hogy felkerül majd az MBT weboldalára)

  • Protokoll megértése
  • Innen két párhuzamos szálra ágazik:
    • Protokoll adapter készítése: ez fogja a teszteseket lefuttatni az adott implementáción. Az adapter egy részét az üzeneteket leíró XML-ekből lehet generálni, de sok mindent kézzel kell megcsinálni. A tapasztalat az volt, hogy ez elég komoly része a munkának.
    • Akciók definiálása, modell építése, tesztek generálása: ez a tényleges modellezés része a feladatnak, itt kell jól megfogalmazni a protokoll működését.
  • Tesztek végrehajtása az implementáción

A modellezés és generálás támogatására a Spec Explorer eszközt fejlesztették tovább, Spec Explorer 2007 néven teljesen beépül a Visual Studio-ba és Abstract State Machine (ASM) alapokon történő modellezést és automatikus teszt generálást tesz lehetővé. A Spec Explorer korábbi változata letölthető a weboldaláról, a 2007-esre azt mondták, hogy próbálják ezt is majd ingyenesen letölthetővé tenni egy fél éven belül a CodePlexen, de ez már nem egy akadémiai eszköz, így ez nem biztos. Az eszközt Kínában fejlesztik már, nem az MS Researchben. Grieskamp szerint meglepő, de működött a technológia kihelyezése, jól fejlődik az eszköz. Addig is elérhető egy másik eszköz, az NModel.

A konkrét eszközöket demózta is Grieskamp éles adatokkal és tesztekkel:) Az akciókat Spec# metódusként (vezérelhető akciók) vagy eseményként (csak megfigyelhető akciók) kell felvenni a kódba. A Spec Explorer elvileg nyelvfüggetlen, többféle .NET-es nyelvet lehet benne használni. Ha megvannak az akciók és a működési modell leírása, akkor el lehet kezdeni az állapot bejárást. A bejárás során jegyzik, hogy milyen követelményeket fed le az adott szekvencia.

Korán belefutottak az állapottér robbanásba, ezt szeleteléssel (slicing) oldották meg. A kiválasztott követelmények megfelelően járja csak be az állapotteret, ezzel kezelhetőek a valós protokollok is. Ráadásul az egész elé egy egyszerű GUI-t is húztak, ami elfedi az elméleti részleteket, a tesztelők átlagos képzettségű emberek (némi felkészítéssel, de nincsen komolyabb akadémiai előéletük). Ehhez kellett, hogy teljes IntelliSense támogatás legyen az eszközben. A szeletelés megvalósítására ilyen példát mutatott:

(
   AssumeShareExists();
   Init(); // ezeknek a metódusoknak kell a szekvencia elején szerepelnie
   ... // ezután bármi jöhet
) || StateMachine // kompocízió a StateMachine nevű modellel

Ezek után a modellt meg lehet jeleníteni grafikusan, majd tesztet generálni belőle. Egy év után a tapasztalat: könnyebb volt átvinni az iparba mint hitték. Ebben segített, hogy képezték kicsit az embereket előtte, és, hogy jól használható eszközöket fejlesztettek, amiket beépítettek a megszokott környezetbe.

Összességében nagyon jó előadás volt, ráadásul a demok miatt nagyon jól lehetett követni. Eszméletlen volt, hogy tényleg megvalósították a modell alapú tesztelést a gyakorlatban is, és működött valós méretű modellekre a dolog!

Reklámok
Kategória: Research | Közvetlen link a könyvjelzőhöz.

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s