7. Entity
•Entity hat immer einen eindeutigen Schlüssel (ID)
dieser identifiziert die Entität
•Equals auf Basis der ID...
8. Entity Manager
•API bietet alle Funktion für den Datenbankzugriff:
•persist
•remove
•createQuery
•merge
•findXXX
•....
9. Entity Manager
•Wenn die Objekte (Entity Klassen) auch als Daten
Transfer Objekte genutzt werden sollen können
sie vom Entity Manager gelöst werden man spricht
von detached Entities!
11. Übungen I
•Erweitern Sie Ihre Aufgaben Verwaltung um eine
Datenbank Anbindung mittels JPA
•Schritt 1. Domain Modell markieren mit den JPA
Annotationen für das OR Mapping...
•Schritt II. Repository Funktionen zum speichern
und laden einer Aufgabe umsetzen...
13. Was ist Software Qualität ?
Funktionalität - Software sollte die spezifizierten Use-
Cases / Anforderungen implementieren.
4+4=9
14. Was ist Software Qualität ?
Benutzbarkeit vorgegebenen Use-Cases lassen sich
effektiv, effizient und zufriedenstellend bedienen.
Benutzbarkeit betrifft nicht nur grafische
Benutzerschnittstellen z.B. auch APIs...
Die Benutzbarkeit richtet sich nach dem
Anwendungsfall...
15. Was ist Software Qualität ?
Zuverlässigkeit wie verlässlich eine Anwendung in einem
Zeitintervall ihr Funktionalität erfüllt
16. Was ist Software Qualität ?
Portabilität - der Grad der Plattformunabhängigkeit eines
Computerprogramms
Portabilität - Die Anwendung läuft auf
Linux, MAC und auf Ihrem Android Mobil
Phone ...
17. Was ist Software Qualität ?
Wartbarkeit - zeigt an, mit welcher Energie und welchem
Erfolg Änderungen in einem Systemzusammenhang von
Applikationen durchgeführt werden können.
18. Was ist Software Qualität ?
Effizienz - Performance und verbrauchte Ressourcen
19. Was ist Software Qualität ?
Funktionalität
Effizienz
Wartbarkeit
Zuverlässigkeit
Portabilität Benutzbarkeit
20. 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.
21. 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.
22. Kosten zur Fehlerbehebung
Kosten (€)
Fehler frühzeitig in einem Projekt
(Entwicklungsprozess) zu finden spart Geld !!!
Anforderungsanalyse Systementwurf Umsetzung Integrationstest Systemtest Betrieb
24. 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
25. 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.
28. 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
29. 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
30. 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
39. 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;
}
41. 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
42. 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
43. 100% Pfadabdeckung
100 % Pfadabdeckung wird in der Regel nicht
erreicht (halting problem)
47. Walkthrough
• Autor stellt seinen Code Dokument vor.
• Autor ist der Moderator
• Vorteile:
• Wenig Vorbereitungsaufwand
• Prüfung findet durch spontane Fragen statt.
48. 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
49. Technisches Review
• Autor nimmt am Review
nicht teil
• Gutachter stimmen ab
• Prüfen gegen Spezifikation
• Gutachter prüfen einzeln vorab
53. 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
54. 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