SlideShare a Scribd company logo
1 of 53
Download to read offline
1
<Insert Picture Here>




UI test automation techniques by an example of JavaFX UI.

Alexandre (Shura) Iline
Java quality architect
The following is intended to outline our general product
direction. It is intended for information purposes, and
may not be incorporated into any contract. It is not a
commitment to deliver any material, code, or
functionality, and should not be relied upon in making
purchasing decisions.
The development, release, and timing of any features
or functionality described for Oracle's products remains
at the sole discretion of Oracle.
The presented technology tested on




                       JavaFX Authoring Tool



                                               4
Agenda


• UI libraries features           <Insert Picture Here>

     (from testing perspective)
• UI Sample
• Jemmy tool
• Writing tests
• Reduce test cost support
• Remote testing




                                                     5
<Insert Picture Here>

UI features
UI libraries features
Looking from test side

•   Hierarchy
•   Controls
•   Transformations
•   Images
•   Animation
•   Event queue




                         7
Control hierarchy
                                                  Stage




          Control        Parent


                                     Node        Scene




      http://java.sun.com/javafx/1.3/docs/api/       8
Controls


    Button
 ToggleButton
 RadioButton
  CheckBox
    Slider
   ScrollBar
   TextBox
   ListView
  ComboBox


Custom controls

       http://java.sun.com/javafx/1.3/docs/api/   9
Transformations


  Affine
  Rotate
  Scale
  Shear
 Translate




       http://java.sun.com/javafx/1.3/docs/api/   10
Images




         11
Animation


     Timeline
    Interpolator
     KeyFrame
  PathTransition
  RotateTransition
  ScaleTransition
TranslateTransition




       http://java.sun.com/javafx/1.3/docs/api/   12
Event queue




 User
                        UI
               Other
              threads



                             13
Tested UI


A Bézier curve is a
parametric curve
frequently used in
computer graphics and
related fields.




                        14
<Insert Picture Here>

Jemmy tool
UI test workflow


                                                               Pass
                             Perform necessary
                                  actions


Find          Pass               Do              Pass          Verify


         Find next control              Verify that expected

Fail   To perform operation      Fail       State reached       Fail


                         Failure analysis



                                                                        16
Jemmy and extensions

 Jemmy v2                                         LCDUI
                NetBeans      JemmySG
AWT & Swing




   JDK         JemmyAWT      JemmyCore        JemmyRemote




              JemmySWT
 Jemmy v3                     JemmyFX         JemmyFXRemote



               JRMC
                           JavaFX Authoring
                                                 JavaFX
                                 Tool



                                                            17
JemmyCore
                                                                                           Text
                                                        Interfaces API
                                                                                         Scroller




                                                                         Input API
           Properties API   Properties            Interfaces
                                                                                        Selectable
                                              Text         Mouse

                                                                                       AWT Robot
                                            Scroller
                                                           Keyboard
                                                                                      Thumb Scroller
                                           Selectable


                             Images                   Lookup
                             Comparator   Hierarchy       Criteria
           Images API




                                                                         Lookup API
                               Factory                                                Coords

AWTRobot                                                                              Custom




                                                                                                     18
JemmyFX
                                                        Interfaces API




                                                                                     Input API
          Properties API   Properties            Interfaces
                                                             Mouse




                                                                                                            ot
                                             Text




                                                                                                       ob
                                                                                                        R
                                                             AWT Robot




                                                                                                     FX
                                           Scroller
                                                             Keyboard




                                                                                     Operators API
                                          Selectable         AWT Robot


                            Images                   Lookup
                            Comparator   Hierarchy          Criteria
          Images API




                                                                            Custom
                                                                   Coords
                                                                                                     Th




                                                                                     Lookup API
                                                                                                       um

                                                            Text
                              Factory      Scenes,     ID
                                            nodes                                                           b
                                                                                                                Sc
                                                                                                                  ro
FXRobot                     AWTRobot                                                                                   lle
                                                                                                                          r




                                                                                                                        19
<Insert Picture Here>

Let's test
One line test




                21
Lookup principles

Test should be able to find control by ...
• Type
• Property
  –   text
  –   value
  –   ID
  –   tooltip
• Image
• Coordinated
• Index (last resort)

• Any criteria which could be written in java code

                                                     22
Lookup code




              23
More lookup code




                   24
Control interfaces

Control type           Properties

Node                   Mouse, Keyboard
Control                Focusable
ToggleButton           Selectable
Text                   SelectionText
ScrollBar, Slider      Scroll
ListView               Scroll, Parent<? extends Object>
Scene, Group           Parent<Node>




                                                          25
Control interfaces usage code




                                26
JemmyFX Browser




                  27
UI test


• Customize ...
   – Curve attributes
   – View attributes
• Verify image
• Generate code
• Verify code
• Start animation
• Verify animation




                        28
Test




       29
Waitings

Every UI action takes time

• Wait for everything
  – Window appearance
  – Label change
  – Image appearance
  – Property change
  – File update
• Configurable timeouts
• Exceptions




                             30
Waiting code




               31
Event queue




 User
                        UI
               Other
              threads



                             32
Event queue             with a test




  Lookup


  Actions


Verifications

   Test
                                     UI
                  Other
                 threads



                                          33
Pull data through queue




                          34
Properties


Control type        Properties
Node                ID bounds
Control             get$tooltip get$cursor
ToggleButton        get$pressed
Text                text get$strikethrough get$underline
Slider, ScrollBar   vertical minimum maximum value
CheckBox            state is.tri.state
TextInputControl    selection.anchor position text
                    get$columns get$editable




                                                           35
Properties code




                  36
Images




           -            =
Expected       Actual       Diff




                                   37
Images code




              38
Animation code




                 39
Verifying generated code




                           40
Test automation effectiveness


              TM     * NR     *   NC
EA     =
            TD   +   TS   *   NR *     NC



TM – time needed to run the tests manually
TD – time needed for automated test development
TS – time needed for automated test support

NR – number of test runs
NC – number of tested configurations



                                                  41
What about record&replay?



• Pretty low TD
   – Pretty much the same as TM
… but ...
• High TS
   – Generates unmaintainable code
   – No test code encapsulation




                                     42
Ideal test


• Lives forever
• Written in terms of domain model
• All the UI logic is hidden within a library




                                                43
<Insert Picture Here>

Remote testing
JemmyRemote
       Desktop                                                   Device

   Properties            Interfaces                              Properties
                     Text                    Mouse


                   Scroller
                                             Keyboard

                  Selectable
                                                        Socket
    Images                   Lookup
    Comparator   Hierarchy     properties   Criteria              Hierarchy

                                            By
      Factory




                                                                              45
JemmyRemote


• Benefits
    – Low load on tested UI
    – Ability to run on low-end devices
• Limitations
    – Two-part code
    – Lookup is only through properties
    – Slow




                                          46
JemmyFXRemote
               Desktop                                                       Device




                                                                    AW
           Properties            Interfaces                                  Properties




                                                                T
                                                     Mouse




                                                                  Rob
                             Text




                                                                     ot
                           Scroller
                                                     Keyboard

                          Selectable
                                                                    Socket
            Images                   Lookup                                   FXRobot
            Comparator   Hierarchy     properties   Criteria


                                                                               Scenes,
                                                    By
              Factory
                                                                                nodes
AWTRobot




                                                                                          47
JemmyFXRemote sample




                       48
References



          http://jemmy.dev.java.net
https://jemmy.dev.java.net/AutomationEffectiveness.html
  https://jemmy.dev.java.net/RecordingVSCoding.html


              users@dev.java.net
              alexandre.iline@oracle.com
          alexander.kouznetsov@oracle.com




                                                          49
<Insert Picture Here>




UI test automation techniques by an example of JavaFX UI.

Alexandre (Shura) Iline
Java quality architect
Backup slides




                51
Operators API


<Control type name>Operator.find(SceneOperator, <lookup data>)




                                                             52
JemmyFXScript




                53

More Related Content

Similar to UI test automation techniques by an example of JavaFX UI

A Graphical Language for Real-Time Critical Robot Commands
A Graphical Language for Real-Time Critical Robot CommandsA Graphical Language for Real-Time Critical Robot Commands
A Graphical Language for Real-Time Critical Robot CommandsSerge Stinckwich
 
Dreamforce_2012_Hadoop_Use_Cases
Dreamforce_2012_Hadoop_Use_CasesDreamforce_2012_Hadoop_Use_Cases
Dreamforce_2012_Hadoop_Use_CasesNarayan Bharadwaj
 
An Introduction To Rich Internet Apllications
An Introduction To Rich Internet ApllicationsAn Introduction To Rich Internet Apllications
An Introduction To Rich Internet ApllicationsMrinal Wadhwa
 
How Salesforce.com uses Hadoop
How Salesforce.com uses HadoopHow Salesforce.com uses Hadoop
How Salesforce.com uses HadoopNarayan Bharadwaj
 
Radu’S Robots
Radu’S RobotsRadu’S Robots
Radu’S Robotsraxorio
 
The Mashup Component Description Language
The Mashup Component Description LanguageThe Mashup Component Description Language
The Mashup Component Description LanguageSaeed Aghaee
 
Hadoop Summit San Diego Feb2013
Hadoop Summit San Diego Feb2013Hadoop Summit San Diego Feb2013
Hadoop Summit San Diego Feb2013Narayan Bharadwaj
 
Building single page applications
Building single page applicationsBuilding single page applications
Building single page applicationsSC5.io
 
Design by Contract in robotlegs AS3
Design by Contract in robotlegs AS3Design by Contract in robotlegs AS3
Design by Contract in robotlegs AS3Paul Taylor
 
DeNA Technology Seminar #3 - OpenSocial and JavaScript
DeNA Technology Seminar #3 - OpenSocial and JavaScriptDeNA Technology Seminar #3 - OpenSocial and JavaScript
DeNA Technology Seminar #3 - OpenSocial and JavaScriptNaosuke Yokoe
 
Balconies, Patios, Terraces, and Bridges. Architectural approaches for moving...
Balconies, Patios, Terraces, and Bridges. Architectural approaches for moving...Balconies, Patios, Terraces, and Bridges. Architectural approaches for moving...
Balconies, Patios, Terraces, and Bridges. Architectural approaches for moving...mfrancis
 
New Generation Record/Playback Tools for AJAX Testing
New Generation Record/Playback Tools for AJAX TestingNew Generation Record/Playback Tools for AJAX Testing
New Generation Record/Playback Tools for AJAX TestingClever Moe
 
How salesforce.com Uses Hadoop Webinar
How salesforce.com Uses Hadoop WebinarHow salesforce.com Uses Hadoop Webinar
How salesforce.com Uses Hadoop WebinarSalesforce Developers
 
Automating JFC UI application testing with Jemmy
Automating JFC UI application testing with JemmyAutomating JFC UI application testing with Jemmy
Automating JFC UI application testing with JemmySPB SQA Group
 
Easy Automated UI Testing with Canopy
Easy Automated UI Testing with CanopyEasy Automated UI Testing with Canopy
Easy Automated UI Testing with CanopyEric Potter
 

Similar to UI test automation techniques by an example of JavaFX UI (20)

A Graphical Language for Real-Time Critical Robot Commands
A Graphical Language for Real-Time Critical Robot CommandsA Graphical Language for Real-Time Critical Robot Commands
A Graphical Language for Real-Time Critical Robot Commands
 
Dreamforce_2012_Hadoop_Use_Cases
Dreamforce_2012_Hadoop_Use_CasesDreamforce_2012_Hadoop_Use_Cases
Dreamforce_2012_Hadoop_Use_Cases
 
Hadoop + Forcedotcom = Like
Hadoop + Forcedotcom = LikeHadoop + Forcedotcom = Like
Hadoop + Forcedotcom = Like
 
An Introduction To Rich Internet Apllications
An Introduction To Rich Internet ApllicationsAn Introduction To Rich Internet Apllications
An Introduction To Rich Internet Apllications
 
Intro to Force.com Webinar presentation
Intro to Force.com Webinar presentationIntro to Force.com Webinar presentation
Intro to Force.com Webinar presentation
 
Introduction to Force.com Webinar
Introduction to Force.com WebinarIntroduction to Force.com Webinar
Introduction to Force.com Webinar
 
How Salesforce.com uses Hadoop
How Salesforce.com uses HadoopHow Salesforce.com uses Hadoop
How Salesforce.com uses Hadoop
 
Radu’S Robots
Radu’S RobotsRadu’S Robots
Radu’S Robots
 
The Mashup Component Description Language
The Mashup Component Description LanguageThe Mashup Component Description Language
The Mashup Component Description Language
 
Hadoop Summit San Diego Feb2013
Hadoop Summit San Diego Feb2013Hadoop Summit San Diego Feb2013
Hadoop Summit San Diego Feb2013
 
Building single page applications
Building single page applicationsBuilding single page applications
Building single page applications
 
Design by Contract in robotlegs AS3
Design by Contract in robotlegs AS3Design by Contract in robotlegs AS3
Design by Contract in robotlegs AS3
 
Project Zero JavaOne 2008
Project Zero JavaOne 2008Project Zero JavaOne 2008
Project Zero JavaOne 2008
 
DeNA Technology Seminar #3 - OpenSocial and JavaScript
DeNA Technology Seminar #3 - OpenSocial and JavaScriptDeNA Technology Seminar #3 - OpenSocial and JavaScript
DeNA Technology Seminar #3 - OpenSocial and JavaScript
 
Balconies, Patios, Terraces, and Bridges. Architectural approaches for moving...
Balconies, Patios, Terraces, and Bridges. Architectural approaches for moving...Balconies, Patios, Terraces, and Bridges. Architectural approaches for moving...
Balconies, Patios, Terraces, and Bridges. Architectural approaches for moving...
 
TAO DAYS - API (IT Session)
TAO DAYS - API (IT Session)TAO DAYS - API (IT Session)
TAO DAYS - API (IT Session)
 
New Generation Record/Playback Tools for AJAX Testing
New Generation Record/Playback Tools for AJAX TestingNew Generation Record/Playback Tools for AJAX Testing
New Generation Record/Playback Tools for AJAX Testing
 
How salesforce.com Uses Hadoop Webinar
How salesforce.com Uses Hadoop WebinarHow salesforce.com Uses Hadoop Webinar
How salesforce.com Uses Hadoop Webinar
 
Automating JFC UI application testing with Jemmy
Automating JFC UI application testing with JemmyAutomating JFC UI application testing with Jemmy
Automating JFC UI application testing with Jemmy
 
Easy Automated UI Testing with Canopy
Easy Automated UI Testing with CanopyEasy Automated UI Testing with Canopy
Easy Automated UI Testing with Canopy
 

More from yaevents

Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Я...
Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Я...Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Я...
Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Я...yaevents
 
Тема для WordPress в БЭМ. Владимир Гриненко, Яндекс
Тема для WordPress в БЭМ. Владимир Гриненко, ЯндексТема для WordPress в БЭМ. Владимир Гриненко, Яндекс
Тема для WordPress в БЭМ. Владимир Гриненко, Яндексyaevents
 
Построение сложносоставных блоков в шаблонизаторе bemhtml. Сергей Бережной, Я...
Построение сложносоставных блоков в шаблонизаторе bemhtml. Сергей Бережной, Я...Построение сложносоставных блоков в шаблонизаторе bemhtml. Сергей Бережной, Я...
Построение сложносоставных блоков в шаблонизаторе bemhtml. Сергей Бережной, Я...yaevents
 
i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс
i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндексi-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс
i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндексyaevents
 
Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...
Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...
Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...yaevents
 
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...yaevents
 
Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...
Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...
Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...yaevents
 
Мониторинг со всех сторон. Алексей Симаков, Яндекс
Мониторинг со всех сторон. Алексей Симаков, ЯндексМониторинг со всех сторон. Алексей Симаков, Яндекс
Мониторинг со всех сторон. Алексей Симаков, Яндексyaevents
 
Истории про разработку сайтов. Сергей Бережной, Яндекс
Истории про разработку сайтов. Сергей Бережной, ЯндексИстории про разработку сайтов. Сергей Бережной, Яндекс
Истории про разработку сайтов. Сергей Бережной, Яндексyaevents
 
Разработка приложений для Android на С++. Юрий Береза, Shturmann
Разработка приложений для Android на С++. Юрий Береза, ShturmannРазработка приложений для Android на С++. Юрий Береза, Shturmann
Разработка приложений для Android на С++. Юрий Береза, Shturmannyaevents
 
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...yaevents
 
Сложнейшие техники, применяемые буткитами и полиморфными вирусами. Вячеслав З...
Сложнейшие техники, применяемые буткитами и полиморфными вирусами. Вячеслав З...Сложнейшие техники, применяемые буткитами и полиморфными вирусами. Вячеслав З...
Сложнейшие техники, применяемые буткитами и полиморфными вирусами. Вячеслав З...yaevents
 
Сканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, Яндекс
Сканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, ЯндексСканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, Яндекс
Сканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, Яндексyaevents
 
Масштабируемость Hadoop в Facebook. Дмитрий Мольков, Facebook
Масштабируемость Hadoop в Facebook. Дмитрий Мольков, FacebookМасштабируемость Hadoop в Facebook. Дмитрий Мольков, Facebook
Масштабируемость Hadoop в Facebook. Дмитрий Мольков, Facebookyaevents
 
Контроль зверей: инструменты для управления и мониторинга распределенных сист...
Контроль зверей: инструменты для управления и мониторинга распределенных сист...Контроль зверей: инструменты для управления и мониторинга распределенных сист...
Контроль зверей: инструменты для управления и мониторинга распределенных сист...yaevents
 
Юнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, GoogleЮнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, Googleyaevents
 
C++11 (formerly known as C++0x) is the new C++ language standard. Dave Abraha...
C++11 (formerly known as C++0x) is the new C++ language standard. Dave Abraha...C++11 (formerly known as C++0x) is the new C++ language standard. Dave Abraha...
C++11 (formerly known as C++0x) is the new C++ language standard. Dave Abraha...yaevents
 
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...yaevents
 
В поисках математики. Михаил Денисенко, Нигма
В поисках математики. Михаил Денисенко, НигмаВ поисках математики. Михаил Денисенко, Нигма
В поисках математики. Михаил Денисенко, Нигмаyaevents
 
Using classifiers to compute similarities between face images. Prof. Lior Wol...
Using classifiers to compute similarities between face images. Prof. Lior Wol...Using classifiers to compute similarities between face images. Prof. Lior Wol...
Using classifiers to compute similarities between face images. Prof. Lior Wol...yaevents
 

More from yaevents (20)

Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Я...
Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Я...Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Я...
Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Я...
 
Тема для WordPress в БЭМ. Владимир Гриненко, Яндекс
Тема для WordPress в БЭМ. Владимир Гриненко, ЯндексТема для WordPress в БЭМ. Владимир Гриненко, Яндекс
Тема для WordPress в БЭМ. Владимир Гриненко, Яндекс
 
Построение сложносоставных блоков в шаблонизаторе bemhtml. Сергей Бережной, Я...
Построение сложносоставных блоков в шаблонизаторе bemhtml. Сергей Бережной, Я...Построение сложносоставных блоков в шаблонизаторе bemhtml. Сергей Бережной, Я...
Построение сложносоставных блоков в шаблонизаторе bemhtml. Сергей Бережной, Я...
 
i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс
i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндексi-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс
i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс
 
Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...
Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...
Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...
 
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
 
Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...
Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...
Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...
 
Мониторинг со всех сторон. Алексей Симаков, Яндекс
Мониторинг со всех сторон. Алексей Симаков, ЯндексМониторинг со всех сторон. Алексей Симаков, Яндекс
Мониторинг со всех сторон. Алексей Симаков, Яндекс
 
Истории про разработку сайтов. Сергей Бережной, Яндекс
Истории про разработку сайтов. Сергей Бережной, ЯндексИстории про разработку сайтов. Сергей Бережной, Яндекс
Истории про разработку сайтов. Сергей Бережной, Яндекс
 
Разработка приложений для Android на С++. Юрий Береза, Shturmann
Разработка приложений для Android на С++. Юрий Береза, ShturmannРазработка приложений для Android на С++. Юрий Береза, Shturmann
Разработка приложений для Android на С++. Юрий Береза, Shturmann
 
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
 
Сложнейшие техники, применяемые буткитами и полиморфными вирусами. Вячеслав З...
Сложнейшие техники, применяемые буткитами и полиморфными вирусами. Вячеслав З...Сложнейшие техники, применяемые буткитами и полиморфными вирусами. Вячеслав З...
Сложнейшие техники, применяемые буткитами и полиморфными вирусами. Вячеслав З...
 
Сканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, Яндекс
Сканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, ЯндексСканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, Яндекс
Сканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, Яндекс
 
Масштабируемость Hadoop в Facebook. Дмитрий Мольков, Facebook
Масштабируемость Hadoop в Facebook. Дмитрий Мольков, FacebookМасштабируемость Hadoop в Facebook. Дмитрий Мольков, Facebook
Масштабируемость Hadoop в Facebook. Дмитрий Мольков, Facebook
 
Контроль зверей: инструменты для управления и мониторинга распределенных сист...
Контроль зверей: инструменты для управления и мониторинга распределенных сист...Контроль зверей: инструменты для управления и мониторинга распределенных сист...
Контроль зверей: инструменты для управления и мониторинга распределенных сист...
 
Юнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, GoogleЮнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, Google
 
C++11 (formerly known as C++0x) is the new C++ language standard. Dave Abraha...
C++11 (formerly known as C++0x) is the new C++ language standard. Dave Abraha...C++11 (formerly known as C++0x) is the new C++ language standard. Dave Abraha...
C++11 (formerly known as C++0x) is the new C++ language standard. Dave Abraha...
 
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...
 
В поисках математики. Михаил Денисенко, Нигма
В поисках математики. Михаил Денисенко, НигмаВ поисках математики. Михаил Денисенко, Нигма
В поисках математики. Михаил Денисенко, Нигма
 
Using classifiers to compute similarities between face images. Prof. Lior Wol...
Using classifiers to compute similarities between face images. Prof. Lior Wol...Using classifiers to compute similarities between face images. Prof. Lior Wol...
Using classifiers to compute similarities between face images. Prof. Lior Wol...
 

UI test automation techniques by an example of JavaFX UI

  • 1. 1
  • 2. <Insert Picture Here> UI test automation techniques by an example of JavaFX UI. Alexandre (Shura) Iline Java quality architect
  • 3. The following is intended to outline our general product direction. It is intended for information purposes, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle's products remains at the sole discretion of Oracle.
  • 4. The presented technology tested on JavaFX Authoring Tool 4
  • 5. Agenda • UI libraries features <Insert Picture Here> (from testing perspective) • UI Sample • Jemmy tool • Writing tests • Reduce test cost support • Remote testing 5
  • 7. UI libraries features Looking from test side • Hierarchy • Controls • Transformations • Images • Animation • Event queue 7
  • 8. Control hierarchy Stage Control Parent Node Scene http://java.sun.com/javafx/1.3/docs/api/ 8
  • 9. Controls Button ToggleButton RadioButton CheckBox Slider ScrollBar TextBox ListView ComboBox Custom controls http://java.sun.com/javafx/1.3/docs/api/ 9
  • 10. Transformations Affine Rotate Scale Shear Translate http://java.sun.com/javafx/1.3/docs/api/ 10
  • 11. Images 11
  • 12. Animation Timeline Interpolator KeyFrame PathTransition RotateTransition ScaleTransition TranslateTransition http://java.sun.com/javafx/1.3/docs/api/ 12
  • 13. Event queue User UI Other threads 13
  • 14. Tested UI A Bézier curve is a parametric curve frequently used in computer graphics and related fields. 14
  • 16. UI test workflow Pass Perform necessary actions Find Pass Do Pass Verify Find next control Verify that expected Fail To perform operation Fail State reached Fail Failure analysis 16
  • 17. Jemmy and extensions Jemmy v2 LCDUI NetBeans JemmySG AWT & Swing JDK JemmyAWT JemmyCore JemmyRemote JemmySWT Jemmy v3 JemmyFX JemmyFXRemote JRMC JavaFX Authoring JavaFX Tool 17
  • 18. JemmyCore Text Interfaces API Scroller Input API Properties API Properties Interfaces Selectable Text Mouse AWT Robot Scroller Keyboard Thumb Scroller Selectable Images Lookup Comparator Hierarchy Criteria Images API Lookup API Factory Coords AWTRobot Custom 18
  • 19. JemmyFX Interfaces API Input API Properties API Properties Interfaces Mouse ot Text ob R AWT Robot FX Scroller Keyboard Operators API Selectable AWT Robot Images Lookup Comparator Hierarchy Criteria Images API Custom Coords Th Lookup API um Text Factory Scenes, ID nodes b Sc ro FXRobot AWTRobot lle r 19
  • 22. Lookup principles Test should be able to find control by ... • Type • Property – text – value – ID – tooltip • Image • Coordinated • Index (last resort) • Any criteria which could be written in java code 22
  • 25. Control interfaces Control type Properties Node Mouse, Keyboard Control Focusable ToggleButton Selectable Text SelectionText ScrollBar, Slider Scroll ListView Scroll, Parent<? extends Object> Scene, Group Parent<Node> 25
  • 28. UI test • Customize ... – Curve attributes – View attributes • Verify image • Generate code • Verify code • Start animation • Verify animation 28
  • 29. Test 29
  • 30. Waitings Every UI action takes time • Wait for everything – Window appearance – Label change – Image appearance – Property change – File update • Configurable timeouts • Exceptions 30
  • 32. Event queue User UI Other threads 32
  • 33. Event queue with a test Lookup Actions Verifications Test UI Other threads 33
  • 34. Pull data through queue 34
  • 35. Properties Control type Properties Node ID bounds Control get$tooltip get$cursor ToggleButton get$pressed Text text get$strikethrough get$underline Slider, ScrollBar vertical minimum maximum value CheckBox state is.tri.state TextInputControl selection.anchor position text get$columns get$editable 35
  • 37. Images - = Expected Actual Diff 37
  • 41. Test automation effectiveness TM * NR * NC EA = TD + TS * NR * NC TM – time needed to run the tests manually TD – time needed for automated test development TS – time needed for automated test support NR – number of test runs NC – number of tested configurations 41
  • 42. What about record&replay? • Pretty low TD – Pretty much the same as TM … but ... • High TS – Generates unmaintainable code – No test code encapsulation 42
  • 43. Ideal test • Lives forever • Written in terms of domain model • All the UI logic is hidden within a library 43
  • 45. JemmyRemote Desktop Device Properties Interfaces Properties Text Mouse Scroller Keyboard Selectable Socket Images Lookup Comparator Hierarchy properties Criteria Hierarchy By Factory 45
  • 46. JemmyRemote • Benefits – Low load on tested UI – Ability to run on low-end devices • Limitations – Two-part code – Lookup is only through properties – Slow 46
  • 47. JemmyFXRemote Desktop Device AW Properties Interfaces Properties T Mouse Rob Text ot Scroller Keyboard Selectable Socket Images Lookup FXRobot Comparator Hierarchy properties Criteria Scenes, By Factory nodes AWTRobot 47
  • 49. References http://jemmy.dev.java.net https://jemmy.dev.java.net/AutomationEffectiveness.html https://jemmy.dev.java.net/RecordingVSCoding.html users@dev.java.net alexandre.iline@oracle.com alexander.kouznetsov@oracle.com 49
  • 50. <Insert Picture Here> UI test automation techniques by an example of JavaFX UI. Alexandre (Shura) Iline Java quality architect
  • 52. Operators API <Control type name>Operator.find(SceneOperator, <lookup data>) 52