WIE EINE WEBTESTSUITE MIT EINER
UMFANGREICHEN APPLIKATION
SCHRITT HALTEN KANN
EIN ERFAHRUNGSBERICHT
Florian Decker
florian.decker@rubicon.eu
Warum?
2
Webtest Recorder
Webtests Programmieren
ohne Applikationsunterstützung
Webtests Programmieren
mit Applikationsunterstützung
• Simpel zu schreiben
• Schwer zu warten
• Schwerer zu schreiben
• Einfacher zu warten
• Einfach zu schreiben
• Einfach zu warten
Inhalt
3
1. Welche Probleme gibt es mit Webtests?
2. Wie können diese Probleme minimiert werden?
Was?
4
BocAutoCompleteReferenceValue
Controls
Die Geschichte
5
WebAii
??
Grundprobleme mit Webtests
6
PerformanceWartungsintensiv
Instabil / Flaky
Grundkonzept
7
Tester
Selenium
Page Objects
Control Objects
Grundprobleme mit Webtests
8
PerformanceWartungsintensiv
Instabil / Flaky
Diagnostic Metadata
<span
id="body_DataEditControl_PartnerField_Normal"
data-control-type="BocAutoCompleteReferenceValue"
data-display-name="Partner"
data-bound-type="Remotion.ObjectBinding.Sample.Person,
Remotion.ObjectBinding.Sample"
data-is-readonly="false"
data-null-identifier="==null=="
>
9
Tester
Control Object
Wartungsintensiv
Diagnostic Metadata
10
Wartungsintensiv
Was?
11
Page Objects
12
Page Object Generator
Wartungsintensiv
Änderung
--> Fehler beim
Compilieren
Grundprobleme mit Webtests
13
PerformanceWartungsintensiv
Instabil / Flaky
Completion Detection
 100% Deterministisches System
14
Instabil / Flaky
Completion Detection
15
Instabil / Flaky 1
2
2
Grundprobleme mit Webtests
16
PerformanceWartungsintensiv
Instabil / Flaky
Internet Explorer vs. Chrome
17
Langsam
~500 Tests
vs.
11 Stunden 5 Stunden
Vorbereiten von Testdaten
18
Langsam
Oberflächenautomatisierung
=
langsam
Wie sieht ein Test aus?
19
Selenium Recorder
20
//Feld „Familienname" mit "Testname" befüllen
var lastNameTextBox = driver.FindElement (
By.Id ("BasePersonFormPage_ObjectFormPageDataSource_LastName_Value"));
lastNameTextBox.Click();
lastNameTextBox.Clear();
lastNameTextBox.SendKeys ("Testname");
//Feld "Geschlecht" mit "Männlich" befüllen
var genderDropDown = driver.FindElement (
By.Id ("BasePersonFormPage_ObjectFormPageDataSource_Gender_Value"));
genderDropDown.Click();
new SelectElement (genderDropDown).SelectByText ("Männlich");
driver.FindElement (By.Xpath ("//option[@value='Male']")).Click();
//Speichern
driver.FindElement(
By.Id ("BasePersonFormPage_ObjectFormPageDataSource_Save")).Click();
//Feld "Familienname" sollte mit "Testname" befüllt sein
lastNameBox.Text.Should.Be ("Testname");
re-motion Control Objects
21
//Feld "Familienname" mit "Testname" befüllen
var lastNameTextBox = home.GetTextBoxes().ById (
"BasePersonFormPage_ObjectFormPageDataSource_LastName_Value");
lastNameTextBox.FillWith ("Testname");
//Feld "Geschlecht" mit "Männlich" befüllen
var genderDropDown = home.GetDropDowns().ById (
"BasePersonFormPage_ObjectFormPageDataSource_Gender_Value"));
genderDropDown.SelectOptionByText ("Männlich");
//Speichern
home.GetWebButtons().ById (
"BasePersonFormPage_ObjectFormPageDataSource_Save")).Click();
//Feld "Familienname" sollte mit "Testname" befüllt sein
lastNameBox.GetText().Should().Be ("Testname");
Acta Nova Page Objects
22
//Feld „Familienname" mit "Testname" befüllen
personForm.LastName.FillWith ("Testname");
//Feld "Geschlecht" mit "Männlich" befüllen
personForm.Gender.SelectOptionByText ("Männlich");
//Speichern
personForm.Buttons.Save.Click();
//Feld „Familienname" sollte mit "Testname" befüllt sein
personForm.LastName.GetText().Should().Be ("Testname");
Worauf muss man achten?
23
Programmierer Tester
Hugo
1. Zu Tür hingehen
2. Tür öffnen
3. Sicherstellen, dass das Licht nicht brennt
Tür bereits offen
Worauf muss man achten?
24
Was kann man sonst noch damit machen?
25
Benutzerhandbuch
Was kann man sonst noch damit machen?
26
Benutzerhandbuch
1. Seite navigieren
2. Seite in korrekten Zustand bringen
3. Screenshot machen
Was kann man sonst noch damit machen?
27
Benutzerhandbuch
1. Seite navigieren
2. Seite in korrekten Zustand bringen
3. Zustand testen
Zusammenfassung
28
 Welche Probleme gibt es mit Webtests?
 Wartungsintensiv
 Contextinformationen für Tester und Automatisierungsschicht
 Page Objects automatisch generieren
 Fehler zu Compile time
 Instabil / Flaky
 Completion Detection
 Performance
 Schnellsten Browser verwenden
 Testdaten nicht über Weboberfläche anlegen
Interviewpartner gesucht!
 Titel
– Kommunikationsprobleme zwischen Entwicklern und Tester
 Dauer
– ca. 30 Minuten
 Ziel
– Leitfaden für erfolgreichen Kommunikationsprozess zwischen
Entwickler und Tester
 Kontaktiert mich
– florian.decker@rubicon.eu
– florian@deckerhome.at
29© FH Technikum Wien

Webtestsuite_umfangreiche_applikation

Hinweis der Redaktion