@@ -9,27 +9,98 @@ \chapter{Szoftver architektútra}
99
1010\section {A projekt felépítés }
1111
12- Ebben a fejezetben röviden ismertetem a szoftverkomponenseket amelyek felépítik a \textit {SuperSet } elosztott teszt
13- keretrendszert alkamazást. Mélyebb működésükre, konkrét implementációs részleteikre, és az azokat alátámasztó
14- indoklásokora a komponensek saját fejezeteiben fogok kitérni.
12+ Ebben a fejezetben röviden ismertetem a szoftverkomponenseket amelyek felépítik a \textit {SuperSet } elosztott teszt
13+ keretrendszert alkamazást. Mélyebb működésükre, konkrét implementációs részleteikre, és az azokat alátámasztó
14+ indoklásokora a komponensek saját fejezeteiben fogok kitérni.
1515
16- A teszt keretrendszer hét fő szoftver komponensből áll amelyek két \emph {nem } diszjunkt halmazba sorolhatók.
16+ A teszt keretrendszer hét fő szoftver komponensből áll amelyek két \emph {nem } diszjunkt halmazba sorolhatók.
1717
18- Az első halmaz a lokális futtatásért felelős szoftver komponenseket tartalmazza. Ebbe a halmazba tartozik a
19- \textit {run.py } fájl által implementált \textit {SuperSet } szoftver komponens, amely névadója lett a projektnek.
18+ Az első halmaz a lokális futtatásért felelős szoftver komponenseket tartalmazza. Ebbe a halmazba tartozik a
19+ \textit {run.py } fájl által implementált \textit {SuperSet } szoftver komponens, amely névadója lett a projektnek.
2020
21- A második halmaz az elosztott futtatáshoz szükséges szoftver komponenseket tartalmazza. Ide tartozik a
22- \textit {client.py } fájl által implementált \textit {SuperSetConsumer } és a \textit {server.py } által implementált
23- \textit {SuperSetProducer } szoftver komponensek.
21+ A második halmaz az elosztott futtatáshoz szükséges szoftver komponenseket tartalmazza. Ide tartozik a
22+ \textit {client.py } fájl által implementált \textit {SuperSetConsumer } és a \textit {server.py } által implementált
23+ \textit {SuperSetProducer } szoftver komponensek.
2424
25- A két halmaz metszetében azok a szoftver komponensek szerepelnek amelyek elengedhetetlenek mind az elosztott, mind a
26- lokális futtatáshoz. Ezek a komponensek a \textit {Gekko }, a \textit {ConfigManager }, a \textit {SystemUnderTest }
27- (továbbiakban \textit {Sut }), illetve a program kimenet szabványos formára hozásáért felelős \textit {Reporter }.
25+ A két halmaz metszetében azok a szoftver komponensek szerepelnek amelyek elengedhetetlenek mind az elosztott, mind
26+ a lokális futtatáshoz. Ezek a komponensek a \textit {Gekko }, a \textit {ConfigManager }, a \textit {SystemUnderTest }
27+ (továbbiakban \textit {Sut }), illetve a program kimenet szabványos formára hozásáért felelős \textit {Reporter }.
2828
29- \subsection { A \textit { SuperSet } szoftver komponens }
29+ A felvázolt struktúrát ábrázolja az alábbi Venn-diagram \ref { fig:kompdiag }.
3030
31- A \textit {SuperSet } szoftver komponens a lokális futtatásért felelős fő komponens. Feladata a \textit {ConfigManager }
32- szoftver komponens által előállított teszt csomagok futtatása, valamint a \textit {Gekko } szoftver komponens által
33- előállított \textit {fuzz } típusú teszt csomagok futtatása is. Továbbá a \textit {ConfigManagertől } megkapja a tesztekre
34- érvényes beállításokat is, azok kapcsolatatival és kizárásaival, így megalkotja a futtatási mátrixot. Kimenetét egy
35- \textit {SQLite } \cite {sqlite } adatbázisban tárolja.
31+ \begin {figure }
32+ \centering
33+ \begin {tikzpicture }
34+ \begin {scope } [fill opacity=.3]
35+ \draw (-5,5) rectangle (6,-3);
36+ \draw [fill=red, draw=black] (-1.5,1) circle (3);
37+ \draw [fill=blue, draw=black] (1.5,1) ellipse (4 and 3);
38+
39+ \node [fill opacity=.6] at (-2,4.5) {\LARGE \textbf {Lokális }};
40+ \node [fill opacity=.6] at (2.5,4.5) {\LARGE \textbf {Elosztott }};
41+
42+ \node [fill opacity=.8] at (-3.5,1) {\textit {SuperSet }};
43+
44+ \node [fill opacity=.8] at (3.3,2) {\textit {SuperSetProducer }};
45+ \node [fill opacity=.8] at (3.3,0) {\textit {SuperSetConsumer }};
46+
47+ \node [fill opacity=.8] at (-0.4,2.6) {\textit {Gekko }};
48+ \node [fill opacity=.8] at (-0.4,1.6) {\textit {Reporter }};
49+ \node [fill opacity=.8] at (-0.4,0.6) {\textit {SystemUnderTest }};
50+ \node [fill opacity=.8] at (-0.4,-0.4) {\textit {ConfigManager }};
51+ \end {scope }
52+ \end {tikzpicture }
53+ \caption {\label {fig:kompdiag } Szoftver komponens csoport diagram}
54+ \end {figure }
55+
56+ \subsection {A \textit {SuperSet } szoftver komponens }
57+
58+ A \textit {SuperSet } szoftver komponens a lokális futtatásért felelős fő komponens. Feladata a
59+ \textit {ConfigManager } szoftver komponens által előállított teszt csomagok futtatása, valamint a \textit {Gekko }
60+ szoftver komponens által előállított \textit {fuzz } típusú teszt csomagok futtatása is. Továbbá a
61+ \textit {ConfigManagertől } megkapja a tesztekre érvényes beállításokat is, azok kapcsolatatival és kizárásaival,
62+ így megalkotja a futtatási mátrixot. Kimenetét egy \textit {SQLite } \cite {sqlite } adatbázisban tárolja.
63+
64+ \subsection {A \textit {SuperSetProducer } és a \textit {SuperSetConsumer } szoftver komponensek }
65+
66+ Ez a két komponens felelős az elosztott működésért.
67+
68+ A \textit {SuperSetProducer } a szerver alkalmazás által kezelt sorba fogja rakni a kért tesztcsomagokat.
69+ Gyakorlatilag a \textit {SuperSet } szoftver komponens által végzett munka első részét végzi, tehát a
70+ \textit {Gekko } és a \textit {ConfigManager } szoftver komponensekkel kommunikál így előállítja a végső futtatási
71+ konfigurációt.
72+
73+ A \textit {SuperSetConsumer } a kliens alkalmazások oldalán van jelen. A szervertől kapott tesztcsomagokat osztja
74+ fel, futtatja le a teszt eseteket, majd aggregálja az eredményeket és visszaküldi a szerver alkalmazásnak.
75+
76+ \subsection {A \textit {Gekko } szoftver komponens }
77+
78+ A \textit {Gekko } szoftver komponens dinamikusan generál egy előre megadott mennyiségű \textit {fuzz } típusú
79+ teszt csomagot. A komponens neve az angol \emph {Generate-Convert } szókapcsolatból ered. Ez a szókapcsolat utal
80+ a működésére is. A \textit {Gekko } első lépésben egy \textit {fuzz } teszt generáló programot hív, amelynek a
81+ kiementét a második lépésben a keretrendszer által használt formátumra hozza. A \textit {Gekko } jelenleg a
82+ \textit {Csmith } \cite {csmith } programot használja, azonban könnyen bővíthető más genráló programokkal is.
83+
84+ \subsection {A \textit {ConfigManager } szoftver komponens }
85+
86+ A \textit {ConfigManager } szoftver komponens felelős a keretrendszer számára elérhetővé tenni a futás
87+ konfigurációs fájlnak a tartalmát. Ez a komponens képes a konfigurációs fájlokból \textit {Python } primitív és
88+ aggregált típusokat előállítani. A különböző konfigurációs értékekhez futás időben elérhető típusokat rendel,
89+ így a konfigurációs fájlból olvasott nyers sztringek értelmezése személyre szabható. Ezzel a mechanizmussal
90+ különböző fordítóprogramok igényeihez alakítható a konfigurációs fájl, akár teljesen különböző
91+ \textit {domain-specifikus nyelv } is implementálható.
92+
93+ \subsection {A \textit {Sut } szoftver komponens }
94+
95+ A \textit {Sut } szoftver komponens a tesztelt fordítóprogram futtatási parancsait definiálja. Három tesztelési
96+ mód létezik, \emph {fordítási }, \emph {szerkesztési }, és \emph {futtatási }, ez utóbbi mód lehetőséget ad
97+ \emph {keresztfordító programok } kimeneti fájljainak futtatására is. A komponens lehetőséget ad mind a három mód
98+ parancsainak módosítására. A \textit {Sut } komponenseket egy bővítmény rendszer tölti be, így akár az
99+ alkalmazáson kívülről is van lehetőség a tesztelési módok személyre szabására.
100+
101+ \subsection {A \textit {Reporter } szoftver komponens }
102+
103+ A \textit {Reporter } szoftver komponens készít a \textit {SuperSet } komponens kimeneti \textit {SQLite }
104+ adatbázisából, riportokat. Két mód létezik az első humán olvasható \textit {HTML } riportot készít, a második a
105+ standard \textit {JUnit XML } formátumot használja. Ez utóbbi formátum más alkalmazások által is felismerhető így
106+ lehető teszi az eredmények vizualizálását harmadik féltől származó szoftverekben is.
0 commit comments