关注测试行业
专注测试技术

如何编写高效手游自动化测试脚本?

 

WeTest基于引擎的自动化测试,能够深入到游戏战斗内部进行适配和性能测试。在实际执行过程中,如何更简单、更高效地编写自动化脚本?本文重点阐述下面3个问题的解决方法:

  • 对于重度游戏,战斗中的操作比较复杂,如何让脚本更有效地比赛?
  • 针对复杂的新手引导,如何简单地写脚本?
  • 面对频繁的版本更新,怎样写脚本更好维护?

     

 

一、重度手游战斗场景如何写?

像下面两款手游,角色都是可以四处移动,遇到怪后进行攻击、释放技能。

此类游戏写脚本有两个问题需要解决:一是朝哪个方向移动、而不是原地打转;二是何时攻击。

对于加入WeTest SDK后的游戏包,脚本能够查找、和识别游戏中的所有元素对象。无论是cocos2dx游戏还是Unity3D游戏都能由path、或name对元素对象进行唯一标识。所以:

 

第一步:将战斗中关键元素对象的唯一标识(pathname)用录制工具获取。例如,移动按钮、攻击按钮、各种技能按钮、人物角色、怪物、箭头等。

 

第二步:移动方向确定。一般此类游戏中,大部分时间会有箭头方向指引。先计算人物与引导箭头之间的方向位移,然后将移动按钮按此方向位移进行Move。不存在箭头时,在预先设置好的8个方位中,随机一个方位进行移动。如果存在晋级通道,则直接朝晋级通道移动。虽然具有一定的随机,但整体上能使角色朝我们的目标方向移动。

 

第三步:何时攻击。当发现怪物时进行攻击。如果没有怪物,当每次移动后,则调用一次攻击的函数。

按此规则进行角色移动和攻击,直到比赛结束、或是超出预设定的比赛时间,则脚本终止比赛。

 

另外,如果不想写脚本控制角色移动,有一种更为简洁的方法:如果游戏中有自动战斗的按钮,则只需利用GM指令,将角色升级到一定等级后,直接点击自动战斗,则可以完成比赛。可以隔一定时间对游戏进行屏幕截图,查看是否有黑屏、布局、字体等方面的适配问题。

 

 

二、新手引导如何写?

一般新手引导的步骤比较多,有些游戏还必须要通关多层之后,新手引导才能结束。按照正常写脚本思路,一步一步写下去,会比较麻烦。在实际操作中,可以按照如下步骤:

第一步:判断是否进入新手引导。一般是判断新手引导的Layer层是否存在。

第二步:新手引导中的操作。如果存在指引小手、tips、悬浮框、确定取消之类的按钮,则点击。

第三步:新手引导结束判断。如果走到了新手引导的特定结束步骤、或是Layer层、或是超过预设定的新手引导时间,则新手引导脚本结束。

如此一来,可以通过简短的语句实现整个新手引导,而避免繁琐的逻辑过程。

 

 

三、怎样写脚本才能在多个版本之间通用?

如果写脚本时是按照游戏界面点击的顺序,则当版本更新,界面发生较大变化、点击顺序更改时,脚本的维护将会花费较大的人力。为了使脚本更通用些,可以采用遍历测试的思路:

第一步:构造行为树xml将登录完成后,游戏主流程需要遍历的结点用xml保存,也就是一棵行为树。每个节点就是需要点击的元素对象,例如按钮、tips等等,每个元素对象用name、或path唯一标识。节点与节点之间的层次关系,就是按钮需要点击的顺序。

 

第二步:脚本如何实现遍历。xml中,树上每一条路径都是关键路径。每当一个叶子结点被遍历到时,将其删除(包含父辈结点)同时进行一次20秒的随机测试。再返回到主界面,重新从树的根结点开始,进行深度遍历,即去访问一个叶子结点。直到行为树只剩一个根结点,则遍历测试结束。并且在某些特定层时,可以加入些特殊的操作,比如上下滑动、左右滑动、到比赛界面后执行战斗函数等。

 

第三步:版本更新后,脚本无需修改,就能运行。即使有些控件找不到,但也不影响脚本进行测试。如果想提高遍历的有效率,也只需修改xml文件,调整路径等。无需修改脚本。

 

对于刚开始接触写脚本时,可以将主要的测试场景写成测试case,例如普通战斗场景、1V1比赛、5V5比赛等,然后通过平台进行测试,查看测试成果。后续可逐步根据游戏特色、和深度需要编写有特色的遍历脚本。

 

 

转载请注明作者和出处:测试技术学习与分享 » 如何编写高效手游自动化测试脚本?
分享到: 更多 (0)

来捉虫

关注测试行业专注测试技术