Automatische Tests

Jetzt loslegen. Gratis!
oder registrieren mit Ihrer E-Mail-Adresse
Rocket clouds
Automatische Tests von Mind Map: Automatische Tests

1. Continuous Integration

1.1. Integration Server

1.2. Automatischer Build

1.2.1. Buildtools

1.2.1.1. ANT?

1.2.1.2. Maven?

1.2.2. Compilierung

1.2.3. automatische Tests

1.2.3.1. schnellste Tests zuerst

1.2.3.2. langsame Test ggf im Nightly Build

1.2.4. DB Integration (alterDB-Script)

1.2.5. Deployment

1.2.6. Dokumentation

1.2.6.1. JavaDoc

1.2.7. schneller Build für schnellen Feedback

1.2.7.1. Nightly Build

1.2.7.2. Feedback on Commit im aktuellen Entwicklungsprozess dank spätem Mergen nicht möglich

1.2.7.2.1. alexa Entwicklungsprozess: Macht es Sinn bereits beim Commit statt beim Build zu mergen?

1.2.7.3. schnell fehlschlagende Builds

1.3. Coding Style

1.4. Versionsverwaltung

1.4.1. Synergy?

1.4.1.1. Automatisches Mergen?

1.4.1.2. Erlaubt einen genaue Steuerung welcher RID auf welchem System landet -> Rollback eines RIDs möglich

1.5. prüft ob sich das System überhaupt bauen lässt

2. Warum?

2.1. Fehlerlokalisierung

2.1.1. Kostensenkung

2.2. Dokumentation

2.3. Codequalität

2.4. Sicherheit/Feedback

2.4.1. Für Entwickler

2.4.1.1. Refactoring

2.4.2. Für Kunden

3. Granularität von Tests

3.1. Unittests

3.1.1. Vorteile

3.1.1.1. geringe Ausführungzeit

3.1.1.2. schnelle Fehlerlokalisierung

3.1.1.3. sofortiger Feedback

3.1.1.4. klein/kurz/schnell geschrieben

3.1.2. Probleme/Ziele

3.1.2.1. Schaffung der "heilen" Welt

3.1.2.1.1. Isolation

3.1.2.1.2. Stubs

3.1.2.1.3. Mockobjekte

3.1.2.1.4. "Gottklassen"

3.1.3. vom Entwickler geschrieben

3.1.4. können während des Builds ausgeführt werden

3.2. Modultests

3.2.1. Testet das Zusammenspiel einzelner Teilfunktionalitäten

3.3. Integrationstests

3.3.1. externe Abhängigkeiten

3.3.1.1. Datenbank

3.3.1.1.1. alexa Testdatenbank

3.3.1.2. hohe Ausführungzeit

3.3.1.3. Isolation schwierig

3.4. Akzeptanztests

3.4.1. Automatisierung schwierig

3.4.1.1. FIT/FITNESSE?

3.4.1.2. GUI Recorder?

3.4.2. von Konzeptern/Kunden entwickelt

3.4.3. fachliche Dokumentation

3.4.4. Implementierungsunabhängig

3.4.4.1. geringer Wartungsaufwand

3.5. grob- vs feingranulare Tests

3.5.1. Aufwand für Fehlerlokalisierung

3.5.2. potentielle Codeabdeckung

3.5.3. Aufwand/Schwierigkeit der Testisolierung

3.5.4. Ausführungszeit

4. Fragen/Probleme

4.1. Sind meine Tests gute Tests?

4.1.1. Codeabdeckung

4.1.2. MutationTesting

4.1.2.1. Jester?

4.2. Welche Funktionalität muss getestet werden?

4.3. wie soll mit vorhandenem Code ohne Tests umgegangen werden?

4.4. Erhöhter Zeitaufwand bei der Entwicklung

5. Testarten

5.1. Blackbox

5.2. Whitebox

6. alexa

6.1. Client Tests

6.1.1. Mock Server

6.2. Server Tests

6.2.1. Cactus

6.2.2. Mock Client

6.3. Testdatenbank

6.3.1. DB Flashback

6.3.2. Steuerung der Systemzeit (SYSDATE)

6.3.3. Kontrolle der Serveruhr

6.3.4. Erlaubt Mehrfachausführung von Integration- und Akzeptanztests

6.3.5. Poteniell größter Mehrwert

6.3.6. In Memory DB

6.3.7. laufen auf einer VM-Ware erschlägt die Zeit- und Flashbackprobleme (VM-Ware Snapshot)

6.3.7.1. Um eine Isolation der einzelnen Tests zu erreichen müsste nach jedem Test ein Flashback erfolgen - evtl. macht es aber Sinn einen Flashback erst dann auszuführen, wenn ein Test fehlschlägt und diesen einen Test nach dem Flashback erneut auszuführen.

6.3.7.2. Man könnte auf jedem Entwicklerrechner eine lokale VM-Ware laufen lassen.

7. Testabdeckung

7.1. Functioncoverage

7.2. Statementcoverage

7.3. Branchcoverage

7.4. Pathcoverage