webanwendungen automatisiert testen - pentasys.de · selenium & junit – ein perfektes tandem...
Post on 17-Sep-2018
225 Views
Preview:
TRANSCRIPT
PENTASYS-Blickpunkte
Web
anw
end
un
gen
au
tom
atis
iert
tes
ten
Webanwendungen automatisiert testenSelenium & JUnit – ein perfektes Tandem
Bei der Entwicklung von Webanwendungen muss neben der Logik im Backend die Benutzer oberfläche getestet werden. Häufig geschieht dies durch manuelle Tests. Mit Hilfe von sogenannten Capture&Replay Tools kann man diese Aufgabe automatisieren. Selenium ist eine Open SourceTestumgebung, die neben der Capture&ReplayFunktionalität ein API für unterschiedliche Program miersprachen wie Java, C# und Ruby bereitstellt. Somit lassen sich Tests für Webanwendungen auch programmieren. Nutzt man darüber hinaus ein UnittestFramework wie JUnit unter Java, ergibt dies eine mächtige Kombination für die Testautomatisierung.
Selenium ist ein System zum Test von Webseiten und anwendungen. Die Entwicklung begann im Jahr 2004 bei der Firma ThoughtWorks. Ein Mitarbeiter entwickelte ein Sys tem für den automatischen Test der internen Zeiterfassung. Schnell ver brei tete es sich innerhalb der Fir ma und bald wurde entschieden, Se le ni um unter OpenSourceLizenz auch außerhalb von ThoughtWorks be reit zustellen. Seitdem wird es von der Community weiterentwickelt.
Selenium ist plattformunabhängig und läuft unter Win dows, Unix/Linux uns MacOS. Es besteht aus einer Reihe von Komponenten, mit denen es möglich ist, beliebig komplexe Tests von Webanwendungen zu auto matisieren. Die Komponenten sind:
Selenium WebDriver
Selenium WebDriver stellt die Schnittstelle zu den verschiedenen Browsern dar. Selenium WebDriver nimmt Befehle entgegen und schickt diese an den Browser. Umgesetzt ist dies durch den browser spezifischen
Treiber, welcher die Befehle an den Brow ser schickt und die Ergebnisse emp fängt. Die meisten Browsertreiber starten die Browseranwendung und greifen auf die laufende Instanz zu (z. B. Firefox und Internet Explorer).
Abbildung 1: Selenium Remote Control (Quelle: www.seleniumhq.org)
2 PENTASYSBlickpunkte
Mit WebDriver werden bei der Test durchführung die jeweiligen Brow ser quasi „ferngesteuert“, was eine Automatisierung erst möglich macht.
Selenium Remote Control
Selenium Remote Control ist ein Ser ver, der Befehle von den Testprogrammen entgegennimmt, diese aus führt und die Testergebnisse zu rück liefert. Dabei werden unterschiedliche Programmiersprachen un ter stützt. Die Abbildung 1 stellt die Funktionsweise dar.
In Selenium 2 wurde Remote Control von WebDriver abgelöst, wird aber weiterhin unterstützt, da noch nicht alle Features in Selenium 2 verfügbar sind.
Selenium Grid
Mit Selenium Grid lässt sich ein Server cluster aufbauen, das es er möglicht, bei Tests Webbrowserinstanzen auf anderen, entfernten Rech nern zu nutzen. In diesem Clus ter agiert ein Server als Hub. Tests rufen die verschiedenen Browserinstanzen über diesen Hub auf. Dieser hat eine Liste von Servern, die den Zugriff auf die BrowserIn stan zen (WebDriver nodes) er mög lichen und lässt die Tests die se In stan zen nutzen.
Selenium Grid ermöglicht den parallelen Test auf mehreren, verteilten Rechnern gleichzeitig. Darüber hinaus kann man somit verschiedene Browserversionen und konfigurationen zentral verwalten und muss dies nicht an jedem Einzeltest festhalten.
Selenium IDE
Die Selenium IDE ist eine komplette Entwicklungsumgebung für Selenium. Sie wurde als PlugIn für den Fire foxBrowser realisiert. Mit ihrer Hilfe ist es möglich, Tests aufzuzeichnen, zu bearbeiten, zu debuggen und natürlich ablaufen zu las sen. Wie in anderen Testsystemen auch lassen sich einzelne Testfälle zu Testsuiten zusammenfassen.
Die Testfälle bestehen da bei aus einer Abfolge von ein zel nen Kommandos, die zu sam men ein Testskript er ge ben. Die Kommandos wer den auch als „Selenese“ be zeich net.
Abbildung 2: Selenium IDE.
PENTASYSBlickpunkte 3
JUnit
Zu JUnit braucht man eigentlich gar nichts mehr sagen, ist es doch mittlerweile das StateoftheArt UnitTestframework in der JavaEntwicklung. Mit JUnit lassen sich speziell kleine Softwareeinheiten – Units – testen. Diese UnitTests werden ebenfalls in Java programmiert und lassen sich damit automatisiert durchführen, zum Beispiel im BuildProzess oder im Kontext Continuous Integration. Mehrere einzelne Unittests lassen sich zu Test suiten zusammenfassen. Vorgehensmodelle wie die testgetriebene Ent wicklung (Test driven development, TDD) sind durch UnitTestframeworks erst richtig effizient einsetzbar.
Zusammen sind sie stark
Mit der Kombination aus Selenium und JUnit erhält man ein flexibles, leistungsfähiges Testsystem für den automatisierten Oberflächentest von Webanwendungen. Die Selenium IDE macht die Arbeit dafür sehr leicht. Sie bietet eine Exportfunktionalität ins JUnitFormat an. Das Ergebnis des Exports ist der aufgezeichnete Testfall als JUnit TestCase.
Das Vorgehen ist denkbar einfach: Mit Hilfe der Selenium IDE werden die Testfälle aufgezeichnet und ggf. gespeichert. Nun werden die Testfälle mittels der Exportfunktionalität in das JUnitFormat exportiert – es wird also eine JavaKlas se erzeugt. Diese kann man nun in seiner JavaIDE öffnen und weiterbearbeiten. Parametrisierung, Schleifen, Alerts, Logging – al le Mög lichkeiten von Java im Allge mei nen und JUnit im Speziel len ste hen einem offen.
Für den Export aus der Seleni um IDE nach Java lassen sich verschieden Optionen und Templates hinter legen. Somit kann man den Export an seine Bedürfnisse an pas sen und Standard aufgaben wie das Initialisieren von externen Res sour cen mit einbinden.
Abbildung 3: Export aus der Selenium IDE Abbildung 4: Selenium IDE Optionen für den JUnit Export
Web
anw
end
un
gen
au
tom
atis
iert
tes
ten
PENTASYS AGRüdesheimer Straße 980686 MünchenTel.: + 49 89 5 79 52 0
PENTASYS AG, Geschäftsstelle FrankfurtSolmsstraße 4160486 Frankfurt am MainTel.: + 49 69 70 79 83 9 0
PENTASYS AG, Geschäftsstelle KölnDülkenstraße 951143 KölnTel.: + 49 22 03 93 54 87 6
PENTASYS SAS, Geschäftsstelle Paris1, Passage du Génie75012 ParisTel.: + 33 (0)1 76 36 02 90
redaktion@blickpunkte.dewww.pentasys.dewww.pentasys.frwww.pentasys.co.uk
© 2013 P
EN
TAS
YS
AG
. Stand Juni 2013
Die Blickpunkte sind ein kostenloser Newsletter der PENTASYS AG.
Die ISO9001/2008 zertifizierte PENTASYS AG gehört zu den am schnellsten wach sen den deutschen ITSystemintegratoren. 1995 gegründet, beschäftigt das Un ter nehmen heute 350 ITProfessionals. Die Unternehmensstrategie ist auf kom pro misslose Qualität und strikte Orientierung am Mehrwert für die Kunden aus ge rich tet. Hochqualifizierte und überdurchschnittlich motivierte Mitarbeiter so wie ein bewährtes Projektvorgehensmodell schaffen die Voraussetzungen hierfür. Zum Leistungsspektrum gehören Consulting, Projektmanagement, Mach barkeits analyse, Architekturkonzeption, Realisierung und Test von ITSystemen aus einer Hand.
Sämtliche Inhalte des Newsletters, auch Konzepte und Design, sind urheber rechtlich geschützt. Das Copyright/Urheberrecht liegt bei der PENTASYS AG.
Testsuiten
Die einzelnen Testfälle kann man wie in JUnit gewohnt zu Testsuiten zusammenfassen und somit komplexe Szenarien abbilden. Durch die Verwendung von JUnit lassen sich Webtests beispielsweise auch in Continuous IntegrationSysteme einbinden. Damit lassen sich kontinuierliche Oberflächentests automatisch durchführen. Da Selenium ein API für verschiedene Programmiersprachen anbietet, funktioniert das hier vorgestellte Vorgehen auch mit C# und NUnit, Ruby und Test::Unit bzw. RSpec sowie Python und unittest.
Abbildung 5: Aus Selenium exportierter JUnit Testcase
@Before
public void setUp() throws Exception {
driver = new FirefoxDriver();
baseUrl = „http://www.google.de/“;
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
}
@Test
public void testSelenium() throws Exception {
driver.get(baseUrl + „/“);
driver.findElement(By.id(„gbqfq“)).clear();
driver.findElement(By.id(„gbqfq“)).sendKeys(„selenium“);
driver.findElement(By.id(„gbqfb“)).click();
driver.findElement(By.linkText(„Selenium - Web Browser Automation“)).click();
}
@After
public void tearDown() throws Exception {
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!““.equals(verificationErrorString)) {
fail(verificationErrorString);
}
}
Über den Autor
Manfred Schlaucher ist als Projektleiter für PENTASYS tätig. Seine fachlichen Schwerpunkte liegen bei Architektur, Projektvorgehen und Projektmanagement. Als Certified Scrum Master und PMP ist er sowohl in klassischen, als auch agilen Projekten zuhause.
top related