为了获得最佳效果,请使用本文档中介绍的所有方法:
手动测试
AccessibilityService
https://developer.android.google.cn/reference/android/accessibilityservice/AccessibilityService
开启 TalkBack
使用 TalkBack 浏览应用
开启 TalkBack 后,您可以通过以下两种常见方式导航:
编写有意义的标签
https://material.io/guidelines/usability/accessibility.html#accessibility-writing
TalkBack 用户文档
https://support.google.com/accessibility/android/answer/6006589
TalkBack 开发者设置可让您轻松使用 TalkBack 测试应用。
打开设备的 "设置" 应用。
转到无障碍,然后选择 TalkBack。
日志输出级别: 选择详细。
显示语音输出: 开启此设置即可在屏幕上查看 TalkBack 语音输出。
"开关控制" 可让用户使用开关 (而不是触摸屏) 与 Android 设备互动。开关分为以下几种: AbleNet、Enabling Devices、RJ Cooper 或 Tecla* 等出售的辅助技术设备;外部键盘按键;或者按钮。对于有运动障碍的用户,此服务非常有用。
配置 "开关控制" 的一种简单方式是使用两个开关。一个开关被指定为 "下一项" 开关,用于在屏幕上移动焦点;第二个是 "选择" 开关,用于选择焦点所在的元素。如需使用这种双开关方法,您可以使用任意一对硬件按键。
如果您使用外部开关 (如键盘),还需要执行其他设置步骤。例如,您需要重新启用软键盘。如需了解详情,请参阅开关控制用户文档:
如果您使用的是 TalkBack 5.1 或更高版本,则可以使用设置向导配置 "开关控制"。如需使用此向导 (而不是执行以下步骤),请依次转到设置 > 无障碍 > 开关控制 > 设置 > 打开 "开关控制" 设置。
确保 TalkBack 已关闭。
将音量调低键用作 "下一项" 开关:
将音量调高键用作 "选择" 开关:
通过 "开关控制" 浏览应用
如需通过 "开关控制" 浏览您的应用,请完成以下步骤:
在浏览过程中,注意下面几个问题:
https://material.io/guidelines/usability/accessibility.html#accessibility-writing
可选: 通过组选择来查看所有可扫描项
如需开启组选择,请完成以下步骤:
如需通过组选择使用 "开关控制" 来浏览您的应用,请完成以下步骤:
是否仅突出显示了可操作项?
盲文提示
Google 盲文提示
https://play.google.com/store/apps/details?id=com.googlecode.eyesfree.brailleback
https://support.google.com/accessibility/android/answer/3535226
打开设备的 "设置" 应用。
Voice Access
Voice Access
https://play.google.com/store/apps/details?id=com.google.android.apps.accessibility.voiceaccess
开始使用 Voice Access
https://support.google.com/accessibility/android/answer/6151848
分析工具
使用分析工具进行测试可以发现手动测试可能会错失的无障碍功能改进机会。
无障碍功能扫描仪
https://play.google.com/store/apps/details?id=com.google.android.apps.accessibility.auditor
无障碍功能测试框架
https://github.com/google/Accessibility-Test-Framework-for-Android
了解详情:
https://support.google.com/accessibility/android/answer/6376559
发布前测试报告
https://support.google.com/googleplay/android-developer/answer/7002270
将应用上传
https://support.google.com/googleplay/android-developer/answer/113469
无障碍功能测试框架
https://github.com/google/Accessibility-Test-Framework-for-Android
触摸目标大小
https://developer.android.google.cn/guide/topics/ui/accessibility/apps#touch-targets
低对比度
内容标签
实现
可修改的 View 标签
https://support.google.com/accessibility/android/answer/6378120
遍历顺序
https://support.google.com/accessibility/android/answer/7664232
uiautomatorviewer 工具提供了一个方便的 GUI,可扫描和分析 Android 设备上当前显示的界面组件。您可以使用 UI Automator 检查布局层次结构,并查看在设备前台显示的界面组件的属性。利用此信息,您可以创建更精细的测试。例如,通过创建与特定可见属性匹配的界面选择器来做到这一点。该工具位于 Android SDK 的 tools 目录中。
在无障碍功能测试中,此工具对于调试使用其他测试方法发现的问题很有用。例如,如果手动测试发现某个视图应包含却未包含可朗读的文本,或者某个视图不应获得却获得了焦点,您可以使用该工具帮助找出错误的来源。
如需详细了解 UI Automator 查看器,请参阅测试多个应用的界面:
Android Studio 会显示有关各种无障碍功能问题的 lint 警告,并提供指向源代码中包含这些问题的位置的链接。在以下示例中,一张图片缺少 contentDescription 属性。缺少内容说明会导致生成以下消息:
['contentDescription' attribute on image ] Missing
下图举例说明了此消息在 Android Studio 中是什么样子的:
△ Android Studio 中显示缺少 contentDescription 属性的消息
如果屏幕阅读器等无障碍服务的用户在应用内遇到这张图片,他们将无法理解该图片的含义。
自动测试
Espresso
https://developer.android.google.cn/guide/topics/ui/accessibility/testing#espresso
Robolectric
https://developer.android.google.cn/guide/topics/ui/accessibility/testing#robolectric
https://developer.android.google.cn/training/testing/espresso
启用检查
import androidx.test.espresso.accessibility.AccessibilityChecks
@RunWith(AndroidJUnit4::class)
@LargeTest
class MyWelcomeWorkflowIntegrationTest {
init {
AccessibilityChecks.enable()
}
}
AccessibilityChecks.enable().setRunChecksFromRootView(true)
ViewActions
https://developer.android.google.cn/reference/androidx/test/espresso/action/ViewActions
setRunChecksFromRootView()
https://github.com/google/Accessibility-Test-Framework-for-Android/blob/a6117fe0059c82dd764fa628d3817d724570f69e/src/main/java/com/google/android/apps/common/testing/accessibility/framework/integrations/espresso/AccessibilityValidator.java#L82
抑制结果的子集
setSuppressingResultMatcher()
https://github.com/google/Accessibility-Test-Framework-for-Android/blob/a6117fe0059c82dd764fa628d3817d724570f69e/src/main/java/com/google/android/apps/common/testing/accessibility/framework/integrations/espresso/AccessibilityValidator.java#L95
如果您对应用所做的更改可以改进无障碍功能的一个方面,让 Espresso 尽可能多地显示无障碍功能其他方面的结果会有好处。因此,最好仅抑制已知的具体改进机会。
如果您暂时抑制无障碍功能测试的某些结果,打算以后再处理,切勿意外抑制类似的结果。因此,请使用作用域较小的匹配器。为此,选择的匹配器应确保只有在给定的结果满足以下每项无障碍功能检查的条件时,Espresso 才会抑制该结果:
匹配器
http://hamcrest.org/JavaHamcrest/tutorial#a-tour-of-common-matchers
AccessibilityChecks.enable().apply {
setSuppressingResultMatcher(
allOf(
matchesCheckNames(`is`("TextContrastViewCheck")),
matchesViews(withId(R.id.countTV))
)
)
}
ATF 定义了多个匹配器
https://github.com/google/Accessibility-Test-Framework-for-Android/blob/a6117fe0059c82dd764fa628d3817d724570f69e/src/main/java/com/google/android/apps/common/testing/accessibility/framework/AccessibilityCheckResultUtils.java
警告: Robolectric 4.5 中已移除此功能,请改用 Espresso 或无障碍功能扫描仪应用:
抑制已知问题
AccessibilityUtil
http://robolectric.org/javadoc/3.1/org/robolectric/util/AccessibilityUtil.html
setSuppressingResultMatcher()
http://robolectric.org/javadoc/3.1/org/robolectric/util/AccessibilityUtil.html#setSuppressingResultMatcher(org.hamcrest.Matcher)
用户测试
为了找到可以测试您的应用的用户,请使用如下方法:
usertesting.com
https://www.usertesting.com/
Accessibility
https://groups.google.com/forum/#!forum/accessible
Eyes-free
https://groups.google.com/forum/#!forum/eyes-free
如需更多提示,请观看以下视频的用户测试部分 (从 31 分 10 秒到 44 分 51 秒):
△ 幕后花絮: Android 无障碍功能的新变化 | 2016 年 Google I/O 大会
原文标题:测试应用无障碍功能,助力构建适合更多人的精彩应用
文章出处:【微信公众号:谷歌开发者】欢迎添加关注!文章转载请注明出处。
全部0条评论
快来发表一下你的评论吧 !