Skip to content

Commit b565f74

Browse files
committed
Create Chapter 6
1 parent 8c2940f commit b565f74

11 files changed

Lines changed: 187 additions & 13 deletions

src/appendices/attachments.tex

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,3 +90,21 @@ \chapter*{Mellékletek}
9090
\end{minted}
9191
\caption{\label{fig:config-full} Példa egy konfigurációs fájlra}
9292
\end{figure}
93+
94+
\begin{sidewaysfigure}[ht]
95+
\centering
96+
\includegraphics[height=12cm]{assets/superset-html-report-passes.png}
97+
\caption{\label{fig:html-report-passes} Példa \textit{HTML} jelentésre, kihagyott tesztesetekkel}
98+
\end{sidewaysfigure}
99+
100+
\begin{sidewaysfigure}[ht]
101+
\centering
102+
\includegraphics[height=11cm]{assets/superset-html-report-skips.png}
103+
\caption{\label{fig:html-report-skips} Példa \textit{HTML} jelentésre, kihagyott tesztesetekkel}
104+
\end{sidewaysfigure}
105+
106+
\begin{sidewaysfigure}[ht]
107+
\centering
108+
\includegraphics[height=14cm]{assets/superset-html-report-fails.png}
109+
\caption{\label{fig:html-report-errors} Példa \textit{HTML} jelentésre, sikertelen tesztesetekkel}
110+
\end{sidewaysfigure}

src/appendices/bibliography.tex

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,13 +104,19 @@
104104
}
105105

106106
\bib{http}{misc}{
107-
author={Bishop, Mike},
108-
title={HTTP/3},
109-
date={2022-06}, % chktex 8
107+
author={Nielsen, Henrik},
108+
author={Mogul, Jeffrey},
109+
author={Masinter, Larry M},
110+
author={Fielding, Roy T.},
111+
author={Gettys, Jim},
112+
author={Leach, Paul J.},
113+
author={Berners-Lee, Tim},
114+
title={Hypertext Transfer Protocol -- HTTP/1.1}, % chktex 8
115+
date={1999-06}, % chktex 8
110116
publisher={RFC Editor},
111-
number={9114},
112-
url={https://www.rfc-editor.org/info/rfc9114},
113-
doi={10.17487/RFC9114},
117+
number={2616},
118+
doi={10.17487/RFC2616},
119+
url={https://www.rfc-editor.org/info/rfc2616},
114120
}
115121

116122
\bib{sha512}{misc}{
@@ -121,5 +127,27 @@
121127
doi={10.6028/NIST.FIPS.180-4}, % chktex 8
122128
pages={24--26}
123129
}
130+
131+
\bib{bst-journal}{article}{
132+
author={McIlroy, M. D.},
133+
author={Pinson, E. N.},
134+
author={Tague, B. A.},
135+
title = {UNIX Time-Sharing System: Foreword},
136+
date = {1978},
137+
volume = {57},
138+
number = {6},
139+
pages = {1899--1904},
140+
journal = {Bell System Technical Journal},
141+
doi = {10.1002/j.1538-7305.1978.tb02135.x}, % chktex 8
142+
url = {https://onlinelibrary.wiley.com/doi/abs/10.1002/j.1538-7305.1978.tb02135.x}, % chktex 8
143+
}
144+
145+
\bib{ant}{webpage}{
146+
accessdate={2025-12-04}, % chktex 8
147+
author={The Apache Software Foundation},
148+
date={2025-01-13}, % chktex 8
149+
title={Apache Ant},
150+
url={https://ant.apache.org/}
151+
}
124152
\end{biblist}
125153
\end{bibdiv}

src/assets/b4918.png

-1.32 MB
Binary file not shown.
56.5 KB
Loading
53.4 KB
Loading
46.3 KB
Loading

src/chapters/chapter-1.tex

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@ \chapter{Bevezetés}
1111
kombinációjat és kizárását is.
1212
\item Lehetővé teszi különböző tesztesetek, tesztecsomagba való szervezését.
1313
\item Keresztfordítók esetén képes a futásidejű teszteket szimulátor alkalmazásokban futtatni.
14-
\item A tesztcsomag írónak lehetőséget biztosít a konkrét fordítóprogram invokációt programozottan változtatni egy
15-
bővítmény rendszeren keresztül.
14+
\item A tesztcsomag írónak lehetőséget biztosít a konkrét fordítóprogram invokációt \\ programozottan változtatni
15+
egy bővítmény rendszeren keresztül.
1616
\item A kimenete \textit{JUnit XML} formátumú, hogy egyéb vizualizációs eszközök fel tudják dolgozni azt.
1717
\item Nem utolsó sorban lehetőséget ad az elosztott futtatásra, hogy a nagy méretű tesztcsomagok gyorsabban
1818
fussanak, feltéve hogy extra hardver áll rendelkezésre.
1919
\end{itemize}
2020

2121
A projekt érdekessége, hogy a Python programozási nyelv egy relatív új, extra típus annotációkkal ellátott változatában
2222
készült. A legtöbb típus annotációnak nincs futásidejű szemantikája, ugyanakkor ellenőrizhetők egy harmadik féltől
23-
származó programokkal~\cite{mypy},~\cite{pyright},~\cite{ty}. A típussoság nagyban megkönyítette a fejlesztési
24-
folyamatot és nagyobb konfidenciát adott a kód helyességére nézve. Az implementáció során törekedtem a
25-
kódolvashatóságra, a \textit{DRY} és a \textit{SOLID} programozási elvek betartására.
23+
származó programokkal~\cites{mypy,pyright,ty}. A típussoság nagyban megkönyítette a fejlesztési folyamatot és nagyobb
24+
konfidenciát adott a kód helyességére nézve. Az implementáció során törekedtem a kódolvashatóságra, a \textit{DRY} és a
25+
\textit{SOLID} programozási elvek betartására.

src/chapters/chapter-2.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ \section{A projekt felépítés}
9898
parancsainak módosítására. A \textit{Sut} komponenseket egy bővítmény rendszer tölti be, így akár az
9999
alkalmazáson kívülről is van lehetőség a tesztelési módok személyre szabására.
100100

101-
\subsection{A \textit{Reporter} szoftver komponens}
101+
\subsection{A \textit{Reporter} szoftver komponens}\label{sec:intro-reporter}
102102

103103
A \textit{Reporter} szoftver komponens készít a \textit{SuperSet} komponens kimeneti \textit{SQLite}
104104
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

src/chapters/chapter-3.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ \section{A konfigurációs fájl}
105105
\begin{itemize}
106106
\item Az \textbf{ÖSSZES} tesztcsomagból kiszűri az \textbf{EXCEPTIONS} kapcsoló bármely értékét.
107107
\item Az \textbf{EXPRS} tesztcsomagból kiszűri az \textbf{OPT\_LEVEL} kapcsoló \textbf{Oz} értékét.
108-
\item A \textbf{LOOPS} tesztcsomagból kiszűri az \textbf{OPT\_LEVEL} kapcsoló \textbf{O1} értékét és a
108+
\item A \textbf{LOOPS} tesztcsomagból kiszűri az \textbf{OPT\_LEVEL} kapcsoló \textbf{O1} értékét és a \\
109109
\textbf{BUILTIN} kapcsoló bármely értékét.
110110
\end{itemize}
111111

src/chapters/chapter-6.tex

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
\chapter{A \textit{Reporter} komponens}
2+
3+
A \textit{Reporter} szoftver komponens felelős a teszt keretrendszer kimenetét különböző formátumokra hozni.
4+
Kiemelendő, hogy ez a komponens egy külön parancsosori futtatható a teszt keretrendszertől. Ezt az architektúrális
5+
döntés a \emph{Unix filozófia} alapján hoztam meg, miszerint:
6+
7+
\begin{foreigndisplaycquote}{american}{bst-journal}
8+
Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding
9+
new features.
10+
\end{foreigndisplaycquote}
11+
12+
A~\ref{sec:intro-reporter} fejezetben említett két kimeneti formátumot támogatja a komponens, amelyek rendre:
13+
14+
\begin{itemize}
15+
\item Humán olvasható, \textit{HTML} jelentés.
16+
\item Harmadik féltől számrazó programok által ovlasható \textit{JUnit XML}.
17+
\end{itemize}
18+
19+
A kimeneti formátumok kiválasztásánál először csak a \textit{JUnit XML} lehetőséget vettem figyelembe. Azonban hamar rá
20+
kellett hogy jöjjek, hogy egy szoftver eszköz mint a \textit{SuperSet} teszt keretrendszer, csak akkor teremt értéket
21+
ha a tesztelők könnyen vizualizálni tudják a kimenetét. Ha a \textit{HTML} kimenet nem valósult volna meg, akkor a
22+
keretrendszer felhasználói kénytelenek lettek volna harmadik féltől számazó szoftvereket alkalmazni. Vagy az
23+
\textit{SQLite} adatbázis megnyitásához, és lekérdezéséhez, vagy a \textit{JUnit XML} vizsualizálásához.
24+
25+
A két formátum kezelésére két külön-külön álló szoftver komponenst implementáltam, ezek a \textit{HTMLReporter} és a
26+
\textit{JXmlReporter} komponensek. A komponensek közel azonos adaton dolgoznak.
27+
28+
Mindkét komponensnek szüksége van egy aggregált statisztikára ez a \textit{Stats} típus. Ez a típus gyakorlatilag egy
29+
összefoglalót ad az egész teszt futtatásról. Az összefoglalóban szerepel az összes konfigurációval kiválasztott
30+
teszteset száma, valamint hogy ezek közül mennyi teszteset volt sikeres, sikertelen, vagy kihagyott. Ezenkívül a
31+
futtatás idejét is tartalmazza másodpercben mérve. A \textbf{\ref{fig:stats-implementation}. ábrán} látható a
32+
\textit{Stats} típus.
33+
34+
\begin{figure}[ht]
35+
\centering
36+
\begin{minted}{python}
37+
@dataclass(slots=True)
38+
class Stats(tuple[float, int, int, int, int, int]):
39+
time: float = 0
40+
passes: int = 0
41+
fails: int = 0
42+
errors: int = 0
43+
skipped: int = 0
44+
tests: int = 0
45+
\end{minted}
46+
\caption{\label{fig:stats-implementation} A \textit{Stats} típus implementációja}
47+
\end{figure}
48+
49+
\newpage
50+
\section{A \textit{JXmlReporter} komponens}
51+
52+
A \textit{JxmlReporter} komponens mind működésében mind implementációjában szerényebb mint a \textit{HTMLReporter}
53+
társa. Ez a tény gyakorlatilag a formátum egyszerűségéből adódik.
54+
55+
A formátumot először az \emph{Apache Ant\textsuperscript{\texttrademark}}~\cite{ant} használta, és
56+
szabványosította, majd \textit{de-facto} szabvány lett az automata szoftvertesztek eredményeinek tárolására.
57+
58+
A \textbf{\ref{fig:jxml-report}. ábrán} látható példa egy a \textit{SuperSet} teszt keretrendszer által generált
59+
\textit{JUnit XML-re}.
60+
61+
\begin{figure}[ht]
62+
\centering
63+
\begin{minted}{xml}
64+
<?xml version="1.0" encoding="UTF-8"?>
65+
<testsuites name="SuperSet" tests="3" errors="0" failures="0" skipped="0" time="1.164">
66+
<testsuite name="C99LANG-ARMV8-O0" tests="1" errors="0" failures="0" skipped="0" time="0.291">
67+
<test_case name="2/1/1/2/t01" time="0.291" />
68+
</testsuite>
69+
<testsuite name="C99LIB-ARMV8-O0" tests="1" errors="0" failures="0" skipped="0" time="0.416">
70+
<test_case name="4/1/2/t33fsnofloat" time="0.416" />
71+
</testsuite>
72+
<testsuite name="LOOPS-ARMV8-O0" tests="1" errors="0" failures="0" skipped="0" time="0.457">
73+
<test_case name="optimize/s314/ts314intrestrict" time="0.457" />
74+
</testsuite>
75+
</testsuites>
76+
\end{minted}
77+
\caption{\label{fig:jxml-report} Példa a \textit{JUnit XML} jelentésre}
78+
\end{figure}
79+
80+
\section{A \textit{HTMLReporter} komponens}
81+
82+
A könnyű áttekintés érdekében az eredmények kategorizálásra kerülnek. A \textit{HTMLReporter} komponens hét
83+
különböző kategóriát különböztet meg. Ezek a következők:
84+
85+
\begin{itemize}
86+
\item \textit{SKIPPED}: kihagyott teszteset.
87+
\item \textit{CFAIL}: fordítási hibás teszteset.
88+
\item \textit{XCFAIL}: imsert fordítási hibás teszteset.
89+
\item \textit{CPASS}: fordítási sikeres teszteset.
90+
\item \textit{RFAIL}: futtatási hibás teszteset.
91+
\item \textit{XRFAIL}: ismert futtatási hibás teszteset.
92+
\item \textit{RPASS}: futtatási sikeres teszteset.
93+
\end{itemize}
94+
95+
A \textit{HTMLReporter} komponens struktúráltan prezentálja az információt a felhasználó felé. A struktúra egy fába
96+
van rendezve.
97+
98+
Az első gyökér elem, egy fejléc van, ami felsorolja a teljes futásra vonatkozó statisztikákat. Ahogy haladunk
99+
beljebb a listában, szintén minden elem egy statisztika fejléccel kezdődik, azonban az a fejléc csak az arra a
100+
lista elemre szűrt statisztikákat jeleníti meg.
101+
102+
A lista elemek a könnyű vizuális keresés érdekében, szemantikusan színezettek, a kategóriák alapján. Erősségi
103+
sorrend szerint, pirossal ha sikertelen teszteset van a kategóriában, zölddel ha minden teszteset sikeres, és
104+
sárgával ha minden teszteset ki lett hagyva.
105+
106+
A lista elemek ezután a következő sorrendben ágyazódnak egymásba:
107+
108+
\begin{enumerate}
109+
\item A tesztcsomag neve.
110+
\item A \textit{Target} neve és a hozzátartozó konfiguráció.
111+
\item A hét kategória bontás.
112+
\item A kategórián belül az eredményeket mutató táblázat.
113+
\end{enumerate}
114+
115+
A fa szerkezet leveleiben lévő táblázatok, a kategóriájukna megfelelő oszlopokat tartalmaznak. Általánosan
116+
elmondható, hogy minden táblázatban van egy \emph{név} oszlop, hogy a teszteset azonosítható legyen.
117+
118+
A sikeresen futott teszteseteknél a futtatás ideje látható. A kihagyott teszteseteknél a lista ami alapján a teszt
119+
ki lett hagyva. A sikertelen teszteseteknél a futtatás ideje, a program kimenete mind az \textit{STDOUT-ra} és
120+
\textit{STDERR-re}, valamint egy konfigurációs fájl amivel reprodukálni lehet a bukást. A
121+
\textbf{\ref{fig:html-report-passes}.~\ref{fig:html-report-skips}. és~\ref{fig:html-report-errors}. ábrák}
122+
bemutatják a különböző táblázat formátumokat egy \textit{HTML} jelentés részletén.

0 commit comments

Comments
 (0)