request defined
[tt2015.git] / a2 / 1cases.tex
index 79da29d..7b90350 100644 (file)
@@ -35,7 +35,7 @@ user permissions.
        \hline\hline
        Check 3 & \multicolumn{2}{l|}{Initialize the testing environment..}\\
        \hline
        \hline\hline
        Check 3 & \multicolumn{2}{l|}{Initialize the testing environment..}\\
        \hline
-       \multirow{5}{*}{Course of action}
+       \multirow{6}{*}{Course of action}
                & 1. & Boot the SUT as in \emph{Check 1}.\\
                & 2. & Setup iptables by executing
                        \texttt{\# code/iptables.sh}~\footnote{The IPTables script ensures
                & 1. & Boot the SUT as in \emph{Check 1}.\\
                & 2. & Setup iptables by executing
                        \texttt{\# code/iptables.sh}~\footnote{The IPTables script ensures
@@ -43,9 +43,11 @@ user permissions.
                & 3. & Navigate to the working directory by running
                        \texttt{\$ cd /home/student/tt2015}\\
                & 4. & Compile the echo server by running 
                & 3. & Navigate to the working directory by running
                        \texttt{\$ cd /home/student/tt2015}\\
                & 4. & Compile the echo server by running 
-                       \texttt{\# cd code/server \&\& make \&\& cd -}\\
+                       \texttt{\# cd code/server \&\& make}\\
                & 5. & Start the echo server by running
                        \texttt{\# cd code/server \&\& java Main}\\
                & 5. & Start the echo server by running
                        \texttt{\# cd code/server \&\& java Main}\\
+               & 6. & Generate all test cases by running
+                       \texttt{\$ python code/client/gen.py}\\
        \hline
        Passed & \multicolumn{2}{l|}{\textit{Yes/No}}\\
        \hline\hline
        \hline
        Passed & \multicolumn{2}{l|}{\textit{Yes/No}}\\
        \hline\hline
@@ -119,16 +121,31 @@ these partitions are given.
                        \item Correct
                        \item Incorrect
                \end{enumerate}
                        \item Correct
                        \item Incorrect
                \end{enumerate}
-       \item \emph{Packet order}
+       \item \emph{Segment order}
                \begin{enumerate}
                        \item Correct
                        \item Out of order
                \begin{enumerate}
                        \item Correct
                        \item Out of order
-                       \item Missing packets
+                       \item Missing Segments
                \end{enumerate}
 \end{enumerate}
 
 These partitions were chosen since they correspond to key parts of the TCP
                \end{enumerate}
 \end{enumerate}
 
 These partitions were chosen since they correspond to key parts of the TCP
-specification. 
+specification. A single request consists of a number of packets that sent a
+to the \emph{echo-server} and back. The TCP specification state that such a
+transaction requires the following messages.
+
+\begin{center}
+       Script $-$ SYN $A$ $\rightarrow$ SUT \\
+       Script $\leftarrow$ SYN-ACK $(A+1)$ $B$ $-$ SUT \\
+       Script $-$ ACK $(A+1)$ $(B+1)$ $\rightarrow$ SUT \\
+       Script $-$ ACK-PUSH $(A+1)$ $(B+2)$ \emph{msg} $\rightarrow$ SUT \\
+       Script $\leftarrow$ ACK $(A+2+msg_{length})$ $(B+3)$ $-$ SUT \\
+       Script $\leftarrow$ ACK-PUSH $(A+2+msg_{length})$ $(B+3)$ \emph{msg} $-$ SUT
+\end{center}
+
+%
+% één na laatste packket, moet dit B+3 of B+2 zijn?
+%
 
 TCP segments are send over a TCP connection from a \emph{source} to a \emph{destination port}. Therefore segments which are received that have a 
 source or destination port set to an incorrect value should not be regarded
 
 TCP segments are send over a TCP connection from a \emph{source} to a \emph{destination port}. Therefore segments which are received that have a 
 source or destination port set to an incorrect value should not be regarded
@@ -161,29 +178,35 @@ Partitions 2 to 6 are tested using pairwise testing to keep the number of test
 cases feasible. The pairs are then all *except some where it does not make sense
 to do so) tested with the different request sizes of partition 1.
 
 cases feasible. The pairs are then all *except some where it does not make sense
 to do so) tested with the different request sizes of partition 1.
 
-This is expressed in Table~\ref{table:testpairs}.
+This is expressed in Table~\ref{table:testpairs}. In this table the first five
+columns represent the different options for the partitions 2 to 6 of the above
+enumeration. The last four columns are the different number segments as
+described in the partition 1 of the above enumeration. These cells identify
+individual test cases by a number. An \xmark in the cell indicates that this
+test case can not be created as it is not possible with that number of segments
+(eg. sending segments out of order when the number of segments is 1).
 
 \newcounter{TCC}
 \setcounter{TCC}{1}
 \newcommand{\doTCC}{\theTCC \stepcounter{TCC}}
 \begin{table}[H]
        \centering
 
 \newcounter{TCC}
 \setcounter{TCC}{1}
 \newcommand{\doTCC}{\theTCC \stepcounter{TCC}}
 \begin{table}[H]
        \centering
-       \begin{tabular}{|l|l|l|l|l|l|l|l|l|l|l|}
+       \begin{tabular}{|l|l|l|l|l|l||l|l|l|l|}
                \hline
                \hline
-               & \multicolumn{10}{c|}{\textbf{Partition}}\\
+               & \multicolumn{9}{c|}{\textbf{Partition}}\\
                \hline
                \hline
-               & \# & 4 & 5 & 3 & 6 & 2 & 1a & 1b & 1c & 1d\\
+               & 4 & 5 & 3 & 6 & 2 & 1a & 1b & 1c & 1d\\
                \hline\hline
                \multirow{9}{*}{Instance} 
                \hline\hline
                \multirow{9}{*}{Instance} 
-               & 1 & a & a & a & a & a & \doTCC & \doTCC & \doTCC & \doTCC\\
-               & 2 & a & b & b & c & b & \xmark & \xmark & \doTCC & \doTCC\\
-               & 3 & c & a & b & a & b & \xmark & \xmark & \doTCC & \doTCC\\
-               & 4 & c & b & a & c & a & \xmark & \xmark & \doTCC & \doTCC\\
-               & 5 & b & a & b & c & a & \xmark & \xmark & \doTCC & \doTCC\\
-               & 6 & b & b & a & b & b & \xmark & \xmark & \doTCC & \doTCC\\
-               & 7 & c & b & b & a & b & \doTCC & \doTCC & \doTCC & \doTCC\\
-               & 8 & b & b & b & a & b & \doTCC & \doTCC & \doTCC & \doTCC\\
-               & 9 & a & b & b & b & a & \xmark & \xmark & \doTCC & \doTCC\\
+               & a & a & a & a & a & \doTCC & \doTCC & \doTCC & \doTCC\\
+               & a & b & b & c & b & \xmark & \xmark & \doTCC & \doTCC\\
+               & c & a & b & a & b & \xmark & \xmark & \doTCC & \doTCC\\
+               & c & b & a & c & a & \xmark & \xmark & \doTCC & \doTCC\\
+               & b & a & b & c & a & \xmark & \xmark & \doTCC & \doTCC\\
+               & b & b & a & b & b & \xmark & \xmark & \doTCC & \doTCC\\
+               & c & b & b & a & b & \xmark & \doTCC & \doTCC & \doTCC\\
+               & b & b & b & a & b & \xmark & \doTCC & \doTCC & \doTCC\\
+               & a & b & b & b & a & \xmark & \xmark & \doTCC & \doTCC\\
                \hline
 \end{tabular}
 \caption{Combinations of test cases}
                \hline
 \end{tabular}
 \caption{Combinations of test cases}
@@ -214,7 +237,14 @@ test suite can be clearly assessed.
 
 As always, $100\%$ completeness is not feasible, therefore test cases are
 carefully selected to cover the most interesting parts of the TCP specification
 
 As always, $100\%$ completeness is not feasible, therefore test cases are
 carefully selected to cover the most interesting parts of the TCP specification
-to ensure a test suite.
+to ensure a complete but feasible test suite.
+
+To further increase the coverage of the test suites tests are randomized. The
+tests which test the handling of \emph{bit errors}, changes in the \emph{packet
+order} and \emph{dropped packets} randomize where they introduce an error. The
+test suite runs these tests multiple times to increase the likelihood that they
+discover a fault which is only present when an error occurs in a certain
+position. 
 
 To further decrease the number of tests needed test cases are divided into
 equivalence partitions and the combination of cases as described in 
 
 To further decrease the number of tests needed test cases are divided into
 equivalence partitions and the combination of cases as described in 
@@ -291,6 +321,28 @@ Before every test case use the following steps to initialize the testing environ
        & 2. Execute the script by running \texttt{\# code/client/tests/5.py} \\\hline
        Valid trace & Verify that the script prints 'Success'. \\\hline
        \hline
        & 2. Execute the script by running \texttt{\# code/client/tests/5.py} \\\hline
        Valid trace & Verify that the script prints 'Success'. \\\hline
        \hline
+       
+       Nr & 6 \\\hline
+       Title & Request with corrupted source port. \\\hline
+       Input & Generated packets with 1byte payload, in these packets the source port number is increased by one. \\\hline
+       Expected output & - \\\hline
+       \multirow{2}{*}{Course of action}
+       & 1. Use the steps listed above in order to start the SUT. \\
+       & 2. Execute the script by running \texttt{\# code/client/tests/6.py} \\\hline
+       Valid trace & Verify that the script prints 'Success'. \\\hline
+       \hline
+       
+       
+       Nr & 6 \\\hline
+       Title & Request with corrupted destination port. \\\hline
+       Input & Generated packets with 1byte payload, in these packets the destination port number is increased by one. \\\hline
+       Expected output & - \\\hline
+       \multirow{2}{*}{Course of action}
+       & 1. Use the steps listed above in order to start the SUT. \\
+       & 2. Execute the script by running \texttt{\# code/client/tests/6.py} \\\hline
+       Valid trace & Verify that the script prints 'Success'. \\\hline
+       \hline
+       
 \end{longtable}
 
 %\begin{tabularx}{\linewidth}{| l | X|}
 \end{longtable}
 
 %\begin{tabularx}{\linewidth}{| l | X|}