Merge branch 'master' of https://github.com/dopefishh/tt2015
authorCharlie Gerhardus <charlie.gerhardus@somedomain.something>
Sun, 4 Oct 2015 15:56:35 +0000 (17:56 +0200)
committerCharlie Gerhardus <charlie.gerhardus@somedomain.something>
Sun, 4 Oct 2015 15:56:35 +0000 (17:56 +0200)
1  2 
2approach.tex

diff --combined 2approach.tex
@@@ -34,15 -34,69 +34,69 @@@ to the SUT
        mentioned in Section~\ref{sec:risks} extra emphasis should be placed on
        testing \emph{Functional Correctness} as recovery from Failures in
        computer-to-computer systems is problematic.
+       \item \textbf{Performance efficiency} \label{sec:perf_eff}\\  
+       As the SUT runs as a service on a system with other programs it must have
+       efficient \emph{resouce utilisation}. It can not contain any memory leaks
+       or use other resources more than necessary.
+       \item \textbf{Compatibility}\\  
+       \emph{Interoperability} is the key feauture of the SUT as it's purpose is to
+       communicate with other systems implementing the TCP protocol. Therefore
+       it is of vital importance that the SUT impements the TCP procotol correctly.
+       Furthermore it is very important that the SUT can \emph{co-exist} with other
+       programs on the system it runs on, since it is used as a service by those
+       programs. This means that the SUT has to handle preemption as well as having
+       multiple programs requesting it's services at once.
+       \item \textbf{Reliability}\\  
+       As stated before, the SUT is used as a core service, this means it has to be
+       very \emph{mature}. It needs to behave as expected under normal working 
+       conditions. As it can continually be requested the SUT needs to have 
+       constant
+       \emph{availibility}. As the SUT relies on an (potentially) unreliable 
+       channel to send and receive data it needs to be \emph{fault tolerant}. The 
+       SUT needs to properly handle errors in received data or complete 
+       unavailibilty of the underlying channel. 
+       \item \textbf{Security}\\  
+       \emph{Confidentiliality} is an important aspect for the SUT. Received 
+       data should only be delivered to the program to which it is adressed.
  \end{itemize}
+ This leaves three categories which are not relevant the SUT. Below we will
+ shortly discuss per categorie why these are not relevant. \emph{Maintainability}
+ is an important aspect of any software system, however for the SUT it is not a
+ core aspect, as it is first and foremost of importance that the implementation
+ is correct, furthermore TCP does not change often. \emph{Usability} isn't a core
+ aspect either, as the SUT is not used directly by humans, but is a service which
+ is adressed when another program needs it. \emph{Portability} isn't either as
+ the SUT is installed on a system once and intended to work on that system.
  
  \subsubsection{Quality in use}
+ Quality in use is dived into five subcategories. Below we will discuss the 
+ categories which are relevant to the SUT. 
+ \begin{itemize}
+       \item \textbf{Effectiveness}\\  
+       This is the core aspect of the SUT, users (other programs) need to be able
+       to effectively use the SUT to send and receive data.
+       \item \textbf{Efficiency}\\  
+       This issue has already been covered above under 
+       ``performance efficiency''~\ref{sec:perf_eff}.
+       \item \textbf{Satisfaction}\\  
+       It is important that programs using the SUT can \emph{trust} that the SUT
+       provides the promised services. This means that data is send and received
+       reliably and the SUT provides clear and unambigious errors when this service 
+       can not be provided.
+       \item \textbf{Context Coverage}\\  
+       The SUT needs to behave as expected in all specified contexts 
+       (\emph{context completeness}).
+ \end{itemize}
+ This leaves \emph{freedom from risk}, which we consider not relevant as the 
+ SUT itself does not pose any risks, and correct implementation (which is covered
+ in the other categories) gives clear guarantees to programs using the services
+ of the SUT. 
  
  \subsection{Levels and types of testing} \label{levels}
  
  The client will deliver a product for certification. This means our team will only conduct acceptance testing and assume that the client who requested certification has conducted unit, module and integration testing. We will only be conducting black-box testing and the client is not required to handover any source-code. Initially we will conduct several basic test cases based on experience acquired from previous certification requests (error guessing). If the product fails these basic tests we reject it and seize all further activities. If the product is not rejected we will proceed with more thorough testing. For each test we produce a test report. If any of the test cases fail the product is still rejected but in order to deliver usable feedback to the client we will still produce a test report.
  
 -\subsection{Test generation}
 +\subsubsection{Test generation}
  
  The basic tests mentioned in section \ref{levels} are conducted using a checklist. If any of the checks fail we immediately reject the product.
  
@@@ -91,26 -145,4 +145,26 @@@ We will test all possible combinations 
        \item Header: valid/invalid
        \item Payload: valid/invalid
        \item ...
 -\end{enumerate}
 +\end{enumerate}
 +
 +\subsubsection{Test environment en automatization}
 +
 +All the tools we are going to use togetter with the SUT gives us the following collection of software.
 +
 +\begin{enumerate}
 +      \item Windows, used as a host OS.
 +      \item Linux, used as both a host and guest OS.
 +      \item VirtualBox, used to run the guest OS containing the SUT.
 +      \item Wireshark, used on the host in order to capture and analyze network traffic.
 +      \item Bit-Twist, used to prepare network packets.
 +\end{enumerate}
 +
 +All test will be conducted in a virtual environment. We will use VirtualBox to run a Linux distro with the product installed. All the different tests are performed either in VirtualBox (basic tests) or from the host system (transmission analysis). When testing network transmissions we will only analyze the packets received on the host system which originate from the product running in the virtual environment. The host system is disconnected from the Internet or any other network in order to prevent unnecessary traffic.
 +
 +For each test case (except for the basic tests) a file containing previously captured network traffic will be replayed using Wireshark. We will use Bit-Twist to update the prepared packets with the MAC address of the guest network adapter. The response packets coming from the guest OS will be recorded and analyzed at a later stage. The valid packets are obtained by capturing traffic between known working alternatives to the SUT. The invalid packets are generated from this valid traffic using Bit-Twist. The boundary values for the different parameters (fields in packets) are determined by hand.
 +
 +\begin{enumerate}
 +      \item VirtualBox, https://www.virtualbox.org/
 +      \item Whireshark, https://www.wireshark.org/
 +      \item Bit-Twist, http://bittwist.sourceforge.net/
 +\end{enumerate}