腾讯WeTest

腾讯WeTest 查看完整档案

上海编辑  |  填写毕业院校腾讯  |  WeTest 编辑 wetest.qq.com/lab/ 编辑
编辑

WeTest是腾讯游戏官方出品的一站式测试服务平台,
致力于产品质量提升,历经千款游戏磨砺,积累十余年品质管理经验。,平台集成云测、企鹅风讯、性能、安全等优秀测试工具,覆盖游戏在研发、运营各阶段的测试需求。

个人动态

腾讯WeTest 发布了文章 · 10月28日

守护S级产品锻造之路,WeTest领航跃迁,与时代同行

十年的内部打磨,五年的孵化迭代,WeTest(wetest.qq.com)秉持腾讯“以互联网为媒介,连接人与设备,让我们的生活更加丰满”的理念,持续驱动自我,逐渐发展成为了一个从软件构建、集成、测试、发布到部署,连接不同关键角色和领域系统的,满足现状行业快速交付的一个新型研发管理生态。

WeTest从面世之初就以开放、分享、共赢为愿景,将自身多年来的技术成果与宝贵的经验积累转化成一个个高效的工具,助力开发者打造S级产品,构建尊重共享、追求品质、开放共赢的游戏生态圈。如今的WeTest历经千款产品磨砺,为百余行业提供解决方案,覆盖产品在研发、运营各阶段的测试需求,不仅是S级产品质量管理的王牌守护者,更是测试行业的领航者。

图片1

在五周年之际,WeTest推出了多款贴近用户诉求的服务型明星产品,为产品全生命周期保驾护航。如深受移动开发者喜爱,WeTest客户端性能测试工具-PerfDog全新推出了供开发者进行二次开发的PerfDogService服务组件,助力开发者搭建自己的性能保障工具。弱网测试工具QNET的上线则极大的为用户降低了弱网环境搭建成本,顺手又顺心的便捷体验甚至让不少开发者们都开始自发安利。秉承着以人为本的产品研发思路,游戏AI自动化测试框架Game AI SDK的开源版本也正式对外发布,跑酷类,吃鸡类,射击类,MOBA类游戏均可基于AI SDK完成游戏自动化测试。

PerfDog性能狗:为质效提升之道提供全新解题思路

5G、大数据、人工智能等诸多前沿性技术带来了变革与便利的同时,也为软件开发从业者带来了更多的挑战,手机机型和移动应用随科技发展急速增加,为性能测试带来了新的难题。而WeTest推出的PerfDog性能狗则为新时期的移动应用性能测试提供了新的解题思路。

图片2

PerfDog支持全平台的应用形态测试,包括Android、iOS、小游戏、小程序、H5等。且Android设备无需ROOT,iOS设备也无需越狱。完整且准确的测试数据、专业可靠的测试报告产出、极简化即插即用与云化管理的设计,在大幅提高测试工作效率、有效降低团队沟通成本的同时,使得PerfDog性能狗成为深受软件开发者们青睐的移动全平台性能测试分析专业工具。

现在,还可以通过PerfDog全新推出的 PerfDogService服务组件进行二次开发,定制自动化性能测试。基于该组件,您可以一键搭建属于您自己的PerfDog性能工具或自动化服务,完美结合需求特点,快速获取性能数据。

图片3

QNET弱网测试:与居高不下的构建成本和使用成本说再见

在测试移动设备上进行弱网络专项测试,一直面临着弱网环境构建成本高(需要额外的PC或者服务器)、使用成本高(安装部署工具麻烦)、弱网络环境功能不完善等一系列棘手的问题。

而WeTest推出的弱网测试工具QNET,仅需一分钟即可搭建出功能完善的弱网络测试环境,为APP弱网测试带来革新式的便捷体验。无需ROOT手机,无需连接数据线,多种弱网参数支持且参数配置灵活,以独立app的方式,为用户提供给可靠的弱网络模拟服务。还能提供TCP/UDP网络协议抓包功能,帮助开发和测试人员进行网络流量分析。

图片4

2.0版本的QNET新增国内各省市、运营商真实网络数据,覆盖地铁、电梯等20+弱网络场景并增加了全局弱网配置和弱网IP配置,在增加burst波形和抖动概率配置等基础上优化了弱网络模型,同时还支持了adb接口访问来实现弱网络自动化测试,工具交互全新升级,体验更加友好。

GameAI SDK:把游戏场景的自动化测试,变得像玩游戏一样简单

电子游戏产业的高度繁荣,为玩家们带来了越来越多高度个性化的游戏产品,品类极多,玩法迥异,游戏画面中的元素包括敌人、道具、怪物甚至卡牌,不同游戏画面中需要识别的游戏元素存在着极大的差异,这也造成了传统的基于API接口进行自动化的方案在游戏领域并不通用。

始于游戏,精于游戏的WeTest用游戏AI自动化测试框架AI SDK巧妙避开了统一自动化接口的难题,整个方案不依赖游戏开发商提供任何API接口,以游戏图像作为输入,以触屏操作为输出,整个过程像玩家玩游戏一样简单便捷。

图片5

方案通用性强,可适用于绝大多数游戏场景的自动化测试。且游戏场景自动化插件完成后,随着游戏版本的迭代更新,只要游戏的玩法不改变,已经实现的自动化过程几乎不需要做修改,维护成本极低。

这三款工具作为WeTest极具代表性的明星产品,延续了WeTest一贯以来的高效便捷,易用性极高,帮助用户灵活应对复杂多变的质量管理问题。

WeTest作为一站式质量测试服务平台,产品已经涵盖兼容测试、云真机、性能测试、安全测试、舆情分析等多个领域,助开发者们攻克“人员、设备、流程、工具、环境”五大难题。WeTest与用户一路互相选择,互相成就。为了感谢广大开发者们一直以来的陪伴与支持,WeTest在五周年庆期间推出了一系列诚意满满的福利回馈。

WeTest五周年多重礼遇:

图片6

下一个五年,继续突破品质上限,探索行业无限可能

有着腾讯游戏十余年质量测试服务积淀的WeTest将自身经验产品化,紧跟时代步伐,贴近用户诉求,不断推陈出新,上线了多样化的技术服务,持续提高品质生态联盟的创新。不仅推出各式工具为开发者和用户谋福祉,WeTest更致力于行业标准的搭建成型。在助力产品创意获得快速验证及成长、帮助企业快速交付高质量产品与服务的同时,WeTest与时代同行,以打造品质生态,创造新的行业高度为己任。

而在下一个五年,WeTest将持续推动产品迭代更新,践行“连接”理念,持续聚焦开发与运维的紧密合作,继续致力于DevOps测试中台打造。对外,WeTest将放眼全球,持续推进国际化进程,目前,腾讯WeTest国际版(wetest.net)已完成手游解决方案的发布,同时覆盖应用产品、微信小程序、微信小游戏等多元业务形态。接下来,腾讯WeTest将在PC游戏和主机游戏两个终端平台落地对应的一站式服务方案。

WeTest(wetest.qq.com)作为品质领域的领航者,将继续通过科技、创新赋能行业,提升互联网品质标准、建立有影响力的互联网品质生态的共同体。

查看原文

赞 0 收藏 0 评论 0

腾讯WeTest 发布了文章 · 10月28日

WeTest:五年沉淀,打造游戏品质的坚实后盾

WeTest:五年沉淀,打造游戏品质的坚实后盾

WeTest五周年庆火热进行中,超多免费福利赠送,【点击领取】(超链接:https://wetest.qq.com/activit...

一直为产品测试提供有效助力的腾讯WeTest,在10月迎来了它的五周年生日。一直以来,WeTest坚持以强大的平台功能及产业服务推动精品游戏的诞生,五年前呱呱坠地,而今蜕变为翩翩少年,WeTest的一举一动令从业者为之瞩目。

经过多年积累及沉淀,WeTest已经为游戏、金融、电商、视频、教育等近百行业提供了服务支持。其中在保障游戏行业的原创性、安全性、全球化等方面,更是拥有了颇为完善的服务构架。五年春秋寒暑,WeTest究竟为行业带来了哪些改变呢?

五周年回顾:越发深入全面的服务体系

近年来急速发展的手游行业,不断催促着开发者提升制作速度、抢占市场先机。但测试环节的复杂性,让开发者很难有时间精力去推动完善的产品测试,从而影响到游戏后续的品质呈现。

基于此,腾讯于2015年10月正式以"一站式游戏测试平台"的形象将WeTest开放给广大开发者,为研发人员应对复杂平台环境提供助力。

回望诞生以来的五年,WeTest一步步自我强化、挖掘合作,并在挑战中继续拓展着产品的服务边界。WeTest为研发者与行业所提供的助力,是不容忽视的。

WeTest已创新研发了超25款工具,取得了68项有效专利技术。先后服务了60万开发者,帮助千款游戏解决品质问题。

同时,WeTest还收获了不少重量级认证,让WeTest所代表的品质标准体系更具说服力与泛用性,验证了WeTest在全球互联网品质领域的领先水准。

比如在2019年,腾讯WeTest就作为测试技术领域标准化的代表,被选为全国信标委软件工程的工具组长单位。2020年8月,腾讯WeTest又荣获ISO9001质量管理体系、ISO27001信息安全管理体系、ISO 20000信息技术服务管理体系共三项ISO国际权威认证。

除此之外,五年来WeTest在行业侧拉起了数十个合作伙伴,为行业提供了PerfDog、AI SDK、QNET等测试工具。

在用户侧,WeTest则着力于帮助ToB开发者,与Roit、Supercell、巨人网络、VIVO等厂商开展深度合作,致力改善终端用户的体验。

WeTest:面对挑战,再攀高峰

五年时间里,行业各个方面都在发生变化,深刻影响着产品的研发。游戏内容方面,玩家对玩法、剧情等内容原创性的要求正在不断升级;安全方面,外挂、信息泄露等业界顽疾仍在不断变种迭代;国际化方面,不少国内产品都要应对如何出海的相关困境。

这些全行业的共同挑战,自然也是WeTest测试服务的重点。针对行业在原创性、安全性、全球化三方面的需求,WeTest均拿出了明确的保障方案做为应对。时代在变,WeTest也在越发细化的需求中拓展更为优化的测试环境。

· 原创性:内容监控及舆情反馈

原创性是时下玩家对游戏质量的重要评判标准,倘若玩法内容与其他产品过于雷同,或是产品缺乏独有体验,便容易遭遇口碑滑坡。

对于这一问题,研发团队可以借助WeTest平台中企鹅风讯所提供的原创内容监控服务做为应对,在测试中对产品进行"原创性监控",由此确保产品内容的原创性,"有的放矢"地开展调整。

同时,企鹅风讯强大的舆情监控能力还能及时反馈用户口碑,为产品在内容调整及优化上给出有力参考,进一步确保产品在内容构建上能尽快步入正轨。

· 安全性:安全测试反外挂

当下,安全性是各家厂商十分头疼的难题。据统计,手游行业每年因外挂蒙受约45亿的损失。同时,客户端和服务器漏洞、各种恶意刷量行为,在运营成本、市场推广、用户体验等方面对厂商造成了恶劣影响。

为此,WeTest推出了包含手游渗透测试SR、手游安全扫描、应用加固等安全测试服务的解决方案。这套防范与打击双管齐下的安全服务方案,将覆盖手游客户端与服务端的全生命周期,保障手游安全,助力产品收获成功。

· 国际化:国际版本护航全球发行

如何应对国际化环境,是不少出海产品在测试期间要面临的一大挑战。WeTest配备了多样工具,让产品在复杂的国际发行环境中,能得到精确的监控和反馈来协助调整。比如APM工具,就能实时上报手游客户端的性能数据并精准定位问题机型,还有海外异常上报功能,提供专业的异常数据上报和运营统计,帮助开发者快速发现并解决问题,掌控产品全面的运营状况。

针对海外公司,腾讯WeTest国际版(WeTest.net)也已正式面世,国际版本能够提供10大专项、18子项的国际化运营质量保障能力,形成了颇为完整的全链路解决方案。目前,WeTest国际版已在为Riot、Supercell、PubgM、CodM等知名公司和游戏提供服务。未来,国际版还会开放更多的服务化通用方案,借助产品化自助工具、模块化集成组件等深耕国际市场,打造一套国际化的质量保证网络,为客户的全球发行保驾护航。

总体来说,WeTest敏锐地观察着研发流程和行业环境,对行业需求迅速做出反应,这份敏锐在兼容性测试、安全测试、舆情分析等每一项服务上都得到了充分体现。WeTest在一次次挑战中推出新产品、新服务,同时,也在推动着研发行业整体测试环境的进化。

下一个五年:为行业提供更多助力

自诞生以来,WeTest以服务更多游戏开发者为目标,面向拥有测试需求的研发人员,分享经过腾讯内部检验的研发经验、测试工具和行业资源。而在未来,WeTest还将以领航者的身份,在这条道路上走得更远,根据行业动态为平台引入更多元化的功能。

随着互联网软件开发和测试能力逐渐融合,未来的软件测试将不再只是测试工程师的工作,更会融入到所有软件研发人员的职责中。在这样的趋势下,研发人员自然需要更好的测试生态来保障工作效率及质量。对WeTest来说,与多方合作共建良好的软件测试生态,也正是平台未来的一大愿景。

就在近期,WeTest宣布联合阿里巴巴、华为、软通动力、北京大学、南京大学和同济大学共七家单位,共同成立"软件测试能力认证联盟"(The Certification Board of Software Testing Competency,CBSTC),这是国家5G和新基建战略指导下,国内成立的首个专注于软件测试能力认证的联盟机构。

成立软件测试能力认证联盟(CBSTC),主要是为了汇聚产学研力量,促进企业、大学、研究院所等相关主体之间的交流和深度协作,共建良好的软件测试生态,不断促进软件质量的提升,致力于构建一个安全可信、良好体验的"软件定义的世界"。

不难看出,诞生于智能机兴起这样"混沌"时代的WeTest,还将继续为优化软件研发环境,贡献更多的力量。

而为了让有需要的游戏创业者享受到WeTest的测试服务,时值五周年,平台推出了周年福利促销包,对云真机、兼容测试、安全测试、性能测试等几项主要产品开展了大幅度的限时免费和特惠福利。

无论是个人用户还是企业用户,都可以借此次周年契机尝试平台的诸多服务。比如云真机服务,不仅包月、包季的费用会更划算,还可以享受到免费的使用时长。

在不断拓展平台服务功能的同时,这些"真金白银"的福利,对产品研发团队来说无疑是更加切实的帮助。相信在未来的发展进程中,WeTest还将从多个角度发力,为游戏精品化提供其独有的助力。

结语:

过去几年,WeTest与全球诸多知名厂商合作,为广大企业持续提供创新技术的应用,助力行业打磨出了不少游戏精品。未来,伴随技术的进步,市场的变化,以及玩家对游戏品质要求的提升,精品化的标准只会越来越高,WeTest所提供的服务也将更为重要。腾讯WeTest后续还将如何自我升级,为产品测试带来哪些助力,为不同行业构筑哪些品质保障,我们拭目以待。

WeTest五周年公众号特别活动也在火热进行中,高达50个中奖名额等你参与!地址:https://mp.weixin.qq.com/s/KV...

性能测试技术交流群:720150565

查看PerfDog详情:https://perfdog.qq.com/?ADTAG...

查看原文

赞 0 收藏 0 评论 0

腾讯WeTest 发布了文章 · 10月20日

从零开始玩转PerfDogService---------初探篇

一.PerfDogService简介

PerfDogService也就是 PerfDog的SDK,拥有了这个东西我们就可以结合自己的实际需要,DIY出一些符合自己的需求的产品。

先来看看PerfDogService可以做什么

1.性能数据web展示,可以结合自己的中台或者技术中心做可视化的数据展示
2.根据自己的需求自定义一些工具
3.构建本地的性能监控系统(IOS,Android双端都可以)
4.结合自己的自动化脚本做自动化性能测试或者开发云测平台

二.申请使用

目前想获取PerfDogService的使用权需要到官网申,
1.申请令牌:令牌申请地址

所谓令牌就是一个资格,具体申请步骤可以移步: PerfDogService令牌申请手册
等申请审通过后就可以返回官方去下载SDK啦

三.PerfDogService的工作流程

1.调用启动PerfDogService的可执行程序
2.登录Token
3.开启device的监控
4.初始化device
5.获取device的APP列表
6.开启测试
7.设置测试过程中的标签或者添加节点
9.停止测试
10.停止PerfDogService

四.文件组成

文件说明:

PerfDogService.exe: Service启动文件,一般不用手工启动,自动化脚本会自动启动此程序。
perfdog.proto: grpc接口和protobuf结构体的定义文件
demo/python: python3的demo,依赖库grpcio和protobuf
demo/java: java的demo,依赖库grpc-netty-shaded, grpc-protobuf, grpc-stub
PerfDogService.jar: 服务所依赖的jar包

五.运行Demo

1.首先打开demo文件,安装需要的第三方module,我这里使用pycharm打开,所以我选择安装在demo的虚拟环境,你也可以不使用虚拟环境,直接通过本地的控制台pip install xxxx 安装相应的module。一般可以选择国内源下载速度会快一些 -i https://pypi.tuna.tsinghua.ed...
例如:

依赖的module有:

grpcio
protobuf

2.安装完依赖后修改demo的信息

令牌可以在这里找到查看令牌信息
3.运行demo
如果报这个错误

那么在盘符前加一个r代表不转译就可以了

1)运行起来后是这样的输出

2)输入要测试的app序号后回车,例如我选择了:125;
回车后就会开始源源不断产生数据,demo只会获取20s的性能数据

3)20s的数据获取后自动上传到云空间,并且也会在你的本地生成一份数据(本地保存的文件数据是会被覆盖的)

4)需要注意的是,云空间是有限的

5)demo默认采集数据包括:

1.FPS,Frame Time
2.CPU usage ,CPU Usage(Normalized),CpuTemperature
3.MemoryUsage
4.Gpu
5.NetworkUsage
12345

实际上就是PerfDog默认搜集的那些数据指标

6)如果想要新增采集的数据指标,比如CPU Core Usage,可以在开启采集数据时新增一个选项,
例如:

这样就可采集到CPU Core Usage的使用情况了,数据也会写入Json和Xls中。

性能测试技术交流群:720150565

查看PerfDog详情:https://perfdog.qq.com/?ADTAG...

查看原文

赞 0 收藏 0 评论 0

腾讯WeTest 发布了文章 · 9月29日

WeTest五周年 |“领航者”的破浪之路:诞生

WeTest五周年 | “领航者”的破浪之路:诞生

“腾讯游戏质量测试平台的开放,将会是游戏创业者的春天”

—— WeTest平台总负责人方亮

一、于混沌诞生

2008年,苹果公司推出iPhone 3G,开启了智能手机发展新时代;2010年,划时代产品iPhone4的推出,又以其惊人的风靡程度极大地推动了全球各地智能手机厂商的效仿和崛起;2013年至2015年,中国智能手机换代高峰期来临,三年累计销售额突破2万亿元。

智能手机的普及,尤其是大屏幕平板手机(Phablet)的流行,与其丰富强大的扩展功能是分不开的。应用软件(Application)能极大的完善原始系统的不足与个性化,现在已经成为手机使用体验的主要来源。苹果公司2008年推出AppStore,仅用了三年时间,其中不到500个的应用就几何增长至500000+,随着智能手机用户数的飞升,无数的公司、开发团队、工程师开始参与到这股热潮中,APP开发的市场“战争”开始打响。

其中,手机游戏市场由于资本的涌入,规模急剧扩大;2010-2013年间,各类成功的手游产品将智能手机用户巨大的消费潜力展示在企业面前,诸多大厂进军手游界;2014年,腾讯推出的“全民”“天天”两个系列的作品成为手游界的“标杆”,整体市场的手游作品产量也成倍上涨,游戏公司上市数量更是翻倍增多,手游开始呈现红海趋势。

随着游戏终端日渐丰富,玩家们越来越注重各种环境中的游戏品质体验,但红海市场的残酷却在不断追逐着开发者们加快开发进度。尤其是作为移动开发端重要的平台之一的安卓平台,碎片化现象愈演愈烈:设备繁多,品牌众多,版本各异,分辨率不统一等等,导致安卓应用的隐形开发成本的增多。在这样的背景下,WeTest于腾讯内部诞生,集合了腾讯多位优秀工程师,并与全民突击、天天酷跑、全民超神等精品手游达成了深入合作,在十余年间不断地为游戏提供优秀测试方案和测试工具,逐渐成为推动腾讯游戏研发效率不断提升、对游戏开发的全生命周期进行质量保障的重要平台。

2015年10月,伴随着平台的壮大,WeTest以腾讯游戏官方推出的一站式游戏测试平台的形象正式开放给广大开发者。

二、向品质前行

2015年腾讯全球合作伙伴大会上,WeTest作为合作伙伴,在大会上推出了自己的“WeTest+”战略:

l “WeTest+游戏”:腾讯精品游戏沉淀,十年唯一质量合作伙伴

云测,云真机,覆盖主流机型,畅快极致的远程体验

l “WeTest+用户”:实时监控用户口碑,启迪有价值的游戏洞见

舆情监控,倾听玩家的声音

l “WeTest+创业人”:确保游戏上线品质,助力创业人成就精品游戏

有效控制游戏研发和测试成本,打磨游戏上线品质

在“WeTest+”战略的布局中,WeTest为众多游戏开发者和创业人量身打造了一个开放、专业的游戏质量平台,助力了诸多创业人成就精品作品,并与多方合作进行品质领域的深耕。

Android生态异常分裂的问题一直是所有移动开发者的梦魇,而搭设覆盖尽可能多的Android设备云及共享资产管理维护体系,对企业带来较大的购机和维护成本。为了解决这个痛点问题,云真机作为WeTest平台火热至今的明星产品之一,在WeTest平台开放之初便已经上线给广大开发者使用。

云真机与传统的测试机相比,不仅拥有更流畅的操作体验、更方便的测试选择,同时还能为开发者节约一大笔测试机采买费用。而WeTest提供上千款云端真实手机,型号齐全,云端真机池7x24小时在线,企业可以随时随地使用所需设备,再也无须为购测试机占用资金与时间。通过五年的迭代升级,目前的云真机已经全面贴合开发者的不同的使用场景和诉求,带来更高效的测试体验。

除了解决Android生态分裂给开发者带来的测试问题,WeTest还希望解决游戏整体团队最关心的舆情问题。互联网的世界瞬息万变,掌握舆情已经成为了产品和运营人员最重要的技能之一,而面对繁多的渠道和用户发声,如何第一时间获取全网的舆情内容,掌握危机变化却充满了困难。

2015年,企鹅风讯便已经正式入驻WeTest质量开放平台。企鹅风讯为用户打造了一站式渠道反馈监测、用户喜好分析、突发舆情跟进服务平台,针对口碑运营、社区运营、内容运营、游戏质量监测等用户场景,提供三大解决方案。并且拥有独立完整的分析能力、数据采集能力行业领先、数据源覆盖26个国家和地区,全方位覆盖国内主流应用商店/论坛/社交媒体等强大的能力。企鹅风讯上线以来,已经服务数千个项目,为《穿越火线》、《王者荣耀》等热门产品提供了舆情服务,用强大的数据支持项目组洞察玩家所思所想,帮助玩家加入到游戏产品质量的建设中来,创造更优质的游戏产品。

三:感恩陪伴,福利活动开放

腾讯WeTest自开放以来,得到了许多开发团队和开发者们的支持。五年时光过去,回望我们2015年刚上线时,正是移动应用软件的爆发增长期,非常感谢开发者们选择信任我们的平台能力,将保障产品质量的重要工作交给WeTest,让我们能助力提高用户的研发效率和产品品质,为更多精品产品的诞生贡献一份力量。

为了回馈过去这五年用户们对WeTest的支持与信任,在WeTest五周年当周(10.26-11.2),我们为平台新老用户准备了全方位的丰富福利。在10.26日之前,我们会不定时地在WeTest公众号内曝光五周年庆福利内容,并且每期推送都将会有公众号特别活动推出,参与活动可以赢取千元礼品和万元Q币奖励。

v 五周年庆福利曝光

福利一:

所有注册用户均可在活动页面(10.26开放)领取标准兼容测试50台、云真机30分钟、小程序安全扫描1次共价值1000元+的福利额度

更多福利待解锁,请关注公众号后续推送

性能测试技术交流群:720150565

查看PerfDog详情:https://perfdog.qq.com/?ADTAG...

查看原文

赞 0 收藏 0 评论 0

腾讯WeTest 发布了文章 · 9月22日

【内测来袭】PerfDogService 一键搭建您的性能测试平台

PerfDog是一款移动平台的性能测试工具,快速定位分析性能问题,提升APP应用及游戏性能和品质。手机无需ROOT/越狱,手机硬件、游戏及应用APP也无需做任何修改,极简化即插即用,是全网唯一支持iOS/Android/小程序/H5等移动全平台性能测试的工具。

PerfDog自发布以来就广受移动端测试人员的好评,PerfDogService是PerfDog的服务组件,用户可基于service组件二次开发自己的PerfDog性能工具或自动化服务。PerfDogService在内部测试阶段已服务上百个项目,包括:王者荣耀,和平精英,QQ音乐,企鹅电竞等。在经历了多轮内部测试后逐步完善满足对外开放测试的要求。全新升级后的PerfDogService功能更全面,接入更便捷。

现在您就可以申请内测,通过PerfDog开放的PerfDogService服务组件进行二次开发,搭建属于您自己的PerfDog性能工具或自动化服务,完美结合需求特点,快速获取性能数据。

PerfDogService功能亮点:

  1. 支持十几种主流语言接入(C#、C++、Java、Python、PHP、Go等)
  2. 支持三大系统平台部署(Windows、Mac、Linux)
  3. 覆盖主流机型,性能数据齐全
  4. 支持多种类型接口,如创建Task、归档Case、分享Case、数据上传自定义服务器等

PerfDogService提供什么服务:

PerfDogService架构介绍:

更多相关的产品文档与详情报名通过后可获取。

内测申请渠道现已开放,快邀请您身边感兴趣的同事朋友一起来报名参与吧!

内测申请地址(仅支持PC端登陆申请):

https://perfdog.qq.com/sdk 


性能测试技术交流群:720150565

查看PerfDog详情:https://perfdog.qq.com/?ADTAG...

查看原文

赞 0 收藏 0 评论 0

腾讯WeTest 发布了文章 · 9月14日

Game AI SDK开源版本发布:基于图像的游戏场景自动化框架

导语

  2020年7月,我们探讨了AI与自动化测试的关系,并向大家介绍了腾讯互动娱乐事业群TuringLab团队出版的《AI自动化测试:技术原理、平台搭建与工程实践》一书。这本书将TuringLab团队基于深度学习的自动化AI测试框架基础的开发与应用经验详细的展示在读者面前,与读者分享了腾讯游戏是如何将AI技术与自动化测试相结合完成测试需求的。在文章推送(超链接:https://mp.weixin.qq.com/s/vK...)后,不少用户留言反馈了对书中提到的AI SDK的浓厚兴趣,并询问如何下载使用。

现在,Game AI SDK开源版本正式对外发布!欢迎各位开发者下载体验(超链接:https://wetest.qq.com/product...)。

  本篇文章将用4k字左右的篇幅,向读者们详细介绍Game AI SDK的相关内容。同时,为了更好的了解用户的使用反馈和意见,TuringLab团队的技术大佬们创建了技术交流QQ群(群号:1095989343),欢迎大家加入。

基于图像的游戏场景自动化框架

一、 概述

在自动化测试领域,针对游戏场景的自动化是一个难点,目前还没有通用的技术方案。这是由于游戏是高度个性化的产品,不同品类游戏玩法差异极大。每款游戏通常都是独立设计开发,游戏开发商也不对外暴露统一的接口,这也意味着传统的基于API接口进行自动化的方案在游戏领域并不通用。此外,期待游戏开发商对外提供统一的自动化接口,也是件不现实的事情。

为了支持游戏场景的自动化,基于图像识别和游戏AI等方面技术,腾讯Turing Lab开发了基于游戏图像的AI自动化框架——Game AI SDK。整个方案不依赖游戏开发商提供任何API接口,以游戏图像作为输入,以触屏操作为输出,类似于我们人类玩游戏的过程。示意图如下所示:

目前Game AI SDK已经在多个品类多款游戏的自动化测试上进行了验证和应用,并取得了良好的效果。一个典型的AI SDK应用示意图如下所示:

l 左侧为游戏终端设备,运行待自动化测试的游戏;

l 右侧为游戏自动化框架AI SDK,根据输入图像决策游戏操作;

l AI Client连接了游戏终端设备和AI SDK,从终端设备上实时获取游戏图像,并将AI SDK决策的游戏操作转换为触屏操作

二、 AI SDK架构介绍

1、 技术架构

AI SDK整体技术框架如下图所示,主要包含IO Service、Manager Center、UI自动化、游戏场景识别、AI自动化等几个模块。

各模块的核心功能如下:

l IO Service

负责AI SDK的输入输出控制,输入为游戏图像,输出为点击、滑动等游戏动操作;同时还负责AI SDK内部服务状态的上报。

l Manager Center

从IO Service接收输入图像,分发给UI自动化模块或AI自动化模块,并转发UI自动化和AI自动化的游戏动作输出;同时也负责AI SDK服务状态的异常监控等。

l UI自动化

通过图像识别算法,识别游戏图像中用户配置的UI按钮或弹窗,并根据用户配置的UI操作,决策出该如何进行UI自动化流程,并最终进入游戏场景中。

l 游戏场景识别

根据用户定义的场景识别配置文件,识别游戏场景内的游戏元素(敌人、血条、技能状态、数字等)。场景识别的各项游戏元素的结果,将作为特征数据输入给AI自动化模块,具体需要识别哪些游戏元素,根据AI需求自行定义。

l AI自动化

根据场景识别后得到的特征数据,进行AI决策,输出游戏操作,游戏操作通常为点击某个像素、在某像素区间滑动。

1、 数据流程

AI SDK自动化流程可分为游戏UI自动化和游戏场景自动化两个阶段,UI自动化根据用户配置定义进入特定游戏场景,游戏场景自动化则在游戏场景中进行战斗、驾驶、升级等各种游戏自动化操作。两个阶段可以不断循环重复,每个阶段的数据流程如下:

1) 游戏UI自动化阶段

l AI Client从手机端获取游戏图像后,经过1、2、3步骤将图像发送给UI自动化模块

l UI自动化模块识别UI界面中的按钮或弹窗,决策出需要进行的UI操作,并经过4、5、6步骤将UI动作输出至AI Client

经过若干次UI自动化操作后,游戏从UI场景进入到游戏场景,进入游戏场景自动化阶段。

2) 游戏场景自动化阶段

l AI Client从手机端获取游戏图像,经过1、2、7步骤将图像发送给游戏场景识别模块,并识别出游戏场景中各项游戏元素

l AI自动化模块经步骤8获取到识别结果后,根据游戏AI算法或特定逻辑规则决策出AI动作,经9、10、11步骤将AI动作输出至AI Client

经过一段时间的游戏场景自动化操作,游戏场景结束,又返回到UI自动化阶段。

三、 游戏场景自动化

由于游戏品类比较多,从格斗游戏、赛车游到FPS射击游戏,不同游戏场景的游戏玩法差异极大;游戏画面中的元素包括敌人、道具、怪物甚至卡牌,不同游戏画面中需要识别的游戏元素也存在极大差异。能够适用于多种游戏场景的自动化是AI SDK的核心功能,下面主要介绍AI SDK针对游戏场景的自动化方案。

1、 游戏场景识别

游戏场景识别模块中提供了模板匹配、梯度模板匹配、特征点匹配、目标检测、深度神经网络等多种算法,识别游戏场景中的游戏元素,并对外输出图像识别结果。具体识别哪些元素,用户可由场景识别配置文件自行定义。在AI SDK的场景识别中,主要将游戏中需要识别的元素分为以下几类:

l 固定物体目标

主要采用各种模板匹配算法检测游戏场景中的固定目标物,如游戏中的按钮、图标、技能状态等。该方法会返回场景中检测到的目标物以及像素坐标。

l 形变物体目标

主要采用卷积神经网络检测游戏场景中的图像形状易发生变化的目标物,如游戏角色、建筑物、车辆、怪物等。该方法会返回场景中目标物的位置及类别。

l 像素目标

检测出游戏图像检测区域内满足特定条件的像素点,该方法会返回符合条件的所有像素点集合。

l 数字

该方法会返回游戏场景中检测区域内的数字和其所在的像素位置等信息。

l 血条

该方法会返回游戏场景中检测区域内的血量百分比和血条位置等信息。

在实际应用中,通常我们将一个目标物和几个同类别的目标物定义为一个task任务,一个复杂的游戏场景可能包含几十个需要识别的task任务。要完成一次场景识别,需要所有task任务都完成。游戏场景识别模块的技术架构如下图所示:

1、为了降低任务检测的时间消耗(如果场景识别耗费太多时间,那么场景识别之后进行的AI决策就会存在很高的时延,严重制约AI自动化的表现),采用了多检测任务并行运行的方式,充分利用多核CPU资源。

2、对于采用深度网络模型进行检测的可形变目标物,任务耗时往往比较长,会严重影响每一次场景识别的性能。这里对深度网络模型进行了裁剪优化,减少卷积核数目、减少全连接层神经元个数,在保证识别准确率的情况下,尽量降低深度网络模型的性能开销。

3、针对游戏场景的图像特点,如游戏图像中存在很多的“半透明”的情况。即在识别目标物的时候,会受到背景图像的严重干扰,如下面图例所示。在游戏场景中,除了前置的图标不变外,图标的背景会不断发生变化。直接使用常见的模板匹配方法检测这些“半透明”目标物都不够理想,针对此类问题,场景识别模块的算法也做了专门的优化。

2、 游戏AI自动化

游戏AI自动化模块主要从场景识别模块得到识别结果,进行AI决策,并输出游戏操作(游戏操作通常为点击、滑动某个像素坐标点或区域)。游戏AI是一个复杂的问题,从简单的硬编码规则、状态机、行为树AI,到模仿学习、强化学习等基于深度学习的AI,再到蒙特卡洛搜索树AI,不同类型游戏的AI决策往往需要不同的AI方法,或者多种AI方法来解决。为了便于扩展和支持不同类型游戏的AI算法,AI自动化模块被设计为插件运行模式,不同的AI算法以插件的形式实现,并由AI自动化模块加载运行。

AI自动化模块包含两种插件,分别是Env插件和AI插件。Env插件主要是获取场景识别的结果,并转化为特定的数据特征,数据特征可以是图像像素值,也可以是其它类型的结构化数据,或者两者的合集。AI插件主要是游戏AI算法的实现,根据Env插件转化后的数据特征,进行游戏动作决策。Env插件和AI插件的运行示意图如下:

每一次游戏场景自动化过程中,Env插件和AI插件的运行过程如下:

l 进入游戏场景时,触发AI插件的OnEnter接口调用

l Env插件的IsStart接口根据场景识别结果,判断游戏场景开始执行时,触发AI插件的OnStart接口调用

l 之后进入AI主循环,AI插件调用Env插件的GetState接口获取场景识别结果特征数据,进行AI决策,输出游戏动作action,然后调用Env插件的DoAction接口执行游戏动作

l Env插件的IsOver接口根据场景识别结果,判断游戏场景结束时,触发AI插件的OnOver接口调用

l 离开游戏场景时,触发AI插件的OnLeave接口调用

如果需要扩展新的游戏AI自动化功能,按照要求实现Env插件和AI插件接口即可。为了便于实现插件,AI SDK中提供了两组API接口,分别是Action API和Agent API。其中Action API对游戏中常见的各种动作进行封装,直接调用其中接口就可以输出各种游戏动作;Agent API用于获取游戏场景识别的各项结果,可以方便地获取游戏中各种目标物或按钮、图标状态等信息。值得注意的是,Env插件和AI插件并不是一一对应的关系,如果不同游戏的AI算法是一样的,只有特征数据的解析方式存在不一致,那么AI插件就可以对应不同的Env插件。AI自动化模块的技术架构如下:

除了提供插件系统及其运行框架外,AI SDK中还内置了强化学习、模仿学习地AI插件和Env插件,用户可以直接使用,不需要做任何改动。此外还提供了常见游戏类型的AI自动化算法框架,其中已经实现了AI插件和Env插件的诸多功能。可基于这些常见游戏类型的算法框架,再结合自身的特殊自动化需求,实现Env插件和AI插件。

在实际的游戏场景自动化中,有以下几点需要注意:

1、 单纯的一个AI算法很难满足实际自动化需求,往往需要在AI算法之上附加一定的规则,如采用模仿学习AI+少量规则的方式来实现;

2、 为了在游戏场景自动化过程中覆盖更多的情况,可以在特定AI算法之上附加一定的随机性,让AI能探索更多的场景;

3、 游戏场景识别的结果不能达到百分之百准确无误,针对识别结果做一些简单的过滤或处理,能很好的提升AI自动化的鲁棒性;

4、 由于所有的游戏动作最终以模拟触屏的方式执行,控制好游戏动作中触屏的时长、滑动的像素距离都能提升我们AI的表现。

四、 应用举例

目前AI SDK已经在竞速类、赛车类、FPS类、MOBA类、MMO类等多种类型的游戏场景中进行了自动化验证,取得了不错的应用效果。能够针对多种游戏场景进行自动化测试,且不需要游戏端提供任何接口。一些游戏中的应用效果视频如下:

从运行方式上,AI SDK可在本地部署运行,进行单独的游戏AI自动化测试。如果要进行批量大规模自动化测试,也可以部署在云端,提供线上游戏AI自动化测试服务,如下图所示:

五、 总结和展望

本文介绍了基于图像的游戏场景自动化框架,框架的优点是不依赖游戏端提供接口或数据,方案通用性强,可适用于绝大多数游戏场景的自动化测试。且游戏场景自动化插件完成后,随着游戏版本的迭代更新,只要游戏的玩法不改变,已经实现的自动化过程一般不需要做修改,自动化过程维护的成本比较低,不需要随着游戏内部实现的改变而修改。

  同时AI SDK目前也存在一些问题,尤其在易用性方面,如何让使用者更容易的使用是下一步要解决的问题。虽然AI SDK内置了常用游戏AI算法,提供了常见游戏类型的AI自动化框架模板,可以有效的降低接入新游戏进行游戏场景自动化的成本,但对使用者也有一定能力要求。我们也在尝试将一些简单且通用性强的AI自动化过程来通过工具配置的方式让用户来完成,让一些普通用户也能够完成一些场景的AI自动化。其次,在场景识别模块,提升目标物识别准确率,对实现AI自动化有诸多好处。而在提升识别准确率的同时降低性能开销,也是需要持续优化的问题。

目前腾讯Turing Lab编著的关于AI SDK及其应用的书籍《AI自动化测试:技术原理、平台构建与工程实践》已上架可于京东进行购买(超链接:https://item.jd.com/12679219....)。AI ADK也已经对外开源开放,欢迎各位开发者下载体验。(超链接:https://wetest.qq.com/product...

AI SDK 技术交流Q群|1095989343

性能测试技术交流群:720150565

查看PerfDog详情:https://perfdog.qq.com/?ADTAG...

查看原文

赞 1 收藏 1 评论 0

腾讯WeTest 发布了文章 · 9月8日

WeTest明星工具-移动端性能测试PerfDog初探

在十一月初,腾讯就官宣了一则消息,腾讯WeTest明星工具-PerfDog面向全球发布。官宣介绍如下:https://wetest.qq.com/lab/vie...。我在看到该新闻时,有种大开眼界的感觉,移动端的性能测试原来可以这么简单。今天闲暇之余,来了一波初探,简单体验了一番。

软件性能数据采集

我们先来了解下通过该工具能采集到哪些性能数据:

PerfDog支持移动平台所有应用程序(游戏、APP应用、浏览器、小程序等)及Android模拟器,桌面应用程序PerfDog支持在Windows和Mac机器使用运行。在iOS和Android平台获取性能参数如下:

iOS平台 (与苹果官方Xcode工具参数对齐一致)

  • Screenshot
  • FPS(1秒内游戏画面或者应用界面真实平均刷新次数,俗称帧率/FPS)
    1) Avg(FPS):平均帧率(一段时间内平均FPS)
    2) Var(FPS):帧率方差(一段时间内FPS方差)
    3) Drop(FPS):降帧次数(平均每小时相邻两个FPS点下降大于8帧的次数)
  • Jank(1s内卡顿次数。iOS9.1以下系统暂时不支持。类似Android的Jank卡顿和iOS的FramePacing平滑度统计原理。帧率FPS高并不能反映流畅或不卡顿。比如:FPS为50帧,前200ms渲染一帧,后800ms渲染49帧,虽然帧率50,但依然觉得非常卡顿。同时帧率FPS低,并不代表卡顿,比如无卡顿时均匀FPS为15帧。所以,平均帧率FPS与卡顿无任何直接关系)
    PerfDog计算方法:同时满足两条件,则认为是一次卡顿Jank.
    1、 当前帧耗时>前三帧平均耗时2倍。
    2、 当前帧耗时>两帧电影帧耗时(1000ms/24*2=84ms)。
    同时满足两条件,则认为是一次严重卡顿BigJank.
    1、 当前帧耗时>前三帧平均耗时2倍。
    2、 当前帧耗时>三帧电影帧耗时(1000ms/24*3=125ms)。
    计算思路:考虑视觉惯性,假设以前三帧的平均帧耗时为参考,作为vsync时间间隔,连续两次vsync没有新渲染画面刷新,则认为是一次潜在卡顿,也就是说下一帧耗时大于前三帧平均帧耗时2倍,则认为一次潜在卡顿。同时单帧耗时满足大于两倍电影帧耗时1000ms/24*2 (由于人眼低于24帧才能辨别画面不连续性),则认为是一次真正卡顿。同时若单帧耗时大于3倍电影帧耗时,则认为是一次严重卡顿。
    注解:为什么是两次vsync?GPU一般是3重缓冲buffer,当前帧已占用一个buffer,即剩余2缓冲buffer,人眼一般可容忍2帧延迟。 为什么是两帧电影帧耗时?低于24帧画面,人眼就能感知到画面不连续性,电影一般都是24帧。即电影帧耗时1000ms/24=41.67ms,两帧电影帧耗时也就是41.67ms2,三帧电影帧耗时是41.67ms3。
    1) BigJank:1s内顿严重卡次数
    2) Jank(/10min):平均每10分钟卡顿次数。
    3) BigJank(/10min):平均每10分钟严重卡顿次数
  • FTime(上下帧画面显示时间间隔,即认为帧耗时,iOS9.1以下系统暂时不支持。)
    1) Avg(FTime):平均帧耗时
    2) Delta(FTime):增量耗时(平均每小时两帧之间时间差>100ms的次数)
  • CPU Usage(Total整机/App进程,统计结果合Xcode一致)
  • Memory (是统计FootPrint,注:OOM与FootPrint有关,与系统、机型无关。只与RAM有关,如1G内存机器。FootPrint超过650MB,引发OOM)。受iOS平台限制,暂时无法获取ios10及以下系统的memory。后续版本增加。如做性能测试,建议升级iOS系统版本
  • Xcode Memory (XCode Debug Gauges统计方式即XCode Memory)。受iOS平台限制,暂时无法获取ios10及以下系统的Xcode Memory。后续版本增加。如做性能测试,建议升级iOS系统版本
  • Real Memory(Xcode Instrument统计方式即Real Memory,实际占用物理内存。注:物理内存与系统策略有关,关注意义不大)
  • Virtual Memory(虚拟内存)
  • Wakeups(线程唤醒次数)。注:超过150进程很大可能会被系统kill
  • CSwitch(上下文切换测试)。注:单核超过14000进程会被系统Kill
  • GPU Utilization(Render/Tilter/Device)
    1) Render:渲染器利用率(像素着色处理阶段,若占比高,说明是PS阶段出现瓶颈,shader过于复杂或纹理大小、采样复杂等)
    2) Tilter:Tilter利用率(顶点着色处理阶段,若占比高,说明是VS阶段出现瓶颈,顶点数太多等原因)
    3) Device:设备利用率(整体GPU利用率)
  • Network(Recv/Send,测试目标进程流量,和Xcode结果一致)
  • Battery Power(整机实时Current电流、Voltage电压、Power功率)(注:和Xcode Instrument结果一致)
  • Log(系统调试日志信息)

Android平台

  • Screenshot
  • FPS(1秒内游戏画面或者应用界面真实平均刷新次数,俗称帧率/FPS)
    1) Avg(FPS):平均帧率(一段时间内平均FPS)
    2) Var(FPS):帧率方差(一段时间内FPS方差)
    3) Drop(FPS):降帧次数(平均每小时相邻两个FPS点下降大于8帧的次数)
  • Jank(1s内卡顿次数。解释说明如iOS平台说明)
    1) BigJank:1s内严重卡顿次数
    2) Jank(/10分钟):平均每10分钟卡顿次数
    3) BigJank(/10分钟):平均每10分钟严重卡顿次数
  • FTime(上下帧画面显示时间间隔,即认为帧耗时)
    1) Avg(FTime):平均帧耗时
    2) Delta(FTime):增量耗时(平均每小时两帧之间时间差>100ms的次数)
  • CPU Usage(Total整机/App目标进程,统计结果和Android Studio Profiler一致)
  • CPU Clock(各个CPU核心的频率和使用率)
  • Memory (PSS Memory,统计结果和Android Java API标准结果一致,与Meminfo也一致。注:部分三星机器系统修改了Meminfo底层统计方式,导致Meminfo与Java AP统计结果不一致,新出三星机器已修复)
  • Swap Memory (Swap Memory)
  • Virtual Memory
  • Memory Detail(NativePSS、GFX、GL、Unknown)
  • GPU Usage(目前仅支持高通芯片手机)
  • GPU Frequency(目前仅支持高通芯片手机)
  • Network(Recv/Send)
  • CTemp(CPU温度)
  • Battery Power(Current电流、Voltage电压、Power功率)(注:与仪器测试误差<3%左右)
  • Log(系统调试日志信息)

上述内容来自官网使用文档。我们了解了参数,就实际来操作一下吧。对于工具的介绍,网络上都有,我就结合自己的实际体验来说吧。

使用的基本流程

在自己实践使用时,基本流程如下:

1.注册账号(只有注册账号后才能下载安装包)

2.下载安装包并解压

3.在perfdog后台创建测试项目

4.打开可执行文件PerfDog.exe

5.使用注册的账号登录

6.使用usb将手机和电脑连接(不能锁屏,开启调试模式)

7.选择连接模式(wifi还是usb)

8.选择app应用列表

9.配置要监控的数据

10.开始记录数据

11.操作对应app

12.停止记录数据(不能少于10S)

13.上传记录数据

14.进入perfdog后台查看性能数据

流程介绍

前五步操作就不讲述了,大家都懂。我们直接从第六步说起,我使用的是ios设备。

连接设备

iOS: 则即插即用,用户无需做任何操作。

Android: 有两种模式,非安装模式和安装模式。

  • a. 非安装模式:手机即插即用,无需任何设置及安装,使用非常简单,但手机屏幕上没有实时性能数据显示。
  • b. 安装模式:需要在手机上自动安装PerfDog.apk,手机屏幕上有实时性能数据显示。(请开启Debug调试模式、允许USB安装和PerfDog悬浮窗管理权限),启动PC版PerfDog.exe,则会在手机上自动PUSH安装PerfDog.apk,具体安装类似各个手机厂商安装第三方APP提示安装即可。(注:由于很多手机安装需要账号密码,导致无法自动安装,如果自动安装失败,则会把安装文件PerfDog.apk释放到当前文件夹里,手动安装PerfDog.apk即可)。

这里重点说明下Android平台下,LMK和Swap这两个参数意义:

LMK:Android平台下OOM与游戏进程内存大小无关,主要是系统剩余物理内存有关。系统剩余物理内存小于LMK,则会引起OOM。

Swap: 系统进程用到zram/vnswap内存压缩技术。不同手机系统启用Swap memeroy大小不同。

测试模式

通过usb连接电脑后,出现如下界面,可以选择测试模式:

USB模式测试:

  USB连线,在设备列表选择USB图标设备进行USB模式测试(插线模式测试功率无任何意义)。

WIFI模式测试(测试功率):

  USB连线后,在设备列表选择WIFI图标设备进行WIFI模式测试。WIFI检测连接成功后,拔掉USB连接线。(注:需要PC和被测手机连接同一WIFI,WIFI检测连接成功后,拔掉被测手机USB线(插线模式测试功率无任何意义))。

在实践中,USB和WiFi模式我都有使用。选择模式后,界面会展示设备的详细信息,如下:

选择测试应用

选择模式后,则可以选择要测试的应用了(当前手机中的所有app都可以被选择),如下页面:

选择对应被测应用,并操作对应的app,界面展示如下:

注意点:Android平台,安装模式下,手机屏幕左上角有实时性能数据显示(Android手机请打开PerfDog悬浮窗管理权限,否则手机上不会显示性能参数)。

开启悬浮权限

android设备中的界面性能参数显示如下:

功能介绍

1.性能参数配置

性能参数可在界面中配置,点击界面中的+号即可,如下:

①点击对应条目参数,颜色会变深,图表数据则会展示在界面中

②勾选对应条目参数,表示需要收集该数据

2.记录保存

点击右侧的蓝色开始按钮,则表示在记录数据,如下:

需要注意的是:记录时间不能少于10S。少于10S,则会提示如下信息:

点击按钮后,记录会停止记录并保存数据,如下:

2.1 提交记录到perfdog后台

可以修改名称,点击confirm,数据会上传到perfdog的后台,如下:

可以查看详细的性能数据,如下所示:

2.2 记录保存到本地

勾选保存按钮,数据就会保存到本地,如下:

可以打开excel文件查看对应的性能数据:

3.数据回放

点击perfdog界面上的文件夹按钮,选择对应的本地数据,即可以回放记录,操作如下:

可在界面查看回放结果,如下:

4.批注及标定

双击鼠标左键,增加批注,再次双击,则取消批注。

单击鼠标左键,则增加标定,再次点击则重新标定。

增加了批注和标定的界面如下所示,红色为批注,淡紫色为标定:

5.性能参数分析

5.1 数据统计

可以选择一个时间段内的数据,进行统计,如下:

5.2 设置性能参数统计分析阈值

在perfdog界面中的setting下,可以配置,如下:

5.3 保存框选数据

对某一时间段内的数据框选后,可以单独保存片段,在框选范围内,右键即可,如下:

6.场景标签

通过标签按钮给性能数据打标签,鼠标左键双击颜色区域可修改对应区域标签名

7.日志记录

在perfdog界面,可以查看对应日志,也可以设置查看日志的等级,如下:

在尝试WIFI模式时,发现log按钮勾选不了。

8.停止功能

停止测试应用,不需要拔掉数据线,或者断开连接,在选择应用的界面中,选择NULL即可,如下:

9.截图录屏

连接安卓设备,并使用安装模式,可配置截屏参数,如下:

界面就会记录操作的过程,如下所示:

如此记录是不是很明了?但这种用法会影响性能参数,实际用途中不推荐。如果觉得新鲜,可以尝试使用即可。

PerfDog后台使用

1.邀请人员

可以邀请对应人员一起维护测试项目

2.数据共享

数据共享后,可以在任务数据中查看明细,可按android、ios区分,以及app包的版本,设备版本来查看。

使用注意点

1.设备连接

iOS: 若PerfDog检测不到连接手机或无法测试,请先安装确保最新iTunes是否能连上手机。

Android: 请开启手机Debug调试模式及允许USB安装。

2.截图记录影响性能

截屏记录影响性能(整体FPS影响<=1。小米5:CPU=1%左右。IPhone7P:CPU<2%),若无需请不要开启截屏。

总结

使用PerfDog工具下来,整体有以下几点感受。

1.对性能指标的测试,更加便捷;

2.易操作

3.记录支持回放

4.数据便于管理与查看

PerfDog工具是款不错的性能测试工具,点赞一波。

原文:https://www.cnblogs.com/hong-...

性能测试技术交流群:720150565

查看PerfDog详情:https://perfdog.qq.com/?ADTAG...

查看原文

赞 0 收藏 0 评论 0

腾讯WeTest 发布了文章 · 9月1日

移动端性能测试必备工具PerfDog性能狗

致移动游戏&应用性能测试分析的伙伴们:

  • 你是否会因移动游戏&APP性能问题,而备受煎熬?
  • 你又是否因寻找性能测试分析工具,而彷徨迷茫?
  • 你是否因工具需要,而尝试各种ROOT/越狱?
  • 你是否因工具准确性,而被逼各类花式复测验证?
  • 你是否因工具局限性,而同时开启N个工具?
  • 你又是否因工具空白,而被迫各式XCode源码编译?
  • ROOT/越狱越来越难,你我路在何方?
  • 版本编译坑罗密布,你我又将守夜到何时?
  • 备受煎熬的时候一去不复返了,
  • 因为移动全平台性能测试分析神器来了,
  • 它为移动游戏&APP测试分析而生,
  • 它就是PerfDog性能狗!

背景:

在项目研发支持过程中,经历如上障碍和痛苦。我们决定做一个完全独立、简单易用,与APP版本、系统版本、系统平台无任何关系的性能平台。

为了保证测试结果的准确性、严谨性和可对比性。我们编写了Demo进行测试对比。

1. iOS平台:

PerfDog测试数据结果与XCode/Instrument(苹果官方工具需要游戏源码编译测试)测试结果对齐一致。性能影响结果:Xcode/Instrument性能影响较大,PerfDog性能影响很小。

2. Android平台:

安卓平台比较关注的是工具本身对手机性能影响,我们在小米5手机上锁死最低频率。开启截图测试影响结果如下:

PerfDog性能影响:CPU占比6%-10%(正常频率下CPU占比1-3%)。

其他工具性能影响:CPU占比27%-33%。

备注:

工具本身性能若影响大的话,手机容易发热,同时对游戏&应用性能有很大影响。即测试出性能数据无法反应用户真实情况。

软件性能数据采集:

PerfDog支持移动平台所有应用程序(游戏、APP应用、浏览器、小程序等)及Android模拟器,桌面应用程序PerfDog支持在Windows和Mac机器使用运行。在iOS和Android平台获取性能参数如下:

iOS平台 (与苹果官方Xcode工具参数对齐一致)

  • Screenshot
  • FPS(1秒内游戏画面或者应用界面真实平均刷新次数,俗称帧率/FPS)
       1) Avg(FPS):平均帧率(一段时间内平均FPS)
       2) Var(FPS):帧率方差(一段时间内FPS方差)
       3) Drop(FPS):降帧次数(平均每小时相邻两个FPS点下降大于8帧的次数)
  • Jank(1s内卡顿次数。iOS9.1以下系统暂时不支持。类似Android的Jank卡顿和iOS的FramePacing平滑度统计原理。帧率FPS高并不能反映流畅或不卡顿。比如:FPS为50帧,前200ms渲染一帧,后800ms渲染49帧,虽然帧率50,但依然觉得非常卡顿。同时帧率FPS低,并不代表卡顿,比如无卡顿时均匀FPS为15帧。所以,平均帧率FPS与卡顿无任何直接关系)
        PerfDog计算方法:同时满足两条件,则认为是一次卡顿Jank.
        1、 当前帧耗时>前三帧平均耗时2倍。
        2、 当前帧耗时>两帧电影帧耗时(1000ms/24*2=84ms)。
        同时满足两条件,则认为是一次严重卡顿BigJank.
        1、 当前帧耗时>前三帧平均耗时2倍。
        2、 当前帧耗时>三帧电影帧耗时(1000ms/24*3=125ms)。
    计算思路:考虑视觉惯性,假设以前三帧的平均帧耗时为参考,作为vsync时间间隔,连续两次vsync没有新渲染画面刷新,则认为是一次潜在卡顿,也就是说下一帧耗时大于前三帧平均帧耗时2倍,则认为一次潜在卡顿。同时单帧耗时满足大于两倍电影帧耗时1000ms/24*2 (由于人眼低于24帧才能辨别画面不连续性),则认为是一次真正卡顿。同时若单帧耗时大于3倍电影帧耗时,则认为是一次严重卡顿。
    注解:为什么是两次vsync?GPU一般是3重缓冲buffer,当前帧已占用一个buffer,即剩余2缓冲buffer,人眼一般可容忍2帧延迟。 为什么是两帧电影帧耗时?低于24帧画面,人眼就能感知到画面不连续性,电影一般都是24帧。即电影帧耗时1000ms/24=41.67ms,两帧电影帧耗时也就是41.67ms*2,三帧电影帧耗时是41.67ms*3。
       1) BigJank:1s内顿严重卡次数
       2) Jank(/10min):平均每10分钟卡顿次数。
       3) BigJank(/10min):平均每10分钟严重卡顿次数
  • FTime(上下帧画面显示时间间隔,即认为帧耗时,iOS9.1以下系统暂时不支持。)
       1) Avg(FTime):平均帧耗时
       2) Delta(FTime):增量耗时(平均每小时两帧之间时间差>100ms的次数)
  • CPU Usage(Total整机/App进程,统计结果合Xcode一致)
  • Memory (是统计FootPrint,注:OOM与FootPrint有关,与系统、机型无关。只与RAM有关,如1G内存机器。FootPrint超过650MB,引发OOM)。受iOS平台限制,暂时无法获取ios10及以下系统的memory。后续版本增加。如做性能测试,建议升级iOS系统版本
  • Xcode Memory (XCode Debug Gauges统计方式即XCode Memory)。受iOS平台限制,暂时无法获取ios10及以下系统的Xcode Memory。后续版本增加。如做性能测试,建议升级iOS系统版本
  • Real Memory(Xcode Instrument统计方式即Real Memory,实际占用物理内存。注:物理内存与系统策略有关,关注意义不大)
  • Virtual Memory(虚拟内存)
  • Wakeups(线程唤醒次数)。注:超过150进程很大可能会被系统kill
  • CSwitch(上下文切换测试)。注:单核超过14000进程会被系统Kill
  • GPU Utilization(Render/Tilter/Device)
       1) Render:渲染器利用率(像素着色处理阶段,若占比高,说明是PS阶段出现瓶颈,shader过于复杂或纹理大小、采样复杂等)
       2) Tilter:Tilter利用率(顶点着色处理阶段,若占比高,说明是VS阶段出现瓶颈,顶点数太多等原因)
       3) Device:设备利用率(整体GPU利用率)
  • Network(Recv/Send,测试目标进程流量,和Xcode结果一致)
  • Battery Power(整机实时Current电流、Voltage电压、Power功率)(注:和Xcode Instrument结果一致)
  • Log(系统调试日志信息)

Android平台

  • Screenshot
  • FPS(1秒内游戏画面或者应用界面真实平均刷新次数,俗称帧率/FPS)
       1) Avg(FPS):平均帧率(一段时间内平均FPS)
       2) Var(FPS):帧率方差(一段时间内FPS方差)
       3) Drop(FPS):降帧次数(平均每小时相邻两个FPS点下降大于8帧的次数)
  • Jank(1s内卡顿次数。解释说明如iOS平台说明)
       1) BigJank:1s内严重卡顿次数
       2) Jank(/10分钟):平均每10分钟卡顿次数
       3) BigJank(/10分钟):平均每10分钟严重卡顿次数
  • FTime(上下帧画面显示时间间隔,即认为帧耗时)
       1) Avg(FTime):平均帧耗时
       2) Delta(FTime):增量耗时(平均每小时两帧之间时间差>100ms的次数)
  • CPU Usage(Total整机/App目标进程,统计结果和Android Studio Profiler一致)
  • CPU Clock(各个CPU核心的频率和使用率)
  • Memory (PSS Memory,统计结果和Android Java API标准结果一致,与Meminfo也一致。注:部分三星机器系统修改了Meminfo底层统计方式,导致Meminfo与Java AP统计结果不一致,新出三星机器已修复)
  • Swap Memory (Swap Memory)
  • Virtual Memory
  • Memory Detail(NativePSS、GFX、GL、Unknown)
  • GPU Usage(目前仅支持高通芯片手机)
  • GPU Frequency(目前仅支持高通芯片手机)
  • Network(Recv/Send)
  • CTemp(CPU温度)
  • Battery Power(Current电流、Voltage电压、Power功率)(注:与仪器测试误差<3%左右)
  • Log(系统调试日志信息)

Web性能数据管理:

  • 账户信息管理
  • 性能数据管理、图表展示、编辑、版本对比
  • 性能测试任务管理

使用步骤:

  • 步骤1 : Window PC/苹果Mac机器上安装、运行PerfDog客户端。

    iOS: 若PerfDog检测不到连接手机或无法测试,请先安装确保最新iTunes是否能连上手机。

    Android: 请开启手机Debug调试模式及允许USB安装。

  • 步骤2 : 启动PerfDog,然后USB连接手机,自动检测添加手机到应用列表中。

    iOS: 则即插即用,用户无需做任何操作。

    Android: 有两种模式,非安装模式和安装模式。

    • a. 非安装模式:

      手机即插即用,无需任何设置及安装,使用非常简单,但手机屏幕上没有实时性能数据显示。

    • b. 安装模式:

      需要在手机上自动安装PerfDog.apk,手机屏幕上有实时性能数据显示。(请开启Debug调试模式、允许USB安装和PerfDog悬浮窗管理权限),启动PC版PerfDog.exe,则会在手机上自动PUSH安装PerfDog.apk,具体安装类似各个手机厂商安装第三方APP提示安装即可。(注:由于很多手机安装需要账号密码,导致无法自动安装,如果自动安装失败,则会把安装文件PerfDog.apk释放到当前文件夹里,手动安装PerfDog.apk即可)。

这里重点说明下Android平台下,LMK和Swap这两个参数意义:

LMK:Android平台下OOM与游戏进程内存大小无关,主要是系统剩余物理内存有关。系统剩余物理内存小于LMK,则会引起OOM。

Swap: 系统进程用到zram/vnswap内存压缩技术。不同手机系统启用Swap memeroy大小不同。
  • 步骤3 : 测试模式。

    • USB模式测试:

      USB连线,在设备列表选择USB图标设备进行USB模式测试(插线模式测试功率无任何意义)。

    • WIFI模式测试(测试功率):

      USB连线后,在设备列表选择WIFI图标设备进行WIFI模式测试。WIFI检测连接成功后,拔掉USB连接线。(注:需要PC和被测手机连接同一WIFI,WIFI检测连接成功后,拔掉被测手机USB线(插线模式测试功率无任何意义))。

  • 步骤4 : 选择测试的游戏&应用。

    PC如图:

    Android平台,安装模式下,手机屏幕左上角有实时性能数据显示(Android手机请打开PerfDog悬浮窗管理权限,否则手机上不会显示性能参数)。

功能介绍:

  • 1. 性能参数控制Page:

    选择需要收集性能参数,控制性能参数显示page。

  • 2. 记录保存:

    测试结束时,可自主选择两种方式保存处理(Upload/Save)性能数据:

    1) 将性能数据同步上传PerfDog云端web看板。

    2) 本地导出Excel文件。

  • 3. 记录回放(方便回看分析):

    打开要回放文件。

    回放结果如图:

  • 4. 批注及标定:

    鼠标左键双击,增加批注,再次双击,则取消批注。鼠标左键单击,则增加标定,再次点击则重新标定。

  • 5. 设定性能参数统计分析阈值、编辑统计参数分析及框选记录保存:

    可以通过鼠标框选/拖动查询时间周期内,统计数据等。同时可对框选数据进行保存。工具左侧“Setting”以设定对应的性能参数统计分析阈值等。

  • 6. 场景Label标签:

    通过标签按钮给性能数据打标签,鼠标左键双击颜色区域可修改对应区域标签名。

  • 7. 屏幕记录:

    注意:截屏记录开启,影响性能。

  • 8. 多进程问题测试:

    iOS平台,APP多进程分为APP Extension和系统XPC Server。

    比如:企鹅电竞直播软件用到APP Extension扩展进程(扩展进程名LABroadcastUpload)。当然也可能用到系统XPC Server服务进程,如一般web浏览器会用到webkit。

    备注:后期版本PerfDog提供XPC Server测试功能。

    Android平台,一般大型APP,比如游戏有时候是多进程协作运行(微信小游戏,微视等APP及王者荣耀等游戏多子进程),可选择目标子进程进行针对性测试。默认是主进程。如图王者荣耀。

    微信小游戏、小程序测试等,如下是微信小游戏-浪漫玫瑰园:

  • 9. Log日志功能:

    采集系统日志信息。

  • 10. 停止功能:

    无需拔手机,选择NULL即可停止采集信息。

Web云平台功能介绍:

  • 1. 个人性能数据MyData。

    具体性能数据展示。

  • 2. 测试任务管理。

    创建任务邀请测试成员加入,或加入其他人创建的测试任务中。

  • 3. 性能数据共享归纳。

  • 4. 测试任务性能数据Task Data。

重要提示:

  • 1. PerfDog的 Windows & Mac OS X 客户端都支持用户对iOS和Android设备进行测试。
  • 2. iOS平台: 若PerfDog检测不到连接手机或无法测试,请先安装确保最新iTunes是否能连上手机。内存采集一直为0请重启手机。
  • 3. Android平台:有两种模式(非安装模式,安装模式)

    • a) 非安装模式:

      手机即插即用,无需任何设置及安装,使用非常简单,但手机屏幕上没有实时性能数据显示(请开启Debug调试模式)。

    • b) 安装模式:

      i. 需要在手机上自动安装PerfDog.apk,手机屏幕上有实时性能数据显示。(请开启Debug调试模式、允许USB安装和PerfDog悬浮窗管理权限),启动PC版PerfDog.exe,则会在手机上自动PUSH安装PerfDog.apk,具体安装类似各个手机厂商安装第三方APP提示安装即可。(注:由于很多手机安装需要账号密码,导致无法自动安装,如果自动安装失败,则会把安装文件PerfDog.apk释放到当前文件夹里,手动安装PerfDog.apk即可)。

      ii. 安装模式下,在测试过程中,由于系统资源紧缺会kill PerfDog显示app(手机界面性能数据显示),但不影响正常测试功能。

  • 4. WIFI模式:只能在WIFI模式测试功率等信息。USB连线后,在设备列表选择WIFI图标设备进行WIFI模式测试。WIFI检测连接成功后,拔掉USB连接线。(注:需要PC和被测手机连接同一WIFI,WIFI检测连接成功后,拔掉被测手机USB线(插线模式测试功率无任何意义))。
  • 5. iOS平台:Iphone小圆点/辅助触控(AssistiveTouch)及Iphone x刘海手机的小白条/引导式访问(Guided Access)影响PerfDog采集数据准确性,请关闭。
  • 6. 截屏记录影响性能(整体FPS影响<=1。小米5:CPU=1%左右。IPhone7P:CPU<2%),若无需请不要开启截屏。
  • 性能测试技术交流群:720150565

查看PerfDog详情:https://perfdog.qq.com/?ADTAG...

查看原文

赞 0 收藏 0 评论 0

腾讯WeTest 发布了文章 · 8月25日

实战PerfDog优化小游戏性能

背景:
我们的引擎是Egret,使用的是原生的EUI,转微信小游戏;
工程第一版出来后使用PerfDog测试一波数据。结果发现很多问题,本文主要分两部分

  • 第一部分主要介绍通过PerfDog发现问题,
  • 第二部分主要介绍通过PerfDog的数据定位并解决问题。

PerfDog具体操作可以看文档PerfDog使用说明

第一部分————数据分析

本次的案例多见于游戏第一版时的情况,比较常见,所以拿出来做个分析。
这里强调一点。分析问题需要整体数据联动分析,单独看某单一信息是没是意义的

第一次测试数据

FPS:

内存:

CPU:

结论:

1.我们发现在战斗时FPS波动较大
2.内存呈现持续上升的趋势
3.CPU的APP Usage太小,仅占1%左右

首先针对问题3的说明:
我之前选择测试的是微信app,而小游戏是作为子进程而存在的,所以应该选择PerfDog的子进程进行测试,这样得到的数据会更加的精准;下图的深色进程表示正在运行的顶层进程

针对这种多进程的应用测试:

iOS平台,APP多进程分为APP Extension和系统XPC Server。
比如:某电竞直播软件用到APP Extension扩展进程(扩展进程名LABroadcastUpload)。当然也可能用到系统XPC Server服务进程,如一般web浏览器会用到webkit。

Android平台,一般大型APP,比如游戏有时候是多进程协作运行(微信小游戏,微视等APP及王者荣耀等游戏多子进程),可选择目标子进程进行针对性测试。默认是主进程。如图王者荣耀


详细的使用说明可以看这里:PerfDog使用说明书

为了判断是什么导致的FPS波动较大,也为了判断是否存在OOM,现在我们来选择子进程进行第二次测试;

第二次测试数据

测试数据组成:
为了验证我的一些猜想,也为了更细致的定位问题,我们在测试过程中做了一些特殊操作:

1.战斗挂机 【为了判断是否是战斗过程中触发的内存泄露】
2.反复打开关闭UI 【为了判断UI创建与销毁是否存在内存泄露】
3.静止在某一UI页面 【为了与其他场景作区分】
4.息屏挂机 【为了判断是否是由图像资源引起的内存泄露还是代码资源引起的泄露】
FPS数据:

CPU数据:

内存数据:

GPU压力山大

FPS与GPU分析:

我们通过FPS数据发现在游戏过程Jank十分严重,FPS波动过于剧烈,尤其是集中在UI开启或者关闭的时候,游戏来说,渲染画面,相对来说GPU可能出现瓶颈,逐对GPU进行查看,这个时候我们进行数据排查发现GPU的使用率也变得异常高,很明显渲染的压力很大,而我们游戏UI打开时实际上战斗也会被渲染,这和我们游戏的设计有关,所以渲染的压力很大。

内存分析:

我们通过PerfDog的数据发现内存是呈现一直上升的状态,这样下去最终的结果就是被System Kill掉。其实现在已经可以确定是发生了内存泄露,在72分钟的时间里内存从726M到了956M,而且还在不断上升;

这里额外说下,看是否存在OOM不能只看PSS(PerfDog默认的memory是PSS),同样要注意VSS,有的游戏可能会存在PSS一般大小,VSS不断增大的情况,这也是不科学的。
简单分享下常见内存指标关系

内存耗用
VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS

这里再稍微介绍下安卓的LMK(Low memory killer),详细信息就不多赘述了。

1.Android系统 会定时执行一次检查,内存达到某个值后,就会杀死相应的进程,释放掉内存。
2.每个程序都会有一个oom_adj值,这个值越小,程序越重要,被杀的可能性越低
3.Low memory killer 主要是通过进程的oom_adj 来判定进程的重要程度。oom_adj的大小和进程的类型以及进程被调度的次序有关
4.阈值表可以通过/sys/module/lowmemorykiller/parameters/adj和/sys/module/lowmemorykiller/parameters/minfree进行配置

现在综合两次测试数据得出结论

结论:

1.FPS波动过于剧烈,很不稳定,尤其是在uI创建与关闭时候;
2.存在内存泄露,由于不管什么操作内存都一直涨,大概率是公共组件部分引起的
3.其实还有一些其他小问题,不过优先解决这两个

第二部分————问题定位

内存泄露问题分析

有了PerfDog以上的数据,接下来我们就要开始定位排查问题啦,

项目局部架构:

1.我们的项目的基础架构是所有的基础功能都调用的同一份基础class(祖传代码),例如通信类等等;
2.我们发现内存在一直上升,无论是角色在什么环境下,甚至是在息屏的时候内存也在上升,那么我们其实可以大概率定位是项目内部的基础class内部出了问题;

接下来开始细细排查;

内存泄露排查

首先要先了解一些JS的内存管理机制

回收机制
JS中内存的分配和回收都是VM自动完成的,不需要像C/C++为每一个new/malloc操作去写配对的delete/free代码,JS引擎中对变量的存储主要是在栈内存,堆内存。内存泄漏的实质是一些对象出现意外而没有被回收,而是常驻内存。
GC原理
JavaScript虚拟机有一个特点,就是对象创建的开销远远大于对象计算的开销,并且对象创建会导致垃圾回收,而垃圾回收会导致游戏不定期卡顿。
在堆中查看无用的对象,把这些对象占用的内存空间进行回收。浏览器上的GC(Gabage Collection垃圾回收)实现,大多是采用可达性算法,关于可达性的对象,便是能与GC Roots构成连通图的对象。当一个对象到GC Roots没有任何引用链时,则会成为垃圾回收器的目标,系统会在合适的时候回收它所占的内存。

我这里使用的谷歌浏览器的Head Profiling,或者你也可以使用白鹭引擎的profiler:
使用很简单:

1.打开Google浏览器,打开要监控的网页,win下按F12弹出开发者工具
2.切换到Memory,选择堆类型,选中Take Heap SnapShot开始进行快照
3.右边的视图列出了heap里的对象列表,点击对象可以看到对象的引用层级关系
4.进入游戏后拍下快照,打开某个界面,关闭界面,拍下快照
5.将新的快照转换到Comparsion对比视图,进行内存对比分析
需要额外注意的是:
每次拍快照前,都会先自动执行一次GC,保证视图里的对象都是root可及的。GC的触发是依赖浏览器的,所以不能通过时时观察内存峰值而判断是否有内存泄漏。

我们可以每隔一段时间来拍一次快照(由于公司项目原因,我就不展示真实项目了,此处仅作为教学):

我们可以打开谷歌浏览器的内存分析工具后有三个选项,我们可以根据自己的调试方式交替使用;

1.Heap snapshot - 用以打印堆快照,堆快照文件显示页面的 javascript 对象和相关 DOM 节点之间的内存分配
2.Allocation instrumentation on timeline - 在时间轴上记录内存信息,随着时间变化记录内存信息。
3.Allocation sampling - 内存信息采样,使用采样的方法记录内存分配。此配置文件类型具有最小的性能开销,可用于长时间运行的操作。它提供了由 javascript 执行堆栈细分的良好近似值分配。


这里举例使用堆快照分析,

右侧查看详细信息

可见rect对象一直在增高,那么我们可以查看一下导致rect对象未被释放的原因:

是由于Rect对象中存在一个属性rect一直被引用导致内存无法释放,那么我们到代码对应的位置去找,就可以较快的定位原因;最终我们发现是因为在自定义的一个全局事件监听器中实例化了一个对象,但是这个对象的一些属性会持续被这个事件监听器所引用而不会被回收

当然为了更快的定位哪个函数,我们也可以使用

一般结果是这个样子

Overview的HEAP(堆)曲线图表示JS堆。
Call Stack通常来说,垂直方向并没有太大的意义,仅仅表示函数嵌套比较深而已,但是横向表示调用时间,如果调用时间太长,那么就需要优化优化了。录制结果的调用堆栈,横向表示时会出现带有更多详情的浮窗间,垂直方向表示调用栈,从上往下表示函数调用。滑动鼠标滚轮可以查看某段时间的调用栈信息。把鼠标放到Call Stacks调用栈的某个函数上面可以查看函数详细信息。这个一般是性能优化时关注,对于内存泄漏,主要用于帮助定位进行了什么操作。
Counter(计数器)窗格。在这里你可以看到内存使用情况(与Overview(概述)窗格中的HEAP(堆)曲线图相同),分别显示以下内容:JS heap(JS堆),documents(文档),DOM nodes(DOM节点),listeners(侦听器)和GPU memory(GPU内存)。勾选或取消勾选复选框可以将其从图表中显示或隐藏。

主要关注第三个的JS堆内存、节点数量、监听器数量。鼠标移到曲线上,可以在左下角显示具体数据。这些数据若有一个在持续上涨,没有下降趋势,都有可能是泄漏。
由于篇幅原因,这里不过多介绍这些工具的使用,网上有很多相关教程;

卡顿优化

我们通过PerfDog的数据发现GPU压力很大,游戏来说,渲染画面久一般是drawcall过多,或者每次draw的时间较长。

而我们的游戏在查看在drawcall后确定是由于游戏运行时drawcall过多,导致每帧的渲染耗时比较长,所以会呈现一种卡顿的现象;
关于查看drawcall等可以通过白鹭自身的FPS面板查看 白鹭debug文档
在优化前首先要了解egret在渲染的一帧里做了什么工作内容

细分的话又可以分成

每一帧的工作内容:

1.执行一次EnterFrame,此时,引擎会执行游戏中的逻辑。并且抛出EnterFrame事件
2.引擎会执行一个clear。将上一帧的画面全部擦除
3.Egret内核会遍历游戏场景中的所有DisplayObject,并重新计算所有显示对象的transform
4.所有的图像全部draw到画布

现在来优化一下:
首先要降低drawcall:

1.把小图全都换成图集
2.实现文字合批,通过自定义字体,使用图片字体的方式代替原生的字体
3.动静分离,将需要变化的和不变的分别放在不同的层级下,比如背景层、图标层和动态变化层
4.动画尽量使用dragon bones帧动画而不是spine 动画
5.使用cacheAsBitmap,把矢量图在运行时以位图形式进行计算

降低帧事件的开销:

1.不要的DisplayObject,直接removeChild 而不是设置他的visible属性为false,否则在第三步还会参与计算
2.不在主循环里创建任何对象,游戏中的人物、怪物、技能特效统统做成对象池
3.不在EnterFrame事件中做过多的操作,非要用可以自定义一些事件

我们可以用以下的函数统计创建的gameobject的数量

它是显示了每一秒钟去拿一个hashCount跟上一个hashCount作对比,这个hashCount是由白鹭引擎内部 API,用于统计引擎对象的创建数量。如果游戏静止放置不动,理论上hashCount diff的结果应该是0,实际上要尽可能控制在120以下,如果超标,只需要在引擎的 HashObject 的构造函数这里添加一个断点,在运行时去检查调用堆栈就排查就可以了。

查看PerfDog详情:https://perfdog.qq.com/?ADTAG...

查看原文

赞 0 收藏 0 评论 0

腾讯WeTest 发布了文章 · 8月20日

QNET:APP弱网络测试专家

背景

  目前在测试移动设备上进行弱网络专项测试的方案主要有两种:

1. 通过Android设备连接到PC上进行弱网络测试,比如Fiddler,Charles,NET-Simulator等。基本思路是在PC上装一个Fiddler网络抓包工具,然后再将Android设备的网络代理到PC上,通过在PC上的Fiddler在设置延时来进行弱网络模拟。

2. 在专有服务器上构建弱网络Wi-Fi,移动设备连接该Wi-Fi进行弱网络测试,相关的技术方案有Facebook的ATC和腾讯的WeTest-WiFi。

  以上两种方法都能够实现移动设备的弱网专项测试,也已经是比较成熟的方案,但都存在以下几点缺点:

1. 需要额外的PC或者服务器,弱网环境构建成本高;

2. 需要安装、部署额外的工具,并且弱网络环境需要在PC上或者Web上进行配置,使用成本高;

3. 弱网络环境功能并不完善,比如Fiddler不支持丢包、抖动等弱网环境;

  为了更好的满足开发者对于弱网测试的需求,腾讯WeTest推出了一款针对移动应用的弱网测试工具QNET,解决了在Android设备上进行弱网络专项测试的痛点,QNET无需ROOT手机,无需连接数据线,以独立app的方式,为用户提供给快捷、可靠、功能完善的弱网络模拟服务。

QNET还能提供TCP/UDP网络协议抓包功能,帮助开发和测试人员进行网络流量分析,而不需要ROOT手机,使用tcpdump进行抓包。

扫描上方二维码即可下载QNET

QNET使用指南

登录

QNET支持手Q账号或者腾讯员工的TAPD账号登陆,如果使用QQ账号首次登陆,需要注册WeTest平台账号,即可成功登陆。

选择测试APP

成功登陆后,点击【点击选择测试程序】按钮,选择待测试的弱网工具,然后点击下方的【开始测试】按钮,第一次启动的时候需要对悬浮窗权限进行授权,部分机型会弹出开启VPN服务的确认框,点击确认。

弱网模板

QNET支持系统预设模板和用户自定义模板,预设模板包含了常见的2G/3G/4G网络模板,还有弱网测试中比较常用的100%丢包模板等,预设模板不支持编辑,可以删除;

  另外,QNET支持用户根据自己的测试需求自定义弱网参数模板,有比较好的灵活性。

悬浮窗

  开始测试后,QNET会自动拉起待测试程序,然后默认会显示弱网模板控制悬浮窗,以及弱网模板信息悬浮窗。

● 左边悬浮窗是控制悬浮窗,可以下拉即时切换弱网模板,双击Q按钮可以切回QNET应用,点击暂停按钮可以停止弱网状态恢复正常网络;

● 右侧悬浮窗显示当前的模板名,实时延迟,实时网速,以及当前模板的具体参数。

注:QNET支持动态探测当前网络和远端服务器的延迟,然后动态适配用户设置的上下行延迟,保证真实网络延迟和用户设置的尽量一致。

弱网参数

QNET目前支持的弱网参数包括:

上下行延时(Delay)

上下行延时抖动(Jitter)

上下行带宽(Bandwidth)

上下行随机丢包(Random Packet Loss)

上下行连续丢包(Continuous Packet Loss)

TCP/UDP协议控制(Protocol)

  如下是一个控制延迟和延迟抖动的示意图:

  连续丢包可以实现周期性断网的弱网场景,常用在测试游戏流畅性,验证游戏对网络波动的支持程度。

TCP/UDP协议控制(Protocol)支持针对协议的弱网控制,比如我们可以控制UDP协议100%丢包,来测试某些不支持UDP协议的运营商的弱网场景。

网络抓包

QNET还支持网络抓包,导出为Pcap文件,可以在PC上用Wireshark工具打开分析,目前支持TCP, UDP, DNS协议,如下图是一个抓包示例:

  使用网络抓包功能需要开启开关:

查看原文

赞 0 收藏 0 评论 0

认证与成就

  • 获得 109 次点赞
  • 获得 2 枚徽章 获得 0 枚金徽章, 获得 0 枚银徽章, 获得 2 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2017-05-16
个人主页被 1.9k 人浏览