\documentclass[signature]{deltares_manual}
\usepackage[titletoc]{appendix}
\usepackage{lscape}
\usepackage{wasysym}

\renewcommand\BackgroundPicChapter{
    \put(0,0){
    \parbox[b][\paperheight]{\paperwidth}{%
        \vspace{4\baselineskip}
        \hspace{220mm}
        \includegraphics[width=15mm]{pictures/Ribbon.pdf}%
        \vfill
        }
    }
}

\renewcommand{\contactsalesandsupport}{
	\textbf{Contact:}\\
	\begin{tabular}[t]{@{}p{0.50\textwidth}p{0.50\textwidth}}
	\vspace*{-1.5\baselineskip}
	\begin{tabbing}
	Helpdesk Water  \\
	Rijkswaterstaat WVL \\
	P.O. 2232 \\
	3500 GE Utrecht \\
	The Netherlands \\
	\end{tabbing}
	&
	\vspace*{-1.5\baselineskip}
	\begin{tabbing}
	telephone: \= +31\,88\,797\,7102 \\
	www:       \> http://www.helpdeskwater.nl \\
	\end{tabbing}
	\end{tabular}
}

%
%------------------------------------------------------------------------------
%
\begin{document}
\pagestyle{empty}
\includepdf[pages=1, offset=72 -70]{pictures/D-SoilModel-TestReport.pdf} % links-rechts past precies
\cleardoublepage

\newcommand{\ProgramName}{D-Soil~Model\xspace}
\newcommand{\OK}{\LARGE \textcolor[rgb]{0.2,0.8,0.2}{\textbf{\smiley}} \normalsize}
\newcommand{\OKbut}{\LARGE \textcolor[rgb]{1,0.68,0.36}{\textbf{\smiley}} \normalsize}
\newcommand{\NotOK}{\LARGE \textcolor[rgb]{1,0,0}{\textbf{\frownie}} \normalsize}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%      IMPORTANT : THE COMMANDS BELOW MUST BE      %%%%%%%%%%%%%
%%%%%%%%%%%%%          UPDATED FOR EACH NEW RELEASE            %%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\VersionNumber}{24.2.1\xspace}

\newcommand{\VersionDSLCore}{24.1.1}
\newcommand{\VersionDSLFormsGeo}{24.1.1}
\newcommand{\VersionDSLFormsMap}{24.1.1}
\newcommand{\VersionDSLFormsStandard}{24.1.1}
\newcommand{\VersionDSLGeo}{24.1.1}
\newcommand{\VersionDSLGeographic}{24.1.1}
\newcommand{\VersionDSLGeoIO}{24.1.1}
\newcommand{\VersionDSLProba}{24.1.1}
\newcommand{\VersionDGSGef}{16.1.1.3}
\newcommand{\VersionGefTwee}{3.1.2.1002}
\newcommand{\VersionDevExpress}{23.1.3.0}
\newcommand{\VersionDotSpatial}{1.8.0.0}

\newcommand{\DirectoyPDFTestDocument}{../../../test/DSoilModel-TestDocumenten}
\newcommand{\FileNamePDFTestDocument}{Testdocument_DSoilModel_24_2_0.pdf}



\title{\ProgramName}
\subtitle{}
\manualtype{Test Report for version \VersionNumber}

\version{5.0}
\date{November 2024
}
\author{dr. V. Trompille}


\client{RWS}
\contact{}
\projectnumber{11210373-002}
\documentid{}
\reference{-}
\classification{-}

\keywords{BOI, Stochastic subsoil schematization, soil profile, soil properties, macro stability, piping, flow slide}

\references{Refer to \autoref{chp:References}.}

\summary{This document contains the test report for \ProgramName \VersionNumber. All the unit tests performed for the validation of \ProgramName pass and cover 67.3\% of the code, so more than the minimum required code coverage of 60\% for Delta Shell Light products. All the features of \ProgramName were tested during the user interface testing (using test scripts) and work as expected. All the `must-have' and `non-functional' requirements are implemented and met. The functioning of \ProgramName as described in the Functional Design is therefore  ensured.

\textbf{\footnotesize{Samenvatting}} \newline
Dit document bevat het test rapport voor \ProgramName \VersionNumber. Alle uitgevoerde 'unit tests' voor de validatie van \ProgramName slagen en dekken 67.3\% van de code, dus meer dan de minimaal vereiste code dekking van 60\% voor Delta Shell Light producten. Alle functionaliteit van \ProgramName werd getest tijdens de 'user interface' testen (met behulp van testscripts) en werkt zoals verwacht. Alle `must-have' en `niet-functionele' requirements zijn geimplementeerd en voldoen. De werking van \ProgramName, zoals beschreven in het functioneel ontwerp, is daarom gewaarborgd.}

%\authori{dr. V. Trompille}
%\revieweri{dr.ir. J.G. van \newline Putten}
%\approvali{ir. J. Icke}
%\versioni{1.0}
%\datei{Aug. 2016}
%
%\authorii{dr. V. Trompille}
%\reviewerii{dr.ir. J.G. van \newline Putten}
%\approvalii{ir. J. Icke}
%\versionii{2.0}
%\dateii{Dec. 2016}
%
%\authoriii{dr. V. Trompille}
%\revieweriii{dr.ir. J.G. van \newline Putten}
%\approvaliii{ir. J. Icke}
%\versioniii{3.0}
%\dateiii{Jan. 2017}

\authori{dr. V. Trompille}
\revieweri{dr.ir. J.G. van \newline Putten}
\approvali{ir. J. Icke}
\organisationi{Deltares}
\versioni{4.0}
\datei{Sept. 2017}

\authorii{dr. V. Trompille}
\reviewerii{B.S.T.I.M. The}
\approvalii{drs. A. Baart}
\versionii{5.0}
\dateii{Nov. 2024}

\status{final}
\disclaimer{}

\deltarestitle

%------------------------------------------------------------------------------
\chapter{Introduction} \label{chapter1}

\section{Purpose and scope of this document} \label{sec:1.1}

This document contains the Test Report for \ProgramName. 

The document will not give any background on the context of the BOI project. For this purpose the reader is referred to the BOI program and to its supporting technical reports and their background reports underneath (\autoref{sec:1.2}). 

This document will not describe how the requirements of the functional design are implemented in the program.

This document describes the results of the tests that must take place before the program can be released. The tests must ensure that all the requirements are fulfilled with and that the quality of the program is sufficient. This document reports the success or failure of the relevant tests.

\section{Other system documents} \label{sec:1.2}

The full documentation on the program comprises the following documents.

\renewcommand{\arraystretch}{1.3}

\begin{table}[H]
%\caption{xxx}
%\label{xxx}
\begin{tabular}{|p{46mm}|p{\textwidth-46mm-24pt}|} \hline 
\textbf{Title} & \textbf{Content} \\ \hline
Functional Design \newline \citep{DSoilModel_FunctionalDesign} & Description of the requirements and functional design of \ProgramName. \\ \hline
Technical Design \newline \citep{DSoilModel_TechnicalDesign} & Description of the implementation of the technical design of \ProgramName. \\ \hline
Programmers documentation & Description of the arguments and usage of different software components, generated from in-line comment with Doxygen. \\ \hline
Test Plan \newline \citep{DSoilModel_TestPlan} & Description of the different regression and acceptation tests, including target values.  \\ \hline
Test Report \newline (this document) & Description of the test results (incl. test scripts). \\ \hline
User Manual \newline \citep{DSoilModel_Manual} & Description of the different functionalities available in the \textit{User Interface} and background information. \\ \hline
\end{tabular}
\end{table}


\section{Version}
These are the changes in this version of the document compared to the previous version.
Only these changes are reviewed.

\subsection{Version 4.0}
The following sections have been updated:
\begin{itemize}
	\item the number of unit/integration tests in \autoref{sec:2.1}
	\item the code coverage in \autoref{sec:CodeCoverage}
	\item the conclusions in \autoref{sec:ccl} and \autoref{chpCCL}
	\item all the pictures of the code coverage in appendix \autoref{app:CodeCoverage}
	\item the test document in appendix \autoref{app:TestDocument}
\end{itemize}


\subsection{Version 5.0}
The following sections have been updated:
\begin{itemize}
	\item the number of unit/integration tests in \autoref{sec:2.1}
	\item the code coverage in \autoref{sec:CodeCoverage}
	\item all the pictures of the code coverage in appendix \autoref{app:CodeCoverage}
	\item the test document in appendix \autoref{app:TestDocument}
\end{itemize}


\section{Requirements} \label{sec:1.3}

\subsection{Non-functional requirements}

In \autoref{tab:NFREQs}, the non-functional requirements of \ProgramName are enumerated. Note that only the requirements applicable to the testing of the program are listed. The full description of non-functional requirements of \ProgramName can be found in the Functional Design of \ProgramName \citep{DSoilModel_FunctionalDesign}.

\begin{table}[H]
\caption{Non-functional requirements \ProgramName applicable to testing} \label{tab:NFREQs} 
\begin{tabular}{|p{15mm}|p{\textwidth-15mm-24pt}|} \hline 
\rowcolor[gray]{.8}\textbf{Nr.} & \textbf{Description requirement} \\ \hline

\textbf{NFR3} & Data definitions will follow existing and emerging standards such as IRIS as much as possible. (must have). \\ \hline

\textbf{NFR6} & Ringtoets and its computational core must perform sufficient error checks on the validity and completeness of data during import or input, as well as during a computation. Ringtoets needs to show warnings and error messages in an error message dialog, and also write them to a log file. The message text needs to be clear in what went wrong and where it went wrong (context). The message finally needs to supply suggestions for improvement wherever possible (read \ProgramName for Ringtoets. ) \\  \hline

\textbf{NFR12} & The user-interface may not cause crashes during regular usage. \\ \hline

\textbf{NFR15} & The general required code coverage is 80\%, except for the Delta Shell Light components, therefore the code coverage of 60\% is required. Applicable for D-Soil Model; 60 as it is built with Delta Shell Light components. \\  \hline

%\textbf{R13} & Software product wordt getest conform test afspraken (dus inhoudelijke test en acceptatietest). Er is voor elke productie stap een helder testplan, in de testen wordt aangetoond dat de functionaliteit is gerealiseerd. \\ \hline 

%\textbf{U123} & De WTI Software moet tot een eenduidig en reproduceerbaar resultaat leiden. \\ \hline

\textbf{U124} & De WTI Software moet robuust zijn voor kleine variaties in de invoer. Onder 'robuust' wordt verstaan: nooit een software crash. Dus: ofwel een melding dat invoer onjuist is, ofwel een melding dat een som niet convergeert, ofwel een antwoord retourneert. \\ \hline

\textbf{U129} & Alle componenten binnen een bibliotheek moeten foutcodes retourneren met een gestandaardiseerde (nog nader vast te stellen) betekenis of gebruiken excepties om fouten door te geven.   \\ \hline

%\textbf{U131} & Om de bibliotheken te kunnen testen levert elke bibliotheek testsoftware mee in de vorm van unit tests. \\ \hline 

\textbf{U133} & De WTI tools worden standaard alleen uitgeleverd met een Nederlandstalige UI en met Nederlandstalige meldingen en rapportages. \\ \hline 

\textbf{U145} & De naamgeving van objecten, parameters, functies moet over alle applicaties heen consistent zijn. Voor dat doel moet gebruik worden gemaakt van de actuele versies van de terminologielijst en de parameterlijst.  \\ \hline

\textbf{TAB1} & Er moet een installatietest inclusief een testdataset worden meegeleverd met de applicatie, zodat technisch beheerders na installatie eenvoudig kunnen controleren of de applicatie werkt. \\ \hline

\textbf{TAB2} & De  applicaties  moeten  door  gebruikers  gebruikt  kunnen  worden  met standaardrechten. Het moet dus niet nodig zijn om de applicatie uit te voeren met administrator rechten, met uitzondering van installatie. \\ \hline

\textbf{Top 10} & De gebruiker kan bepalen waar de gegevens worden neergezet. 
%It must be possible to save all the data to a project database on an user-defined location. Units of the parameters are saved in the base and derived units of the International System of Units (SI-units). In appendix C the display units of the parameters are given. A user must be warned if he wants to close the application without saving changes.
\\ \hline

%NFR 2 & The regular conventions, standards, tools and libraries for Deltares Systems software will be used. (must have).
%NFR 14 & Consistency between the input data and the output data must be guaranteed. (must have) \\ \hline
\end{tabular}
\end{table}

\subsection{Functional requirements}

In \autoref{tab:REQs}, the functional requirements of \ProgramName are ranked from must-have to won't-have. The full description of the requirements can be found in the Functional Design of \ProgramName \citep{DSoilModel_FunctionalDesign}.

\begin{longtable}{|p{20mm}|p{1.05\textwidth-40mm-36pt}|p{20mm}|}
\caption{Functional requirements of \ProgramName} \label{tab:REQs} \\ \hline 
\rowcolor[gray]{.8}\textbf{Nr.} & \textbf{Description requirement} & \textbf{MoSCoW} \\ \hline
REQ 3.1 & Import data. & must-have \\ \hline
REQ 3.3 & Select relevant SOS information for project & must-have \\ \hline
REQ 5.1 & Supply the subsoil schematization  and -parameters  for the WTI macro stability kernel & must-have \\ \hline
REQ 5.2 & Supply the subsoil schematization and -parameters for the WTI piping kernel. & must-have \\ \hline
REQ 5.4 & All relevant subsoil information & must-have \\ \hline
REQ 6.1 & Stochastic characterization of the variables & must-have \\ \hline
REQ 6.3 & Separate segments for each failure mechanism & must-have \\ \hline
REQ 6.4 & Definition of the location of the 1D profile for Piping and DFlowSlide & must-have \\ \hline
REQ 6.5 & Profile properties & must-have \\ \hline
REQ 6.6 & Layer properties & must-have \\ \hline
REQ 7.1 & Stochastic subsoil information & must-have \\ \hline
REQ 8.2 & Table view for soil parameters & must-have \\ \hline
REQ 8.4 & Profile view to modify soil profiles & must-have \\ \hline
REQ 8.6 & Show segments with labels & must-have \\ \hline
REQ 8.10 & 1D Scenario overview & must-have \\ \hline
REQ 8.13 & Show SOS scenario's in 2D profiles & must-have \\ \hline
REQ 9.1 & Name soil materials & must-have \\ \hline
REQ 9.2 & Edit the chances of a SOS scenario & must-have \\ \hline
REQ 9.3 & Turn a 1D profile into a 2D profile & must-have \\ \hline
REQ 9.4 & Draw 2D sti files & must-have \\ \hline
REQ 9.5 & Have reference points to draw surface lines on 2D profiles & must-have \\ \hline
REQ 9.7 & Define soil layers & must-have \\ \hline
REQ 9.8 & Allocate soil material to layer & must-have \\ \hline
REQ 9.9 & Define layer as aquifer or aquitard & must-have \\ \hline
REQ 9.10 & Enter yield stresses for macro stability & must-have \\ \hline
REQ 9.12 & Modify the location of de borehole or CPT in the 2D profile. & must-have \\ \hline
REQ 9.14 & Minimal validity check on the data & must-have \\ \hline
REQ 9.18(a) & Add another 1D profile to an existing 2D profile & must-have \\ \hline
REQ 9.20 & Incorporate settlements underneath an embankment & must-have \\ \hline
REQ 9.23 & Import soil area's and segments & must-have \\ \hline
REQ 3.2 & Import and view all SOS data & should-have \\ \hline
REQ 3.4 & Import relevant reference data & should-have \\ \hline
REQ 7.2 & Allocation of CPT's and boreholes to a segment & should-have \\ \hline
REQ 7.3 & Overview of all available borings and CPT's in a segment or cross section & should-have \\ \hline
REQ 7.4 & Overview of all available SOS scenario's in a segment & should-have \\ \hline
REQ 8.7 & Show all soil investigation with labels in map view & should-have \\ \hline
REQ 8.8 & Visualize the surface lines with their characteristic points & should-have \\ \hline
REQ 8.12 & Show data from AHN or a WMS server, or other shape files & should-have \\ \hline
REQ 8.14 & Draw SOS profiles in one segment on the same height for comparison & should-have \\ \hline
REQ 8.15 & Show ground investigation simultaneously to REQ 39 at the same reference level & should-have \\ \hline
REQ 8.16 & Compatibility between different views & should-have \\ \hline
REQ 8.17 & Visibility of yield stress & should-have \\ \hline
REQ 9.11 & Copy/ paste segments for one failure mechanism to the next & should-have \\ \hline
REQ 9.21 & Visualize minimum and maximum of layer boundaries from the SOS data & should-have \\ \hline
REQ 9.24 & Table import/export & should-have \\ \hline
REQ 5.3 & Supply the subsoil schematization and -parameters for the WTI flow slide kernel. & nice-to-have \\ \hline
REQ 6.2 & Determination of soil parameters & nice-to-have \\ \hline
REQ 8.1 & Reference line & nice-to-have \\ \hline
REQ 8.3 & Map view for soil area's & nice-to-have \\ \hline
REQ 8.5 & Automatically project boreholes and CPT onto a cross section & nice-to-have \\ \hline
REQ 8.11 & View Gef files with GefPlotTool & nice-to-have \\ \hline
REQ 9.6 & Interpretation tools & nice-to-have \\ \hline
REQ 9.13 & Logging of all changes to the database & nice-to-have \\ \hline
REQ 9.15 & Extensive validity check on the data for Ringtoets & nice-to-have \\ \hline
REQ 9.16 & Define n and gamma per material parameter for determination of design values & nice-to-have \\ \hline
REQ 9.17 & Store lab data & nice-to-have \\ \hline
REQ 9.18(b) & The user must be able to build a 2D schematization based on multiple 1D profiles. & nice-to-have \\ \hline
REQ 9.19 & Draw a new subsoil configuration & nice-to-have \\ \hline
REQ 9.22 & Longitudinal cut based on dike material & nice-to-have \\ \hline
REQ 4.1 & Existing M-Soil Base functionality & won't have \\ \hline
\end{longtable}

\section{Libraries}

The complete list of libraries used for the release of \ProgramName version \VersionNumber can be found in the document ``Protocol van Overdracht'', part of the documentation delivered with this release.

%\begin{itemize}
	%\item Delta Shell Light libraries:
		%\begin{itemize}
			%\item DSL--Core \VersionDSLCore
			%\item DSL--FormsGeo \VersionDSLFormsGeo
			%\item DSL--FormsMap \VersionDSLFormsMap
			%\item DSL--FormsStandard \VersionDSLFormsStandard
			%\item DSL--Geo \VersionDSLGeo
			%\item DSL--Geographic \VersionDSLGeographic
			%\item DSL--GeoIO \VersionDSLGeoIO
			%\item DSL--Probabilistic \VersionDSLProba
	%\end{itemize}
	%\item Other Deltares libraries:
	%\begin{itemize}
		%\item DGS Gef \VersionDGSGef
		%\item Gef 2 \VersionGefTwee
	%\end{itemize}
	%\item Other libraries:
		%\begin{itemize}
			%\item Dev Express \VersionDevExpress
			%\item Dot Spatial \VersionDotSpatial
	%\end{itemize}
%\end{itemize}

%------------------------------------------------------------------------------
\chapter{Component and Integration Testing} \label{chapter2}

The tests on code level are the unit tests. For each relevant function, a unit test is defined within the C\# solution. A relevant function is a function that actually performs part of the calculation, validation or I/O of the core. Properties and purely administrational functions do not have unit tests.

The tests on functional level are the integration tests. These types of tests combine multiple functions in the kernel to prove that high level functionality works. For this, a unit test is defined within the C\# solution for each method with high level functionality.

To obtain a single code coverage, it is convenient to combine unit and integration tests. For these tests, see the C\# solution or the build server.

These tests are considered to be ok when the unit tests pass and when the code coverage of those tests is more than 60\%, as prescribed in \cite{OverallTestPlanWTI} for Delta Shell Light products.


\section{Number of unit/integration tests and status} \label{sec:2.1}

Different unit tests exist as reported in the table below. All unit/integration tests succeed.

\begin{table}[H]
\caption{Overview of the unit tests and integration tests for \ProgramName}
\label{tab:2-1}
\renewcommand{\arraystretch}{1.3}
\begin{tabular}{|p{\textwidth-40mm-36pt}|p{20mm}|p{20mm}|} \hline
\rowcolor[gray]{.8}\textbf{Class name} & \textbf{Number} & \textbf{Failed} \\ \hline
\multicolumn{3}{|p{120mm}|}{\textbf{\textit{Namespace: Deltares.DSoilModel.Data.Tests}}} \\ \hline
CenterCrestLocationTest & 2 & 0 \\
DSoilModelDataSourceRedirestorTests & 19 & 0 \\ 
DSoilModelIOTest & 23 & 0 \\
DSoilModelProjectTest & 51 & 0 \\ 
DSoilModelTransformerTests & 7 & 0 \\ 
SosSoilLayer1DTest & 7 & 0 \\
SosSoilProfilesImporterTests &  7 & 0 \\ \hline
\multicolumn{3}{|p{120mm}|}{\textbf{\textit{Namespace: Deltares.DSoilModel.Forms.Tests}}} \\ \hline
BoringControlTests & 3 & 0 \\
BoringLookup1DControlTests & 3 & 0 \\
BoringLookup2DControlTest & 3 & 0 \\
CenterCrestLocationPropertyControlTest & 3 & 0 \\
CptControlTests & 3 & 0 \\
CptLookup1DControlTests & 3 & 0 \\
CptLookup2DControlTests & 3 & 0 \\
DSoilModelContextTest & 80 & 0 \\
DSoilModelGeometryEditorTests & 28 & 0 \\
DSoilModelPluginTests & 16 & 0 \\
DSoilModelSegmentGeometryEditorTests & 15 & 0 \\
FilmStripTest & 4 & 0 \\
PreconsolidationStressControlTests & 3 & 0 \\
SegmentControlTests & 3 & 0 \\
SoilProfile1DLookup2DControlTest & 3 & 0 \\
SoilSegmentSplitLocationControlTests & 3 & 0 \\ 
SosSoilLayer1DControlTests & 4 & 0 \\
SosSoilProfile1DControlTest & 4 & 0 \\
SpecificMechanismPointLocationControlTests & 3 & 0 \\ \hline
\textbf{Total} & \textbf{301} & \textbf{0} \\ \hline
\end{tabular}
\end{table}

\section{Code coverage of the unit/integration tests} \label{sec:CodeCoverage}

To determine what proportion of the code is actually being tested by coded tests such as unit tests or integration tests, the code coverage feature of Visual Studio is used. The results of this tool are displayed on the Deltares build server called TeamCity (see appendix \autoref{app:CodeCoverage}). An overview is given in \autoref{tab:2-2} showing the percentage of the code that was tested for each class, method and statement for each of the different assemblies. 

\begin{table}[H]
\caption{Code coverage of the unit tests and integration tests for \ProgramName} 
\label{tab:2-2}
\renewcommand{\arraystretch}{1.3}
\begin{tabular}{|p{\textwidth-83mm-36pt}|p{23mm}|p{28mm}|p{32mm}|} \hline
\rowcolor[gray]{.8} Namespace & \textbf{Class} & \textbf{Method} & \textbf{Statement} \\ \hline
Deltares.DSoilModel.Data \newline (see \autoref{fig:TestCoverageData}) & 100\% (11/11) & 87.7\% (136/155) & 86.1\% (1647/1913) \\ \hline
Deltares.DSoilModel.Forms \newline (see \autoref{fig:TestCoverageForms}) & 83.9\% (26/31) & 56.9\% (316/555) & 61.9\% (4157/6714) \\ \hline
\textbf{Total} & \textbf{88.1\% (37/42)} & \textbf{63.7\% (452/710)} & \textbf{67.3\% (5804/8627)}\\ \hline
\end{tabular}
\end{table}

The code coverage of \ProgramName (\textbf{67.3\%}) is more than the minimum required code coverage of 60\% prescribed in \cite{OverallTestPlanWTI}.

%------------------------------------------------------------------------------
\chapter{System testing (Test Scripts)}  \label{chapter3}

The tests on this level are to provide proof of the fact that the functionalities of the \textit{User Interface} listed in the requirements (\Sref{sec:1.3}) are present and work properly.

The test of the \textit{User Interface} has been executed by a tester using \textit{Test Script(s)}. All the \textit{Test Scripts} are part of the \textit{Test Document}, joined in appendix \autoref{app:TestDocument} at the end of this Test Report. 

\section{Testing of the 'must-have' functional requirements}

In \autoref{tab:OverviewTests}, the 'must-have' functional requirements of \ProgramName are compared to the user-interface features that were tested. Refer to the Functional Design of \ProgramName \citep{DSoilModel_FunctionalDesign} for a complete description of the requirements. 


The legend of \autoref{tab:OverviewTests} is: \\
\begin{tabular}{p{\textwidth}}
\OK $=$ Test-script passes \\
\OKbut $=$ Test-script passes, but some inconveniences were found \\
\NotOK $=$ Test-script fails \\
\end{tabular}

\renewcommand{\arraystretch}{1.1}

\begin{longtable}{|p{18mm}|p{1.05\textwidth-66mm-48pt}|p{13mm}|p{35mm}|} 
\caption{Overview of the 'must-have' requirements and their corresponding test-scripts} \label{tab:OverviewTests} \\ \hline
\rowcolor[gray]{.8} \textbf{REQ} & \textbf{Description} & \multicolumn{2}{c|}{\textbf{Test script(s)}} \\ 
\rowcolor[gray]{.8} &  & \multicolumn{2}{c|}{\textbf{in appendix \autoref{app:TestDocument}}} \\ \cline{3-4}
\rowcolor[gray]{.8} &  & \textbf{nr.} & \textbf{Status + issue nr.} \\ \hline
\textbf{REQ 3.1} & \textbf{Import data:} & & \\
& \quad -- materials (MDB files)							& 7.02	& \OK \\ 
& \quad -- 1D profiles (CSV files)						& 7.03	& \OK \\ 
& \quad -- 2D profiles (STI files)						& 7.04	& \OK \\ 
& \quad -- 2D profiles (GEO files)						& 7.05	& \OK \\ 
& \quad -- surface lines (CSV files)					& 7.06	& \OK \\ 
& \quad -- characteristic points (CSV files)	& 7.07	& \OK \\ 
& \quad -- segments (CSV files)								& 7.08	& \OK \\
& \quad -- segments (shape files)							& 7.09	& \OK \\ 
& \quad -- CPT's (GEF-CPT files)							& 7.10	& \OKbut DSB-853/758\\
& \quad -- Borings (GEF-Boring files)					& 7.11	& \OKbut DSB-834/782/783\\ \hline

\textbf{REQ 3.3} 	& \textbf{Select relevant SOS info. for project:} & & \\
& \quad -- selection of segment from a list:		& 7.09d 	& \OK \\
& 																							& 7.09e 	& \OK \\
& 																							& 7.09g 	& \OK \\ 
& \quad -- definition of failure mechanism location:	& \multicolumn{2}{l|}{See REQ	6.4} \\ \hline

\textbf{REQ 5.1} & \textbf{Supply the subsoil schematization and parameters for WTI macrostability kernel:} & & \\
&	\quad -- one or more soil segments:															& 40.02 	& \OK \\ % Tabellen >> Segmenten
&																																	& 42.01		& \OK \\ % Dwarsdoorsnede >> Segmenten
&																																	& 43.01c	& \OK \\ % Kaart >> Segmenten
& \quad -- one (stochastic) soil profile schematization per segment 	& \multicolumn{2}{l|}{See REQ	7.1} \\ 
& \quad -- profile properties (i.e yield stress)											& \multicolumn{2}{l|}{See REQ	6.5} \\ 
& \quad -- layer properties (i.e. aquifer) 														& \multicolumn{2}{l|}{See REQ	6.6} \\ 
& \quad -- per soil layer, one soil material													& 24.02f & \OK \\ % 1D profile - Material field
& 																																		& 24.02s & \OK \\ % 1D profile - Drop-down list
& 																																		& 31.03c & \OK \\ % 2D profile - Material field
& 																																		& 31.03m & \OK \\ % 2D profile - Drop-down list
& \quad -- per soil material, soil properties for failure mechanism macrostability:	& & \\
&																																										& 12.03a	& \OK \\
&																																										& 12.03b	& \OKbut DSB-591 \\ 
&																																										& 12.03c	& \OK \\ 
&																																										& 12.03d	& \OK \\ 
&																																										& 12.03e	& \OK \\ 
&																																										& 12.03f	& \OKbut DSB-858 \\ 
&																																										& 12.03g	& \OK \\ 
&																																										& 12.03h	& \OKbut DSB-858 \\ 
&																																										& 12.03i	& \OK \\ 
&																																										& 12.03j	& \OKbut DSB-858 \\ 
&																																										& 12.03k	& \OK \\ 
&																																										& 12.03l	& \OKbut DSB-858  \\ 
&																																										& 12.03m	& \OK \\ 
&																																										& 12.03n	& \OKbut DSB-858 \\ 
&																																										& 12.03o	& \OKbut DSB-858 \\ 
&																																										& 12.03p	& \OKbut DSB-858 \\ 
&																																										& 12.03q	& \OKbut DSB-858 \\ 
&																																										& 12.03r	& \OKbut DSB-858 \\ 
&																																										& 12.03s	& \OKbut DSB-858 \\ 
&																																										& 12.03t	& \OKbut DSB-858 \\ 
&																																										& 12.03an	& \OKbut DSB-858 \\% editable
&																																										& 12.05a	& \OK \\ % filter
&																																										& 12.05b	& \OK \\ 
&																																										& 12.05c	& \OK \\ 
&																																										& 12.05d	& \OK \\ 
&																																										& 12.05e	& \OK \\ 
&																																										& 12.05f	& \OK \\ 
&																																										& 12.05q	& \OK \\ \hline
\textbf{REQ 5.2} & \textbf{Supply the subsoil schematisation and parameters for the WTI piping kernel:} & & \\
&	\multicolumn{3}{l|}{\quad -- for soil segments, soil profile schematisation, 1D/2D soil profiles } \\
&	\multicolumn{3}{l|}{\quad scenario's and soil layer, see REQ 5.1.} \\
& \quad -- per soil material, soil properties for failure mechanism piping:					& 12.03a	& \OK \\
&																																										& 12.03b	& \OKbut DSB-591\\ 
&																																										& 12.03c	& \OK \\ 
&																																										& 12.03d	& \OK \\ 
&																																										& 12.03g	& \OK \\ % gamma sat
&																																										& 12.03h	& \OKbut DSB-858  \\ % gamma sat S
&																																										& 12.03u	& \OK \\ % D70
&																																										& 12.03v	& \OKbut DSB-858 \\ 
&																																										& 12.03w	& \OK \\ % permeability
&																																										& 12.03x	& \OKbut DSB-858 \\
&																																										& 12.03an	& \OKbut DSB-836 \\ % editable
&																																										& 12.05g	& \OK \\ % filter
&																																										& 12.05h	& \OK \\ 
&																																										& 12.05i	& \OK \\ 
&																																										& 12.05j	& \OK \\ 
&																																										& 12.05k	& \OK \\ 
&																																										& 12.05l	& \OK \\ 
&																																										& 12.05r	& \OK \\ \hline
\textbf{REQ 5.4} & \textbf{All relevant subsoil information}		&	&  \\
&	\multicolumn{3}{l|}{See '\textit{per soil material, soil properties}' in REQ 5.1 for macrostability } \\
&	\multicolumn{3}{l|}{mechanism and REQ 5.2 for piping mechanism. } \\ \hline

\textbf{REQ 6.1} & \textbf{Stochastic characterization of variables} & 12.04 & \OKbut DSB-860 \\ \hline

\textbf{REQ 6.3} & \textbf{Separate segments for each failure mechanism}: 	&	& \\
&	\quad -- selection of soil segments									& 43.03b 	& \OK \\ 
& \quad -- splitting soil segments 										& 43.03a 	& \OK \\ % paragraph 2.3.2
& \quad -- deleting soil segments 										& 40.01b 	& \OKbut DSB-881 \\ % paragraph 2.3.3
& 																										& 41.03b 	& \OK \\ 
& \quad -- select a mechanism per segment							& 6.02 		& \OKbut DSB-883 \\ 
&																											& 40.02b 	& \OK \\
&																											& 40.05  	& \OK \\
&																											& 43.05  	& \OK \\ \hline

\textbf{REQ 6.4} & \textbf{Definition of the location of the 1D profile } 	& 34 			& \OKbut DSB-744 \\
&	\textbf{for Piping and D-Flow Slide}																			& 35.02a	& \OK \\
&																																						& 35.04a	& \OK \\
&																																						& 35.04f	& \OK \\ \hline

\textbf{REQ 6.5} & \textbf{Profile properties (i.e. yield stresses)} & 30 & \OKbut DSB-744 \\ \hline

\textbf{REQ 6.6} & \textbf{Layer properties (i.e. is aquifer)} & & \\
& \quad -- for 1D profile:		& 24.02j & \OK \\
& 														& 24.02p & \OK \\ % is editable
& 														& 24.03  & \OK \\ 
& 														& 25.03e & \OK \\
& 														& 25.03k & \OK \\ % is editable
& 														& 27.04g & \OK \\ % synchronisation
& 														& 27.04h & \OK \\ % synchronisation
& \quad -- for 2D profile:		& 31.03b & \OK \\
& 														& 31.03j & \OK \\ % is editable
& 														& 31.04  & \OK \\  \hline

\textbf{REQ 7.1} & \textbf{Stochastic subsoil information} 	& 41.01d	& \OK \\ % Table Profielen - Kans 
& 																				 									& 41.01e 	& \OK \\ \hline % Table Profielen - Profiel 

\textbf{REQ 8.2} & \textbf{Table view for soil parameters} 	& 12.01 & \OKbut DSB-881 \\ % Icons in table
&																														& 12.03 & \OKbut DSB-591/858/836 /652\\ % Names of soil parameters
&																														& 13    & \OKbut DSB-652\\ \hline % Property window

\textbf{REQ 8.4} & \textbf{Profile view to modify soil profiles} & & \\
&	\quad -- drawing/modification of 1D soil profiles	& 23 & \OKbut DSB-881 \\ % Tables >> 1D profielen
&																												& 24 & \OKbut DSB-868\\ % Property view >> 1D profielen
&																												& 25 & \OKbut DSB-870\\ % Property view >> Layer
&																												& 26 & \OKbut DSB-882 \\ % Dwarsdoorsnede view >> 1D profielen
&																												& 27 & \OKbut DSB-870 \\ % 1D profielen - Synchronistion of views
&	\quad -- drawing/modification of 2D soil profiles	& 28 & \OKbut DSB-881 \\ % Tables >> 2D profielen
&																												& 29 & \OK \\ % Property view >> 2D profielen
&																												& 31 & \OKbut DSB-884 \\ % Property view >> Gebied
&																												& 35 & \OK  \\ \hline % Dwarsdoorsnede view >> 2D profielen

\textbf{REQ 8.6} & \textbf{Show segments with labels} & 40.02a & \OK \\ % Table >> Segmenten - Naam
&																											&	43.02c & \OK \\ \hline % Kaart >> Segmenten - Label

\textbf{REQ 8.10} & \textbf{Overview of soil profile scenarios} & 42.02		& \OK \\ \hline % view filmstrip

\textbf{REQ 8.13} & \textbf{Show SOS scenario's in 2D profiles} 	& 40.04 & \OK \\ % visiblity of button 'Convert 1D to 2D'
&																																	& 41.02 & \OKbut DSB-611\\ \hline % Correct functionning of 'Convert 1D to 2D'

\textbf{REQ 9.1} & \textbf{Name soil materials} 	& 12.03a & \OK \\ % Soil parameter Name in Table
&																									& 12.05  & \OKbut DSB-861\\ % filters in Table >> Materials
&																									& 14.04  & \OK \\ \hline % synchronistion with 1D and 2D profiles

\textbf{REQ 9.2} & \textbf{Edit the chances of a SOS scenario} & 41.01k  & \OK \\ % editable
&																											&	41.04 	& \OK \\ % total probability must be 100%			
& 																										& 41.05 	& \OK \\ \hline % probability of a soil profile can be 0\%			

\textbf{REQ 9.3} & \textbf{Turn a 1D profile into a 2D profile} & 26.03e & \OK \\ \hline

\textbf{REQ 9.4} & \textbf{Draw 2D geometry so as in D-GeoStability} & 35.03 & \OK \\ \hline % geometry editor

\textbf{REQ 9.5} & \textbf{Reference lines to draw surface lines on } & 28.03b 	& \OK \\ % Table >> 2D Profiles
& \textbf{2D profiles}																								& 33			& \OKbut DSB-744\\ % Eigenschappen - Referentielijn
&																																			& 35.02h	& \OK \\ % selection and move object
&																																			& 34.04a	& \OK \\ % Delete reference line
&																																			& 34.04g	& \OK \\ % Add reference line via right-mouse option
&																																			& 35.05a	& \OK \\ % Synchronisation
&																																			& 35.05b	& \OK \\ \hline % Synchronisation

\textbf{REQ 9.7} & \textbf{User can draw 2D soil layers} & 35.03 & \OK \\ \hline % geometry editor

\textbf{REQ 9.8} & \textbf{Allocate soil material to layer} 	& 24.02v & \OK \\ % One 1D profile with layers using the same material
&																										& 24.02w & \OK \\ % Several 1D profiles using the same material
& 																									&	31.03n & \OK \\ % One 2D profile with layers using the same material
&																										& 31.03o & \OK \\ \hline % Several 2D profiles using the same material

\textbf{REQ 9.9} & \textbf{Define layer as aquifer or aquitard} & \multicolumn{2}{l|}{See REQ 6.6}  \\ \hline

\textbf{REQ 9.10} & \textbf{Enter yield stresses for macro stability} & 12.03m & \OK \\
&																																			& 12.03n & \OKbut DSB-836\\
&																																			& 12.03o & \OKbut DSB-836\\
&																																			& 12.03p & \OKbut DSB-836\\
&																																			& 12.03q & \OKbut DSB-836\\
&																																			& 12.03r & \OKbut DSB-858\\
&																																			& 12.03s & \OKbut DSB-836\\
&																																			& 12.03t & \OKbut DSB-858\\
& \multicolumn{3}{l|}{See also REQ 6.6 for yield stress measurements per 2D profiles.}  \\ \hline

\textbf{REQ 9.12} & \textbf{Modify the location of the borehole or } & 35.02d & \OK \\ % Selection / move CPT
& \textbf{CPT in the 2D profile}																										& 35.02e & \OK \\ % Selection / move boring
&																																						& 35.04a & \OK \\ % Delete object
&																																						& 35.05d & \OK \\ % Synchro CPT
&																																						& 35.05e & \OK \\ 
&																																						& 35.05f & \OK \\ % Synchro boring
&																																						& 35.05g & \OK \\ \hline

\textbf{REQ 9.14} & \textbf{Minimal validity check on the data} & 2.01e & \OK \\ 
&	$^{\text{(a)}}$	\textit{See only Min and Max checks	}							& 4.01  & \OK \\
&																																& 4.02  & \OKbut DSB-851/684 \\
&																																& 9.01d & \OK \\
&																															  & 12.03$^{\text{(a)}}$ & \OK \\
&																																& 12.06  & \OK \\
&																																& 23.03$^{\text{(a)}}$  & \OK \\
&																																& 41.02e & \OK \\
&																																& 41.04  & \OK \\ \hline

\textbf{REQ 9.18a} & \textbf{Add another 1D profile to an existing 2D profile} & 35.04e & \OK \\ \hline

\textbf{REQ 9.20} & \textbf{Incorporate settlements underneath an embankment} & 35.03 & \OK \\ \hline

\textbf{REQ 9.23} & \textbf{Import soil area's and segments} & 44 & \OK \\ \hline
\end{longtable}







\section{Testing of the 'should-have' functional requirements}

\begin{longtable}{|p{18mm}|p{1.05\textwidth-66mm-48pt}|p{13mm}|p{35mm}|} 
\caption{Overview of the 'should-have' requirements and their corresponding test-scripts} \label{tab:OverviewTestsShouldHave} \\ \hline
\rowcolor[gray]{.8} \textbf{REQ} & \textbf{Description} & \multicolumn{2}{c|}{\textbf{Test script(s)}} \\ 
\rowcolor[gray]{.8} &  & \multicolumn{2}{c|}{\textbf{in appendix \autoref{app:TestDocument}}} \\ \cline{3-4}
\rowcolor[gray]{.8} &  & \textbf{nr.} & \textbf{Status} \\ \hline

\textbf{REQ 3.2} & \textbf{Import and view all SOS data} & \multicolumn{2}{l|}{Idem as REQ 3.1} \\ \hline

\textbf{REQ 3.4} & \textbf{Import relevant reference data:} & & \\
& \quad -- Surface lines					& 7.06 & \OK \\
& \quad -- Characteristic points	& 7.07 & \OK \\
& \quad -- Outside water level 		& \multicolumn{2}{l|}{not implemented} \\
& \quad -- PL-lines						 		& \multicolumn{2}{l|}{not implemented} \\
& \quad -- Polder water level 		& \multicolumn{2}{l|}{not implemented} \\ \hline

\textbf{REQ 7.2} & \textbf{Allocation of CPT's and boreholes to }	& 42.04c & \OK \\ 
&		\textbf{a segment	}																						& 42.04d & \OK \\ 
&																																	& 43.04d & \OK \\ \hline % Koppel aan dichtsbijzijnde ondergrondsegment

\textbf{REQ 7.3} & \textbf{Overview of all available borings and }	& 44.01 & \OK \\
& \textbf{CPT's in a segment or cross section} 											& 44.02 & \OK \\ \hline

\textbf{REQ 7.4} & \textbf{Overview of all available SOS scenario's } 	& 44.03 & \OK \\ 
&			\textbf{in a segment}																							& 44.04 & \OK \\ \hline 

\textbf{REQ 8.7} & \textbf{Show all soil investigation with labels in }	& 43.01 & \OK \\
&	\textbf{map view}																											& 43.02 & \OK \\ \hline

\textbf{REQ 8.8} & \textbf{Visualize the surface lines with their characteristic points} 	& 7.07d & \OK \\\
& View surface lines with characteristic points on top of a 2D profile										& \multicolumn{2}{l|}{not implemented} \\ \hline

\textbf{REQ 8.12} & \textbf{Show data from :} & & \\
& -- \quad AHN or a WMS server 		& \multicolumn{2}{l|}{not implemented} \\
& -- \quad or other shape files 	& 7.09 & \OK \\ \hline

\textbf{REQ 8.14} & \textbf{Draw SOS profiles in one segment on the same height for comparison} & 42.02 & \OK \\ \hline

\textbf{REQ 8.15} & \textbf{Show ground investigation simultane} 	& 26.03c & \OK \\
& \textbf{-ously to REQ 39 at the same reference }								& 26.03d & \OK \\ 
&	\textbf{level}																									& 44.03  & \OK \\ \hline

\textbf{REQ 8.16} & \textbf{Compatibility between different views} & 45 & \OK \\ \hline

\textbf{REQ 8.17} & \textbf{Visibility of yield stress} & 30.03 & \OK \\ \hline

\textbf{REQ 9.11} & \textbf{Copy/ paste segments for one failure mechanism to the next} & 40.01c & \OK \\ 
&																																												& 40.01d & \OK \\ \hline

\textbf{REQ 9.21} & \textbf{Visualize minimum and maximum of layer boundaries from the SOS data} & 42.06 & \OK \\ \hline

\textbf{REQ 9.24} & \textbf{Table import/export}  & & \\
& \quad -- Validation messages (export)						& 4.02b & \OK \\ 
& \quad -- Log messages (export)									& 5.02e & \OK \\
& \quad -- Materials (import)											& 12.01d & \OK \\
& \quad -- Materials (export)											& 12.01g & \OK \\
& \quad -- 1D Profile (import)										& 23.01d & \OK \\
& \quad -- 1D Profile (export)										& 23.01g & \OK \\
& \quad -- 1D Layers (import)											& 24.04d & \OK \\
& \quad -- 1D Layers (export)											& 24.04g & \OK \\
& \quad -- 2D Profile (import)										& 28.01d & \OK \\
& \quad -- 2D Profile (export)										& 28.01g & \OK \\
& \quad -- Yield stresses (import)								& 30.01d & \OK \\
& \quad -- Yield stresses (export)								& 30.01g & \OK \\
& \quad -- Geometry point (import)								& 31.05b & \OKbut DSB-884 \\
& \quad -- Geometry point (export)								& 31.05e & \OK \\
& \quad -- List of surface lines (import)					& 36.01d & \OK \\
& \quad -- List of surface lines (export)					& 36.01f & \OK \\
& \quad -- Surface line (export)									& 37.02f & \OK \\
& \quad -- List of segments (import)							& 40.01d & \OK \\
& \quad -- List of segments (export)							& 40.01g & \OK \\
& \quad -- Stochastic soil profiles (import)			& 41.03d & \OK \\
& \quad -- Stochastic soil profiles (export)			& 41.03g & \OK \\
& \quad -- CPTs for this segment (export)					& 41.07g & \OK \\
& \quad -- Borings for this segment (export)			& 41.09g & \OK \\ \hline
\end{longtable}


\section{Testing of the 'nice-to-have' functional requirements}

The nice-to-have requirements listed in \autoref{tab:REQs} are not implemented, so can't be tested.


\section{Testing of the non-functional requirements}

In \autoref{tab:OverviewTestsNF}, the Non-Functional Requirements of \ProgramName are compared to the user-interface features that were tested. Refer to the Functional Design of \ProgramName \citep{DSoilModel_FunctionalDesign} for a complete description of the requirements. 

\renewcommand{\arraystretch}{1.3}

\begin{table}[H]
\caption{Overview of the 'non-functional' requirements and their corresponding test} \label{tab:OverviewTestsNF}
\begin{tabular}{|p{12mm}|p{\textwidth-90mm-48pt}|p{8mm}|p{70mm}|}  \hline
\rowcolor[gray]{.8} \textbf{Nr.} & \textbf{Requirement} & \textbf{Met} & \textbf{Description/remark} \\ \hline

\textbf{NFR3} & Data definition & Yes & See U145. \\ \hline

\textbf{NFR6} & Error checks on the validity and completeness of data & Yes & See REQ 9.14 in \autoref{tab:OverviewTests}. \\  \hline

\textbf{NFR12} & No crashes during regular usage & Yes & Test-script nr. 47 of the Test Document (see appendix \autoref{app:TestDocument}) attests that no crash occured when performing all test-scripts listed in the Test Document (which represents about 8 hours working with \ProgramName), proving that this requirement is met. \\  \hline

\textbf{NFR15} & A documented test bench of unit tests and integration tests is required & Yes & Test coverage of \ProgramName is 69.5\% (see \autoref{sec:CodeCoverage}). \\  \hline

%\textbf{R13} & Perform test according to engagement & Yes & A test plan explaining how the program should be tested is available \citep{DSoilModel_TestPlan} and this document (Test Report) shows that all the functionalities of the program are implemented and tested.   \\ \hline

%\textbf{U123} & Reproducible results  & Yes  & Tested in test script 46. \\ \hline

\textbf{U124} & Robustness &  Yes  &  See NFR12. \\ \hline

\textbf{U129} & Return error messages   & Yes       &  See REQ 9.14 in \autoref{tab:OverviewTests}.  \\ \hline

%\textbf{U131} & Unit tests & Yes & See \autoref{chapter2} for an overview of the unit tests. \\ \hline

\textbf{U133} &  Dutch language    & Yes       &  All the test-scripts of the Test Document (see appendix \autoref{app:TestDocument}) check that the name, hint and unit of each UI field and also all validation and log messages are in Dutch. Only few missing translations have been found in some test-scripts. \\ \hline

\textbf{U145} &  Names and symbols are conform to WTI list.   & Yes   &  The names of the input parameters used in test-scripts 12.03 are the names given in the WTI list. In these test-scripts, the correctness of the parameter name is checked. As this test-script pass, it can be concluded that the names are conform the WTI parameter list \citep{WTIParameterList}. No symbols are used in \ProgramName. \\ \hline

\textbf{TAB1} & Installation test & Yes & Tested in test-script 0.04.\\ \hline

\textbf{TAB2} & No administrative rights needed during installation  & Yes & Tested in test-script 0.02. \\ \hline

\textbf{Top 10} & Location for saving data & Yes & See test-script 7.01d. \\ \hline

\end{tabular}
\end{table}



\section{Conclusion} \label{sec:ccl}

All the '\textit{must-have}' requirements have been implemented. 

Almost all the '\textit{should-have}' requirements are implemented except three of them which are only partly implemented (\autoref{tab:OverviewTestsShouldHave}):
\begin{itemize}
	\item \textbf{\textit{REQ 3.4}}: Outside water level, PL-lines and Polder water level are not available in \ProgramName
	\item \textbf{\textit{REQ 8.8}}: It is not possible to view surface lines with characteristic points on top of a 2D profile
	\item \textbf{\textit{REQ 8.12}}: Segment shapes from AHN or a WMS server can't be imported in \ProgramName. The user must convert them into shapes files to be able to import them.
\end{itemize}

All the non-functional requirements that are suitable for reporting in test reports such as this report are met (\autoref{tab:OverviewTestsNF}).

On a total of 1169 test scripts, 89 test scripts show minor inconveniences or improvements. Indeed, few discrepancies were found on different levels and reported in the Deltares issue tracker tool called JIRA:
\begin{itemize}

	\item \href{https://issuetracker.deltares.nl/browse/DSB-591}{DSB-591}:
	Translate Materialen >> Kleur: tab names are not translated
	
	\item \href{https://issuetracker.deltares.nl/browse/DSB-611}{DSB-611}: 
	Missing translations for a number of labels
	
	\item \href{https://issuetracker.deltares.nl/browse/DSB-652}{DSB-652}: 
	In Materials table, the number of decimals of the different parameters is inconsistent
	
	\item \href{https://issuetracker.deltares.nl/browse/DSB-653}{DSB-653}: 
	2D Profiel: In the Property window - Gebied tab, some units are missing

	\item \href{https://issuetracker.deltares.nl/browse/DSB-683}{DSB-683}: 
	Show legend of CPT cross section

	\item \href{https://issuetracker.deltares.nl/browse/DSB-684}{DSB-684}: 
	The Warning message in dialog 'Herstel Alles' is not completely correct
	
	\item \href{https://issuetracker.deltares.nl/browse/DSB-698}{DSB-698}: 
	Log table -  Paste and Edit button are available but should not
	
	\item \href{https://issuetracker.deltares.nl/browse/DSB-735}{DSB-735}: 
	1D-Profile - Property window: when table ``Lagen'' is exported, 'Is Aquifer' is not correctly translated
	
	\item \href{https://issuetracker.deltares.nl/browse/DSB-744}{DSB-744}: 
	Missing (or not translated) hints
	
	\item \href{https://issuetracker.deltares.nl/browse/DSB-749}{DSB-749}: 
	Not all data column from GEF boring is imported
	
	\item \href{https://issuetracker.deltares.nl/browse/DSB-758}{DSB-758}: 
	CPT import from GEF file, Conus type and other metadata not imported correctly
	
	\item \href{https://issuetracker.deltares.nl/browse/DSB-782}{DSB-782}: 
	GEF-Boring with LEP boring method are not imported and boring method 'Boring BSA - Beeker-sampler' is not translated
	
	\item \href{https://issuetracker.deltares.nl/browse/DSB-783}{DSB-783}: 
	For Boring and CPT table, the order and name of columns is not consistent

	\item \href{https://issuetracker.deltares.nl/browse/DSB-784}{DSB-784}: 
	Import CPT: the column "Projectnaam" is always empty
	
	\item \href{https://issuetracker.deltares.nl/browse/DSB-834}{DSB-834}: 
	In Boringen tab, the column "Voorontgraving" has no unit but should have unit [m]
		
	\item \href{https://issuetracker.deltares.nl/browse/DSB-835}{DSB-835}: 
	In Sondering property window, the hint of ``Z [m NAP]'' is not translated (NL-CptGrondLevelDescription)
		
	\item \href{https://issuetracker.deltares.nl/browse/DSB-836}{DSB-836}: 
	Validate only soil parameters needed for shear strength model

	\item \href{https://issuetracker.deltares.nl/browse/DSB-851}{DSB-851}: 
	The button "Herstel alles" doesn't work correctly
		
	\item \href{https://issuetracker.deltares.nl/browse/DSB-853}{DSB-853}: 
	The import of a CPT with a not supported coordinate system (UTM-3N) should not be possible
	
	\item \href{https://issuetracker.deltares.nl/browse/DSB-858}{DSB-858}: 
	The min and max values of mean stochastic are not correct for normal and lognormal distributions
	
	\item \href{https://issuetracker.deltares.nl/browse/DSB-860}{DSB-860}: 
	Hints for stochastic parameters are not present
	
	\item \href{https://issuetracker.deltares.nl/browse/DSB-861}{DSB-861}: 
	When the filter (failure mechanism type) in toolbar is modified, the filter in Tabellen>>Materialen should be automatically modified as well
	
	\item \href{https://issuetracker.deltares.nl/browse/DSB-865}{DSB-865}: 
	No hint for ``Z [m NAP]'' in window ``Tabellen>>Sonderingen''
	
	\item \href{https://issuetracker.deltares.nl/browse/DSB-868}{DSB-868}: 
	No hint for 3 parameters in property window Laag
	
	\item \href{https://issuetracker.deltares.nl/browse/DSB-870}{DSB-870}: 
	Parameter ``Beschrijving'' is missing in property window Laag
	
	\item \href{https://issuetracker.deltares.nl/browse/DSB-875}{DSB-875}: 
	No hint for ``Z [m NAP]'' in property window ``Hoogtegeometrie''
	
	\item \href{https://issuetracker.deltares.nl/browse/DSB-877}{DSB-877}: 
	Removing CPT's, boreholes or segments is not possible with right clicking on map	

	\item \href{https://issuetracker.deltares.nl/browse/DSB-881}{DSB-881}: 
	The Delete button in all tables becomes disabled after a surface line is imported
	
	\item \href{https://issuetracker.deltares.nl/browse/DSB-882}{DSB-882}: 	
	Not possible to select a layer in Dwarsdoorsnede window for a user-defined 1D profile
	
	\item \href{https://issuetracker.deltares.nl/browse/DSB-883}{DSB-883}: 
	When changing the mechanism filter on the toolbar, the object (1D or 2D profile or surface line) in Dwarsdoorsnede disappears	
	
	\item \href{https://issuetracker.deltares.nl/browse/DSB-884}{DSB-884}: 
	When clicking on a cell of the ``Punten'' table in the ``Gebied'' property window, a new property window ``Geometriepunt'' opens
	
\end{itemize}


The errors listed above are absolutely not blocking for the use of \ProgramName within
WTI 2017. All those issues should be fixed in a future release of the program.




%------------------------------------------------------------------------------
\chapter{Conclusion} \label{chpCCL}

\renewcommand{\arraystretch}{1.2}

All the unit and integration tests performed for the validation of \ProgramName pass and cover 67.3\% of the code, so more than the minimum required code coverage of 60\% prescribed in \citep{OverallTestPlanWTI}. 

A complete test of the User Interface has been performed by means of test scripts (see appendix \autoref{app:TestDocument}). Almost all of the test scripts pass; however, a few minor inconveniences were found and reported in the \textit{Known Issues} list.

However, the discrepancies listed above are not blocking for the use of \ProgramName version \VersionNumber within WTI 2017, and will be reported in the list of \textit{Known Issues} delivered with the application.

All the '\textit{must-have}' functional requirements and non-functional requirements listed in the Functional Design of \ProgramName are implemented and met. Only three of the '\textit{should-have}' requirements are not completely implemented (REQ 3.4, REQ 8.8 and REQ 8.12). None of the '\textit{nice-to-have}' requirements have been implemented, but this may be done in future development of the application, if desired and prioritized accordingly by the Product Owners.

Regarding the non-functional requirements: only the non-functional requirements that can be captured by a test are reported here. The explanation about how the other non-functional requirements are met is given in the Functional Design.

To conclude, the correct functioning of the User Interface of \ProgramName version \VersionNumber is ensured; the program can therefore be handed over to the client.




%------------------------------------------------------------------------------
\chapter{References} \label{chp:References}

\bibliography{../WTI_references/wti_references}


%------------------------------------------------------------------------------
\begin{appendices}


\chapter{Overview of the Code Coverage of \ProgramName \VersionNumber on build server TeamCity} \label{app:CodeCoverage}

An overview of the code coverage of \ProgramName \VersionNumber is available on the build server TeamCity which displays the percentage of the code that was tested in method, class, and statement for each assembly.

\begin{landscape}

\begin{figure}[H]
\centering
		\includegraphics[width=220mm]{pictures/TestCoverageAll.png}
	\caption{Overall code coverage of \ProgramName}
	\label{fig:TestCoverageAll}
\end{figure}

\begin{figure}[H]
	\centering
		\includegraphics[width=220mm]{pictures/TestCoverageData.png}
	\caption{Overview of the code coverage of Deltares.DSoilModel.Data}
	\label{fig:TestCoverageData}
\end{figure}

\begin{figure}[H]
	\centering
		\includegraphics[width=210mm]{pictures/TestCoverageForms.png}
	\caption{Overview of the code coverage of Deltares.DSoilModel.Forms}
	\label{fig:TestCoverageForms}
\end{figure}


\end{landscape}


\chapter{Test Document \ProgramName } \label{app:TestDocument}

The test-scripts part of the Test Document hereafter have been performed using version \VersionNumber.

%he test-scripts part of the Test Document hereafter have been first performed during the development of \ProgramName, using versions 16.1.3.618, 16.1.3.634 and 16.1.3.647 so versions prior to version \VersionNumber. Because the test document contains about 1200 questions, more than one day is needed to answer all the questions. By lack of time, only the failing tests were performed with version \VersionNumber. A risk exists therefore that a test-script passing with previous versions does not pass anymore with version \VersionNumber. However such a risk is very low because the program is developed in a continuous integration way, which means that an improvement in a feature leading to a failure of an other feature is immediately detected by the build server (via the unit tests) and therefore fixed by the developer.

\includepdf[pages=1, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=2, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=3, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=4, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=5, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=6, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=7, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=8, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=9, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=10, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=11, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=12, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=13, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=14, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=15, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=16, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=17, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=18, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=19, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=20, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=21, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=22, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=23, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=24, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=25, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=26, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=27, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=28, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=29, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=30, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=31, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=32, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=33, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=34, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=35, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=36, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=37, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=38, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=39, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=40, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=41, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=42, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=43, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=44, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=45, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=46, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=47, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=48, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=49, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=50, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=51, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=52, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=53, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}
\includepdf[pages=54, offset=20mm -20mm, angle=90]{\DirectoyPDFTestDocument/\FileNamePDFTestDocument}


\end{appendices}



%------------------------------------------------------------------------------
\cleardoublepage

\pagestyle{empty}
\cleardoublepage
\mbox{}
\includepdf[pages=2, offset=72 -70]{pictures/D-SoilModel-TestReport.pdf} % links-rechts past precies


\end{document}
