wiederholung - johner.org€¢sql-injection •xss •... ... persistenz (mit hibernate, orm) ... a3...
Post on 10-Jun-2018
215 Views
Preview:
TRANSCRIPT
SOTE220170120.notebook
1
January 20, 2017
Systemtests1. Wer (Tester): Tester2. Was (Testobjekt): ganzes System3. Auf was (Testziel): Alles außer Wartbarkeit4. Wie (Testmethode, Testwerkzeug): Lasttest, UIRoboter
Blackbox-Testverfahren• Äquivalenzklassen• Grenzwerten• ...
Fehlerbasiertes Testen
Stresstest
Dauertest
Wiederholung
Lasttest
Penetrationstests• SQL-Injection• XSS• ...
Usability• Inspektion• Usability Test (->
Abnahmetest?)
SOTE220170120.notebook
2
January 20, 2017
Erinnerung: Auch bei 10.000 Tests pro Sekunde würde das Programm 109 Jahre benötigen, um alle Kombinationen von Eingabewerten im Intervall von 0...32.000 zu testen
=> Vollständiges Testen ist niemals möglich
=> Wir benötigen "gute" Testfälle (hier: Kombinationen von Eingabewerten), um Fehler mit ausreichender Wahrscheinlichkeit zu finden. Dabei sind Methoden hilfreich z.B. Blackbox-Testverfahren.
Wiederholung
SOTE220170120.notebook
3
January 20, 2017
BlackboxTestverfahren1. Testen mit Äquivalenzklassen
0%: EK < 12.000 EUR
10%: 12.000 <= EK < 24.000 EUR
20%: 24.000 <= EK < 36.000 EUR
30%: EK >= 36.000 EUR
public float getSteuer(float einkommen)
Testen mit je einem Vertreter jeder Äquivalenzklasse (Bereiche von Werten, die sich im Test äquivalent verhalten)1. 17.00,432. 569,173. 17.222,004. 30.022,985. 1.393.202,00
negative Werte?
2. Grenzwertbasiertes Testen• Auf Grenzwert• Ein Inkrement drunter• Ein Inkrement drüber
z.B. 12.000; 12.000,01; 11.999,99
5 <= x < 9Bei einem Inkrement von 0,1 (abh. von Geschäftslogik) wären die Testfälle:
4,9 - 5,0 - 5,1 - 8,9 - 9,0 (drei Werte an unterer, zwei Werte an oberer Grenze)
Wiederholung
SOTE220170120.notebook
4
January 20, 2017
3. Fehlerbasiertes Testen
a) StringWerte• Leer, Nix, Unsichtbare Zeichen• Riesiger Wert• Andere Zeichensätze• Sonderzeichen• Code, Keywords, SQLInjection, XSS, ...
b) ZahlenWerte• alles von oben inkl. riesige Zahlen, • Zahlen an Grenzen wie 32.000• Strings• falscher Datentyp, HEX, Kommazahl statt Ganzahl• Besondere Zahlen (0, 1, 180, • Rechenoperationen• Formate: 10E99, führende Null, mehrere Kommata, • Falscher Dezimaltrenner, bzw. 1000erTrenner
c) DatumWerte• alles von• Zahlen an Grenze (auf Millisekundenbasis)• anderes Datum, Zeitvormat (Trenner)• Anderer Kalender• Vergangenheit, Zukunft• Schaltjahre, anderen Datums/Zeitzonen
Wiederholung
SOTE220170120.notebook
5
January 20, 2017
Last• # Benutzer• # Transaktionen• Datenvolumen/Zeit
Verhalten des Systems• Antwortzeit• Ressourcenverbrauch
ideal
StresstestLasttest
System kollabiert
SOTE220170120.notebook
6
January 20, 2017
Abnahmetests1. Wer (Tester): Repräsentative2. Was (Testobjekt): ganzes System in Zielumgebung3. Auf was (Testziel): Usability, Einhalt von Verträgen,
Portabilität, Interoperabilität4. Wie (Testmethode, Testwerkzeug): UsabilityLab
SOTE220170120.notebook
7
January 20, 2017
SOTE220170120.notebook
8
January 20, 2017
Persistenz (mit Hibernate, ORM)
Objekt-Relationes-MappingObjekte (Java) in relationalen Datenbanken speichern
1. Klasse
Pro Klasse eine Tabelle, pro Attribut eine Spalte
2. 1:1Beziehung
1. Möglichkeit: Zwei Tabellen (hier Kunde und Adresse) mit einem Fremdschlüssel z.B. von Adresse auf Kunde
2. Möglichkeit: eine Tabelle mit einem PK
SOTE220170120.notebook
9
January 20, 2017
3. 1:nBeziehungen
Zwei Tabellen mit FK in Tabelle Artikel auf Tabelle Lieferant
PK Firmenname
L1 "Aldi"
PK
Artikelnr
P1
bezeichnung
Gurken
FK
L1
4. n:mBeziehungen
3 Tabellen (Kunde, Artikel und Beziehungstabelle / Schlüsseltabelle mit den beiden PK
SOTE220170120.notebook
10
January 20, 2017
5. Interfaces
Interfaces werde nicht in DB repräsentiert
6. Vererbungbeziehungen
1. Eine Tabelle (mit allen Attributen und Typ der Instanz (z.B. Kunde oder Lieferant)
2. Zwei Tabellen (Kunde und Lieferant)
3. Drei Tabellen
SOTE220170120.notebook
11
January 20, 2017
1. Variante: eine Tabelle
ID/PK telefonnummer kundenId namen firmenname typ
1 07531123 A3 Otto Kunde
2 07531321 Edeka Lieferant
2. Tabellen
KdId telefonnumer namen id telfonnummer firmenname
A3 07531123 Otto 2 07531321 Edeka
3. Tabellen
id telefonnummer KdId name FK_GP Id firmenname FK_GP
1 07531123
2 07531321
A3 Otto 1 L1 Edeka 2
SOTE220170120.notebook
12
January 20, 2017
Pro/Vorteil Contra/Nachteil
1 Tabelle wenige/keine Joins, Performanz
viele NullWerte, dadurck keine NullPrüfung, zustätzliche Spalte, groß
2 Tabellen
keine zusätzliche Spalte, Datentyp einfache identifizierbar, übersichtlich
Wartbarkeit
3 TabellenWartbarkeit, NullPrüfung, O/RMapping offensichtlich
viele Tabellen, viele Joins (Performanz?)
SOTE220170120.notebook
13
January 20, 2017
Persistenz mit Hibernate
Ziee: Diese Klassen in DB persistieren (speichern)
Kochrezept1. Neues EclipseProjekt (File > New > Maven)2. pom.xml anlegen und Dependencies ergänzen:
1. Junit2. HibernateCore3. DBTreiber (mysql)
3. pom.xml ausführen und dadurch jarDateien herunterladen und in BuildPath ergänzen4. Klassen ganz "normal" implementieren (s. Beispiel Code)5. DefaultKonstruktor und getter/setter für alle Klassen hinzufügen6. Konfigurationsdatei anpassen (hibernate.cfg.xml): Benutzername, Passwort, Treiber7. Klassen annotieren (s. nächste Seite)8. HibernateUtil herunterladen 9. Geschäftslogik schreiben. Daten mit session.save(objekt) speichern. Siehe BeispielCode
SOTE220170120.notebook
14
January 20, 2017
Wichtige Annotationen
Name Ort Wert Kommentar
@Entity Klasse Klasse speichern
@Id Attribut oder getter Primärschlüssel
@Table Klassen name="Tabellenname"
wenn Tabelle <> Klassenname
@Column Attribute oder getter
name="Spaltenname"
wenn Attribut <> Spaltenname
@OnToMany, @ManyToOne getter
Abbildung von 1:n Beziehungen
weil "SingleTable-Strategy"
top related