6 - Testen IV: Agile Testmethoden

đź’ˇ
Hier wurden zur Vervollständigung auch Inhalte aus vorhergehenden Vorlesungen (CI, CD Block 1) übernommen

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

Taskboard

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

  1. Card

    Das physische Medium, dass die Userstory beschreibt.

    genaue Anforderung, Drinklichkeit, erwartete Test und Entwicklungsdauer, Abnahmekriterien

  1. Conversation

    Diskussion die erklärt wie Software genutzt werden soll

  1. Confirmation

    Abnahmekriterien die in Diskussion festgelegt werden Bestätigung des Abschlusses der Userstory.


  • Beispiel

    Confirmation

    1. 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.
    1. 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

Taskboard verglichen zu Scrum

———————

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

Testautomatisierungspyramide

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

Agile Testmethoden

Test driven development TDD / testgetriebene Entwicklung

eher Unit-Tests, automatisiert in CI

  1. Think

    – Auswahl der Anforderungen die implementiert werden sollen – Testfall-Spezifikation

  1. Red

    Implementierung und Ausführung der Testfälle

    – Alle Tests müssen fehlschlagen

  1. 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

  1. 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
    1. Conditions of Satisfaction

      Welche Bedingungen, Anforderungen gibt es? “Passwörter dürfen nicht knackbar sein”

    1. 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

    1. Examples

      Erstellung von Testdaten: “abc123”, “abcdefghi”, “1aaaaaaaaa”, “ajx972dab”

    1. 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"

———————

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