14
SOTE220170120.notebook 1 January 20, 2017 Systemtests 1. Wer (Tester): Tester 2. Was (Testobjekt): ganzes System 3. Auf was (Testziel): Alles außer Wartbarkeit 4. Wie (Testmethode, Testwerkzeug): Lasttest, UIRoboter Blackbox- Testverfahren Äquivalenzklassen Grenzwerten ... Fehlerbasiertes Testen Stresstest Dauertest Wiederholung Lasttest Penetrationstests SQL-Injection XSS ... Usability Inspektion Usability Test (-> Abnahmetest?)

Wiederholung - johner.org€¢SQL-Injection •XSS •... ... Persistenz (mit Hibernate, ORM) ... A3 07531123 Otto 2 07531321 Edeka 3. Tabellen id telefonnummer

Embed Size (px)

Citation preview

Page 1: Wiederholung - johner.org€¢SQL-Injection •XSS •... ... Persistenz (mit Hibernate, ORM) ... A3 07531123 Otto 2 07531321 Edeka 3. Tabellen id telefonnummer

SOTE2­2017­01­20.notebook

1

January 20, 2017

Systemtests1. Wer (Tester): Tester2. Was (Testobjekt): ganzes System3. Auf was (Testziel): Alles außer Wartbarkeit4. Wie (Testmethode, Testwerkzeug): Lasttest, UI­Roboter

Blackbox-Testverfahren• Äquivalenzklassen• Grenzwerten• ...

Fehlerbasiertes Testen

Stresstest

Dauertest

Wiederholung

Lasttest

Penetrationstests• SQL-Injection• XSS• ...

Usability• Inspektion• Usability Test (->

Abnahmetest?)

Page 2: Wiederholung - johner.org€¢SQL-Injection •XSS •... ... Persistenz (mit Hibernate, ORM) ... A3 07531123 Otto 2 07531321 Edeka 3. Tabellen id telefonnummer

SOTE2­2017­01­20.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

Page 3: Wiederholung - johner.org€¢SQL-Injection •XSS •... ... Persistenz (mit Hibernate, ORM) ... A3 07531123 Otto 2 07531321 Edeka 3. Tabellen id telefonnummer

SOTE2­2017­01­20.notebook

3

January 20, 2017

Blackbox­Testverfahren1. 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

Page 4: Wiederholung - johner.org€¢SQL-Injection •XSS •... ... Persistenz (mit Hibernate, ORM) ... A3 07531123 Otto 2 07531321 Edeka 3. Tabellen id telefonnummer

SOTE2­2017­01­20.notebook

4

January 20, 2017

3. Fehlerbasiertes Testen

a) String­Werte• Leer, Nix, Unsichtbare Zeichen• Riesiger Wert• Andere Zeichensätze• Sonderzeichen• Code, Keywords, SQL­Injection, XSS, ...

b) Zahlen­Werte• 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. 1000er­Trenner

c) Datum­Werte• alles von• Zahlen an Grenze (auf Millisekundenbasis)• anderes Datum, Zeitvormat (Trenner)• Anderer Kalender• Vergangenheit, Zukunft• Schaltjahre, anderen Datums­/Zeitzonen

Wiederholung

Page 5: Wiederholung - johner.org€¢SQL-Injection •XSS •... ... Persistenz (mit Hibernate, ORM) ... A3 07531123 Otto 2 07531321 Edeka 3. Tabellen id telefonnummer

SOTE2­2017­01­20.notebook

5

January 20, 2017

Last• # Benutzer• # Transaktionen• Datenvolumen/Zeit

Verhalten des Systems• Antwortzeit• Ressourcenverbrauch

ideal

StresstestLasttest

System kollabiert

Page 6: Wiederholung - johner.org€¢SQL-Injection •XSS •... ... Persistenz (mit Hibernate, ORM) ... A3 07531123 Otto 2 07531321 Edeka 3. Tabellen id telefonnummer

SOTE2­2017­01­20.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): Usability­Lab

Page 7: Wiederholung - johner.org€¢SQL-Injection •XSS •... ... Persistenz (mit Hibernate, ORM) ... A3 07531123 Otto 2 07531321 Edeka 3. Tabellen id telefonnummer

SOTE2­2017­01­20.notebook

7

January 20, 2017

Page 8: Wiederholung - johner.org€¢SQL-Injection •XSS •... ... Persistenz (mit Hibernate, ORM) ... A3 07531123 Otto 2 07531321 Edeka 3. Tabellen id telefonnummer

SOTE2­2017­01­20.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:1­Beziehung

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

Page 9: Wiederholung - johner.org€¢SQL-Injection •XSS •... ... Persistenz (mit Hibernate, ORM) ... A3 07531123 Otto 2 07531321 Edeka 3. Tabellen id telefonnummer

SOTE2­2017­01­20.notebook

9

January 20, 2017

3. 1:n­Beziehungen

Zwei Tabellen mit FK in Tabelle Artikel auf Tabelle Lieferant

PK Firmenname

L1 "Aldi"

PK

Artikelnr

P1

bezeichnung

Gurken

FK

L1

4. n:m­Beziehungen

3 Tabellen (Kunde, Artikel und Beziehungstabelle / Schlüsseltabelle mit den beiden PK

Page 10: Wiederholung - johner.org€¢SQL-Injection •XSS •... ... Persistenz (mit Hibernate, ORM) ... A3 07531123 Otto 2 07531321 Edeka 3. Tabellen id telefonnummer

SOTE2­2017­01­20.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

Page 11: Wiederholung - johner.org€¢SQL-Injection •XSS •... ... Persistenz (mit Hibernate, ORM) ... A3 07531123 Otto 2 07531321 Edeka 3. Tabellen id telefonnummer

SOTE2­2017­01­20.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

Page 12: Wiederholung - johner.org€¢SQL-Injection •XSS •... ... Persistenz (mit Hibernate, ORM) ... A3 07531123 Otto 2 07531321 Edeka 3. Tabellen id telefonnummer

SOTE2­2017­01­20.notebook

12

January 20, 2017

Pro/Vorteil Contra/Nachteil

1 Tabelle wenige/keine Joins, Performanz

viele Null­Werte, dadurck keine Null­Prüfung, zustätzliche Spalte, groß

2 Tabellen

keine zusätzliche Spalte, Datentyp einfache identifizierbar, übersichtlich

Wartbarkeit

3 TabellenWartbarkeit, Null­Prüfung, O/R­Mapping offensichtlich

viele Tabellen, viele Joins (Performanz?)

Page 13: Wiederholung - johner.org€¢SQL-Injection •XSS •... ... Persistenz (mit Hibernate, ORM) ... A3 07531123 Otto 2 07531321 Edeka 3. Tabellen id telefonnummer

SOTE2­2017­01­20.notebook

13

January 20, 2017

Persistenz mit Hibernate

Ziee: Diese Klassen in DB persistieren (speichern)

Kochrezept1. Neues Eclipse­Projekt (File ­> New ­> Maven)2. pom.xml anlegen und Dependencies ergänzen:

1. Junit2. Hibernate­Core3. DB­Treiber (mysql)

3. pom.xml ausführen und dadurch jar­Dateien herunterladen und in Build­Path ergänzen4. Klassen ganz "normal" implementieren (s. Beispiel Code)5. Default­Konstruktor 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 Beispiel­Code

Page 14: Wiederholung - johner.org€¢SQL-Injection •XSS •... ... Persistenz (mit Hibernate, ORM) ... A3 07531123 Otto 2 07531321 Edeka 3. Tabellen id telefonnummer

SOTE2­2017­01­20.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"