2016-10-03 2 views
0

Ich schreibe einige Abnahmetests für ein Spendenformular. Ich benutze Codeception. Aus Gründen der diesem Beispiel können sagen, dass das Spendenformular 3 Teilen:Was zu tun ist, wenn ein Abnahmetest unterschiedliche Benutzerwahlen hat und Sie jeden von ihnen testen möchten

  1. Geben Sie Ihre persönlichen Daten
  2. Geben Sie entweder mit Kreditkarte und Direktübertragung
  3. Senden und Empfangen von E-Mail-Bestätigung

Für den Abnahmetest möchte ich den gesamten Prozess testen - sowohl für die Kreditkarte und direkte Übertragung. Die Schritte 1 und 3 sind im Wesentlichen die gleichen zwischen den beiden Spende-Prozessen, aber - offensichtlich - können Sie den zweiten Schritt nicht selbst ausführen (das Spendenformular würde nicht ohne Schritt 1 reichen).

Ich frage mich, wäre es in diesem Fall "normal", zwei Tests zu schreiben (z. B. canDonateWithCreditCard() und canDonateWithDirectTransfer()), die beide alle drei Teile des Prozesses testen? Auch wenn das zum Teil das Gleiche zweimal testet?

Wenn nicht, was wäre der bevorzugte Weg, dies zu tun?

Antwort

1

Dies ist bei meiner Arbeit absolut akzeptabel. Wir haben eine umfangreiche Automatisierungssuite, in der die gleichen Seiten aufgrund von Szenarien, die den oben beschriebenen ähneln, mehrfach ausgeführt werden. Die einzige Einschränkung, die ich erwähnen möchte, ist, wenn Sie Ihre Tests erstellen (ich weiß nicht, wie die Codeception funktioniert), aber Ihre Tests mit etwas in der Art des Seitenobjektmodells (http://martinfowler.com/bliki/PageObject.html) zu bauen, das bedeutet, obwohl Sie Haben mehrere Tests, die die gleichen Szenarien implementieren können, hat jeder Test keine eigene Implementierung dieser Schritte.

+2

http://codeceptive.com/docs/06-ReusingTestCode#StepObjects – Naktibalda

1

Dies hängt von Ihrem Ansatz ab. 1. Sie können zwei verschiedene Testfälle erstellen, die die Aktion ausführen. 2. Sie können in Ihrem Test eine Logik verwenden, um den Übertragungsmodus als Argument an die Methode zu übergeben und entsprechende Aktivitäten durchzuführen. Es ist immer ideal, das Page-Objektmodell zu verwenden, um alle Aktionen in jeder Seitenklasse zu kapseln und Redundanz zu vermeiden. Wenn sowohl die Aktionen "Kreditkarte" als auch "Direktübertragung" zu einer neuen Seite navigieren, erstellen Sie ein neues Objekt der Seite gemäß dem übergebenen Argument und rufen Sie die Methode zum Ausführen der Übertragungsaktion auf. Eine einfache Seitenobjektklasse kann wie folgt erstellt werden: http://testautomationlove.blogspot.in/2016/02/page-object-design-pattern.html

Verwandte Themen