WatiN oder Selen? [geschlossen]

148

Ich werde bald damit beginnen, einige automatisierte Tests unserer Präsentation zu codieren. Es scheint, dass jeder WatiN und Selen empfiehlt . Welche bevorzugen Sie zum automatisierten Testen von ASP.NET-Webformularen? Welches dieser Produkte funktioniert besser für Sie?

Als Randnotiz habe ich festgestellt, dass WatiN 2.0 seit März 2008 in CTP ist. Ist das etwas, worüber man sich Sorgen machen muss?

DavGarcia
quelle
30
Ich denke nicht, dass diese Frage geschlossen werden sollte. Es ist nützlich für mich und andere Entwickler (siehe Upvotes). Diese Frage ist einer der Gründe, warum ich Stackoverflow brauche. Ich wünschte, ich könnte die Entscheidungen des Administrators ablehnen.
Maxim Eliseev
7
Ich frage mich, warum diese Frage geschlossen wurde. Es ist sehr konstruktiv. Ich studiere beide und würde gerne ihre Unterschiede kennen
marcelo-ferraz
14
Nicht konstruktiv ??? ... diese Seite wird von Idioten mit zu viel Kontrolle überrannt.
Ronald McDonald

Antworten:

108

Ich möchte nur sagen, dass ich derzeit hart an einer Beta-Version von WatiN 2.0 im ersten Quartal 2009 arbeite. Es wird ein bedeutendes Upgrade auf die aktuellen CTP 2.0-Versionen sein und Ihnen im Grunde die gleiche Funktionalität zur Automatisierung von FireFox und IE bieten wie Version 1.3.0 bietet zur Automatisierung des IE.

Also keine Bedenken.

Ich hoffe, dies hilft Ihnen bei Ihrer Wahl. Jeroen van Menen Lead Dev WatiN

Jeroen van Menen
quelle
23
@jcollum Sorry, aber ich bin nicht einverstanden, eine -1 zu geben. Jeroen antwortete nur auf die zweite Frage "Als Randnotiz ...". Und wer wäre besser dafür qualifiziert, wenn nicht der Hauptentwickler des Produkts. Nur diese Antwort als beste Antwort zu markieren, kann fraglich sein.
Henry99
1
@ Henry99 wäre als Kommentar unter der Frage oder als separate Frage besser geeignet gewesen. Die Kernfrage hier ist "A oder B". Der Autor von A oder B sollte auf solche Fragen nicht antworten, da es ziemlich offensichtlich ist, dass sie voreingenommen sind.
JCollum
3
@jcollum Jeroen erwähnte weder die Qualität seines Produkts gegenüber Selen noch etwas, was als voreingenommen in die eine oder andere Richtung angesehen werden könnte. Vielleicht haben Sie den zweiten Teil der Frage nicht gelesen, aber der Hauptentwickler des Projekts ist ohne Frage die absolut qualifizierteste Person, um diese Frage zu beantworten.
Grinn
2
@Grinn: Ich habe das in meinem Kommentar über deinem angesprochen, hast du es gelesen? Er beantwortet nicht die Hauptfrage (Watin oder Selen), sondern spricht etwas an, das vollständig in einer separaten Frage hätte stehen sollen.
JCollum
Schöne Antwort ...
Mohsin Awan
58

Wenn Sie ernsthaft langfristig in ein Framework investieren möchten, das von der Community weiter verbessert und unterstützt wird, ist Selen wahrscheinlich die beste Wahl. Zum Beispiel bin ich gerade auf diese Information in Matt Raibles Blog gestoßen:

Ab Freitag hat Google über 50 Teams, die täglich über 51.000 Tests auf der internen Selenium Farm durchführen. 96% dieser Tests werden von Selenium RC und den Farmmaschinen korrekt durchgeführt. Die anderen 4% sind teilweise auf RC-Fehler zurückzuführen, teilweise auf Testfehler, aber die Ursache zu isolieren kann schwierig sein. Selen wurde als Haupttechnologie für Funktionstests von Webanwendungen in Google übernommen. Das sind die guten Nachrichten.

Ich habe kürzlich auch eines der Selenium-Meetups besucht und erfahren, dass Google ernsthafte Ressourcen in die Verbesserung von Selenium und dessen Integration in WebDriver investiert, ein von Simon Stewart entwickeltes automatisiertes Testtool. Einer der Hauptvorteile von WebDriver besteht darin, dass es den Browser selbst steuert und nicht als Javascript-Anwendung im Browser ausgeführt wird. Dies bedeutet, dass große Stolpersteine ​​wie das Problem "gleichen Ursprungs" kein Problem mehr darstellen.

Mark Erdmann
quelle
1
Selen scheint im Moment ein ausgereifteres Projekt zu sein, und die Tatsache, dass Google es verwendet, ist eine ziemlich solide Empfehlung (auch ich habe Watin ausprobiert und hatte Probleme - habe aber nie Selen ausprobiert)
Piotr Owsiak
37

Wir haben beide getestet und uns für WaTiN entschieden. Wie andere bereits betont haben, hat Selen einige nette Funktionen, die in WaTiN nicht zu finden sind, aber wir hatten Probleme, Selenium zum Laufen zu bringen, und als wir dies taten, war es beim Ausführen von Tests definitiv langsamer als bei WaTiN. Wenn ich mich richtig erinnere, sind die Setup-Probleme, auf die wir gestoßen sind, darauf zurückzuführen, dass Selenium über eine separate App verfügt, mit der der eigentliche Browser gesteuert werden kann, in dem WaTiN alles in Bearbeitung hat.

Cole
quelle
4
+1 für Leistungshinweise und reale Verwendung.
Jeremy McGee
Ich habe die gleichen Probleme festgestellt: # 1 Die Leistung ist nicht so gut und # 1 Die Tests werden auf einem Java-Server ausgeführt (der in [TestSetup] eingerichtet werden muss).
Peter Gfader
18
Dies ist kein Problem mehr - Selenium 2.0 wird mit einer WebDriver-Bibliothek geliefert, die die direkte Steuerung des Browsers ermöglicht, nicht nur über einen Java-Server.
Igor Brejc
2
Ich habe Selen nicht ausprobiert, aber ich hatte Probleme mit Watin. Ich hatte plötzlich ohne ersichtlichen Grund einen Teststopp und ich hatte zufällig COM-Fehler (zumindest konnte ich kein Muster finden).
Piotr Owsiak
30

Ich habe sie beide ausprobiert und hier sind meine ersten Gedanken ...


WatiN

Die gute

  • Schnelle Ausführung.
  • Skripterstellungstools sind unabhängige Projekte. Ich kenne zwei: Wax (Excel-basiert, auf CodePlex gehostet) und WatiN Test Record (auf SourceForge gehostet). Keiner ist so robust wie Selenium IDE.
  • Sehr gute IE-Unterstützung. Kann an laufende Instanzen anhängen und von diesen trennen. Kann auf native Fensterhandles usw. zugreifen (siehe Skriptbeispiel unten).
  • NuGet-Paket, einfach in .NET- und Visual Studio-Umgebungen auszuführen und auf dem neuesten Stand zu halten.

Das Schlechte

  • Wenn Sie WatiN (watin xyz) googeln, empfiehlt Google häufig stattdessen "watir xyz". Nicht so viel Dokumentation da draußen.
  • Was wenig da ist (Dokumentation), ist verwirrend; Beispiel: Auf den ersten Blick scheint es keine native Unterstützung für CSS-Selektoren zu geben. Zumal es Erweiterungsbibliotheken wie 'WatiNCssSelectorExtensions' und viele Blog-Artikel über alternative Techniken gibt (wie das Einfügen von jQuery / sizzle in die Seite). Zu Stack Overflow habe ich einen Kommentar von Jeroen van Menen gefunden, der darauf hinweist, dass es native Unterstützung gibt. Zumindest verbringt der Lead-Entwickler Zeit mit Stack Overflow :)
  • Keine native XPath-Unterstützung.
  • Keine sofort einsatzbereite Remote-Ausführung / Grid-basierte Ausführung.

Skriptbeispiel (C #). Mit Selen kann man das nicht machen (zumindest nicht, dass ich es weiß):

class IEManager
{
    IE _ie = null;
    object _lock = new object();

    IE GetInstance(string UrlFragment)
    {
        lock (_lock)
        {
            if (_ie == null)
            {
                var instances = new IECollection(true);  //Find all existing IE instances
                var match = instances.FirstOrDefault(ie=>ie.Url.Contains(UrlFragment));
                _ie = match ?? new IE();
                if (match==null)  //we created a new instance, so we should clean it up when done!
                    _ie.AutoClose = true;
            }
        }

        return _ie;
    }
}

Selen

  • Langsamer als WatiN (zumal ein neuer Prozess erstellt werden muss).
  • Integrierte CSS-Selektoren / XPath-Unterstützung.
  • Selenium IDE ist gut (kann nicht großartig sagen, aber es ist das beste in der Klasse!).
  • Fühlt sich mehr Java-ish als .NET-ish an ... aber wirklich, es ist programmiersprachenunabhängig; Alle Befehle werden an einen außer Betrieb befindlichen 'Treiber' gesendet. Der Treiber ist wirklich ein 'Host'-Prozess für die Browser-Instanz. Die gesamte Kommunikation muss über Prozessgrenzen hinweg ein- und ausgehen, was die Geschwindigkeitsprobleme in Bezug auf WatiN erklären kann.
  • Entkoppelte Prozesse - "Treiber" und "Steuerung" bedeuten mehr Robustheit, mehr Komplexität usw., aber auch einfacher zu erstellende Raster / verteilte Testumgebungen. Hätte es wirklich gefallen, wenn der "Verteilungs" -Mechanismus (dh die Kommunikation zwischen Driver & Control) über WebSphere oder einen anderen vorhandenen, robusten Nachrichtenwarteschlangenmanager erfolgt wäre.
  • Unterstützt Chrome und andere Browser sofort.

Trotz allem bin ich am Ende mit WatiN gegangen; Ich beabsichtige hauptsächlich, kleine Screen-Scraping-Anwendungen zu schreiben und möchte LINQPad für die Entwicklung verwenden. Das Anhängen an eine Remote-IE-Instanz (eine, die ich nicht selbst erstellt habe) ist ein großes Plus. Ich kann in einer vorhandenen Instanz herumfummeln ... dann ein bisschen Skript ausführen ... dann wieder herumfummeln usw. Dies ist mit Selenium schwieriger zu tun, obwohl ich annehme, dass "Pausen" in das Skript eingebettet werden könnten, währenddessen ich könnte direkt mit dem Browser fummeln.

Grynn
quelle
2
Danke für den detaillierten Vergleich.
Sam
18

Der größte Unterschied besteht darin, dass Selenium verschiedene Browser unterstützt (nicht nur IE oder FF, siehe http://seleniumhq.org/about/platforms.html#browsers) .

Außerdem verfügt Selenium über einen Fernbedienungsserver ( http://seleniumhq.org/projects/remote-control/ ). Dies bedeutet, dass Sie den Browser nicht auf demselben Computer ausführen müssen, auf dem der Testcode ausgeführt wird. Sie können daher Ihre Web-App testen. auf verschiedenen Betriebssystemplattformen.

Im Allgemeinen würde ich die Verwendung von Selen empfehlen. Ich habe WatiN vor einigen Jahren verwendet, war aber mit seiner Stabilität nicht zufrieden (es hat sich wahrscheinlich inzwischen verbessert). Das größte Plus für Selen ist für mich die Tatsache, dass Sie die Web-App testen können. in verschiedenen Browsern.

Igor Brejc
quelle
3
Selenium unterstützt verschiedene Browser - Besonders wichtig, da wir jetzt Chrome, Safari, FF und IE 6, 7 und 8 unterstützen müssen.
Tony Ennis
17

Weder. Verwenden Sie Coypu. Es wickelt Selen ein. Viel haltbarer. https://github.com/featurist/coypu

Update Ye Oliver du hast recht. Ok, warum ist es besser? Persönlich habe ich festgestellt, dass der Selenium-Treiber für IE besonders fragil ist - es gibt eine Reihe von "Standard" -Treiberausnahmen, die ich beim Fahren von Selenium für Unit-Tests auf Ajax-Websites erneut gefunden habe.

Habe ich erwähnt, dass ich meine Skripte als Testprojekt in c # schreiben möchte? Ja Abnahmetests innerhalb einer kontinuierlichen Build-Bereitstellung.

Nun, Coypu kümmert sich um das Obige. Es ist eine Hülle für Selen, die Testvorrichtungen wie z.

browser.Visit("file:///C:/users/adiel/localstuff.htm")
browser.Select("toyota").From("make");
browser.ClickButton("Search");

... wodurch ein (konfigurierbarer) Browser hochgefahren und das Skript ausgeführt wird. Es funktioniert hervorragend mit Bereichen mit Gültigkeitsbereich und ist SEHR erweiterbar.

Es gibt weitere Beispiele bei GitHub und wie Olvier weiter unten erwähnt, ist Adrians Video ausgezeichnet. Ich denke, es ist der beste Weg, um browserbasierte Tests in der .Net-Welt durchzuführen und versucht, dem Ruby-Namensvetter zu folgencapybara

penderi
quelle
Diese Antwort erfordert VIEL MEHR AUFMERKSAMKEIT: Coypu ist das fehlende Bindeglied zwischen IHNEN und automatisierten Browsertests! Tolle! Schau es dir jetzt an! Wenn Sie jemals mit Selen (oder vielleicht WatiN) zu kämpfen haben und versuchen, AJAX oder Elemente richtig zu finden - Coypu ist die Antwort auf Ihre Gebete ;-)
Oliver
Danke, @penderi, für das Hinzufügen weiterer Details :-)
Oliver
12

Ich habe beide benutzt, beide scheinen in Ordnung zu funktionieren. Mein Nicken ist für Selenium, da es eine bessere Ajax-Unterstützung zu haben schien. Ich glaube, WaTiN ist gereift, seit ich es das letzte Mal benutzt habe, also sollte es das gleiche haben.

Das Größte wäre, in welcher Entwicklungsumgebung Sie sich gerne befinden? Selenium und Watin haben Rekorder, aber Selenium ist im Browser und watin ist im Visual Studio. + und -'s zu beiden.

rball
quelle
6

Bis jetzt sind wir ein reiner Microsoft Shop für die Bereitstellung von Lösungen für das Unternehmen und haben uns für WatiN entschieden. Dies kann sich in Zukunft ändern.

Als neuere Quelle:

Microsoft druckte im MSDN Magazine 12/2010 einen BDD-Primer mit der Kombination von SpecFlow mit WatiN (coole BDD-Behaviour Driven Development). Sein Autor Brandon Satrom (msft Developer Evangelist) hat im Dezember 2010 auch einen Video-Webcast veröffentlicht, der seine obigen Ergebnisse 1: 1 ausführlich lehrt.

Ab 04/2011 gibt es ein Whitepaper zur Unterstützung von ATDD / BDD mit SpecLog, SpecFlow und Team Foundation Server (Akzeptanztestgesteuerte Entwicklung / Verhaltensgesteuerte Entwicklung) von Christian Hassa , dessen Team SpecFlow erstellt hat.

Henry99
quelle
5

Ich benutze Watin, aber kein Selen. Ich kann sagen, dass ich mit Watin schnell einsatzbereit war und nur wenige bis gar keine Probleme hatte. Ich kann mir nichts vorstellen, was ich tun wollte, was ich damit nicht herausfinden konnte. HTH

JasonS
quelle
4

Ich verwende im Allgemeinen Selenium, hauptsächlich, weil mir das Selenium IDE-Plugin für FireFox zum Aufzeichnen von Startpunkten für meine Tests gefällt.

Steven Robbins
quelle
Wissen Sie, welche Version von FF unterstützt wird? Ich habe die IDE mit FF6 und FF5 ohne Liebe ausprobiert. Ich habe keine Unterstützung für 6 erwartet, aber für 5 war ich überrascht.
MikeJ
4

Ich empfehle WebAii, da ich damit Erfolg hatte und bei der Verwendung nur wenige Griffe vorhanden waren. Ich habe Selen nie ausprobiert und ich erinnere mich nicht, dass ich WaTiN viel benutzt habe, zumindest nicht bis zu dem Punkt, an dem ich es erfolgreich zum Laufen bringen könnte. Ich kenne kein Framework, das Windows-Dialoge ordnungsgemäß behandelt, obwohl WebAii über eine Schnittstelle zum Implementieren eigener Dialoghandler verfügt.

Mark Cidade
quelle
Ich möchte +1 geben, um eine dritte Alternative aufzurufen, aber dann sage ich -1, weil ich keine Erfahrungen mit dem Produkt gemacht habe und wie es mit den anderen beiden verglichen wird.
Jeff Martin
Windows-Dialoge = js Warnfelder? Wenn ja, hat Selen Unterstützung dafür. Ich habe es nie getestet, da ich diese Warnboxen als unangenehm empfinde.
JCollum
4

Ich überlegte, ob ich beides verwenden sollte. Ich habe den Rekorder für Selen verwendet, um einige Tests in FF zu erstellen. Ich habe versucht, dasselbe in Watin zu tun, und festgestellt, dass der Watin-Rekorder (2.0.9.1228) für unsere Websites völlig wertlos ist . Es schien, als würde die Site in IE6 gerendert, wodurch unsere Site für die Aufzeichnung praktisch unbrauchbar wurde. IE6 wird nicht unterstützt. Ich konnte keine Möglichkeit finden, den verwendeten Browser zu ändern. Ich habe da draußen nur einen Watin Recorder gefunden. Wenn es mehr als eine gibt oder eine, die auf dem neuesten Stand gehalten wird, kommentieren Sie bitte.

Die Selenium Recorder IDE für Firefox ist einfach zu verwenden und portiert Tests nach C #. Das ist nicht so toll. Ich konnte Portierungs-Testsuiten nicht zum Laufen bringen, obwohl ich ein oder zwei Blog-Posts gelesen hatte, die Problemumgehungen hatten. Es gibt also ein bisschen Manipulation des generierten Codes. Trotzdem funktioniert es zu 90% und das ist besser als die Alternative.

Für mein Geld / meine Zeit ist Selen nur deshalb überlegen, weil es einfach ist, neue Tests zu erstellen . IE hat keine guten Entwickler-Symbolleisten, die annähernd so gut sind wie Firebug , daher mache ich meine Entwicklung zunächst in Firefox. Ein gut funktionierender Rekorder in Firefox ist also ein großer Bonus.

Mein Fazit hier war dem Demokratie-Zitat von Churchill sehr ähnlich: Selen ist die schlechteste Form automatisierter UI-Tests. Bis auf alle anderen.

jcollum
quelle
Da das QA-Team mit dem FF-Plugin 'manuelle' Tests erstellen und die Entwickler die generierten C # -Tests portieren konnten, war unsere Infrastruktur für Selenium ziemlich einfach. WaitIn sieht fair genug aus - aber der „sorgfältige“ Prozess der Erstellung von Tests (gemäß dem Video auf der WaitIn-Projektseite) war für unseren Kunden in diesem Fall keine Option.
sonstabo
@sonstabo: das ist die Richtung, in die ich hoffe zu gehen. Eines Tages, wenn wir eine QS-Abteilung haben: pupydogeyes:
jcollum
3

Auf die Gefahr einer Tangente würde ich Axe / WatiN empfehlen. Mit Ax können Tests von 'manuellen' Testern in Excel geschrieben werden, ohne die zugrunde liegende Testsprache zu kennen. Es braucht einen 'Techniker', um die maßgeschneiderten Aktionen zu schreiben (IE. Heute musste ich eine etwas komplexe Tabellensuche und Querverweise durchführen), aber sobald sie geschrieben sind, können die Aktionen in Tests von Nicht-Technikern verwendet werden.

Ich habe auch gehört, dass das UK Government Gateway-Projekt (von dem ich glaube, dass es automatisierte 6K + -Tests gibt) kürzlich alle Tests innerhalb einer Woche von Axe / Winrunner nach Axe / Watin portiert hat !! Und viele der Tests sind ziemlich komplex - ich weiß, als ich vor ein paar Jahren daran gearbeitet habe ...

Ich betrachte Selenium im Moment, da ein potenzieller Kunde es nutzt. Aber ich schlage vor, Axe als eine Schicht über dem 'Arbeitspferd'-Werkzeug anzusehen.

Mat W.
quelle
3

Wenn Sie auf Iframes, modale Dialoge und domänenübergreifende Iframes zugreifen müssen, ist WatiN ein guter Weg. Selenium konnte nicht mit den Iframes umgehen, die Ausnahmen für das Befehlszeitlimit auslösten. WatiN Sie könnten viel mehr tun, insbesondere wenn die Website IE-spezifische Dinge wie ShowModalDialog usw. verwendet. WatiN handhabt alle sehr gut. Ich könnte sogar domänenübergreifenden Iframe-Zugriff durchführen.

kesavkolla
quelle
-1

Sie müssen beides tun, wenn Sie IE- und FF-Tests durchführen müssen, aber sie funktionieren nur so gut für Präsentationstests. Sie können nicht erkennen, ob ein Element leicht abweicht, nur dass die Elemente vorhanden sind. Ich kenne nichts, was das menschliche Auge für UI- / Präsentationstests ersetzen könnte, obwohl Sie ein paar Dinge tun könnten, um dies zu unterstützen (machen Sie bei jedem Schritt Screenshots der Seiten, damit Benutzer sie überprüfen können).

StingyJack
quelle
"Sie müssen beides tun, wenn Sie IE- und FF-Tests durchführen müssen" - kann Selenium nicht beides tun?
Marcumka
1
Selen rc kann
zB
Sie können nur in FF aufnehmen, aber Sie können den RC verwenden, um sowohl IE als auch FF (und wahrscheinlich auch andere) zu steuern
Jeff Martin
Nicht "wahrscheinlich": seleniumhq.org/about/platforms.html#browsers .
Igor Brejc