Hi,
When I fill in "Benutzername" with "Matti"
Der Test schlägt fehl, sobald jemand das Label in der Locale ändert, oder die Seite an den Testclient nicht mehr in der entsprechenden Sprache ausgeliefert wird.
Ich habe das Thema intern länger diskutiert. Ich bin der Meinung, dass die korrekte Auswahl des Locales und die Label-Bezeichner Bestandteile des Tests sind. Meine Idee dahinter ist es, dass ich meine Tests so schreibe, dass ich alleine mit auf dem Screen sichtbaren Begriffen hantieren muss. Und dazu nehme ich dann eben den Text auf dem Label.
Andersherum: wenn ich meine GUI-Tests als eine Teilform der Akzeptanztests verstehe, dann ist das Innenleben der Software irrelevant. Zum Innenleben gehören die technischen Bezeichner der Felder.
Elementar dagegen sind die Labeltexte, weil diese die Eingabefelder benennen. Wenn da auf einmal etwas anderes steht als erwartet (sei es, weil irgendwie im Test die Locale verrutscht ist oder jemand den Labelinhalt umbenannt hat), ist das m.E. ein Fehler (aus Sicht des Tests kann ich ja nicht beurteilen, ob der neue Labelinhalt ein Synonym für den alten ist oder ob da kompletter Quatsch steht). Und daher teste ich mit den Sätzen nicht nur das Befüllen der Eingabefelder, sondern eben auch die Korrektheit der Label.
Zu guter Letzt: Die Tests mit fachlichen Bezeichnern sind besser lesbar. Ich kann sie ausdrucken, jemandem ohne technischen Hintergrund hinlegen und von ihm erwarten, dass er in der Lage ist, die Tests manuell durchzuarbeiten. Mit den technischen Bezeichnern geht das nicht.
When I fill in "#anmeldetabelle input[name='nutzername']" with "Matti"
Der Test schlägt fehl, sobald jemand die Bezeichner im Code ändert.
Was passiert wohl häufiger?
Ich stimme deiner impliziten Antwort zu: i.d.R. wird der Labelbezeichner geändert. Meine technischen Bezeichner sind meist automatisch generiert, da ändert sich nicht viel daran.
Bei den Testframeworks, die ich kenne, wird i.d.R. mit dem name-Attribut, mit Klassen oder IDs gearbeitet – den diese sind für die client- bzw. serverseitige Weiterverarbeitung interessant.
Ich arbeite mit Behat, Mink und der MinkExtension. Die Arbeit mit technischen Bezeichnern ist möglich. Ich habe mich aus oben genannten Gründen dazu entschlossen, die fachlichen Bezeichner (Labeltexte) zu nutzen.
Bis die Tage,
Matti