BACK >
app测试背后的数据运营(运营篇)
作者:吾诺瀚卓    浏览次数:3231    日期:2016-02-27

    一 APP测试的发展

    1 APP测试进化

    最早接触测试是在某Android应用市场,利用测试机进行功能的测试以及合作广告的审核以及版权、是否能够正常运行以及产品的实际应用能力等一系列的人工测试,相对于白盒或是黑盒这些已经是最基础的测试了,但是由于安卓应用的市场扩大化每日新增的压力,人工测试已经不能完全的满足使用需求,云端测试大大提高了市场审核的效率,我知道云端测试应该是4年前当时云端测试其实还没有大面积的推广,云端测试不但能够解决人工问题,测试机型适配以及相关的硬性测试条件。云端测试我最早有认知的是Testin该平台最初提供最基本的APP功能测试以及机型适配,最初市场的测试需求是很狭窄的不需要什么压力测试以及更多的服务要求等.......随着市场得发展很多人工不能完成选择需要测试的网络、机型,便可进行在线的自动化测试,无须人工干预,自动输出含错误、报警等测试日志、UI截图、内存/CPU/启动时间等在内的标准测试报告以及由于通过压力测试才能反映出来的问题是人工测试不能做到。云测能够满足一般的测试需求但很多是付费哒。

百度众测平台

    随之出现的众测平台,创业开发型团队App内部测试以及对应的crash报告类的服务相对很少,而且并不成熟。iOS开发的测试一直是令人头疼的问题。app开发的短周期和高效率的要求注定了一款app,特别是小公司的app,不会留给开发人员很多测试的时间。而在测试时往往又遇到crash报告提交困难,测试人员与开发人员沟通不便等等问题,极大延缓了测试进度。蒲公英测试平台即是为了解决iOS开发时测试的种种困难而生的服务,使用蒲公英测试平台可以十分便利地完成版本部署,测试用户Log提交,收集Carsh Log和收集用户反馈等工作,而这一切居然连一个iDP账号都不需要!(之前本人有分享过一篇《蒲公英(pgyer)——完美的 App测试方案》)其实还有很多测试方向我只说下自己所了解的........


    2 APP测试分类与需求

    a功能测试

    每项开发的新功能都需要进行测试。移动app测试中功能测试是一个重要方面,移动测试员应该要进行手动测试和自动化测试。刚开始测试时,测试员必须把移动app 当做“黑盒”一样进行手动测试,看看提供的功能是否正确并如设计的一样正常运作。除了经典软件测试,像点击按钮看看会发生什么,测试员还必须执行更多功能的移动设备专门的测试。

    如今,现代移动设备都有触摸屏,要求多点触控动作来与它们互动。设备可以是纵向或横向显示屏。它们提供动作,倾斜和螺旋传感器。它们有不同的接口可以连接其他设备或服务,比如GPS,NFC,照相机,LED等等。

    移动软件测试员必须确保app的所有特定设备功能在app里都能用。移动设备的种类这么多,测试时要将所有的覆盖是不可能的,所以功能测试时测试员要专注于他们app的关键之处。什么是真的简单有效的呢?设备旋转。我测试工作期间发现有许多bug仅需将设备从纵向旋转为横向再旋转回来就好了。

    除了整个手动测试过程,测试自动化对移动app也很重要。每个代码变化或新功能都可能影响现存功能及它们的状态。通常手动回归测试时间不够,所以测试员不得不找一个工具去进行自动化回归测试。现在市面上有很多移动测试自动化工具,有商业的也有开源额,面向各个不同平台,如Android,iPhone,Windows Phone 7以及移动web app。根据开发策略和结构,质量保证专家需要找出最适合他们环境的自动化工具。

    安卓的话,就有Robotium[ROB01], Robolectric [ROB02], Roboguice [ROB03], MonkeyTalk [MON01],Monkeyrunner [MON02], NativeDriver [NAT01] and Calabash for Android[CAL01]等开源工具。自动化工具Robotium已经变成开源界的实际标准。它用起来很简单且是基于安卓测试设备的。

    iPhone的测试自动化工具包括KIF (Keep It Functional) [KIF01],UIAutomation [UIA01], MonkeyTalk [MON01], Calabash for iOS [CAL02],Frank [FRA01], Zucchini [Zuc01]等等。所有这些工具也可以在设备或iOS模拟器上模拟真实用户互动。选择一个工具对测试自动化并不容易,但做决定时有一点要牢记,因为很重要:测试自动化应该使用同样的编程语言作为产品代码。如果测试和产品代码用一样的语言去写,那对测试员和开发员都有好处,因为这就使得他们做配对代码时可以轻松些。测试员可以和开发员在同一水平进行交流,他们可以执行测试和产品代码的代码审查。对于测试自动化,开发员可以用他们习惯的语言编写他们自己的脚本。

    总结:

    把app作为“黑盒”进行测试并试着中断它。

    打开移动app的每个屏幕并将设备从纵屏变为横屏再变回纵屏。

    别忘了去测试设备特定的功能,比如传感器和通信接口。

    为移动app编写测试自动化脚本。

    选择一个适应公司策略和结构的测试自动化工具。

    测试和产品代码应该用同一种语言。

    b非功能测试

    移动app测试的另一重要方面是移动app的非功能需求。移动app在推出市场或进行进一步开发前,移动测试员有许多需要测试的问题。

移动app测试

    早期开发阶段要进行的第一个测试应该是实用性测试。通常是由种子用户或同事进行的。可以找身边朋友安装APP,问问里面的人他们的APP使用情况。让他们看看现阶段开发的第一个版本并收集反馈,看看用户是否能很好地使用新功能,以便得出第一印象。

    检查APP的性能。将推出的版本与当前版本做一番比较,看看性能是一样?更好?还是更差?将APP安装到旧的设备上,看看该APP在旧设备上是否仍能运作,无论硬件设备好或差。最先进的设备也一样要这么做。

    测试电话,短信,彩信,微博或其他通知进来时APP的反应。使用APP时检查一下电量。确保测试过程测试设备是充满电的并每十分钟检查一下电池使用情况,看看该APP有没有太耗电。在低电量时把APP安装到设备上看看会发生什么。检查APP的内存使用情况。如果APP在本地文件系统中存储数据,测测不同内存卡的使用情况。想想看本地存储快满时会发生什么呢——APP会崩溃或弹出出错提醒框来通知用户吗?

    测试APP的安装和删除过程。更重要的是,测试从老版本升级为新版本的过程。或许本地数据库已经改变了,这样就会引起一些严重的迁移问题。

    App被本地化了吗?测试员需要用不同的语言测试APP。记得在不同的网络载体上以不同的网速进行测试。确定该APP在联通、电信、移动和WiFi环境下都能运作。

    别忘了检查网络连接不好或完全掉了时APP会怎么反应。飞行模式下使用该APP看看如果一个请求失败了会发生什么。将测试设备连接到电脑上并检查开发日志文件有没有例外、警告或其他奇怪的异常之处。这些只是移动测试员和开发员开发和测试一个APP时应该考虑的非功能需求中的一部分。

    总结:

    做实用性测试。

    比较app已推出版本和新版本的性能。

    检查电话,短信,彩信或微博或进来时app的反应。

    检查测试设备的电量。

    测试app的内存使用情况。

    安装并删除app。

    测试从旧版本升级到新版本的过程。

    检查语言的转换。

    在不同的载体和网络连接APP的使用情况。

    检查日志文件的错误或例外。

    3 APP测试的差异化需求

    a大方向差异化层面

    b测试定位层面

    c测试功能层面

    d测试运营层面

    二 APP测试数据的统计

    1测试数据的分类

    A内测数据分析

    B功能测试数据分析

    C兼容测试数据分析

    Dcrash反馈数据分析

    2 测试数据的运营

    a收集和整理数据

    基本数据、跟产品类别无关的数据和跟产品类别相关的数据。

    1.基础数据:下载量、激活量、新增用户量、活跃用户;

    2.社交:用户分布、用户留存(次日、3日、7日、月、次月、3月);

    3.电商:淘宝指数、网站流量、内容转换率;

    4.地图导航类:用户每日打开次数、地域分布;

    5.内容类:内容转化率(内容下载量/内容浏览量)、留存量;

    6.工具类:功能点击量、应用商城排名;

    7.其他:竞品数据(下载、激活等)。

    在进行数据发掘之前首先可以对产品做相应的数据建模,然后经过上线跟踪、分析,对比原来的模型,是否有遵循原来的模型。如果是模型不合理,则需要对数据模型进行矫正。如果出入较大则需要对数据进行分析,或者根据分析出来的数据 在产品上做内部测试或者灰度测试然后对比,如果原来的模型问题不大,再挖细节,分析其他数据找原因,结合数据模型,如果有问题了以后,针对问题追踪数据,进行分析。

    1.对于启动,留存这些数据。主要是看异常,发现异常以后再去找寻原因和问题;

    2.平时某个很正常的数据突然变化,我们也会追踪;

    3.在线用户,进行每日跟踪,是否呈曲线自然生长,或者出现异常;

    4.活跃用户,对用户的使用频次以及有效行为进行跟踪及分析。

    数据分析主要通过数据工具进行分析。数据分析主要为两种:

    1.第三方数据分析工具。如诸葛io,可以快速的接入,节省成本,比较适合创业型公司及刚上线产品,但是无法对关键数据在突发异样时进行跟踪;

    2.自己开发数据分析工具,可以对每个数据进行实时跟踪,并且快速做出产品的调整,需要足够的开发人员及成本,比较适合大型公司或者成熟型产品。

    b确定趋势和关键信息

    趋势的确定对于后期的推广起到至关重要的作用,例如广点通.....通过用户粘性以及用户的人群粘性页面以及测试用户习惯锁定关键信息

    3 测试数据的分析

    1. 首先基本的统计要有:

    指标:总用户数,新用户数,N日留存数据,日活跃(DAU),周活跃(WAU),月活跃(MAU),付费人数,付费率,付费点分布,核心动作的转化率(比如新手引导)市场占有率,地区,手机型号,APP版本号,操作系统版本等

    作用:活跃数据可以反映APP的热度,而留存数据可以看出此APP的用户黏度,付费数据(如果有)就是考察付费点设置是否合理。

    这个过程就是通过数据为应用建模。

    2. A/B测试。最好有专门这样一个系统用来测试调整APP,这样才能让分析真正反馈到优化APP设计上,而整个数据形成一个闭环,有了这个反馈环,数据分析才能越来越强大。

    3. 大付费额度用户的专门分析。也可以说是VIP系统,分析与追踪这些用户的行为特点,基本上这属于一个客户关系维系系统。

    4. 知识库。单个APP的用户分析价值有限,如果综合多个APP的数据,形成一个针对用户的标签库,这样对于APP产品运营来说就更有针对性了。最简单的举个例子,如果知识库中说一个用户已经在近期付费了10000人民币,而在此APP中却没有付费行为,如果这样的数据多了,就可以看到自己的产品是不是能够吸引到高质量的用户。当然,这个库对于广告的针对性投放也非常有价值。

    三 总结

    测试数据的搜集整理后进行一系列的分析,其实和运营的工作是重叠的,针对早期种子用户的行为习惯喜好分析得到更多的数据做更多的事情,以及确定正确的运营方向是非常重要的。