\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{Huluvu424242 (FunThomas424242)} \pdfinfo{ /Title (testarten.pdf) /Creator (Cheatography) /Author (Huluvu424242 (FunThomas424242)) /Subject (Testarten Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{A3A3A3} \definecolor{LightBackground}{HTML}{F3F3F3} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{Testarten Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{Huluvu424242 (FunThomas424242)} via \textcolor{DarkBackground}{\uline{cheatography.com/19991/cs/19959/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}Huluvu424242 (FunThomas424242) \\ \uline{cheatography.com/funthomas424242} \\ \uline{\seqsplit{github}.com/Huluvu424242} \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Published 29th June, 2019.\\ Updated 29th June, 2019.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{2} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Property based Testing}} \tn \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{Grundkonzept \newline % Row Count 1 (+ 1) Beim Property (im Sinne von Eigenschaft des zu prüfenden Algorithmus oder Moduls) basierten Testen wird der Testgegenstand (Modul, Klasse, Methode, Funktion, ...) mit zuf{\"a}lligen Eingangswerten oder Parametern aufgerufen und geprüft ob die resultierenden Ausgabewerte oder Rückgabewerte den Eigenschaften des Testgegenstandes entsprechen. \newline % Row Count 8 (+ 7) Beispiel. \newline % Row Count 9 (+ 1) Eine Methode zur Zerlegung einer Zahl in Primfaktoren wird mit zuf{\"a}lligen Werten aufgerufen. In der Assertion wird die Gegenoperation genutzt um die Korrektheit zu prüfen. Es werden also alle ermittelten Primfaktoren nacheinander multipliziert und dann geschaut ob die ursprüngliche Zahl wieder herauskommt. \newline % Row Count 16 (+ 7) Die meisten Tools bieten M{\"o}glichkeiten die Menge der Testwerte einzuschr{\"a}nken. Beispielsweise nur ganze Zahlen als Eingabewerte für die Primfaktorenzerlegung zu nutzen. \newline % Row Count 20 (+ 4) Die Wertebereiche welche bei der Einschr{\"a}nkung der Testwerte ausgegrenzt wurde muss durch andere Testverfahren abgesichert werden. Beispielsweise k{\"o}nnte ein Floating Parameter zu einer Exception führen, deren Werfen durch einen EBT (Example based Test) abgeprüft wird.% Row Count 26 (+ 6) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Literatur: \newline * \seqsplit{https://www.heise.de/developer/artikel/Property-based-Testing-mit-JUnit-QuickCheck-3935767.html}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Mutationstest - Wie gut sind meine Unittests?}} \tn \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{Grundkonzept \newline % Row Count 1 (+ 1) Generell lassen sich viele Unittests schreiben. Die Erfahrung zeigt, dass einige davon immer grün sind, manche am Monatsende oder an speziellen Tagen im Jahr rot werden, manche bei Infrastrukturproblemen den build brechen. \newline % Row Count 6 (+ 5) Auch zeigt sich im Laufe der Zeit, dass die Anwendung erfolgreich betrieben wird und dennoch kleinere Fehler enth{\"a}lt und das obwohl die Kodecoverage bei über 95\% lag. \newline % Row Count 10 (+ 4) Der Grund ist, dass der Kode trotz hoher Kodeabdeckung nicht vollst{\"a}ndig vor Fehlern beim Refactoring oder bei der Einarbeitung neuer Fachlichkeit, geschützt ist. \newline % Row Count 14 (+ 4) Hier kommen die Mutationstests ins Spiel. Sie führen die normale Testsuite aus und merken sich deren Ergebnisse. Dann modifizieren sie den produktiven Kode und schauen ob ein Test rot geworden ist und diese Mutation entdeckt hat. Falls nicht ist eine Lücke in der Testabdeckung gefunden wurden. \newline % Row Count 20 (+ 6) Vorteil: \newline % Row Count 21 (+ 1) * Bestimmung der Testqualit{\"a}t m{\"o}glich \newline % Row Count 22 (+ 1) Nachteil: \newline % Row Count 23 (+ 1) * Die Laufzeit der Tests verdoppelt sich mindestens, da jetzt die Suite mindestens zwei mal, wenn nicht noch mehrmals durchlaufen werden lassen muss.% Row Count 26 (+ 3) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}