Test / Behavior Driven Development

Testautomatisierung für Code, Benutzeroberfläche, Integration und mehr

Richtig eingesetzt, erzwingen Tests guten und verifizierbaren Code zu schreiben. Guter Code ist die Grundlage sauberer Architektur – gleich von Anfang an. Das Risiko, durch Veränderungen am Code Fehler zu verursachen, wird fortlaufend und schnell reduziert, z. B. durch automatisierte Oberflächentests. Der Einsatz von Behavior-Driven Design (BDD) macht Tests aussagekräftiger und spezifischer für die fachliche Domäne. Fachabteilungen können Tests bzw. Spezifikationen interpretieren ohne eine Programmiersprache verstehen zu müssen.

Ein praktisches BDD-Tool ist das Framework Machine.Specifications (MSpec) für .NET. MSpec ist Open Source, per NuGet verfügbar und in ReSharper integrierbar. Cucumber ist ein plattformübergreifendes Open-Source-Tool das „Gherkin“ als domänenspezifische Sprache für Spezifikationen einsetzt und mit allen gängigen Programmiersprachen integrierbar ist. Außerdem erlauben viele Testing-Frameworks, wie z. B. Jest und RSpec, Unit-Tests im BDD-Style zu schreiben.

Einführung ins Testen / Unit Testing

  • Typen von Softwaretests
    • Unit Tests
    • Akzeptanztests
    • UI-Tests
    • Integrationstests
    • Datenbanktests
    • Performancetests
  • Die Testpyramide nach Martin Fowler
  • Vorgehensweisen
    • Blackbox-Testing
    • Whitebox-Testing
  • Tests als Investition in die Zukunft einer Software
  • Tests als Verifikation der Spezifikation
  • Verbesserung der Kommunikation mit der Fachabteilung

Vom Test zum Produktivcode

  • Was ist ein Unit Test und wie verhält sich dieser im Test Driven Development
  • Unterschiede zwischen Test-First und testgetriebener Softwareentwicklung
  • Tests als Treiber für gutes Softwaredesign
  • Outside-In und Inside-Out als zwei Ansätze, Funktionalität zu entwickeln
  • Muss man alles testgetrieben entwickeln
  • XP-Techniken wie Pair Programming und deren Einsatz bei testgetriebener Softwareentwicklung
  • Mocks und andere Arten von Test Doubles
  • Testen zeitkritischer Funktionalität
  • Wann sind Abstraktionen für Dateisystemzugriff oder externe Ressourcen sinnvoll
  • Wie das Testen die „Definition of Done“ in der agilen Softwareentwicklung beeinflusst
  • Metriken und deren Kosten / Nutzen: Code Coverage, Coupling, Dependency Matrix
  • Was testet man und wie intensiv sollte getestet werden
  • Tests als Qualitätssicherungsmaßnahme

Brownfield-Softwareentwicklung und „minimalinvasives“ Testen

  • Wie bekommt man bestehenden Code „under test“
  • Aufbrechen von Komponenten
  • Testbasierte Unterstützung von Refactoring
  • Patterns für das Refactoring und Modularisierung von Tests
  • Umgang mit Testdaten
    • Object Mother, Builder Pattern
    • Named Test Data Sets (Personas)
  • Bezugnahme auf User Stories und die Erstellung von Spezifikationen und Szenarios
  • Langfristiger Nutzen von Tests für Qualität und Architektur

Behavior Driven Development (BDD)

  • Ist BDD nur „Test Driven Development (TDD) done right“
  • Abgrenzung zu Domain Driven Design
  • Vorteile von BDD in Bezug auf die Kommunikation im Team und zwischen Team und Stakeholdern
  • Die Stile Context / Specification und Given-When-Then
  • Frameworks für BDD

Oberflächentests und Weiteres

  • Test-Frameworks für Java, JavaScript und Ruby
  • Frameworks für das Testen von Oberflächen im Web und auf dem Client
  • Tests mit und in PowerShell

Unsere Veranstaltungsorte von dieser / diesem Schulung, Training, Seminar, Kurs (nach oben): Berlin, Dresden, Frankfurt am Main, Hamburg, Hannover, Karlsruhe, Köln, Leipzig, Magdeburg, München, Stuttgart und Inhouse.

Fortbildung oder Weiterbildung zu Test Driven – wir setzen nur auf erfahrene Talente als Test Driven Trainer. Das Credo von Alexander Groß lautet „Ich will, dass Entwickler auf ihre Software stolz sein können“. Mehr zu ihm und den Beweggründen unserer anderen Trainer erfahren Sie bei seiner Biographie (direkt erreichbar per Bild).

Nach oben