reverse engineering of gui models

20
18 th June 2010 Reverse Engineering of GUI Models for Testing André M. P. Grilo, Ana C. R. Paiva, João Pascoal Faria CISTI 2010

Upload: andre-grilo

Post on 05-Jun-2015

1.110 views

Category:

Technology


3 download

DESCRIPTION

Reverse Engineering of GUI Models for Testing

TRANSCRIPT

Page 1: Reverse engineering of gui models

18th June 2010

Reverse Engineering of GUI Models for Testing

André M. P. Grilo, Ana C. R. Paiva, João Pascoal Faria

CISTI 2010

Page 2: Reverse engineering of gui models

18th June 2010

Contents

Introduction

Reverse Engineering Approaches

Reverse Engineering and Testing Process

REGUI Tool

Case Study

Conclusions

CISTI 2010

Page 3: Reverse engineering of gui models

18th June 2010

Motivation

CISTI 2010

Page 4: Reverse engineering of gui models

18th June 2010

Context

CISTI 2010

AMBER iTest

Visual modellin

g

Coverage informatio

n

UML visual model

Test coverag

e analysis

new Spec Explorer

Test casegeneratio

n

Visual to formal model

translation new

m()prepost

{body}

Test suite

(abstract)

Test results

Test Executio

n Spec Explorer

GUI mapping

code & data (adapter)

GUI Applicatio

nUnder Test

........

......

...

Model to implementatio

n mapping

oracle

Reverse Engineering

new

REGUI Tool

Page 5: Reverse engineering of gui models

18th June 2010

Objectives

CISTI 2010

Diminish effort required to construct the model

Automate the interactive exploratory process

Extract: Structural Information Navigation Steps Behaviour

Produce a Spec# Model

Page 6: Reverse engineering of gui models

18th June 2010

Static Approach Dynamic Approach

CISTI 2010

Reverse Engineering Approaches

Page 7: Reverse engineering of gui models

18th June 2010

Reverse Engineering and Testing Process

CISTI 2010

Page 8: Reverse engineering of gui models

18th June 2010CISTI 2010

Description of the Algorithm (1/2)

Phase One

Page 9: Reverse engineering of gui models

18th June 2010CISTI 2010

Description of the Algorithm (2/2)

Phase Two

Page 10: Reverse engineering of gui models

18th June 2010CISTI 2010

Description of the Algorithm (3/3)

Phase Three

Page 11: Reverse engineering of gui models

18th June 2010

REGUI Tool

CISTI 2010

Page 12: Reverse engineering of gui models

18th June 2010

Structural Information

CISTI 2010

<?xml version="1.0" encoding="utf-8" ?>

<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<window>

<name>Find</name>

<AutomationID />

<ControlType>Dialog</ControlType>

<L_Controls>

...

<Control>

<name>Find Next</name>

<AutomationID>1</AutomationID>

<ControlType>button</ControlType>

</Control>

<Control>

<name>Find what:</name>

<AutomationID>1152</AutomationID>

<ControlType>edit</ControlType>

</Control>

...

</L_Controls>

</window>

Page 13: Reverse engineering of gui models

18th June 2010

Navigational Steps

CISTI 2010

<navigation>

<Nav1>

<source>Notepad</source>

<destination>Find</destination>

<steps>

<Nsteps>6</Nsteps>

<0>setText document = "aaa"</0>

<1>FocusChange Edit</1>

<2>Mouse Click</2>

<3>FocusChange Find</3>

<4>Mouse Click</4>

<5>FocusChange FindWhat</5>

</steps>

</Nav1>

...

</navigation>

</application>

Page 14: Reverse engineering of gui models

18th June 2010

Inferring Dependencies

CISTI 2010

<dependency>

<dep1>

<window>Find What</window>

<source>textbox Find what:</source>

<destination>button Find Next</destination>

<action>setText(“a”, Find What)</action>

<property>FindNext.IsEnabled = true</property>

</dep1>

...

</dependency>

Page 15: Reverse engineering of gui models

18th June 2010

Spec# Model//Notepad window

[Action] void SetTextDocument(string typedText)

modifies Document.text && MenuItemFind.IsEnabled;

requires IsEnabled("Notepad");

{ //TODO}

[Action] void MenuItemFind()

requires text!="" && IsEnabled("Notepad") ;

ensures IsOpen("Find"));

{ //TODO}

//Find dialog

[Action] void SetTextFindWhat(string str)

modifies TextFindWhat.text && ButtonFindNext.IsEnabled;

requires IsEnabled("Find");{

TextFindWhat.text = str;

}

[Action] void FindNext()

requires IsEnabled("Find");

{ //TODO}

CISTI 2010

Page 16: Reverse engineering of gui models

18th June 2010CISTI 2010

Conclusions

Presented a new technique to obtain a model of the GUI’s structure and some of its behaviour.

Model kept in a XML file Spec#

The reverse engineering process combines automatic with manual exploration

which solves some of the “blocking problems” found in the approaches

Using the REGUI tool, the effort in the construction of the GUI model was reduced

Page 17: Reverse engineering of gui models

18th June 2010

Main Contributions

A New Reverse Engineering Approach

A REGUI Tool

CISTI 2010

Page 18: Reverse engineering of gui models

18th June 2010

Future Work

Implement new algorithms to extend the set of dependencies among GUI objects found automatically by the tool;

We also intend to validate the approach with more complex software applications.

CISTI 2010

Page 19: Reverse engineering of gui models

18th June 2010CISTI 2010

Page 20: Reverse engineering of gui models

18th June 2010

Thanks for your time

CISTI 2010