本文转载自:腾讯专栏——《手游与App测试的四大区别》
随着智能设备的普及和移动互联网的兴起,各家互联网巨头纷纷向移动终端布局和转型。与此同时,新兴的移动互联网公司也在盯着这个市场,希望能分一杯羹。在这种环境下,互联网的重心逐渐从Web转移到了移动端,移动端的软件测试变得越来越重要。
手机游戏是手机软件的很大一部分。从下图可以看出,智能手机的普及与手游玩家的增长息息相关:
在加入鹅厂之前,笔者曾从事移动应用的测试和开发工作。一年前加入鹅厂后,转投手游测试。通过探索和实践,我发现两者基于相同的测试理论,具有非常不同的测试场景和测试需求。下面为大家梳理一下基础部分,涵盖了两者在手动和自动测试上的区别,希望对想从APP测试转手游测试的朋友有所帮助。
1 APP自动化测试与手游自动化测试完全不同
移动应用程序和移动游戏的开发技术不同,导致两者的自动化测试技术不同。
以开发为例,移动应用程序一般使用SDK开发,用Java编写。通过提供的服务,我们可以获取App当前窗口的视图信息,然后找到并操作按钮等控件,完成自动化测试,如。这个过程是标准化的,技术上不难,所以每个公司的每个应用程序的自动化测试方法都是相似的。
但手机游戏开发并非如此。手游一般都是用引擎开发的,现在大名鼎鼎的游合。两者都是使用引擎附带的语言开发的。主流的是C++和C#。虽然在开发过程中有按钮和其他控件的概念,但是在运行时被引擎渲染后就变成了简单的画面。:
图:你在游戏中看到的只是简单的画面,按钮不再是控件
因此,我们无法通过内置服务找到游戏中的按钮,也无法进行常规的自动化测试。
如果有人说他们的技术是基于原生控件识别的,那他们肯定做不了手游的自动化测试。每个人都在探索解决这个问题的方法。我们现在采用将引擎SDK注入安装包的方式,体现引擎层控件进行自动化测试,在实践中取得了不错的效果。
2 不同的玩法导致更复杂的功能测试2.1 随机性
游戏的场景和过程是动态的,并伴随着随机元素,体现在两点上。
1.如果你反复玩一个游戏关卡,很可能敌人会出现两次,游戏玩法会有所不同。
2.你玩的时候不操作手游,敌人和周围的场景也一直在变化。
这两点给自动化测试带来了很大的挑战。如果测试脚本编写不灵活,很容易导致上次运行成功的脚本这次运行失败。我们需要在测试脚本中适当添加探索和适配功能。
应用测试不存在这个问题,大多数应用都是以静态和可重复的方式使用的。因此,自动化测试可以像测试脚本一样编写和执行。
2.2 探索
手机游戏和应用程序之间的第二个区别是探索。应用程序一般都是功能性的,一个好的应用程序需要简单明了地告诉用户它的功能。游戏以娱乐为主,需要给玩家一定的探索元素。因此,我们在做手游测试时,需要测试游戏的用户帮助说明是否清晰,后续的游玩探索过程与上面给出的说明是否有合理的联系,规则的说明是否有足够的暗示性。
2.3 难度测试
应用希望做的越简单,用户的使用成本越低越好。手游有难度设置。我们在做手游功能测试的时候,会把资源和关卡调到最大,方便后面功能的执行,但是当所有的功能测试完成后,我们需要初始化我们的资源,让资源“回归”到一个普通的玩家的等级,通过普通玩家的视角来检验游戏难度增加是否合理,资源分配是否均匀。
2.4 级测试
应用程序的使用是功能性的,重复使用一个功能总是一样的。手游有关卡的概念。即使在同一个游戏中,关卡和关卡之间也存在着细微的差别。前一级别的测试是正确的,但并不意味着后一级别一定是正确的。笔者曾经在一款手游中遇到过bug。当游戏到了某个后期,游戏肯定会崩溃。这个bug的原因也很简单:客户端打包的时候没有添加这个级别的图片资源。所以当我们玩上一个关卡时不会触发这个错误,但是一旦我们进入下一个关卡,它就会出错。
这种bug的原因虽然很简单,但是测试起来真的是非常的难。因为每个关卡的玩法都是一样的,但是一个游戏的关卡数量非常多。如果要遍历所有层级,人工成本会非常大。对于这种重复级别的测试,建议使用自动化脚本进行遍历。
2.5 PvP 测试
应用程序的使用一般是单人游戏,而手游往往有玩家竞争的PvP模式,而好的手游有实时PvP模式。由于两个玩家正在实时合作或互相对抗,因此测试网络延迟变得至关重要。在测试中手机游戏性能测试,我们需要模拟不同网络对游戏延迟的影响,观察两个玩家的状态和数据是否一致,体验网络延迟对游戏手感的影响,这在传统App中是完全没有必要的测试。
3 手游测试更注重商业测试3.1 支付测试
现在的移动应用基本上都是靠广告收入,不直接向用户收费。手游的直接消费群体是玩家,在游戏过程中伴随着大量的支付操作。由于这种类型的操作与玩家的钱息息相关,所以支付类型测试应该是任何游戏中最高优先级的保证。
我们需要确保玩家的支付操作在各种严格的情况下正确执行或正确通知失败。例如,当网络状况很差时,用户在支付界面上的多次确认操作只能执行一次。当用户在支付过程中断网未收到货时,游戏需要在玩家网络恢复后立即补货,并做出明显提示。此外,支付操作需要在大量不同系统、不同型号的手机上进行适配,以减少出错的可能性。
3.2 安全测试
对于大多数非支付类应用来说,安全并不是特别大的问题,只要保证登录认证的安全即可。该应用程序是一个用户友好的工具,没有人在使用他们的计算器应用程序时会锁定内存或将加法运算转换为乘法运算。
手机游戏在这方面有很大不同。手游和玩家在某种程度上具有“对抗”的元素。玩家必须通关游戏关卡才能获得奖励,游戏关卡必须设置一定的难度来阻止玩家。如果游戏外挂猖獗,玩家无需任何对抗就能获胜。一方面会影响游戏的平衡性,使部分玩家的资源大大超过其他玩家;另一方面,从长远来看,游戏会发生变化。这很无聊,导致玩家离开。
游戏安全测试的常用方法是通过锁定/修改内存来锁定和修改游戏资源,通过修改游戏内存改变游戏逻辑简化游戏流程等等。
3.3 盈利能力测试
一般的手机游戏应用程序没有付费用户的概念,所有用户使用相同的功能。即使有付费用户,他们和普通用户的区别也很明显:付费用户可以使用一些额外的功能。手机游戏的付费用户和非付费用户之间的界限并不那么清晰。手游按照用户付费的多少分为非R用户、小R用户、大R用户等。我们需要在规划时计算这些付费用户的投资和回报,并在测试过程中进行验证。举两个例子,如果大R用户获得的奖励在短时间内非R用户可以得到,那么大R用户肯定是不满意的,这个收费项目的设置是不合理的;如果两个购买项目的金额相同,
4 不同的背景表现
虽然我们这里讨论的是APP和手游主要是前端客户端,但其实两者的后端表现也是不一样的。与普通APP相比,手游的在线用户数量明显更规律、更集中。一般中午12:00和晚上8:00有两个明显的高峰。因此,手游的性能测试应该适合这个用户模型手机游戏性能测试,并且能够处理极端条件下的服务器性能负载。当然,两者都会受到假期的极大影响,对于应用程序和手游来说也是如此。
让我们谈谈相似之处
除了上面提到的手游测试和app测试的区别之外,其实两者还有很多相似之处,测试的时候不能忘记,比如手机通话和短信的中断测试,以及碎片化的兼容性测试(尤其是),客户端运行在手机上的性能测试,网络差或频繁切换网络的弱网测试,用户体验和UI测试等。
更多测试干货请到:/lab
还没有评论,来说两句吧...