\begin{slide}{Black-Box-Tests}

ohne Programmstruktur zu berücksichtigen.

\begin{itemize} \itemsep 0pt
\item
  typische Eingaben (Normalbetrieb)

  alle wesentlichen (Anwendungs-)Fälle abdecken \\
  (Bsp: gerade und ungerade Länge einer Liste bei reverse)
\item
  extreme Eingaben

  sehr große, sehr kleine, fehlerhafte
\item
  zufällige Eingaben

  durch geeigneten Generator erzeugt
\end{itemize}

während Produktentwicklung:
Testmenge ständig erweitern, 
frühere Tests immer wiederholen 
(regression testing)

\end{slide}

\begin{slide}{Probleme mit GUI-Tests}

schwierig sind Tests, die sich nicht automatisieren lassen
(GUIs: Eingaben mit Maus, Ausgaben als Grafik)

zur Unterstützung sollte jede Komponente
neben der GUI-Schnittstelle bieten: 
\begin{itemize}
\item
  auch eine API-Schnittstelle (für (Test)programme)
\item
  und ein Text-Interface (Kommando-Interpreter)
\end{itemize}


Bsp: Emacs: \verb|M-x kill-rectangle| oder \verb|C-x R K|, usw.

\end{slide}

\begin{slide}{Mischformen}

\begin{itemize}
\item
  Testfälle für jedes Teilprodukt, z. B. jede Methode

  (d. h. Teile der Programmstruktur werden berücksichtigt)
\item
  Durchführung 
  kann automatisiert werden (\verb|JUnit|)
\end{itemize}

\end{slide}
