Good Practices
Abschnittsübersicht
-
- Nur genau eine Sache pro Szenario testen!
- Im besten Fall sollte jedes Szenario immer exakt einen einzigen Teil der Funktionalität testen. Daher empfiehlt es sich, dass die Szenarien entsprechend sinnvoll benannt sind, so dass im Falle eine Testfehlschlags der Name ein detaillierter Hinweis auf den Bug ist.
- Das Set-Up (Given) des Szenarios sollte nicht die Benutzeroberfläche verwenden!
- Die Schritte unter Given sollten die Test-Situation herstellen, ohne mit dem UI zu interagieren. Statt bspw. einen Kurs durch das Klicken der jeweiligen Buttons zu erzeugen, sollte [The following "courses" exist] verwendet werden, um die Daten direkt in der Datenbank zu hinterlegen. Falls nötig empfiehlt es sich, zusätzliche Schritte speziell für das zu testende Plugin zu schreiben.
- Statt zu einer bestimmten Seite zu navigieren, kann [Given I am on the "C1" "Course" page] verwendet werden. Die Navigation von Moodle hat sich in der Vergangenheit schon verändert und so wird umgangen, dass nach dem Einloggen zunächst das Dashboard als Landungsseite fungiert, welches sehr langsam lädt.
- Keine XPath- oder CSS-Selektoren verwenden, sondern Accessibility Bugs beheben!
- Falls es nur möglich ist, ein Element, das manipuliert werden soll, mit einem Schritt wie bspw. [I set the field with xpath "//textarea[contains(@name, 'answer')]" to "frog"] zu manipulieren, spricht dies in der Regel für einen Accessibility Bug.
- Behat sieht die Seite ziemlich genau so, wie der Benutzer eines Screenreaders. Es sollte möglich sein, das Element mit [I set the field "Answer" to "frog"] oder [I click on "True" "radio" in the "First question" "question"] anzusprechen. Falls nicht, sollte der entsprechende Accessibility Bug behoben werden, statt einen unleserlichen Behat-Test zu schreiben.
- Es sollte ersichtlich sein, zu welchem Plugin neu geschriebene Schritte gehören!
- Beim Schreiben eigener Schritte sollte darauf geachtet werden, dass sie nicht zu generisch sind und die Zugehörigkeit zum Plugin ersichtlich ist. Statt [I disable UI plugins] wäre bspw. [I disable UI plugins in the myplugin settings] möglich.
- Nur genau eine Sache pro Szenario testen!