前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >月活8.89亿背后:微信工程师细数兼容测试经验

月活8.89亿背后:微信工程师细数兼容测试经验

原创
作者头像
WeTest质量开放平台团队
修改于 2017-06-30 08:58:41
修改于 2017-06-30 08:58:41
3.2K0
举报

作者:曾夏,微信客户端测试开发

2017年4月,企鹅智酷公布了最新的《2017微信用户&生态研究报告》。报告数据显示,截止到2016年12月微信全球共计8.89亿月活用户,新兴的公众号平台拥有1000万个。微信这一年来直接带动了信息消费1742.5亿元,相当于2016年中国信息消费总规模的4.54%。

坐拥如此量级的用户,也意味着,微信发生一个小问题,即会影响大量的用户体验。基于此,微信非常注重质量。

目前国内很多硬件厂商,对于Android版本,深度定制自己的ROM、系统版本,例如小米的MIUI、华为的EMUI、联想的VIBEUI等。这就是N个厂商乘以M个版本,导致的版本数量爆炸,牵引出各种适配问题。

微信应用去适配那么多的设备花费了大量精力时间。在这个环境下,微信团队寄托于自动化测试,希望把更多的测试环节放在云端自动化地运行。

一、微信最关注的质量问题

兼容性测试覆盖的环节众多,微信优先选取核心的环节进行测试。并把必测的环节尽量以自动化,云端化的方式实现。那么,哪些问题属于高优先级?

1、安装和启动失败

安装和启动问题是属于最严重的bug。这种问题一般比较少出现,但是一出现就是大问题。安装和启动失败,很可能造成微信团队的监控数据不充分,有时无法主动发现问题,最后只能通过用户反馈感知到这种错误。此时可能已经给用户造成很大影响了。

比如曾经发现华为和三星某台机型的getDrawable这个api挂掉了,导致这两款机型部分用户启动不了微信,虽然影响用户量不大,但非常严重。安装失败和启动失败是兼容性测试最基本的要求。

2、Crash问题

Crash率是微信团队衡量一个版本是否稳定的重要标准,尤其是新出现的Crash。当测试包灰度出去之后,如果Crash率偏高,或新出现的Crash占比较高,微信团队一般会采取换包,撤包措施。这会带来以下连锁反应

1、给用户造成极差的使用体验

2、给开发和测试造成额外的工作

3、造成因版本发布延迟引起的一系列损失

因此,新出现的Crash一定是微信最关注的质量标准之一。

二、对症下药,提前发现问题

上面提及的兼容性问题,出现任何一种情况都是极其严重。微信团队根据同行的积累和历史经验,针对不同的问题,做不同的测试。

1、针对安装和启动问题——覆盖安装测试

覆盖安装,顾名思义就是用新版本的应用覆盖旧版本。

覆盖安装的测试流程如下:

针对安装和启动问题是影响最严重的问题,微信团队目前在版本发布前都要做覆盖安装测试。将要发布的包,安装并且启动成功之后保证微信基本功能能正常运行。微信的每个正式版本基本都会修改配置的版本号,Android也是根据版本号来判断App是否有更新。当覆盖安装完之后,App有专门的代码处理更新,保证数据兼容。一般第三方商店都是以这个值来检测软件是否更新。

覆盖安装测试的流程较简单,尽可能模拟真实用户升级安装使用的场景。覆盖安装之后,用户启动微信时,后台发出升级指令,升级主要是确认老版本的数据能否在新版本中使用;最后通过冒烟测试,检测微信核心功能(覆盖到主要的数据库)能否正常通过。微信团队重视覆盖安装测试,除了监测一些数据兼容性问题外,还需检测新打的包是否有问题。此外tinker的patch包也需要经过类似的测试,保证patch成功以及基本的核心功能。

覆盖安装测试只在发布前夕做,因为微信这边是持续集成开发,分布分支上的包一直在更新,所以只拿即将发布的包来做,通过之后才会进行外网发布。

2、Crash问题——稳定性测试

Crash问题对应的测试是稳定性测试。对于app的稳定性测试,官方的测试工具是monkey。monkey会产生一些列随机性事件(具体比例可以配置)测试目标APP是否出现Crash。

Monkey测试的局限性

微信团队发现monkey不会去检测界面上的控件,因此产生的事件过于随机,不太符合微信的测试需求。因此,微信开发了一个基于控件的定制化monkey来做稳定性测试。

要基于控件开发一个定制化monkey,首先就需要获取界面(Activity)的所有控件(View)。

选择框架修改Monkey脚本

一开始采用robotium框架,但微信本身是一个多进程的App,比如打开相册,或者webview的时候,都是在一个tools进程中的,而robotium只针对单个进程,需要去改框架源码才可以支持多进程的微信App,实现起来比较繁琐。因此后面微信团队开始使用官方框架UIAutomator。

利用框架获取控件(View)

google并没有给出公开接口获取所有控件,如果使用selector来获取,速度很慢,因为google为了保证ui自动化的执行,很多地方加了等待,而monkey测试需要快速的点击。通过参考UIAutomator的源码实现,微信团队决定利用java的反射原理拿到AccessibilityNodeInfo,中间去掉无谓的等待或者减少等待事件增加重试次数。AccessibilityNodeInfo 跟view(控件)有一对一的关系,在uiautomator里面就跟一个UiObject对应。目前外面很多的抢红包插件也是利用AccessibilityService拿到AccessibilityNodeInfo来做识别和点击。

定制化Monkey的诞生

通过反射的方案,获取当前activity的速度可以保证在十几毫秒以内完成。获取所有控件之后,就可以针对控件做随机探索了!

为了更好的遍历尽可能多的activity,微信团队采用改造之后深度遍历算法。我们称之为“定制化Monkey”。定制化monkey的运行逻辑比较简单,其中,还有一些特殊处理,比如返回的时候要检查是否有弹框,打开webview的时候检查是否有弹框(地理位置),跑的时候是否有退出登录等。目前来看改造的效果比原生的效果有一定的提升,下面是单机的测试结果:

从上图可以看出,相对于原生的monkey,行覆盖率大约有80%的提升,activity覆盖率大约有将近200%的提升。而且从曲线上可以看到,这两个monkey在登录之后的1个小时以内,行覆盖率和activity覆盖率都有明显的提升,在1到2个小时以内也会缓慢提升,而两个小时之后提升就非常缓慢了。

微信团队每天都会取最新代码编的apk包进行稳定性测试,收集出现的Crash,并且把新出现的Crash,提交bug给对应开发。

3、机型覆盖——云端化测试

兼容性测试根本还是要覆盖机型,微信团队在做一些自动化方案目的就是为了在多种机器上并行执行。原先,微信团队用来做自动化的机型数量较少。上面提到的覆盖安装测试和定制化monkey测试,可能只跑典型的6到10台机型。

现在兼容性测试迁移到WeTest平台上,测试基于WeTest给微信搭建的私有云平台进行,同时公有云的机型作为补充。

至此,微信团队实现了机型管理云端化,设备覆盖也有了实质性提升。

微信团队每天都会在测试平台上申请上百台手机跑多轮定制化Monkey测试,日均测出十几个Crash,一些新特性上线的高峰期有时可达40/50个。

三、其他关键质量问题——新功能适配

除以上问题之外,新功能上线时,微信团队会非常关注其是否会产生新的适配问题。譬如,字体截断问题,键盘问题等。一年多前,微信发布小视频功能,发现多个厂商定制ROM导致的视频方向错误,黑屏,播放失败等问题,严重影响用户体验。

每个版本都有功能兼容性问题,并且每个版本的测试内容都不一样。目前采用的方式还比较低级,主要依靠人力在主流机型上进行兼容性测试以及众测。

版本间差异大,自动化陷入困境

功能测试一般针对某个特定版本,因此自动化脚本基本只适用特定版本,复用性弱,自动化不能带来好的收益。同时,功能测试路径有时比较特殊,自动化脚本难写,验证麻烦。比如小视频功能测试,自动化脚本判断不出来是否出现黑屏、花屏,必须要人眼判断。

部分特性可以自动化实现:半自动化测试

一些特性可以做自动化或者半自动化测试。比如H5测试,主要是检测在不同手机上打开页面,看看页面是否有UI问题。半自动化测试方案:通过脚本驱动UI操作和webview操作,同时在关键的页面截图,生成带一系列截图的测试报告。事后肉眼查看截图,比对判断测试是否通过。

功能兼容性问题目前我们还没有一个通用的解决方案,都是根据不同的需求利用目前手头资源做尽可能完善的测试。

功能自动化测试迁入WeTest平台

针对功能适配兼容性测试,微信团队也把H5适配兼容性测试和部分高优先级自动化用例迁移到WeTest平台上。

● 建立微信私有云:在私有云上,微信团队不间断提交自动化脚本进行24小时测试。当私有云缺少某台特定机型时,WeTest公有云上的机型作为补充测试。

● 微信质量系统与私有云对接:WeTest将一些接口开放给微信,微信利用这些接口,搭建了自己的云端质量管理平台,直观、便捷地进行测试管理工作,大大提升了效率。

四、效果

微信团队通过自动化、云端化测试,在兼容性和功能测试方面效率提升了1倍多,更快速、精准地定位解决问题,累计发现并解决的问题数达数千个,覆盖亿级用户,提供了流畅稳定的体验环境。

后续,我们期待云端化、自动化测试深度覆盖到更多测试环节,使测试过程和测试结果变得更加流畅、可视化。通过技术的力量,持续提升产品的质量!

马上进入“专家兼容测试”界面,找腾讯测试专家团队帮您把关移动应用质量吧!点击链接即可使用专家兼容测试服务http://wetest.qq.com/product/expert-compatibility-testing

恰逢WeTest钜惠焕新季,还有手游专家兼容豪华大礼包哦!特大优惠不容错过: http://wetest.qq.com/activities/20170419

可以联系wetest小助手抢先了解优惠详情,咨询预约(QQ:800024531)

亲爱的读者,为了能够提供更好的网站内容,希望您填写我们的问卷,我们会随机抽取读者回馈20Q币以示感谢!问卷入口:https://wj.qq.com/s/1221194/26ad

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
天下大事必作于细,聊聊腾讯兼容测试的升级“打怪”历程
本文主要讲述了腾讯游戏兼容性测试团队如何通过人工测试和自动化测试相结合的方式,提高测试效率和质量,从而提升游戏的用户体验。具体来说,本文介绍了团队的发展历程、工作成果、面临的挑战以及未来的发展方向。此外,本文还分享了团队在提升测试效率和质量方面的具体做法,包括采用自动化测试框架、制定测试标准和规范、提高测试人员的技术水平等。通过这些措施,腾讯游戏兼容性测试团队成功地提高了测试效率和质量,为腾讯游戏的用户体验提供了有力的保障。
WeTest质量开放平台团队
2017/04/26
1.1K0
天下大事必作于细,聊聊腾讯兼容测试的升级“打怪”历程
“腾讯WeTest助力《龙珠直播》盘点APP质量问题”
原文链接:https://wetest.qq.com/lab/view/408.html
WeTest质量开放平台团队
2018/09/24
6610
“腾讯WeTest助力《龙珠直播》盘点APP质量问题”
专项测试--性能分析一
method profile、gc统计、io统计、流量统计、硬件使用统计、耗电量分析。
用户6367961
2022/11/21
5740
专项测试--性能分析一
腾讯首款战争策略手游「乱世王者」的兼容测试之路
本文主要讲述了《乱世王者》手游在腾讯WeTest的兼容性测试服务支持下,如何实现高质量游戏体验的过程。文章首先介绍了《乱世王者》手游的背景,然后详细描述了WeTest在兼容性测试方面所提供的服务,包括测试流程、机型覆盖、系统版本支持等方面。通过这些服务,WeTest帮助《乱世王者》手游在上线前发现和修复了171个兼容性问题,从而保障游戏在上线后能够稳定运行,为玩家提供良好的游戏体验。
WeTest质量开放平台团队
2017/10/20
2.7K0
腾讯首款战争策略手游「乱世王者」的兼容测试之路
谈谈龙之谷手游兼容测试的一百个坑
WeTest质量开放平台团队
2017/05/31
1.7K0
谈谈龙之谷手游兼容测试的一百个坑
Android 谈谈自动化测试
最近,手头上的项目基本开发完成,优化也做的差不多了,本以为可以安心准备上线。然而老板却反映说测试人员发现 App 总会出现一些莫名的 bug.
developerHaoz
2018/08/20
1.4K0
【干货分享】研效优化实践:WeTest提效测试
导语 腾讯WeTest平台在项目测试过程中,为企业及开发者提供了很多便利,帮助研发团队快速发现产品潜在问题。接下来,本文将分享一些使用WeTest进行测试提效的小经验,希望能帮到大家。本文作者是腾讯IEG增长协同部测试开发工程师连凌淦,拥有多年系统测试经验,在自动化、全链路压测等专项测试领域都有一定的经验。 01 自动化兼容测试 UI自动化是提高测试效率的一个重要手段,像poco、appium都是常用自动化框架,相关资料都很多,这里就先不展开讲,主要分享一些实操过程可能会遇到的问题。 1.1真通过与假通过
WeTest质量开放平台团队
2022/01/14
8060
手游精品化的第三年,谁在窃取手游开发者的利益?
手游市场从2015年开始渐渐趋于平稳,“精品化”概念已经成为手游重要的发展方向。国内手游行业存在着增速放缓、流量获取成本增高的情况。这种现状意味着,一旦手游质量发生闪失,同质产品会迅速涌入抢占市场。等手游开发者意识到质量问题并把问题解决后,市场已经落入竞品之手。因此,在如此市场格局之下,把控手游品质,似乎成为了手游突出重围,稳定增长的突破口。
WeTest质量开放平台团队
2018/10/29
1K0
WeTest重磅推出云测试专有云解决方案,助力企业打造全球精品应用
服务介绍: WeTest提供从终端设备、平台管理到自动化测试的云测试专有云解决方案,基于数据中心级的机房等基础设施作保障,整体服务稳定性可达到99.9%,满足政府企业应用在特定需求、场景下的测试要求。 专有云具备超出公有云稳定、易用、高拓展性等优势的同时,又兼顾了私有云的安全可靠特性,非常契合政府企业应用在特定性能、场景、安全合规的要求。 在多云融合、产业互联网高速发展的今天,腾讯WeTest也顺势推出一整套从机房设备,平台管理到自动化测试的云测试专有云解决方案,可以帮助政企单位快速构建起设备独占、服
WeTest质量开放平台团队
2021/09/28
1.1K0
提升测试效率,自动化智能探索课程上线腾讯课堂啦!
导读   移动终端种类繁多,品牌众多,操作系统也分iOS和Android两大类。仅以Android举例,排除各大厂商优化定制的版本就高达十几种。   为了能够使测试软件在特定的硬件平台上,适配不同的操作系统以及应用软件,兼容性测试就必须有效执行。   以一台主流安卓手机3000元的价格来计算,部署TOP300手机的成本高达数百万元,配置一个4-5人测试团队的经费也超过100万元。个人开发者以及中小企业往往无法拿出更多预算,使开发者们无法对市面主流终端机型找对适配设备测试,造成软件兼容性差、显示不全
WeTest质量开放平台团队
2020/03/23
5080
走进社区客户端测试 | 得物技术
1.2 客户端技术栈移动端应用可以分为三大类:Web 应用(Web App)、原生应用(NativeApp)、混合应用(Hybrid App)。
得物技术
2023/04/25
1.1K0
走进社区客户端测试 | 得物技术
谈谈龙之谷手游兼容测试的一百个坑
龙之谷 ,一款优秀的端游移植到手游平台,凭借的丰富的游戏内容和优秀的游戏品质,公测首日便在畅销榜登顶,取得了巨大的成功。
WeTest质量开放平台团队
2018/10/29
1.4K0
【福利】腾讯WeTest专有云解决方案,限时开放招募体验官
近年来,伴随着企业数字化、智能化的发展需求不断增长,为了应对高并发和流量峰谷、保证产品的快速迭代上线、快速响应用户需求等现象,企业对云计算的依赖程度越来越高。 专有云在稳定性、易用性、高拓展性等方面具备公有云级别的成熟度,方便企业快速上云。又兼顾了私有云的安全可控性,能够有效降低企业在安全、管理方面的成本投入,更好的满足政企对特定性能、应用及安全合规的要求。 腾讯WeTest重磅推出专有云解决方案 在多云融合高速发展的今天,腾讯WeTest重磅推出了一整套从机房设备,平台管理到自动化测试的云测试专有云
WeTest质量开放平台团队
2021/12/06
2K0
WeTest-玩转手游自动化测试
目前针对普通APP应用的自动化测试已经有很多,并且Android4.1版本后也已经支持UIAutomator,可以做自动化测试。还有比较成熟的开源自动化框架Robotium,都可以做自动化测试。通过“自动化脚本+云测试”的方法可以最大化测试收益。但是这些工具用在手游上就完全失效了。因为手游的界面都是通过OpenGL ES画出来的,对于这些工具来说,它就相当于一个图片,完全没有控件的概念。
WeTest质量开放平台团队
2018/10/29
2.3K0
【有奖反馈】在小程序云测服务使用过程中,大家有什么想要吐槽的吗?
MiniTest小程序云测试是腾讯WeTest与微信官方联合推出的小程序自动化测试服务。基于WeTest云真机能力,支持开发者简单快捷地实现小程序智能化Monkey测试,录制回放,自定义测试和性能分析等能力。 目前,MiniTest小程序云测正在快速迭代中,近期也上线了新版测试报告、第三方接口功能。同时,我们也在持续优化服务体验,如: 1. 增加报告分享功能,增加历史报告对比功能。 2. 提升录制回放和自定义测试稳定性。 3. 支持用例排序。 4. 优化报告结束时,用户通知方式(如增加邮件、短信通知等)
WeTest质量开放平台团队
2022/04/14
8110
【有奖反馈】在小程序云测服务使用过程中,大家有什么想要吐槽的吗?
专访腾讯方亮:WeTest品牌全面升级,“好的产品一定深谙人性”
原文链接:https://wetest.qq.com/lab/view/481.html
WeTest质量开放平台团队
2019/12/10
5210
专访腾讯方亮:WeTest品牌全面升级,“好的产品一定深谙人性”
浅谈自动化测试的价值和常见误区
如下图是大部分质量工程师都知道的分层测试体系,其中UI自动化所占的比例虽然看起来很小,但是其能发挥的价值还是很大的。
岛哥的质量效能笔记
2021/09/14
6150
浅谈自动化测试的价值和常见误区
MiniTest微信小程序云测试平台内测用户招募第一期
  Hello,各位开发者们,告诉大家一个好消息:   为了帮助小程序开发者更好的攻克兼容场景的诸多难题,腾讯WeTest与微信官方联合推出了MiniTest微信小程序云测试平台。平台现开放第一批内测机会,快来抢先体验吧,还有机会获得内测福利。   平台支持的功能: 零成本接入Monkey测试 平台提供小程序自动化Monkey测试功能,覆盖体验版和线上版小程序。在跑测同时,平台还会自动检测黑白屏,JsError等异常情况,并提供报告展示。 完善的性能分析 平台会自动获取测试过程中的性能数据,并和现网
WeTest质量开放平台团队
2021/07/22
7850
MiniTest微信小程序云测试平台内测用户招募第四期
  Hello,各位开发者们,告诉大家一个好消息:   为了帮助小程序开发者更好的攻克兼容场景的诸多难题,腾讯WeTest与微信官方联合推出了MiniTest微信小程序云测试平台。平台现开放第四批内测机会,快来抢先体验吧,还有机会获得内测福利。   平台支持的功能: 零成本接入Monkey测试 平台提供小程序自动化Monkey测试功能,覆盖体验版和线上版小程序。在跑测同时,平台还会自动检测黑白屏,JsError等异常情况,并提供报告展示。 完善的性能分析 平台会自动获取测试过程中的性能数据,并和现网
WeTest质量开放平台团队
2021/09/18
8740
WeTest六周年|质领未来,向新而行
理念铸就品牌,品质引领未来 随着互联网+技术的加速升级,日益变化的市场环境和用户需求不断催促着开发者提升产品研发速度。同时,用户对应用品质的要求不断提高,使企业及开发者对产品质量管理的需求不断增大,测试行业在复杂多变的业务和需求上亦面临更多挑战。 六年以来,腾讯WeTest以探索行业无限可能为己任,对产品质量领域深耕探索,坚持通过强大的平台功能与产品服务推动高质量产品的诞生。经过多年的积累沉淀,WeTest已经为游戏、电商、金融等近百行业提供了服务支持,帮助近百万款应用提升产品品质。 过去的六年里
WeTest质量开放平台团队
2021/11/10
2K0
推荐阅读
相关推荐
天下大事必作于细,聊聊腾讯兼容测试的升级“打怪”历程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档