1.7 未来的测试
这一节内容都是笔者畅想的,如有雷同,纯属意外。
移动互联网时代,特别是Native的App,版本更新的成本很高(除时间成本,还有对用户体验的影响),所以大多数App都会经过充分的测试再发布版本。
随着热补丁(hotfix)技术的演进以及H5的流行,可以不需要发布新版本而发布一个补丁就可以发布新功能或者修复问题(而且用户基本无感知,不需要安装过程,下次启动就自动更新了),这样就可以在没有充分测试的情况下,快速通过用户来验证。这样对测试的依赖可能会越来越小。那么未来的产品都是通过用户(灰度或者正式上线)直接验证吗?
应该不可能全部都通过用户来验证(灰度或者正式上线),不经过测试而直接上线,可能出现问题的概率会增大,如果真的出现问题,那么会对产品的口碑带来很大的影响。但是热补丁技术确实是可以快速修复问题的方案,以后会被逐步应用。即使利用热补丁技术,还是需要度量产品品质的,例如线上用户各类性能指标以及用户反馈等,对于品质的追求还是始终存在的,也就是仍需要有人来做品质这样的工作。
1.7.1 线上数据挖掘
既然线上数据会越来越重要,那么就需要一整套埋点上报体系(终端是SDK形式,服务端存储各类数据),同时对上报数据进行数据分析,可能需要利用到机器学习等技术分析数据,判断是否有潜在问题。数据上报体系是每个App都有的基本功能,包含需要关注具体上报什么信息,例如,
(1)路径埋点:关键路径的埋点。
(2)错误码信息:统一错误码设计,方便排查。
(3)调用堆栈:堆栈调用信息。
(4)方法跟踪:函数方法的链条。
(5)用户动作:用户操作路径(可以详细到用户何时点击哪个控件)。
(6)机型网络信息:基础手机信息收集。
(7)性能指标(内存/CPU/FPS):各类性能指标的消息速度/流量/函数调用时间。
在对App全方位埋点后,就会有上报的数据,哪些数据需要进行分析,具体分析方法各种各样,如图1-16所示。该图主要描述了一种线上数据分析模型,包括数据收集容器、数据分析容器、Bug处理容器三个部分。
图1-16 线上数据分析模型
如果埋点上报体系建设完善,任何人(Dogfood、Showcase、众测、灰度等)只要体验产品,就是给产品做测试,这样就会上报很多数据,再系统分析这些数据,进而找到某些潜在问题。
1.7.2 人工智能
最近,Facebook发布聊天机器人Chatbot,Google发布Google Assistant以及Google Home音箱,Amazon也发布Echo音箱,整个业界的发展趋势变成从App演进到Bot。同时,Google的战略也从Mobile First转变为AI First。那么对于人工智能(Bot),应该怎么测试呢?
业界暂时还没有开源或者公开的测试方案,可能各公司也都在探索中,传统上针对AI的算法测试也是持续演进的。我们先回到人工智能本身,其实就是对数据的智能处理(这也是拥有大数据的Google等公司的人工智能快速发展的原因之一),那么人工智能测试还是得围绕数据进行测试。当然,这样的数据是海量的,因此要采用抽样模型进行评测。总的来说,就是构建以及收集数据样本。数据样本的构建,需要对具体处理数据结构足够了解,然后通过自动化方式生成样本数据。同时,除了构建样本数据,还可以通过另外的渠道来收集用户数据,例如众测或者众包的方式收集样本数据。
除了对数据的测试外,在人工智能出现后,人机交互方式会出现大的变化,语音交互可能是主要交互模式之一,那么如何保证优秀的用户体验呢?交互评测需要真实用户的参与,首先设计合理的评测问卷,然后通过众测或者众包等平台引入不同用户的参与,通过双盲测试收集各类数据。同时也会通过AB Test来收集线上用户的反馈,不断改善用户体验。
总的来说,人工智能测试除了对AI算法的测试外,还需要关注数据类测试+交互类测试。
1.7.3 众测
上面提到的线上数据挖掘(需要各种机型、网络、数据环境等)以及人工智能(数据样本采集)都需要有一定量的真实用户参与,才能更好地评测产品品质。那么可能就需要用共享经济的方式,快速集合一群合适用户来帮忙做评测(收集数据或者产品体验等),这就是最近几年业界流行的众测(众包)模式。众测(众包)模式的优点如下。
(1)闭环时间短,沟通效率高:因为有报酬等激励,众测(众包)用户积极度更高。
(2)定向用户属性支持:众测(众包)平台会收集用户属性,例如性别、年龄、职务、学历等,更有针对性地向合适人群做评测。
(3)定向设备属性支持:众测(众包)平台会收集设备属性,例如机型、ROM、网络、地域等,更有针对性地向合适人群做评测,特别是对于地域有特殊要求的,可以快速响应。
(4)用户行为高度可控、可刷机、可支付。众测(众包)平台的用户都是相对狂热的粉丝,可以帮助做一些特殊操作,例如重复刷机、重复尝试某个问题。
众测(众包)的具体使用模式大概有以下几类。
(1)需求评测(评估需求的适用范围等)。
(2)机型覆盖测试(覆盖各类机型适配情况)。
(3)重要问题复现(某些问题的复现)。
(4)大量数据收集(数据标准类)。
(5)问卷调查收集(用户调研)。
(6)复杂环境评测(某些功能的评测)。
众测(众包)使用可能是一个趋势,有能力的公司可以逐步建设这样的平台,这样能更快地验证产品,产品验证的成本会更低。
腾讯公司建设了一个众测的平台(http://tesly.qq.com),有需要的读者可以去看看。