In this blog post, we will be discussing what model-based testing is actually about, challenges and advantages of model-based testing and offers inspiration for a kick-start in the world of generating test models.
With fast evolution in Software Testing, model-based testing is also becoming an integral part of modern test automation.
What is Model Based Testing?
Model Based Testing as the name suggests is a testing approach based on models. If we go to the literal meaning, it means generating test cases automatically from the models.
Models can be used to represent the testing strategy. They are basically the expected behavior of the system under test. If we think from the QA perspective since we are unable to test everything so we strategize what to test and what is most essential to test. We can say the Model is an abstraction of the real-world functions.
Model-Based Testing is very beneficial, it allows us to focus on the models that need to be created as per the system requirements/ functions, thus helping us to lessen the load and share the responsibilities with Developers and Testers.
Mechanism of Model Based Testing
There are 2 terms that you will hear more often while reading this blog post- Test Oracle and Test Executor. Don't panic we will discuss everything. First let's focus on how does the Model Based Testing work?
In Model Based Testing test cases are created by Software Developers and Testers from the models that are created around the system requirements.
Test Oracle will run assertions for test generation and execution. Test Executor runs all the generated test cases and reports the tests results from the models abstract test suites.
Now you must be wondering what is a Test Oracle and a Test Executor? In Computing, oracle is a mechanism used by software testers and engineers to determine whether a test is pass or fail. It involves comparing the output of the system under test for a given set of inputs to the expected output.
Types of Model Based Testing
There are 3 types of Model Based Testing:
- Offline generation of executable tests: In this type of MBT Test suites are generated before executing it and these can be later run automatically. This type is also known as a priori type of MBT
- Offline generation of manually deployable tests: This type of MBT involves generation of test cases as human-readable assets that can later assist in manual testing of the system.
- Online: In this type Test suites are generated during the test execution. In this, the testing tool will connect directly to the system under test and test its functionality dynamically. Thus, the description suggests- on the fly type of MBT.
What is the difference between Model Based Testing and other forms of Testing?
MBT is becoming an integral part of the software development process, thus decreasing the demand for independent scripting tasks. In today's time where more effort and investment is made to create a reliable and maintainable testing suite for a given application, MBT is getting a lead. But WHY? There is a reason for this. In MBT the team focus on creating models based on the real-world functions from the user perspective.
Thus, eliminating the pain of Test script development and test script maintenance.
Does it mean that MBT does not require maintenance? No, WAIT!!! MBT is not maintenance free, models are created and maintained within the code and are a part of the development process.
Is it really going to help software developers and tester? Yes, it will surely do.
- Here software developers and testers are working together to generate models based on real-world function from the customer perspective.
- Reduces the overhead of Test suite creation and maintenance.
- It allows for the flexibility to create a number of test cases using different algorithms.
The challenges of Model Based Testing
Now, after having a quick discussion of what is Model Based Testing and How it is different from other testing techniques. Let's get started with the main agenda of this blog post.
What are the challenges, if we adopt Model Based Testing?
- One of the first challenges that you encounter while adopting a new approach is the learning curve. Every time when a new methodology is introduced, all the team needs to be trained. The same problem is with Model Based Testing, for which all the software developers and testers need to be trained. The learning curve is steep in this case.
While software developers are familiar with coding paradigms, but they still need to understand how to build a testable application. On the other hand, testers need to learn a new concept of modeling over traditional testing methodologies.
- Adopting MBT involves implementing modeling in the development process. It might pose a challenge where we need to change the mindset of developers, who are till now developing applications are now have to focus on how to develop testable applications.
- There is a need to invest in the infrastructure in order to get MBT in the picture. There is a need to understand the architecture that we have right now and the changes that we need to make. The tool should be able to handle complex models and provide reliable test coverage. Fine Tuning MBT Tool in parallel with the creation of models could be a challenging task and can result in refactoring the tool.
The Benefits of MBT
- MBT introduced the idea of reinforcing testability in product design.
- It helps to find specification and design bugs even before the code exists.
- Automatic test suite generation will increase the thoroughness and guaranteed test coverage.
- Not zero but reduced test suite maintenance.
- It is a part of the continuous testing and reporting results to the individuals or teams.
The purpose of this blog post is to introduce you guys to the concept of Model Based Testing (MBT). Keep reading and exploring.