@ -668,6 +668,80 @@ Aus dem Seminarischen Unterricht und dem Praxisteil kann ich das Wissen Testen d
Tests dienen unter Anderem der Steigerung des Vertrauens in die Software. Wenn ein bestimmter Test mit bestimmten Eingabedaten bestanden wird, kann man als Programmierer darauf vertrauen, dass dieses bestimmte Szenario auch beim Kunden funktionieren wird. Und je mehr Tests, desto mehr Szenarien existieren, für die man garantieren kann, dass die Software funktioniert.
Tests dienen unter Anderem der Steigerung des Vertrauens in die Software. Wenn ein bestimmter Test mit bestimmten Eingabedaten bestanden wird, kann man als Programmierer darauf vertrauen, dass dieses bestimmte Szenario auch beim Kunden funktionieren wird. Und je mehr Tests, desto mehr Szenarien existieren, für die man garantieren kann, dass die Software funktioniert.
### Kritik
Keine
---
## SU 08 (17.12.2023) - Testautomatisierung
### Lernziel
Warum nicht manuell testen?
- Diverse Gründe, hauptsächlich menschliche Fehler wie das versehentliche doppelte Testen von bestimmten Teilen
Die einzigen Gründe gegen automatisiertes Testen:
- UI-Design
- Code ist von jemand anderem
- Kein Wissen über automatisierte Tests
Welche Tests sollte man automatisieren?
- Tests die häufig wiederholt werden (müssen)
- Tests die hohe Kritikalität haben → Funktionalität der Software
- Stabile Tests → Sollten sich mit Weiterentwicklung der Software nicht groß ändern müssen
Application und Module Tests
- Testen die Zusammenarbeit der einzelnen Module der Software
- Können über das Anwendungsinterface oder Frameworks durchgeführt werden
- Können erst später im Entwicklungsprozess ausgeführt werden
Unit Tests
- Können sehr früh im Entwicklungsprozess ausgeführt werden
- Stabil gegen Änderungen (anderer Units)
- Überprüfen nur Funktionalität und das Verhalten des Codes, nicht ob ein Logikfehler im Programm vorliegt
- Ein Test überprüft nur eine Erwartung
Bedingungen für Tests:\
F → fast\
I → independent\
R → repeatable\
S → selfevaluating\
T → timely\
\
R → readable\
T → trustworthy\
F → fast\
M → maintainable
Bessere Unit-Tests sind möglich, wenn nach den bekannten Richtlinien programmiert wurde, z.B. SOLID und STUPID
Testdoubles
- Units von denen die zu testende Unit abhängt werden durch "Fake-Units" ersetzt
- Verschiedene Verhalten, z.B. Stub, Fake und Mock für verschiedene Anwendungsfälle
Ersetzen von Abhängigkeiten
- Geschäftslogik und Funktionalität der Unit werden getrennt getestet
- Man sollte Seams einbauen, um das Einspeisen von Abhängigkeiten zu ermöglichen, z.B. Setter
Praxisübung:
- Durchführen von Unit-Tests
- Testname muss mit "test" anfangen
- Prozedurname_Vorbedingung_ErwartetesErgebnis
- arrange, act, assert oder given, when, then
### Erkenntnis
Für das Gruppenprojekt kann ich das Wissen über automatisiertes Testen mitnehmen.
### Wiederholung
Unit-Tests sollten möglichst schnell sein. Ein schneller Test kann nach jedem Speichern der Software ausgeführt werden, ohne den Developer zu nerven. Ein Richtwert ist etwa eine halbe Sekunde.