Presentation of a paper on "Model-based Software Testing"


Published on

  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Presentation of a paper on "Model-based Software Testing"

  1. 1. Presentation of a paper on “Model-based Software Testing” Dr. Kasi Periyasamy Department of Computer Science
  2. 2. Reference <ul><li>F. Bouquet et al., “A Subset of Precise UML for Model-Based Testing”, Workshop on Advances in Model-Based Software Testing (A-MOST 07) , Part of International Symposium on Software Testing and Analysis (ISSTA 2007), London, UK, July 2007, pp. 95 – 104. </li></ul>
  3. 3. About the authors <ul><li>F. Bouquet, University of Besan ç on, France. </li></ul><ul><li>C. Grandpierre, B. Legeard, F. Peureux and N. Vacelet, LEIRIOS, France. </li></ul><ul><li>M. Utting, University of Waikato, New Zealand. </li></ul>
  4. 4. Objective and Approach <ul><li>Objective </li></ul><ul><ul><li>Demonstrate the use of UML 2.1.1 for Model-Based Testing </li></ul></ul><ul><li>Approach </li></ul><ul><ul><li>Define an executable subset of UML 2.1.1 and use it for Model-Based Testing </li></ul></ul><ul><ul><li>The work uses UML class diagram, state diagram and OCL (Object Constraint Language) for defining the model </li></ul></ul><ul><ul><li>A tool has been developed to automate the testing process </li></ul></ul>
  5. 5. Definition of Model-Based Testing <ul><li>Definition given by the authors </li></ul><ul><ul><li>A process to automatically generate test cases and executable test scripts from a behavioral model of the system under test (SUT) </li></ul></ul><ul><li>The model formalizes the expected behavior so that it is easy for analysis and automation </li></ul>
  6. 6. Notations and Tools <ul><li>A subset of UML 2.1 is chosen, named as UML-MBT </li></ul><ul><li>Class Diagram, Object Diagram, State Diagram , and Object Constraint Language (OCL) </li></ul><ul><li>Slightly different from UML 2.1; changes are made to support practical model-based testing </li></ul><ul><ul><li>In particular, OCL 2.0 is modified (explained in later slides) </li></ul></ul><ul><li>LEIRIOS Test Designer tool was used to automatically generate the test cases </li></ul><ul><ul><li>Uses theorem proving technology </li></ul></ul>
  7. 7. Restrictions <ul><li>Only Integer, Boolean, Enumerated type and Object type are supported </li></ul><ul><li>Specific range of integers are chosen because of implementation constraints </li></ul><ul><li>Inheritance and Association classes in Class Diagram are not considered </li></ul><ul><li>Dynamic creation and deletion of objects are not considered </li></ul><ul><ul><li>All objects are shown in the object diagram at the very beginning of the testing process </li></ul></ul><ul><li>Semantics of State machine processing assumes “ Run-to-Completion ” of transitions </li></ul>
  8. 8. Passive and Active OCL expressions <ul><li>Passive </li></ul><ul><ul><li>The expression is treated as a condition and yields a Boolean result </li></ul></ul><ul><ul><li>E.g., variable = true </li></ul></ul><ul><ul><li>Pre-conditions and other constraints </li></ul></ul><ul><li>Active </li></ul><ul><ul><li>The expression is evaluated and a value is assigned to the variable on L.H.S. </li></ul></ul><ul><ul><li>E.g., variable = true </li></ul></ul><ul><ul><li>Post-conditions and actions </li></ul></ul>
  9. 9. Operators in OCL <ul><li>Boolean operators: ‘=’, ‘<>’, ‘or’, ‘and’, ‘not’, ‘xor’ </li></ul><ul><li>Arithmetic operators: All standard operators </li></ul><ul><li>Operators on Enumerated types: ‘=’ , ‘<>’ </li></ul><ul><li>Operators on classes and objects: ‘=’, ‘<>’, </li></ul><ul><li>obj.oclIsUndefined() ……. Boolean </li></ul><ul><li>class.allInstances() …...... Set </li></ul>
  10. 10. Operators in OCL (continued) <ul><li>Operators on collections: ‘=’, ‘<>’, </li></ul><ul><li>coll->size(), coll->includes(obj), coll->excludes(obj), </li></ul><ul><li>coll->includesAll (set), coll->excludedAll (set), </li></ul><ul><li>coll->isEmpty(), coll->notEmpty(), </li></ul><ul><li>coll->including (obj), coll->excluding (obj) </li></ul><ul><li>The last two operators return sets while others (except size()) return Boolean results. </li></ul>
  11. 11. Operators in OCL (continued) <ul><li>Iterative operators on collections: </li></ul><ul><li>coll->collect (obj), coll->select (bool exp) </li></ul><ul><ul><li>The above operations return sets </li></ul></ul><ul><li>coll->exists (bool exp), coll->forAll (bool exp) </li></ul><ul><ul><li>The above two operations return Boolean results </li></ul></ul><ul><li>coll->any (bool exp) </li></ul><ul><ul><li>The above operation returns an object </li></ul></ul>
  12. 12. Behavioral Description <ul><li>Context: Triangle::getType (a:Integer, b:Integer, c:Integer) : TYPE </li></ul><ul><li>Pre: a > 0 and b > 0 and c > 0 </li></ul><ul><li>Post: </li></ul><ul><li>If (a+b <= c or b+c <= a or c+a <= b) then </li></ul><ul><li>Result = TYPE::NOT_A_TRIANGLE </li></ul><ul><li>Else </li></ul><ul><li>If (a = b or b = c or c = a) then </li></ul><ul><li>If (a = b and b = c) then </li></ul><ul><li>Result = TYPE::EQUILATERAL </li></ul><ul><li>Else Result = TYPE::ISOCELES </li></ul><ul><li>Endif </li></ul><ul><li>Else </li></ul><ul><li>Result = TYPE::SCALANE </li></ul><ul><li>Endif </li></ul><ul><li>Endif </li></ul>
  13. 13. Undefined value <ul><li>Different from OCL semantics from UML 2.1 </li></ul><ul><ul><li>Coll->any (bool exp) may return an undefined value when no object in the collection satisfies the boolean expression </li></ul></ul><ul><ul><li>Expr.role may return an undefined value when the expression evaluates to a non-existing object or the role identifies a non-existing object </li></ul></ul><ul><ul><li>Remember that all objects must be available in the object diagram before the testing process is started </li></ul></ul><ul><ul><li>Divide by zero execution results in undefined value </li></ul></ul>
  14. 14. Application Example - Stack Stack Max : Integer Size : Integer Pop () Push () Pool emptyOut () fillOut () Element 0..1 +stack +top 0..1 Points to 0..1 +up 0..1 +down isOn 0..* 0..1 +elements +pool contains 1 1 +stack +pool takesFrom © F.Bouquet, A-MOST 2007
  15. 15. Object diagram stack: Stack Max = 3 Size = 0 pool: Pool e1 : Element e2 : Element e3 : Element e4 : Element e5 : Element e6 : Element © F. Bouquet, A-MOST 2007
  16. 16. State Diagram Empty Loaded Full EmptyStackException FullStackException Pop() Pop()[size=1] Push() Pop()[size>1] Push()[size < max-1] Push()[size = max-1] Pop() Push() © F. Bouquest, A-MOST 2007
  17. 17. Results of test automation <ul><li>Show tables from the paper </li></ul>
  18. 18. Conclusion by authors <ul><li>Model-based testing demonstrated using a subset of UML 2.1 </li></ul><ul><li>Testing process automated using LEIRIOS Test Design tool </li></ul><ul><li>Results are convincing </li></ul><ul><li>A lot of limitations to work around </li></ul><ul><li>Continuing work on more real-world problems </li></ul>
  19. 19. My comments <ul><li>Very interesting paper on model-based testing </li></ul><ul><li>Most attractive feature is the automation of test case generation using the state machine model and OCL behavioral description </li></ul><ul><li>I agree with the authors that the approach should be demonstrated for more real-world problems </li></ul><ul><li>Using UML reduces the learning curve on developing a model  a problem with other model-based techniques </li></ul><ul><li>The paper focuses more on the model and very little about actual testing process itself . </li></ul>