SlideShare una empresa de Scribd logo
1 de 34
Agiles Testen
ÜBERBLICK
Agiles Testen Definition
Agiles Testen (z.B. in Scrum, Kanban, XP) ist zu einem unverzichtbaren Bestandteil agiler
Softwareentwicklung geworden.
Testen in agilen Entwicklungsprojekten unterscheidet sich vom klassischen Testen in erster
Linie dadurch, dass Testen eine präventive Maßnahme ist und dass die Tests viel häufiger
ausgeführt werden müssen.
Der Fokus liegt dabei in der Einbindung von Testern unter Beachtung des agilen Manifests
und der Anwendung agiler Prinzipien auf das Testen, wie schnelles Feedback, hoher
Automatisierungsgrad, Auflösung starrer Teststufen, enge Zusammenarbeit in selbst
organisierten Teams und Vermeidung von Overhead.
Agiles Testen im Team
Agiles Testen ist die Integration von Qualität sichernder Maßnahmen in den agilen Entwicklungsprozess
 Testsicht bereits in der Vorbereitung beachten und durchgängig beibehalten
 Verteilt auf alle Rollen (bis hin zu einem 3-Amigo Prozess):
o Entwickler: Testgetrieben vorgehen, Unit Tests, Komponententests, FIT-Automatisierung
o Fachexperte (PO,BA): Abnahme- und Akzeptanztests erstellen und durchführen
o Tester / UI: Persona, Szenarien, Testfälle und Integrationstests erstellen und durchführen, FIT-
Automatisierung, UI-Testautomatisierung der Regressionstests
 Treiber für die interne Prozessverbesserung.
 Agiles Testen basiert auf einem ganzheitlichen Team-Ansatz
Profil des agilen Testers
 Der Tester bringt während des gesamten Projektablaufs die Testsicht in das agile Team ein.
 Der Tester schärft die Anforderungen über Persona und Szenarien bzw. Story Maps. Dabei wird
besonders auf die nicht-funktionalen Anforderungen fokussiert.
 Der Tester unterstützt
o Entwickler methodisch bei den Unit-Tests und bei der fachlichen Architektur durch entsprechenden
fachlichen Strukturen in den Tests
o Fachexperte (PO, BA) bei der fachlichen Priorisierung und Abnahme der Iterationsergebnisse
 Der Tester führt die Integrationstests und die entsprechenden Regressionstests durch und sorgt so
von Anfang an für Produktqualität.
Ganzheitliches Agiles Team
 Entwickler erstellen testgetriebene Software
 Product Owner moderiert, organisiert und definiert
die Prioritäten
 Entwickler, Tester und Fachexperten diskutieren
gemeinsam die Anforderungen.
 Tester führen aussagekräftige, testmethodische
Prüfungen durch.
Ergebnis:
Tests erfolgen auf allen Ebenen früh und oft
Am Beispiel der Scrum Rollen:
Testkategorien
Moderne agile
Entwicklungsteams
führen neben
Unit-Tests auch
Akzeptanztests aus
und ergänzen diese
durch explorative
Tests.
Unit-Tests
 Unit-Test (auch Komponenten- oder Modultest genannt) überprüfen, ob die von den Entwicklern
geschriebenen Komponenten so arbeiten, wie diese es beabsichtigen.
 In der agilen Softwareentwicklung wird im Rahmen der testgetriebenen Entwicklung und des
Refactorings massiver Gebrauch von Komponententests gemacht.
o Zum Zeitpunkt ihrer Erstellung dienen Unit-Tests im Rahmen der testgetriebenen Entwicklung dazu, das Design der
Software zu steuern, als Defekte zu finden.
o Im Rahmen des inkrementellen Entwurfs sind sie unverzichtbar, um auch langfristig änderbaren Code zu behalten.
o Auch wenn ein bestehendes System um neue Features erweitert werden, helfen Unit-Tests: So decken sie
unbeabsichtigte Fernwirkungen der neuen Funktionen auf bereits bestehende Systemteile auf.
o Darüber hinaus helfen sie auch, das System zu dokumentieren, indem sie beabsichtigte Verwendungen und
Reaktionen des Testobjekts deutlich aufzeigen.
Unit-Tests
Was zeichnet einen guten Unit Test aus?
… sind isoliert d.h. unabhängig voneinander, so dass die Reihenfolge ihrer Ausführung das
Testergebnis nicht beeinflusst. Schlägt ein Test fehl, so führt dies nicht dazu, das weitere Tests
fehlschlagen
… sichern jeweils genau eine Eigenschaft ab. Ein Problem äußert sich immer in genau einem
fehlgeschlagenen Test.
… sie sind vollständig automatisiert, damit sie immer wieder ausgeführt werden können
… sind leicht verständlich und kurz.
… weisen eine genauso hohe Codequalität auf, wie der Produktivcode selbst
… testen relevanten Code (und beispielsweise keine Getter/Setter)
… sind um eine Test fixture gruppiert, nicht um eine Klasse
… werden vor dem zu testenden Code geschrieben (testgetriebene Entwicklung)
Testgetriebene Entwicklung (TDD)
 Test First Prinzip
 Erfolgt in Verbindung mit Unit-Tests, Systemtests oder Akzeptanztests
 Zyklischer Ablauf:
• Ein Test wird geschrieben, der zunächst fehlschlägt
• Es wird immer nur genau soviel Produktivcode implementiert bis der Test erfolgreich durchläuft
• Test- und Produktivcode werden „aufgeräumt“
 Einfache Metrik: Tests werden bestanden oder nicht
 Einfache Fehlerlokalisierung
 Ausführbare Spezifikation: Unit-Tests beschreiben gleichzeitig, was das System leisten soll.
Testgetriebene Entwicklung (TDD)
Rot: Entwickler erstellt zuerst den Test
(Greybox-Tests) für das bestimmte
erwünschte Verhalten einer Unit, für
bekannte Fehler oder eine neue
Teilfunktionalität.
Der ausgeführte Test wird zunächst
vom bestehenden Programmcode noch
nicht erfüllt, da es diesen noch gar nicht
gibt.
Grün: Anschließend schreibt/ändert der Entwickler den
Code mit möglichst geringen Aufwand so lange, bis mit den
nächsten Testdurchläufen alle Tests erfolgreich
durchlaufen sind
Blau: Nun erfolgt das Refactoring, d.h. der Code wird
„aufgeräumt“. Überflüssiger Code wird entfernt oder
nach verbindlichen Code-Konventionen ausgerichtet.
Testgetriebene Entwicklung (TDD)
Vorteile
 Wartbare Qualitätssoftware
• Kein ungetester Code
• Saubere/testbare Architektur durch TDD als Designstrategie
• Wenig bis keine Redundanzen durch gnadenloses rechtzeitiges Refaktorisieren
 Effektive und effiziente Erstellung der Software
• Kein unnötiger Code auf Vorrat
• Konzentration auf das Wesentliche
TDD vs. ATDD
Code
Anforderung
Akzeptanztests
Mit Hilfe von Akzeptanztests werden die Systemfunktionalitäten aus Sicht der Benutzer überprüft.
 Agile Teams halten in Form von automatisierten Akzeptanztests ihr Verständnis über die
Anwendungsdomäne fest.
 Das Team erlangt zusammen mit dem Product Owner ein gemeinsames Verständnis über die
Anwendungsdomäne und hälft diese in Form von Akzeptanzkriterien fest.
 Diese werden parallel zur Entwicklung der Funktionalität automatisiert.
 Über lange Sicht entsteht so eine ausführbare Dokumentation des Systems.
Acceptance-Test-Driven Development (ATDD)
 Kommunikationswerkzeug zwischen Anwender bzw. Kunde, Entwickler und Tester.
 ATDD soll sicherstellen, das Anforderungen gut beschrieben sind und sollen für Nicht-
Entwickler lesbar und verständlich sein.
 Häufig werden testgetriebene Tests von den akzeptanzgetriebenen Tests abgeleitet.
1. Wähle eine User Story aus
2. Schreibe den Akzeptanztest
3. Implementiere die User Story
4. Führe Akzeptanztest aus
5. Refactoring
Ablauf:
Behaviour-Driven Development (BDD)
 Behavior-Driven Development versucht die Prinzipien von Domain-Driven Design mit denen von Test-
Driven Development zu vereinen.
Domain-Driven-Design (DDD)
o Konzentration auf Fachlogik anstatt Technik
o Komplexe fachliche Zusammenhänge zerteilen
o vereinfachte Problemlösung
o Entwickler sehen nur Teilbereich
Test-Driven-Development (TDD)
o Konzentration auf das Problem
o Frühe Designentscheidungen
o Abstrakte Serviceschichten
Behaviour-Driven Development (BDD)
 Ergänzt TDD und ATDD durch Synthese und
Verfeinerung, indem eine strukturierte Sprache den
Businessprozess vorgibt
 Es steht die ausdrucksstarke Beschreibung von
Anforderungen und deren Akzeptanzkriterien im
Vordergrund.
 Akzeptanzkriterien sollten automatisiert überprüft
werden können. (Ausführbare Spezifikation)
Beispiele Tools:
Cucumber, RSpec (Ruby), behat (PHP), Jbehave (Java)
Agile
Projektmanagement
(Scrum, Kanban)
Agile Requirement
Analysis
(User Story, Acceptance
Criteria)
Agile Testing
(bug prevention, exploratory
testing, context-driven)
Agile Engineering
(XP, TDD,Pair Programming)
BDD
Behaviour-Driven Development (BDD)
Vorteile
 Einheitliche Sprache für Anforderungen (wird von allen verstanden)
 Klare Fokussierung auf Nutzen sowie Test First ausgehend vom Akzeptanzkriterium
 Erfüllung von Anforderungen wird automatisch auf Basis der Akzeptanzkriterien getestet
 Fortschritt ist für alle einsehbar
Behaviour-Driven Development (BDD)
Prinzipien
 Wende für jede User Story das 5-Why‘s Prinzip an, so dass der Zweck zu einem eindeutigen
Bezug der Geschäftsergebnisse erhält.
 Denke von außen nach innen, d.h. Implementiere zunächst die Verhaltensweisen, die direkt
etwas zu den Geschäftsergebnissen beitragen und minimiere Waste.
 Beschreibe die Verhaltensweise an zentraler Stelle, damit die unterschiedlichen Domänen
Experten, Tester und Entwickler direkt zugänglich ist und verbessere die Kommunikation
 Übernehme diese Techniken den ganzen Weg hinunter bis zu den tiefsten Ebenen der
Abstraktion der Software, wobei ein besonderes Augenmerk auf der Verteilung des Verhaltens
liegen soll.
Behaviour-Driven Development (BDD)
Gherkin
 Domain-Specific Language (DSL), leicht für jeden zu Lesen
 In sogenannten *.feature-Files werden durch verschiedene Szenarios das Feature beschrieben
 Es wird das Format von ATDD verwendet
 Given (setup): A specified state of a system
 When (trigger): An action or event occurs
 Then (verification): The state of the system has changed or an output has been produced
Behaviour-Driven Development (BDD)
Quelle: https://atom.io/packages/language-gherkin
3 Amigo
Ziel ist es, ein gemeinsames Verständnis und gemeinsames Vokabular für ein Feature innerhalb den 3
Rollen (BA, Entwickler und QA) zu erhalten.
 In der 3 Amigo-Sitzung stellt zuerst der Business Analyst (BA) die Anforderungen und Tests
(geschrieben mit Gherkin) für das neues Feature vor.
 Anschließend diskutieren die drei Amigos (BA, Entwickler und QA) zusammen das neue Feature
anhand der Informationen und überprüfen die (ausführbare) Spezifikation.
 Der Tester (QA) und der Entwickler beurteilen abschließend, ob das Feature bereits für die
Entwicklung eingeplant werden kann und identifizieren ggf. die fehlende Anforderungen / Randfälle.
Das 3 Amigo Gedanke kann auch sehr gut in das Backlog Grooming integriert werden.
Exploratives Testen
Exploratives Testen ist das gleichzeitige Lernen, Entwerfen und Durchführen von Test
 Informelle Testtechnik & Simultanes Lernen: Tester kontrolliert das Testdesign während der
Testausführung. Jede neugewonnene Information wird wiederverwendet um einen besseren Test zu
designen.
 Merkmale von Testdesign und Testdurchführung beim explorativen Test:
o Time-Boxing: Test-Sessions mit fixer Dauer
o Charter: Schriftliche Mission für den Tester
o Simultanes Testdesign und Testausführung
o Einsatz von Heuristiken
Exploratives Testen
 Risikoorientiert anstelle spezifikationsorientiert, indem aktiv die Fehlersituationen gesucht werden, die
bisher noch mit keinen Testfall abgedeckt sind, um möglichst das gesamte Spektrum der Software
abzudecken.
 Verwendung von Heuristiken bzw. Touring Modelle, um verschiedene Sichtweise und Strukturen beim
Testen zu erhalten.
 FCC CUTS VIDS Touring Heuristik steht für
o Features,
o Complexity,
o Claims,
o Configuration,
o User,
o Testability,
o Scenario,
o Variability,
o Interoperability,
o Data und
o Structure
Exploratives Testen
Beispiele Touring Modelle
o Back-alley Tour: Alle Features testen, die der Anwender nicht tagtäglich benutzt.
o Landmark Tour: Die einzelnen Feature (Sehenswürdigkeiten) werden in allen möglichen
Kombinationen durchgetestet.
o Money Tour: Alle Features die intensiv beworben werden oder dem Kaufgrund des Kunden
darstellen, werden hier detalliert betrachtet.
o Intellectual Tour/ Saboteur Tour: Hier wird versucht, die Software herauszufordern, um
beispielsweise Grenzen herauszufinden bzw. sie möglichst destruktiv zu testen.
o Guidebook Tour: Anhand der Dokumentation wird überprüft, ob die Software wie beschrieben sich
verhält
Continuous Integration, Delivery & Deployment
Continuous
Integration
• Kontinuierliche
Integration durch
täglichen Check-In
inkl. Build-/Unit
Test
• Schnelles Feedback
zur Qualität
• Deployment auf
Test-Umgebung
Continuous
Delivery
• Automatisierte
Test
(Regressionstests)
• Deployment auf
Knopfdruck für eine
beliebige Version
auf internen
Umgebungen
Continuous
Deployment
• Jeder erfolgreiche
Build wird
automatisch auf die
Produktiv-
Umgebung verteilt
Integration in Scrum
Integration in Scrum
10 Allgemeine Prinzipien und Good Practise
 Agiles Testen am Beispiel von Scrum verfeinert die Konzepte des agilen Vorgehens
 Agiles Vorgehen in der Entwicklung erfordert systematisches Vorgehen beim Testen
 Abschließender systemübergreifender Releasetest als dedizierter Sprint
 Kontinuierliches Testen und Feedback parallel zur Entwicklung
 Früher Start der Testaktivitäten und Einsatz von Test-First-Techniken (z. B. TDD)
 User Stories bilden die Basis für die Positiv-Testfälle,
Testfälle müssen aber auch unzulässige Szenarien abbilden
 Nicht-funktionale Anforderungen ins Produkt-Backlog-Änderungen anpassbar sein
 Automatisierung und Wiederholung der Testfälle wichtig
 Verwaltung der manuellen und automatisierten Testfälle in einem Artefakt
Integration in Scrum
Testaktivitäten
 Testplanung während Sprint-Planung und Daily Scrum
 Testentwurf, -implementierung und -ausführung während des Sprints
 Testauswertung während des Sprint-Reviews
 Testabschluss während der Sprint-Retrospective
Rollen
 Scrum Master übernimmt die Rolle des Testmanagers
 Jeder im Team ist für das Testen verantwortlich
 Product Owner wirkt bei der Testplanung und Testauswertung mit
Integration in Scrum
Integration in Scrum
Testbasis: Sprint-Tasks
Testobjekte: Klassen, Methoden, Daily
Result
Teststufen: Build-Tests, Unit-Tests
Testarten: Funktionale Tests
Testwerkzeuge: Unit-Testwerkzeuge
Integration in Scrum
Testbasis: Sprint-Backlog
Testobjekte: Inkrement
Teststufen: Systemtests,
Entwicklerintegrationstest
Testarten: Funktionale Tests, Nicht-
funktionale Tests, Regressionstests
Testwerkzeuge: Unit-Testwerkzeuge, GUI-
Testwerkzeige, Last- und Performanz-
Testwerkzeuge
Integration in Scrum
Testbasis: Produkt-Backlog
Testobjekte: Produkt
Teststufen: Systemintegrationstest,
Akzeptanztest, Inbetriebnahme-Tests
Testarten: Funktionale Tests, Nicht-
funktionale Tests, End-to-End-Tests
Testwerkzeuge: GUI-Testwerkzeige, Last-
und Performanz-Testwerkzeuge
Genereller Umgang mit Bugs
Wie soll das Scrum-Team damit umgehen, wenn sich über die Zeit immer mehr Bugs ansammeln?
 Generelle Bug Regeln:
• Bugvermeidung
• Produktionsgefährdende Bugs: sofort
• No-Brainer: im aktuellen Sprint
• alle anderen: spätestens im nächsten Sprint
 Bug Sprint: Einmalig in einer fokussierten Aktion alle Bugs erledigen.
 Bug Stand-Up: Jeden Tag alle neuen Bugs verteilen.
 Bug Elimination Day: Dezidierter Tag im Sprint. Alle Bugs, die angefangen werden, müssen am gleichen
Tag beendet werden.
Quellen
 https://www.it-agile.de/wissen/agile-teams/agiles-testen/
 http://www.anecon.com/blog/bdd-im-agilen-umfeld-erfahrungsbericht/
 https://blog.seibert-media.net/blog/2011/05/18/akzeptanztests-scrum-agile-softwareentwicklung/
 https://www.informatik-aktuell.de/entwicklung/methoden/einfuehrung-in-acceptance-test-driven-
development-atdd.html
 https://www.it-agile.de/wissen/agiles-engineering/exploratives-testen-mit-struktur/
 https://www.sigs-datacom.de/uploads/tx_dmjournals/geisen_gueldali_OS_Agility_2012_8e65.pdf
 http://www.velocitypartners.net/blog/2014/02/11/the-3-amigos-in-agile-teams/

Más contenido relacionado

La actualidad más candente

探索的テスト入門
探索的テスト入門探索的テスト入門
探索的テスト入門
H Iseri
 
소프트웨어 테스팅
소프트웨어 테스팅소프트웨어 테스팅
소프트웨어 테스팅
영기 김
 
Intro sur les tests unitaires
Intro sur les tests unitairesIntro sur les tests unitaires
Intro sur les tests unitaires
PHPPRO
 

La actualidad más candente (20)

探索的テストはじめの一歩 #wacate
探索的テストはじめの一歩 #wacate探索的テストはじめの一歩 #wacate
探索的テストはじめの一歩 #wacate
 
Testing strategy for agile projects updated
Testing strategy for agile projects updatedTesting strategy for agile projects updated
Testing strategy for agile projects updated
 
Scrum Testing Methodology
Scrum Testing MethodologyScrum Testing Methodology
Scrum Testing Methodology
 
探索的テスト入門
探索的テスト入門探索的テスト入門
探索的テスト入門
 
Agile testing
Agile testingAgile testing
Agile testing
 
소프트웨어 테스팅
소프트웨어 테스팅소프트웨어 테스팅
소프트웨어 테스팅
 
Selenium with Cucumber
Selenium  with Cucumber Selenium  with Cucumber
Selenium with Cucumber
 
Guide to Agile testing
Guide to Agile testingGuide to Agile testing
Guide to Agile testing
 
Intro sur les tests unitaires
Intro sur les tests unitairesIntro sur les tests unitaires
Intro sur les tests unitaires
 
Cucumber BDD
Cucumber BDDCucumber BDD
Cucumber BDD
 
QA Best Practices in Agile World_new
QA Best Practices in Agile World_newQA Best Practices in Agile World_new
QA Best Practices in Agile World_new
 
Test unitaire
Test unitaireTest unitaire
Test unitaire
 
Présentation Agile Testing
Présentation Agile TestingPrésentation Agile Testing
Présentation Agile Testing
 
[Webinar] Qt Test-Driven Development Using Google Test and Google Mock
[Webinar] Qt Test-Driven Development Using Google Test and Google Mock[Webinar] Qt Test-Driven Development Using Google Test and Google Mock
[Webinar] Qt Test-Driven Development Using Google Test and Google Mock
 
API Testing following the Test Pyramid
API Testing following the Test PyramidAPI Testing following the Test Pyramid
API Testing following the Test Pyramid
 
Test Automation Frameworks: Assumptions, Concepts & Tools
Test Automation Frameworks: Assumptions, Concepts & ToolsTest Automation Frameworks: Assumptions, Concepts & Tools
Test Automation Frameworks: Assumptions, Concepts & Tools
 
20211023 良いテストを作るためのテスト設計チュートリアルを考える
20211023 良いテストを作るためのテスト設計チュートリアルを考える20211023 良いテストを作るためのテスト設計チュートリアルを考える
20211023 良いテストを作るためのテスト設計チュートリアルを考える
 
BDD WITH CUCUMBER AND JAVA
BDD WITH CUCUMBER AND JAVABDD WITH CUCUMBER AND JAVA
BDD WITH CUCUMBER AND JAVA
 
Test Automation Framework using Cucumber BDD overview (part 1)
Test Automation Framework using Cucumber BDD overview (part 1)Test Automation Framework using Cucumber BDD overview (part 1)
Test Automation Framework using Cucumber BDD overview (part 1)
 
Introduction to Unit Testing, BDD and Mocking using TestBox & MockBox at Adob...
Introduction to Unit Testing, BDD and Mocking using TestBox & MockBox at Adob...Introduction to Unit Testing, BDD and Mocking using TestBox & MockBox at Adob...
Introduction to Unit Testing, BDD and Mocking using TestBox & MockBox at Adob...
 

Similar a Agiles Testen - Überblick

Scrum Workshop
Scrum WorkshopScrum Workshop
Scrum Workshop
mrdoubleb
 
Agile Softwareentwicklung
Agile SoftwareentwicklungAgile Softwareentwicklung
Agile Softwareentwicklung
shabazza
 
Testmanagement mit Visual Studio 2013
Testmanagement mit Visual Studio 2013Testmanagement mit Visual Studio 2013
Testmanagement mit Visual Studio 2013
Nico Orschel
 
Einführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software EntwicklungEinführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software Entwicklung
Christian Baranowski
 
Lean development 04
Lean development 04Lean development 04
Lean development 04
SuperB2
 
Creasoft - Software QS
Creasoft - Software QSCreasoft - Software QS
Creasoft - Software QS
Creasoft AG
 

Similar a Agiles Testen - Überblick (20)

Scrum Workshop
Scrum WorkshopScrum Workshop
Scrum Workshop
 
Automatisiertes Testen von Software in C++ (mit dem Test Framework Google Test)
Automatisiertes Testen von Software in C++ (mit dem Test Framework Google Test)Automatisiertes Testen von Software in C++ (mit dem Test Framework Google Test)
Automatisiertes Testen von Software in C++ (mit dem Test Framework Google Test)
 
Akzeptanz-Test getriebene Produktentwicklung
Akzeptanz-Test getriebene ProduktentwicklungAkzeptanz-Test getriebene Produktentwicklung
Akzeptanz-Test getriebene Produktentwicklung
 
Agile Softwareentwicklung
Agile SoftwareentwicklungAgile Softwareentwicklung
Agile Softwareentwicklung
 
Robert Risch - Was sind die verschiedenen Phasen bei DevOps
Robert Risch - Was sind die verschiedenen Phasen bei DevOpsRobert Risch - Was sind die verschiedenen Phasen bei DevOps
Robert Risch - Was sind die verschiedenen Phasen bei DevOps
 
Software-Tests in PHP-Anwendungen
Software-Tests in PHP-AnwendungenSoftware-Tests in PHP-Anwendungen
Software-Tests in PHP-Anwendungen
 
Scrum Rocks, Testing Sucks ?! RELOADED
Scrum Rocks, Testing Sucks ?! RELOADEDScrum Rocks, Testing Sucks ?! RELOADED
Scrum Rocks, Testing Sucks ?! RELOADED
 
Testmanagement mit Visual Studio 2013
Testmanagement mit Visual Studio 2013Testmanagement mit Visual Studio 2013
Testmanagement mit Visual Studio 2013
 
Plm Open Hours - Detailkonzepte welcher Art führen zu erfolgreichen Implement...
Plm Open Hours - Detailkonzepte welcher Art führen zu erfolgreichen Implement...Plm Open Hours - Detailkonzepte welcher Art führen zu erfolgreichen Implement...
Plm Open Hours - Detailkonzepte welcher Art führen zu erfolgreichen Implement...
 
Was ist eigentlich eine Unit?
Was ist eigentlich eine Unit?Was ist eigentlich eine Unit?
Was ist eigentlich eine Unit?
 
ASQF Dresden: Benötigen wir mit SCRUM noch einen Testmanager?
ASQF Dresden: Benötigen wir mit SCRUM noch einen Testmanager?ASQF Dresden: Benötigen wir mit SCRUM noch einen Testmanager?
ASQF Dresden: Benötigen wir mit SCRUM noch einen Testmanager?
 
Einführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software EntwicklungEinführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software Entwicklung
 
Testgetriebene Softwareentwicklung
Testgetriebene SoftwareentwicklungTestgetriebene Softwareentwicklung
Testgetriebene Softwareentwicklung
 
DevOps Sepc15
DevOps Sepc15DevOps Sepc15
DevOps Sepc15
 
DevDay 2016 Keynote - Die Evolution agiler Software Entwicklung
DevDay 2016 Keynote - Die Evolution agiler Software EntwicklungDevDay 2016 Keynote - Die Evolution agiler Software Entwicklung
DevDay 2016 Keynote - Die Evolution agiler Software Entwicklung
 
Der Agile Qualitätsbaukasten - PHP Unconference 2014
Der Agile Qualitätsbaukasten - PHP Unconference 2014Der Agile Qualitätsbaukasten - PHP Unconference 2014
Der Agile Qualitätsbaukasten - PHP Unconference 2014
 
Lean development 04
Lean development 04Lean development 04
Lean development 04
 
Referat: Scrum Rocks – Testing Sucks?! (reloaded)
Referat: Scrum Rocks – Testing Sucks?! (reloaded)Referat: Scrum Rocks – Testing Sucks?! (reloaded)
Referat: Scrum Rocks – Testing Sucks?! (reloaded)
 
Creasoft - Software QS
Creasoft - Software QSCreasoft - Software QS
Creasoft - Software QS
 
Softwarequalität Entwicklung - Test - Wartung
Softwarequalität Entwicklung -  Test - WartungSoftwarequalität Entwicklung -  Test - Wartung
Softwarequalität Entwicklung - Test - Wartung
 

Agiles Testen - Überblick

  • 2. Agiles Testen Definition Agiles Testen (z.B. in Scrum, Kanban, XP) ist zu einem unverzichtbaren Bestandteil agiler Softwareentwicklung geworden. Testen in agilen Entwicklungsprojekten unterscheidet sich vom klassischen Testen in erster Linie dadurch, dass Testen eine präventive Maßnahme ist und dass die Tests viel häufiger ausgeführt werden müssen. Der Fokus liegt dabei in der Einbindung von Testern unter Beachtung des agilen Manifests und der Anwendung agiler Prinzipien auf das Testen, wie schnelles Feedback, hoher Automatisierungsgrad, Auflösung starrer Teststufen, enge Zusammenarbeit in selbst organisierten Teams und Vermeidung von Overhead.
  • 3. Agiles Testen im Team Agiles Testen ist die Integration von Qualität sichernder Maßnahmen in den agilen Entwicklungsprozess  Testsicht bereits in der Vorbereitung beachten und durchgängig beibehalten  Verteilt auf alle Rollen (bis hin zu einem 3-Amigo Prozess): o Entwickler: Testgetrieben vorgehen, Unit Tests, Komponententests, FIT-Automatisierung o Fachexperte (PO,BA): Abnahme- und Akzeptanztests erstellen und durchführen o Tester / UI: Persona, Szenarien, Testfälle und Integrationstests erstellen und durchführen, FIT- Automatisierung, UI-Testautomatisierung der Regressionstests  Treiber für die interne Prozessverbesserung.  Agiles Testen basiert auf einem ganzheitlichen Team-Ansatz
  • 4. Profil des agilen Testers  Der Tester bringt während des gesamten Projektablaufs die Testsicht in das agile Team ein.  Der Tester schärft die Anforderungen über Persona und Szenarien bzw. Story Maps. Dabei wird besonders auf die nicht-funktionalen Anforderungen fokussiert.  Der Tester unterstützt o Entwickler methodisch bei den Unit-Tests und bei der fachlichen Architektur durch entsprechenden fachlichen Strukturen in den Tests o Fachexperte (PO, BA) bei der fachlichen Priorisierung und Abnahme der Iterationsergebnisse  Der Tester führt die Integrationstests und die entsprechenden Regressionstests durch und sorgt so von Anfang an für Produktqualität.
  • 5. Ganzheitliches Agiles Team  Entwickler erstellen testgetriebene Software  Product Owner moderiert, organisiert und definiert die Prioritäten  Entwickler, Tester und Fachexperten diskutieren gemeinsam die Anforderungen.  Tester führen aussagekräftige, testmethodische Prüfungen durch. Ergebnis: Tests erfolgen auf allen Ebenen früh und oft Am Beispiel der Scrum Rollen:
  • 6. Testkategorien Moderne agile Entwicklungsteams führen neben Unit-Tests auch Akzeptanztests aus und ergänzen diese durch explorative Tests.
  • 7. Unit-Tests  Unit-Test (auch Komponenten- oder Modultest genannt) überprüfen, ob die von den Entwicklern geschriebenen Komponenten so arbeiten, wie diese es beabsichtigen.  In der agilen Softwareentwicklung wird im Rahmen der testgetriebenen Entwicklung und des Refactorings massiver Gebrauch von Komponententests gemacht. o Zum Zeitpunkt ihrer Erstellung dienen Unit-Tests im Rahmen der testgetriebenen Entwicklung dazu, das Design der Software zu steuern, als Defekte zu finden. o Im Rahmen des inkrementellen Entwurfs sind sie unverzichtbar, um auch langfristig änderbaren Code zu behalten. o Auch wenn ein bestehendes System um neue Features erweitert werden, helfen Unit-Tests: So decken sie unbeabsichtigte Fernwirkungen der neuen Funktionen auf bereits bestehende Systemteile auf. o Darüber hinaus helfen sie auch, das System zu dokumentieren, indem sie beabsichtigte Verwendungen und Reaktionen des Testobjekts deutlich aufzeigen.
  • 8. Unit-Tests Was zeichnet einen guten Unit Test aus? … sind isoliert d.h. unabhängig voneinander, so dass die Reihenfolge ihrer Ausführung das Testergebnis nicht beeinflusst. Schlägt ein Test fehl, so führt dies nicht dazu, das weitere Tests fehlschlagen … sichern jeweils genau eine Eigenschaft ab. Ein Problem äußert sich immer in genau einem fehlgeschlagenen Test. … sie sind vollständig automatisiert, damit sie immer wieder ausgeführt werden können … sind leicht verständlich und kurz. … weisen eine genauso hohe Codequalität auf, wie der Produktivcode selbst … testen relevanten Code (und beispielsweise keine Getter/Setter) … sind um eine Test fixture gruppiert, nicht um eine Klasse … werden vor dem zu testenden Code geschrieben (testgetriebene Entwicklung)
  • 9. Testgetriebene Entwicklung (TDD)  Test First Prinzip  Erfolgt in Verbindung mit Unit-Tests, Systemtests oder Akzeptanztests  Zyklischer Ablauf: • Ein Test wird geschrieben, der zunächst fehlschlägt • Es wird immer nur genau soviel Produktivcode implementiert bis der Test erfolgreich durchläuft • Test- und Produktivcode werden „aufgeräumt“  Einfache Metrik: Tests werden bestanden oder nicht  Einfache Fehlerlokalisierung  Ausführbare Spezifikation: Unit-Tests beschreiben gleichzeitig, was das System leisten soll.
  • 10. Testgetriebene Entwicklung (TDD) Rot: Entwickler erstellt zuerst den Test (Greybox-Tests) für das bestimmte erwünschte Verhalten einer Unit, für bekannte Fehler oder eine neue Teilfunktionalität. Der ausgeführte Test wird zunächst vom bestehenden Programmcode noch nicht erfüllt, da es diesen noch gar nicht gibt. Grün: Anschließend schreibt/ändert der Entwickler den Code mit möglichst geringen Aufwand so lange, bis mit den nächsten Testdurchläufen alle Tests erfolgreich durchlaufen sind Blau: Nun erfolgt das Refactoring, d.h. der Code wird „aufgeräumt“. Überflüssiger Code wird entfernt oder nach verbindlichen Code-Konventionen ausgerichtet.
  • 11. Testgetriebene Entwicklung (TDD) Vorteile  Wartbare Qualitätssoftware • Kein ungetester Code • Saubere/testbare Architektur durch TDD als Designstrategie • Wenig bis keine Redundanzen durch gnadenloses rechtzeitiges Refaktorisieren  Effektive und effiziente Erstellung der Software • Kein unnötiger Code auf Vorrat • Konzentration auf das Wesentliche
  • 13. Akzeptanztests Mit Hilfe von Akzeptanztests werden die Systemfunktionalitäten aus Sicht der Benutzer überprüft.  Agile Teams halten in Form von automatisierten Akzeptanztests ihr Verständnis über die Anwendungsdomäne fest.  Das Team erlangt zusammen mit dem Product Owner ein gemeinsames Verständnis über die Anwendungsdomäne und hälft diese in Form von Akzeptanzkriterien fest.  Diese werden parallel zur Entwicklung der Funktionalität automatisiert.  Über lange Sicht entsteht so eine ausführbare Dokumentation des Systems.
  • 14. Acceptance-Test-Driven Development (ATDD)  Kommunikationswerkzeug zwischen Anwender bzw. Kunde, Entwickler und Tester.  ATDD soll sicherstellen, das Anforderungen gut beschrieben sind und sollen für Nicht- Entwickler lesbar und verständlich sein.  Häufig werden testgetriebene Tests von den akzeptanzgetriebenen Tests abgeleitet. 1. Wähle eine User Story aus 2. Schreibe den Akzeptanztest 3. Implementiere die User Story 4. Führe Akzeptanztest aus 5. Refactoring Ablauf:
  • 15. Behaviour-Driven Development (BDD)  Behavior-Driven Development versucht die Prinzipien von Domain-Driven Design mit denen von Test- Driven Development zu vereinen. Domain-Driven-Design (DDD) o Konzentration auf Fachlogik anstatt Technik o Komplexe fachliche Zusammenhänge zerteilen o vereinfachte Problemlösung o Entwickler sehen nur Teilbereich Test-Driven-Development (TDD) o Konzentration auf das Problem o Frühe Designentscheidungen o Abstrakte Serviceschichten
  • 16. Behaviour-Driven Development (BDD)  Ergänzt TDD und ATDD durch Synthese und Verfeinerung, indem eine strukturierte Sprache den Businessprozess vorgibt  Es steht die ausdrucksstarke Beschreibung von Anforderungen und deren Akzeptanzkriterien im Vordergrund.  Akzeptanzkriterien sollten automatisiert überprüft werden können. (Ausführbare Spezifikation) Beispiele Tools: Cucumber, RSpec (Ruby), behat (PHP), Jbehave (Java) Agile Projektmanagement (Scrum, Kanban) Agile Requirement Analysis (User Story, Acceptance Criteria) Agile Testing (bug prevention, exploratory testing, context-driven) Agile Engineering (XP, TDD,Pair Programming) BDD
  • 17. Behaviour-Driven Development (BDD) Vorteile  Einheitliche Sprache für Anforderungen (wird von allen verstanden)  Klare Fokussierung auf Nutzen sowie Test First ausgehend vom Akzeptanzkriterium  Erfüllung von Anforderungen wird automatisch auf Basis der Akzeptanzkriterien getestet  Fortschritt ist für alle einsehbar
  • 18. Behaviour-Driven Development (BDD) Prinzipien  Wende für jede User Story das 5-Why‘s Prinzip an, so dass der Zweck zu einem eindeutigen Bezug der Geschäftsergebnisse erhält.  Denke von außen nach innen, d.h. Implementiere zunächst die Verhaltensweisen, die direkt etwas zu den Geschäftsergebnissen beitragen und minimiere Waste.  Beschreibe die Verhaltensweise an zentraler Stelle, damit die unterschiedlichen Domänen Experten, Tester und Entwickler direkt zugänglich ist und verbessere die Kommunikation  Übernehme diese Techniken den ganzen Weg hinunter bis zu den tiefsten Ebenen der Abstraktion der Software, wobei ein besonderes Augenmerk auf der Verteilung des Verhaltens liegen soll.
  • 19. Behaviour-Driven Development (BDD) Gherkin  Domain-Specific Language (DSL), leicht für jeden zu Lesen  In sogenannten *.feature-Files werden durch verschiedene Szenarios das Feature beschrieben  Es wird das Format von ATDD verwendet  Given (setup): A specified state of a system  When (trigger): An action or event occurs  Then (verification): The state of the system has changed or an output has been produced
  • 20. Behaviour-Driven Development (BDD) Quelle: https://atom.io/packages/language-gherkin
  • 21. 3 Amigo Ziel ist es, ein gemeinsames Verständnis und gemeinsames Vokabular für ein Feature innerhalb den 3 Rollen (BA, Entwickler und QA) zu erhalten.  In der 3 Amigo-Sitzung stellt zuerst der Business Analyst (BA) die Anforderungen und Tests (geschrieben mit Gherkin) für das neues Feature vor.  Anschließend diskutieren die drei Amigos (BA, Entwickler und QA) zusammen das neue Feature anhand der Informationen und überprüfen die (ausführbare) Spezifikation.  Der Tester (QA) und der Entwickler beurteilen abschließend, ob das Feature bereits für die Entwicklung eingeplant werden kann und identifizieren ggf. die fehlende Anforderungen / Randfälle. Das 3 Amigo Gedanke kann auch sehr gut in das Backlog Grooming integriert werden.
  • 22. Exploratives Testen Exploratives Testen ist das gleichzeitige Lernen, Entwerfen und Durchführen von Test  Informelle Testtechnik & Simultanes Lernen: Tester kontrolliert das Testdesign während der Testausführung. Jede neugewonnene Information wird wiederverwendet um einen besseren Test zu designen.  Merkmale von Testdesign und Testdurchführung beim explorativen Test: o Time-Boxing: Test-Sessions mit fixer Dauer o Charter: Schriftliche Mission für den Tester o Simultanes Testdesign und Testausführung o Einsatz von Heuristiken
  • 23. Exploratives Testen  Risikoorientiert anstelle spezifikationsorientiert, indem aktiv die Fehlersituationen gesucht werden, die bisher noch mit keinen Testfall abgedeckt sind, um möglichst das gesamte Spektrum der Software abzudecken.  Verwendung von Heuristiken bzw. Touring Modelle, um verschiedene Sichtweise und Strukturen beim Testen zu erhalten.  FCC CUTS VIDS Touring Heuristik steht für o Features, o Complexity, o Claims, o Configuration, o User, o Testability, o Scenario, o Variability, o Interoperability, o Data und o Structure
  • 24. Exploratives Testen Beispiele Touring Modelle o Back-alley Tour: Alle Features testen, die der Anwender nicht tagtäglich benutzt. o Landmark Tour: Die einzelnen Feature (Sehenswürdigkeiten) werden in allen möglichen Kombinationen durchgetestet. o Money Tour: Alle Features die intensiv beworben werden oder dem Kaufgrund des Kunden darstellen, werden hier detalliert betrachtet. o Intellectual Tour/ Saboteur Tour: Hier wird versucht, die Software herauszufordern, um beispielsweise Grenzen herauszufinden bzw. sie möglichst destruktiv zu testen. o Guidebook Tour: Anhand der Dokumentation wird überprüft, ob die Software wie beschrieben sich verhält
  • 25. Continuous Integration, Delivery & Deployment Continuous Integration • Kontinuierliche Integration durch täglichen Check-In inkl. Build-/Unit Test • Schnelles Feedback zur Qualität • Deployment auf Test-Umgebung Continuous Delivery • Automatisierte Test (Regressionstests) • Deployment auf Knopfdruck für eine beliebige Version auf internen Umgebungen Continuous Deployment • Jeder erfolgreiche Build wird automatisch auf die Produktiv- Umgebung verteilt
  • 27. Integration in Scrum 10 Allgemeine Prinzipien und Good Practise  Agiles Testen am Beispiel von Scrum verfeinert die Konzepte des agilen Vorgehens  Agiles Vorgehen in der Entwicklung erfordert systematisches Vorgehen beim Testen  Abschließender systemübergreifender Releasetest als dedizierter Sprint  Kontinuierliches Testen und Feedback parallel zur Entwicklung  Früher Start der Testaktivitäten und Einsatz von Test-First-Techniken (z. B. TDD)  User Stories bilden die Basis für die Positiv-Testfälle, Testfälle müssen aber auch unzulässige Szenarien abbilden  Nicht-funktionale Anforderungen ins Produkt-Backlog-Änderungen anpassbar sein  Automatisierung und Wiederholung der Testfälle wichtig  Verwaltung der manuellen und automatisierten Testfälle in einem Artefakt
  • 28. Integration in Scrum Testaktivitäten  Testplanung während Sprint-Planung und Daily Scrum  Testentwurf, -implementierung und -ausführung während des Sprints  Testauswertung während des Sprint-Reviews  Testabschluss während der Sprint-Retrospective Rollen  Scrum Master übernimmt die Rolle des Testmanagers  Jeder im Team ist für das Testen verantwortlich  Product Owner wirkt bei der Testplanung und Testauswertung mit
  • 30. Integration in Scrum Testbasis: Sprint-Tasks Testobjekte: Klassen, Methoden, Daily Result Teststufen: Build-Tests, Unit-Tests Testarten: Funktionale Tests Testwerkzeuge: Unit-Testwerkzeuge
  • 31. Integration in Scrum Testbasis: Sprint-Backlog Testobjekte: Inkrement Teststufen: Systemtests, Entwicklerintegrationstest Testarten: Funktionale Tests, Nicht- funktionale Tests, Regressionstests Testwerkzeuge: Unit-Testwerkzeuge, GUI- Testwerkzeige, Last- und Performanz- Testwerkzeuge
  • 32. Integration in Scrum Testbasis: Produkt-Backlog Testobjekte: Produkt Teststufen: Systemintegrationstest, Akzeptanztest, Inbetriebnahme-Tests Testarten: Funktionale Tests, Nicht- funktionale Tests, End-to-End-Tests Testwerkzeuge: GUI-Testwerkzeige, Last- und Performanz-Testwerkzeuge
  • 33. Genereller Umgang mit Bugs Wie soll das Scrum-Team damit umgehen, wenn sich über die Zeit immer mehr Bugs ansammeln?  Generelle Bug Regeln: • Bugvermeidung • Produktionsgefährdende Bugs: sofort • No-Brainer: im aktuellen Sprint • alle anderen: spätestens im nächsten Sprint  Bug Sprint: Einmalig in einer fokussierten Aktion alle Bugs erledigen.  Bug Stand-Up: Jeden Tag alle neuen Bugs verteilen.  Bug Elimination Day: Dezidierter Tag im Sprint. Alle Bugs, die angefangen werden, müssen am gleichen Tag beendet werden.
  • 34. Quellen  https://www.it-agile.de/wissen/agile-teams/agiles-testen/  http://www.anecon.com/blog/bdd-im-agilen-umfeld-erfahrungsbericht/  https://blog.seibert-media.net/blog/2011/05/18/akzeptanztests-scrum-agile-softwareentwicklung/  https://www.informatik-aktuell.de/entwicklung/methoden/einfuehrung-in-acceptance-test-driven- development-atdd.html  https://www.it-agile.de/wissen/agiles-engineering/exploratives-testen-mit-struktur/  https://www.sigs-datacom.de/uploads/tx_dmjournals/geisen_gueldali_OS_Agility_2012_8e65.pdf  http://www.velocitypartners.net/blog/2014/02/11/the-3-amigos-in-agile-teams/

Notas del editor

  1. Fit (Framework for Integrated Test) ist besonders für Akzeptanztests geignet, da die Testfälle leicht von der Fachabteilung (bzw. vom Auftraggeber) definiert werden können. Die Testfälle werden bei Fit in HTML-Tabellen definiert und auch das Testergebnis ist eine HTML-Tabelle. Die Anbindung an das zu testende Programm erfolgt über "Fixtures". http://www.torsten-horn.de/techdocs/java-fit.htm
  2. http://thred.github.io/presentation-bdd/#/
  3. http://robert-m.de/uberblick/bdd-story-templates/
  4. http://www.anecon.com/blog/bdd-im-agilen-umfeld-erfahrungsbericht/
  5. http://docs.behat.org/en/v2.5/guides/1.gherkin.html
  6. https://atom.io/packages/language-gherkin