Test Automation in Flex - Richa Sharma

Post on 20-Jan-2015

1,917 views 2 download

Tags:

description

Flex is a highly productive, free open source framework for building and maintaining expressive web applications that deploy consistently on all major browsers, desktops, and operating systems. Test Automation involves automation design and execution of automated tests. The Flex test automation feature provides developers with the ability to create Flex applications that use the automation APIs. These APIs can be used to create automation agents or to ensure that applications are ready for testing. This session would cover basics of Flex Test Automation. One of the many available tools to be touched upon in this session would be FlexMonkey – a testing framework for Flex applications that provides for the capture, replay and verification of Flex UI functionality.

transcript

Test Automation In Flex

Richa Sharma

SAS Research And Development (India)

Agenda

• Automate It!• The Flex Automation Feature• Prepare to Automate• Automated Testing Workflow• Instrumentation• FlexMonkey – A dekko• Summary• Q&A

Flex Overview

Automate It!

• Flex provides an automation feature which makes Flex applications automation enabled.

• Flex Automation APIs aid in creating custom agents or ensuring the readiness of Flex applications for testing.

• Flex also provides support for the automation tool – QTP.

The Flex Automation Feature

• Automation libraries• QTP files• Samples

The Automation Libraries

• Automation libraries – delegate implementations for Flex framework components• automation.swc• automation_agent.swc – generic agent mechanism• automation_dmv.swc – delegates for charting and

Advanced DataGrid components

Prepare to Automate• Prepare the application:

• Use automation at runtime• Use automation at compile-time (Make your own

testable application)

• Prepare customized components for testing• Deploy the application

Prepare to Automate - Runtime

• Automation at runtime• Wrapper SWF file compiled with automation

libraries• The SWF uses SWFLoader to load the

application SWF

Prepare to Automate – Compile time

• Make your own testable application• Compile the application with the automation

libraries• Requires access to Flex application• Embedding of functional testing classes

increases the size of the SWF

Prepare to Automate

• Points to remember while developing:• All testable controls should have ids• Unique ids• Containers can be excluded from being tested

if not impacting the test• UIComponent class – showInAutomationHierarchy

• Can be avoided:• Same labels for multiview containers like

TabNavigator• Dynamically adding children

Prepare to Automate

• Points to remember while testing:• If automation is used at compile-time

• Look out for inflated SWF files• Remove references of automation libraries from

SWF before deploying on production server

Automated Testing Workflow

• Initialization• Recording• Playback

Automation Workflow – Initialization

Automation Workflow – Recording

Automation Workflow – Playback

Instrumentation• Required for custom components or events

• Enables custom components or events to be testable

Instrumentation

• Requirements for instrumentation of a custom component:

•Delegate class•Appropriate entry in the class definition file

Instrumentation – The Delegate• For instrumentation of a custom component with

a delegate:• Create a delegate that

• is a mixin• implements the required interfaces

• Register the delegate with AutomationManager

• Define the component in the class definitions xml

Instrumentation – The Class Definition File

• Information about all the instrumented Flex components

• Tells the automation agent:• What is the name of the component • What events can be recorded and played back• What are the testable properties

Instrumentation – The Class Definition File

Typical structure:

<TypeInformation>

<ClassInfo>

<Description/>

<Implementation/>

<TypeInfo><Operation/> ... </TypeInfo> <Properties><Property/> ... </Properties>

</ClassInfo>

</TypeInformation>

Instrumentation – Considerations• Composition – single/composite component

• Container Hierarchy – understanding the automation hierarchy

• Automation name – clear, unambiguous names for easy referencing

FlexMonkey – A dekko

• FlexMonkey is an Adobe AIR application used for testing Flex and AIR based applications.

• Records, plays back and verifies Flex UI interactions

• Generates ActionScript-based testing scripts that can be easily included within a continuous integration environment.

FlexMonkey – Demo

To summarize…• Flex applications can be automated using the

Flex Automation APIs• Applications can be prepared to use automation

at:• Run Time

• Compile Time • Custom components need instrumentation:

• Delegate• Entries in the class definition file

Learnings• Components need a unique id• Containers not affecting the test can be avoided • Different labels are needed for multiple tabs in

TabNavigator, Accordian etc.• Component display hierarchy can be different

from Automation hierarchy

Latest on Flex AutomationNew in FlashBuilder 4 automation:• Automation of Flex 4 AIR applications

• Automation of Flex 4 applications• mx.core.Application, Halo – supported

• Spark based applications – not supported

• Automation of Marshalled Flex and AIR applications

References• http://livedocs.adobe.com/flex/3/html/help.html?content=functest_components2_02.html

• http://www.artima.com/articles/flex_spark.html • http://ranikumar.wordpress.com/category/flexautomation/ • http://opensource.adobe.com/wiki/display/flexsdk/Marshall+Plan

• http://www.gorillalogic.com/flexmonkey

Q&A