Framework for the technical layer in behavior-driven development


Automated end-to-end tests allow to check the correct functioning of web applications but introduce effort for developing and maintaining the tests. The effort is increased when a core software is tailored to customer needs resulting in multiple variations. The scenario-based testing concept from Behavior Driven Development and the page object pattern help to reduce the complexity and, thereby, ease the development and maintenance. However, despite these techniques, the different variations of the core software lead to code duplication and increased complexity in the code of the tests.

This thesis introduces a framework concept for end-to-end web application testing that fits into the Behavior Driven Development method by adding further abstraction between the tests and the tested websites. This is achieved by grouping HTML elements into functional components, for example, lists and forms which provide a general interface and hide the HTML structure that is used to implement the functionality. The structure of each page is provided to the framework in a specified language. Duplication is reduced by reusing these page structures and only state the differences for each variation.

The concept is evaluated by implementing a prototype for an industry software product with a couple of dozen variations that share an end-to-end test. In the prototype, end-to-end scenarios are implemented using the Cucumber framework, while browser automation is realized using Selenium WebDriver and Cypress. The prototype improves test maintainability by reducing duplication and by supporting more concise test implementations. However, the language to specify the page structure showed lacking clarity and the reuse strategy of these definitions introduces further challenges.

Project information



Thesis for degree:



Lukas Lauterbach