Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
sequencers [2020/12/10 17:45] admin [Sequencer - Priority Path] |
sequencers [2021/02/17 18:16] (current) admin [Sequencer - MCase] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Model Sequencers ====== | ====== Model Sequencers ====== | ||
- | //Model Sequencer// is algorithm-based | + | //Model Sequencer// is algorithm-based test case (test sequence) generation from the model. |
- | The test sequence (test case) generation is referred to as // | + | The test case generation is referred to as // |
The generated test cases can be automated to drive Application Under Test (AUT) through // | The generated test cases can be automated to drive Application Under Test (AUT) through // | ||
Line 18: | Line 18: | ||
For // | For // | ||
+ | |||
+ | Constraints (rules) can be added to // | ||
Line 26: | Line 28: | ||
The weight of the outgoing transitions determines the probability a transition will be traversed from its source state. | The weight of the outgoing transitions determines the probability a transition will be traversed from its source state. | ||
- | //Random// sequencer is useful for exploratory type of testing by allowing the model to run for an extended period of time to let the algorithm | + | //Random// sequencer is useful for exploratory type of testing by allowing the model to run for an extended period of time to let the algorithm |
- | //Random// sequencer is also often used for load and stress testing by running model with may //virtual users (VU)// to simulate realistic load of a production systems. | + | //Random// sequencer is also often used for load and stress testing by running model with many //virtual users (VUs)// to simulate realistic load of a production systems. |
- | Another good use of //Random// sequencer is to find memory leak, locking contention, etc. that are caused by running //AUT// over a long period of time. You can just leave the model running with the elapse time stop condition set to desired duration of time. | + | Another good use of //Random// sequencer is to find memory leak, locking contention, etc. that are caused by running //AUT// over a long period of time or under heavy load. You can just leave the model running with the elapse time stop condition set to desired duration of time. |
The disadvantage of //Random// sequencer is that the model coverage is typically time-dependent - it may take longer time for it to achieve the desired model coverage. | The disadvantage of //Random// sequencer is that the model coverage is typically time-dependent - it may take longer time for it to achieve the desired model coverage. | ||
Line 38: | Line 40: | ||
=====Sequencer - Optimal===== | =====Sequencer - Optimal===== | ||
- | //Optimal// sequencer uses uses algorithms | + | //Optimal// sequencer uses the algorithm |
- | The obvious advantage of //Optimal// sequencer is that it generates the least number of steps to cover every transitions in the model. | + | The obvious advantage of //Optimal// sequencer is that it generates the least number of steps to cover all transitions in the model. |
The side effect is that the test cases generated by //Optimal// sequencer tends to be longer and fewer test cases with the minimal total number of test steps. | The side effect is that the test cases generated by //Optimal// sequencer tends to be longer and fewer test cases with the minimal total number of test steps. | ||
Line 49: | Line 51: | ||
// | // | ||
- | The test cases generated by // | + | The test cases generated by // |
// | // | ||
Line 56: | Line 58: | ||
* TraversedTransCost: | * TraversedTransCost: | ||
* scale: float >= 0.1, default 1.0 = neutral, < 1.0 for less sensitive (less penalty on choosing lower weight transitions), | * scale: float >= 0.1, default 1.0 = neutral, < 1.0 for less sensitive (less penalty on choosing lower weight transitions), | ||
+ | |||
+ | You may also set above parameters in config.properties for all models: | ||
+ | Sequencer.TraversedTransCost=integer | ||
+ | Sequencer.scale=float | ||
Line 66: | Line 72: | ||
Often times you may want to only test certain part of the model. | Often times you may want to only test certain part of the model. | ||
- | //Mark Optimal// sequencer generates the test cases using the same [https://en.wikipedia.org/ | + | //Mark Optimal// sequencer generates the test cases using the same //Postman Problem |
//Mark Optimal// sequencer (and [[# | //Mark Optimal// sequencer (and [[# | ||
Line 84: | Line 90: | ||
=====Sequencer - MCase===== | =====Sequencer - MCase===== | ||
- | //MCase// is a collection of transitions that represents a custom test case. //MCase// sequencer generates the actual test sequence (test steps) to navigate through the model to cover the transitions included in the //MCase//. | + | //MCase// is a collection of transitions that represents a custom test case. //MCase// sequencer generates the actual test sequence (test steps) to navigate through the model to cover the transitions included in the // |
The main use of //MCase// sequencer is to generate custom test cases, which can be used to test a bug fix, regression testing of important workflows and smoke testing. | The main use of //MCase// sequencer is to generate custom test cases, which can be used to test a bug fix, regression testing of important workflows and smoke testing. |