2016-08-05 33 views
0

Ich habe eine Seite, die ich entwickle, die aus einer Reihe von Kategorien, Unterkategorien und Links besteht. Grundsätzlich gibt es mehrere hundert Links, die in einer Hierarchie unter den Hauptkategorien aufgeführt sind. Die Hauptkategorien enthalten zwischen 1 und 4 Ebenen der Tiefe (d. H. Einige Hauptkategorien enthalten direkte Links, während andere 3 Ebenen von Unterkategorien enthalten, die zu direkten Links führen).Testen einer Reihe von Links mit Selenium & Cucumber JVM-Java

Die Seite wird mit Angular erstellt, daher wird beim Klicken auf die Unterkategorie im Wesentlichen das Modell aktualisiert, um die entsprechenden Daten zu laden, während beim Klicken auf direkte Links die URL in einem externen Fenster geöffnet wird. Es gibt einen Breadcrumb für das Hin und Her zwischen den Leveln. Wenn auf eine Kategorie geklickt wird, wird der Benutzer in eine neue Ansicht geleitet, in der alle Unterkategorien darunter angezeigt werden, einschließlich aller direkten Links auf dieser Ebene. Von hier aus kann der Benutzer eine beliebige Anzahl von Ebenen durchsehen, bis die gewünschte direkte Verbindung gefunden ist. Der Punkt ist, die Ebenen der Hierarchie sind nicht konsistent.

Dieser Teil ist nicht so wichtig, weil ich bereits eine Klasse zum Testen der Links auf allen Ebenen mit Selenium durch Schleifen durch die Ebenen entwickelt habe, um jede gefundene direkte Link-URL zu öffnen. Aber ich wollte einen Überblick geben, wie die Seite aufgebaut ist. Es ist nicht einfach eine Liste von zu testenden Links - vielmehr ist es eine mehrstufige Hierarchie, die zu Links zu externen Sites führt.

Wie bereits erwähnt, funktioniert der Selenium-Test gut. Die Java-Klasse liest die erwartete Hierarchie und URLs aus einem Excel-Arbeitsblatt, navigiert durch die Seite, bis sie einen direkten Link findet, öffnet sie und überprüft, ob die geladene Seite die erwartete URL enthält. In derselben Excel-Tabelle schreibt das Programm basierend auf dem Ergebnis des Tests einen Wert von PASS oder FAIL.

Das Problem, das ich habe, konvertiert mein vorhandenes Selenium Beispiel in Gurkenschrittdefinitionen. Das größte Problem, das ich sehe, ist die Abhängigkeit von verschachtelten Schleifen, um die Ebenen der Hierarchie aller direkten Verbindungen zu überprüfen. Ich verstehe nicht ganz, wie man in Gurken Loops benutzt. Je mehr ich darüber lese, desto mehr scheint es, dass dies nicht die richtige Anwendung der Cucumber-Funktionalität ist. Ist es falsch zu versuchen, Cucumber zu benutzen, um einen Link-Test-Runner wie diesen zu testen? Ich kann einfach nicht eine angemessene Anzahl von Features und Schrittdefinitionen zuordnen. Die Art, wie ich Cucumber bisher verstanden habe, besteht darin, dass Sie eine endliche Anzahl von Features schreiben, die den Methoden mit den @Given-, @When-, @Then-, usw. Annotationen zugeordnet werden (d. H. Jeder Testfall wird einzeln zugeordnet). Sie müssen genau die Anzahl der auszuführenden Testfälle kennen, während das Selenium-Beispiel dynamisch bestimmt, wie viele Fälle basierend auf den aus dem Excel-Blatt gelesenen Links ausgeführt werden. Mit anderen Worten, es scheint, als sei es nicht praktikabel Schreibe ein Feature für jede Linkhierarchie. Ich begann mit einfachen Funktionen wie unten, und ich habe eine Wand zu fahren, weil ich sehe nicht, wie ich Schleife durch können und diesen Schritt für jede Verbindung laufen:

Feature: Click Final Link 

Scenario: Successfully click final link 
    When User Clicks on Final Link 
    Then Load Link 

@When("^User Clicks on Final Link$") 
public void User_Clicks_on_Final_Link() throws Throwable { 
    // Express the Regexp above with the code you wish you had 
    throw new PendingException(); 
} 

Feature: Click Category 

Scenario: Successfully click category link 
    When User Clicks on Category Link 
    Then Load Subcategory Links 

@When("^User Clicks on Category Link$") 
public void User_Clicks_on_Category_Link() throws Throwable { 
    // Express the Regexp above with the code you wish you had 
    throw new PendingException(); 
} 
+0

Was genau müssen Sie testen? dass Sie keine kaputten Links (404) haben? – lauda

+0

@lauda Genau. Dass es keine 404 gibt und dass die URL der Seite, die von einem bestimmten Link (ausgewählt durch seinen XPath) geöffnet wird, die erwartete URL ist, die in der Excel-Tabelle gefunden wird. – flyntstone92

Antwort

1

ich denke, dass Gurken nicht für diese gemacht wird, sollten Sie einige Spezifikationen testen nicht, dass Die Seite ist geöffnet oder nicht. Sie möchten nicht für fast jeden fehlerhaften Link einen fehlgeschlagenen Test haben.

Einige der Optionen sind:

  1. Verwendung einige bekannte Werkzeug (auch online, wenn Sie keine Sicherheitsbeschränkungen nicht haben), die für defekte Links

  2. finden eine Bibliothek alle Ihre Website überprüft mit Gurken zu verwenden, die automatisch alle Seiten durchsuchen und nach defekten Links suchen. Diese Option können Sie in einen Schritt integrieren.

  3. Schreib-/Suche nach einem benutzerdefinierten Skript, das alle für alle Links, die Seiten und überprüft, kriecht und verwenden Sie es in Ihrem Szenario

ich denke, ist ein besserer Ansatz, ein Skript zu verwenden, um die zu kriechen und überprüfen Links, als die Links in einer Datei fest codiert zu halten.

Ich schlage vor, diese Funktionalität in einem Szenario nur für den Fall, dass Sie eine automatisierte Suite haben, zu integrieren, und für jeden Lauf möchten Sie diese Überprüfung auch durchführen.