• 先说非技术上:
    1、机型的选择:两个主要的途径,一个是主流机型,国内的像华为、荣耀、小米/红米、O/V 这些比较大的,而且每个品牌下面一般都有几个主流的产品线,以华为为例,有 Mate 系统、P 系列、Nova 系列等,如果条件允许的话,每个产品线都可以选择一个,如果能从一些数据渠道知道这些机型的分布最好,如果没有渠道,有个建议就是去 JD 看各个品牌下对应系列的销量,可以作为参考;另一个路径则是通过后台的数据拿到使用测试的 APP 的机型分布,比如友盟之类的。往往是这两种相结合,优选出一批 P0 的测试机来,同时每隔一段时间比如半年或者一年更新;选择机型这里,有时候也需要考虑研发使用的技术栈或者开发语言对于设备的特殊要求,比如视频类的 APP,可能需要对 GPU 这块有更多倾斜;再比如说 APP 用 Flutter 开发的话,我之前踩过的坑就是 OPPO Color14 系统 H5 页面后台再前台,H5 页面就死翘翘了;

    2、系统的覆盖:兼容性的问题绝大部分时候都是系统兼容性的问题,先确保 Android 大的版本都能覆盖到,然后再是国内比较多的 ROM/OS 也有机型,比如鸿蒙 4.0/3.0、澎湃 OS、Color OS 等不同的版本,这个在友盟后台也是能够看到的;

    3、灰度策略:上面有人提到灰度,这个是可以使用起来的,如果 APP 支持按照人群或者设备灰度,那就可以使用这个策略,如果 APP 目前还不支持按照这个维度的灰度策略,那就可以借鉴国内各大应用市场的分阶段发布来做灰度发布,大的渠道除了应用宝以外,比如华为、荣耀、OPPO(OPPO 灰度的配置跟其他不同,不支持灰度转全量,略坑)、VIVO、小米都是支持到小数点后一位的分阶段发布的,可以根据灰度期间的问题反馈及崩溃数据等来观察问题;

    4、问题搜集及反馈:用户种子群,一般有用户运营通过企微来运营,我之前负责的 APP,我就在十来个微信群里猫着,还有就是后台的意见反馈等渠道;崩溃类的数据,则可以通过自研的上报平台,或者集成友盟、bugly 这些渠道来看。

    技术上的,我做过的有这些:
    5、崩溃类的问题,可以通过跑 Monkey 来做,没有条件的就使用 google 原生的 monkey 或者使用字节开源的 fastbot,有条件的话自己来开发一个遍历算法效率更高的框架来做;最好是全程自动化一条龙,我之前写过这样的一个框架:从 CI 上拉取指定分支最新的 APK-下载到电脑-ADB 安装 - 执行自研的 Monkey 自动化框架;一般下班前开始跑,第二天上班结束,运行分析的脚本:日志从测试机自动导出到电脑 - 分析其中的 Crash 和 ANR-去重并统计次数 - 对接 bug 系统自动化处理(新问题自动提单,已有问题更新状态或者添加备注)- 数据上报(运行时长、activity 覆盖率等数据),曾经负责测试的一个 APP 上累计提交过 1000+ 的 bug,累计崩溃次数 20000+,绝大部分都是 NPE 问题;

    6、UI 自动化测试:UI 自动化测试 ROI 比较低,虽然都说用 PO 模式,但其实改动也比较多,看情况使用吧,不过对于核心的场景,还是建议写写的,发版前在组里有的测试机上都跑跑,能够节省一些时间,能够确保核心功能或者链路是没有问题的,其他不太重要的地方即使有一些小的兼容性问题也都还可以接受;如果技术能力具备的话,可以内部搭建一个设备管理的服务,可以参考 STF、ATX 这些技术了;

    7、云测服务:如果组内 UI 自动化测试效果不太好,可以考虑云测;之前买过 testin 的服务,按照次数收费的,包括 Android 和 IOS,可以使用云测来对核心场景进行最多 600+ 机型的兼容性测试,我还有他们的联系方式,需要的话可以私信沟通。

  • UI 自动化框架调研总结 at 2016年12月08日

    还有一个关键的问题在于,做这种基于 UI 的自动化,其实际的意义能有多大?框架本身无可厚非,技术学习也非常重要,但结合到项目实践中,通过这种 UI 的自动化,我们的投资产出比能有多少呢?如果楼主在某个 app 项目中持续做下去的话,最后希望能用这个项目的实际数据来为我们解惑。