+ All Categories
Home > Documents > AUTOMATED MODEL-BASED TESTING OF WEB APPLICATIONSatif/GTAC08 · AUTOMATED MODEL-BASED TESTING OF...

AUTOMATED MODEL-BASED TESTING OF WEB APPLICATIONSatif/GTAC08 · AUTOMATED MODEL-BASED TESTING OF...

Date post: 14-Feb-2019
Category:
Upload: buicong
View: 219 times
Download: 0 times
Share this document with a friend
48
© Akinmade & Memon; @cs.umd.edu 1 AUTOMATED MODEL-BASED TESTING OF WEB APPLICATIONS Oluwaseun Akinmade & Prof. Atif M. Memon [email protected] [email protected] Department of Computer Science & Institute for Advanced Computer Studies (UMIACS) University of Maryland, College Park, Maryland, USA
Transcript

© Akinmade & Memon; @cs.umd.edu

1

AUTOMATED MODEL-BASED TESTING OF WEB APPLICATIONS

Oluwaseun Akinmade & Prof. Atif M. Memon

[email protected] [email protected]

Department of Computer Science &

Institute for Advanced Computer Studies (UMIACS)

University of Maryland, College Park, Maryland, USA

© Akinmade & Memon; @cs.umd.edu

2

Dispatcher

Event-driven Sofware (EDS) in Acton!

EventsE4

E4

E5

E5

E6

E6

E7

E7

E8

E8

E1

E1

E2

E2

E3

E3

Registered Event Handlers

e1

e2

e3

State = S0State = S1State = S2State = S3

e3

E1

E1

E2

E2

E3

E3

E4

E4

E5

E5

E6

E6

E7

E7

E8

E8Event

Handlers Can handle an event of type e1

Execution Environment

•EDS testing is challenging; test cases are sequences of events•Event-interaction space to be tested is huge

•Number of test cases grows exponentially with length (# of events)•We don’t yet know how to sample the space of all event interactions

© Akinmade & Memon; @cs.umd.edu

3Web Applicatons are Event Driven

UserEvents

WebApplication

PushButton btnG

PushButton btnI

E1

E2

© Akinmade & Memon; @cs.umd.edu

4Event Handlers Across Tiers

PresentationTier

LogicTier

DataTier

UserEvents

E1

E2

E3

E4E

5

E6

<script type="text/javascript">function hide(divID) { var item = document.getElementById(divID); if (item) { item.className=(item.className=='hidden')?'unhidden':'hidden';}}</script>

Data management events

test(“test to see if the widget is hidden on hide()", foo(){ $("#testDiv").hide(); /* lets compare actual with expected */ equals($("#testDiv").css("display"), "none", "The widget should be hidden");});•All these tests (and more) are important.

•E.g., test for performance, concurrent users, environment (e.g., client configuration)

•CGI scripts tests•ASP Unit Tests•General functional tests•Etc.

May consist of many interrelated technologies; inter-tier events:• CGI Applications• ISAPI Extensions and Filters• Active Server Pages• ASP Applications• Process Isolation and Crash Recovery

•Many complex tests for data management tier•Functional and performance tests•Database state plays important role•Requires experience and skill

© Akinmade & Memon; @cs.umd.edu

5Our Research Focus – Test Through the UI

UserEvents

WebApplication

PushButton btnG

PushButton btnI

E1

E2

•Obtain sequences of user events•These sequences become test cases

•Obtain expected outcome (for “test oracle”)•Execute the test cases automatically•Verify execution behavior

© Akinmade & Memon; @cs.umd.edu

6

Environment-Infuenced Accessibility

6

Mozilla 0.9|

Netscape 4.8

© Akinmade & Memon; @cs.umd.edu

7

State of the Practce – Manual

• Very few test cases• Test oracle: mostly visual• Test “common” sequences

– What is “common”?• Try some “uncommon”

sequences

• Test cases not reusable– Must do it again when app

changes

Set of

Tasks

© Akinmade & Memon; @cs.umd.edu

8

State of the Practce – Code Tests

WebDriver• Can be replayed

automatcally• Multple machines• Regression

testng: Applicaton evolves

• Oracle: what to check?

• Stll have “Few tests” problem

Several other tools• Selenium

// Use Google. driver.get("http://www.google.com");

// Search for Scott McMaster! WebElement query = driver.selectElement("//input[@name='q']"); query.setValue("Scott McMaster");

// Click the search button. WebElement submitButton = driver.selectElement("//input[@name='btnG']"); submitButton.click();

// Grab the results. List<WebElement> results = driver.selectElements("//h2[@class='r']/a");

Thanks Scot!

© Akinmade & Memon; @cs.umd.edu

9

State of the Practce – Capture/Replay

Set of

Tasks

Capture

Replay

• Tester MANUALLY performs events on the Web• Tool records all user inputs • Partial response/state as specified by tester

•Good example: Selenium IDE•Firefox addon that records clicks, typing, and other actions to make a test, which you can play back in the browser. http://selenium.openqa.org

Test

File

Test

File

Test

File

Test

File

© Akinmade & Memon; @cs.umd.edu

10

Capture

State of the Practce – Capture/Replay

Replay

Test

File

Test

File

Test

File

Test

File

• Tool replays tester’s actions• Verifys application response against stored response

© Akinmade & Memon; @cs.umd.edu

11

State of the World

• Solved Problems– Tests can be replayed

automatcally– Multple servers– Run tests in multple

browsers and platorms– Good test management– Can vary data for a test

case• Text felds

• These problems persist– How to sample the

space of all possible event interactons

– Regression testng: Web applicaton evolves

– Oracle: what to check?– More philosophical

queston remains• How to test Web sofware

and other large event-driven applicatons?

© Akinmade & Memon; @cs.umd.edu

12

Our Approach

• Start with capture/replay tools– Well-engineered– Test management

• For Desktop GUI Applicatons– Probabilistc state machines– Preconditons & Efects (from specs)

• Test oracle• AI planning for test case generaton

– Directed graph models (user’s view)• Event-fow graphs

– Dynamic behavior (from run-tme)

• For Web Applicatons– State-machine Models (from specs)

• Good s of t b ots for running test c as es

• Good s of t b ots for running test c as es

Replay

• Mous e/ k ey-board i nt er c ept or s• Wel l -defined File f or mat s• Good UI s

• Mous e/ k ey-board i nt er c ept or s• Wel l -defined File f or mat s• Good UI s

Captur e

Web Application Model

Model is one “view” of the sofware

Operator :: ZoomInParameters: wX: window; m: map;Precondition:

isCurrent(wX) &currentZoom = getZoom(m) &currentZoom != $maxZoom.

Effects:currentZoom++

© Akinmade & Memon; @cs.umd.edu

13

BASED ON OUR PAST WORK ONDESKTOP GUI APPLICATIONS

Our future plans for model-based web applicaton testng...

A sneak preview!

© Akinmade & Memon; @cs.umd.edu

14

• Test case generation• Random walk• Covering all edges• (2-way covering test cases)

Follows

Follows Relationships

Follows

Sharpen

• Event interacton graph (EIG)– Nodes: GUI events; Edges: Follows path

Modeling the User’s Event-Interacton Space

• Event Flow graph (EFG)Event Flow graph (EFG) • Nodes: GUI events; Edges: Nodes: GUI events; Edges: FollowsFollows relatonshiprelatonship

Follows Path

Very promising technology for GUI-like Web UIs

© Akinmade & Memon; @cs.umd.edu

15Creatng Event-Flow Graphs

File E

dit

Help

Open

Save

Cut

Copy

Paste

About

Contents

To File, Edit and Help

To File, Edit and Help

• How to create the event-flow graph?How to create the event-flow graph?• Manually?Manually?

• Too large for non-trivial GUIsToo large for non-trivial GUIs

© Akinmade & Memon; @cs.umd.edu

16A Part of MS WordPad

© Akinmade & Memon; @cs.umd.edu

17

Its Event-Flow Graph

© Akinmade & Memon; @cs.umd.edu

18Automaton

File E

dit

Help

Open

Save

Cut

Copy

Paste

About

Contents

To File, Edit and Help

To File, Edit and Help

• How to create the event-flow graph?How to create the event-flow graph?• AutomaticallyAutomatically

• GOAL: Obtain the Event-Flow GraphGOAL: Obtain the Event-Flow Graph• Fully automaticallyFully automatically• No source codeNo source code

© Akinmade & Memon; @cs.umd.edu

19

GUI Ripping• Dynamic algorithm

– No need for source code• Execute the GUI-based

sofware– Traverse the GUI

• Obtain handle of frst window• Use windowing API to extract

widgets/menus• Apply transformatons

– Based on GUI dialogs– GUI hierarchy– Enabled/disabled widgets

• Traverse multple tmes if needed

• Engineering Issues– Understanding platorm-specifc

GUI frameworks• OS-specifc GUI handling

– Introspecton– Windowing API– Java Swing API– Interacton between Java and the

OS• Result – Generic process for GUI

Ripping• MS Windows, Java Swing• Immediate impact – Obtained EFGs

for large GUIs in a few minutes• Automatc transformaton to

event-interacton graph (EIG)

Currently working on a Web Ripper

If anyone here has any ideas, please talk to us!

© Akinmade & Memon; @cs.umd.edu

20

Full Automaton

• Process– Rip GUI applicaton– Generate event-fow graph– Transform to event-interacton graph– Use our new test-adequacy criteria to generate test cases (e.g., cover

all edges – important sequences of events in a GUI)– Use test executor to run all test cases

• Test Oracle– “Did the applicaton crash?”

© Akinmade & Memon; @cs.umd.edu

21

Lets See How It Works!

• SourceForge.net– Four applicatons

• The Process– Gets code from CVS head– Builds– Reverse engineers the

event-fow graph– Creates EIG– Generates test cases to

cover all the edges• 2-way covering

– Runs them

0

1

2

3

4

5

6

7

8

9

Nu

mb

er o

f F

au

lts

Det

ecte

d

CrosswordSage

GanttProject

FreeMind

JMSN

© Akinmade & Memon; @cs.umd.edu

22

Going Beyond 2-way Covering Tests

• Xun Yuan (PhD student, now at Google – and in the audience today)• Intuiton

– Non-interactng events (e.g., Save, Find)– Interactng events (e.g., Copy, Paste)

• Approach– Identfy interactng events– Mark the

EIG edges(Annotated graph)

– Generate 3-way, 4-way, … covering test cases for interactng events only

EIG

“Using GUI Run-Time State as Feedback to Generate Test Cases” by Xun Yuan and Atif M. Memon. In ICSE '07: Proceedings of the 29th International Conference on Software Engineering, May 23-25, 2007, pp. 396-405.

© Akinmade & Memon; @cs.umd.edu

23

• High-level overview of approach– Observe how events execute on the GUI– Events interact if they infuence one another’s executon

• Execute event e2; execute event sequence <e1, e2>• Did e1 infuence e2’s executon? • Use GUI runtme state to answer this queston• If YES, then they must be tested further; annotate the <e1, e2> edge in

graph

• Use feedback– Generate seed suite

• 2-way covering test cases– Run test cases

• Needed to obtain sets of GUI states– Collect GUI run-tme states as feedback – Analyze feedback and obtain interactng event sets– Generate new test cases

• E.g., 3-way, 4-way, … covering test cases

Identfying Interactng Events

“Alternating GUI Test Generation and Execution” by Xun Yuan and Atif M. Memon. In TAIC PART '08: Proceedings of the IEEE Testing: Academic and Industrial Conference 2008.

© Akinmade & Memon; @cs.umd.edu

24

Did We Do Beter?

• Compare feedback-based approach to 2-way coverage

0

1

2

3

4

5

6

7

8

9

Nu

mb

er o

f F

ault

s D

ete

cted

CrosswordSage

GanttProject

FreeMind

JMSN

© Akinmade & Memon; @cs.umd.edu

25

BACK TO WEB APPLICATIONS

© Akinmade & Memon; @cs.umd.edu

26Lets Start with an Example

•This simple web app has states•Can be determined by executing the app

•Or examining requirements•Or specs (if they exist)

•For example, the login page offers at least 4 user events

© Akinmade & Memon; @cs.umd.edu

27State-Machine Model

•Model traversal to obtain event sequences•And intermediate states•For example, start with S_index state

•usrnameText, <usrnameSt>•PasswdText, <usr+passSt>•Submit, <main.html>

•Many other ways to traverse•These ways lead to test planning, determine cost, and test adequacy criteria

© Akinmade & Memon; @cs.umd.edu

28Example Event Sequences

elem.sendKeys (“username”);elem.sendKeys (“password”);elem.submit ();

elem.sendKeys (“password”);elem.sendKeys (“username”);elem.submit();

elem.toggle(); // t_agreeelem.click(); // t_browseelem.clear(); // del_browseelem.sendKeys(“Hello World!”); // t_textelem.click(); // t_browseelem.clear(); // del_textelem.sendKeys(“Hello World!”); // t_textelem.clear(); // del_browseelem.clear(); // del_textelem.toggle(); // del_agreeelem.toggle(); // t_agreeelem.submit();elem.click(); // t_prevelem.click(); // t_home_linkelem.click(); // t_browseelem.sendKeys(“Hello World!”); // t_textelem.submit();

© Akinmade & Memon; @cs.umd.edu

29Test Cases = Event Sequences + Expected State// Event/User Actionpasswd_elem.sendKeys (“password”); // Expected state is passwdSt assert ( (driver.getTitle().equals("Index Page")) && (usrname_elem.getValue().equals("")) && (passwd_elem.getValue().equals("password")))// Event/User Actionreset_elem.click(); // t_reset // Expected state is S_index assert ( (driver.getTitle().equals("Index Page")) && (usrname_elem.getValue().equals("")) && (passwd_elem.getValue().equals("")))// Event/User Actionpasswd_elem.sendKeys (“username”); // Expected state is usrnameSt assert ( (driver.getTitle().equals("Index Page")) && (usrname_elem.getValue().equals("username")) && (passwd_elem.getValue().equals("")))

Example adequacy criteria: cover all states; cover all transitons; all possible pairs of states

© Akinmade & Memon; @cs.umd.edu

30

Applicaton Under Test

3. State-Machine Tables

Our Tool – STATEST (1)

State-Machine Visualizaton

1. State-Code Mapping2. Event-Code Mapping

ASML Code

Index.html S_index usrname usr+pass F_main errorS_index t_reset t_usrname - - t_submitusrname t_reset - t_passwd - t_submitpasswd t_reset - t_usrname - t_submitusr+pass t_reset del_passwd - t_submit -F_main - - - - -

error t_prev - - - -

Random.html 

color + day color+time day+time color+day + time

F_main F_index F_the_end

S_random - - - - t_prev_link t_home_link -

color t_day t_time - - t_prev_link t_home_link -

day t_color - t_time - t_prev_link t_home_link -

time - t_color t_day - t_prev_link t_home_link -

color+day - - - t_time t_prev_link t_home_link -

color+time - - - t_day t_prev_link t_home_link -

day+time - - - t_color t_prev_link t_home_link -

color + day + time

del_time del_day del_color - t_prev_link t_home_link t_submit

F_main - - - - - - -

F_index - - - - - - -

F_the_end - - - - - - -

OurTranslator

GraphViz

From htp://www.graphviz.org/ The Graphviz layout programs take descriptons of graphs in a simple text language, and make diagrams in several useful formats such as images and SVG for web pages, Postscript for inclusion in PDF or other documents; or display in an interactve graph browser. (Graphviz also supports GXL, an XML dialect.)

From htp://research.microsof.com/fse/asml/ AsmL is the Abstract State Machine Language. It is an executable specifcaton language based on the theory of Abstract State Machines, invented by Yuri Gurevich. AsmL provides the foundatons of the model-based testng tool Spec Explorer.

© Akinmade & Memon; @cs.umd.edu

31Our Tool – STATEST (2)

ASML CodeEvent

Sequences + State

Our AutomatcEvent-Sequence

Generator

Our WebDriver Command Generator

1. State-Code Mapping2. Event-Code Mapping

WebDriver Test Cases

© Akinmade & Memon; @cs.umd.edu

32Event-Sequence Generaton Algorithm1.Begin at the Start state2.Call getShortestExample() method to get a traversal_path3.To recursively get a list of all other possible shortest paths:

1.Make a copy (tempModel) of the currModel Automaton2.For each Transition pTran in the current traversal_path

a.Remove pTran from the tempModel Automatonb.Remove all dead states as a result of the above actionc.Call getShortestExample() method to get a new traversal_pathd.Make a new copy (tempModel) of the Automaton

4.Recursively traverse the state-machine model to get a list of longer path sequences that could possibly be generated from the currModel Automaton. This is modeled after the Depth First Search algorithm.dfs_Func (state, pathSeq):

1.If state is an accepting/final state { add pathSeq to pathList array }2.Otherwise:

a.If all outgoing transitions from state have been takeni.Backtrack to previous state node

b.Else for each outgoing transition trans from state that is not takeni.Add trans to pathSeq ii.next_state = trans.destState()iii.dfs_Func (next_state, pathSeq)

1.To make sure that there are no states/transitions omitted from the pathList generated above:1.Get list of all transitions (allTrans) in the currModel Automaton2.For each transition trans in allTrans that is not in pathList: Add trans to missedTrans list

2.For each transition mTrans in missedTrans: generate path sequences that include mTrans.

© Akinmade & Memon; @cs.umd.edu

33

S_index

usr+passSt

usrnameSt

errorSt

passwdSt

Main.html

start

Reset

Reset

Reset

Reset

UsrnameText

UsrnameText

PasswdText

PasswdText

Del_Usrname

Del_Passwd

Submit

Submit

Submit

Submit

errorReturn

© Akinmade & Memon; @cs.umd.edu

34

S_index

usr+passSt

usrnameSt

errorSt

passwdSt

Main.html

start

Reset

Reset

Reset

Reset

UsrnameText

UsrnameText

PasswdText

PasswdText

Del_Usrname

Del_Passwd

Submit

Submit

Submit

Submit

errorReturn

<S_index>, PasswdText, <passwdSt>

© Akinmade & Memon; @cs.umd.edu

35

S_index

usr+passSt

usrnameSt

errorSt

passwdSt

Main.html

start

Reset

Reset

Reset

Reset

UsrnameText

UsrnameText

PasswdText

PasswdText

Del_Usrname

Del_Passwd

Submit

Submit

Submit

Submit

errorReturn

<S_index>, PasswdText, <passwdSt>

<passwdSt>, UsrnameText, <usr+passSt>

© Akinmade & Memon; @cs.umd.edu

36

S_index

usr+passSt

usrnameSt

errorSt

passwdSt

Main.html

start

Reset

Reset

Reset

Reset

UsrnameText

UsrnameText

PasswdText

PasswdText

Del_Usrname

Del_Passwd

Submit

Submit

Submit

Submit

errorReturn

<S_index>, PasswdText, <passwdSt>

<passwdSt>, UsrnameText, <usr+passSt>

<usr+passSt>, Submit, <Main.html>

© Akinmade & Memon; @cs.umd.edu

37

S_index

usr+passSt

usrnameSt

errorSt

passwdSt

Main.html

start

Reset

Reset

Reset

Reset

UsrnameText

UsrnameText

PasswdText

PasswdText

Del_Usrname

Del_Passwd

Submit

Submit

Submit

Submit

errorReturn

<S_index>, PasswdText, <passwdSt>

<passwdSt>, UsrnameText, <usr+passSt>

<usr+passSt>, Submit, <Main.html>

<usr+passSt>, Del_passwd, <usrnameSt>

© Akinmade & Memon; @cs.umd.edu

38

S_index

usr+passSt

usrnameSt

errorSt

passwdSt

Main.html

start

Reset

Reset

Reset

Reset

UsrnameText

UsrnameText

PasswdText

PasswdText

Del_Usrname

Del_Passwd

Submit

Submit

Submit

Submit

errorReturn

<S_index>, PasswdText, <passwdSt>

<passwdSt>, UsrnameText, <usr+passSt>

<usr+passSt>, Submit, <Main.html>

<usr+passSt>, Del_Passwd, <usrnameSt>

<usrnameSt>, PasswdText, <usr+passSt>

© Akinmade & Memon; @cs.umd.edu

39

S_index

usr+passSt

usrnameSt

errorSt

passwdSt

Main.html

start

Reset

Reset

Reset

Reset

UsrnameText

UsrnameText

PasswdText

PasswdText

Del_Usrname

Del_Passwd

Submit

Submit

Submit

Submit

errorReturn

<S_index>, PasswdText, <passwdSt>

<passwdSt>, UsrnameText, <usr+passSt>

<usr+passSt>, Submit, <Main.html>

<usr+passSt>, Del_Passwd, <usrnameSt>

<usrnameSt>, PasswdText, <usr+passSt>

<usr+passSt>, Del_Usrname, <passwdSt>

S_index

passwdSt

© Akinmade & Memon; @cs.umd.edu

40

S_index

usr+passSt

usrnameSt

errorSt

passwdSt

Main.html

start

Reset

Reset

Reset

Reset

UsrnameText

UsrnameText

PasswdText

PasswdText

Del_Usrname

Del_Passwd

Submit

Submit

Submit

Submit

errorReturn

<S_index>, PasswdText, <passwdSt>

<passwdSt>, UsrnameText, <usr+passSt>

<usr+passSt>, Submit, <Main.html>

<usr+passSt>, Del_Passwd, <usrnameSt>

<usrnameSt>, PasswdText, <usr+passSt>

<usr+passSt>, Del_Usrname, <passwdSt>

<passwdSt>, Reset, <S_index>

© Akinmade & Memon; @cs.umd.edu

41

S_index

usr+passSt

usrnameSt

errorSt

passwdSt

Main.html

start

Reset

Reset

Reset

Reset

UsrnameText

UsrnameText

PasswdText

PasswdText

Del_Usrname

Del_Passwd

Submit

Submit

Submit

Submit

errorReturn

<S_index>, PasswdText, <passwdSt>

<passwdSt>, UsrnameText, <usr+passSt>

<usr+passSt>, Submit, <Main.html>

<usr+passSt>, Del_Passwd, <usrnameSt>

<usrnameSt>, PasswdText, <usr+passSt>

<usr+passSt>, Del_Usrname, <passwdSt>

<passwdSt>, Reset, <S_index>

<S_index>, Reset, <S_index>

S_index

Reset

© Akinmade & Memon; @cs.umd.edu

42

S_index

usr+passSt

usrnameSt

errorSt

passwdSt

Main.html

start

Reset

Reset

Reset

Reset

UsrnameText

UsrnameText

PasswdText

PasswdText

Del_Usrname

Del_Passwd

Submit

Submit

Submit

Submit

errorReturn

<S_index>, PasswdText, <passwdSt>

<passwdSt>, UsrnameText, <usr+passSt>

<usr+passSt>, Submit, <Main.html>

<usr+passSt>, Del_Passwd, <usrnameSt>

<usrnameSt>, PasswdText, <usr+passSt>

<usr+passSt>, Del_Usrname, <passwdSt>

<passwdSt>, Reset, <S_index>

<S_index>, Reset, <S_index>

<S_index>, UsrnameText, <usrnameSt>

© Akinmade & Memon; @cs.umd.edu

43

S_index

usr+passSt

usrnameSt

errorSt

passwdSt

Main.html

start

Reset

Reset

Reset

Reset

UsrnameText

UsrnameText

PasswdText

PasswdText

Del_Usrname

Del_Passwd

Submit

Submit

Submit

Submit

errorReturn

<S_index>, PasswdText, <passwdSt>

<passwdSt>, UsrnameText, <usr+passSt>

<usr+passSt>, Submit, <Main.html>

<usr+passSt>, Del_Passwd, <usrnameSt>

<usrnameSt>, PasswdText, <usr+passSt>

<usr+passSt>, Del_Usrname, <passwdSt>

<passwdSt>, Reset, <S_index>

<S_index>, Reset, <S_index>

<S_index>, UsrnameText, <usrnameSt>

<usrnameSt>, Reset, <S_index>

© Akinmade & Memon; @cs.umd.edu

44

TOOL DEMO

© Akinmade & Memon; @cs.umd.edu

45

Applicaton Under Test

3. State-Machine Tables

Helping the Tester Create the Model

1. State-Code Mapping2. Event-Code Mapping

Index.html S_index usrname usr+pass F_main errorS_index t_reset t_usrname - - t_submitusrname t_reset - t_passwd - t_submitpasswd t_reset - t_usrname - t_submitusr+pass t_reset del_passwd - t_submit -F_main - - - - -

error t_prev - - - -

Random.html 

color + day color+time day+time color+day + time

F_main F_index F_the_end

S_random - - - - t_prev_link t_home_link -

color t_day t_time - - t_prev_link t_home_link -

day t_color - t_time - t_prev_link t_home_link -

time - t_color t_day - t_prev_link t_home_link -

color+day - - - t_time t_prev_link t_home_link -

color+time - - - t_day t_prev_link t_home_link -

day+time - - - t_color t_prev_link t_home_link -

color + day + time

del_time del_day del_color - t_prev_link t_home_link t_submit

F_main - - - - - - -

F_index - - - - - - -

F_the_end - - - - - - -

Our Web Ripper (state-machine

based)

© Akinmade & Memon; @cs.umd.edu

46

Creatng the State Machine

• State discovery – Web Ripper• Defniton of State• Steps

– Automatc state discovery– Manual inspecton, editng

• DEMO

© Akinmade & Memon; @cs.umd.edu

47

What’s Next?• Models, Algorithms, and Evaluaton

– Enhance/extend the model– New state-machine traversal strategies– How good are our new test cases?

• Limitatons also point to future work– Plug-ins (e.g., Flash)– Nature of events (discrete vs. drag & drop)– Popups and unexpected widgets

• GUI Testng background points to lots more work

© Akinmade & Memon; @cs.umd.edu

48Questons, Discussion and Food for Thought

How do we test this familiar web applicaton?


Recommended