werkt nu
[tt2015.git] / 1intro.tex
1 \subsection{Objectives}
2 %1, 2
3 The objective of this document is to provide an approach for testing a
4 particular implementation of \textit{Transmission Control Protocol} (TCP). TCP
5 is a host-to-host protocol that provides a reliable communication.
6
7 This testing approach can be used by either an internal test team or an
8 independent testing team. The test effort's goal is to become confident about
9 the conformance of an existing implementation to the specification created by
10 \textit{The Internet Engineering Task Force}
11 (IETF)\footnote{\url{http://www.ietf.org}} as document
12 \textit{RFC793}~\cite{rfc793}. This document is explicitly \emph{not} intended
13 to serve as guideline for testing during the development phase, but for testing
14 conformity to the specification of an \emph{existing} implementation.
15
16 \subsection{SUT}
17 %3,4
18 \includegraphics[width=\linewidth]{SUTsetup.eps}
19
20 The \textit{System under test} (SUT) is the TCP implementation of a system
21 running a Linux kernel\footnote{\url{http://www.kernel.org}} version $3.13$.
22 TCP is not a program that runs on its own and therefore we have to make use of
23 some tools to be able to test the protocol. This is further described in
24 Section~\ref{section:testenv}.
25
26 The specification of TCP is too big to be tested in one go so we focus on
27 specific sections from \textit{RFC793}.
28 \begin{itemize}
29 \item Sequence numbers~\cite[Section~3.3]{rfc793}.
30 \item Setting up a connection via the
31 ``Three-way handshake''~\cite[Section~3.4]{rfc793}.
32 \item Closing a connection~\cite[Section~3.5]{rfc793}.
33 \item Data communication~\cite[Section~3.7]{rfc793}.
34 \end{itemize}
35
36 \subsection{Risks}
37 \label{sec:risks}
38 %5. Risks
39 Risks can be divided into two categories. Project risks and product risks.
40 Because an existing implementation is tested the project risks are non
41 applicable. Product risks however are very important since it is unknown if the
42 product has been tested during development.
43
44 The product risks for the SUT are significant because misbehaviour of the SUT
45 could have potential large consequences. The key characteristics of TCP are
46 integrity and reliability~\cite[Section~1]{rfc793}, these characteristics cease
47 to exist when the implementation is faulty.
48
49 Because TCP is a core functionality of a networking capable system it is
50 crucial that the TCP implementation functions according to the specification.
51 Several critical systems could rely on the correct functionality of the TCP
52 implementation. A failure in the SUT could therefore have extensive
53 consequences. Even more so since TCP is a computer-to-computer protocol, which
54 leaves no room for ambiguity, which could be solved in a computer-to-human
55 protocol. Another effect of the SUT being a computer-to-computer protocol
56 without a standalone program is the fact that we can only observe the SUT
57 indirectly. With the use of tools we can see what the output is for a given
58 input but there is always the risk that the tools give an incomplete or faulty
59 view of the output.