© 2015 Haeger Consulting Ralf Haeger
Webseiten mitSelenium testen
16.11.2015 Andreas Monschau Webmontag Bonn #wmbn
1
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Andreas Monschau Berater bei Haeger Consulting
Java-Softwareentwicklung
Testmanagement (ISTQB) Testautomatisierung -> Selenium!
2
@andreasmonschau
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Selenium
„Selenium automates Browsers“[1]
3
[a1]
[a2] [a3] [a4]
Selenium WebDriver (& Selenium Grid)
Selenium IDE
Apache License, Version 2.0
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Umfeld
4
(Software)Test
Automatisierter Test
Automatisierter Test vonWeboberflächen
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Softwaretest
5
Softwaretest umfasst zwei Aspekte:
Fehlerfindung: Finde möglichst viele Fehler, bevor der Kunde sie findet Qualitätsnachweis: Weise nach, dass sich die Software konform zu den Anforderungen verhält.
[2]
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Softwaretest
6
Oder: Vergleiche erwartete mit tatsächlichen Ergebnissen
Erwartet: Irgendwas wird gespeichert
Nicht erwartet: Programm stürzt ab
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Automatisierte Testdurchführung
7
(Testautomatisierung ist) Die Verwendung einer Software (…) um die Ausführung von Tests zu steuern, tatsächliche mit erwarteten Ergebnissen zu vergleichen, die definierten Vorbedingungen herzustellen sowie weitere Testüberwachungs- und Berichtsfunktionen durchzuführen.
[3]
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Anforderungen
8
Anforderung an Testautomatisierung
Einfach
Erweiter-bar
Wieder-verwendbar (Regression)
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Anforderungen
9
Anforderung an automatisierten Test von Weboberflächen
Einfach
Erweiter-bar
Wieder-verwendbar (Regression)
Unterstützung verschiedener Umgebungen
Unterstützung ansynchronen Verhaltens des
Testobjekts [4]
„Selenium automates Browsers“[1]
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Was macht nun Selenium?
10
[a2] [a3] [a4]
Selenium WebDriver Selenium IDE
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Was macht nun Selenium?
11
[a2] [a3] [a4]
Selenium WebDriver Selenium IDE
Webseiten testen!
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Testobjekt
Testobjekt - https://github.com/vaadin/addressbook
12
[a5]
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Testobjekt
Testobjekt - https://github.com/vaadin/addressbook
13
[a5]
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Testobjekt
Testobjekt - https://github.com/vaadin/addressbook
Prinzipielle Probleme?
14
[a5]
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Selenium
Prinzipielle Problematik:
• Ein Webelement, mit dem interagiert werden soll, muss eindeutig identifizierbar sein
• Wie gehen wir mit dem asynchronen Verhalten des Testobjekts um?
15
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Selenium
Prinzipielle Problematik:
• Ein Webelement, mit dem interagiert werden soll, muss eindeutig identifizierbar sein
16
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Selenium
Identifizierung von Webelementen
17
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Was macht nun Selenium?
18
[a2] [a3] [a4]
Selenium WebDriver Selenium IDE
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Selenium WebDriver
Selenium WebDriver
19
Leichte Erlernbarkeit.
Verfügbar für verschiedene
Sprachen
Unterstützung gängiger Browser
[4]
[a2]
Eigenständige Browserinstanzen
1+1=?
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Selenium WebDriver - Workflow
20
Beispiel für einen automatisiertenSelenium WebDriver-Test
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Testobjekt
Testobjekt - https://github.com/vaadin/addressbook
21
[a5]
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Selenium WebDriver
22
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Selenium WebDriver
23
WebDriver driver;
driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Selenium WebDriver
24
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Selenium WebDriver
25
driver.get("http://localhost:8080");
Assert.assertEquals("Addressbook", driver.getTitle());
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Selenium WebDriver
26
1, 2, 3, 4, 5 OK!
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Selenium WebDriver
27
1, 2, 3, 4, 5 OK!
count = driver.findElements( By.xpath(„//div[@id=‚addressTable‘]//table[1]//tbody/tr")) .size();
Assert.assertEquals(5, count);
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Selenium WebDriver
28
1, 2, 3, 4, 5 OK!
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Selenium WebDriver
29
1, 2, 3, 4, 5 OK!
driver.findElement(By.id("newContact")).click();
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Selenium WebDriver
30
1, 2, 3, 4, 5 OK!
driver.findElement(By.id("firstName")).sendKeys("Andreas"); driver.findElement(By.id("lastName")).sendKeys("Monschau");
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Selenium WebDriver
31
1, 2, 3, 4, 5 OK!
1, 2, 3, 4, 5, 6 OK!
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Selenium WebDriver
32
1, 2, 3, 4, 5 OK!
1, 2, 3, 4, 5, 6 OK!
count = driver.findElements( By.xpath(„//div[@id=‚addressTable‘]//table[1]//tbody/tr")) .size();
Assert.assertEquals(6, count);
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Selenium WebDriver - Source
33
https://bitbucket.org/amonschau/seleniumexample
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Selenium WebDriver - DEMO
DEMO
34
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Was macht nun Selenium?
35
[a2] [a3] [a4]
Selenium WebDriver Selenium IDE
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Selenium IDE
• Einfaches und schnelles Capture & Replay
• Ermöglicht Debugging • Mögliche Anwendungsfälle:
• Reproduktion von Fehlerwirkungen
• Prototyping von Testfällen, die später mit Selenium WebDriver umgesetzt werden
36
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Selenium IDE - DEMO
DEMO
37
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Selenium - Fazit
Selenium WebDriver ist • leicht erlernbar • vielseitig einsetzbar • bietet schnell Ergebnisse • Einarbeitungszeit: ca. 4-5 PT • https://bitbucket.org/amonschau/seleniumexample Selenium IDE ist • geeignet, um Verhalten schnell Reproduzierbar zu machen • im Vergleich zu Selenium WebDriver eingeschränkt • Einarbeitungszeit: ca. 1-1,5 PT
38
[a2] [a3] [a4]
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
[email protected] [email protected] www.haeger-consulting.de https://bitbucket.org/amonschau/ https://speakerdeck.com/andreasmonschau Twitter: @andreasmonschau Xing: Andreas Monschau
39
Vielen Dank!
16.11.2015Haeger Consulting • Nachtigallenweg 1 • 53343 Wachtberg Andreas Monschau - IT Consultant
wmbn_selenium_monschau.
Backup: Quellen[1]http://docs.seleniumhq.org/ [2]“Systematisches Testen von Software - Ein Einstieg“, Spillner, 2008, d.punkt-Verlag [3]http://glossar.german-testing-board.info/ [4]„Automatisiertes Testen von Weboberflächen“, A. Monschau, Java Magazin 11.2015, S&S Media
[a1]http://docs.seleniumhq.org/images/big-logo.png [a2]http://docs.seleniumhq.org/images/selenium-logo.png [a3]http://docs.seleniumhq.org/images/selenium-grid-logo.png [a4]http://docs.seleniumhq.org/images/selenium-ide-logo.png [a5]https://vaadin.com/documents/10187/10609024/logo500/f2860b46-ab5b-4261-87f3-ada23dbc0d16?t=1437653387470
40