Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
tutorial:state_modeling [2020/06/07 21:23]
admin [Create Transitions]
tutorial:state_modeling [2021/01/10 19:01] (current)
admin [Create Initial / Final Nodes]
Line 1: Line 1:
 ====== Tutorial: State-based Modeling and Test Generation ====== ====== Tutorial: State-based Modeling and Test Generation ======
  
-Learning Objectives:+====Learning Objectives ====
   * [[#What is a State Model]]   * [[#What is a State Model]]
   * [[#Create Model]]   * [[#Create Model]]
Line 48: Line 48:
 Our goal is to create a simple model that looks like the following when completed: Our goal is to create a simple model that looks like the following when completed:
  
-{{wiki:overview:ide_new_model_example.png?600}}+{{wiki:overview:tut_new_model_state_trans_created.png?600}}
  
  
Line 58: Line 58:
 Since a model must have one //Initial// node and at least one //Final// node. Let's create these first and place one on the left and the other on the right of the modeling canvas: Since a model must have one //Initial// node and at least one //Final// node. Let's create these first and place one on the left and the other on the right of the modeling canvas:
  
-  * select //Initial// node icon {{wiki:overview:ide_model_btn_initial.png?16}}+  * select //Initial// node icon {{wiki:overview:ide_model_btn_initial.png?16}}
   * click on left side of modeling canvas to place //Initial// node   * click on left side of modeling canvas to place //Initial// node
   * select //Final// node icon {{wiki:overview:ide_model_btn_final.png?16}}   * select //Final// node icon {{wiki:overview:ide_model_btn_final.png?16}}
Line 114: Line 114:
 {{wiki:overview:tut_new_model_state_trans_created.png?500}} {{wiki:overview:tut_new_model_state_trans_created.png?500}}
  
-If your transitions are not routed the way as shown above or you wish to change their routing, you can do so by dragging the transition segment.+==== Arranging States and Transitions ==== 
 +States and transitions can be re-positioned on the model while in //Edit// mode. 
 + 
 +=== Moving State === 
 +To move a state, mouse over the state and drag on  {{wiki:overview:ide_model_icon_move.png?16}}. 
 + 
 +=== Moving Transition === 
 +If the transitions are not routed the way as shown above, you can change the transition routing by dragging the transition segment
 + 
 +When you move the start or end segment of the transition to the adjacent side of the state, the transition will be re-routed from that side of the state. 
 + 
 +=== Moving Transition Label === 
 +Transition label can also be moved: mouse over the transition label and drag on  {{wiki:overview:ide_model_icon_move.png?16}}. 
 + 
 +Transition label is positioned from the position of the start segment from the source state.  This ensures that they are re-positioned automatically when its source state or transition start segment is moved.
  
-You can also change the side of the state the start and end segment of the transition by moving the segment to the adjacent side of the state. 
  
-Transition label can also be moved by dragging on {{wiki:overview:ide_model_icon_move.png?16}}. 
  
 Be sure to save the model changes before moving on to next. Be sure to save the model changes before moving on to next.
Line 132: Line 144:
 For purpose of this demonstration, we'll just use the default //Optimal// sequencer as shown in the app toolbar {{wiki:idescreen:ide_model_toolbar.png?300}}. For purpose of this demonstration, we'll just use the default //Optimal// sequencer as shown in the app toolbar {{wiki:idescreen:ide_model_toolbar.png?300}}.
  
-Click on {{wiki:overview:ide_model_btn_gen.png?16}} on the app toolbar to generate the test cases using //Optimal// sequencer.+Click on {{wiki:overview:tut_model_btn_gen.png?16}} on the app toolbar to generate the test cases using //Optimal// sequencer.
  
-You should see some status messages showing up on the bottom of the screen. When done, it should auto select //RESULT// tab like below:+You should see some status messages showing up on the bottom of the screen. When done, it should auto select //RESULT// tab like below, if not click on //RESULT// tab on the app header:
  
-{{wiki:overview:tut_new_model_gen.png?600}}+{{wiki:overview:tut_new_model_result_gen.png?600}}
  
 +Explanation on //RESULT// tab is covered in a separate tutorial.  We will just review the test cases generated in the "Test Case" section.
  
-===== Make Changes ===== 
  
 +===== Model Graphs and Test Visualization =====
 +In addition to the test case list described in the previous section, you can view the test cases in graphs:
 +  * {{wiki:overview:tut_new_model_graph_trav.png?linkonly | Traversal}}
 +  * {{wiki:overview:tut_new_model_graph_cov.png?linkonly| Coverage}}
 +  * {{wiki:overview:tut_new_model_graph_msc.png?linkonly | Test Case}}
  
 +Click on each of the graphs on {{wiki:overview:tut_model_btn_graphs.png?250}}. 
  
-===== Model Graphs and Test Visualization =====+The graphs should be self-explanatory. 
 + 
 +===== Make Changes ===== 
 +As you followed this tutorial, you should have noticed that you can easily make changes to the model and re-generate test cases with minimum effort. 
 + 
 +Here are a few more changes you can make to the model: 
 +  * aligning states by selecting (marking) states and clicking on one of the alignment options from the toolbar 
 +  * re-routing transitions with transition context menu: 
 +    * {{wiki:idescreen:ide_model_btn_reroute_1.png?16}} - refreshing transition segments 
 +    * {{wiki:idescreen:ide_model_btn_reroute_2.png?16}} - changing transition source and/or target state 
 +  * refreshing all outgoing and incoming transitions of a state with state context menu {{wiki:idescreen:ide_model_btn_reroute_1.png?16}} 
 +  * styling the states and transitions through [[../ide_model#state_properties|State Properties]] and [[../ide_model#transition_properties | Transition Properties]]. 
 + 
 +You may also us //Box// node to group or highlight a set of states.
  
 +If you are modeling a workflow or process, you can use //Swimlanes// to distinguish multiple different process and actor.