checkerberry test center
Weiter
checkerberry test center
Benutzerhandbuch
ConceptPeople consulting gmbh
3.2.0
12.06.2018
Inhaltsverzeichnis
1. Checkerberry test center
1.1. Einleitung
1.2. Release-Notes
1.2.1. Änderungen in Version 3.1.5
1.2.2. Änderungen in Version 3.1.4
1.2.3. Änderungen in Version 3.1.3
1.2.4. Änderungen in Version 3.1.2
1.2.5. Änderungen in Version 3.1.1
1.2.6. Änderungen in Version 3.1.0
1.2.7. Änderungen in Version 3.0.6
1.2.8. Änderungen in Version 3.0.0
1.3. Allgemeine Test-Konzepte
1.3.1. Test-Arten
1.3.1.1. Unit-Tests
1.3.1.2. Integrationstests
1.3.1.3. GUI-Tests
1.3.1.4. Abgrenzung Unit- und Integrationstests
1.3.2. Test-Durchführung
1.3.2.1. Manuelle Tests
1.3.2.2. Automatisierte Tests
1.3.2.3. Regressionstests
1.3.3. Testframeworks
1.3.3.1. Test-Ablauf
1.3.4. Acceptance Test Driven Development (ATDD)
1.3.5. Positionierung des checkerberry test centers
1.4. Checkerberry Maven-Repository
2. Checkerberry db
2.1. Einleitung
2.2. Funktionsweise
2.2.1. Setup-Phase
2.2.2. Test-Phase
2.2.3. Teardown-Phase
2.3. Architektur
2.4. Features
2.4.1. Verwendung von XML-Testdaten
2.4.1.1. Header-Bereich der Testdaten
2.4.1.2. Datenbereich der Testdaten
2.4.1.3. Definieren der Testdatenstruktur als DTD
2.4.1.4. Konfiguration der Testdaten-DTD
2.4.1.5. Anlegen einer neuen Testdaten-DTD
2.4.1.6. Automatische Aktualisierung der Testdaten-DTD
2.4.1.7. Tool-Unterstützung durch DTD-Verwendung
2.4.2. Zuordnung von Testdaten und tatsächliche Daten
2.4.3. Überprüfen der Ergebnisse durch Validatoren
2.4.3.1. Verwendung der Standard-Validatoren
2.4.3.2. Aktivierung / Deaktivierung von Validatoren
2.4.3.3. Anpassen der Ausführungsreihenfolge von Validatoren
2.4.3.4. Eigene Validatoren erstellen
2.4.3.5. Registrierung von Validatoren
2.4.4. Definition von modularen Testdaten
2.4.4.1. Bezeichner der INCLUDE Tabelle anpassen
2.4.5. Tabellenspalten aus Vergleichen ausschließen
2.4.6. Ignorieren von Datenbanktabellen
2.4.7. Verwendung von Parametern in Testdaten
2.4.8. Überprüfen von Datenbankrelationen mit Autoparametern
2.4.8.1. Auflösen von Autoparametern in Lookup-Keys
2.4.8.2. Manuelle Prüfung einzelner Autoparameter
2.4.9. Dynamische Testdaten durch Funktionen
2.4.9.1. Zusammenhang von Parametern und Funktionen
2.4.9.2. Maskieren von Funktionsaufrufen
2.4.9.3. Vordefinierte Funktionen
2.4.9.4. Eigene Funktionen erstellen
2.4.9.5. Definition einer eigenen Funktionssyntax
2.4.9.6. Auswertungsreihenfolge von Funktionen in Testdaten
2.4.10. Einschränken des Datenbankzugriffs
2.4.10.1. Konfiguration der Zugriffskontrolle
2.4.11. Datenbank durch Annotation leeren
2.4.12. Verwenden von leeren Tabellen
2.4.13. Erstellen von Datenbank-Dumps im XML-Testdatenformat
2.4.13.1. Feingranulares, kaskadiertes Erstellen von Datenbank-Dumps
2.4.13.2. Analysieren von Problemen mit Hilfe von Datenbank-Dumps
2.4.13.3. Erstellen von initialen Testdaten mit Hilfe von Datenbank-Dumps
2.4.13.4. Erstellen von erwarteten Testdaten mit Hilfe von Datenbank-Dumps
2.4.13.5. Encoding der Datenbank-Dumps ändern
2.4.14. Performance-Optimierung durch Caching von Tabellen
2.4.14.1. Leeren des Cache
2.4.14.2. Caching von Includes
2.4.14.3. Caching und Löschen von Tabellen
2.4.14.4. Caching von leeren Tabellen
2.4.14.5. Globales Deaktivieren des Cache
2.4.15. Analysieren mit Hilfe von Reports
2.4.15.1. Anzeigen aller Testabweichungen
2.4.15.2. Anzeigen der tatsächlichen Datenbankänderungen
2.4.15.3. Anzeigen der erwarteten Datenbankänderungen
2.4.15.4. Aufbau eines Reports am Beispiel des Diff-Reports
2.4.16. Einspielen von Testdaten temporär unterdrücken
2.4.16.1. Einspielen der initialen Testdaten unterdrücken
2.4.16.2. Einspielen der gecachten Testdaten unterdrücken
2.4.17. Aktivieren des Datenbank-Loggings
2.4.17.1. Konfigurieren des Datenbank-Loggings
2.4.18. Namenskonvention der XML-Testdaten anpassen
2.4.19. Suffixe der XML-Testdaten anpassen
2.4.20. Anpassen von DbUnit-Properties und Features
2.4.21. Verwenden des BCD-Formats
2.4.21.1. Verwenden von BCD über eine Funktion
2.4.21.2. Aktivieren von BCD als Standard-Binärformat
2.4.21.3. Aktivierung und Verwendung des binären Validators
2.5. Installation
2.5.1. Einbinden der erforderlichen Bibliotheken
2.5.1.1. Einbinden der Bibliotheken über Maven
2.5.1.2. Checkerberry db-Bibliotheken
2.5.2. Implementierung der konkreten checkerberry-db-Bridge
2.5.2.1. Anbinden der Datenbank durch den DatabaseConnector
2.5.2.2. Definition der Datenbankstruktur im DatabaseDescriptionCallback
2.5.2.3. Konfiguration von checkerberry db mit dem DbConfigurationCallback
2.5.2.4. Laden der Testdaten durch den ClasspathResourceLoader
2.5.3. Erzeugen der checkerberry db-Umgebung
2.5.3.1. Aufrufen der setUp-Methode
2.5.3.2. Einstellen der Transaktionsverwaltung
2.5.3.3. Spring-Integration
2.6. Erstellen von Tests
3. Checkerberry web
3.1. Einleitung
3.2. Funktionsweise
3.2.1. Setup-Phase
3.2.2. Test-Phase
3.2.3. Teardown-Phase
3.3. Architektur
3.4. Funktionsumfang
3.4.1. Wiederverwendung von Browser-Instanzen
3.4.2. Festlegen der Test-Url
3.4.3. Lokalen Domain Name Service (DNS) ändern
3.4.4. Fernsteuerung auswählen (Selenium RC und/oder WebDriver)
3.4.5. Registrieren neuer WebDriver-Instanzen
3.4.6. Konfigurieren von WebDriver-Instanzen
3.4.7. Kompatibilitätsmodus Selenium RC und WebDriver
3.5. Installation
3.5.1. Einbinden der checkerberry web-Bibliotheken
3.5.1.1. Einbinden der Bibliotheken über Maven
3.5.1.2. Checkerberry web-Bibliotheken
3.5.2. Erzeugen der checkerberry web-Umgebung
3.5.2.1. Checkerberry web-Umgebung
3.5.2.2. checkerberry web-Umgebung unter Verwendung anderer Testframeworks
3.5.2.3. Konfiguration von checkerberry web
3.6. Erstellen von Tests
3.7. Modellansatz
4. Checkerberry business view
4.1. Einleitung
4.2. Ansichten des checkerberry business views
4.2.1. Übersichtsseite
4.2.2. Detailansicht
4.2.3. Dashboard View
4.2.4. HTML-ATDD-Report
4.3. Konfiguration
4.3.1. Maven-Plugin
4.3.1.1. Plugin Beschreibung
4.3.1.2. Beispielkonfiguration
4.3.2. Hudson Plugin
4.3.2.1. Hudson-Integration
4.3.2.2. Ansichten aktivieren
4.3.2.3. Dashboard View einrichten
4.3.3. HTML-Maven-Plugin
4.3.3.1. Plugin Beschreibung
4.3.3.2. Beispielkonfiguration
4.4. User Stories schreiben
4.4.1. Verwendung des Jira-UserStory-Retrievers
4.4.1.1. Konfiguration des Maven-Projekts
4.4.1.2. Konfiguration des Jira-UserStory-Retriever
4.4.1.3. Jira User Story Format
4.4.2. Verwendung des Standard-Parsers
4.4.2.1. User Story Format
4.4.2.2. Parser Eigenschaften
4.4.3. Eigene User Story-Parser schreiben
5. Checkerberry cockpit
5.1. Einleitung
5.2. Starten des checkerberry cockpits
5.3. checkerberry cockpit XML-Konverter
5.3.1. Aufgaben
5.3.1.1. Tags umbenennen
5.3.1.2. Attribute umbenennen
5.3.1.3. Neue Attribute einfügen
5.3.1.4. Bestehende Attribute löschen
5.3.1.5. Adressierung von Tags und Attributen
5.3.2. Bedienung der grafischen Oberfläche
5.3.2.1. Angabe von Mapping-Dateien
6. Fragen und Antworten
6.1. Checkerberry test center
6.1.1. Wie kann ich die Versionsnummer einer externen Bibliothek ändern?
6.1.2. Wie konfiguriere ich die Logging-Einstellungen?
6.1.2.1. Konfiguration des Logging von Selenium
6.1.3. Welche generellen Fehlermeldungen gibt es?
6.2. Checkerberry db
6.2.1. Wie erstelle ich eine neue DTD?
6.2.2. Wie kann ich die Datenbank-Statements loggen?
6.2.3. Warum bekomme ich bei einem Datenbank-Dump einen OutOfMemoryError?
6.2.4. Meine Testdatei ist da, wird aber nicht gefunden?
6.2.5. Meine inkludierten Testdaten (LOCATION=RELATIVE) werden nicht gefunden?
6.2.6. Wie wird die Verbindung zwischen Datenbank und erwarteten Daten hergestellt?
6.2.7. Warum liest checkerberry db nicht die korrekten Werte aus der Datenbank?
6.2.8. Was sind Lookup-Keys?
6.2.9. Muss ich immer eine DTD für die Testdaten verwenden?
6.2.10. Warum bekomme ich die Fehlermeldung trotz korrekter Testdaten?
6.2.11. Warum ändert sich die Reihenfolge der Tabellen in der DTD?
6.2.12. Welche Fehlermeldungen gibt es in checkerberry db?
6.3. Checkerberry web
6.3.1. Wie kann ich checkerberry web in Hudson integrieren?
6.3.2. Wie kann ich Portal-Anwendungen testen?
6.3.3. Warum erscheint bei clickAndWaitForPage ein Timeout?
6.3.4. Warum laufen die Tests im Internet Explorer nicht?
6.3.5. Welche Fehlermeldungen gibt es in checkerberry web?
6.3.6. Warum Selenium RC als Default-Fernsteuerung?
6.3.7. Kann ich mein Modelle für Selenium RC und WebDriver verwenden?
7. Best Practices
7.1. Checkerberry test center
7.1.1. Namenskonvention
7.2. Checkerberry db
7.2.1. Good setup don't need cleanup
7.2.2. Mindestens ein Datenbankschema pro Entwickler
7.2.3. Vermeide das Testdaten-Labyrinth
7.2.4. Tests müssen unabhängig voneinander sein
7.2.5. Testdaten so groß wie nötig, so klein wie möglich
7.2.6. Lagere Caching-Daten in Includes aus
7.2.7. Verwende fachliche Lookup-Keys
7.2.8. Datenbank-Sequences mit Puffer verwenden
7.3. Checkerberry web
7.3.1. Anwendungsspezifische Modellschicht
7.3.2. Bevorzugter Locator: HTML-ID
7.3.3. Ermittlung der Locatoren
7.4. Checkerberry cockpit
7.4.1. Erstellung von Sicherungskopien
7.4.2. Angabe von Mapping-Informationen
Literaturverzeichnis
Abbildungsverzeichnis
1.1.
Ablauf automatisierte Test-Durchführung
2.1.
Überblick Testablauf checkerberry db
2.2.
Screenshot - Testdaten im Klassenpfad
2.3.
Architektur checkerberry db
2.4.
Testdaten-Struktur
2.5.
Aktualisierung der DTD
2.6.
Auto-Vervollständigung XML-Tag
2.7.
Auto-Vervollständigung XML-Attribut
2.8.
Lookup-Keys
2.9.
Include-Beispiel: Testdaten
2.10.
Include-Beispiel: Ergebnis
2.11.
Beispiel Autoparameter: Ermittlung der pizzaId
2.12.
Beispiel Autoparameter: Ermittlung der toppingId
2.13.
Beispiel-Autoparameter: Setzen von Werten
2.14.
Beispiel Autoparameter: Fehler bei der Ermittlung
2.15.
Beispiel Autoparameter: Spezialfall einfache Definition
2.16.
Zugriffskontrolle
2.17.
Blockierter Zugriff
2.18.
Whitelist-Freigabe
2.19.
Read-Only-Freigabe
2.20.
Datenbank-Dump für eine Tabelle
2.21.
Datenbank-Dump für mehrere Tabellen
2.22.
Datenbank-Dump für die gesamte Datenbank
2.23.
Cache
2.24.
NoCache-Annotation
2.25.
Wachsender Cache
2.26.
Erstellung Diff-Report
2.27.
Erstellung Process-Analysis-Report
2.28.
Erstellung Expectation-Report
2.29.
Diff-Report
2.30.
Tabelle mit Abweichungen
2.31.
Diff-Report ohne Definition von Lookup-Keys
2.32.
Tabelle nicht in der Datenbank vorhanden, obwohl sie erwartet wurde
2.33.
Tabelle soll nicht verglichen werden
2.34.
Tabelle wurde leer erwartet
2.35.
Setup-Phase ohne Skip-Annotationen
2.36.
Setup-Phase mit SkipDbSetup
2.37.
Setup-Phase mit SkipImportCacheableTables
2.38.
Transaktionsverhalten
2.39.
Angepasstes Transaktionsverhalten
3.1.
Selenium Fernsteuerung
3.2.
Checkerberry web Setup-Phase
3.3.
Checkerberry web Test-Phase
3.4.
Checkerberry web Teardown-Phase
3.5.
Architektur checkerberry web
3.6.
Login-Maske
4.1.
User Story Trend in der Übersicht
4.2.
Erweiterte Sidebar
4.3.
Änderung der Akzeptanztests
4.4.
User Story Trend
4.5.
Detailansicht der Akzeptanztests
4.6.
Tabellensortierung
4.7.
Darstellung des Acceptance-Test Portlet
4.8.
Tortendiagramm HTML-ATDD-Report
4.9.
Übersicht HTML-ATDD-Report
4.10.
Publish combined Acceptance-Test Report
4.11.
Publish Acceptance-Test Report für Module
4.12.
Dashboard View erstellen
4.13.
Ein Vorgang in Jira
4.14.
Wichtige Felder eines Jira Vorgangs
4.15.
checkerberry ATDD Hudson Plugin
5.1.
Grafische Oberfläche checkerberry cockpit XML-Konverter
5.2.
Arbeitsblätter für Mapping-Informationen
5.3.
Arbeitsblatt "Tags"
5.4.
Arbeitsblatt "Attributes"
5.5.
checkerberry cockpit XML-Konverter – Auswahl der Mapping-Quelle
7.1.
Eine Datenbank pro Entwickler
7.2.
Zwei Datenbanken pro Entwickler
7.3.
Testdaten-Labyrinth
7.4.
UML-Klassenhierarchie der Modellklassen
7.5.
Ermittlung der Locatoren mit der Selenium IDE
7.6.
Ermittlung der Locatoren mit dem DOM Inspector
Tabellenverzeichnis
1.1.
Änderungen in Version 3.1.5
1.2.
Änderungen in Version 3.1.4
1.3.
Änderungen in Version 3.1.3
1.4.
Änderungen in Version 3.1.2
1.5.
Änderungen in Version 3.1.1
1.6.
Änderungen in Version 3.1.0
1.7.
Änderungen in Version 3.0.6
1.8.
Änderungen in Version 3.0.0
2.1.
now()-Funktion
2.2.
today()-Funktion
2.3.
Tabelle USERS
2.4.
Tabelle DISH
2.5.
Tabelle USERDISHREL
2.6.
Bibliotheken von checkerberry db
3.1.
Konfiguration von checkerberry web
3.2.
Bibliotheken von checkerberry web
6.1.
Fehlermeldungen des checkerberry test centers
6.2.
Fehlermeldungen von checkerberry db
6.3.
Fehlermeldungen in checkerberry web
Liste der Beispiele
1.1.
Beispiel checkerberry-Maven-Repository
2.1.
Beispiel UserDaoTest.testInsertUser
2.2.
Beispiel UserDaoTest_testInsertUser_initial.xml
2.3.
Beispiel UserDaoTest_testInsertUser_result.xml
2.4.
Beispiel Testdaten-DTD
2.5.
Konfiguration der Testdaten-DTD
2.6.
Referenzierung der DTD in den Testdaten.
2.7.
Erzeugung einer DTD
2.8.
Anpassen der Lookup-Keys
2.9.
Aktivierung von Validatoren
2.10.
Ausführungsreihenfolge von Validatoren (global)
2.11.
Ausführungsreihenfolge von Validatoren (lokal)
2.12.
Ausführungsreihenfolge von Validatoren pro Tabellenspalte
2.13.
Validator-Interface
2.14.
Registrierung von Validatoren
2.15.
Einbinden von Testdaten über INCLUDE
2.16.
Include-Beispiel: Reihenfolge der Tabellen in der DTD
2.17.
Konfigurationseinstellungen für den Bezeichner der INCLUDE Tabelle
2.18.
Anpassen der auszuschließenden Spalten
2.19.
Ausschluss von Tabellen, die durch checkerberry db ignoriert werden sollen
2.20.
Parameter in Testdaten
2.21.
Setzen von Parametern
2.22.
Beispiel Autoparameter: Erwartete Testdaten
2.23.
Beispiel Autoparameter: Auslesen von Autoparametern im Test
2.24.
Beispiel Autoparameter: Definition in Lookup-Key-Spalte
2.25.
Beispiel Autoparameter: Einmalige Definition
2.26.
Beispiel Autoparameter: Manuelle Prüfung
2.27.
Dynamische initiale Testdaten mit Hilfe von Funktionen
2.28.
Schachteln von Funktionsaufrufen und Parametern
2.29.
Interface des TimeService
2.30.
Definieren einer Funktion zur Addition
2.31.
Registrieren der AddFunction
2.32.
Elemente der Syntax
2.33.
Rekonfiguration der Syntax
2.34.
Zugriffskontrolle
2.35.
ClearTables Annotation an Methode
2.36.
ClearTables-Annotation an Klasse
2.37.
Explizite Angabe einer leeren Tabelle
2.38.
Erstellen von Datenbank-Dumps
2.39.
Feingranulares Erstellen von Datenbank-Dumps
2.40.
Datenbankdump ausgehend von der USERS-Tabelle
2.41.
Datenbankdump ausgehend von der USERS- und der DISH-Tabelle
2.42.
Zusätzliche Definition von Primär- und ForeignKeys
2.43.
Erhöhen der maximalen Anzahl der Durchläufe
2.44.
Konfigurationseinstellungen für Datenbank-Dumps
2.45.
Markieren einer Tabelle als cacheable
2.46.
Leeren des Cache
2.47.
Konfigurationseinstellungen zum globalen Deaktivieren des Cache
2.48.
Erstellung Diff-Report
2.49.
Erstellung Process-Analysis-Report
2.50.
Erstellung Expectation-Report
2.51.
Skip-Annotationen
2.52.
Aktivierung des Datenbank-Loggings
2.53.
Konfiguration der Testdatennamen
2.54.
Konfigurationseinstellungen für die Dateiendungen der Testdaten
2.55.
Setzen von DbUnit-Properties und -Features.
2.56.
Funktion bcdToBase64
2.57.
Funktion bcdToBase64 registrieren
2.58.
Direkte Angabe von BCD-Werten
2.59.
Umstellung des Binärformats auf BCD
2.60.
Verwendung des Binär-Validators in den erwarteten Testdaten
2.61.
Registrieren des Binär-Validators
2.62.
Erforderliche Maven-Abhängigkeiten von checkerberry db
2.63.
Optionale Maven-Abhängigkeiten auf die Basis-Bridge-Implementierung
2.64.
Interface DatabaseConnector
2.65.
Beispiel-Implementierung des DatabaseConnectors (Spring/Hibernate-Umgebung)
2.66.
Interface DatabaseDescriptionCallback
2.67.
Beispiel-Implementierung des DatabaseDescriptionCallbacks
2.68.
Interface DbConfigurationCallback
2.69.
Beispiel-Implementierung des DbConfigurationCallbacks
2.70.
Datenbankparameter bei Verwendung des Standard-DatabaseConnectors
2.71.
Interface ClasspathResourceLoader
2.72.
SpringClasspathResourceLoader in ApplicationContext.xml
2.73.
Erzeugen der checkerberry db-Umgebung
2.74.
Setup-Methoden des checkerberry db-Environments
2.75.
Beenden der checkerberry db-Umgebung nach einem Test
2.76.
Ermittlung Testmethodennamen unter JUnit3
2.77.
Ermittlung Testmethodennamen unter JUnit4 und Spring
2.78.
Ermittlung Testmethodennamen unter JUnit4.7
2.79.
Ermittlung Testmethodennamen unter TestNG
2.80.
Spring-Integration
2.81.
SpringCheckerberryDbEnvironmentCreator
2.82.
Beispiel Testklasse
2.83.
Beispiel Testdaten
3.1.
Interface NewBrowserInstancePolicy
3.2.
Setzen der Test-Url über die Annotation
3.3.
Konfiguration der DNS-Strategie
3.4.
Konfiguration der Fernsteuerung
3.5.
Interface WebDriverCreator
3.6.
Konstruktoren FirefoxDriverCreator
3.7.
Erforderliche Maven-Abhängigkeiten von checkerberry web
3.8.
Erzeugung der checkerberry web-Umgebung mit JUnit3
3.9.
Beenden der checkerberry web-Umgebung mit JUnit3
3.10.
login.html
3.11.
LoginPage.java
3.12.
Test-Implementierung der Login-Seite
3.13.
Test-Implementierung der Login-Seite (erweitert)
3.14.
Test-Aufzeichnung mit Selenium IDE
3.15.
Test-Aufzeichnung mit Selenium IDE und kryptischen Locatoren
4.1.
Beispielkonfiguration des Maven-Plugins
4.2.
Einbinden mehrerer User Story Parser
4.3.
Beispielkonfiguration des HTML-Maven-Plugins
4.4.
Beispiel
4.5.
Konfiguration Jira-UserStory-Retriever
4.6.
Beispiel einer User Story des Standard-Parsers
4.7.
@AcceptanceTest-Annotation verfügbar machen
4.8.
Testmethode mit @AcceptanceTest-Annotation
4.9.
@AcceptanceTest-Annotation mit mehreren Schlüsselwerten
4.10.
Standard-Parser bekannt machen
4.11.
Beispiel einer minimalen User Story des Standard-Parsers
4.12.
UserStoryParser-Interface
4.13.
Konstruktor der UserStory-Klasse
5.1.
Testdaten-Beispiel für checkerberry cockpit XML-Konverter
5.2.
Testdaten-Beispiel nach Umbenennung der Tags
5.3.
Testdaten-Beispiel nach Umbenennung der Attribute
5.4.
Testdaten-Beispiel nach dem Einfügen eines neuen Attributs mit Default-Wert
5.5.
Testdaten-Beispiel nach dem Einfügen eines neuen Attributs mit Referenzen
5.6.
Testdaten-Beispiel nach dem Löschen von Attributen
6.1.
Änderung einer Versionsnummer in der settings.xml
6.2.
log4j.properties
6.3.
Maven Aufruf mit Angabe einer alternativen logging.properties
6.4.
logging.properties
6.5.
Login-Page-Modell im Portal-Umfeld
6.6.
Beispiel-Implementierung Login-Portlet-Modell
7.1.
AbstractRemoteControlPage createComponentProxy