微信号:Top100Case

介绍:TOP 100软件案例研究峰会是科技界一年一度案例研究盛会,每年甄选有代表的100个技术创新/研发管理案例,旨在揭幕100件案例背后的思考、长尾价值,为听众提炼最佳学习路径,帮助他人的项目或团队获得启示、成长,...

【案例精选】腾讯的专项测试之道

2018-07-25 17:27 李昶博


本文内容节选自第六届全球软件案例研究峰会,时任腾讯专项测试组组长李昶博老师分享的《腾讯专项测试之道实录,重点分享:全研发流程的介入,系统化的专项指标,分析定位工具和解决思路。(PPT+文稿)。

昶博老师是腾讯专项技术测试组长,专注9年性能测试,人称“性能哥”,腾讯公司级优秀讲师。经历PC QQ、手机QQ、Q+桌面、QQ空间、QQ音乐等客户端项目,多个项目获得了百倍的性能提升。QQ性能优化项目团队曾获腾讯公司级重大技术突破奖。在性能领域,共取得6件国家专利。

编者按:2017年11月9-12日,第六届全球软件案例研究峰会在北京国家会议中心盛大开幕,现场解读2017年「壹佰案例榜单」。时任腾讯专项测试组组长李昶博老师分享《腾讯专项测试之道》的案例分享。


容简介本文将从「指标+流程」和「平台工具+技术」两个角度,解析腾讯测试团队如何在需求、开发、编译、测试&合流、用户五个方面践行测试实践,从性能UI评审到技术评审、从安装包大小到Crash,包括用户最关注的卡顿、流量等问题,解析如何解决这些具体问题,并使用户投诉量下降70%以上,达到12倍优化效果。

1


腾讯专项测试方法论


1.分层测试理念——专项质量体系



在研发的各个阶段:需求、开发、编译、测试&合流、用户,每个环节都是可以介入操作的。


2.专项测试人员能力模型

在腾讯内部,按照能力的不同划分为T1到T3。下图中的斜线是能力分割线。



3.速度体验评测模型

有了操作标准之后,外包的执行就会变得轻松。只需要比对标准来找BUG即可。



4.技术评审模型

在C/S,代码结构,B/S,磁盘IO,界面效果,关键路径等多个分类的细项中,从技术需求,产品需求两个方面,来分析它的性能测试点。

2


团队自研平台工具


1.研发支撑平台:CI/合流/分布

在这个平台上,可以看到每个部门产生的BUG,有哪些需要解决的问题,需要达到什么样的水准等相关性能的问题。


只有通过全部测试工具之后,开发才能拿到合流的代码权限。


2.安装包质量监控:体积,方法数

对于腾讯的产品而言,产品安装包不能太大。对于安装包有多少体积和方法数在各个部门都是有配额管理的,若超过配额,必须进行优化,去除不必要功能来置换安装包体积。



3.Code Dog:静态代码扫描

在此平台内部实现了2000多条扫描规则,其中有201条是自研发的,支持各种语言。在这个系统内部,可以看到BUG的趋势、布局、结构、特点等。


4.Perflib&QTA:性能自动化测试


5.New  Monkey:稳定性测试



6.Magnifier:卡顿监控

在测试环境后台对目标程序进行监控,运行卡顿超过一秒的程序便会立即报警,并且可以通过日志定位到卡顿出现在哪一行。




3

专项团队检测指标


专项质量体系


下图是李昶博老师曾在腾讯内部使用过的性能测试工具。




它分为三大类,Windows,安卓和ios,在内又分为三个维度:采集,分析和外网。在每个维度内又有关于此项的具体性能分析。


具有分析能力的性能自动化


在此之前,一个问题的提出会经过层层“推脱”,导致时间和精力的双重浪费。



为解决这个问题,团队为每一个指标打造了全面的分析工具。大致流程分为5步,编码、度量、分析、解决、验证。


开发负责编码、解决、分析;测试负责度量、验证。



当打造了全套的具有分析能力的性能自动化测试工具后,任何一个指标出现超标的情况都可以定位到是哪行代码所致。


下面是我们的几个测试分析指标。


1.CPU测试

由于安卓内核会存在BUG,在使用CPU占用率做测试,会出现CPU占用为负值的情况。

在改用CPU时间做测试后,可以大大规避这些问题。



2.IO测试

在没有IO分析工具的时候,存在一个BUG会使得程序启动慢至12秒,但由于启动耦合了几百个模块难以找到是哪行代码的问题。


但在IO测试内,两个小时即可找到问题所在。



3.内存测试



4.GC测试

看过Android源码可知,GC时将调用dvmSuspendAllThreads(),哪个函数被休眠,它的耗时就变长。所以,CPU分析工具行不通,李昶博老师团队自研了AllocTrace工具,帮助开发找到内存复用的优化点,减少GC。


5.流畅度测试

提到流畅度,第一直觉是FPS指标。现在团队使用自研的掉帧率指标。

因为掉帧率更加的敏感例如,FPS保持相同时,将每帧均匀拉长,用户体验是截然不同的。


此外,要避免平均化。求平均值测量很有可能会造成卡顿遗漏。所以腾讯选择的方法是每天运行一次,若掉帧率上升可以去后台查看原因。



6.流量测试




4

发布后的全网监控


1.用户投诉跟进

在产品发布后,腾讯会做全网的监控。任何一个用户出现的问题都可以被得知。


2.Crash全网上报

在腾讯内部有系统可以观测到每天的Crash率,超过一定值就需要马上解决。


通过观察Crash率可以得到几个有趣的小经验:对于客户端APP,Crash率在1%以上必然存在许多低级问题;1%-0.5%要在系统底层找原因;低于0.5%就要在操作系统上找原因。


3.卡顿全网上报

在全网运营时不适合用均值,要用概率。


因为存在一些用户体验不好的人,由于人数比较少,如果用均值很容易忽略了他们的存在。


Q&A


Q: hook只能定位到系统io函数么?

A:我们内部实现的hook技术可以hook到操作系统的底层,java、系统api等等,我们都可以hook到底层。


Q:腾讯这样的大公司面对上亿的用户,突然某一个时间段访问量、点击量爆增是如何应对的,如果系统崩溃,危机的应对方式是?

A:我们做的是客户端的APP测试,这个问题跟后台压力相关。首先要有大规模可动态分配的集群,比如说腾讯云,先要有这个能力,可以进行随时扩展,这是第一个基本策略。

第二是架构设计遵从冷热分离的原则。举个秒杀抢购的例子吧,秒杀页的流量极大,那么它承载的最基本的用户需求是什么?告知用户当下能否购买。所以查询购买权属于热查询,要与其他功能接口设计分离,确保热查询有最高的性能。



以上内容来自李昶博老师的分享。


扩展阅读:

榜单精选|网易金融质量保障体系实践之路

你还在过度测试吗?一个模型和两张checklist教你用测试策略做刚刚好的测试!

APP性能测试的6项关键指标及测试获取手段





2018最新案例征集中


TOP100summit是科技界一年一度的案例研究峰会,每年甄选有学习价值的100个技术创新/研发管理实践,分享他们在本年度最值得的总结、盘点的实践启示;TOP100summit于2018年12月1-3日在北京国家会议中心举办,与其在别处仰望,不如来这里并肩。



入选标准

1. 您带领的产品或项目案例(再或从事的工程实践)具有借鉴价值,能够帮助他人的项目或团队获得启示、成长的长尾效应;

2. 您是一位热爱创新、敏于思考、善于总结经验的“教练”;

3. 谢绝广告、市场化公关演讲,壹佰案例遵循100%案例研究学习为宗旨;


您将获得

1. 候选案例入选《案例研究智库》平台,其中优秀案例文稿入选《全球软件案例研究年鉴》图书,部分杰出文章还有机会获得业界权威杂志刊登、媒体报道、副刊专辑;

2. 入选壹佰案例的分享者或所在团队荣获《TOP 100 Case Studies Of The Year》奖章,并受邀以“理事单位”的身份出席峰会解读案例;

3. 分享者获得VIP通行证,参加全程会议,以及三天闭门交流午宴和晚宴;

4. 分享者所在团队购买大会门票享有“理事单位”六折门票价格;


入选范围

1. 来自科技领域一线研发管理实践及技术创新案例;

2. 截止日期2018年9月30日;



如果你或你所在的研发团队有优秀的技术研发创新案例,欢迎自荐加入;如果你身边的朋友也有好的案例,不妨点击“阅读原文”一起提交给我们吧!

 
壹佰案例 更多文章 DevOps平台的“精益创业”之路 混合模式为什么成为占有率最高的app开发技术 蚂蚁金服缘何自研Service Mesh? 蚂蚁金服研发的金融级分布式中间件SOFA背后的故事 小米陈维扬:火爆技术圈的“小爱同学”是怎样诞生的?
猜您喜欢 HTML 自定义元素教程 P值之死 阿里首度公开大数据系统架构《大数据之路:阿里巴巴大数据实践》来了 奇舞周刊第125期——HTTP Client Hints 介绍 Bada 多机房同步1 - 方案调研