测试工具腾讯质量开放平台WeTest调研与实践
Posted 非功能之路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了测试工具腾讯质量开放平台WeTest调研与实践相关的知识,希望对你有一定的参考价值。
1 引言
随着互联网市场逐渐成熟和云计算的不断发展与深入,越来越多的知名软件厂商在关注内部软件质量测试的同时,把战略视野拓展至对外提供质量测试服务,聚焦于测试服务的整合、云平台化、专业化。作为从事测试工作的一线人员在做好一只辛勤的测试小蜜蜂的同时,还应时刻提醒自己----避免成为大浪淘沙时代下的一只无辜的井底之蛙。测试开发,开发测试应时刻保持对行业咨讯的敏感性,对测试前沿技术发展的高瞻远瞩的眼界。
本文以腾讯质量开放平台WeTest为契机,调研了该平台为外部客户提供的质量测试服务,并从非功能测试的角度着重实践试用了“标准兼容性测试”、“客户端性能测试”、“服务端性能测试”等相关测试服务功能,总结了该平台的亮点及其局限性。
2 整体介绍
腾讯质量开放平台WeTest起源于腾讯游戏,是由其精英团队沉淀十年的游戏质量测试经验,积累和整合各类测试方法和测试工具后,由腾讯官方推出的一站式游戏、应用测试平台。对外主要提供兼容测试、性能测试、云真机、安全测试、舆情监控、ios预审等全方位专业服务。
3 功能试用
由于带着明显的手游行业特征,在正式试用WeTest功能之前,先澄清几个跟手游相关的概念,因为这几个概念在之后的测试工具和测试关注指标中有提及。
FPS: 是指画面每秒传输帧数,也可以理解为我们常说的“刷新率(单位为Hz)”,例如我们常在CS游戏里说的“FPS值”。FPS是测量用于保存、显示动态视频的信息数量。每秒钟帧数愈多,所显示的动作就会愈流畅。
Unity3D:是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。
手机碎片化:通俗的讲亦是指整个手机平台的差异化越来越大:设备繁多,品牌众多,版本各异,分辨率不统一等等。在这个背景概念下,与我们平常理解的内存和磁盘碎片不是一个概念。
2
3
3.1 兼容性测试
我们都知道,当前手机特别是android碎片化严重,每一款APP在上线之前,都会做一轮覆盖一定机型量的兼容性测试方可对真实客户发布。 WeTest在云端部署了千台各种类型的真机,针对如下的8类主流兼容性问题提供兼容性测试服务。WeTest对外提供的兼容性测试分为“通用兼容性测试”及“专家兼容性测试”。专家兼容测试需要预约,支持人工测试。
兼容测试的主要执行步骤:被测安装包中集成WeTestSDK(可选,如不需要深度兼容性测试可跳过)、准备测试脚本(可选,支持GAutomator/QTA)、进入自动化兼容测试页,上传安装包和脚本(可选)并选择测试机型、开始测试。
标准兼容性测试的试用过程:
第一步:兼容性测试是我试用WeTest的第一个测试服务。首先需要注册成WeTest用户并进行认证,方可获取其免费赠送的一定额度的测试服务。注册可使用QQ或者weixin或者手机号,认证分为个人认证和企业认证。企业认证获取的赠送服务和额度会比个人更多些。我认证后获取如下图赠送服务。
第二步:准备待测试apk包,随便找了个软件,从Keep官方网站下载的android安装包。
第三步:选择兼容测试-标准兼容性测试后,进入如下界面。如果不涉及自定义脚本的上传,操作非常简单,上传apk包,选机型,开始测试。WeTest会根据您的机型选择,通过云端的压力机模拟测试机器人在云真机中执行你刚刚提交的测试任务。
第四步:等待测试报告的时间较长,大概需要1-4小时,我的这个案例中用了3个小时。其中还有三类机型未执行测试,猜测是由于选定机型被别人占用了,在规定时间内一直抢用不到资源。在漫长的测试等待过程中,可以去我的报告中查看执行情况,如下图。貌似测试结束前不能够实时监控测试执行详情。
第五步:测试完成后,会微信或者邮箱通知,同时会扣除您账户信息中的测试服务额度。在我的测试报告中查看测试报告详情结果。如下图。一个典型的兼容性测试报告包括如下内容:测试结论、性能报告、设备分布。同时提供下载报告格式为excel。
本案例中Keep适配测试结果为良好, 申请4部机型有3部未得到资源进行测试,终端设备4台,使用机器人模拟了5万虚拟用户。性能报告包括了安装、启动耗时图,CPU,内存,流量消耗图,FPS。同时可以查看某个具体手机设备上的截图,日志(排查问题时使用),性能数据。
从测试报告以及截图上推测,WeTest的标准兼容性测试背后的实现过程大致如下:
通过调用AndroidSDK提供的接口,WeTest使用测试机器人在不同手机上进行包括“安装、启动、自动化功能遍历、退出、卸载”等一系列操作,来查看应用的功能、逻辑是否正常,完整。
其中功能遍历通过Monkey随机点击实现,从Keep的截图来看如果不编写自定义脚本覆盖不全每一个功能场景,因为Keep有相当多的功能需要登录后才能够使用,这个测试报告的截图中只有不需要登录的有限的几张截图。因此要想做深入的兼容化测试还是离不开测试脚本的开发。
3.2 性能测试
WeTest平台目前支持的性能测试分为两大类:客户端(移动应用)性能测试、服务器性能测试。
1)客户端性能测试
客户端性能测试腾讯提供了WeTest手机助手,用户可以将其安装在自己的本地手机中,边玩游戏边进行本地测试。这一过程更像是本地人工进行功能测试,测试完成生成测试性能报告。用户也可以通过WeTest手机助手(或云真机-云端性能测试)进行云端客户端多机联测的性能测试。
针对手游,腾讯WeTest和Unity官方联手打造的客户端性能优化工具UPA,其支持3种测试模式,分别是:深度性能测试、资源分析测试、Mono内存测试。
客户端的性能监控和分析:实现原理是利用AndroidSDK提供的接口,云测试平台可以检测移动app的耗电量,CPU等资源占用率,使用的流量等信息。针对手游腾讯提供了包括更多更准确的性能指标和信息的UPA性能报告,如帧率相关-CPU耗时和GPU耗时,内存相关-游戏逻辑内存和资源内存等。
由于客户端性能测试的试用过程跟兼容性比较类似:上传apk包,选机型,开始测试,查看报告。所以本章节不再展开描述。
2)服务器性能测试
腾讯WeTest服务器性能测试由产品“压测大师”提供支撑,通过创建虚拟机器人模拟多用户的并发场景对服务器进行压测。跟我们通常的服务器性能测试一样,压测大师在测试执行中可实时对被测服务器进行资源监控,完成后生成测试报告。但压测大师目前对公众只开放了三种类型的服务器性能测试:URL测试、页面测试,微信广告、协作模式(暂未对外开放)。另外腾讯也提供了自己的内存泄露检测TMM工具,但只支持C/C++。
服务器性能测试的试用过程:
第一步. 从“性能测试--服务器性能测试”进入页面后,如果第一次使用,需要先“创建新项目”,进入项目后,点击“创建测试”, 选择“URL测试”。
第二步. 进入编辑测试用例页面,会看到如下页面, 在这个页面中我们可以设置:
压力配置:为了节省腾讯WeTest送的免费资源,图中示例起始人数1人,每隔30秒增加1人,加到2人为上限。
2)设置客户端URL请求和测试模型。 图中示例新增了两个baidu和qq的URL请求,测试模型尝试了上下文和单场景。填写Header信息和上下文变量,检查点及参数配置可以满足更高要求的测试场景如从上一个请求中获取结果作为下一个请求的输入。
3) 设置服务器监控:准备监测服务器并部署腾讯监控工具,由于WeTest是依赖于腾讯公有云平台对外提供服务。因为安全涉密要求,我们没有现成的可以通过外网访问的服务器。但是也没有关系,腾讯云来帮忙。注册成为腾讯云用户并认证,获取了一个可以使用7天的1C1G的虚拟服务器。然后通过”压测大师“的”资源管理-服务器管理“,将腾讯的资源监控工具安装至该服务器的/root/test/datacollect目录下。部署成功后再在编辑测试用例页面将服务器监控添加上。
注:理论上URL客户端请求与服务器监控应一致,图中示例虽然不关联但对试用压测大师的完整功能已经足够。
4) 其它设置如测试指标和通知方式等
第三步:选择“保存设置”后‘立即执行’这个测试,界面上会弹出确认消费页面,确认后该测试任务会马上进入排队系统,等压力源系统内有空闲资源后开始执行测试。
在测试执行过程中,可以实时监控测试数据。 这一点与前面的兼容性测试、客户端性能测试有区别,他们均是不可以实时看测试数据。
测试完成后可以我的报告中看到每次的测试结果并提供测试报告的下载。服务器性能测试报告的格式为PDF。其中包括了问题及建议、概况、事务数据,服务器性能,测试配置,压力机性能。点击每一个TAB页可以看到更详细的测试指标数据。
3)性能测试小结
我们不难看出,腾讯WeTest提供的性能测试,是一个从客户端到服务端的全链路解决方案。其包括了:云真机、客户端性能分析(通用)、客户端性能分析UPA,客户端性能监控APM,服务器性能测试(URL测试,页面测试,游戏协作模式测试等,服务器性能监控),测试报告生成与下载。
3.3 云真机
腾讯WeTest在云端部署了上千台的真机(物理机房貌似在腾讯大连子公司),这些真机覆盖了主流机型(但是个人认证用户能够使用到的还是以Android手机为主)。主流机型排名是根据腾讯大数据分析获取。每月进行机型采购,保持机型库中的TOP100机型全都是当下的最热机型。
有了云真机这些资源,WeTest才能够对外提供真机远程调试,云端客户端性能测试,弱网络测试,耗电量测试等。云真机的实现原理我理解大致如下:
1. 真机放在机房,通过USB物理连接服务器。
2. 服务器通过AndroidADB工具进行操控手机。
3. 用户远程操作手机的背后,实际是通过操控服务器(腾讯背后应该使用了远程控制软件来实现,但其对用户已经是透明的),服务器再通过ADB操作手机,并通过远程桌面显示技术将手机屏幕同步显示在用户的PC电脑上。
3.4 自动化测试
测试行业发展至今,为节省人力资源成本,越来越多的人工测试工作均有向自动化测试转化的态势。腾讯WeTest在这一方面也有支持:客户端的GAutomator和服务器端的压测大师的协作模式。
1) GAutomator
针对基于Unity的游戏,腾讯提供了GAutomator自动化测试框架。 GAutomator的设计理念、使用方式、功能都类似于UIAutomator、Robotium。用户利用框架可以编写脚本,完成如Unity深入兼容测试、回归测试、性能测试、指定测试场景等的自动化测试。
2)压测大师-协作模式
虽然协作模式暂时未对外开放无法试用,但其在腾讯内部多个游戏已经使用。根据《压测大师之协作模式指导手册》说明,其主要协作步骤大致如下:
第一步:下载开发包:选择“项目”-“资产管理”-“资源包管理”-“下载协作模式资源包”
第二步:开发场景DEMO:场景DEMO不依赖于协作模式平台,可以独立调试和直接编译运行,后面作为平台机器人开发的参考依据。这一步应该与我们平常的编写压测脚本类似。只不过需要遵循腾讯协作模式的开发规范和标准。
第三步:接入平台:1、robot根据设计的场景DEMO接入平台机器人 2、 robotMgr实现机器人的初始化 3、编译后可以直接产生机器人可执行文件。
第四步:执行测试:云端拉起用户自行开发的独立机器人,收集和统计关键性能数据。
腾讯提供的协作模式根据开发与测试的合作深入程度分为三类:
3)压测大师-持续集成
严格意义来说,虽然持续集成不属于测试自动化框架,但基于其集成的也是一次开发反复执行的自动任务脚本等特点,暂归到该章节一并讨论。腾讯压测大师提供了4个CI接口,用户可以根据需要将压测大师加入到项目的持续集成流程中去。
1. 单次测试:执行一次测试,并邮件通知。
2. 查看单次测试报告:调用成功后,即可在测试报告列表页“单个测试报告”中查看相关报告。
3. 批量测试:执行批量测试,并邮件通知
4. 查看批量测试报告:调用成功后,即可在测试报告列表页“批量测试报告”中查看相关报告。
3.5 安全测试
在安全测试方面,WeTest使用的是腾讯金刚审计系统,支持常用安卓漏洞扫描,本地拒绝服务,webview代码执行,https隐私窃取,私有文件泄露等等方面保障产品安全。同时针对手游提供了游戏业务安全漏洞、游戏外挂危害与外挂等。APP安全扫描无需提供源代码,上传安装包即可,耗时1-3小时。
安全测试个人认证账号无免费额度可以试用。
3.6 其它服务
WeTest还提供一些其它服务,如iOS预审扫描工具、舆情分析-产品风讯、舆情分析-行业风讯等功能。
在用户手册方面,WeTest提供了平台中各个支撑工具下载链接、完整的用户手册及学习资料。甚至还通过腾讯云平台提供了用户学习的各类真实的上机操作的开发实验室。
在管理支持方面,WeTest的订单、支付、消费明细查询,账户余额查询也一一俱全。
4 WeTest与UTest
在调研和试用WeTest的过程中,发现腾讯还有一个叫做UTest优测(名字也取得很有意思)的移动云测试平台。非常好奇腾讯为啥要研发两个功能重叠度这么高的兄弟产品内部竞争。于是顺带去研究了下,发现UTest是一个由腾讯100%控股的世纪鲲鹏的大连子公司开发的,其官方网址是utest.21kunpeng.com, 而WeTest的官方网址是wetest.qq.com。从官方网址来看,WeTest似乎跟腾讯亲爹更亲近些。
腾讯UTest官方网站的是这样介绍优测的,为应用、游戏、H5混合应用的研发团队提供产品质量检测与问题解决服务。其与WeTest对外提供的功能有相当部分的重叠,简单作了下比较,两者都是云测试服务平台,都有千台级别的云真机,都支持兼容测试,性能测试,安全测试、专家测试服务等等。其区别我个人理解主要如下几点:
1. UTest服务的范围包括移动应用,手游,H5, 而WeTest虽然也可以支持应用测试,但更关注更专业的是手游。
2. 在自动化测试脚本方面,UTest有自主研发的XTestAPP测试框架,而WeTest有为unity定制的GAutomator,压测大师-协作模式。
3. 在持续集成方面,压测大师有CI接口,UTest没有看到。
5 总结
最后,简单总结下腾讯WeTest亮点和限制,以及支持整个WeTest平台的测试工具。
亮点一.整合了腾讯测试领域的众多测试方法和工具,借助于腾讯云将质量测试作为服务整体对外输出。每个工具既是一个独立的商用工具,也可集成在整个WeTest体系中对外提供服务。
亮点二:除了传统意义上的计算存储网络等服务器资源的云平台化,腾讯将上千台的真实手机也进行了资源共享,云真机的引入实机了手机硬件资源的共享和节约化。远程真机调试还将测试服务前延至开发阶段,测试开发,开发测试真正做到了一体化。
亮点三:所谓术业有专攻,WeTest起源于腾讯手游,其平台提供手游的测试服务也是非常专业的:UPA性能测试分析工具、耗电量测试、弱网测试、兼容测试,iOS审查评估,手游防外挂,舆情分析等。
亮点四:腾讯对自动化测试的支持也有不少成果,从客户端到服务端提供多款自动化测试框架工具,有WeTest的GAutomator和压测大师协作模式,也有UTest的XTest工具。
限制一:测试报告等待时间较长1-4小时,经常出现选定机型无法测试的结果。
限制二:也许是由于苹果SDK开放程度没有Android自由,普遍对iOS的支持有限。
限制三:行业应用更专注于手游,既是其长处也是其短板,对其他行业的应用不够宽广。
限制四:服务器压测目前对外只支持HTTP协议,没有发现支持MQ协议、Tuxedo协议、数据库等其它压测场景的支持。
限制五:自动化测试的脚本支持目前只限制在腾讯提供的GAutomator、XTest、压测机器人,对第三方的自动化测试框架如Appium等支持不足,也没有看到如支持JMeter脚本的说明。猜测也许机器人可以调起JMeter脚本对服务器发压?但是无从考证,大概率是不可以的。
限制六:下载的测试报告没有在WeTest平台直接看到的测试报告完整,比如兼容性测试报告EXCEL版本无图形展示。
限制七:被压测服务器需要能够访问外网。
WeTest平台涉及到的腾讯测试工具小结:
云真机、Monkey、GAutomator、XTest(这个是UTest的)、UPA、Wetest手机助手、 CUBE手机助手、压测大师LM、金刚系统、WeTestSDK等。
其实,放眼整个测试行业领域, 除了腾讯国内外市场上还有很多表现出色的云测试服务平台,如亚马逊的AWSDevice Farm、云测的Testin、阿里的MQC、百度的MTC等等也都各有千秋。由于篇辐关系,不在本文的讨论范围之内。有兴趣的朋友可以参照其各自的官方网站研究和学习。
以上WeTest均是我个人理解,所涉内容难免有理解偏颇的地方,欢迎大家斧正。
以上是关于测试工具腾讯质量开放平台WeTest调研与实践的主要内容,如果未能解决你的问题,请参考以下文章
腾讯WeTest《2017中国移动游戏质量白皮书》开放预约,再为国内手游把把脉