\section{Codeabdeckung}

\subsection{Einleitung}

Die Codeabdeckung ist eine Methodik den Code weitflächig zu durchlaufen, um eine korrekte Verhaltensweise des Synchronisationsservers sicherzustellen.
Die Knotenabdeckung stellt hierbei sicher, dass möglichst jede Instruktion im Code von mindestens einem Test durchlaufen wird.
Die Zweigabdeckung stellt sicher, dass möglichst jeder Zweig (bspw. bei Verzweigungen) von mindestens einem Test durchlaufen wird.
Schließlich gibt es noch die Pfadabdeckung, die sicherstellt, dass möglichst jeder Pfad von mindestens einem Test durchlaufen wird.

In diesem Fall liegt der Fokus auf den ersten beiden Abdeckungen.
Um die Codeabdeckung zu messen und zu dokumentieren, wurde das Tool JaCoCo verwendet.
Viele Klassen des Projekts sind lediglich Model-Klassen oder dienen
ausschließlich als Schicht zur Weiterleitung von Daten, weshalb
diese bereits implizit abgedeckt sind.

Zusätzlich werden durch das Tool Lombok, dem Framework Spring oder den JPA Repositories 
Methoden implizit eingebunden, welche dadurch nicht selbst implementiert werden müssen
und bereits ausgiebig getestet sind.
Dadurch ist eine explizite Abdeckung all dieser Methoden überflüssig,
weshalb die Codeabdeckung nicht sonderlich hoch erscheint.

In den Klassen erzielt, deren Funktionalität von Hand implementiert worden sind, ergibt sich wiederum mit den Tests eine hohe Codeabdeckung.

\subsection{Insgesamte Abdeckung}
\begin{figure}[h]
    \centering
    \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{assets/coverage/server.png}
\end{figure}
Model-Paket und Controller-Klassen sind implizit durch ServiceTests
abgedeckt.


\subsection{Authentication Service}
\begin{figure}[h]
    \centering
    \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{assets/coverage/authenticationService.png}
\end{figure}


\subsection{Subscriptions Service}
\begin{figure}[h]
    \centering
    \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{assets/coverage/subscriptionsService.png}
\end{figure}

\subsection{EpisodeAction Service}
\begin{figure}[h]
    \centering
    \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{assets/coverage/episodeActionService.png}
\end{figure}


\subsection{Util Paket}
\begin{figure}[h]
    \centering
    \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{assets/coverage/util.png}
\end{figure}
UpdateUrlsWrapper ist lediglich ein Platzhalter für die leere UpdateUrls Liste,
welche zurückgeben wird, da diese Funktion nicht unterstützt wird.