In unserem QA-Team führen wir bei jedem Commit der Entwickler eine Reihe von automatisierten Tests durch. Da es täglich eine ganze Reihe solcher Commits gibt und kein Entwickler länger als ein paar Minuten auf eine Rückmeldung warten möchte, sind wir auf 5 Minuten Testzeit beschränkt. In diesen 5 Minuten wollen wir so viele Tests wie möglich durchführen.
Wir haben festgestellt, dass Selen-Tests für unsere Bedürfnisse am besten geeignet sind, vor allem weil sie zuverlässig sind. Wenn ein Selenium-Test einen JS-Fehler meldet, ist man zu 95 % sicher, dass es sich um einen echten Fehler handelt. (Dies ist eine äußerst wichtige Eigenschaft, wie wir aus unserer Erfahrung mit HTMLUnit gelernt haben). Die Ausführung von Selenium-Tests ist jedoch langsam und schwerfällig (wir unterhalten eine kleine CPU-Farm, damit wir viele Selenium-Server und viele Skripte asynchron ausführen können).
Kürzlich haben wir einen neuen Ansatz vorgeschlagen - verwenden Sie Selenium nur für die Orte, wo Sie es WIRKLICH brauchen: Popups, Ajax, JS im Allgemeinen, An anderen Stellen verwenden Sie einen "Textual Browser". Zum Beispiel, wenn Sie überprüfen möchten, dass der folgende Link "funktioniert":
<a href="stackoverflow.com/somewhere'> link </a>
Sie brauchen eigentlich kein Selen. Sie können eine GET-Anfrage an die Seite durchführen und dann regex/parse die Seite und xpath/. verwenden. Unterm Strich. Sie brauchen keine JS-Engine . Dies ist eindeutig ein viel leichterer und schnellerer Test.
Wir hatten viel Erfolg mit diesem Ansatz und sind auf die folgenden Links gestoßen:
<a href="stackoverflow.com/somewhere-1' onclick="foo()" > link 1 </a>
<a href="stackoverflow.com/somewhere-2' onclick="foo()" > link 2 </a>
... many more such links ...
In diesem Fall müssen Sie also nicht unbedingt ein Selenium-Skript ausführen, das jeden einzelnen Link prüft. Klicken Sie einfach auf einen von ihnen mit Selenium (so testen Sie die Funktionalität der JS-Funktion foo()
) und verwenden Sie dann den Textbrowser, um die href
s der anderen Links.
Meine Frage ist, wo sollten wir Ihrer Meinung nach die Grenze ziehen? und ich würde mich freuen, Ihre Meinungen zu hören - gibt es "Textual Browser" Tools da draußen (wir haben nicht mit WebDriver gearbeitet)?