Welche Nachteile hat manuelles Testen und wie löst man diese?
Es ist oft unstrukturiert, oberflächlich und lückenhaft
– da lediglich „ausprobieren“
Lösung: automatisierte, feingranulare Funktionstests (Unit Tests)
Was ist das TTD (Test Driven Development)?
TDD ist eine Entwicklungsmethode, bei der zuerst die Tests und erst danach der eigentliche Code geschrieben werden.
Was ist der typische Ablauf eines TTD?
Schreiben eines fehlschlagenden Tests für eine neue Anforderung
Code schreiben, sodass Test erfolgreich durchläuf
Refactoring
Welche zwei goldenen Regeln gibt es bei TDD?
„You should write new business code only when an automated test
has failed“
“You should eliminate any duplication that you find“
Was ist die Definition von Softwaretests nach IEEE 610.12, 1990?
Software testing is a formal process carried out by a specialized testing team in which a software unit, several integrated software units or an entire software package are examined by running the programs on a computer.
All the associated tests are performed according to approved test procedures on approved test cases.
Was sind die Grundsätze des Softwaretests nach dem International Software Testing Qualifications Board (ISTQB)?
Testen zeigt die Anwesenheit von Fehlern
Vollständiges Testen ist nicht möglich
Mit dem Testen frühzeitig beginnen
Häufung von Fehlern
Tests müssen laufend überarbeitet und erweitert werden
Testen ist abhängig vom Umfeld
Trugschluss: Keine Fehler bedeutet ein brauchbares System
Was sind die Ziele des Softwaretestens?
Verifikation: Prüfen des Systems gegen Spezifikation
(„Erstellen wir das Produkt richtig“)
Validierung: Prüfen des Systems gegen (Kunden-)Anforderungen
(„Erstellen wir das richtige Produkt“)
Was ist die Methodik des Softwaretestens?
Testfälle identifizieren, mit denen die höchste Wahrscheinlichkeit
gegeben ist, festzustellen, ob das Softwaresystem korrekt funktioniert
-> hohe funktionale/ nicht funktionale Abdeckung
Welche Detailgrade gibt es beim testen?
Klasse/Komponente: Unit-Test, Komponententest
Modul (mehrere Komponenten): Integrationstest
Komplette Applikation: Systemtest
Was wird bei Komponententests geprüft?
Robustheit
Struktur (z.B. Zweigüberdeckung)
Umgang mit Ressourcen
Wie sieht das Test-Setup aus beim Komponenten-Test?
Isolation der Komponenten vom Rest des Systems
Was wird beim Integrationstest geprüft?
Die Schnittstellen und Interaktion zwischen Komponenten
Welche Strategien gibt es beim Integrationstest?
Big-Bang-Integration
Horizontale Integration (Schicht für Schicht)
Top-Down-Integration
Bottom-Up-Integration
Vertikale Integration (Integrationsschritt pro Funktionalität/Use-Case)
Wie funktioniert der Big-Bang-Integration Test?
Nicht-iterative Integrationsform
Gleichzeitige Kombination aller Komponenten zu einem
Gesamtsystem
Welche Vorteile und Nachteile hat der Big-Bang-Integration Test?
Vorteile
Keine Mocks
Keine Testtreiber
Nachteile
Erst spät im Projekt möglich
Fehleridentifizierung und –lokalisierung schwierig
Was sind die Vor- und Nachteile des horizontalen Top-Down Integrationstests?
Vorteil
Externe Schnittstellen früh verfügbar
Nachteil
Hoher Simulationsaufwand (Mocks)
Was sind die Vor- und Nachteile des horizontalen Bottom-Up Integrationstests?
keine Mocks notwendig (dafür mehr Testtreiber, geringerer Aufwand)
Externe Schnittstellen spät verfügbar
Wie erfolgt die Vertikale Integration von Komponenten?
anhand von Szenarien/Use-Cases
mit den Komponenten, die für die zu testende Funktionalität notwendig sind
über die Systemschichten hinweg
Welche Vor- und Nachteile haben Vertikale Integrationstests?
früh verfügbar/abnehmbar
lauffähiges, testbares Teilsystem (nach jeder Iteration von zB Scrum)
geeignet für iterative Entwicklungsprozesse
Alle Schichten müssen Funktionalität unterstützen
Synchronisierung in der Entwicklung notwendig
Was testen die Systemtests?
das spezifizierte Verhalten des Gesamtsystems
Testumgebung äquivalent zu Produktivumgebung
Abdeckung von funktionalen und nichtfunktionalen Anforderungen
Was testen die Akzeptanztests?
meist von Auftraggeber durchgeführt
ob Auftragnehmer die vereinbarten Leistungen umgesetzt hat
Welche Arten von Akzeptanztests gibt es?
Anwender-AT: Prüft Benutzbarkeit für Anwender
Betrieblicher AT: Backup-Mögl., Wiederherstellbarkeit, ...
Regulatorischer/Vertraglicher AT: Gesetzes-, Standardkonformität
Feldtest
Was ist das Ziel von Funktionalen Softwaretests?
Die funktionale Verifikation des Systems
Welche Methodik haben Funktionale Softwaretests?
hohe Abdeckung (Coverage) des Systems
die mit hoher Wahrscheinlichkeit Fehler findet
mittels ausgewählter Testfälle
Welche zwei Ansätze gibt es bei Funktionalen Tests?
Strukturelle Abdeckung (White-Box-Tests)
Testfälle aus innerer Struktur des Systems ableiten
Analyse des Kontrollflussgraphs (Quellcode)
Funktionale Abdeckung (Black-Box-Tests)
Testfälle aus Spezifikation ableiten (Schnittstellen)
Welche Arten von Abdeckungen gibt es beim White-Box-Testing?
Welche Arten der Analyze gibt es bei dem Black-Box-Testing?
Äquivalenzklassen Analyse
Einteilung der möglichen Eingabewerte in Äquivalenzklassen mit
gleichem erwartbaren Systemverhalten
Tests durchführen für einen Repräsentanten pro Klasse
Grenztwert Analyse
Spezialfall von Äquivalenzklassenanalyse
Fehler treten häufig an den Grenzen der Äquivalenzklassen auf
Welche Äquivalenzklassen und Testfällte gibt es bei folgendem Beispiel?
“Textfeld für die Eingabe eines Centbetrags kleiner 100 Cent”
Äquivalenzklassen:
Betrag kleiner 0 Cent
Betrag von 0 bis 99 Cent
Betrag größer 99 Cent
Testfälle:
-1
0
1
99
100
Welche Testmethoden gibt es bei der Funktionalen Abdeckung?
Zustandsbasierte Testmethoden
Klassifikationsbaum Methode
Informelle Testmethoden
Was passiert bei den Zustandsbasierten Testmethoden?
Testfälle aus Zustandsautomat (z.B. UML-Diagramm) abgeleitet
Alle Zustände und alle Zustandsübergänge durchlaufen
Alle Auslöser von Zustandsübergängen durchführen
Wie funktioniert die Klassifikationsbaum Methode?
Einteilung der Testfälle in Klassifikationen (test-relevante Aspekte)
Jede Klassifikation in Äquivalenzklassen zerlegen
Testfall ist Kombination aus Klassen, eine Klasse pro Klassifikation
Was sind informelle Testmethoden?
Keine oder nur teilweise systematische Ableitung von Testfällen
Wie würden ein Klassifikationsbaum für 3D Rendering aussehen?
Welche Beispiele gäbe es für Nichtfunktionale Softwaretests?
Benutzbarkeit (Usability)
Leistungsfähigkeit (Performance)
Sicherheit (Security)
Wie unterscheiden sich manuelle Tests von Testautomatisierung?
Initialaufwand von Automatisierung wesentlich höher als bei manuellen Tests
Testdurchführung von Automatisierung deutlich kürzer als bei manuellen Tests
Hoher Wartungsaufwand bei Automatisierung
Welche Arten von Automatisierten GUI-Tests gibt es?
Simulation des Benutzers
Capture/Replay-Verfahren
Was sind die Nachteile von automatisierten GUI-Tests?
Wartung hoch
Verfügbarkeit des Testobjekts
Welche Alternativen gibt es zu Automatisierten GUI-Tests?
Scripting
Hybride Ansätze
Was wird bei Regressionstests geprüft?
Ob die Systemfunktionalität nach Änderungen noch gewährleistet ist
z.B.: Änderungen an Quellcode oder Konfiguration, Tausch einer Komponente, ...
Wie sieht der Software Life Cycle aus?
Wie wird Anwenderakzeptanz , Integration der Systemanwender erreicht?
Anwendergerechte Dokumentation
Benutzerhandbuch
Online-Hilfe
Schulungen
Meist mehrere Benutzergruppen
Rollout
Parallelbetrieb
Testbetrieb mit kleinen Benutzergruppe bereits während Entwicklung
Was sind die Best Practices der Inbetriebnahme?
Zusammenarbeit zwischen Entwicklern und Betrieb
Verantwortlichkeiten festlegen
Frühzeitiges Testrollout
Was sind Anto Patterns der Inbetriebnahme von Software?
Manuelle Installation der Software
Installation erst nach Abschluss der Entwicklung
Manuelle Konfiguration
Änderungen direkt in Betriebsumgebung („Hot Fixes“)
Wie ist der Begriff der Software-Wartung definiert?
Fehlerbehebung
Verbesserung gewisser Eigenschaften der Software (z.B. Performance)
Anpassung an eine geänderte Umgebung
Was sind mögliche Auslöser von Wartungstätigkeiten?
Gefundene Fehler
Performance-Verbesserungen
Updaten von verwendeten Frameworks und Bibliotheken
Behebung von Sicherheitslücken
Optimierung der Konfiguration
Welche Wartungstypen gibt es?
Korrektive Wartung
Ausbessern von aufgetretenem Fehler
Präventive Wartung
Ausbessern von Fehler, bevor dieser auftritt
Adaptive Wartung
Investitionsschutz
Perfektionierende Wartung
Verbesserung des Systems, z.B. Performance, Usability,
Speicherverbrauch, ...
Welche Maßnahmen gibt es während der Wartung?
Reengineering
Refaktorisierung
Eliminieren von Anti Patterns
Was passiert bei Reeingineering und was ist das Ziel dessen?
Eine Neuentwicklung eines (funktionierenden) Systemteils bei
gleichbleibender Funktionalität
Ziel:
Qualitätssteigerung, Vorbereitung für Weiterentwicklung
Was passiert bei Refaktorisierung und was ist das Ziel dessen?
Eine Umstrukturierung bei gleichbleibender Funktionalität
Erhaltung/ Erhöhung der Wartbarkeit
Was passiert beim Eliminieren von Anti Patterns?
Erkennen und Entfernen von schlechten Softwareteilen
Last changeda year ago