1 / 50

Testing Object-Oriented Software A Presentation at a DFW ASEE Meeting Dr. David C. Kung

Testing Object-Oriented Software A Presentation at a DFW ASEE Meeting Dr. David C. Kung The University of Texas at Arlington and Advanced Software International Corporation Arlington, Texas 76019-0015 817-272-3785 kung@cse.uta.edu. Overview of Presentation.

ula
Download Presentation

Testing Object-Oriented Software A Presentation at a DFW ASEE Meeting Dr. David C. Kung

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Testing Object-Oriented Software A Presentation at a DFW ASEE Meeting Dr. David C. Kung The University of Texas at Arlington and Advanced Software International Corporation Arlington, Texas 76019-0015 817-272-3785 kung@cse.uta.edu

  2. Overview of Presentation Why Object-Oriented Software Testing The State-of-the-Research OO Software Testing Research at UTA OOTWorks Software Demonstration

  3. Why Object-Oriented Software Testing transition to OO development is not easy OO conceptualization, design and programming significantly impact the quality many developers’ mindset is still in procedural design and programming anti-design patterns are commonly found in OO design and OO code

  4. Case Study 1: Analysis of a Fedex Ship Manager Software This software was designed and implemented by a team of students taking an OO software engineering class It has nothing to do with Fedex The software was supposed to compute and display the shipment charges for all Fedex services from a given origin zip to a given destination zip This program is working but it has some design problems We show how OOTWorks can be used to detect these design problems

  5. Poor Conceptualization NextAfternoon, OvernightExpress, Ground, etc. are services. They are not a RateChart. It is better to use association.

  6. Poor Responsibility Assignment There should not be a class called “RateCalculator”. The services are the “experts” who know how to calculate their own rates. This design assigns the responsibility to the wrong object.

  7. Incorrect Use of Inheritance Child classes must not repeat the same code as the parent class, failing to utilize the inheritance and polymorphism features. This increases the maintenance effort.

  8. Better Design Better conceptualization. The services use ZoneChart and Delivery Area Surcharge to calculate rates.

  9. Better Design The subclasses inherit and use all of the methods of the superclass.

  10. Automatic Design Improvement The repeated code can be deleted from the subclasses.

  11. Automatic Design Improvement

  12. Why Object-Oriented Software Testing OO features introduce new testing problems encapsulation leading to long method invocation chains, more difficulty to understand the (overall) functionality inheritance and polymorphism: which method to execute is determined at run time multiple and/or repeated inheritance may cause incorrect interaction in child classes you cannot test a class, you can only test instances of a class

  13. Invocation chains in the InterViews Library: 122 classes, >400 relationships Number of Chains Chain Length

  14. Shape print () Box print () Square print () Why Object-Oriented Software Testing main () { Shape *p; …. p->print(); // which print() to // execute? … }

  15. objects engage in complex interdependent relationships testing one object may require test stubs to simulate other objects test stubs construction is costly and time consuming mutual or cyclic dependencies introduce additional complexity and costs in unit and integration testing need a test order for unit testing and integration testing Why Object-Oriented Software Testing

  16. Complex Relationships

  17. objects exhibit strong state dependent behaviors how to identify states and transitions? how to identify state dependent interactions? how to generate test cases to test state behaviors? how to reduce the complexity of state behavior testing? Why Object-Oriented Software Testing

  18. OO software testing began in the 1990s A number of test methods and techniques have been proposed There are various tools, some are free some are not The tester still has to do a lot of work The State-of-the-Research

  19. OO Test Methods and Techniques incremental testing of class hierarchy test order object state testing class testing, cluster testing data flow analysis testing polymorphic relationships data flow analysis for exception handling mechanism OO regression testing The State-of-the-Research

  20. OO Software Testing Research at UTA • A reverse engineering technology • Plus a set of utilities to facilitate • program understanding • design documentation • design analysis • design improvement • metrics calculation • test scheduling • change impact analysis • version comparison • test case generation • test data generation • design improvement • code review & analysis • code improvement • test execution • result analysis • and more ... • The result is the OOTWorks toolkit

  21. Why OOTWorks • It improves productivity and quality in • Documentation • Design and code reviews • Testing, regression testing and maintenance • Test planning and scheduling • It reduces the time and effort required to prepare for CMM/ audit each year

  22. ORD (Object Relation Diagram) BBD OID (Block Bench Diagram) (Object Interaction Diagram) OSD PRD (Object State Diagram) (Package Relation Diagram) The OOTWorks Modules

  23. Object Relation Diagram (ORD) • Visualization of • Classes, relationships, data members, function members, and source code, selectable by the user • Test order for unit and integration testing • Change impact and version comparison • Computation of various OO metrics • Useful for • program comprehension and assessment • documentation • design and code review • test scheduling and effort estimation

  24. An Object Relation Diagram

  25. Object Relation Diagram (ORD) • Generation of a cost-effective schedule • for implementing the classes (required code skeleton) • for changing the classes • for code review of the classes • for testing the classes • it effectively reduces time, effort and costs to accomplish above tasks

  26. Generation of Cost-Effective Test Order Classes with test order 1:0 should be tested before classes with test order 2:0 to reduce the test effort.

  27. Test Stubs Required for Randomly Selected Test Sequences

  28. Saving from Test Order • Average one person-hour is required to construct a test stub. • For the InterViews library, 191.88 person-hours, or close to 5 person-weeks are required. • Using test order, only one test stub is needed, the saving in effort and costs are tremendous even for this small program.

  29. Generation of Test Schedule Testing of classes on the critical path must be completed on time to ensure that the test process will be completed on time. Critical path

  30. Object Relation Diagram (ORD) • Computation of various OO metrics • Fan-in and fan out • Depth of inheritance tree • Number of lines of code • Length of invocation chain • Cyclomatic complexity • Number of children, etc. • Useful for assessing program quality and spot potential problem areas

  31. Various OO Metrics

  32. Object Relation Diagram (ORD) • Change impact analysis and visualization • Compare change alternatives • Version comparison and visualization • Compare two versions/releases to identify changes and their impact • Visualizing the two versions/releases to facilitate code review and inspection to ensure that changes are made properly • Useful for maintenance, release review and regression testing to reduce time, effort and costs

  33. Change and Impact Analysis

  34. Block Branch Diagram (BBD)

  35. Block Branch Diagram (BBD) for test case preparation for test input preparation for test stub preparation

  36. An Overly Complex Method Is Difficulty to Comprehend and Test

  37. Block Branch Diagram • Useful for white-box testing (basis path, data flow) • Useful for state transition construction • Useful for black-box testing • Boundary value analysis • Functional testing • Initialize parameters • Initialize input values • Identify and construct test stubs • Analysis of test results (changed variables) • Used for sequence diagram reverse engineering

  38. Object State Diagram • Hierarchical, concurrent, communicating state machines • Generated from C++/Java source code using a reverse engineering approach • Represents the dynamic state dependent behavior of objects

  39. allowVend: unsigned CoinBox() [curQtrs > 0] AddQtr() 0,0 1,M Reset() Vend() S0 S1 curQtrs: unsigned CoinBox() 0,0 1,M Reset() AddQtr() ReturnQtrs() [allowVend !=0] Vend() S0 S1 AddQtr() An Object State Diagram for an incorrect coin box class

  40. (S0, S0) Reset(), ReturnQtr() AddQtr() (S0, S0) (S0, S1) Reset(), ReturnQtr() AddQtr() (S0, S0) (S1, S1) ReturnQtr() AddQtr() Reset() Vend() (S1, S1) (S0, S0) (S1, S0) AddQtr() Reset() ReturnQtr() Vend() (S1, S1) (S0, S0) (S1, S0) Test tree showing the execution sequences of a COSD

  41. SS, FR, AR off, off, off SS.heat SS.cool heat,off,off cool,off,off SS.off FR.turnOn SS.off off, off, off heat, on, off off, off, off SS.off off, on, off SS.heat FR.turnOff SS.cool heat, on, off off, off, off cool, on, off SS.off AR.turnOn SS: Season Switch FR: Furnace Relay AR: A/C Relay off, on, off cool, on, on Test tree showing a flaw in a thermostat system.

  42. A sequence diagram describes the object interaction through time ordered message passing. Elements and their Notations Objects Placed at top of the diagram across the horizontal axis Lifelines Dotted lines extending down the vertical axis Messages and Stimulus Horizontal solid labeled arrow. Focus of Control Tall thin rectangle along the vertical axis. Sequence Diagram

  43. Sequence Diagram Example

  44. Sequence Diagram Showing a Use Case

  45. Usefulness of Sequence Diagram • Understanding how use cases are implemented • Automatic generation of test cases and test data to test the implementation • Facilitating design and code review • Check if some behavioral design patterns are propertly implemented

  46. Some Application Data • OOTWorks can process millions of lines of source code and thousands of classes • Parsing of a 50,000 line C++ files finishes in 20 seconds • Platform independent (Windows, Linux, Unix,Soloaris, Mac, etc.) • Display and print very large ORD diagrams • Has been applied to real world applications with satisfactory results

  47. Some Example Applications • Identification of isolated classes • Identification of possibly poorly designed OO software • no use of inheritance and/or aggregation • only one parent class, all the other classes are direct children of the parent class • classes with several thousand lines of code • classes with very high fan-in and/or fan-out metrics • high cyclomatic complexity • classes having excessive number of methods may indicate poor cohesion (or too much responsibilities) • etc.

  48. Possible Test Process interactive testing ORD selected class & method Tester batch testing BBD Functional Tests Generation Structural Tests Generation Result Analysis using variables used and changed using basis paths & symbolic execution Tests Execution Tests

  49. Possible Test Process ORD selected classes Tester OSD Method Sequence Tests Generation Fault Analysis Result Analysis analysis results Tests Execution Tests

  50. Summary Developer Project Manager • program understanding • documentation • verification • change impact analysis • metrics • time, effort and cost control • productivity and quality improvement • test scheduling • test order • program understanding • test cases and test data preparation • regression test • metrics • verification • design and code review • metrics • documentation • version comparison • change impact analysis • regression test SQA Tester Maintenance

More Related