6 - Testen IV: Agile Testmethoden
Agile Softwareentwicklung (allgemein)
Whole-Team approach
Tester werden wie Entwickler behandelt
Agile Manifesto 2001 (zusammengefasst)
- Individuen und Interaktionen > Prozesse und Werkzeuge
- Funktionierende Software > Dokumentation
- Zusammenarbeit mit Kunden > Vertragsverhandlungen
- Reagieren auf Veränderungen > Befolgen von Plänen
AusfĂĽhrliches Manifesto
- Höchste Priorität: Kunden früh und kontinuierlich gute Software ausliefern und zufriedenzustellen.
-
Anforderungsänderungen auch in später Entwicklung in Ordnung.
Veränderungen = Wettbewerbsvorteil des Kunden.
- Funktionierende Software regelmäßig innerhalb wenigen Wochen / Monate liefern.
- Fachexperten und Entwickler müssen während des Projektes täglich zusammenarbeiten.
-
Entwicklern wird benötigte Unterstützung und Umfeld gegeben und darauf vertraut, dass sie die Aufgabe erledigen.
Die besten Architekturen, Anforderungen und EntwĂĽrfe entstehen durch selbstorganisierte Teams.
- Informationen an und innerhalb eines Entwicklungsteams von Angesicht zu Angesicht.
- Funktionierende Software ist das wichtigste FortschrittsmaĂź.
- Nachhaltige Entwicklung fördern - gleichmäßiges Tempo dauerhaft halten können.
- Technische Exzellenz und gutes Design fördert Agilität.
- Einfachheit: Menge nicht getaner Arbeit nicht maximieren.
- In regelmäßigen Abständen reflektiert das Team, wie es effektiver werden kann und passt sein Verhalten entsprechend an.
Scrum
Sprint kurze, gleich lange Iterationen des Projekts - 2 bis 4 Wochen
Inkrement Jeder Sprint soll auslieferbares Produkt erzeugen, dass pro Sprint wächst
= Produkterweiterung
Product Backlog priorisierte Liste von Feature die sich ändern kann (geführt von Product Owner)
Die Ă„nderung nennt man Backlog Refinement.
Sprint Backlog Dinge aus Product Backlog für den aktuellen Sprint ausgewählt wurden
Definition of Done Kriterien anhand denen entschieden wird, ob Inkrement abgeschlossen
Timeboxing Nur so viel in Sprint-Backlog aufnehmen wie realistisch umsetzbar
Transparenz Sprint Status im Daily Scrum / Stand-up Meeting aktualisieren
Rollen im Scrum Team
Scrum Master
Verantwortlich für Umsetzung und Verfolgung, Auflösung von Fragen, Hindernissen (Impediments)
Keine Teamleitung sondern Coach
Product Owner
Person verantwortlich fĂĽr Backlog, Vertritt Kunden fĂĽr Team
verantwortlich fĂĽr Produkteigenschaften
Entwicklungsteam
Entwicklung und Testen des Produkts
Selbstorganisiert: Keine Teamleitung, Entscheidungen gemeinsam getroffen, funktionsĂĽbergreifende Zusammenarbeit
Scrum Prozess
Iteration Zero
- Task Boards aufstellen, Product Backlogs vervollständigen → Projektumfangs einschätzen
- Initiale Systemarchitektur, erste Prototypen, notwendige Werkzeuge (fĂĽr Testmanagement, Fehlermanagement, Testautomatisierung, continuous Integration)
-
Initiale Teststrategie fĂĽr alle Teststufen.
Bestimmung von: Testumfang, technische Risiken, Testarten und ĂĽberdeckungsziele
- Initiale Qualitätsrisikoanalyse
- Definition von Metriken für: Testfortschritt, Produktqualität
- Definition of Done
- Definition des Zeitpunktes andem nicht mehr getestet werden soll, bevor System an Kunden geliefert wird
Estimation / Aufwandsabschätzung
Aufwand = Komplexität, Schwierigkeitsgrad (inkl Testen, da Whole-team approach)
In Story-Points (1, 2, 3, 5, 7, 13, ...) oder T-Shirt größen (S, M, L, XL)
Planning Poker
Iterationsplanung
Meeting mit kompletten Team (auch Tester)
Mehrwert von Tester in Iterationsplanung
- Risikoanalyse, Testbarkeit, Abnahmetests fĂĽr US
- Zerlegung in Testaufgaben mit Testaufwand
- Hilfe bei Testautomatisierung
Priorisierung von offenen US im Product Backlog
Aufwandsabschätzung (falls nicht bereits erfolgt)
Diskussion vom Scope des Sprints und Team-Commitment
Sprint Review
Formale Abhname der US: Demo gegenĂĽber von Stakeholder und Owner
Unvollständige US landen in den nächsten Sprint
Retrospective
Team-Sitzung am Ende jeder Iteration: Was erfolgreich war, was verbessert werden könnte - Prozess, Beteiligte und deren Organisation und Beziehungen, Werkzeuge
User Stories
Userstories
Anforderungen aus der Sicht eines Fachbereichsvertreter (Funktionale und Nicht-Funktionale Eigenschaften) und Abnahmekriterien
Befinden sich im Product-Backlog
Spezifikation
Konstrukt: As a [user role] , I want to [goal] , so that I can [reason] .
Story Card
-
Card
Das physische Medium, dass die Userstory beschreibt.
genaue Anforderung, Drinklichkeit, erwartete Test und Entwicklungsdauer, Abnahmekriterien
-
Conversation
Diskussion die erklärt wie Software genutzt werden soll
-
Confirmation
Abnahmekriterien die in Diskussion festgelegt werden Bestätigung des Abschlusses der Userstory.
Beispiel
Confirmation
- Success-valid user logged in and referred to home page. a. “Remember me” ticked - store cookie/ automatic login next timne. b. “Remember me” not ticked -force login next time.
- Failure- display message: a) "Email address in wrong format" b) "Unrecognised user name, please try again" c) Incorrect password, please try again" d) "Service unavailable, please try again" e) Account has expired- refer to account renewal sales page.
Kriterien fĂĽr Anforderungsreview
basierend auf Definition of Done
– Vollständigkeit – Konsistenz – Unmissverständlichkeit – Realisierbarkeit – Testbarkeit – Tracability – Spezifisch – Messbar – Durchführbarkeit innerhalb eines Sprints – Unabhängigkeit
Kanban
Ziel: Soll wie Arbeitsfluss in Wertschöpfungskette sein und optimiert werden.
Kanban Board Visualisierung von Wertschöpfungskette
WIP-Limit Limitierte Anzahl der gleichzeitig erledigten Aufgaben (Work in Progress)
Lead Time Optimierung durch Senkung der durchschnittlichen Bearbeitungszeit
———————
Tester in Scrum
Keine Tester im Scrum Prozess
Testen ist Teil der Entwicklung (Unit Tests, TDD)
Akzetanztests durch Owner, Kunde nach jedem Sprint
Vorteil von eigenen Testern
Fokus auf Kundensicht statt technische implementierung
Fokus auf Fehler anstatt von Verfikation der Vollständigkeit
Aufgaben eines Testers
– Statisches Testen (Anforderungen, Dokumentation) – Dynamisches Testen (Ausführung von Akzeptanztests) – Erstellung von Akzeptanztests – Verwaltung von Testfällen im Source Code Manager SCM – Unterstützung bei Unit Tests und TTD – Test Ansatz, Planung – Regressionstests (manuell & automatisiert) – Risikoanalyse, Risikoabschätzung – Schätzung, Tracability von Tests der User Stories – Demonstration während des Sprint Reviews – Erstellung und Wartung von automatisierten Tests – Unterstützung bei Akzeptanztests
Spezialisierte Test-Rollen
Entweder auĂźerhalb des Teams und nur bei kritischen Punkten aufgerufen oder in Team vollzeit Integriert:
– Security – Performance und Stresstests – Usability – Portability – Wartbarkeit
Test-Manager Aufgaben
– Mentoring – Personalmanagement – Aufteilung der Testressourcen über Teams – Wissenstransfer – Training und Entwicklungsplanung – Test Strategie / Ansatz – Test Planung – Identifikation, Analyse und Verhinderung von Risiken – Bindeglied zwischen Business und Stakeholdern – ...
Agile Testmethoden
Continous Integration CI
Ziel von Testautomatisierung
– repetitive manuelle Tätigkeiten reduzieren – Die Effizienz des Testens zu steigern: Hohe Anzahl an Tests in angemessener Zeit ausführen – Tests durchführen, die man nicht manuell durchführen kann (z.B. Last-Tests) – Automatisch Reports der Testergebnisse generieren
Continous Integration CI
Nach jeder Iteration muss funktionierende Software vorliegen.
Kontinuierlich (min 1x am Tag oder bei Ă„nderungen) automatisiert in CI-Pipeline durchgefĂĽhrt:
Komponenten miteinander zusammenfĂĽhren (Integration)
Konfigurationsmanagement
Kompilierung
Build
Verteilung in Production Environment
AusfĂĽhrung in Testumgebung (Berechnung von Metriken zB Test converage)
Aktivitäten:
Statische Codeanalyse
Kompilieren und Linken, executable herstellen
Unittests, Code Coverage
Deployment (Bereitstellung), Installieren der Software in einer Testumgebung
Integrationstests, Systemtests in Testumgebung
Dashboard
Code-Reviews, Pull Requests
Workflows / Pipeline in Versionierungssystemen (SCM): Verwendung von Branching-Modelle fĂĽr verpflichtende Code Reviews
Pull-Requests, Merge nach Review
Änderungen von stabiler Codelinie ist ohne Review / QA Überprüfung (oder CI) nicht möglich
Siehe: https://help.github.com/articles/about-pull-request-reviews/
Continous Deployment CD
Continuous Delivery / Deployment
Auslieferung / Deployment / Release erfolgt automatisiert nach Qualitätsüberprüfung
- Continuous Delivery: Automatisches deployment von Artefakten
-
Continuous Deployment: Automatische Installation in Produktion
zB: Continuous Deployment der Netflix API
Siehe: https://medium.com/netflix-techblog/preparing-the-netflix-api-for-deployment-786d8f58090d
Agile Testmethoden
Test driven development TDD / testgetriebene Entwicklung
eher Unit-Tests, automatisiert in CI
- Think
– Auswahl der Anforderungen die implementiert werden sollen – Testfall-Spezifikation
- Red
Implementierung und Ausführung der Testfälle
– Alle Tests müssen fehlschlagen
- Green
Implementierung der Komponenten und Klassen und Ausführung der Testfälle
– erfolgreich → weiter bei Schritt 4, Refactor – schlägt fehlt → weiter bei Schritt 3, Green
- Refactor
Optimierung der Implementierung ohne Änderung der Funktionalität, Ausführung der Testfälle.
– Testfälle dürfen nicht fehlschlagen. – Auswahl der nächsten Anforderung (weiter zu Schritt 1)
Abnahmetestgetriebene Entwicklung
US enthält Abnahmekriterien, Test
Stakeholder können Funktionalität durch Tests nachvollziehen (Abnahmekriterien).
Wiederverwendbare Tests fĂĽr Regressionserstellung.
Behaviour Driven Development BDD / Verhaltensgetriebene Entwicklung
Entwickler testet erwartetes Verhalten
Stakeholder können Funktionalität durch Tests nachvollziehen (Abnahmekriterien).
In manchen Frameworks Gherkin-Format (deklarativ) → automatische Testerstellung:
Gegeben ein Einstiegskontext, Wenn ein Ereignis auftritt, Dann werden bestimmte Wirkungen sichergestellt
Black box Test design
In agilen Projekten Tests gleichzeitig mit Komponenten entwickelt (nach US, Abnahmekriterien)
Blackbox Testentwurfsverfahren: Äquivalenzklassenbildung, Grenzwertanalyse (um Testwerte auszuwählen), Entscheidungstabellen, zustandsbasierte Tests.
Exploratives Testen
Wichtig wegen begrenzter Zeit fĂĽr Testanalyse und Detailgenauigkeit der US.
zusätzlich zu anderen Testentwurfsverfahren
basiert auf Intuition, Erfahrung des Testers
zB Erfahrung aus anderen Projekten, Stellen die unter Zeitdruck entstanden sind etc.
muss dokumentiert werden
Vorgehen:
– Erfahrungsbasiertes Verfahren – Riskobasiertes Testen – Anforderungsbasiertes Testen – Modellbasiertes Testen – Regessionsvermeidendes Testen
Testsitzungen beinhalten:
– Überblickssitzung um zu lernen, wie es funktioniert – Analysesitzung Bewertung von Funktionalität, Eigenschaften – Genaue Überdeckung Ausnahmefälle, Szenarien, Interaktionen
Agile Testpraktiken
Pairing
2 Teammitglieder (beliebig: Entwickler, Tester, Owner) setzten sich zusammen um Test oder andere Sprintaufgabe zu bearbeiten.
Inkrementelles Test Design
Testfälle, Chartas aus US aufgebaut.
Mind Mapping
zum Finden und Beschreiben von Teststrategien.
———————
Akzeptanzkriterien
Definition of Done
Kriterien anhand denen entschieden wird, ob Inkrement abgeschlossen
Abnahmekriterien / Definition of Done
Abnahmekriterien mit Abnahmetests getestet:
– Funktionales Verhalten – Qualitätsmerkmale – Szenarios (Use Cases) – Geschäftsprozessregeln – Externe Schnittstellen – Einschränkungen – Datendefinitionen
Userstories
– Ausgewählte US für Iteration sind reviewed, vollständig, verständlich und haben detaillierte, testbare Abnahmekriterien. – Abnahmetests als Testbeschreibung, Testscript bereitgestellt. – Aufgaben für die Implementierung, Testen identifiziert und Aufwand eingeschätzt.
Iteration
– Alle Features der Iteration fertig entwickelt, nach Feature-Level Kriterien getestet. – Nicht-kritischen Fehler, die nicht behoben wurden im Product Backlog und priorisiert. – Integration aller Feature erfolgt, getestet. – Dokumentation nach Review abgenommen.
Testen von Akzeptanzkriterien
Beispiel: Registrieren Funktion
-
Conditions of Satisfaction
Welche Bedingungen, Anforderungen gibt es? “Passwörter dürfen nicht knackbar sein”
-
Acceptance Criteria
Wann gilt ein Passwort als “nicht knackbar”?
– Mind. 8 Zeichen, aber nicht mehr als 12 – Darf nur alphanumerische Zeichen beinhalten – Muss mind. eine Zahl beinhalten – Muss mind. einen Buchstaben beinhalten
-
Examples
Erstellung von Testdaten: “abc123”, “abcdefghi”, “1aaaaaaaaa”, “ajx972dab”
-
Executable Examples
Durch BDD:
Given the "Unregistered User" user has navigated to the "register" pageWhen entering "newuser" in the "Username" field And entering "abc123" in the "Password" field And entering "abc1 23" in the "Confirm Password" field And pressing the "Register" buttonThen the text "Thank you for Registering" should appear on page And the URL should end with "use/accountPage"
-
Conditions of Satisfaction
———————
Werkzeuge
Werzeuge
Organisation vom Team
Aufgabenmanagement- und Nachverfolgungswerkzeuge
Speichern von US (Entwicklungs- und Testaufgaben), Aufwandsschätzungen, Aufgabenstatus
Kommunikation
Kommunikations- und Informationsweitergabe-Werkzeuge (synchron und asynchron)
Build und Distribution
Konfigurationsmanagement und Version Control System VCS
Speichern von Quellcode, automatisierten Testskripten, manuellen Tests, Arbeitsergebnisse mit Versionsverwaltung
Testentwurf, Implementierung und DurchfĂĽhrung
– Testentwurf mit zB. Mind Maps – Testfallmanagement-Werkzeuge – Testdatenvorbereitung, Daten-Generation um Datenbank zu füllen – Testdatenladewerkzeuge: damit man nicht manuell Daten eingeben muss – Automatisierte Testdurchführung