diff options
-rw-r--r-- | .gitignore | 263 | ||||
-rw-r--r-- | assignment1.tex | 21 | ||||
-rw-r--r-- | assignments/assignment1.tex | 93 | ||||
-rw-r--r-- | src/.gitignore | 3 |
4 files changed, 356 insertions, 24 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d7ae254 --- /dev/null +++ b/.gitignore @@ -0,0 +1,263 @@ + +# Created by https://www.gitignore.io/api/vim,latex,haskell + +### Haskell ### +dist +dist-* +cabal-dev +*.o +*.hi +*.chi +*.chs.h +*.dyn_o +*.dyn_hi +.hpc +.hsenv +.cabal-sandbox/ +cabal.sandbox.config +*.prof +*.aux +*.hp +*.eventlog +.stack-work/ +cabal.project.local +.HTF/ + +### LaTeX ### +## Core latex/pdflatex auxiliary files: +*.lof +*.log +*.lot +*.fls +*.out +*.toc +*.fmt +*.fot +*.cb +*.cb2 + +## Intermediate documents: +*.dvi +*.xdv +*-converted-to.* +# these rules might exclude image files for figures etc. +# *.ps +# *.eps +*.pdf + +## Generated if empty string is given at "Please type another file name for output:" +.pdf + +## Bibliography auxiliary files (bibtex/biblatex/biber): +*.bbl +*.bcf +*.blg +*-blx.aux +*-blx.bib +*.run.xml + +## Build tool auxiliary files: +*.fdb_latexmk +*.synctex +*.synctex(busy) +*.synctex.gz +*.synctex.gz(busy) +*.pdfsync +*Notes.bib + +## Auxiliary and intermediate files from other packages: +# algorithms +*.alg +*.loa + +# achemso +acs-*.bib + +# amsthm +*.thm + +# beamer +*.nav +*.pre +*.snm +*.vrb + +# changes +*.soc + +# cprotect +*.cpt + +# elsarticle (documentclass of Elsevier journals) +*.spl + +# endnotes +*.ent + +# fixme +*.lox + +# feynmf/feynmp +*.mf +*.mp +*.t[1-9] +*.t[1-9][0-9] +*.tfm + +#(r)(e)ledmac/(r)(e)ledpar +*.end +*.?end +*.[1-9] +*.[1-9][0-9] +*.[1-9][0-9][0-9] +*.[1-9]R +*.[1-9][0-9]R +*.[1-9][0-9][0-9]R +*.eledsec[1-9] +*.eledsec[1-9]R +*.eledsec[1-9][0-9] +*.eledsec[1-9][0-9]R +*.eledsec[1-9][0-9][0-9] +*.eledsec[1-9][0-9][0-9]R + +# glossaries +*.acn +*.acr +*.glg +*.glo +*.gls +*.glsdefs + +# gnuplottex +*-gnuplottex-* + +# gregoriotex +*.gaux +*.gtex + +# hyperref +*.brf + +# knitr +*-concordance.tex +# TODO Comment the next line if you want to keep your tikz graphics files +*.tikz +*-tikzDictionary + +# listings +*.lol + +# makeidx +*.idx +*.ilg +*.ind +*.ist + +# minitoc +*.maf +*.mlf +*.mlt +*.mtc[0-9]* +*.slf[0-9]* +*.slt[0-9]* +*.stc[0-9]* + +# minted +_minted* +*.pyg + +# morewrites +*.mw + +# nomencl +*.nlo + +# pax +*.pax + +# pdfpcnotes +*.pdfpc + +# sagetex +*.sagetex.sage +*.sagetex.py +*.sagetex.scmd + +# scrwfile +*.wrt + +# sympy +*.sout +*.sympy +sympy-plots-for-*.tex/ + +# pdfcomment +*.upa +*.upb + +# pythontex +*.pytxcode +pythontex-files-*/ + +# thmtools +*.loe + +# TikZ & PGF +*.dpth +*.md5 +*.auxlock + +# todonotes +*.tdo + +# easy-todo +*.lod + +# xindy +*.xdy + +# xypic precompiled matrices +*.xyc + +# endfloat +*.ttt +*.fff + +# Latexian +TSWLatexianTemp* + +## Editors: +# WinEdt +*.bak +*.sav + +# Texpad +.texpadtmp + +# Kile +*.backup + +# KBibTeX +*~[0-9]* + +# auto folder when using emacs and auctex +/auto/* + +# expex forward references with \gathertags +*-tags.tex + +### Vim ### +# swap +[._]*.s[a-v][a-z] +[._]*.sw[a-p] +[._]s[a-v][a-z] +[._]sw[a-p] +# session +Session.vim +# temporary +.netrwhist +*~ +# auto-generated tag files +tags + +# End of https://www.gitignore.io/api/vim,latex,haskell diff --git a/assignment1.tex b/assignment1.tex deleted file mode 100644 index d66e376..0000000 --- a/assignment1.tex +++ /dev/null @@ -1,21 +0,0 @@ -\documentclass{scrartcl} - -\usepackage{listings} - -\title{Testing Techniques\\Assignment 1} -\author{Ren\`e den Hertog - s1007823\\Camil Staps - s4498062\\Erin van der Veen - s4431200} - -\begin{document} -\section{SUT Description} -\begin{description} - \item[Name] Chess.hs - \item[Software Environment] Linux, and any other environment supported by Haskell - \item[Hardware Platform] Desktop PC, and any other platform supported by Haskell - \item[Latest Version Number] 0.2.1 -\end{description} - -Starting the SUT requires being able to compile haskell, typically through the GHC, and having the Chess.hs dependency installed. -Installing Chess.hs can be done through cabal, using the \lstinline|cabal install chesshs| command. -Compiling and running is then done through \lstinline|make run|. - -\end{document} diff --git a/assignments/assignment1.tex b/assignments/assignment1.tex new file mode 100644 index 0000000..cd0a2d0 --- /dev/null +++ b/assignments/assignment1.tex @@ -0,0 +1,93 @@ +\documentclass{scrartcl} + +\usepackage{listings} +\usepackage{enumerate} + +\title{Testing Techniques\\Assignment 1} +\author{Ren\'e den Hertog - s1007823\\Camil Staps - s4498062\\Erin van der Veen - s4431200} + +\begin{document} + +\maketitle + +\section{SUT Description} +\begin{enumerate} + \item + \begin{description} + \item[Name] Chess.hs + \item[Software Environment] Linux, and any other environment supported by Haskell + \item[Hardware Platform] Desktop PC, and any other platform supported by Haskell + \item[Latest Version Number] 0.2.1 + \end{description} + + \item + Starting the SUT requires being able to compile haskell, typically through the GHC, and having the Chess.hs dependency installed. + Installing Chess.hs can be done through cabal, using the \lstinline|cabal install chesshs| command. + Compiling and running is then done through \lstinline|make run|. + + \item + \begin{enumerate}[a)] + \item The SUT needs to be provided with a PGN file via stdin. + \item Either the result of the game is output to stdout or the SUT outputs an error. + \end{enumerate} + + \item + The SUT does have a decent chance of containing faults, but the risk is near zero due to the low impact of the of these faults. +\end{enumerate} + +\section{Test goals} +\begin{enumerate} + \setcounter{enumi}{4} + \item + The documentation of the SUT is defined in two parts. + The first part, the chess part, is defined by the rules of the FIDE.\footnote{fide.com/fide/handbook.html} + %TODO: Summary + The second part, the PGN notation, is defined by the PGN standard.\footnote{saremba.de/chessgml/standards/pgn/pgn-complete.htm} + %TODO: Summary + \item + The parts of the SUT that will be tested will be the entire library and the individual components thereof. + This implies that PGN parsing will be tested, as well as the verification part of the library that determines if a move is legal. + The function that determines the checkmate position of the game will also be tested. + This means, explicitly, that the timing rules, and any other rules of the game of Chess, will not be tested. + %TODO: Manual/Automated testing + \item + Functionality and Reliability. +\end{enumerate} + +\section{Test method} +\begin{enumerate} + \setcounter{enumi}{7} + \item + Unit, Integration. The scale and the number of sub-components of the project limits us to these types of tests. + \item + Mostly Black box testing, for the input/output of entire games in pgn notation. + %TODO: Fix sentence + The functions of the library will also be tested using a White box model. + \item + \begin{enumerate}[a)] + \item + For test generation of the black box testing, we will use a mixture of error guessing and the parsing of PGN files in a database. + White box testing will be done through statement coverage and branch/condition coverage. + \item + Equivalence partitioning and boundary value analysis is hard to implement given our SUT, given that all possible chess games are nearly impossible to enumerate. + Use case testing is also very hard to test, given that Chess.hs is a library, no user will likely every interact with the library directly. + Path coverage and condition coverage are not implemented in Quickcheck, making it substantially harder to implement. + \end{enumerate} +\end{enumerate} +\section{Test Environment} +\begin{enumerate} + \setcounter{enumi}{10} + \item + A wrapper written by us will be used to interact with the SUT. + \item + Tests will be automatically performed using a combination of bash and Quickcheck. + \item + \begin{enumerate}[a)] + \item + The software environment GHC 8, Quickcheck 2.10, Linux Debian (derived). + The hardware environment is a set of three amd64 laptops. + \item + A Git repository, the results will be stored in individual files. + \end{enumerate} +\end{enumerate} +\end{document} diff --git a/src/.gitignore b/src/.gitignore deleted file mode 100644 index c181314..0000000 --- a/src/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -*.hi -*.o -runchess |