With the advent of Agile frameworks , the need to improve speed to market through faster testing has emerged; leading to a greater adoption of Model Based testing.
Model based testing entails generation of test scenarios using system models as inputs. Examples of models include flow charts, data flow diagrams, decision tables, process flows, UML’s and state machines. Benefits include increased speed to market, improved test overage and improved quality. Here is my list of five model use cases which leverage this technique:
- Use case 1: Time partition test case design for embedded and automotive systems: In this technique, test cases are designed using special state machines as inputs.These state machines represent the continuous behavior of systems. Test scenarios for continuous behaviors are modeled based on inputs and outputs of these state machines. A simplistic example of this is in testing embedded devices and deploying scenarios such as turning all lights off when all inputs are zero, one light illuminates when input is 0, 1 and so and so forth.
- Use case 2: Regression suites for packaged products such as SAP, Oracle and Salesforce: In this use case, business process models, such as flow charts created in the blue printing phase, serve as inputs. Test scenarios are generated by using algorithms such as condition statements, branches or path coverage.
- Use case 3: Test Data design: In this scenario, classification trees are used as inputs for combinatorial types of tests data. The advantage of using this technique, is that it reduces the number of test cases – the basis of pairwise testing. This can also be leveraged for random test case design. For example, creating a test data service, which supplies the tests with data when required. In this scenario, test data is specified by properties which a service invokes at run time based on the combinations. For example, this would work very well for random creation of currencies and real time conversion rates for a global banking roll out.
- Use case 4: Agile testing: Two techniques are most useful in this scenario. The first one involves using domain specific language, which developers use as a specification for the implementation and testers use as inputs to generate testable criteria. The second one is state diagrams to describe flows of events in user stories, which helps in building system integration testing scenarios.
- Use case 5: Service Oriented Architecture (SOA) testing: The UML format serves as an excellent mechanism to determine interfaces, input parameters and output parameters. UML state machines determine states of an object during the execution of a process, hence enabling effective test scenario generation.
Model based testing necessitates the testing community to build new skills. It requires abstract thinking, understanding the requirements and architecture process.
Start small with one pilot and very soon you will never want to design test scenarios any other way.