| Joe Fernandez | ba4cf3c | 2012-08-01 16:21:17 -0700 | [diff] [blame] | 1 | page.title=Accessibility Testing Checklist |
| 2 | parent.title=Testing |
| 3 | parent.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 |
| 144 | requires setup of your testing device. This section describes how to enable these features for |
| 145 | accessibility 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 |
| 156 | the Explore by Touch system feature. The TalkBack accessibility service comes preinstalled on most |
| 157 | Android 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 |
| 159 | Play</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 |
| 165 | controls as the user moves focus onto controls. This service should be enabled as part of testing |
| 166 | focus 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 Fernandez | 2e8d478 | 2014-08-22 16:08:27 -0700 | [diff] [blame] | 182 | <a href="https://support.google.com/accessibility/android/topic/3529932">TalkBack</a>.</p> |
| Joe Fernandez | ba4cf3c | 2012-08-01 16:21:17 -0700 | [diff] [blame] | 183 | |
| 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 |
| 203 | Touch</strong> to enable it. |
| 204 | <p class="note"><strong>Note:</strong> You must turn on TalkBack <em>first</em>, otherwise this |
| 205 | option is not available.</p> |
| 206 | </li> |
| 207 | </ol> |
| 208 | |
| 209 | <p>For more information about using the Explore by Touch features, see |
| Joe Fernandez | 2e8d478 | 2014-08-22 16:08:27 -0700 | [diff] [blame] | 210 | <a href="https://support.google.com/accessibility/android/answer/6006598">Touch Exploration</a>.</p> |
| Joe Fernandez | ba4cf3c | 2012-08-01 16:21:17 -0700 | [diff] [blame] | 211 | |
| 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 Fernandez | 2e8d478 | 2014-08-22 16:08:27 -0700 | [diff] [blame] | 233 | <a href="https://support.google.com/accessibility/android/answer/6006598">gestures</a>. This |
| Joe Fernandez | ba4cf3c | 2012-08-01 16:21:17 -0700 | [diff] [blame] | 234 | 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 |
| 237 | than keyboards and D-pads. While gestures allow users to focus on nearly any on-screen |
| 238 | content, 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 > Accessibility > TalkBack > |
| 246 | Settings > Manage shortcut gestures</strong>. |
| 247 | </ul> |
| 248 | |
| 249 | <p>For more information about using Explore by Touch accessibility gestures, see |
| Joe Fernandez | 2e8d478 | 2014-08-22 16:08:27 -0700 | [diff] [blame] | 250 | <a href="https://support.google.com/accessibility/android/answer/6006598">Touch Exploration</a>.</p> |
| Joe Fernandez | ba4cf3c | 2012-08-01 16:21:17 -0700 | [diff] [blame] | 251 | |
| 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> |