Akzeptanztestgetriebene Entwicklung
Was ist akzeptanztestgetriebene Entwicklung (Acceptance Test–Driven Development, ATDD)?
Die akzeptanztestgetriebene Entwicklung (Acceptance Test–Driven Development, ATDD) ist ein kollaborativer Prozess, bei dem Entwickler, Tester und Unternehmensvertreter zusammenkommen, um Anforderungen auszuarbeiten, potenzielle Fallstricke zu erkennen und die Fehlerwahrscheinlichkeit zu reduzieren, bevor mit der Programmierung begonnen wird. Die akzeptanztestgetriebene Entwicklung wird aus der Perspektive des Benutzers geschrieben und beantwortet die Frage: Erfüllt der Code seine Aufgabe?
Der erste Schritt der akzeptanztestgetriebenen Entwicklung besteht darin, alle Beteiligten zusammenzubringen und einen Spezifikations-Workshop abzuhalten. Sobald die Anforderungen im Workshop definiert und geklärt sind, können die Tester automatisierte Tests anhand der festgelegten Kriterien erstellen. Qualitätssicherungstester (QS-Tester) arbeiten mit den Entwicklern zusammen, um den ersten Test zu implementieren und zu automatisieren. Akzeptanztestgetriebene Entwicklung erleichtert auch die Implementierung von Unit-Tests.
Testformat
Tests der akzeptanztestgetriebenen Entwicklung folgen in der Regel dem Given-When-Then-Format, um zu beschreiben, wie sich die Software verhalten soll. Hier zwei Beispiele hierfür:
Given: Eine Konfiguration, ein festgelegter Zustand.
And (optional): Fortsetzung der Konfiguration.
When: Auslöser, eine Aktion oder ein Ereignis tritt ein.
Then: Überprüfung. Der Zustand hat sich geändert oder es wird eine Ausgabe erzeugt.
Given: Film im Katalog einer Video-Streaming-App aufgeführt.
And: Der Benutzer ist ein zahlender Abonnent.
When: Der Benutzer wählt einen Film aus, den er ansehen möchte.
Then: Der Film wird für den Benutzer gestreamt.
Vorteile der akzeptanztestgetriebenen Entwicklung
Akzeptanztestgetriebene Entwicklung bringt alle an der Entwicklung Beteiligten zusammen, um die Kriterien zu diskutieren, nach denen eine App erstellt wird. Klarheit über die Anforderungen hilft, unnötigen Aufwand zu reduzieren, und das Verständnis dafür, wie ein Unternehmen die Funktionsweise erwartet, kann die Anzahl der Neucodierungen und Fehler reduzieren. Akzeptanztestgetriebene Entwicklung kann oft für Entwickler von Vorteil sein, die Agile verwenden.
Selbst in Fällen, in denen das Testen nicht automatisiert ist oder die Tester nur über geringe Programmierkenntnisse verfügen, ist es sinnvoll, die Geschäftsbedingungen und die Logik zu klären. Alle Teams können von der Zusammenarbeit mit Geschäftsexperten und einer frühzeitigen Diskussion darüber profitieren, wie getestet werden soll, damit die erforderlichen Anforderungen erfüllt werden. Das Endergebnis der akzeptanztestgetriebenen Entwicklung ist eine bessere, zuverlässigere Anwendung.
Akzeptanztestgetriebene Entwicklung versus testgetriebene Entwicklung
Während sich akzeptanztestgetriebene Entwicklung auf die Zusammenarbeit und das Testen der Benutzerfunktionalität konzentriert, verfolgt die testgetriebene Entwicklung (Test-Driven Development, TDD) eher einen entwicklerorientierten Ansatz. Testgetriebene Entwicklung konzentriert sich auf die Durchführung und Automatisierung von Unit-Tests und ist einfacher zu implementieren. Sowohl akzeptanztestgetriebene Entwicklung als auch testgetriebene Entwicklung zielen darauf ab, unnötigen Code und Entwicklerressourcen zu reduzieren und gleichzeitig umfassende Anforderungen zu erstellen und kontinuierlich zu testen, um sicherzustellen, dass ein Produkt den Erwartungen der Benutzer entspricht.