emmet
Uploaded by
15 SLIDES
300 VIEWS
150LIKES

Analyzing Complex Data Structures Using PEX for Effective Test Generation

DESCRIPTION

This research explores the application of Microsoft PEX for white-box test generation focused on complex data structures such as lists, queues, maps, trees, and graphs. By implementing the Directed Automated Random Testing (DART) approach, the study examines how a push-button methodology can effectively generate test inputs for programs with pointers. With concrete examples and practical implementations, it discusses the limitations of PEX, reports bugs, and suggests methods for improvement, including factory and pool approaches. The findings underline the potential for further research in this area.

1 / 15

Download Presentation

Analyzing Complex Data Structures Using PEX for Effective Test Generation

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. Analysis of Complex Data Structures with PEX VadimMutilin EvgeniyGerlits Vladimir Fedotov Mentor: Patrice Godefroid

  2. Microsoft Pex • White box test generation for .NET • Implements DART (Directed Automated Random Testing): combines concrete and symbolic executions • Push button approach

  3. Complex Data Structures • Examples: List, Queue, Map, Tree, Graph

  4. Motivation • Nikolai Tillmann, et al. Test Input Generation for Programs with Pointers. TACAS 2009. • Does push button approach really work on complex data structures? • class MyList<T> • private T value • add(T value) • void removeAT(intindex) • T getItem(int index)

  5. Project Goals • Understanding limits • Documentation • Authors • Concrete examples • Making out suggestions • Usage patterns • Improvements

  6. Push Button Approach

  7. Push Button (Results) • MyContains 6/6 (100.00%), 103 Runs

  8. Push Button (MyList)

  9. Push Button (Results) covered/total basic blocks (test runs)

  10. Factory Approach • Pex generates template for Factory method • User adds Factory method which generates the inputs • Factory method may be parameterized

  11. Factory (Results) covered/total basic blocks (test runs)

  12. Pool Approach • Collection of concrete input objects • Collection is created manually by the tester • Pex iterates indexes • Implementation is called with concrete objects by their indexes

  13. Pool (Results) covered/total basic blocks (test runs)

  14. Relaxing Visibility Constraints Can be done with annotation

  15. Conclusion • Pex limitations are still unclear • 2 bugs reported to the Pex team • Suggested • Pool approach • Relaxing visibility constraints with annotations • Promising topic for further research

More Related