Wie kann ich meine Selenium tests weniger spröde?
Nutzen wir Selenium test der UI-Schicht unsere ASP.NET -Anwendung. Viele der Testfälle test mehr fließt, die sich über mehrere Seiten erstrecken.
Habe ich festgestellt, dass die tests sind sehr spröde, gebrochen, nicht nur durch code-änderungen, die tatsächlich ändern Sie die Seiten, sondern auch Harmlose refactorings, wie das umbenennen einer Kontrolle (da muss ich weiterleiten des Steuerelements clientID Selen Click-Methode, usw.) oder ersetzen ein gridview mit einem repeater. Als Ergebnis, ich finde mich "verschwenden" Zeit aktualisieren, string-Werte in meinem test-Fälle, um fix broken tests.
Gibt es eine Möglichkeit, mehr zu schreiben wartbar Selenium-tests? Oder eine bessere web-UI-Test-tool?
Bearbeitet, um hinzufügen:
In der Regel der erste Entwurf ist erstellt durch die Aufnahme eines Tests in der IDE. (Dieser erste Schritt kann durchgeführt werden durch die QS-Mitarbeiter.) Dann habe ich die Umgestaltung der generierte C# - code (Konstanten extrahieren, extrahieren von Methoden für die wiederholte code, vielleicht wiederholen Sie den test mit verschiedenen Daten, etc). Aber die Allgemeine Strömung der code für jeden Testfall bleibt ziemlich nahe an der ursprünglich generierten code.
- Werfen Sie einen Blick auf Coypu: Intuitiv, robust browser-Automatisierung .Net
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich gefunden habe, PageObject pattern sehr hilfreich.
http://code.google.com/p/webdriver/wiki/PageObjects
mehr info:
- Was ist der Sinn von Selen?
- Selen Kritik
vielleicht ein guter Weg, um zu starten, um schrittweise umgestalten von Testfällen.
Ich das gleiche Szenario verwenden, müssen Sie Selen + c#
Hier ist, wie mein code sieht wie folgt aus:
Eine test-Methode Aussehen wird somethink wie diese
Ein page-Objekt wird so etwas wie dieses
}
Hoffe, das hilft.
Wie erstellen Sie Ihre Selenium-tests, durch die Aufzeichnung und spielt Sie wieder? Was wir getan haben, erstellen Sie ein Objektmodell um Seiten, so dass Sie eine Methode aufrufen wie "clickSubmit()" anstatt Sie sich auf einer id (mit einer Namenskonvention für diese ids), die es ermöglicht selenium-tests, um zu überleben, viele Veränderungen.
Können Sie oder können nicht in der Lage zu schreiben tests, die belastbar sind, um ein refactoring. Hier ist, wie machen das refactoring weniger schmerzhaft: die Kontinuierliche integration ist wichtig.
Laufen Sie jeden Tag oder jeden build. Die früher behoben ist, ist das einfacher.
Gewährleisten devs können, führen Sie die tests selbst. Wieder, die es früher gesehen und behoben, wird das einfacher.
Halten selenium-tests paar. Sie sollten den Schwerpunkt auf den kritischen Pfad /pri 1-test-Szenarien. Tiefe Tests sollte getan werden, auf unit-test Ebene (oder jsunit-tests). Integration tests sind immer teuer und weniger wertvoll.
Gibt es keine harmlosen änderungen, wenn es um test-Automatisierung 😉
Verwenden wir die SAFS-framework mit Rational Robot (RRAFS) zur Minimierung der Auswirkungen auf unsere Automatisierungs-Skripte. Es gibt noch Arbeit zu pflegen, die Anwendung anzeigen, aber die Skripte bleiben stabil, für die meisten Teil. Die SAFS-framework klingt sehr ähnlich wie die Methode cynicalman erwähnt, aber bereits Pakete, die das generische Methoden, die Sie verwenden würden, in Ihre Skripte.
Den SAFS-Website sagt, es gibt teilweise Unterstützung für die Selen, so kann dies für Sie arbeiten.
Habe ich gefunden, dass die Verwendung von XPath-Ausdrücken in Selenuium-RC-fügt eine Menge, um die Robustheit von test.
Schreibe ich meine tests in einer ähnlichen Weise. Der erste Durchgang wird oft geschrieben über die IDE/Aufnahme zu bekommen, die meisten von meiner Seite-flow und klicken Sie auf operations. Einmal habe ich, ich beginnen, Durchlaufen die Tests via Selenium-RC hinzufügen von Behauptungen und ändern absoluten widget Locator-Punkte auf mehr lesbar und freundlich Xpath-Ausdrücke. (sowie Dokumentation der test! 🙂 )
Einer Sache bewusst zu sein.. wenn deine tests sind xpath-schwer ist, Sie laufen ein wenig langsamer im IE6 wegen seiner schlechten Ausführung von javascript-Fähigkeiten. (Ich habe einige test-Suiten, die dauert fast eine Stunde länger zur Ausführung unter IE als im FF. Es ist auch diese, aber nur etwas im Auge zu behalten, beim schreiben des tests.)
Selen in der Theorie eine Abstraktion genannt UI-Element (die Dokumentation ist hier).
Den Funktionen wäre
abstrakte Locator, indipendent auf der sehr html-Umsetzung; diese Karte würde gut zu dem Konzept der Komponente oder das widget, das von einem web-framework,
rollup-Regeln, so dass zum Zusammenführen mehrerer Befehle in einer einzigen abstrakter Befehl.
Habe ich gekämpft, ein paar Tage zu nutzen, diese Funktion aber am Ende habe ich beschlossen, Sie zu verlassen, aus folgenden Gründen:
Ich denke Xpath ist der beste Weg, um sicherzustellen, robuste selenium-tests.
Ich arbeite derzeit an einer Bibliothek, mit deren Hilfe das schreiben von xpath-Ausdrücken zu erleichtern.
Wenn Sie interessiert sind, können Sie check it out hier:
http://www.unit-testing.net/CurrentArticle/How-To-Write-XPath-for-Selenium-Tests.html