If you can't read please download the document
Upload
mariobehling
View
3.373
Download
3
Embed Size (px)
Citation preview
Novell Corporate Presentation Template 2009 - blue
GNOME Accessibility & Automation Testing
A brief introduction to use GNOME Accessibility to do automation
test
Ray WangSoftware EngineerNovell / [email protected]
Agenda
What is Accessibility?Definition
AT-SPI
How to use GNOME Accessibility to implement Automation TestAccerciser
LDTP
Orca
Dogtail
Strongwind
What is Accessibility?
What is Accessibility?
Definition
Abbreviation: A11y
Ability to access
Being able to use a Computer regardless of disability or severity of impairment
Wikipediahttp://en.wikipedia.org/wiki/Accessibility
http://en.wikipedia.org/wiki/Computer_accessibility
Other stuff...
What is Accessibility?
Definition
DisabilitiesVisual
Motor & Speech
Hearing
Cognitive
Visual: Common, Age, Large Fonts, High Contrast, Magnification, Screen Reader Motor & Speech: Mild Serious, Ignore False Activation, Specialized or Alternative Input Devices Synthetic SpeechHearing: Mild Serious, SubtitlesCognitive: Reading disorders, Comprehension & Composition Difficulties Speech Recognition Text Highlighting, Careful UI Design, Symbols & Pictures.
What is Accessibility?
AT-SPI
Assistive Technology Service Provider Interface (AT-SPI)
GNOME Accessibility infrastructure
AT-SPIcspi
pyatspi
atk-bridge
registryd
CSPI: The library for C bindingsPyatspi:The Python bindingsatk-bridge: The bridges, of course, need to understand both sides of what it being bridged; so atk-bridge must link to both ATK and AT-SPI.Registryd: Daemon
What is Accessibility?
AT-SPI
Turn on your GNOME Accessibility
What is Accessibility?
AT-SPI
What's happened?
What is Accessibility?
AT-SPI
ApplicationsA11y InfrastructureAssistive Technologies (AT)Divide the view of AT into 3 large components
application layer includes productivity software, desktop tools, window manager, panel, etc; these are the same apps found outside accessibility enabled environments. Also included in the application layer are the GUI toolkits and the APIs necessary to provide accessibility info to the rest of the subsystem. Those APIs may vary among applications and toolkits (i.e. Java, GTK+, mozilla, OpenOffice) but they give adequate information to allow bridging to the common layers below.infrastructure includes what we sometimes call the accessibility subsystem and is what people sometimes just call AT-SPI. We usually use the name AT-SPI more specifically to refer only to the software interfaces and implementations contained in the AT-SPI module; either way, the AT-SPI packages are key parts of the infrastructure layer. The infrastructure layer is what enables assistive technologies to interact consistently with different applications.assistive (or adaptive) technologies are the adapter programs that help the user operate desktop and apps. Examples: GOK, Orca, dasherQ: are features like StickyKeys assistive technologies? A: It depends who you ask; for our purposes we will call them accessibility utilities or platform accessibility features, and use AT to refer to programs that form a direct interface between the end user and the desktop, such as Screen Readers and alternative input systems.
What is Accessibility?
AT-SPI
ApplicationAT-SPI LayerATBridgeApplications and ATs communicate via a layered architecture
We can divide the infrastructure layer into bridge code and AT-SPI; the bridging code connects the applications with the AT-SPI subsystem and therefore can be considered part of the infrastructure.Bridges take accessibility support information (services, events) from within the application and converts it to a common format (in this case, the AT-SPI protocol). Examples: java-access-bridge for GNOME; libatk-bridge. Bridges are important because:Applications on the desktop may implement similar features with a wide variety of code:
Applications are written in different languages (C, Java, python, etc.) and may use different bGUI toolkits to create their interface components (GTK+, Java/Swing, mozilla-gecko, OpenOffice).
Their object models and internal APIs may be very different from one another (Gobject, UNO, mozilla)
This information needs to be shared or exported in a common ABI and via a common IPC protocol. We refer to the code that converts to and from the common format as bridging code.
What is Accessibility?
AT-SPI
ApplicationAT-SPI LayerATBridgeAPI callsEVENTSATs receive events and issue IPC calls
Bridges also listen to application events, for instance AtkObject events which are implemented as Gsignals, and convert them into the appropriate AT-SPI event notifications.
Events may give the AT some information about a change which has occurred in an application, but in many cases the AT needs to make API calls in response to an event in order to update the information it presents to the user. For instance, if focus moves to a new widget, speech and/or braille output may needed to inform the user of this change and in order to create a useful presentation of the newly focused object for the user (either as a spoken words or braille dots); alternatively if GOK is being used and a menu is focused or pops up, GOK may wish to traverse this menu in order to present the new choices to the user as a set of selectable GOK Buttons.
What is Accessibility?
AT-SPI (GNOME)
How GTK+/GNOME Applications connect to AT-SPI
GTK+/GNOME Application
ATK Bridge (libatk-bridge)
ATKGTK+APPAT-SPIATBridge
GNOME applications implement an in-process accessibility API called ATK.
This is bridged to the common AT-SPI layer by the ATK-bridge module.
Atk-bridge exports ATK information via AT-SPI it knows and understands the ATK API, but it doesn't know anything about specific applications or even anything about gtk+.
What is Accessibility?
AT-SPI (GNOME)
GTK+/GNOME Application
ATK Bridge (libatk-bridge)
ATKGTK+
AT-SPI
GAIL
How ATK is implemented for GTK+:The GAIL module
GAIL hooks into ATK and implements ATK interfaces on behalf of GTK+.
GAIL knows about ATK and GTK+, but neither ATK nor GTK+ know about GAIL.
GAIL is dynamically loaded via GTK_MODULES
The ATK implementations for the GTK+ widget set are provided by an extermal library called GAIL (or libgail). It is external for mostly historical reasons, and partly in order to allow alternate implementations to be loaded by specialized applications.
In the diagram above, note that GAIL gets information from GTK+ via public GTK+ API, and uses that information to fulfill the ATK interfaces on behalf of those widgets. For instance the atk-bridge calls ATK API, but the ATK call is redirected through code in libgail which in turn uses gtk+ API calls to provide the corresponding information.
What is Accessibility?
AT-SPI (Java)
Java/Swing Application
Java-access-bridge for GNOME (gnome-java-bridge.jar)
javax.accessibilitySwing
AT-SPI
APPAT-SPIATBridge
Java application use a different bridge
Swing defines a java-specific accessibility API in javax.accessibility
The end result is AT-SPI, just as for GNOME apps (interoperability).
OpenOffice.org have an internal UNO Accessibility API.
Until recently they bridged internally to javax.accessibility; now they bridge to ATK.
Java ATK Wrapper
What is Accessibility?
AT-SPI (Mono)
Winforms
Moonlight
What is Accessibility?
AT-SPI (The Big Picture)
What is Accessibility?
AT-SPI (CORBA DBus)
New AT-SPI (AT-SPI2)at-spi2-core
at-spi2-atk
Report Bugshttps://bugs.freedesktop.org/enter_bug.cgi?product=at-spi2
http://live.gnome.org/Accessibility/BonoboDeprecation
http://www.linuxfoundation.org/en/Accessibility/ATK/AT-SPI/AT-SPI_on_D-Bus
What is Accessibility?
AT-SPI (CORBA DBus)
What is Accessibility?
AT-SPI (CORBA DBus)
How to use GNOME Accessibility to implement Automation Test
Automation Test
Accerciser
Accerciser is An Assistive Technology (AT)
an interactive Python accessibility explorer for the GNOME desktop
uses AT-SPI to inspect and control widgets
allowing you to check if an application is providing correct information to assistive technologies and automated test frameworks.
Accerciser has a simple plugin framework which you can use to create custom views of accessibility information.
Useful AT tool for testing & debugging
http://live.gnome.org/Accerciser
Automation Test
Accerciser
Automation Test
LDTP
Linux Desktop Testing Project
Written in Python
Use python bindings (pyatspi)
Being used byGNOME
Ubuntu
VMware
Palm source
http://ldtp.freedesktop.org/wiki/
Automation Test
Orca
A free, open source scriptable Screen Reader
Written in Python
Use python bindings (pyatspi)
Could be used in automation testingHas its own test harness
Test samples in the source code (firefox, openoffice, gtk-demo, gcaltool etc)
http://live.gnome.org/Orca
Automation Test
Dogtail
Open source GUI testing tool and automation framework
Written in Python
Use python bindings (pyatspi)
Being used in some companies
Out of maintain?
Automation Test
Strongwind
GUI test automation framework inspired by dogtail
Written in Python
Use python bindings (pyatspi)
Human-readable log
http://medsphere.org/community/project/strongwind
Automation Test
Strongwind
How to write a Automation Test by using StrongwindTestable Application
Application Wrapper
Test Script(s)
http://www.mono-project.com/Accessibility:_Strongwind_Basics
Automation Test
Strongwind
Automation Test
Strongwind
Participation
Mailing ListsGNOME [email protected]
GNOME Desktop [email protected]
Accessiblity-at-spiaccessibility-atspi@lists.linux-foundation.org
Mono [email protected]
Irc channel:irc.gnome.org
#a11y
Reference
Python Power Accessibilityhttp://live.gnome.org/Accessibility/PythonPoweredAccessibility
Mono Accessibilityhttp://www.mono-project.com/Accessibility
GNOME Websitehttp://www.gnome.org
Unpublished Work of Novell, Inc. All Rights Reserved.This work is an unpublished work and contains confidential, proprietary, and trade secret information of Novell, Inc. Access to this work is restricted to Novell employees who have a need to know to perform tasks within the scope of their assignments. No part of this work may be practiced, performed, copied, distributed, revised, modified, translated, abridged, condensed, expanded, collected, or adapted without the prior written consent of Novell, Inc. Any use or exploitation of this work without authorization could subject the perpetrator to criminal and civil liability.
General DisclaimerThis document is not to be construed as a
promise by any participating company to develop, deliver, or market
a product. It is not a commitment to deliver any material, code, or
functionality, and should not be relied upon in making purchasing
decisions. Novell, Inc. makes no representations or warranties with
respect to the contents
of this document, and specifically disclaims any express or implied
warranties of merchantability or fitness for any particular
purpose. The development, release, and timing of features or
functionality described for Novell products remains at the sole
discretion of Novell. Further, Novell, Inc. reserves the right to
revise this document and to make changes to its content, at any
time, without obligation to notify any person or entity of such
revisions or changes. All Novell marks referenced in this
presentation are trademarks or registered trademarks of Novell,
Inc. in the United States and other countries. All third-party
trademarks are the property of their respective owners.
Click to enter the title (44pt)
Second line or subtitle (22pt)
Presenter Name (16pt)Presenter Title (14pt)
Company/email (14pt)
Click to Edit Section Break Text (32pt)
Right Justified
piece in master that I can't get rid of
Click to edit the outline text formatSecond Outline LevelThird Outline LevelFourth Outline LevelFifth Outline LevelSixth Outline LevelSeventh Outline LevelEighth Outline LevelNinth Outline Level
Click to edit the title text format
Click to edit the outline text formatSecond Outline LevelThird Outline LevelFourth Outline LevelFifth Outline LevelSixth Outline LevelSeventh Outline LevelEighth Outline LevelNinth Outline Level
Click to edit the title text format (32pt)
Click to edit the outline text format (24pt)Second Outline Level (20pt)Third Outline Level (16 pt)Fourth Outline Level (14pt)Fifth Outline Level (12pt)
Novell, Inc. All rights reserved.
Click to edit the title text format
Click to edit the outline text formatSecond Outline LevelThird Outline LevelFourth Outline Level