State Model-Based Testing Using Selenium
State Model-Based Testing (SMBT) is an effective testing technique that allows you to visualize your application and to generate and automate test flows by using different models of the application under test, thus obtaining a large number of test scenarios.
When certain paths of the application are changed, the benefit of using SMBT is that you will only have to modify the states and transitions that apply to that change.
The purpose of using SMBT is to:
- Discover another way to view the application under test
- Test with a variety of randomly generated flows
- Gather a big number of test runs so we can later investigate the parts of the model where tests have failed the most or the parts that have a higher fixing priority for the product under test.
In this workshop, we will work in groups to model the behavior of a chosen web application and then write automated tests in Python, using SeleniumWebDriver and AltWalker, to execute the models we created and cover auto generated paths through the application.
The State Model-Based workshop is a great opportunity for people who are already familiar with automation or coding. However, if you lack programming skills, this shouldn’t be an impediment as you will work in teams and get support from your peers.
Outline/Structure of the Workshop
Part 1 - Introduction to SBTM and the app under test - 2 hours (9am - 11am)
The first part is dedicated to theoretical concepts and getting familiar with your setup during the workshop. You will:
- Meet your instructors and peers
- Learn the theoretical aspects of modeling an application and State Model Based Testing
- Discover the tools you will use for modeling and the application under test
Part 2 - Modeling - 2 hours (11am - 1pm)
Through hands-on group modeling, you’ll learn how to create the model of an application. You will:
- Work in teams to model the behaviors of a simple web app
- Control the test coverage through generators and stop conditions
- Add business logic to the model through actions, guards and data
- Combine different models to obtain more complex scenarios
Part 3 - Implementation - 3 hours (2pm - 5pm)
With the help of ensemble programming, using Python and Selenium WebDriver, you’ll start implementing and executing automated tests based on the created model. You will:
- Understand how a model can be represented in the automated tests
- Get familiar with the open-source tools GraphWalker and AltWalker
- Execute tests using AltWalker
- Learn how to split and combine different models
- Visualizing the complexity of the app and the covered scenarios
- Dealing with unclear specifications, especially when it comes to integrations, interactions between functionalities or modules
- Generating large amounts of relevant and complex scenarios and covering them with automation
- Maintaining regression tests
- Dealing with flaky tests.
People who are already familiar with automation or coding; those with less programming experience can be paired with more experience teams and get support from peers.
Prerequisites for Attendees
To try the tests yourself, you will need a laptop with the following pre-installed:
- Python3 (https://www.python.org/)
- Java 11 (https://openjdk.java.net/)
- Git (https://git-scm.com/)
- Selenium Webdriver configured with at least one browser (https://www.selenium.dev/documentation/webdriver/)
We will do the coding in groups, so not everyone needs to have this setup done, but it would be good to have it if you want to be able to follow everything yourself.