blob: 20948fa2306fc2e126cd3debd15a04b45d69d537 [file] [log] [blame]
Joe Fernandezba4cf3c2012-08-01 16:21:17 -07001page.title=Accessibility Testing Checklist
2parent.title=Testing
3parent.link=index.html
4@jd:body
5
6<div id="qv-wrapper">
7 <div id="qv">
8 <h2>In this document</h2>
9 <ol>
10 <li><a href="#goals">Testing Goals</a></li>
11 <li><a href="#requirements">Testing Requirements</a></li>
12 <li><a href="#recommendations">Testing Recommendations</a></li>
13 <li><a href="#special-cases">Special Cases and Considerations</a></li>
14 <li><a href="#how-to">Testing Accessibility Features</a>
15 <ol>
16 <li><a href="#test-audibles">Testing audible feedback</a></li>
17 <li><a href="#test-navigation">Testing focus navigation</a></li>
18 <li><a href="#test-gestures">Testing gesture navigation</a></li>
19 </ol>
20 </li>
21 </ol>
22
23 <h2>See Also</h2>
24 <ol>
25 <li>
26 <a href="{@docRoot}guide/topics/ui/accessibility/checklist.html">
27 Accessibility Developer Checklist</a>
28 </li>
29 <li>
30 <a href="{@docRoot}design/patterns/accessibility.html">
31 Android Design: Accessibility</a>
32 </li>
33 <li>
34 <a href="{@docRoot}guide/topics/ui/accessibility/apps.html">
35 Making Applications Accessible</a>
36 </li>
37 </ol>
38 </div>
39</div>
40<p>
41 Testing is an important part of making your application accessible to users with varying
42 abilities. Following <a href="{@docRoot}design/patterns/accessibility.html">design</a> and
43 <a href="{@docRoot}guide/topics/ui/accessibility/checklist.html">development</a> guidelines for
44 accessibility are important steps toward that goal, but testing for accessibility can uncover
45 problems with user interaction that are not obvious during design and development.</p>
46
47<p>This accessibility testing checklist guides you through the important aspects of
48 accessibility testing, including overall goals, required testing steps, recommended testing and
49 special considerations. This document also discusses how to enable accessibility features on
50 Android devices for testing purposes.</p>
51
52
53<h2 id="goals">Testing Goals</h2>
54
55<p>Your accessibility testing should have the following, high level goals:</p>
56
57<ul>
58 <li>Set up and use the application without sighted assistance</li>
59 <li>All task workflows in the application can be easily navigated using directional controls and
60 provide clear and appropriate feedback</li>
61</ul>
62
63
64<h2 id="requirements">Testing Requirements</h2>
65
66<p>The following tests must be completed in order to ensure a minimum level of application
67 accessibility.</p>
68
69<ol>
70 <li><strong>Directional controls:</strong> Verify that the application can be operated
71 without the use of a touch screen. Attempt to use only directional controls to accomplish the
72 primary tasks in the application. Use the keyboard and directional-pad (D-Pad) controls in the
73 Android <a href="{@docRoot}tools/devices/emulator.html">Emulator</a> or use
74 <a href="http://support.google.com/nexus/bin/answer.py?hl=en&answer=2700718">gesture
75 navigation</a> on devices with Android 4.1 (API Level 16) or higher.
76 <p class="note"><strong>Note:</strong> Keyboards and D-pads provide different navigation paths
77 than accessibility gestures. While gestures allow users to focus on nearly any on-screen
78 content, keyboard and D-pad navigation only allow focus on input fields and buttons.</p>
79 </li>
80 <li><strong>TalkBack audio prompts:</strong> Verify that user interface controls that provide
81 information (graphics or text) or allow user action have clear and accurate audio descriptions
82 when <a href="#testing-talkback">TalkBack is enabled</a> and controls are focused. Use
83 directional controls to move focus between application layout elements.</li>
84 <li><strong>Explore by Touch prompts:</strong> Verify that user interface controls that
85 provide information (graphics or text) or allow user action have appropriate audio descriptions
86 when <a href="#testing-ebt">Explore by Touch is enabled</a>. There should be no
87 regions where contents or controls do not provide an audio description.</li>
88 <li><strong>Touchable control sizes:</strong> All controls where a user can select or take an
89 action must be a minimum of 48 dp (approximately 9mm) in length and width, as recommended by
90 <a href="{@docRoot}design/patterns/accessibility.html">Android Design</a>.</li>
91 <li><strong>Gestures work with TalkBack enabled:</strong> Verify that app-specific gestures,
92 such as zooming images, scrolling lists, swiping between pages or navigating carousel controls
93 continue to work when <a href="#testing-talkback">TalkBack is enabled</a>. If these gestures do
94 not function, then an alternative interface for these actions must be provided.</li>
95 <li><strong>No audio-only feedback:</strong> Audio feedback must always have a secondary
96 feedback mechanism to support users who are deaf or hard of hearing, for example: A sound alert
97 for the arrival of a message should also be accompanied by a system
98 {@link android.app.Notification}, haptic feedback (if available) or another visual alert.</li>
99</ol>
100
101
102<h2 id="recommendations">Testing Recommendations</h2>
103
104<p>The following tests are recommended for ensuring the accessibility of your application. If you
105 do not test these items, it may impact the overall accessibility and quality of your
106 application.</p>
107
108<ol>
109 <li><strong>Repetitive audio prompting:</strong> Check that closely related controls (such as
110 items with multiple components in a list) do not simply repeat the same audio prompt. For
111 example, in a contacts list that contains a contact picture, written name and title, the prompts
112 should not simply repeat Bob Smith for each item.</li>
113 <li><strong>Audio prompt overloading or underloading:</strong> Check that closely related
114 controls provide an appropriate level of audio information that enables users to understand and
115 act on a screen element. Too little or too much prompting can make it difficult to understand
116 and use a control.</li>
117</ol>
118
119
120<h2 id="special-cases">Special Cases and Considerations</h2>
121
122<p>The following list describes specific situations that should be tested to ensure an
123 accessible app. Some, none or all of the cases described here may apply to your application. Be
124 sure to review this list to find out if these special cases apply and take appropriate action.</p>
125
126<ol>
127 <li><strong>Review developer special cases and considerations:</strong> Review the list of
128 <a href="{@docRoot}guide/topics/ui/accessibility/checklist.html#special-cases">special cases</a>
129 for accessibility development and test your application for the cases that apply.</li>
130 <li><strong>Prompts for controls that change function:</strong> Buttons or other controls
131 that change function due to application context or workflow must provide audio prompts
132 appropriate to their current function. For example, a button that changes function from play
133 video to pause video should provide an audio prompt which is appropriate to its current state.</li>
134 <li><strong>Video playback and captioning:</strong> If the application provides video
135 playback, verify that it supports captioning and subtitles to assist users who are deaf or hard
136 of hearing. The video playback controls must clearly indicate if captioning is available for a
137 video and provide a clear way of enabling captions.</li>
138</ol>
139
140
141<h2 id="how-to">Testing Accessibility Features</h2>
142
143<p>Testing of accessibility features such as TalkBack, Explore by Touch and accessibility Gestures
144requires setup of your testing device. This section describes how to enable these features for
145accessibility testing.</p>
146
147
148<h3 id="test-audibles">Testing audible feedback</h3>
149
150<p>Audible accessibility feedback features on Android devices provide audio prompts that speaks
151 the screen content as you move around an application. By enabling these features on an Android
152 device, you can test the experience of users with blindness or low-vision using your application.
153</p>
154
155<p>Audible feedback for users on Android is typically provided by TalkBack accessibility service and
156the Explore by Touch system feature. The TalkBack accessibility service comes preinstalled on most
157Android devices and can also be downloaded for free from
158<a href="https://play.google.com/store/apps/details?id=com.google.android.marvin.talkback">Google
159Play</a>. The Explore by Touch system feature is available on devices running Android 4.0 and later.
160</p>
161
162<h4 id="testing-talkback">Testing with TalkBack</h4>
163
164<p>The <em>TalkBack</em> accessibility service works by speaking the contents of user interface
165controls as the user moves focus onto controls. This service should be enabled as part of testing
166focus navigation and audible prompts.</p>
167
168<p>To enable the TalkBack accessibility service:</p>
169<ol>
170 <li>Launch the <strong>Settings</strong> application.</li>
171 <li>Navigate to the <strong>Accessibility</strong> category and select it.</li>
172 <li>Select <strong>Accessibility</strong> to enable it.</li>
173 <li>Select <strong>TalkBack</strong> to enable it.</li>
174</ol>
175
176<p class="note">
177 <strong>Note:</strong> While TalkBack is the most available Android accessibility service for
178 users with disabilities, other accessibility services are available and may be installed by users.
179</p>
180
181<p>For more information about using TalkBack, see
Joe Fernandez2e8d4782014-08-22 16:08:27 -0700182<a href="https://support.google.com/accessibility/android/topic/3529932">TalkBack</a>.</p>
Joe Fernandezba4cf3c2012-08-01 16:21:17 -0700183
184<h4 id="testing-ebt">Testing with Explore by Touch</h4>
185
186<p>The <em>Explore by Touch</em> system feature is available on devices running Android 4.0 and
187 later, and works by enabling a special accessibility mode that allows users to drag a finger
188 around the interface of an application and hear the contents of the screen spoken. This feature
189 does not require screen elements to be focused using an directional controller, but listens for
190 hover events over user interface controls.
191</p>
192
193<p>To enable Explore by Touch on Android 4.0 and later:</p>
194<ol>
195 <li>Launch the <strong>Settings</strong> application.</li>
196 <li>Navigate to the <strong>Accessibility</strong> category and select it.</li>
197 <li>Select the <strong>TalkBack</strong> to enable it.
198 <p class="note"><strong>Note:</strong> On Android 4.1 (API Level 16) and higher, the system
199 provides a popup message to enable Explore by Touch. On older versions, you must follow the
200 step below.</p>
201 </li>
202 <li>Return to the <strong>Accessibility</strong> category and select <strong>Explore by
203Touch</strong> to enable it.
204 <p class="note"><strong>Note:</strong> You must turn on TalkBack <em>first</em>, otherwise this
205option is not available.</p>
206 </li>
207</ol>
208
209<p>For more information about using the Explore by Touch features, see
Joe Fernandez2e8d4782014-08-22 16:08:27 -0700210<a href="https://support.google.com/accessibility/android/answer/6006598">Touch Exploration</a>.</p>
Joe Fernandezba4cf3c2012-08-01 16:21:17 -0700211
212<h3 id="test-navigation">Testing focus navigation</h3>
213
214<p>Focus navigation is the use of directional controls to navigate between the individual user
215 interface elements of an application in order to operate it. Users with limited vision or limited
216 manual dexterity often use this mode of navigation instead of touch navigation. As part of
217 accessibility testing, you should verify that your application can be operated using only
218 directional controls.</p>
219
220<p>You can test navigation of your application using only focus controls, even if your test devices
221 does not have a directional controller. The <a href="{@docRoot}tools/help/emulator.html">Android
222 Emulator</a> provides a simulated directional controller that you can use to test navigation. You
223 can also use a software-based directional controller, such as the one provided by the
224 <a href="https://play.google.com/store/apps/details?id=com.googlecode.eyesfree.inputmethod.latin"
225 >Eyes-Free Keyboard</a> to simulate use of a D-pad on a test device that does not have a physical
226 D-pad.</p>
227
228
229<h3 id="test-gestures">Testing gesture navigation</h3>
230
231<p>Gesture navigation is an accessibility navigation mode that allows users to navigate Android
232 devices and applications using specific
Joe Fernandez2e8d4782014-08-22 16:08:27 -0700233 <a href="https://support.google.com/accessibility/android/answer/6006598">gestures</a>. This
Joe Fernandezba4cf3c2012-08-01 16:21:17 -0700234 navigation mode is available on Android 4.1 (API Level 16) and higher.</p>
235
236<p class="note"><strong>Note:</strong> Accessibility gestures provide a different navigation path
237than keyboards and D-pads. While gestures allow users to focus on nearly any on-screen
238content, keyboard and D-pad navigation only allow focus on input fields and buttons.</p>
239
240<p>To enable gesture navigation on Android 4.1 and later:</p>
241<ul>
242 <li>Enable both TalkBack and the Explore by Touch feature as described in the
243 <a href="#testing-ebt">Testing with Explore by Touch</a>. When <em>both</em> of these
244 features are enabled, accessibility gestures are automatically enabled.</li>
245 <li>You can change gesture settings using <strong>Settings &gt; Accessibility &gt; TalkBack &gt;
246 Settings &gt; Manage shortcut gestures</strong>.
247</ul>
248
249<p>For more information about using Explore by Touch accessibility gestures, see
Joe Fernandez2e8d4782014-08-22 16:08:27 -0700250<a href="https://support.google.com/accessibility/android/answer/6006598">Touch Exploration</a>.</p>
Joe Fernandezba4cf3c2012-08-01 16:21:17 -0700251
252<p class="note">
253 <strong>Note:</strong> Accessibility services other than TalkBack may map accessibility gestures
254 to different user actions. If gestures are not producing the expected actions during testing, try
255 disabling other accessibility services before proceeding.</p>