Was ist SoftwareQualität ?
Funktionalität
Effizienz
Wartbarkeit
Zuverlässigkeit
Portabilität Benutzbarkeit
5.
Was soll sichergestelltwerden?
Fehlerwirkung (Failure)
Nach außen sichtbare Fehlverhalten
Fehlerzustand (Bug)
Zustand in der Anwendung der zu einer
Fehlerwirkung führen kann.
Fehlhandlung (Error, Misstake)
Irrtum bei der Software-Entwicklung.
Fehlermaskierung
Wirkung eines Fehlers (Fehlerzustand) ist nach außen nicht sichtbar, weil er durch
einen weiteren Fehler verborgen (überlagert / maskiert) wird.
6.
Wege zu guterSoftware
analytische Qualitätssicherung
Methoden die dazu dienen eine Anwendung strukturiert
(analytisch) nach Fehlerwirkungen, Fehlerzuständen und
Fehlermaskierung zu untersuchen. Die Qualität wird gemessen.
Anzahl der Fehlerwirkungen, Fehlerzuständen und konstruktive
Fehlermaskierung bestimmt.
Qualitätssicherung
Methoden die dazu dienen die Wahrscheinlichkeit für
Fehlhandlungen zu minimieren. D.h. die Methoden führen dazu dass
es zu einer geringeren Fehlerwahrscheinlichkeit im Projekt kommt.
Fragestellung beim Testen
Validation Test Verifikation
Ist es die richtige Software? Ist die Software richtig? Die Software ist richtig!
Debugging
Warum ist die Software nicht richtig?
Kosten zur Fehlerbehebung
Kosten (€)
Fehler frühzeitig in einem Projekt
(Entwicklungsprozess) zu finden spart Geld !!!
Anforderungsanalyse Systementwurf Umsetzung Integrationstest Systemtest Betrieb
Komponententest Charakter
•Was wirdgetestet ? (Testobjekt)
-Klasse / Komponente (mehre Klassen mit definierter Schnittstelle)
•Wer testet? (Tester)
-Entwickler (White-Box / Gray-Box) / Tester (Black-Box)
•Welche Qualitätseigenschaft (ISO9126) wird geprüft?
-Funktionalität, Robustheit, Effizienz
•Mit welchen Werkzeugen wird getestet?
-xUnit Frameworks und Coverage Messung z.B. Cobertura, Emma
16.
Test Design Patternvier Phasen Test
Setup
SUT in einen definierten Zustand bringen.
Exercise
SUT aufrufen mit Test Parametern (Daten).
Verify
Prüfen ob das SUT im erwarteten Zustand ist.
Teardown
SUT und Testumgebung aufräumen.
Testabdeckung
„Als Testabdeckungbezeichnet man das Verhältnis an
tatsächlich getroffenen Aussagen eines Tests gegenüber
den theoretisch möglich treffbaren Aussagen bzw. der
Menge der gewünschten treffbaren Aussagen.“
- Wikipedia
20.
Testabdeckung (100 %)
public boolean aAndbOrC(boolean A, boolean B, boolean C) {
! return (A && B) || C;
}
Erwartet A B C
false false false false
true false false true
false false true false
true false true true
false true false false
true true false true
true true true false
true true true true
21.
vollständige Testabdeckung
„Eine vollständigeTestabdeckung stellt eine Ausnahme
dar, weil die Anzahl möglicher Testfälle sehr schnell
ungeheuer groß wird (durch kombinatorische Explosion).
Ein vollständiger Funktionstest für eine einfache
Funktion, die zwei 16-Bit-Werte als Argument erhält,
würde schon 2^(16+16), also ca. 4 Milliarden Testfälle
bedeuten, um die Spezifikation vollständig zu testen.“
- Wikipedia
Statement Coverage (Anweisungsüberdeckung)
public static int sum(int values[], int offset){
int result = 0;
for (int value : values) {
if(offset > 0){
if(offset < value)
result += offset;
}
result += value;
}
return result;
}
Äquivalenzklassenbildung
„Ziel derÄquivalenzklassenbildung ist es,
Äquivalenzklassen zu bilden und so eine hohe
Fehlerentdeckungsrate mit einer möglichst geringen
Anzahl von Testfällen zu erreichen.“ - Wikipedia
Walkthrough
• Autor stellt seinen Code Dokument vor.
• Autor ist der Moderator
• Vorteile:
• Wenig Vorbereitungsaufwand
• Prüfung findet durch spontane Fragen statt.
44.
Inspektion
• Formalste Form eines Review
• oft formale Vorprüfung
• Gutachter bekommen die Dokumente vorab
• Gutachter prüfen erst einzeln
• Anschließende Sitzung mit Autor, Gutachtern und
Moderator
45.
Technisches Review
• Autornimmt am Review
nicht teil
• Gutachter stimmen ab
• Prüfen gegen Spezifikation
• Gutachter prüfen einzeln vorab
Zusammenfassung Reviews
Grad der
geringster höchsten mittel gering
Formalisierung
Autor
Autor Gutachter einzelne
Anwesend Gutachter
Prüfer Moderator Gutachter
Moderator
Code
Code
Anwendbarkeit Dokumente Dokumente Dokumente
Dokumente
Lernen
Vorbereitung kaum Formale Prüfung Formale Prüfung kaum
Walkthrough Inspektion Technisches Informelles
Review Review
Namens Konventionen
• Klassennamen
• beginnt mit einem Großbuchstaben, danach in Kleinbuchstaben
weiter
• beginnt ein neuer wesentlicher Teil des Klassennamens, wird er
mit einem Großbuchstaben verdeutlicht
• Beispiele
• Color, Button, TextField, String
50.
Namens Konventionen
• Methodennamen
• beginnt mit einem Kleinbuchstaben, weiter klein geschrieben
• beginnt ein neuer wesentlicher Teil wird er mit einem
Großbuchstaben verdeutlicht
• Beispiele
• equals(), setColor(), drawOval()...
Motivation von FitTests
• Automatisierung von Akzeptanztests mittels Tabellen.
• Framework für Datengetriebene Tests – Data-Driven-Test
(xUnit Test Patterns - Gerard Meszaros)
69.
Testen mit FitTabellen
Fit Tests für einen Beispiel Zinsrechner
70.
Testen mit FitTabellen
Fit Tests als Column Test Tabelle
Betrag
10
71.
Testen mit FitTabellen
Fit Tests als Column Test Tabelle
Betrag Zinssatz
10 2,5
72.
Testen mit FitTabellen
Fit Tests als Column Test Tabelle
Betrag Zinssatz Laufzeit
10 2,5 2
73.
Testen mit FitTabellen
Fit Tests als Column Test Tabelle
Betrag Zinssatz Laufzeit Summe
10 2,5 2 10,51
74.
Testen mit FitTabellen
Fit Tests als Column Test Tabelle
Prüfung eines Ergebnis
Eingehende - Werte
Betrag Zinssatz Laufzeit Summe()
Testfall 10 2,5 2 10,51
75.
Testen mit FitTabellen
Fit Tests als Column Test Tabelle
Betrag Zinssatz Laufzeit Summe()
10 2,5 2 10,51
10 10 3 25,94
10 10 10 100000
... ... ... ...
Testfälle
76.
Testen mit FitTabellen
Fit Tests als Column Test Tabelle
Rot = Fehler in der Anwendung
Gelb =Ausnahme - Fehler im Test
Grün = erfolgreicher Test
77.
Testen mit FitTabellen
Fit Test als Action Tabelle
Befehle / Kommandos
fit.Ac?onFixture Anbindung an die Applikation (Java)
start ZinsenAc(onFixture
enter Betrag 10 Argumente
enter Zinssatz 2,5
Testfall
enter Laufzeit 2
press Submit
check Summe 10,51
Objekt / Auswahl / Target
78.
Testen mit FitTabellen
Fit Test als Action Tabelle
Anwendung Starten
Eingaben
Aktion - Zinsen Berechnen
Prüfung
Fit Tabellen undApplikation
verknüpfen
public class ZinsenFixture extends ColumnFixture { Basis Klasse
für
private Zinsen zinsen = new Zinsen(); Fit Extension
public double betrag; SUT
public double zinsatz;
public double laufzeit; Eingehende - Werte
public double summe() { Prüfung - Ausgabe
zinsen.setBetrag(betrag);
zinsen.setLaufzeit(laufzeit);
zinsen.setZinssatz(zinsatz); Anbindung
return zinsen.berechneZinsen(); an SUT
}
}
84.
Fit Tabellen undApplikation
verknüpfen
fit.Ac?onFixture GOF - Dekorierer-Muster
start onlinerechner.ZinsenAc(onFixture
enter Betrag 10
enter Zinssatz 2,5
enter Laufzeit 2
press berechneZinsen
check Summe 10,51
Selenium Core
am Beispieleines Zinsrechner
Action - Tabelle
Selenium Befehl
open /JugsBase/zinsrechner.jsp Argumente
type betrag 20.0
type zinsatz 22.0
type laufzeit 100.0
clickAndWait submit
assertTextPresent 8649939365.27
Euro
Target
Selenium Remote Control
AnbindungSelenium in Java Code als Test Treiber
Selenium Server
Browser
Firefox, IE
Selenium Core
JAVA,
PHP...
SUT
HTTP Proxy
Webapplikation
91.
Übung 1I
• ErweiternSieden Basar FIT Test so dass auch für
den zweiten Kunden mehre Buchung durchgeführt
werden.