4. Was ist Software Qualität ?
Funktionalität
Effizienz
Wartbarkeit
Zuverlässigkeit
Portabilität Benutzbarkeit
5. Was soll sichergestellt werden?
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 guter Software
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.
8. 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?
13. Kosten zur Fehlerbehebung
Kosten (€)
Fehler frühzeitig in einem Projekt
(Entwicklungsprozess) zu finden spart Geld !!!
Anforderungsanalyse Systementwurf Umsetzung Integrationstest Systemtest Betrieb
15. Komponententest Charakter
•Was wird getestet ? (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 Pattern vier 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.
19. Testabdeckung
„Als Testabdeckung bezeichnet 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ändige Testabdeckung 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
30. 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;
}
32. Statement Coverage (Anweisungsüberdeckung)
100 %
result = 0
for (value : values)
Erwartet values offset
offset > 0 offset < value
3 [2] 1
result += offset
result += value
return result
33. Branch Coverage 100 % (Zweigabdeckung)
result = 0
for (value : values)
offset > 0 offset < value
result += offset Erwartet values offset
result += value 3 [2] 1
2 [2] 0
return result
2 [2] 2
34. 100% Pfadabdeckung
100 % Pfadabdeckung wird in der Regel nicht
erreicht (halting problem)
38. Ä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
43. 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
• Autor nimmt am Review
nicht teil
• Gutachter stimmen ab
• Prüfen gegen Spezifikation
• Gutachter prüfen einzeln vorab
49. 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()...
68. Motivation von Fit Tests
• Automatisierung von Akzeptanztests mittels Tabellen.
• Framework für Datengetriebene Tests – Data-Driven-Test
(xUnit Test Patterns - Gerard Meszaros)
69. Testen mit Fit Tabellen
Fit Tests für einen Beispiel Zinsrechner
70. Testen mit Fit Tabellen
Fit Tests als Column Test Tabelle
Betrag
10
71. Testen mit Fit Tabellen
Fit Tests als Column Test Tabelle
Betrag Zinssatz
10 2,5
72. Testen mit Fit Tabellen
Fit Tests als Column Test Tabelle
Betrag Zinssatz Laufzeit
10 2,5 2
73. Testen mit Fit Tabellen
Fit Tests als Column Test Tabelle
Betrag Zinssatz Laufzeit Summe
10 2,5 2 10,51
74. Testen mit Fit Tabellen
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 Fit Tabellen
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 Fit Tabellen
Fit Tests als Column Test Tabelle
Rot = Fehler in der Anwendung
Gelb =Ausnahme - Fehler im Test
Grün = erfolgreicher Test
77. Testen mit Fit Tabellen
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 Fit Tabellen
Fit Test als Action Tabelle
Anwendung Starten
Eingaben
Aktion - Zinsen Berechnen
Prüfung
83. Fit Tabellen und Applikation
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 und Applikation
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
88. Selenium Core
am Beispiel eines 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
90. Selenium Remote Control
Anbindung Selenium in Java Code als Test Treiber
Selenium Server
Browser
Firefox, IE
Selenium Core
JAVA,
PHP...
SUT
HTTP Proxy
Webapplikation
91. Übung 1I
• ErweiternSie den Basar FIT Test so dass auch für
den zweiten Kunden mehre Buchung durchgeführt
werden.