Insight

Insight

Insight

Insight

Dokumentation durch Tests: Akzeptanztests in Flutter-Apps erfolgreich einsetzen

Dokumentation durch Tests: Akzeptanztests in Flutter-Apps erfolgreich einsetzen

18.03.2024

Dokumentation durch Tests
Dokumentation durch Tests
Dokumentation durch Tests
Dokumentation durch Tests

Foto - Skaletz Photography


Oft ist die Dokumentation einer Flutter-App nicht auf dem neuesten Stand oder wird vernachlässigt. Eine Möglichkeit der Dokumentation sind Akzeptanztests. Sie sind dazu da, Fehler zu finden und dienen als lebendige Dokumentation. Akzeptanztests sind in Flutter-Apps ein mächtiges Werkzeug, um Funktionalitäten und Anforderungen zu dokumentieren.


Eine gute Dokumentation durch Tests bietet nicht nur Klarheit über die erwartete Funktionalität einer App, sondern verbessert auch die Zusammenarbeit zwischen Entwicklern, Projektmanagern und Kunden. Durch die Verwendung von natürlicher Sprache in Tests, insbesondere mit der Gherkin-Syntax, wird die Kommunikation erleichtert und Missverständnisse minimiert. Das ultimative Ziel von Akzeptanztests in Flutter-Apps ist es, eine klare und konsistente Dokumentation bereitzustellen, die nicht nur den aktuellen Stand der App widerspiegelt, sondern auch als Referenz für zukünftige Entwicklungen dient.



Was sind Akzeptanztests?


Akzeptanztests sind eine Form von automatisierten Tests, die darauf abzielen, sicherzustellen, dass eine Anwendung die vom Benutzer definierten Anforderungen erfüllt. Sie simulieren typische Benutzerinteraktionen und überprüfen, ob die Anwendung gemäß den Spezifikationen funktioniert. Im Kontext von Flutter-Apps werden Akzeptanztests verwendet, um sicherzustellen, dass die UI-Elemente korrekt funktionieren und die Anwendung den Anforderungen und Erwartungen der Benutzer entspricht.


Im Gegensatz zu Unit-Tests, die auf der Codeebene durchgeführt werden, testen Akzeptanztests die Anwendung auf einer höheren Ebene. Sie konzentrieren sich auf die End-to-End-Funktionalität der Anwendung und interagieren mit der Benutzeroberfläche, um sicherzustellen, dass alle Komponenten ordnungsgemäß zusammenarbeiten. In Flutter eignen sich Widget-Tests besonders gut, um Akzeptanztest auf Codeebene näher zu „beschreiben“.


Die Verwendung von Akzeptanztests bietet mehrere Vorteile. Zum einen ermöglichen sie eine umfassende Überprüfung der Anwendung aus Benutzersicht, was zu einer höheren Qualität und Zuverlässigkeit führt. Weiterhin dienen sie als lebendige Dokumentation der Anwendungsanforderungen und Funktionalitäten, was die Zusammenarbeit zwischen Entwicklern, Projektmanagern und Kunden verbessert. Durch die Automatisierung von Akzeptanztests können außerdem Zeit und Ressourcen eingespart werden, da sie wiederholt und effizient durchgeführt werden können, ohne die App mühselig manuell zu testen.


Insgesamt haben Akzeptanztests eine entscheidende Rolle im Entwicklungsprozess von Flutter-Apps, indem sie sicherstellen, dass die Anwendung den Anforderungen entspricht und eine positive Benutzererfahrung bietet.



Gherkin: Die Sprache der Akzeptanztests


Gherkin ist ein leicht verständliches Tool, das häufig für die Definition von Akzeptanztests verwendet wird. Es basiert auf einem einfachen Satz von Schlüsselwörtern in natürlicher Sprache, die es ermöglichen, Testszenarien auf eine klare und strukturierte Weise zu beschreiben. Gherkin ist so konzipiert, dass es für alle Beteiligten, einschließlich Entwicklern, Projektmanagern und Kunden, leicht lesbar ist.


Die Verwendung von Gherkin bietet mehrere Vorteile für die Erstellung von Akzeptanztests. Zum einen ermöglicht sie eine bessere Zusammenarbeit zwischen den verschiedenen Stakeholdern, da die Tests in einer Sprache geschrieben sind, die für alle verständlich ist. Ebenso fördert Gherkin eine klare und einheitliche Dokumentation der Anwendungsanforderungen, da Testszenarien in einer strukturierten und leicht nachvollziehbaren Form festgehalten werden.



Beispiele für Gherkin-Syntax in Flutter-Apps


Mit der Gherkin-Syntax werden die Anforderungen einer App als Features beschrieben. Dabei ist es sinnvoll, die Anforderungen zunächst in User Stories aufzuteilen. Die User Stories lassen sich dann mit Gherkin als Szenario beschreiben. Die Dokumentation eines Szenarios folgt dann immer dem Muster folgender Anweisungen: Given, When, Then und kann in jedem Schritt mit And Anweisungen ergänzt werden.


Hier ist ein Beispiel für die Verwendung der Gherkin-Syntax:

  1. Feature: Beschreibung des getesteten Features.

  2. Background: Beschreibung welche Bedingungen für alle Szenarien in dem Feature gelten

  3. Szenario: Beschreibung eines spezifischen Szenarios, das getestet werden soll.

  4. Schritte: Beschreibung der Schritte, die zur Ausführung des Szenarios erforderlich sind.

Feature: Chat Overview

    Background:
        Given I am on the chat overview page
        
    Scenario: Show chat overview with no chats
        Given I am logged in
        When I have no chats
        Then I should see the chat overview page
        And I should see no chats
        
    Scenario: Show chat overview with chats
        Given I am logged in
        When I have chats
        Then I should see the chat overview page
        And I should see my chats

Gherkin Beispiel 1


Implementierung von Akzeptanztests in Flutter


bdd_widget_test ist ein Package für das Testen von Flutter-Apps, insbesondere für die Durchführung von Akzeptanztests. Es basiert auf dem Behavior-Driven Development (BDD)-Ansatz und bietet eine intuitive Syntax zum Beschreiben von Testszenarien mit Gherkin.


Die Installation ist einfach und unkompliziert. Füge einfach die folgende Abhängigkeit in der pubspec.yaml Datei hinzu:

dev_dependencies:
  bdd_widget_test: ^latest_version


Führe dann flutter pub get aus, um das Package herunterzuladen und einzurichten. Nach der Installation kann das Package in deinen Tests verwendet werden.


Das Package kann für eine Vielzahl von Anwendungsfällen in Flutter-Apps eingesetzt werden, darunter:

  • Überprüfung der Benutzeroberfläche und Interaktionen

  • Validierung von Geschäftslogik und Funktionalitäten

  • Integrationstests für komplexe Szenarien und Workflows


Die praktische Anwendung von bdd_widget_test in Flutter-Apps ermöglicht eine effektive und umfassende Überprüfung der Anwendungsanforderungen und Funktionalitäten. Durch die Verwendung von natürlicher Sprache in den Testszenarien wird außerdem die Dokumentation der App verbessert und eine klare Kommunikation zwischen den Teams gewährleistet.


Um einen Akzeptanztest zu erstellen, können wir für das Gherkin Beispiel 1 die .feature-Datei chat_overview.feature erstellen und uns dazu den Flutter Test Code generieren lassen, mit:

dart run build_runner build


Hier ist ein Beispiel, wie ein der generierte Code aussehen kann:

void main() {
  group('''Chat Overview''', () {
    Future<void> bddSetUp(WidgetTester tester) async {
      await iAmOnTheChatOverviewPage(tester);
    }
    testWidgets('''Show chat overview with no chats''', (tester) async {
      await bddSetUp(tester);
      await iAmLoggedIn(tester);
      await iHaveNoChats(tester);
      await iShouldSeeTheChatOverviewPage(tester);
      await iShouldSeeNoChats(tester);
    });
    testWidgets('''Show chat overview with chats''', (tester) async {
      await bddSetUp(tester);
      await iAmLoggedIn(tester);
      await iHaveChats(tester);
      await iShouldSeeTheChatOverviewPage(tester);
      await iShouldSeeMyChats(tester);
    });
  });
}


Für jede einzelne Funktion innerhalb der testWidgets()-Szenarien wird eine eigene Datei im step-Ordner erstellt, in der die Widget-Tests ausprogrammiert werden.


Für iShouldSeeNoChats kann das so aussehen:

/// Usage: I should see no chats
Future<void> iShouldSeeNoChats(WidgetTester tester) async {
  expect(find.byType(ChatRoomItem), findsNothing);
}


Durch die Nutzung von bdd_widget_test können wir Gherkin-Szenarien einfach in Widget-Tests umwandeln und so sicherstellen, dass unsere Flutter-Apps den Anforderungen entsprechen und fehlerfrei funktionieren.



Mein Workflow zum Erstellen von Akzeptanztests


Schritt-für-Schritt zur Erstellung von Akzeptanztests:

  1. Anforderungsanalyse: Zunächst analysiere ich die Anforderungen der App, um zu verstehen, welche Funktionen getestet werden müssen.

  2. Testszenarien definieren: Basierend auf den Anforderungen definiere ich klare und verständliche Testszenarien in Gherkin.

  3. Setup der Tests: Ich richte ein separaten Testbereich ein, in dem die Akzeptanztests ausgeführt werden können. Dies ermöglicht eine saubere Trennung von Produktions- und Testcode.

  4. Implementierung der Tests: Unter Verwendung des bdd_widget_test Package implementiere ich die definierten Testszenarienn als Widget-Tests.

  5. Ausführung der Tests: Ich führe die erstellten Akzeptanztests aus, um sicherzustellen, dass die Anwendung gemäß den Spezifikationen funktioniert.


Best Practices für effektive Akzeptanztests in Flutter:

  • Klare Beschreibung: Ich beschreibe die Testszenarien klar und präzise, um Missverständnisse zu vermeiden.

  • Modularität: Ich strukturiere meine Tests modular, um eine einfache Wartung und Erweiterung zu ermöglichen.

  • Wiederverwendbarkeit: Ich achte darauf, Testcode zu schreiben, der wiederverwendbar ist, um Redundanz zu vermeiden.

  • Regelmäßige Aktualisierung: Ich halte meine Tests regelmäßig auf dem neuesten Stand, um sicherzustellen, dass sie den aktuellen Stand der App widerspiegeln.


Integration von Akzeptanztests in den Entwicklungsprozess:

  • Frühe Integration: Ich integriere Akzeptanztests frühzeitig in den Entwicklungsprozess, um frühzeitig Feedback zu erhalten und potenzielle Probleme zu identifizieren.

  • Automatisierte Ausführung: Ich automatisiere die Ausführung meiner Akzeptanztests, um sicherzustellen, dass sie regelmäßig und zuverlässig durchgeführt werden.

  • Feedback-Schleife: Ich nutze das Feedback aus den Akzeptanztests, um Verbesserungen am Code vorzunehmen und die Qualität der App kontinuierlich zu verbessern.


Mit diesem Workflow kann ich effektiv und effizient Akzeptanztests für Flutter-Apps erstellen und sicherstellen, dass sie nicht nur als Dokumentation dienen, sondern auch die Qualität und Zuverlässigkeit der Anwendung verbessern.



Zusammenfassung


Akzeptanztests werden in Gherkin-Syntax geschrieben, um sie leicht verständlich und wartbar zu machen. Diese Tests dienen nicht nur als Dokumentation, sondern auch als effektive Mittel zur Überprüfung der Funktionalität und Qualität von Flutter-Apps.


Die Bedeutung der Akzeptanztests wird auch in Zukunft weiter zunehmen, da sie eine entscheidende Rolle bei der Sicherstellung der Qualität und Benutzerfreundlichkeit von Apps spielen. Mit der ständigen Weiterentwicklung von Flutter und entsprechenden Packages wie bdd_widget_test werden wir noch leistungsfähigere Werkzeuge zur Verfügung haben, um Akzeptanztests effizienter zu gestalten und nahtlos in den Entwicklungsprozess zu integrieren.


Es ist wichtig, dass Entwickler und Teams die Implementierung von Akzeptanztests als integralen Bestandteil ihres Entwicklungsprozesses betrachten. Durch die kontinuierliche Integration von Akzeptanztests können wir die Qualität unserer Apps verbessern, die Entwicklungszeit verkürzen und letztlich eine bessere Benutzererfahrung bieten. Es empfiehlt sich daher, sich weiterhin mit den besten Praktiken und Tools für die Erstellung und Ausführung von Akzeptanztests vertraut zu machen und diese aktiv in die Entwicklung einzubeziehen.


Bereit, die Qualität Ihrer Flutter-App zu steigern? Als erfahrener Flutter-Entwickler mit einem Fokus auf die Integration von Akzeptanztests stehe ich bereit, Ihr Projekt zu unterstützen und Ihnen zu zeigen, wie Sie mithilfe von bdd_widget_test die Dokumentation durch Tests maximieren können. Lassen Sie uns gemeinsam Ihre App auf das nächste Level bringen!

Dein planbarer App-Entwickler

für Flutter Apps

“Flutter and the related logo are trademarks of Google LLC. We are not endorsed by or affiliated with Google LLC.”

Copyright ©2024. Julian Giesen. Alle Rechte vorbehalten.

Dein planbarer App-Entwickler

für Flutter Apps

Copyright ©2024. Julian Giesen.

Alle Rechte vorbehalten.

“Flutter and the related logo are trademarks of Google LLC. We are not endorsed by or affiliated with Google LLC.”

Dein planbarer App-Entwickler

für Flutter Apps

“Flutter and the related logo are trademarks of Google LLC. We are not endorsed by or affiliated with Google LLC.”

Copyright ©2024. Julian Giesen. Alle Rechte vorbehalten.