Schreiben von Akzeptanztestfällen

14

Wir integrieren einen Testprozess in unseren SCRUM-Prozess. Meine neue Aufgabe ist es, Akzeptanztests für unsere Webanwendungen zu schreiben, um sie später zu automatisieren. Ich habe viel darüber gelesen, wie Testfälle geschrieben werden sollten, aber keiner hat mir praktische Ratschläge zum Schreiben von Testfällen für komplexe Webanwendungen gegeben, und stattdessen wurden widersprüchliche Grundsätze aufgestellt, die ich nur schwer anwenden konnte:

  • Testfälle sollten kurz sein: Nehmen Sie das Beispiel eines CMS. Kurze Testfälle sind einfach zu warten und die Ein- und Ausgänge zu identifizieren. Aber was ist, wenn ich eine lange Reihe von Vorgängen testen möchte (z. B. Hinzufügen eines Dokuments, Senden einer Benachrichtigung an einen anderen Benutzer, Antworten des anderen Benutzers, Statusänderung des Dokuments, Benachrichtigung des Benutzers). Mir scheint eher, dass Testfälle vollständige Szenarien darstellen sollten. Aber ich kann sehen, wie dies zu sehr komplexen Testdokumenten führen wird.

  • Tests sollten Inputs und Outputs identifizieren : Was ist, wenn ich eine lange Form mit vielen interagierenden Feldern und unterschiedlichem Verhalten habe? Schreibe ich einen Test für alles oder einen für jeden?

  • Testfälle sollten unabhängig sein: Aber wie kann ich das anwenden, wenn das Testen des Upload-Vorgangs erfordert, dass der Verbindungsvorgang erfolgreich ist? Und wie ist es beim Schreiben von Testfällen? Sollte ich einen Test für jede Operation schreiben, aber jeder Test erklärt seine Abhängigkeiten, oder sollte ich das gesamte Szenario für jeden Test neu schreiben?

  • Testfälle sollten leicht dokumentiert werden: Dieses Prinzip ist spezifisch für Agile-Projekte. Haben Sie also einen Rat, wie Sie dieses Prinzip umsetzen können?

Obwohl ich dachte, dass das Schreiben von Abnahmetestfällen einfach sein würde, war ich von jeder Entscheidung, die ich treffen musste, überwältigt (FYI: Ich bin ein Entwickler und kein professioneller Tester). Meine Hauptfrage lautet also: Welche Schritte oder Ratschläge haben Sie, um wartbare Abnahmetestfälle für komplexe Anwendungen zu schreiben? Vielen Dank.

Bearbeiten : Um meine Frage zu klären: Ich bin mir bewusst, dass Abnahmetests von der Anforderung ausgehen und die gesamte Anwendung als Black Box betrachten sollten. Meine Frage bezieht sich auf die praktischen Schritte zum Schreiben des Testdokuments, Identifizieren der Testfälle, Behandeln von Abhängigkeiten zwischen Tests ... für komplexe Webanwendungen

HH
quelle

Antworten:

5

In meinen Akzeptanzsuiten habe ich auf die Verwendung von technologie-spezifischen Steuerelementen verzichtet, dh für Webanwendungen wird kein CSS verwendet. Verwenden Sie keine HTML-Elemente, wenn Sie ein Formular ausfüllen müssen. Führen Sie die Schritte zum Einrichten des SUT aus, nicht die eigentlichen Akzeptanztests

Ich benutze Gurke für meine Annahme und habe die folgenden

Given A xxx 
And I am on the xxx page
And a clear email queue
And I should see "Total Payable xxxx"
And I supply my credit card details
When I the payment has been processed
Then my purchase should be complete
And I should receive an email
When I open the email with subject "xxx"
Then I should see the email delivered from "xx"
And there should be an attachment of type "application/pdf"
And attachment 1 should be named "xxxx"
And I should be on the xxx page
And I should see my receipt

Dieses Beispiel stammt von einer Webanwendung, aber ich kann den Test weiterhin zum Testen mit einer Desktopanwendung verwenden, da die Schritte zum Einrichten des SUT und nicht die Abnahmetests verwendet werden

Dieser Test findet am Ende eines Kaufs statt, der geht

Generieren -> Bestätigen -> Bezahlen -> Quittung drucken

Der obige Test bezieht sich auf den Zahlungsschritt. Die anderen Schritte werden in anderen Tests eingerichtet, da die Anwendung mit Daten oder HTTP-Aktionen in diesen Status versetzt werden kann Schritte erzeugen, so dass sie im Moment ein bisschen spröde sind

Schmiedestein
quelle
2

Zuerst müssen Sie Akzeptanztests definieren .

Was Sie zu beschreiben scheinen, ist Integration oder Systemtests .

Ich stimme den Definitionen auf Wikipedia zwar nicht zu 100% zu, aber sie sind immer noch weitgehend gültig.

Grundsätzlich besteht der Zweck des Abnahmetests darin, zu überprüfen, ob die "Geschäftsprozesse", die die von Ihnen erstellte Software verwenden, tatsächlich wie beabsichtigt funktionieren und für den Zweck geeignet sind - mit realen Daten. Als solches erstellen Sie keine Testfälle wie Unit-Tests oder den Rest. Es soll nicht ganz so konstruiert sein.

Die zu stellende Frage lautet "Wie wird das System verwendet?". Testen wir es also so, wie es verwendet werden soll. Natürlich setzen Sie jetzt Ihren technischen Hut wieder auf und gehen die geschäftlichen Anforderungen religiös durch, um Ihre Testfälle abzuleiten. Das setzt voraus, dass Sie gut geschriebene Geschäftsanforderungen haben.

Wenn Sie dies nicht tun, ist es noch nicht zu spät. Sie müssen sich mit den Benutzern oder ihren Vertretern (und dem Geschäftsanalysten und dem technischen Konstrukteur) zusammensetzen und aufschreiben, was sie von der Software in geschäftlicher Hinsicht erwarten ( mit dem offensichtlichen Vorbehalt, dass dies zu wenig zu spät ist, aber es besser ist, zu spät zu beginnen als nie - und natürlich keine neuen Funktionen einzuführen). Dies ist, was Ihre Testfälle sein werden.

Eine andere Möglichkeit, dies zu tun (auch wenn Sie ein solches Dokument haben), besteht darin, das Benutzerhandbuch durchzulesen. Obwohl dies nur einen Schritt von den tatsächlichen Geschäftsanforderungen entfernt ist, kann es nur verwendet werden, wenn alles andere fehlschlägt.

Wenn Sie ein Auto kaufen, gehen Sie im Allgemeinen nicht tief unter die Motorhaube (es sei denn, Sie sind ein Automechaniker). Sie setzen sich einfach ans Steuer und prüfen, ob Komfort, Bedienbarkeit, Aussehen, Klang usw. allgemein bekannt sind. Sie vertrauen im Allgemeinen darauf, dass das Auto, wenn es überhaupt in der Hand gehalten werden muss (zumindest für ein neues Auto), im Allgemeinen sicher und gut gebaut ist (es besteht eine Garantie, Sie haben Ihre Hausaufgaben erledigt und die technischen Daten überprüft ...). Nun prüfen Sie, ob dies das Auto ist, das Sie in den nächsten Jahren fahren möchten.

Gleiches gilt für Software.

asoundmove
quelle
5
Es gibt verschiedene Arten von Abnahmetests. In diesem Beitrag werden "Benutzerakzeptanztests" beschrieben. Ich denke, das OP fragt nach Akzeptanztests in agilen Methoden, die sicherstellen, dass eine User Story abgeschlossen wurde. Diese Tests müssen "unter der Haube" etwas tiefer gehen, da sie für einige agile Teams die primäre Form der Funktionsprüfung darstellen. In diesem Fall lautet die Akzeptanz nicht "Der Kunde akzeptiert die Software", sondern "Das Team akzeptiert, dass die User Story vollständig ist".
Ethel Evans
Können Sie sich auch auf einen Kommentar dies ? Ich mag diesen Punkt: Die zu stellende Frage lautet: "Wie wird das System verwendet?"
user1787812
@ user1787812 Entschuldigung, ich bin kein Werkzeugexperte. Ihre Vorgehensweise erscheint auf den ersten Blick sinnvoll. Und anders als Ihr erster Kommentator sagt, ist OAT eine gebräuchliche Terminologie.
Asoundmove
1

Die widersprüchlichen Informationen können frustrierend sein und sind schwer zu verallgemeinern und auf Ihre spezifische Situation anzuwenden. Ergo müssen Sie möglicherweise das tun, was in Ihrem Kontext am besten funktioniert.

Ich bin kein großer Fan von langen Testdokumenten und habe Visuals für einige kleinere Projekte recht effektiv eingesetzt. Versuch das? Wie ein Flussdiagramm (oder ein anderes UML-Diagramm wie ein Zustandsdiagramm usw.), anstatt nur Text zu verwenden? Geben Sie Eingaben, Ausgaben, Bedingungen, Schleifen, Spuren, Zustände, Interaktionen mit anderen Komponenten usw. an und geben Sie dann an, ob sie erfolgreich sind, fehlgeschlagen sind, übertragen wurden oder andere (?), Basierend auf Ihren Kriterien.

Könnte am Anfang ein bisschen Arbeit sein, kann aber auf lange Sicht dazu beitragen, dass du gesund bleibst. Für welche Methode Sie sich auch entscheiden, je mehr Sie damit arbeiten, desto besser werden Sie damit umgehen.

HTH und viel Glück!

KM

KM.
quelle
0

Ich denke, Sie haben bereits einige gute Kriterien festgelegt. Ihr zweiter Punkt ist eine gute Möglichkeit, die Gültigkeitsbereiche für Ihre Tests zu definieren, und ich schlage vor, auch auf Fehlerzustände und Bufixe zu prüfen (ich empfehle, dass jede Fehlerbehebung mindestens einen neuen Komponententest enthält). Es mag jetzt überwältigend erscheinen, aber tauchen Sie einfach ein und nachdem Sie ein wenig Erfahrung gesammelt haben, wird es einfacher, zu erkennen, was für gute Tests ausmacht.

Schmiede
quelle