commit 585aa19e0c1440738bc8573872b8eda479583412 Author: Michael Chen Date: Fri Apr 8 11:01:05 2022 +0200 Added project tasks 0-2 and R and handouts 1-4 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..40470f0 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +*.zip filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text diff --git a/Course Information/Zoom-Meeting-ST-Lecture.txt b/Course Information/Zoom-Meeting-ST-Lecture.txt new file mode 100644 index 0000000..00c77a6 --- /dev/null +++ b/Course Information/Zoom-Meeting-ST-Lecture.txt @@ -0,0 +1,7 @@ + +Join Zoom Meeting +https://tuhh.zoom.us/j/97094043949?pwd=ZUlYS0NaVHBJaUkyY3ExNCtYVTJ2Zz09 + +Meeting ID: 970 9404 3949 +Passcode: 000629 + diff --git a/Course Information/course-info-ST22.pdf b/Course Information/course-info-ST22.pdf new file mode 100644 index 0000000..ccdb153 --- /dev/null +++ b/Course Information/course-info-ST22.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:793eb6ed85fb29ecd74ae0897b2bf415dcf1686d456a87453d282476d702fb7f +size 167452 diff --git a/Lecture notes/Lecture 2/week2-handout.pdf b/Lecture notes/Lecture 2/week2-handout.pdf new file mode 100644 index 0000000..934fbea --- /dev/null +++ b/Lecture notes/Lecture 2/week2-handout.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43cbac9e5b24c36e620a0beac58c7301c126a5153d2f00db2d59d2002fd37a6b +size 3936549 diff --git a/Lecture notes/Lecture 3/week3-handout.pdf b/Lecture notes/Lecture 3/week3-handout.pdf new file mode 100644 index 0000000..652162a --- /dev/null +++ b/Lecture notes/Lecture 3/week3-handout.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac0e24c20b456f53daa3caf942fb640478f28a20cb2f258897e671ac726914ff +size 1009818 diff --git a/Lecture notes/Lecture 4/week4-handout.pdf b/Lecture notes/Lecture 4/week4-handout.pdf new file mode 100644 index 0000000..0210771 --- /dev/null +++ b/Lecture notes/Lecture 4/week4-handout.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77f8184023f6234606f8839fc3661085f1c5074a675b0c79583b87d345681868 +size 2447817 diff --git a/Lecture notes/week1-handout.pdf b/Lecture notes/week1-handout.pdf new file mode 100644 index 0000000..763fd93 --- /dev/null +++ b/Lecture notes/week1-handout.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e93d3a033e323960455d2c6bbc0a4efef31ba41ac0c37fdcf844940840d0bd02 +size 1373389 diff --git a/project_introduction/project_intro_slides.pdf b/project_introduction/project_intro_slides.pdf new file mode 100644 index 0000000..6e76a23 --- /dev/null +++ b/project_introduction/project_intro_slides.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ec3d73c7586d33dc63a8f7038eb5061954bbbdfd35f2d9645159ebe04ba8c8e +size 252742 diff --git a/project_task_sheets/phase_00/project_phase00_tasks.zip b/project_task_sheets/phase_00/project_phase00_tasks.zip new file mode 100644 index 0000000..f063ec1 --- /dev/null +++ b/project_task_sheets/phase_00/project_phase00_tasks.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b5ab8367a520b806b01d3f1692a31727a7a5111b99e7872e8fd0219cbb62676 +size 369254 diff --git a/project_task_sheets/phase_00/project_phase00_tasks/.gitignore b/project_task_sheets/phase_00/project_phase00_tasks/.gitignore new file mode 100644 index 0000000..24ccea1 --- /dev/null +++ b/project_task_sheets/phase_00/project_phase00_tasks/.gitignore @@ -0,0 +1,302 @@ +project_phase00.pdf +## Core latex/pdflatex auxiliary files: +*.aux +*.lof +*.log +*.lot +*.fls +*.out +*.toc +*.fmt +*.fot +*.cb +*.cb2 +.*.lb + +## 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 + +## Build tool directories for auxiliary files +# latexrun +latex.out/ + +## Auxiliary and intermediate files from other packages: +# algorithms +*.alg +*.loa + +# achemso +acs-*.bib + +# amsthm +*.thm + +# beamer +*.nav +*.pre +*.snm +*.vrb + +# changes +*.soc + +# comment +*.cut + +# 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 +*.lzo +*.lzs +*.slg +*.slo +*.sls + +# uncomment this for glossaries-extra (will ignore makeindex's style files!) +# *.ist + +# gnuplot +*.gnuplot +*.table + +# gnuplottex +*-gnuplottex-* + +# gregoriotex +*.gaux +*.glog +*.gtex + +# htlatex +*.4ct +*.4tc +*.idv +*.lg +*.trc +*.xref + +# hyperref +*.brf + +# knitr +*-concordance.tex +# TODO Uncomment the next line if you use knitr and want to ignore its generated tikz files +# *.tikz +*-tikzDictionary + +# listings +*.lol + +# luatexja-ruby +*.ltjruby + +# makeidx +*.idx +*.ilg +*.ind + +# minitoc +*.maf +*.mlf +*.mlt +*.mtc[0-9]* +*.slf[0-9]* +*.slt[0-9]* +*.stc[0-9]* + +# minted +_minted* +*.pyg + +# morewrites +*.mw + +# newpax +*.newpax + +# nomencl +*.nlg +*.nlo +*.nls + +# pax +*.pax + +# pdfpcnotes +*.pdfpc + +# sagetex +*.sagetex.sage +*.sagetex.py +*.sagetex.scmd + +# scrwfile +*.wrt + +# svg +svg-inkscape/ + +# sympy +*.sout +*.sympy +sympy-plots-for-*.tex/ + +# pdfcomment +*.upa +*.upb + +# pythontex +*.pytxcode +pythontex-files-*/ + +# tcolorbox +*.listing + +# thmtools +*.loe + +# TikZ & PGF +*.dpth +*.md5 +*.auxlock + +# titletoc +*.ptc + +# todonotes +*.tdo + +# vhistory +*.hst +*.ver + +# easy-todo +*.lod + +# xcolor +*.xcp + +# xmpincl +*.xmpi + +# xindy +*.xdy + +# xypic precompiled matrices and outlines +*.xyc +*.xyd + +# endfloat +*.ttt +*.fff + +# Latexian +TSWLatexianTemp* + +## Editors: +# WinEdt +*.bak +*.sav + +# Texpad +.texpadtmp + +# LyX +*.lyx~ + +# Kile +*.backup + +# gummi +.*.swp + +# KBibTeX +*~[0-9]* + +# TeXnicCenter +*.tps + +# auto folder when using emacs and auctex +./auto/* +*.el + +# expex forward references with \gathertags +*-tags.tex + +# standalone packages +*.sta + +# Makeindex log files +*.lpz + +# xwatermark package +*.xwm + +# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib +# option is specified. Footnotes are the stored in a file with suffix Notes.bib. +# Uncomment the next line to have this generated file ignored. +#*Notes.bib diff --git a/project_task_sheets/phase_00/project_phase00_tasks/project_phase00.tex b/project_task_sheets/phase_00/project_phase00_tasks/project_phase00.tex new file mode 100644 index 0000000..fecebaa --- /dev/null +++ b/project_task_sheets/phase_00/project_phase00_tasks/project_phase00.tex @@ -0,0 +1,97 @@ +\documentclass[a4paper]{scrreprt} +\usepackage[left=4cm,bottom=3cm,top=3cm,right=4cm,nohead,nofoot]{geometry} +\usepackage{graphicx} +\usepackage{tabularx} +\usepackage{listings} +\usepackage{enumitem} +\usepackage{subcaption} + +\usepackage{pgf} +\usepackage{tikz} +\usetikzlibrary{arrows,automata} + +\usepackage{xparse} +\usepackage{multirow} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\setlength{\textfloatsep}{16pt} + +\renewcommand{\labelenumi}{\alph{enumi})} +\renewcommand{\labelenumii}{\arabic{enumii}) } + +\newcommand{\baseinfo}[5]{ + \begin{center} + \begin{tabular}{p{15cm}r} + \vspace{-4.5pt}{ \Large \bfseries #1} & \multirow{2}{*}{} \\[0.4cm] + #2 & \\[0.5cm] + \end{tabular} + \end{center} + \vspace{-18pt}\hrule\vspace{6pt} + \begin{tabular}{ll} + \textbf{Name:} & #4\\ + \textbf{Group:} & #5\\ + \end{tabular} + \vspace{4pt}\hrule\vspace{2pt} + \footnotesize \textbf{Software Testing} \hfil - \hfil Summer 2022 \hfil - \hfil #3 \hfil - \hfil Sibylle Schupp / Sascha Lehmann \hfil \\ +} + +\newcounter{question} +\NewDocumentEnvironment{question}{m o}{% + \addtocounter{question}{1}% + \paragraph{\textcolor{red}{Task~\arabic{question}} - #1\hfill\IfNoValueTF{#2}{}{[#2 P]}} + \leavevmode\\% +}{% + \vskip 1em% +} + +\NewDocumentEnvironment{answer}{}{% + \vspace{6pt} + \leavevmode\\ + \textit{Answer:}\\[-0.25cm] + {\color{red}\rule{\textwidth}{0.4mm}} +}{% + \leavevmode\\ + {\color{red}\rule{\textwidth}{0.4mm}} +} + +\newcommand{\projectinfo}[5]{ + \baseinfo{Project Phase #1 - Submission Sheet}{#2}{#3}{#4}{#5} +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\name{[Add name here]} +\def\group{\textit{Assigned in Phase 1}} + +\begin{document} +\projectinfo{0}{Software Testing - Getting Started with Eclipse and JUnit Tests\small}{\today}{\name}{\group} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Task 2 %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{question}{Learn to Understand given JUnit Tests}%[0] + From the \texttt{src/test/java} folder, select 2 test files, and describe in your own words which parts of the system / program execution are tested, and which kind of failures may be targeted by these tests. + \begin{answer} + [TODO: Add answer here] + \end{answer} +\end{question} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Task 3 %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{question}{Write your own JUnit Test}%[0] + Inside the \texttt{src/test/java} folder, create a new test file "CustomTest.java", and write your own JUnit test for one scenario picked from "scenarios.md" (located in the \texttt{doc/} folder). The test is supposed to call the sequence of functions corresponding to the steps described in the chosen scenario, and should include reasonable \textit{assertions} to check if the intermediate program states meet the scenario requirements. + \begin{answer} + [TODO: Add answer here] + + \begin{lstlisting}[language=Java,belowskip=-0.8\baselineskip] +/* Add code here */ + \end{lstlisting} + % or: \lstinputlisting[language=Java,belowskip=-0.8\baselineskip]{file_name.java} + \end{answer} +\end{question} + +\end{document} diff --git a/project_task_sheets/phase_00/project_phase00_tasks/project_phase00_tasks.pdf b/project_task_sheets/phase_00/project_phase00_tasks/project_phase00_tasks.pdf new file mode 100644 index 0000000..b6a8d14 --- /dev/null +++ b/project_task_sheets/phase_00/project_phase00_tasks/project_phase00_tasks.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3cb73146949f07887fc44bc95adf59711010ebc5d04dbb4f77136f5873ebb50b +size 372811 diff --git a/project_task_sheets/phase_00/project_phase00_tasks/project_phase00_template.tex b/project_task_sheets/phase_00/project_phase00_tasks/project_phase00_template.tex new file mode 100644 index 0000000..fecebaa --- /dev/null +++ b/project_task_sheets/phase_00/project_phase00_tasks/project_phase00_template.tex @@ -0,0 +1,97 @@ +\documentclass[a4paper]{scrreprt} +\usepackage[left=4cm,bottom=3cm,top=3cm,right=4cm,nohead,nofoot]{geometry} +\usepackage{graphicx} +\usepackage{tabularx} +\usepackage{listings} +\usepackage{enumitem} +\usepackage{subcaption} + +\usepackage{pgf} +\usepackage{tikz} +\usetikzlibrary{arrows,automata} + +\usepackage{xparse} +\usepackage{multirow} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\setlength{\textfloatsep}{16pt} + +\renewcommand{\labelenumi}{\alph{enumi})} +\renewcommand{\labelenumii}{\arabic{enumii}) } + +\newcommand{\baseinfo}[5]{ + \begin{center} + \begin{tabular}{p{15cm}r} + \vspace{-4.5pt}{ \Large \bfseries #1} & \multirow{2}{*}{} \\[0.4cm] + #2 & \\[0.5cm] + \end{tabular} + \end{center} + \vspace{-18pt}\hrule\vspace{6pt} + \begin{tabular}{ll} + \textbf{Name:} & #4\\ + \textbf{Group:} & #5\\ + \end{tabular} + \vspace{4pt}\hrule\vspace{2pt} + \footnotesize \textbf{Software Testing} \hfil - \hfil Summer 2022 \hfil - \hfil #3 \hfil - \hfil Sibylle Schupp / Sascha Lehmann \hfil \\ +} + +\newcounter{question} +\NewDocumentEnvironment{question}{m o}{% + \addtocounter{question}{1}% + \paragraph{\textcolor{red}{Task~\arabic{question}} - #1\hfill\IfNoValueTF{#2}{}{[#2 P]}} + \leavevmode\\% +}{% + \vskip 1em% +} + +\NewDocumentEnvironment{answer}{}{% + \vspace{6pt} + \leavevmode\\ + \textit{Answer:}\\[-0.25cm] + {\color{red}\rule{\textwidth}{0.4mm}} +}{% + \leavevmode\\ + {\color{red}\rule{\textwidth}{0.4mm}} +} + +\newcommand{\projectinfo}[5]{ + \baseinfo{Project Phase #1 - Submission Sheet}{#2}{#3}{#4}{#5} +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\name{[Add name here]} +\def\group{\textit{Assigned in Phase 1}} + +\begin{document} +\projectinfo{0}{Software Testing - Getting Started with Eclipse and JUnit Tests\small}{\today}{\name}{\group} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Task 2 %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{question}{Learn to Understand given JUnit Tests}%[0] + From the \texttt{src/test/java} folder, select 2 test files, and describe in your own words which parts of the system / program execution are tested, and which kind of failures may be targeted by these tests. + \begin{answer} + [TODO: Add answer here] + \end{answer} +\end{question} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Task 3 %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{question}{Write your own JUnit Test}%[0] + Inside the \texttt{src/test/java} folder, create a new test file "CustomTest.java", and write your own JUnit test for one scenario picked from "scenarios.md" (located in the \texttt{doc/} folder). The test is supposed to call the sequence of functions corresponding to the steps described in the chosen scenario, and should include reasonable \textit{assertions} to check if the intermediate program states meet the scenario requirements. + \begin{answer} + [TODO: Add answer here] + + \begin{lstlisting}[language=Java,belowskip=-0.8\baselineskip] +/* Add code here */ + \end{lstlisting} + % or: \lstinputlisting[language=Java,belowskip=-0.8\baselineskip]{file_name.java} + \end{answer} +\end{question} + +\end{document} diff --git a/project_task_sheets/phase_01/project_phase01_tasks.zip b/project_task_sheets/phase_01/project_phase01_tasks.zip new file mode 100644 index 0000000..44e90a4 --- /dev/null +++ b/project_task_sheets/phase_01/project_phase01_tasks.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8895a55b3f67cb7fb2e57f51a3b146e819d5bf928853eef42f6ba9221521113e +size 371623 diff --git a/project_task_sheets/phase_01/project_phase01_tasks/.gitignore b/project_task_sheets/phase_01/project_phase01_tasks/.gitignore new file mode 100644 index 0000000..e964244 --- /dev/null +++ b/project_task_sheets/phase_01/project_phase01_tasks/.gitignore @@ -0,0 +1,301 @@ +## Core latex/pdflatex auxiliary files: +*.aux +*.lof +*.log +*.lot +*.fls +*.out +*.toc +*.fmt +*.fot +*.cb +*.cb2 +.*.lb + +## 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 + +## Build tool directories for auxiliary files +# latexrun +latex.out/ + +## Auxiliary and intermediate files from other packages: +# algorithms +*.alg +*.loa + +# achemso +acs-*.bib + +# amsthm +*.thm + +# beamer +*.nav +*.pre +*.snm +*.vrb + +# changes +*.soc + +# comment +*.cut + +# 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 +*.lzo +*.lzs +*.slg +*.slo +*.sls + +# uncomment this for glossaries-extra (will ignore makeindex's style files!) +# *.ist + +# gnuplot +*.gnuplot +*.table + +# gnuplottex +*-gnuplottex-* + +# gregoriotex +*.gaux +*.glog +*.gtex + +# htlatex +*.4ct +*.4tc +*.idv +*.lg +*.trc +*.xref + +# hyperref +*.brf + +# knitr +*-concordance.tex +# TODO Uncomment the next line if you use knitr and want to ignore its generated tikz files +# *.tikz +*-tikzDictionary + +# listings +*.lol + +# luatexja-ruby +*.ltjruby + +# makeidx +*.idx +*.ilg +*.ind + +# minitoc +*.maf +*.mlf +*.mlt +*.mtc[0-9]* +*.slf[0-9]* +*.slt[0-9]* +*.stc[0-9]* + +# minted +_minted* +*.pyg + +# morewrites +*.mw + +# newpax +*.newpax + +# nomencl +*.nlg +*.nlo +*.nls + +# pax +*.pax + +# pdfpcnotes +*.pdfpc + +# sagetex +*.sagetex.sage +*.sagetex.py +*.sagetex.scmd + +# scrwfile +*.wrt + +# svg +svg-inkscape/ + +# sympy +*.sout +*.sympy +sympy-plots-for-*.tex/ + +# pdfcomment +*.upa +*.upb + +# pythontex +*.pytxcode +pythontex-files-*/ + +# tcolorbox +*.listing + +# thmtools +*.loe + +# TikZ & PGF +*.dpth +*.md5 +*.auxlock + +# titletoc +*.ptc + +# todonotes +*.tdo + +# vhistory +*.hst +*.ver + +# easy-todo +*.lod + +# xcolor +*.xcp + +# xmpincl +*.xmpi + +# xindy +*.xdy + +# xypic precompiled matrices and outlines +*.xyc +*.xyd + +# endfloat +*.ttt +*.fff + +# Latexian +TSWLatexianTemp* + +## Editors: +# WinEdt +*.bak +*.sav + +# Texpad +.texpadtmp + +# LyX +*.lyx~ + +# Kile +*.backup + +# gummi +.*.swp + +# KBibTeX +*~[0-9]* + +# TeXnicCenter +*.tps + +# auto folder when using emacs and auctex +./auto/* +*.el + +# expex forward references with \gathertags +*-tags.tex + +# standalone packages +*.sta + +# Makeindex log files +*.lpz + +# xwatermark package +*.xwm + +# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib +# option is specified. Footnotes are the stored in a file with suffix Notes.bib. +# Uncomment the next line to have this generated file ignored. +#*Notes.bib diff --git a/project_task_sheets/phase_01/project_phase01_tasks/project_phase01_tasks.pdf b/project_task_sheets/phase_01/project_phase01_tasks/project_phase01_tasks.pdf new file mode 100644 index 0000000..f433fa9 --- /dev/null +++ b/project_task_sheets/phase_01/project_phase01_tasks/project_phase01_tasks.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5f53eb7213738d179d515d493a2e8287d1d87be0547fa86a05c72289ee512b4 +size 375021 diff --git a/project_task_sheets/phase_01/project_phase01_tasks/project_phase01_template.tex b/project_task_sheets/phase_01/project_phase01_tasks/project_phase01_template.tex new file mode 100644 index 0000000..b2bcee3 --- /dev/null +++ b/project_task_sheets/phase_01/project_phase01_tasks/project_phase01_template.tex @@ -0,0 +1,158 @@ +\documentclass[a4paper]{scrreprt} +\usepackage[left=4cm,bottom=3cm,top=3cm,right=4cm,nohead,nofoot]{geometry} +\usepackage{graphicx} +\usepackage{tabularx} +\usepackage{listings} +\usepackage{enumitem} +\usepackage{subcaption} + +\usepackage{pgf} +\usepackage{tikz} +\usetikzlibrary{arrows,automata} + +\usepackage{xparse} +\usepackage{multirow} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\setlength{\textfloatsep}{16pt} + +\renewcommand{\labelenumi}{\alph{enumi})} +\renewcommand{\labelenumii}{\arabic{enumii}) } + +\newcommand{\baseinfo}[5]{ + \begin{center} + \begin{tabular}{p{15cm}r} + \vspace{-4.5pt}{ \Large \bfseries #1} & \multirow{2}{*}{} \\[0.4cm] + #2 & \\[0.5cm] + \end{tabular} + \end{center} + \vspace{-18pt}\hrule\vspace{6pt} + \begin{tabular}{ll} + \textbf{Name:} & #4\\ + \textbf{Group:} & #5\\ + \end{tabular} + \vspace{4pt}\hrule\vspace{2pt} + \footnotesize \textbf{Software Testing} \hfil - \hfil Summer 2022 \hfil - \hfil #3 \hfil - \hfil Sibylle Schupp / Sascha Lehmann \hfil \\ +} + +\newcounter{question} +\NewDocumentEnvironment{question}{m o}{% + \addtocounter{question}{1}% + \paragraph{\textcolor{red}{Task~\arabic{question}} - #1\hfill\IfNoValueTF{#2}{}{[#2 P]}} + \leavevmode\\% +}{% + \vskip 1em% +} + +\NewDocumentEnvironment{answer}{}{% + \vspace{6pt} + \leavevmode\\ + \textit{Answer:}\\[-0.25cm] + {\color{red}\rule{\textwidth}{0.4mm}} +}{% + \leavevmode\\ + {\color{red}\rule{\textwidth}{0.4mm}} +} + +\newcommand{\projectinfo}[5]{ + \baseinfo{Project Phase #1 - Submission Sheet}{#2}{#3}{#4}{#5} +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\name{[Add name here]} +\def\group{[Add group here]} + +\begin{document} +\projectinfo{1}{Software Testing - Random Testing\small}{\today}{\name}{\group} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Task 1 %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{question}{Select your open source project}[3] +\begin{enumerate}[topsep=0pt, leftmargin=*] + \item Motivate your selection of the project in 3-5 sentences: + \begin{answer} + [TODO: Add answer here] + \end{answer} + + \item Document the \textbf{build}, \textbf{install}, and \textbf{run} steps for your project: + \begin{answer} + [TODO: Add answer here] + \end{answer} +\end{enumerate} +\end{question} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Task 2 %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{question}{Answer basic questions on Random Testing / Randoop}[4] +\begin{enumerate}[topsep=0pt, leftmargin=*] + \item Answer the following questions (each in 2-3 brief sentences): + \begin{enumerate} + \item How do you define "Random Testing" in your own words? + \begin{answer} + [TODO: Add answer here] + \end{answer} + + \item In which testing situations is it used / probably preferred? + \begin{answer} + [TODO: Add answer here] + \end{answer} + + \item What are its most significant downsides? + \begin{answer} + [TODO: Add answer here] + \end{answer} + + \item How does \textit{Randoop} approach the concept of random testing? + \begin{answer} + [TODO: Add answer here] + \end{answer} + \end{enumerate} +\end{enumerate} +\end{question} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Task 3 %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{question}{Get started with Randoop}[3] +\begin{enumerate}[topsep=0pt, leftmargin=*] + \item Briefly explain the concepts of \textit{error-revealing tests} and \textit{regression tests}: + \begin{answer} + [TODO: Add answer here] + \end{answer} +\end{enumerate} +\end{question} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Task 4 %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{question}{Use Randoop for your selected project}[6] +\begin{enumerate}[topsep=0pt, leftmargin=*] + \item Provide a screenshot of your terminal that indicates your execution of the necessary step(s): + \begin{answer} + [TODO: Add answer here] + % \includegraphics[width=1.0\textwidth]{terminal.jpg} + \end{answer} + + \item For each of both classes, pick a test from one of the generated files, and briefly describe its sequence of constructor / method calls (1-2 sentences per test): + \begin{answer} + [TODO: Add answer here] + + \begin{lstlisting}[language=Java,belowskip=-0.8\baselineskip] +/* Add code here */ + \end{lstlisting} + \end{answer} + + \item Do the tests represent meaningful scenarios? + \begin{answer} + [TODO: Add answer here] + \end{answer} +\end{enumerate} +\end{question} + +\end{document} diff --git a/project_task_sheets/phase_02/project_phase02_tasks.zip b/project_task_sheets/phase_02/project_phase02_tasks.zip new file mode 100644 index 0000000..e5ca948 --- /dev/null +++ b/project_task_sheets/phase_02/project_phase02_tasks.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:adfb0373378a6c21eb6b03191f354442e48f318d3c43694b7d2f7b3a74cf5693 +size 380405 diff --git a/project_task_sheets/phase_02/project_phase02_tasks/project_phase02_tasks.pdf b/project_task_sheets/phase_02/project_phase02_tasks/project_phase02_tasks.pdf new file mode 100644 index 0000000..656d45e --- /dev/null +++ b/project_task_sheets/phase_02/project_phase02_tasks/project_phase02_tasks.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d2f3a0c1a8c80a06ea01f0fd03fefe77d3b46f854579bd495d2e90e8a029ffc +size 382920 diff --git a/project_task_sheets/phase_02/project_phase02_tasks/project_phase02_template.tex b/project_task_sheets/phase_02/project_phase02_tasks/project_phase02_template.tex new file mode 100644 index 0000000..d2ce2ab --- /dev/null +++ b/project_task_sheets/phase_02/project_phase02_tasks/project_phase02_template.tex @@ -0,0 +1,212 @@ +\documentclass[a4paper]{scrreprt} +\usepackage[left=4cm,bottom=3cm,top=3cm,right=4cm,nohead,nofoot]{geometry} +\usepackage{graphicx} +\usepackage{tabularx} +\usepackage{listings} +\usepackage{enumitem} +\usepackage{subcaption} + +\usepackage{pgf} +\usepackage{tikz} +\usetikzlibrary{arrows,automata} + +\usepackage{xparse} +\usepackage{multirow} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\setlength{\textfloatsep}{16pt} + +\renewcommand{\labelenumi}{\alph{enumi})} +\renewcommand{\labelenumii}{\arabic{enumii}) } + +\newcommand{\baseinfo}[5]{ + \begin{center} + \begin{tabular}{p{15cm}r} + \vspace{-4.5pt}{ \Large \bfseries #1} & \multirow{2}{*}{} \\[0.4cm] + #2 & \\[0.5cm] + \end{tabular} + \end{center} + \vspace{-18pt}\hrule\vspace{6pt} + \begin{tabular}{ll} + \textbf{Name:} & #4\\ + \textbf{Group:} & #5\\ + \end{tabular} + \vspace{4pt}\hrule\vspace{2pt} + \footnotesize \textbf{Software Testing} \hfil - \hfil Summer 2022 \hfil - \hfil #3 \hfil - \hfil Sibylle Schupp / Sascha Lehmann \hfil \\ +} + +\newcounter{question} +\NewDocumentEnvironment{question}{m o}{% + \addtocounter{question}{1}% + \paragraph{\textcolor{red}{Task~\arabic{question}} - #1\hfill\IfNoValueTF{#2}{}{[#2 P]}} + \leavevmode\\% +}{% + \vskip 1em% +} + +\NewDocumentEnvironment{answer}{}{% + \vspace{6pt} + \leavevmode\\ + \textit{Answer:}\\[-0.25cm] + {\color{red}\rule{\textwidth}{0.4mm}} +}{% + \leavevmode\\ + {\color{red}\rule{\textwidth}{0.4mm}} +} + +\newcommand{\projectinfo}[5]{ + \baseinfo{Project Phase #1 - Submission Sheet}{#2}{#3}{#4}{#5} +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\name{[Add name here]} +\def\group{[Add group here]} + +\begin{document} +\projectinfo{2}{Software Testing - Input Space Partitioning\small}{\today}{\name}{\group} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Task 1 %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{question}{Answer basic questions on ISP-Testing}[3] +\begin{enumerate}[topsep=0pt, leftmargin=*] + \item Define the following terms - related to ISP - in your own words: + \begin{enumerate} + \item Input Domain + \begin{answer} + [TODO: Add answer here] + \end{answer} + + \item Domain Partition (include the two criteria a partitions needs to fulfill) + \begin{answer} + [TODO: Add answer here] + \end{answer} + + \item Characteristics + \begin{answer} + [TODO: Add answer here] + \end{answer} + + \item Equivalence Class + \begin{answer} + [TODO: Add answer here] + \end{answer} + + \end{enumerate} + + \item Which testing situations are suitable for the ISP approach? + \begin{answer} + [TODO: Add answer here] + \end{answer} + + \item Name and briefly explain the two main strategies to model the input domain. What are their significant pros and cons? + \begin{answer} + [TODO: Add answer here] + \end{answer} + + \item Using the standard values that may be provided in the specifications is one way to select the actual test values from each partition block. Which other strategies can you consider to derive representative values from a given partition? Name and describe two of them. + \begin{answer} + [TODO: Add answer here] + \end{answer} + +\end{enumerate} +\end{question} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Task 2 %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{question}{Apply ISP-Testing to a sample component}[5] +\begin{enumerate}[topsep=0pt, leftmargin=*] + \item Gather the results of the following sub-tasks as table: + \begin{enumerate} + \item The distinction between the minimum, maximum and remaining \texttt{int} values is a possible interface-based partition for the input parameters \textit{a} and \textit{b}. Come up with another interface-based characteristic and the corresponding partition. + \item The distinction between valid and invalid divisions / modulo operations is a possible functionality-based partition for the input parameters \textit{a} and \textit{b}. Come up with another functionality-based characteristic and the corresponding partition. + \end{enumerate} + \begin{answer} + [TODO: Add answer here] + \end{answer} + + \item Can you identify any non-valid combinations of blocks from your characteristics? Develop the required constraints that prevent these combinations. + \begin{answer} + [TODO: Add answer here] + \end{answer} + + \item Derive one representative value for each of the blocks of the exemplary and your own characteristics. Which approach did you choose to select the values? + \begin{answer} + [TODO: Add answer here] + \end{answer} + + \item Read the \texttt{acts\_user\_guide} to get a basic understanding of how to create a system for ACTS and how to generate test vector sets of this system. + \begin{answer} + [TODO: Add answer here] + \end{answer} + + \item Create a system named \textit{Phase02\_Task2\_ACTS\_System.txt} based on your characteristics and their representative block values. You can use the \texttt{Enum} type with meaningful names for any characteristics not representable as \texttt{Boolean}, \texttt{Number} or \texttt{Range}. Use ACTS in command line mode to generate the set of test vectors without constraints. + \begin{answer} + [TODO: Add answer here] + \end{answer} + + \item In the \texttt{Constraint} section of your system file, add the constraints you identified for valid combinations of blocks, and generate a new set of test vectors. Compare the number of test vectors of the unconstrained and constrained system. Check if the new set of test vectors still contains non-valid combinations, and adapt your constraints if necessary. + \begin{answer} + [TODO: Add answer here] + \end{answer} + +\end{enumerate} +\end{question} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Task 3 %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{question}{Apply ISP-Testing to your software project}[8] +\begin{enumerate}[topsep=0pt, leftmargin=*] + \item Explain why the selected method is suitable for the input domain model approach (1-2 sentences) + \begin{answer} + [TODO: Add answer here] + \end{answer} + + \item Identify the input domain of your method (2-3 sentences) + \begin{answer} + [TODO: Add answer here] + \end{answer} + + \item Similar to task 2, gather the results of the following sub-tasks as shown in Table~\ref{table:example}: + \begin{enumerate} + \item Identify reasonable characteristics of the possible input data + \item Derive sets of equivalence classes from these characteristics (Note: At least one of your partitions must consist of a number of blocks $\geq 3$. Also make sure that you have enough characteristics and corresponding blocks to derive $12$ distinct tests from them later on.) + \end{enumerate} + \begin{answer} + [TODO: Add answer here] + \end{answer} + + \item Can you identify any non-valid combinations of blocks from your characteristics? (1-2 sentences) + \begin{answer} + [TODO: Add answer here] + \end{answer} + + \item Derive (at least) one representative value for each equivalence class. Which strategy did you use for the value selection? + \begin{answer} + [TODO: Add answer here] + \end{answer} + + \item Combine the selected values from the partitions of each input argument to complete test vectors. You can decide whether you want to approach this sub-task manually or using \textit{ACTS} (therefore, only the resulting vectors should be documented). + \begin{answer} + [TODO: Add answer here] + \end{answer} + + \item Create JUnit tests for your method, which trigger test runs with the selected test vectors, and assert each individual output. For the submission, merge all these tests into one \texttt{*.java} file. + \begin{answer} + [TODO: Add answer here] + + \begin{lstlisting}[language=Java,belowskip=-0.8\baselineskip] +/* Add code here */ + \end{lstlisting} + \end{answer} + +\end{enumerate} +\end{question} + +\end{document} diff --git a/project_task_sheets/phase_research/project_phaseR_tasks.pdf b/project_task_sheets/phase_research/project_phaseR_tasks.pdf new file mode 100644 index 0000000..b25c0a2 --- /dev/null +++ b/project_task_sheets/phase_research/project_phaseR_tasks.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1db28f8bf12a6ab1b4b229fb5f65ed8aacb2a4c0fa39d49d952ea1f9b60a6d88 +size 303370