Dokumentation durch automatisierte Akzeptanztests

1.543 Aufrufe

Veröffentlicht am

Folien der Präsentation "Dokumentation durch automatisierte Akzeptanztests" auf der webtech 2010 von Andreas Kneifel http://www.wlw.de/ und Sebastian Sanitz http://www.it-agile.de/

0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
1.543
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
15
Aktionen
Geteilt
0
Downloads
0
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Dokumentation durch automatisierte Akzeptanztests

  1. 1. Dokumentation durch automatisierte Akzeptanztests 11. Oktober 2010 Sebastian Sanitz, it-agile Andreas Kneifel, „Wer liefert was?“
  2. 2. Wer sind wir? <ul><li>Sebastian Sanitz, Dipl.-Informatiker </li></ul><ul><ul><li>[email_address] </li></ul></ul><ul><li>Andreas Kneifel, Dipl.-Informatiker </li></ul><ul><li>Abteilung Innovationsmanagement </li></ul><ul><li>[email_address] </li></ul>
  3. 3. Agenda <ul><li>Vorstellung von „Wer liefert was?“ </li></ul><ul><li>Stand der agilen Entwicklung bei „Wer liefert was?“ </li></ul><ul><li>Akzeptanztests </li></ul><ul><li>Userstories </li></ul><ul><li>Page-Objects </li></ul><ul><li>Wie sehen die Tests aus? </li></ul><ul><li>Automatisierung der Akzeptanztests </li></ul><ul><li>Schwierigkeiten und Lösungen im Einsatz bei „Wer liefert was?“ </li></ul><ul><li>Was man alles testen kann </li></ul><ul><li>Fazit </li></ul>
  4. 4. „ Wer liefert was?“ <ul><li>führende deutsche Lieferantensuchmaschine (B2B) </li></ul><ul><li>10 Präsenzen (DACH, BeNeLux) + 6 mobil </li></ul><ul><li>25 Präsenz-/Sprach-Kombinationen (sprachspezifische Features) </li></ul>
  5. 5. Mobil
  6. 6. Innovationsmanagement und „Web Demand Management“ 1. Anforderungen 2. Aufwandsschätzung 3. Priorisierung Verantwortlich für Geschäftswert Verantwortlich für Technologie Entwickler Produkt- verantwortlicher
  7. 7. Früher keine Agile Entwicklung <ul><li>Webentwicklung outsourced </li></ul><ul><li>kein Prozessmodell </li></ul><ul><li>Anforderungen eher Wunschvorstellungen </li></ul><ul><li>viele Änderungen </li></ul><ul><li>häufige Releases </li></ul><ul><li>aber keine Tests </li></ul><ul><li>bisher Glück  </li></ul>photo by Pimlico Badger (flickr)
  8. 8. Scrum
  9. 9. Warum Tests automatisieren? Jeremy Keith / adactio @ flickr photo by Jurvetson (flickr) By Patty Gallivan (flickr)
  10. 10. Automatisierung mit Selenium
  11. 11. <ul><li>Skalierbar, wartbar? </li></ul>
  12. 12. Akzeptanztests <ul><li>Akzeptanztests müssen angepasst werden, wenn </li></ul><ul><li>sich die Software oder </li></ul><ul><li>die Anforderungen ändern. </li></ul><ul><li>Akzeptanztests sollten </li></ul><ul><li>unabhängig von Implementierungsdetails formuliert sein und </li></ul><ul><li>ihren Zweck kommunizieren. </li></ul>
  13. 13. Beispiel <ul><li>Userstories </li></ul><ul><li>Ausführbare Spezifikationen </li></ul>
  14. 14. Page-Objects <ul><li>Hilfreich für eine Strukturierung </li></ul><ul><ul><li>Im Wiki bei Selenium gefunden </li></ul></ul><ul><li>Für jede Seite ein Objekt definieren </li></ul><ul><ul><li>Oder für ein wiederkehrendes Fragment einer Seite </li></ul></ul><ul><li>Für jede fachliche Umgangsform einer Seite eine Methode </li></ul>
  15. 15. Testergebnisse <ul><li>Erfolgreiche Tests: grün </li></ul><ul><li>Erfolglose Tests: rot, mit Erläuterung ( Expected : got ) und „wo?“ </li></ul>
  16. 16. Java und XPath (I) <ul><li>@Gegebensei (&quot;^die Startseite (+)$&quot;) </li></ul><ul><li>public void dieHomePage(String praesenzName) { </li></ul><ul><li>driver().get(praesenzName.getUrl() ); </li></ul><ul><li>} </li></ul><ul><li>@Wenn (&quot;^der Benutzer nach '(.+)' sucht$&quot;) </li></ul><ul><li>public void sucheNach(String eingabe) { </li></ul><ul><li>By selector = isMobil ? By.xpath(&quot;//input[@name='suchbegriff']&quot;) : By.id(&quot;suchbegriff&quot;); </li></ul><ul><li>WebElement input = driver().findElement(selector); </li></ul><ul><li>input.sendKeys(eingabe); } </li></ul>
  17. 17. Java und XPath (II) <ul><li>@Dann (&quot;^kommen ua die Rubriken:(.+)$&quot;) </li></ul><ul><li>public void kommenDieRubriken(String rubriken) { </li></ul><ul><li>By selector = isMobil ? By.xpath(&quot;//div[@class='content_list']//span/span&quot;) : </li></ul><ul><li>By.className(&quot;trefferrubrik&quot;); </li></ul><ul><li>List<String> treffer = elementsAsStrings(selector); </li></ul><ul><li>assertThat( treffer, contains(split(rubriken)) ); </li></ul><ul><li>} </li></ul>
  18. 18. Aggregiertes &quot;Gegeben sei&quot; <ul><li>@Gegebensei (&quot;^die Firma '(.+)' bei (+) nach der Suche '(.+)' in der Rubrik '(.+)'$&quot;) </li></ul><ul><li>public void dieFirmaUeberProduktSuche(String firmierung, String praesenz, String eingabe, String rubrik) { </li></ul><ul><li>Given (&quot;die Startseite &quot; + praesenz); </li></ul><ul><li>When (&quot;der Benutzer nach '&quot; + eingabe + &quot;' sucht&quot;); </li></ul><ul><li>When (&quot;der Benutzer auf die Rubrik '&quot; + rubrik + &quot;' klickt&quot;); </li></ul><ul><li>When (&quot;der Benutzer bei Firma '&quot; + firmierung + &quot;' auf 'Firmeninfos' klickt&quot;); </li></ul><ul><li>} </li></ul>
  19. 19. Probleme mit Lösungen <ul><li>Verbindung zum Internet, Proxy, Statistikverfälschung </li></ul><ul><li>AJAX und Ladezeiten </li></ul><ul><li>Layer und der Zufall </li></ul><ul><li>Bewegung auf der Seite </li></ul><ul><li>Testdaten oder Echtdaten? </li></ul>
  20. 20. Ungewöhnliche Tests <ul><li>Untergrenzen und Teilmengen </li></ul><ul><li>Textdateien (robots.txt) </li></ul><ul><li>HTTP-Statuscodes </li></ul><ul><li>Geöffnete Fenster </li></ul><ul><li>Visuelle Überprüfung </li></ul><ul><li>Protokollierung </li></ul>
  21. 21. Anforderungsmanagement photo by Jurvetson (flickr)
  22. 22. Täglicher Ablauf <ul><li>Trennung der Fehlerquellen </li></ul><ul><li>Früh morgens Hudson </li></ul><ul><li>Fehler aufgrund von Datenänderungen beseitigen </li></ul><ul><li>Tagsüber Testaufrufe </li></ul><ul><li>Zusätzliche manuelle Tests </li></ul><ul><li>Nach Livestellung Produktivtest </li></ul>
  23. 23. Fazit <ul><li>Aspekte, die automatische Akzeptanztests begünstigen: </li></ul><ul><li>Häufige Tests (z.B. bei agiler Vorgehensweise) </li></ul><ul><li>Viele gleichartige Tests, hier Präsenzen und Sprachen </li></ul><ul><li>Zusatznutzen: </li></ul><ul><li>Andere Sichtweise auf die Anforderung </li></ul><ul><li>Als lebende Dokumentation </li></ul>
  24. 24. Vielen Dank für Ihre Aufmerksamkeit

×