关于Android的Accessibility--测试

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013867301/article/details/83243362

测试

人工测试

目前的手动测试都是基于TalkBack测试,先开启TalkBack。

软件方式:通过快速左滑或者右滑来进行元素切换,通过移动触摸屏幕来聆听提示,通过双击来选择元素。
硬件方式:一个开关对应“Next”–点击来移动焦点;一个开关对应“Select”–点击来选择聚焦的元素。

主要的测试方向:

  • 声音反馈是否合适,弹窗或临时信息的声音要更大一些
  • 整体流程是否流畅
  • 只靠滑动是否就能把所有元素遍历
  • 可以执行action的元素是否都有高亮
  • 文本的添加和修改是否简便
  • Spoken feedback的文字是否简洁明了

分析工具

分析工具的主要目的是用来补充人工测试忽略的部分。

  • Accessibility Scanner:基于Accessibility框架,用于分析内容标签、可点击元素、颜色对比度等,来给与提升建议。
  • Node Tree Debugging:让人更直观的看到Accessibility services的结构形式,有助于分析。
  • UI Automator Viewer:这个工具可以提取view的可见的展示结构,显示id及文本,有助于纠错
  • Lint: 用于提示contentDescription的缺失

自动化测试

Espresso :

//开启检测,只要有ViewActions中的操作,就会被执行
AccessibilityChecks.enable();   
//从根目录检测
AccessibilityChecks.enable().setRunChecksFromRootView(true);  
//忽略已知的一些问题,方便后续一起修复
AccessibilityValidator validator = AccessibilityChecks.enable();
Matcher<AccessibilityViewCheckResult> myMatcher =
        allOf(
                matchesCheckNames(is("TouchTargetSizeViewCheck")),
                matchesViews(withId(R.id.my_overflow)));
validator.setSuppressingResultMatcher(myMatcher);  

Robolectric:

Robolectric在UI测试上有些短板,比如不能得到触摸目标的大小、不能获取duplicate clickable items。但是可以通过其他工具配合获取,比如Accessibility Scanner

//忽略已知问题  
http://robolectric.org/javadoc/3.1/org/robolectric/util/AccessibilityUtil.html#setSuppressingResultMatcher(org.hamcrest.Matcher)

Node Tree Debug

node tree debugging 是用来测试的方法。
accessibility services对于ui的解释和app的不太一样,所以需要类似的表现形式来让人更好的调试。这个形式就是node tree debugging

在accessibility services中,一个窗口的所有内容会被解析成AccessibilityNodeInfo树,树上每个节点都包含一系列的AccessibilityAction,而每个action则对应了focusable或者clickable之类信息

注意节点顺序和view的节点顺序不一定一样;LinearLayout会被解释成FrameLayout

开启node tree debugging:

  1. 进入 Talkback Settings > Developer settings
  2. 启用节点树调试功能. 设置日志level为verbose
  3. 找一下选项,开启需要记录的手势操作(官方文档还是设置选项,有个管理手势;但是我看的两个手机都在开发者选项,有个过滤手势记录)
  4. 开启TalkBack
    单纯的开启TalkBack会弹出一个说明窗,再点击确定会说权限窗口被覆盖,然后就只能关闭</>

然后输入$ adb logcat,打开app并操作手势就可以看到输出了
疑问:$ adb logcat -s TreeDebug 并没有输出

如果有的话会看到起点坐标、长宽、文字、标签描述、以及支持的action,是否被选择等:

V TreeDebug: (-2147450924)81.CheckBox:(56, 336 - 1384, 448):Hi, I'm a checkbox!:Testing a:FAC:( ):focusable:clickable

action对应:
ACTION_FOCUS (“F”)
ACTION_ACCESSIBILITY_FOCUS (“A”)
ACTION_CLICK (“C”)
更多对应关系可以在github上的goolel/talkback项目中找到(原链接目录已不存在,未确认)

猜你喜欢

转载自blog.csdn.net/u013867301/article/details/83243362