Skip to content

Commit c529c57

Browse files
committed
Add more to chapter 1
1 parent 2fc46af commit c529c57

1 file changed

Lines changed: 58 additions & 1 deletion

File tree

src/chapters/chapter-1.tex

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,61 @@ \chapter{Bevezetés}
2424
folyamatot és nagyobb konfidenciát adott a kód helyességére nézve. Az implementáció során törekedtem a
2525
kódolvashatóságra, a \textit{DRY}\footnote{\textit{\foreignlanguage{american}{Don't repeat yourself}}, a kód
2626
tömörségére érdemes törökedni.} és a \textit{SOLID}\footnote{\textit{SOLID}, az objektum orientált programozásban öt
27-
tervezési szabály.} programozási elvek betartására.%
27+
tervezési szabály.} programozási elvek betartására.
28+
29+
A megvalósított teszt keretrendszer a diplomamunkám kereteiben belül \textit{C/C++} fordítóprogramok tesztelésére
30+
készült el. Ugyanakkor a program architektúrája moduláris és fel van készítve más fordítóprogramok tesztelésére,
31+
további bővítmények implementálása által.
32+
33+
\section{Kitekintés egyéb fordítóprogram teszt keretrendszerekre}
34+
35+
Ha \textit{C/C++} fordítóprogramokról beszélünk, akkor sokak számára a \textit{GNU GCC}, \textit{LLVM Clang} juthat
36+
eszébe, \textit{Windows} felhasználoknak pedig az \textit{MSVC}.
37+
38+
Az előbbi két fordítóprogram nyílt forráskódú teszt keretrendszereket alkalmaz, így azokat veszem összehasonlítási
39+
alapnak. Mielőtt összehasonlítanám velük a dolgozat tárgyát képző teszt keretrendszert, egy rövid áttekintést
40+
nyújtok funkcióik felett.
41+
42+
A \textit{GNU GCC} a \textit{DejaGnu} teszt keretrendszert alkalmazza. Ez a teszt keretrendszer a nem túl ismert
43+
\textit{Expect} keretrendszert használja amely \textit{Tcl} nyelvben készült. Nem csak parancssori, hanem
44+
interaktív programokat is képes tesztelni. A teszt forrásokat egy meghatározott mappa struktúrába kell rendezni,
45+
ahol a különböző \textit{site.exp} fájlokkal lehet mappa szintű konfigurációt megadni. A teszteset források
46+
tartalmazzák a teszt futtatásához szükséges makrókat. A makrók maguk pedig \textit{Tcl} szkript darabok.
47+
48+
Az \textit{LLVM Clang} a \textit{Lit (LLVM Integrated Tester)} teszt keretrendszert alkalmazza. Ez a teszt
49+
keretrendszer \textit{Pythonban} készült. Parancssori alkalmazások tesztelését teszi lehetővé. A teszt forrásokat
50+
ennél a keretrendszernél is egy meghatározott mappa struktúrában kell tárolni. Hierarchikus konfigurációra itt is
51+
van lehetőség a \textit{lit.cfg.py, lit.site.cfg.py, lit.local.cfg.py} fájlok formájában. A tesztesetek itt is a
52+
teszt forrásokba ágyazott makrókkal futtathatók. Ezek a makrók egy \textit{shell} parancssorhoz hasonló
53+
szintaktikát alkalmaznak.
54+
55+
Az említett megoldások, rendkívül hasonlóak. Hierarchikus mappa szerkezetet, és \\ teszt forrás makrókat
56+
alkalmaznak a cél elérése érdekében. Mivel nyújt többet ehhez képest a \textit{SuperSet}?
57+
58+
Ezzel szemben, a \textit{SuperSet} nem követel meg semmilyen teszt forrás hierarchiát, se mappa struktúrát, se
59+
makrókat. Helyettük egy bővítmény rendszert kínál a teszcsomag szerzőnek, hogy a teszteknek legmegfelelőbb
60+
kontextust alakíthassa ki. A szerzőnek csupán egyetlen fájlt kell kötelezően megadnia, ez a \textit{SET} fájl
61+
amelyben soronként a tesztesetek elérési útja található, ez gyakorlatilag a tesztcsomag definíció. Ezután a
62+
bővítmény rendszerben két ponton módosítható a futás kontextusa. Az első, hogy lehetőség van egy hierarchikus
63+
konfigurációs fájl beolvasásra, amelynek értékei \emph{domain-specifikusak}, tehát a szerző olyan mezőket vesz fel,
64+
a beépítetteken kívül amilyenekre szüksége van. Itt érdemes megjegyezni, hogy a hierarchia a konfigurációs fájlon
65+
belül van kifejezve és nem a mappa struktúra által. A második pont pedig a teszt futtatása, ahol pár egyszerű
66+
\textit{Python} függvény megvalósításával, a szerző dinamikusan dönthet a teszteset futtatásáról. Ebből triviálisan
67+
adódik, hogy ha a szerző mégis szeretne egy makró rendszert a teszt forrásfájlokhoz, akkor lehetősége van azt
68+
implementálni. Ezen felül a \textit{SuperSet} lehetőséget add egyszerre több tesztcsomag futtatására is, valamint
69+
elosztott több számítógépes működésre is. A \textbf{\ref{fig:comparison}. ábra} összehasonlítja az említett
70+
keretrendszereket a \textit{SuperSettel}.
71+
72+
\begin{figure}[ht]
73+
\centering
74+
\begin{tabular}{lccc}
75+
\toprule
76+
& Konfiguráció & Elosztott működés & Bővítmény rendszer \\
77+
\midrule
78+
\textit{DejaGnu} & Kötött & Nehezen elérhető \textit{ssh, telnet} & Nem támogatott \\
79+
\textit{Lit} & Kötött & Nem támogatott & Nem támogatott \\
80+
\textit{\textbf{SuperSet}} & Domain-specifikus & Konfiguráció nélkül elérhető & Támogatott \\
81+
\bottomrule
82+
\end{tabular}
83+
\caption{\label{fig:comparison} A teszt kertrendszerek összehasonlítása}
84+
\end{figure}

0 commit comments

Comments
 (0)