Testing Flex RIAs


  Viktor Gamov, Farata Systems
         April, 27 2011
Agenda
•   Why to test?
•   Automation testing and tools overview

•   Flex Automation 101

    •   Flex Automation Framework building blocks

    •   How to prepare you components for
        automation testing
•   Using FlexMonkey for testing custom components
Why to test?
Software Has Bugs


•   We want to minimize the number, and

•   We want change to safe

•   How?
Testing Flex RIAs for NJ Flex user group
Only person who can write code
       without bugs is ...
Only person who can write code
       without bugs is ...
Why Chuck Norris
 does not test?
Why Chuck Norris
      does not test?
•   His code is perfect
Why Chuck Norris
      does not test?
•   His code is perfect

•   He does not need code documentation and
    communication on the project
Why Chuck Norris
      does not test?
•   His code is perfect

•   He does not need code documentation and
    communication on the project

•   Perfect memory
Why Chuck Norris
      does not test?
•   His code is perfect

•   He does not need code documentation and
    communication on the project

•   Perfect memory

•   Refactoring without problems
Testing Flex RIAs
Testing Flex RIAs

•   Unit testing
Testing Flex RIAs

•   Unit testing

•   Functional (UAT,
    QA)testing
Testing Flex RIAs

•   Unit testing

•   Functional (UAT,
    QA)testing

•   Integration testing
Testing Flex RIAs

•   Unit testing

•   Functional (UAT,
    QA)testing

•   Integration testing

•   Load testing
Automation testing
tools overview

•   QTP

•   Selenium

•   Ranorex

•   FlexMonkey
QTP
Pros:
•   All-in-one suite for automation testing
    enterprise applications

•   Supports large pool of  software development
    environments like SAP , Web , Oracle etc.
•   QTP is easier to use and implement for both
    technical & non technical testers

•   Support libraries out-of-the-box with
    Flex(qtp.swc, qtp_air.swc)
QTP
Cons:
•   Unstable work

•   Absence of IDE for debugging scripts

•   Only Windows and IE (sorry Mac and Linux

•   VBScript as scripting language

•   Not free and expensive
Selenium + Flex API

•   Web applications testing

•   Open source and large community

•   Cross platform (Selenium IDE - browser
    extension)

•   JavaScript as scripting language
Ranorex
•   Similar to QTP, but better

•   Support large amount supported technologies
    (.NET, WPF, Silverlight, Qt, Win32, Delphi, WFC, Java
    SWT, Web testing, Flash/Flex testing) and platforms

•   Script languages C#,VB.NET, IronPython

•   Integration with Visual Studio 2010

•   Platform: Windows

•   Not free, ~$1590 for one license (full suite)
FlexMonkey
•   OpenSource (commercial support available)

•   Flex apps testing centric tool

•   Cross platform (console - AIR application )

•   Generated FlexUnit 4 test code

•   Supports testing only Flex applications (no Flash)

•   Integration with Selenium IDE (FlexMonkium
    project)
The process of creating a custom
component that supports automated
testing is called instrumentation
Flex Automation 101
Testing Flex RIAs for NJ Flex user group
Component delegate
•   instance of delegate class gets added for each instance
    of components
•   delegates know about the component which
    associated

•   adds listeners to interested events of component
•   decides what to do when an event occurs and calls
    appropriate method on Automation Manager
•   can provide additional methods which will be
    interested for testers
Automation Flow
   Core Flex API                    SystemManager




                                        Automation   Delegates
   Automation API      Automation        Manager
                                                      Delegates
                                                         Delegates




                       QTP            FlexMonkey        Selenium
   Agent Classes
                      Agent              Agent           Agent




   Automation Tools   QTP             FlexMonkey        Selenium
Flex Automation
Framework building blocks
•   Component delegate (automation.swc,
    automation_dmv.swc ...., custom classes )

•   Automation Manager
    (automation_manager.swc)

•   Tool Adapter (automation_monkey4.x.swc)

•   Testing Tool (FlexMonkey Console)

•   Environment configuration
[Mixin] metadata tag

•   use is to create static code blocks to initialize
    parts of your application

•   that static code will be executed when a
    preloader finishes loading of the application
    class and the SystemManager is ready to kick
    off [2 frame]
[Mixin] example
import mx.managers.ISystemManager;

//---------------------------------------------------
// Example
//---------------------------------------------------
[Mixin]
public class MyMixin
{

 /**

   * called due to the fact that i've used the [Mixin] metatag

   * @param systemManager

   */

 public static function init(systemManager:ISystemManager):void

 {

 
 // do something

 }
}
How to prepare your
  components for
 automation testing
What is a custom
        component
•   A component extending from a standard
    component (No additional events, no
    additional properties)

•   A component extending from a standard
    component – Additional events/ additional
    properties
•   A component extending from a non container
    class, but the current class is a container.
What to do in delegate
    if component extending from standard component




•   Nothing! Use delegate classes shipped with
    Flex Framework
What to do in delegate
if component extending from standard component + additional
                   events or properties



•   Add Event listener to interesting event

•   Identify the details of the event which is
    needed to reply the event later

•   Pass event to record to automation manager

•   handle reply of the event
What do in delegate
component extending from non container class, but the
   current class need to be threaded as a container

 •   Expose required children

     •   getAutomationChildren

     •   getAutomationChildAt

     •   get numAutomationChildren

 •   Provide the child handler methods

     •   createAutomaitonIDPart

     •   resolveAutomationIDPart

     •   createAutomationIDPartWithRequiredProperties
Using FlexMonkey for
   testing custom
    components
        Demo
Conclusion
•   Testing is a very powerful tool to help
    produce, maintain and impart confidence in
    your software

•   Actionscript 3 now has testing tools
    approaching the level available to Java
    developers

•   We should all be testing!
Resources
•   Enterprise Development with Flex, O’reilly,
    2010

•   GorillaLogic http://clck.ru/BXV4

•   Ranorex Flex Testing http://clck.ru/BXUk

•   Automation Docs http://clck.ru/Bqbn

•   Blog on Flex Automation http://clck.ru/BqbU
Thank you!


Contact me!

More Related Content

PDF
Foundational Design Patterns for Multi-Purpose Applications
PPTX
2016 NIWeek - TI’s Continuous Delivery Machine for Accelerated Application De...
PPTX
Test automation proposal
PPTX
Automating functional testing of Flex applications.
PDF
Expedia 3x3 presentation
PPTX
Ivan Danilov «Desktop Application Automation: .NET Developer’s Perspective»
PDF
TestWorks Conf Robot framework - the unsung hero of test automation - Michael...
Foundational Design Patterns for Multi-Purpose Applications
2016 NIWeek - TI’s Continuous Delivery Machine for Accelerated Application De...
Test automation proposal
Automating functional testing of Flex applications.
Expedia 3x3 presentation
Ivan Danilov «Desktop Application Automation: .NET Developer’s Perspective»
TestWorks Conf Robot framework - the unsung hero of test automation - Michael...

What's hot (19)

PPTX
Sonar qube to impove code quality
PPT
Alina Cojocariu - Flex and Android tests with Ranorex
PPT
Software Testing - Tool support for testing (CAST) - Mazenet Solution
PPTX
Python in Test automation
PPTX
Konstantinos Sidiropoulos - Testing microservices a real example
PPTX
Testing microservices
PPT
Eclipse UI automation
PPTX
Test automation using selenium
PPT
Robot Framework for beginners and what is new at 2019
PPTX
Automation is Easy! (python version)
PDF
Database Applications Lifecycle Management
PPTX
Unit Testing in Swift
PPTX
Selenium Training in Chennai
PDF
Robot Framework with actual robot
PDF
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
PPTX
QA Fes 2016. Александр Хотемской. Обзор ProtractorJS как фреймворка для брауз...
PPTX
Robot framework Gowthami Goli
PDF
Ruin your life using robot framework
PDF
Selenium Handbook
Sonar qube to impove code quality
Alina Cojocariu - Flex and Android tests with Ranorex
Software Testing - Tool support for testing (CAST) - Mazenet Solution
Python in Test automation
Konstantinos Sidiropoulos - Testing microservices a real example
Testing microservices
Eclipse UI automation
Test automation using selenium
Robot Framework for beginners and what is new at 2019
Automation is Easy! (python version)
Database Applications Lifecycle Management
Unit Testing in Swift
Selenium Training in Chennai
Robot Framework with actual robot
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
QA Fes 2016. Александр Хотемской. Обзор ProtractorJS как фреймворка для брауз...
Robot framework Gowthami Goli
Ruin your life using robot framework
Selenium Handbook

Viewers also liked (20)

PDF
WebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
KEY
Functional UI testing of Adobe Flex RIA
PDF
JavaOne 2013: «Java and JavaScript - Shaken, Not Stirred»
PDF
[JokerConf] Верхом на реактивных стримах, 10/13/2016
PDF
[Jfokus] Riding the Jet Streams
PPTX
[NYJavaSig] Riding the Distributed Streams - Feb 2nd, 2017
PPTX
[Codemash] Caching Made "Bootiful"!
PDF
[OracleCode - SF] Distributed caching for your next node.js project
PDF
[OracleCode SF] In memory analytics with apache spark and hazelcast
PPT
Apache Flex: Overview
PDF
Automated User Tests with Apache Flex
PPTX
Selenium IDE and Extensions
PPTX
Creating your own private Download Center with Bintray
PDF
DevOps @Scale (Greek Tragedy in 3 Acts) as it was presented at Oracle Code SF...
PPTX
Java 8 Puzzlers [as presented at OSCON 2016]
PPTX
Spring Data: New approach to persistence
PPTX
Morning at Lohika 2nd anniversary
PPTX
Confession of an Engineer
PDF
Couchbase Sydney meetup #1 Couchbase Architecture and Scalability
PDF
Patterns and antipatterns in Docker image lifecycle @ DevOpsDays Charlotte 2017
WebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
Functional UI testing of Adobe Flex RIA
JavaOne 2013: «Java and JavaScript - Shaken, Not Stirred»
[JokerConf] Верхом на реактивных стримах, 10/13/2016
[Jfokus] Riding the Jet Streams
[NYJavaSig] Riding the Distributed Streams - Feb 2nd, 2017
[Codemash] Caching Made "Bootiful"!
[OracleCode - SF] Distributed caching for your next node.js project
[OracleCode SF] In memory analytics with apache spark and hazelcast
Apache Flex: Overview
Automated User Tests with Apache Flex
Selenium IDE and Extensions
Creating your own private Download Center with Bintray
DevOps @Scale (Greek Tragedy in 3 Acts) as it was presented at Oracle Code SF...
Java 8 Puzzlers [as presented at OSCON 2016]
Spring Data: New approach to persistence
Morning at Lohika 2nd anniversary
Confession of an Engineer
Couchbase Sydney meetup #1 Couchbase Architecture and Scalability
Patterns and antipatterns in Docker image lifecycle @ DevOpsDays Charlotte 2017

Similar to Testing Flex RIAs for NJ Flex user group (20)

PDF
Test Automation in Flex - Richa Sharma
PDF
Qa case study
PPTX
Flextestingautomation 111116190906-phpapp02
PPT
UI Interactions Testing with FlexMonkey
PPTX
Flash Testing with Selenium RC
PDF
Test automation
PPTX
#ATAGTR2020 Presentation - Universal Test Automation Framework
PDF
Automated User Tests with Apache Flex
PDF
automation framework
PPT
Testing Frameworks
PDF
Microsoft power point automation-opensourcetestingtools_matrix-1
PDF
Microsoft power point automation-opensourcetestingtools_matrix-1
PPT
Test Automation Framework Designs
PPTX
unit-5 SPM.pptx
PDF
Automation Open Source tools
PPTX
Manual Testing and Automation Testing Presentation.pptx
PPTX
automation_test_framewjdsjhdsjhsdorks.pptx
PDF
Automation Testing and its importance
PDF
Introduction to Test Automation
PPSX
Software automation
Test Automation in Flex - Richa Sharma
Qa case study
Flextestingautomation 111116190906-phpapp02
UI Interactions Testing with FlexMonkey
Flash Testing with Selenium RC
Test automation
#ATAGTR2020 Presentation - Universal Test Automation Framework
Automated User Tests with Apache Flex
automation framework
Testing Frameworks
Microsoft power point automation-opensourcetestingtools_matrix-1
Microsoft power point automation-opensourcetestingtools_matrix-1
Test Automation Framework Designs
unit-5 SPM.pptx
Automation Open Source tools
Manual Testing and Automation Testing Presentation.pptx
automation_test_framewjdsjhdsjhsdorks.pptx
Automation Testing and its importance
Introduction to Test Automation
Software automation

More from Viktor Gamov (7)

PDF
[DataSciCon] Divide, distribute and conquer stream v. batch
PDF
[Philly JUG] Divide, Distribute and Conquer: Stream v. Batch
PDF
Testing containers with TestContainers @ AJUG 7/18/2017
PDF
Distributed caching for your next node.js project cf summit - 06-15-2017
PDF
[Philly ETE] Java Puzzlers NG
PDF
Распределяй и властвуй — 2: Потоки данных наносят ответный удар
PDF
[JBreak] Блеск И Нищета Распределенных Стримов - 04-04-2017
[DataSciCon] Divide, distribute and conquer stream v. batch
[Philly JUG] Divide, Distribute and Conquer: Stream v. Batch
Testing containers with TestContainers @ AJUG 7/18/2017
Distributed caching for your next node.js project cf summit - 06-15-2017
[Philly ETE] Java Puzzlers NG
Распределяй и властвуй — 2: Потоки данных наносят ответный удар
[JBreak] Блеск И Нищета Распределенных Стримов - 04-04-2017

Recently uploaded (20)

PDF
Launch a Bumble-Style App with AI Features in 2025.pdf
PDF
giants, standing on the shoulders of - by Daniel Stenberg
PDF
CXOs-Are-you-still-doing-manual-DevOps-in-the-age-of-AI.pdf
PDF
substrate PowerPoint Presentation basic one
PDF
Identification of potential depression in social media posts
PDF
The-2025-Engineering-Revolution-AI-Quality-and-DevOps-Convergence.pdf
PDF
Transform-Your-Supply-Chain-with-AI-Driven-Quality-Engineering.pdf
PDF
Build Real-Time ML Apps with Python, Feast & NoSQL
PPTX
Presentation - Principles of Instructional Design.pptx
PDF
EIS-Webinar-Regulated-Industries-2025-08.pdf
PDF
Altius execution marketplace concept.pdf
PDF
Connector Corner: Transform Unstructured Documents with Agentic Automation
PDF
A hybrid framework for wild animal classification using fine-tuned DenseNet12...
PDF
Lung cancer patients survival prediction using outlier detection and optimize...
PDF
Transform-Your-Streaming-Platform-with-AI-Driven-Quality-Engineering.pdf
PPTX
Build automations faster and more reliably with UiPath ScreenPlay
PDF
Co-training pseudo-labeling for text classification with support vector machi...
PDF
The AI Revolution in Customer Service - 2025
PDF
AI.gov: A Trojan Horse in the Age of Artificial Intelligence
PDF
ment.tech-Siri Delay Opens AI Startup Opportunity in 2025.pdf
Launch a Bumble-Style App with AI Features in 2025.pdf
giants, standing on the shoulders of - by Daniel Stenberg
CXOs-Are-you-still-doing-manual-DevOps-in-the-age-of-AI.pdf
substrate PowerPoint Presentation basic one
Identification of potential depression in social media posts
The-2025-Engineering-Revolution-AI-Quality-and-DevOps-Convergence.pdf
Transform-Your-Supply-Chain-with-AI-Driven-Quality-Engineering.pdf
Build Real-Time ML Apps with Python, Feast & NoSQL
Presentation - Principles of Instructional Design.pptx
EIS-Webinar-Regulated-Industries-2025-08.pdf
Altius execution marketplace concept.pdf
Connector Corner: Transform Unstructured Documents with Agentic Automation
A hybrid framework for wild animal classification using fine-tuned DenseNet12...
Lung cancer patients survival prediction using outlier detection and optimize...
Transform-Your-Streaming-Platform-with-AI-Driven-Quality-Engineering.pdf
Build automations faster and more reliably with UiPath ScreenPlay
Co-training pseudo-labeling for text classification with support vector machi...
The AI Revolution in Customer Service - 2025
AI.gov: A Trojan Horse in the Age of Artificial Intelligence
ment.tech-Siri Delay Opens AI Startup Opportunity in 2025.pdf

Testing Flex RIAs for NJ Flex user group

  • 1. Testing Flex RIAs Viktor Gamov, Farata Systems April, 27 2011
  • 2. Agenda • Why to test? • Automation testing and tools overview • Flex Automation 101 • Flex Automation Framework building blocks • How to prepare you components for automation testing • Using FlexMonkey for testing custom components
  • 4. Software Has Bugs • We want to minimize the number, and • We want change to safe • How?
  • 6. Only person who can write code without bugs is ...
  • 7. Only person who can write code without bugs is ...
  • 8. Why Chuck Norris does not test?
  • 9. Why Chuck Norris does not test? • His code is perfect
  • 10. Why Chuck Norris does not test? • His code is perfect • He does not need code documentation and communication on the project
  • 11. Why Chuck Norris does not test? • His code is perfect • He does not need code documentation and communication on the project • Perfect memory
  • 12. Why Chuck Norris does not test? • His code is perfect • He does not need code documentation and communication on the project • Perfect memory • Refactoring without problems
  • 14. Testing Flex RIAs • Unit testing
  • 15. Testing Flex RIAs • Unit testing • Functional (UAT, QA)testing
  • 16. Testing Flex RIAs • Unit testing • Functional (UAT, QA)testing • Integration testing
  • 17. Testing Flex RIAs • Unit testing • Functional (UAT, QA)testing • Integration testing • Load testing
  • 18. Automation testing tools overview • QTP • Selenium • Ranorex • FlexMonkey
  • 19. QTP Pros: • All-in-one suite for automation testing enterprise applications • Supports large pool of  software development environments like SAP , Web , Oracle etc. • QTP is easier to use and implement for both technical & non technical testers • Support libraries out-of-the-box with Flex(qtp.swc, qtp_air.swc)
  • 20. QTP Cons: • Unstable work • Absence of IDE for debugging scripts • Only Windows and IE (sorry Mac and Linux • VBScript as scripting language • Not free and expensive
  • 21. Selenium + Flex API • Web applications testing • Open source and large community • Cross platform (Selenium IDE - browser extension) • JavaScript as scripting language
  • 22. Ranorex • Similar to QTP, but better • Support large amount supported technologies (.NET, WPF, Silverlight, Qt, Win32, Delphi, WFC, Java SWT, Web testing, Flash/Flex testing) and platforms • Script languages C#,VB.NET, IronPython • Integration with Visual Studio 2010 • Platform: Windows • Not free, ~$1590 for one license (full suite)
  • 23. FlexMonkey • OpenSource (commercial support available) • Flex apps testing centric tool • Cross platform (console - AIR application ) • Generated FlexUnit 4 test code • Supports testing only Flex applications (no Flash) • Integration with Selenium IDE (FlexMonkium project)
  • 24. The process of creating a custom component that supports automated testing is called instrumentation
  • 27. Component delegate • instance of delegate class gets added for each instance of components • delegates know about the component which associated • adds listeners to interested events of component • decides what to do when an event occurs and calls appropriate method on Automation Manager • can provide additional methods which will be interested for testers
  • 28. Automation Flow Core Flex API SystemManager Automation Delegates Automation API Automation Manager Delegates Delegates QTP FlexMonkey Selenium Agent Classes Agent Agent Agent Automation Tools QTP FlexMonkey Selenium
  • 29. Flex Automation Framework building blocks • Component delegate (automation.swc, automation_dmv.swc ...., custom classes ) • Automation Manager (automation_manager.swc) • Tool Adapter (automation_monkey4.x.swc) • Testing Tool (FlexMonkey Console) • Environment configuration
  • 30. [Mixin] metadata tag • use is to create static code blocks to initialize parts of your application • that static code will be executed when a preloader finishes loading of the application class and the SystemManager is ready to kick off [2 frame]
  • 31. [Mixin] example import mx.managers.ISystemManager; //--------------------------------------------------- // Example //--------------------------------------------------- [Mixin] public class MyMixin { /** * called due to the fact that i've used the [Mixin] metatag * @param systemManager */ public static function init(systemManager:ISystemManager):void { // do something } }
  • 32. How to prepare your components for automation testing
  • 33. What is a custom component • A component extending from a standard component (No additional events, no additional properties) • A component extending from a standard component – Additional events/ additional properties • A component extending from a non container class, but the current class is a container.
  • 34. What to do in delegate if component extending from standard component • Nothing! Use delegate classes shipped with Flex Framework
  • 35. What to do in delegate if component extending from standard component + additional events or properties • Add Event listener to interesting event • Identify the details of the event which is needed to reply the event later • Pass event to record to automation manager • handle reply of the event
  • 36. What do in delegate component extending from non container class, but the current class need to be threaded as a container • Expose required children • getAutomationChildren • getAutomationChildAt • get numAutomationChildren • Provide the child handler methods • createAutomaitonIDPart • resolveAutomationIDPart • createAutomationIDPartWithRequiredProperties
  • 37. Using FlexMonkey for testing custom components Demo
  • 38. Conclusion • Testing is a very powerful tool to help produce, maintain and impart confidence in your software • Actionscript 3 now has testing tools approaching the level available to Java developers • We should all be testing!
  • 39. Resources • Enterprise Development with Flex, O’reilly, 2010 • GorillaLogic http://clck.ru/BXV4 • Ranorex Flex Testing http://clck.ru/BXUk • Automation Docs http://clck.ru/Bqbn • Blog on Flex Automation http://clck.ru/BqbU

Editor's Notes

  • #2: \n
  • #3: \n
  • #4: \n
  • #5: \n
  • #6: \n
  • #7: \n
  • #8: Why Chuck does not write the tests?\n\nThis code is perfect\n\nIn the code, Chuck Norris never bugs. He is never wrong. If you find a bug in the code, Chuck - try to talk to him about it - just realize that it really necessary feature of the project.\n\nIt does not need code documentation and communication on the project\n\nIn fact, the documentation - this is just one way communication. Documenting code, we are dealing with a team (with the present and future), which works on the project. Tests - this is the best documentation. Paper documentation, developers do not read, and disappear somewhere, these papers and files all the time. In written comments to the code is not always possible to understand - what exactly meant by the author. In the same tests immediately clear how the code works, what he should do to get.\nChuck this is not necessary - he has one.\n\nPerfect Memory\n\nOn what projects you can work alone? Only those where you bought a plane ticket into a warm country where the customer you will not find. On all other projects you are working at least two people - you and you in the future. And you need to communicate with itself for implementation. Chuck manages fine without it - he remembers everything in their projects.\n\nRefactoring without problems\n\nChuck did not do the refactoring because his code right ideal. So what of situations where you need something to change or optimize and try not to break anything in the process, he just does not happen.\n\n
  • #9: Why Chuck does not write the tests?\n\nThis code is perfect\n\nIn the code, Chuck Norris never bugs. He is never wrong. If you find a bug in the code, Chuck - try to talk to him about it - just realize that it really necessary feature of the project.\n\nIt does not need code documentation and communication on the project\n\nIn fact, the documentation - this is just one way communication. Documenting code, we are dealing with a team (with the present and future), which works on the project. Tests - this is the best documentation. Paper documentation, developers do not read, and disappear somewhere, these papers and files all the time. In written comments to the code is not always possible to understand - what exactly meant by the author. In the same tests immediately clear how the code works, what he should do to get.\nChuck this is not necessary - he has one.\n\nPerfect Memory\n\nOn what projects you can work alone? Only those where you bought a plane ticket into a warm country where the customer you will not find. On all other projects you are working at least two people - you and you in the future. And you need to communicate with itself for implementation. Chuck manages fine without it - he remembers everything in their projects.\n\nRefactoring without problems\n\nChuck did not do the refactoring because his code right ideal. So what of situations where you need something to change or optimize and try not to break anything in the process, he just does not happen.\n\n
  • #10: Why Chuck does not write the tests?\n\nThis code is perfect\n\nIn the code, Chuck Norris never bugs. He is never wrong. If you find a bug in the code, Chuck - try to talk to him about it - just realize that it really necessary feature of the project.\n\nIt does not need code documentation and communication on the project\n\nIn fact, the documentation - this is just one way communication. Documenting code, we are dealing with a team (with the present and future), which works on the project. Tests - this is the best documentation. Paper documentation, developers do not read, and disappear somewhere, these papers and files all the time. In written comments to the code is not always possible to understand - what exactly meant by the author. In the same tests immediately clear how the code works, what he should do to get.\nChuck this is not necessary - he has one.\n\nPerfect Memory\n\nOn what projects you can work alone? Only those where you bought a plane ticket into a warm country where the customer you will not find. On all other projects you are working at least two people - you and you in the future. And you need to communicate with itself for implementation. Chuck manages fine without it - he remembers everything in their projects.\n\nRefactoring without problems\n\nChuck did not do the refactoring because his code right ideal. So what of situations where you need something to change or optimize and try not to break anything in the process, he just does not happen.\n\n
  • #11: Why Chuck does not write the tests?\n\nThis code is perfect\n\nIn the code, Chuck Norris never bugs. He is never wrong. If you find a bug in the code, Chuck - try to talk to him about it - just realize that it really necessary feature of the project.\n\nIt does not need code documentation and communication on the project\n\nIn fact, the documentation - this is just one way communication. Documenting code, we are dealing with a team (with the present and future), which works on the project. Tests - this is the best documentation. Paper documentation, developers do not read, and disappear somewhere, these papers and files all the time. In written comments to the code is not always possible to understand - what exactly meant by the author. In the same tests immediately clear how the code works, what he should do to get.\nChuck this is not necessary - he has one.\n\nPerfect Memory\n\nOn what projects you can work alone? Only those where you bought a plane ticket into a warm country where the customer you will not find. On all other projects you are working at least two people - you and you in the future. And you need to communicate with itself for implementation. Chuck manages fine without it - he remembers everything in their projects.\n\nRefactoring without problems\n\nChuck did not do the refactoring because his code right ideal. So what of situations where you need something to change or optimize and try not to break anything in the process, he just does not happen.\n\n
  • #12: \n
  • #13: \n
  • #14: \n
  • #15: \n
  • #16: \n
  • #17: \n
  • #18: \n
  • #19: \n
  • #20: \n
  • #21: \n
  • #22: \n
  • #23: \n
  • #24: The SystemManager class creates the display list, a tree of visible objects that make up your application.\nEach time a new component is added, either at the root of the display list or as a child of another member of the display list, SystemManager dispatches an Event.ADDED event.\nThe AutomationManager listens for the ADDED event. In its ADDED event handler, it calls methods on the Automation class. It then instantiates the delegate for that class.\nThe Automation class maps each component in the display list to its full class name.\nWhen it is created, the delegate class adds a reference to its instance in the delegate class map. The delegate class then handles events during record and play-back sequences.The delegate is now considered registered with the component. It adds event listeners for the component’s events and calls the AutomationManager when the component triggers those events.\nAfter the components in the display list are instantiated and mapped to instances of their delegate classes, the AutomationManager is ready to listen for events and forward them to the agent for processing.\n
  • #25: \n
  • #26: \n
  • #27: \n
  • #28: \n
  • #29: \n
  • #30: \n
  • #31: \n
  • #32: E.g. user creates an MyAdvancedDataGrid extending from AdvancedDataGrid.\n i.e no special user interaction possibilities on it other than the base component.\nE.g. user creates MyComponent extending from Panel and have some controls in it. \ni.e the new component is a container, and the base also a container. \nWhat to do here? \nNothing. The base component automation (delegate) will take care of the needed. \n\n
  • #33: E.g. user creates an MyAdvancedDataGrid extending from AdvancedDataGrid.\n and there is a new event which needs to be recorded.\nUser extends from a component, but wishes to expose a behavior which is different \nfrom that of the standard component.\nWhat to do ?\nCreate a new Delegate\nAdd in the new delegate to the application using -includes\nProvide the details of the component in the XML file\n\n\n
  • #34: \n
  • #35: \n
  • #36: \n
  • #37: \n
  • #38: \n