\chapter{Výsledky testování}
Pro testování byla zvolena metoda porovnání výsledků (výstupních souborů) předchozího a nového programu. Pro testování byly vybrány reálné vzorky obvodů a pro tyto vzorky byl sestaven testovací skript. Pro každý vzorek byla provedena série testů. Při vytváření testů je třeba dbát na to, aby byl stejně nastaven generátor náhodných čísel, aby byly výsledky porovnatelné. Některé testy jsou totiž ovlivněné právě tímto generátorem náhodných čísel a proto by generovaly jiné testovací vektory nebo poruchy.  

Testy byly prováděny na strukturách obvodu, které jsou v tabulce \ref{tab:SeznamSouboru}.

%tabulka se seznamem souboru na kterych jsou prováděny testy
\begin{table}
\begin{center}
\begin{tabular}{|c|p{120pt}|p{120pt}|}
\hline
\bf{bench soubor} & \bf{poly} & \bf{seed} \\
\hline
c17.bench & 26 & 30 \\                                
\hline
c1355.bench & 31533157253127 & 34153607033667 \\      
\hline
c1908.bench & 52615617223 & 53522557663 \\            
\hline
c2670.bench & 234651236547745612336 & 334665566277021644465 \\
 & 450221471230445602776 & 633374220214654676333 \\
 & 312354675621446325000 & 246520777232446210642 \\
 & 522463700443472 & 021465467633324 \\
\hline
c3540.bench & 03654772134652462 & 00100674372655462 \\
\hline
c432.bench & 100400000001 & 765177704700 \\
\hline
c499.bench & 34561232244723 & 26577520334465 \\
\hline
c5315.bench & 13322442203214563 & 0442323344432224332121 \\
 & 77732242030003413 & 3134477566654555421321 \\
 & 24322133144321034 & 6543220021230520 \\
 & 443247724 &  \\
\hline
c6288.bench & 02432334562 & 12345731451 \\
\hline
c7552.bench & 003143335422477765545 & 001432444777556232430 \\
c7552.bench & 752106315472130546321 & 216473132024304646024 \\
c7552.bench & 646732163445610216473 & 762215363616163244061 \\
c7552.bench & 105463 & 640770 \\
\hline
c880.bench & 13245563770242321072 & 74423064424434506124 \\
\hline
\end{tabular}
\end{center}
\caption{Seznam souborů použitých pro testování}
\label{tab:SeznamSouboru}
\end{table}

V parametrech testu se vyskytuje řetězec \%1, který zde zastupuje jméno souboru, které zpracováváme. Je to z toho důvodu, že jsem vytvořil dávkový testovací soubor, který spouští testy s různými bench soubory, aby bylo možné ověřit funkčnost programu co nejvíce. Pro každý testovaný vzorek byly spušteny následující testy:

\begin{enumerate}
	\item Pro tento test byly použity tyto parametry: \\   % test 1
	\textbf{-s 23 -t ./output/new/\%1t1.pat -W 1 \%1.bench} \\
	Parametry nastaví generátor náhodných čísel (-s) a výstupní soubor (-t), kam se uloží výsledné testovací vektory a výsledné testovací vektory budou ve formátu 1, což je pouze nastavení vstupů. Pro porovnání budou použity soubory ./output/new/\%1t1.pat. Tyto soubory se musí zcela rovnat.
  \item Pro tento test byly použity tyto parametry: \\   % test 2
  \textbf{-s 294 -t ./output/new/\%1t2.pat -W 1 -F ./output/new/\%1t2.flt \%1.bench} \\
  Parametry nastaví generátor náhodných čísel (-s) a výstupní soubor (-t), kam se uloží výsledné testovací vektory, výsledné testovací vektory budou ve formátu (-W) 1, což je pouze nastavení vstupů a konečně výstupní soubor (-F), kam se uloží seznam zpracovaných poruch. Pro porovnání budou použity soubory ./output/new/\%1t2.pat a ./output/new/\%1t2.flt, které se musí zcela rovnat.
  \item Pro tento test byly použity tyto parametry: \\   % test 3
  \textbf{-s 23 -t ./output/new/\%1t3.pat -W 2 \%1.bench} \\
  Parametry nastaví generátor náhodných čísel (-s) a výstupní soubor (-t), kam se uloží výsledné testovací vektory a výsledné testovací vektory budou ve formátu (-W) 2, což je nastavení vstupů a výsledné nastavení výstupů při dané poruše.
  Tento test je obdoba Testu 1, ale zde se testuje jiný výstupní formát souboru. Pro porovnání budou použity soubory ./output/new/\%1t3.pat. Tyto soubory se musí zcela rovnat.
  \item Pro tento test byly použity tyto parametry: \\   % test 4
  \textbf{-D 1 -t ./output/new/\%1t4.pat -W 2 \%1.bench} \\
  Parametry nastaví počet generovaných vektorů na každou poruchu (-D) což je jeden v našem případě, výstupní soubor (-t) kam se uloží výsledné testovací vektory a výsledné testovací vektory budou ve formátu (-W) 1, což je nastavení vstupů. Pro porovnání budou použity soubory ./output/new/\%1t4.pat. Tyto soubory se musí zcela rovnat.
  \item Pro tento test byly použity tyto parametry: \\   % test 5
  \textbf{-t ./output/new/\%1t5.pat -f ./input/\%1.flt -s 23 -W 1 \%1.bench} \\ 
  Parametry nastaví generátor náhodných čísel (-s), výstupní soubor (-t), kam se uloží výsledné testovací vektory, výsledné testovací vektory budou ve formátu (-W) 1, což je nastavení vstupů. Atalanta zde používá i vstupní soubor, který je definován parametrem -f a jménem souboru, který obsahuje seznam poruch, které budou testovány. Pro tento test byly vzaty soubory, které byly vygenerovány testem č. 2. Pro porovnání budou použity soubory ./output/new/\%1t5.pat. Tyto soubory se musí zcela rovnat.
  \item Pro tento test byly použity tyto parametry: \\   % test 6
  \textbf{-s 56 -t ./output/new/\%1t6.pat -P ./output/new/\%1t6.rep -m ./output/new/\%1t6.mask -W 1 \%1.bench} \\
  Parametry nastaví generátor náhodných čísel (-s), výstupní soubor (-t), kam se uloží výsledné testovací vektory, výsledné testovací vektory jsou uloženy ve formátu (-W) 1 což je nastavení vstupů, výstupní soubor se zprávou (-P) a výstupní soubor kam se uloží maska poruch. Pro porovnání budou použity soubory ./output/new/\%1t6.pat, ./output/new/\%1t6.rep a ./output/new/\%1t6.mask. Z těchto souborů se soubory s extension .pat a .mask musí zcela rovnat. V souborech s extension .rep mohou být rozdíly, ale pouze na poslední řádce, která obsahuje čas, jak dlouho trvalo vygenerování výstupních souborů. Ostatní údaje v těchto souborech se musí rovnat.
  \item Pro tento test byly použity tyto parametry: \\   % test 7
  \textbf{-S -t ./input/\%1.pat -P ./output/prev/\%1t7.rep \%1.bench} \\
  Parametry nastaví simulační mód, vstupní soubor (-t), který obsahuje testovací vektory a výstupní soubor (-P), kam se uloží výsledná zpráva simulace. Pro porovnání budou použity soubory ./output/prev/\%1t7.rep, které se mohou lišit, ale pouze na poslední řádce, která obsahuje informaci o čase, jak dlouho trvalo odsimulování vstupních souborů. Ostatní údaje v těchto souborech se musí rovnat.
  \item Pro tento test byly použity tyto parametry:   \\ % test 8
  \textbf{-S -t ./input/\%1.pat -P ./output/new/\%1t8.rep -U ./output/new/\%1t8.ud -v \%1.bench} \\
  Parametry nastaví simulační mód, vstupní soubor (-t), který obsahuje testovací vektory, výstupní soubor (-U), kde budou vypsány nezpracované nebo nedetekované poruchy a ve výstupních souborech bude seznam všech nedetekovaných poruch. Pro porovnání budou použity soubory ./output/new/\%1t8.rep a ./output/new/\%1t8.ud. Soubory s extension .ud se musejí zcela rovnat. Soubory s extension .rep se mohou lišit, ale pouze na poslední řádce, která obsahuje informaci o čase, jak dlouho trvalo odsimulování vstupních souborů. Ostatní údaje v těchto souborech se musí rovnat.
  \item Pro tento test byly použity tyto parametry:   \\ % test 9
  \textbf{-S -t ./input/\%1.pat -P ./output/new/\%1t9.rep -m ./output/new/\%1t9.msk \%1.bench} \\
  Parametry nastaví simulační mód, vstupní soubor (-t), který obsahuje testovací vektory, výstupní soubor (-m), který bude obsahovat masku poruch. Pro porovnání jsou použity soubory ./output/new/\%1t9.rep a ./output/new/\%1t9.msk, kde soubory s extension .msk se musí zcela rovnat. Soubory s extnsion .rep se mohou lišit, ale pouze na poslední řádce, která obsahuje informaci o čase, jak dlouho trvalo osdimulování vstupních soborů. Ostatní údaje v těchto souborech se musí rovnat.
  \item Pro tento test byly použity tyto parametry:   \\ % test 10
  \textbf{-l poly seed 1000 -U ./output/new/\%1t10.flt -v -P ./output/new/\%1t10.rep \%1.bench} \\
  Parametr nastaví simulační mód, testování pomocí LSFR. Tento test obsahuje parametry navíc, které jsou specifické pro každý testovaný vzorek. Parametry poly a seed jsou čísla v oktalové soustavě, která slouží ke generování LSFR vektorů, které jsou pak následně otestovány. Tato oktalové čísla musí obsahovat stejný počet bitů jako je počet vstupů testovaného obvodu. Pokud tomu tak není tak nová atalanta vyhodí vyjímku a předchozí atalanta může i provést neplatnou operaci, kterou je pokus o zápis do nepřidělené paměti, které nastane, pokud oktalové číslo obsahuje méně bitů než je počet vstupů testovaného obvodu. Pro jednotlivé vzorky byla vygenerována oktalová čísla, která jsou uvedena v tabulce \ref{tab:SeznamSouboru}, kde údaj poly na příkazové řádce je nahrazen údajem poly z tabulky \ref{tab:SeznamSouboru} a parametr seed je nahrazen hodnotou ze sloupce seed z tabulky \ref{tab:SeznamSouboru}.
  
  \item Pro tento test byly použity tyto parametry:   \\ % test 11
  \textbf{-S -g 10000 ./output/new/\%1t11.gr -t ./input/\%1.pat -U} \\
  Tento test slouží pro otestování nové funkcionality, kde do souboru s extension .gr jsou uloženy výsledné nastavení pro LSFR simulaci.
  
\end{enumerate}
  
\section{Výsledky testování}
Byl spuštěn testovací skript, který provedl všech 11 testů na každém bench souboru z tabulky \ref{tab:SeznamSouboru}. Jednotlivé soubory byly porovnány pomocí nástroje v TotalCommanderu 7.03, který je schopen porovnávat soubory dle obsahu. Celkem bylo vygenerováno 385 souborů, z toho je 209 vygenerováno převedeným programem Atalanta a 176 původním programem Atalanta-M. Rozdíl je způsoben testem číslo 11, který lze spustit pouze s novým programem Atalanta, protože starý program tuto funkcionalitu neobsahuje. Pokud tedy odečteme 3*11=33 souborů, protože test č. 11 generuje 3 výstupní soubory, tak dostáváme číslo 176, které je stejné jako počet vygenerovaných souborů původním programem Atalanta-M. Po porovnání těchto zbývajících souborů, jsem dostal 45 různých souborů. Všechny soubory s různým obsahem mají příponu .rep, to znamená, že se liší pouze soubory, u kterých jsem tuto možnost připustil. Pro kontrolu byl ješte zkontrolován celkový počet souborů s extension .rep. Bylo jich 55 což souhlasí s počtem testů, které tento soubor generují tj. 5 a to vynásobeno počtem testovacích souborů nám dává 55 což je správně. U souborů které se liší, jsem musel ručně zkontrolovat, zda se liší pouze v posledním řádku, který obsahuje časový údaj. To jsem provedl a všechny soubory se liší pouze v posledním řádku. Tj. všechny soubory jsou stejné.

\section{Porovnání rychlosti}
Pro každý test se zapisoval časový údaj o tom, jak dlouho test trval. Tyto údaje jsou vyneseny v následujících 10 grafech, kde každý graf je pro jeden test. Z celkových údajů vyplývá, že nově vytvořený program je téměř stějně rychlý jako původní program Atalanta-M. Pro porovnání rychlosti jsem vzal největší hodnoty naměřených časů pro jeden test, což vychází na test č.4 pro obvod c6288, kde původní program Atalanta-M dosáhl času 7,44 [s] a nový program dosáhl hodnoty 7,53 [s]. Údaj se liší o 1,21\% původní hodnoty, to znamená, že došlo k nepatrnému zpomalení.
Pro zajímavost jsem uvedl i měření pro zkompilované programy bez optimalizace kódu, kde je vidět, že programovací jazyk C nepotřebuje příliš optimalizovat, protože údaje naměřené s optimalizovaným a neoptimalizovaným programem jsou pouze v nepatrných rozdílech. Naproti tomu když se podíváme na výsledky u nového programu, tak vidíme, že zpomalení u neoptimalizovaného kódu je velice markantní.

\begin{figure}[h]
\begin{center}
\includegraphics[width=100mm]{Test1}
\caption{Výsledky testu č. 1}
\label{fig:Test1}
\end{center}
\end{figure}

\begin{figure}[h]
\begin{center}
\includegraphics[width=100mm]{Test2}
\caption{Výsledky testu č. 2}
\label{fig:Test2}
\end{center}
\end{figure}

\begin{figure}[h]
\begin{center}
\includegraphics[width=100mm]{Test3}
\caption{Výsledky testu č. 3}
\label{fig:Test3}
\end{center}
\end{figure}

\begin{figure}[h]
\begin{center}
\includegraphics[width=100mm]{Test4}
\caption{Výsledky testu č. 4}
\label{fig:Test4}
\end{center}
\end{figure}

\begin{figure}[h]
\begin{center}
\includegraphics[width=100mm]{Test5}
\caption{Výsledky testu č. 5}
\label{fig:Test5}
\end{center}
\end{figure}

\begin{figure}[h]
\begin{center}
\includegraphics[width=100mm]{Test6}
\caption{Výsledky testu č. 6}
\label{fig:Test6}
\end{center}
\end{figure}

\begin{figure}[h]
\begin{center}
\includegraphics[width=100mm]{Test7}
\caption{Výsledky testu č. 7}
\label{fig:Test7}
\end{center}
\end{figure}

\begin{figure}[h]
\begin{center}
\includegraphics[width=100mm]{Test8}
\caption{Výsledky testu č. 8}
\label{fig:Test8}
\end{center}
\end{figure}

\begin{figure}[h]
\begin{center}
\includegraphics[width=100mm]{Test9}
\caption{Výsledky testu č. 9}
\label{fig:Test9}
\end{center}
\end{figure}

\begin{figure}[h]
\begin{center}
\includegraphics[width=100mm]{Test10}
\caption{Výsledky testu č. 10}
\label{fig:Test10}
\end{center}
\end{figure}



