游戏异常测试思路和常见测试点

发表于:2023-10-23 09:50

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:小小的太阳~    来源:CSDN

  1.游戏异常测试背景和目的
  1.1背景
  游戏本身具有一种玩具的属性,游戏测试除了基础功能和业务逻辑要求的玩法以外,更偏注重的是可玩性和用户体验,对局公平性和平衡性。
  而且游戏上下文关联性比较强,往往其中某一个环节出现异常问题,后面就没法继续玩了,或者影响游戏的公平性。
  游戏的实时性很强,进程往往是不可逆的,即使什么也不做,系统和服务也在向前进行,现实生活中打扑克多抓一张牌可以放回牌堆,但游戏中如果多抓一张牌,本局游戏就失去公平性或者无法进行了。
  又或者多人协作 / 竞技的游戏,是玩家和玩家在交互,变化性很强,行为是不可控的,玩家经常会做一些意想不到的操作,所以出现异常的几率也会大一些。
  游戏玩家热衷于寻找bug,并利用bug,突破游戏瓶颈,打破游戏公平,获得非法利益。
  所以出现异常的bug以后,bug对游戏玩法、平衡性、乃至整个系统,影响都是比较大的。
  1.2手段和目的
  【失败性测试】、【破坏性测试】、【边界case】,人为的制造错误事件,不按套路出牌,违反需求规定,等等。
  目的:检验软件 / 游戏的【稳定能力】、【容错能力】、【故障恢复能力】,对错误事件和异常情况下的处理,暴露更多的bug,提升稳定性。
  例如:无网状态点击进入游戏是否有正确反馈/引导提示。
  例如:等级系统有30级,每次升级可领礼包,当满级后,再次获得经验值,是否会无限次触发升级礼包?
  例如:吃鸡游戏剩最后两个人时,放置一个手雷,两人距手雷距离相同,当手雷爆炸后两人死亡,算谁赢?还是服务器会宕机?
  2.基础功能相关
  2.1热更新 / 强更
  增量热更:常见的更新手段,从上一个版本,更新到最新版本,1.2.3更到1.2.4, 可能导致:更新后无法进入。
  全量更新:清数据或重装包,从1.0.0更到最新版本,每次发版必须要测试全量更新 可能导致:更新后老用户能进,新用户无法进入。
  断点续传:更新过程中断网、杀端,恢复后继续下载 可能导致:资源不完整,无法进入游戏。
  弱网更新:验证弱网环境下资源更新的完整性 可能导致:资源不完整,无法进入游戏。
  版本兼容:新版本改变了地图中一把椅子的位置 可能导致:新版本A玩家在椅子上坐下休息时,老版本B玩家看A坐在地上。
  2.2停服热更 / 不停服热更
  停服更新:停服前的玩家处理,通常正在游戏中的玩家,等待游戏结束,游戏外的玩家,禁止进入游戏 (停服公告) 需要注意:开服后的高并发问题。
  不停服更新:灰度发布,流量转移。
  2.3强更
  强制更新:比如金融问题,游戏平衡问题,重大bug,以及无法和老版本兼容,选择使用强更。
  3.业务相关异常case
  根据游戏类型和实际情况而定,常见分类:视觉,功能,声音,物理。
  3.1视觉类:
  显示穿透导致的露点问题 例如:一个人拿着枪靠着一个关闭的门,他的枪穿过了门。
  多个面共面时,出现重叠或者不应该出现的遮挡问题 例如:画面出现闪动。
  画面显示异常,如闪动、闪烁、黑边、花屏等问题。
  特效效果不正确或者没有出现等问题 例如:麻将天胡特效播成了7小对。
  物体的视觉反现实 例如:树长在房子上,树的光影不正确。
  物体出现在不合理的位置 例如:鱼在陆地上游。
  物体大小与实际不符 例如:人比房子大。
  角色姿态异常或者动作失真等问题 例如:老人走路跟年轻人一样,进球后球员的庆祝动作异常。
  物体间发生物理碰撞时,卡住,卡出屏幕等 例如:一辆车撞墙后,车头卡在墙内。
  拖屏,GPU不能在足够快的时间里把一个帧画出来 例如:操作摇杆,角色移动存在明显滞后。
  贴图缺失,只显示了占位图,没有正确加载资源, 例如:环境切换到夜晚时,月亮资源丢失导致。
  3.2功能类:
  1. 地图漏洞,一旦进入,整个画面都没有了,穿越火线可以在漏洞里向其它玩家攻击,影响游戏公平。
  2. 角色卡在某一处地点无法移动,物理运算导致的无法移动,方法是走遍地图的每个角落。
  3. 狼人杀游戏,死亡后的玩家断线重连,或退出重新加入原房间后,可以语音交流,暴露对手,影响游戏公平。
  4. 语音游戏,在A房间正在游戏,通过分享连接加入B房间,导致同时可以拉取AB两个房间语音流。
  5. 在特定情况下,玩家可以无限次重复完成某个任务,获取无限的奖励。
  6. 服务判断等级=2时,领取任务B,玩家直接跨级升到3,导致没有领到2礼包。
  7. 释放持续性技能同时释放金身,技能是否还具有伤害。
  8. 游戏对局中,一方全部强制退出游戏,是否会触发游戏结束。
  9. 对局游戏,服务没有设置最大对局时长,导致对局永远不解散。
  10. 重要操作没有二次确认,导致玩家误操作,影响游戏体验。
  11. 手机核平板互通的游戏中,平板比手机视野大,导致游戏不公平。
  3.3声音类:
  1. 音效丢失,该播的声音没有播出来。
  2. 音效使用错误。
  3. 触发多个音效同时播放,重叠错乱。
  4. 音效重复循环,该停止的时候没有停止,一直循环播放。
  5. 音效中断,播放bgm和音效时,来电话闹钟等系统声音,导致bgm消失。
  6. 音量太低或者太高。
  7. 后台是否还在继续播放音乐音效,通常后台停止播放媒体声音,但播放通话声音。
  3.4物理类
  物体穿透:在高速运动和快速旋转的情况下,物体可能会穿透其他物体, 例如:子弹穿墙。
  物体卡住:当一个物体和另一个物体接触时,可能会卡住或被卡住, 例如:角色踩到一个缝隙,导致卡脚。
  碰撞体检测错误:当对象的碰撞体设置不正确时,可能导致碰撞检测错误 例如:上面说的人和枪漏点的问题,一个玩家移动会将另一个不动的玩家挤走。
  摩擦力异常:物体的摩擦系数设置不正确,可能会在地图上滑动或旋转 例如:比如人无法走上斜坡,滑冰游戏过快或过慢。
  物体反弹异常:物体的反弹系数设置不正确,可能导致物体在碰撞后反弹过度或不足 例如:台球游戏,撞球和撞库后反弹效果差。
  物体重量异常:物体的重量设置不正确,可能会导致物体移动或旋转速度不正确 例如:足球重量过重很难移动,重量过轻很容易。
  物体旋转异常:当一个物体旋转时,可能会遇到旋转方向不正确或旋转速度异常等问题 例如:赛车游戏,轮子旋转方向与车的行驶方向不一致。
  物体移动异常:当一个物体移动时,可能会遇到移动方向不正确或移动速度异常等问题 例如:左右移动角色没有转身,人走路和跑步的速度不合适。
  cocos引擎常见的物理系数
  碰撞体形状:用于指定碰撞体的形状,包括圆形、盒子、多边形等。
  密度和质量:用于指定物体的密度和质量,影响到物体的重量和惯性。
  摩擦力和弹性:用于指定物体表面的摩擦系数和反弹系数,影响到物体的运动和碰撞反应。
  重力和线速度:用于指定物体受到的重力和线速度,影响到物体的运动轨迹和速度。
  碰撞事件:用于监听物体之间的碰撞事件,包括碰撞开始、持续和结束等。
  碰撞层和碰撞组:用于指定物体的碰撞层和碰撞组,影响到物体与其他物体的碰撞检测。
  空气阻力:用于指定物体受到的空气阻力,影响到物体在空气中的运动。
  物理引擎的精度和时间步长:用于指定物理引擎的计算精度和时间步长,影响到物理模拟的稳定性和准确性。
  3.5AI类:
  找AI方面的Bug比表面设计涉及的工作更细致。
  AI的行为是否符合预期、AI的响应时间、AI的难度水平等
  AI行为异常:确保AI在游戏中的行为符合预期,例如AI角色是否按照预定的策略进行行动,是否存在行动不连贯、随机或无效的情况。
  AI算法异常:验证AI算法的正确性和效率,确保其能够正确地执行各项任务,并在游戏中以合理的速度运行,不影响游戏的性能和用户体验。 例如:AI玩的比真人好,或者手牌只剩王炸,上家出一张2,AI选择出一张小王。
  AI与其他系统异常:测试AI与其他系统(例如玩家角色、环境等)的交互是否正确。例如,AI是否正确地响应玩家的指令,是否能够正确地感知游戏中的环境变化等。例如:AI正在和对方单挑,此时敌方队友来了,AI是否能变换决策。
  AI决策异常:测试AI在决策方面是否存在异常情况。例如,AI是否能够适应不同的游戏情况,是否能够正确地做出决策等。 例如:AI在面对敌人时,是否可以正确评估敌我实力,从而选择攻击/撤退。
  AI漏洞异常:需要测试游戏中的AI是否存在安全漏洞,例如是否能够被黑客攻击或者影响游戏的公平性等。例如:NPC能够被仇恨拉走。
  AI与玩家体验异常:需要关注AI对于玩家体验的影响。例如,AI的行为是否会让玩家感到枯燥乏味或者游戏体验不好,是否存在与游戏场景不协调的情况等,根本原因是设计很糟糕。
  AI在多人协作/竞技游戏中的异常:需要特别注意在多人协作/竞技游戏中,AI是否与其他玩家的角色行为相协调,是否会影响游戏的公平性等。
  4.稳定性
  捕获稳定性Bug需要测试人员更多的尝试,有一些是特定场景,特定操作下才会发生的。复现和定位也是一件比较麻烦的事情。
  崩溃 / 黑屏,马上捕捉任何可用的Debug信息。
  屏幕卡住 / 卡死,跟崩溃黑屏问题类似。
  加载不了场景,卡在某一个页面,无法前进 / 后退,一部分没有报错内容,只能不断排查复现。
  5.性能相关关注点
  性能Bug从某方面来说,是最容易找到却又最难修复的。
  5.1CPU
  挂机,什么也不干。
  切换场景,进进出出。
  游戏场景内一直玩。
  单元没问题后,多场景交叉集成测试。
  进入某场景后,什么也不做CPU就持续升高,可能是cpu空运算。
  某些行为发生后CPU过高,缩小范围精准排查,可能是循环计算cpu占用率增高。
  主要场景比竞品明显偏高。
  5.2内存
  ·主要场景进进出出
  · 游戏场景内一直玩
  · 要动画、动效、资源占用的单元测试
  在个人主页点击围观后进到游戏场景,在游戏场景继续打开别人主页去围观,循环打开个人主页和游戏场景,内存打满崩溃。
  动画播放后内存没有明显回落,虽然动画消失了,但内存仍在占用游戏中的im世界频道消息,好友消息通知,公告跑马灯,等没有正确销毁导致的内存泄露。
  5.3FPS
  · 场景切换
  · 游戏场景内一直玩
  · 主要动画、动效表现
  5.4启动加载时长
  · 启动app时长
  · 主要功能打开速度
  · 游戏场景初次加载
  · 游戏场景非初次加载
  · 更新资源时更新速度
  6.网络测试关注点
  6.1断线重连
  网络bug一定是服务器和客户端的连接性或带宽(上下行)相关,要想清晰有条理的设计断网测试的case,首先要弄清楚长连接心跳规则以及断开机制。
  例如:业务规定心跳每5秒发一次,5次无心跳T掉该客户端,那么断网超过20—25s,会断开长连接,结论:20s以内重连长连接可以恢复,25s以外重连需要重新建立长连接,所以客户端断网的测试用例需要设计在25s左右。
  对于无比赛竞技、无协作对战、等,以外的单机网络游戏,只需要设计统一网络处理机制,例如3次心跳内恢复连接走重连,3次心跳没回复直接清理到大厅等统一的场景,例如:捕鱼,老虎机对于实时交互性强的游戏戏,需要保持游戏内场景的游戏,只要统一重连到最新状态即可,例如:象棋,麻将对于实时性强且注重体验性的游戏,则需要多种机制才能丰富体验性,例如:王者荣耀。
  6.2断网重连的异常case
  断线通常验证重连后与服务器的连接性,A点断线到B点重连的转换以及数据状态进程恢复断线期间【数据】、【状态】、【进程】发生改变,足球游戏,断线前比分0:0,进球后重连,仍然显示0:0角色存活时断线,死亡后重连,角色仍然”活着“。角色在A点回城时断线,转移到B点重连,由于客户端没有处理和渲染新位置,导致角色还显示在A点准备阶段断线,游戏开局后重连,没有进入游戏,一直卡在准备中。
  游戏中断线,游戏结束后重连,一直卡在游戏里。
  6.3前后台切换
  后台回到前台,客户端通常有以下几种处理方式。
  直接强制socket断开再重连,相当于重进了游戏(罕见)。
  直接获取服务器最新的数据和状态,(比较常见)例如:象棋游戏。
  处理回到app时,前x秒的历史消息队列,按消息顺序处理(比较常见)。
  1. 切后台返回前台后,直接崩溃、黑屏、卡死
  2. 切后台返回前台后,bgm消失了
  3. 切后台期间游戏结束了,回到前台一直卡在游戏场景内
  4. 技能还有15s冷却时切后台,回到前台仍然是15s冷却时间
  5. 切后台期间,玩家在游戏中被其他玩家攻击导致生命值减少,回到前台后发现生命值仍然是满的
  6. 玩家点击B点寻路后切入后套,回到前台后,仍看到角色从A缓慢移动到B,实际应该追帧处理切后台期间堆积的消息,或者不需要追帧补帧的游戏直接将A强制刷新B即可
  6.4弱网测试
  弱网环境下游戏的常见表现是状态迟滞,请求超时。
  象棋步时还剩1秒时,操作移动棋子将对手绝杀,但服务收到请求消息时,已经超时,导致自己虽然看到绝杀对手,但最终自己输了。
  点击开枪,过1秒才播放开枪动画。
  拾起掉落物品超时,物品是否能显示正确。
  7.兼容性测试关注点
  7.1软件兼容
  ·主流软件的兼容,例如浏览器,微信分享/支付宝支付 可能导致:崩溃、返回后黑屏。
  · 软键盘兼容,系统自带键盘,常用三方键盘,横屏游戏键盘 可能导致:横屏键盘无法吊起。
  · 相机与文件:吊起相机,拍照上传,访问手机存储,大文件上传 可能导致:崩溃,游戏进程被干掉。
  · 不同的手机兼容,系统和版本兼容 可能导致:无法运行。
  · webview兼容。
  · 三方SDK兼容。
  7.2硬件兼容
  耳机、VR、手柄等等,暂不展开说明。
  X.其他异常关注点
  旋转屏幕:默认旋转方向,横/竖屏,竖屏锁定下的旋转,旋转设备屏幕跟随旋转。
  自动登录:是否需要自动登录,记录上次登录状态、启动后自动登录。
  屏幕常亮:是否需要开启屏幕常亮,开启屏幕常亮的场景。
  多点触控:是否需要开启多点触控,若业务不需要,建议直接关闭。
  连续点击:连点,快点,是否重复请求,重复打开页面,重复调用。
  按下松开:按钮事件是以按下还是松开为判断时机。
  点按长按:同一个按钮短触和长按有不同的效果。
  屏幕适配:大屏小屏、宽屏窄屏,平板。
  系统兼容:安卓/IOS 向下最低版本兼容,最新版本兼容。
  顶部导航:是否需要在游戏内展示顶部导航栏。
  物理返回:是否需要屏蔽安卓物理返回键,或监听返回事件弹窗确认是否退出。
  网络检测:流量提醒、弱网提醒、无网处理。
  权限获取:各种权限的获取目的和获取时机。
  应用分身:建议打包时禁用。
  应用分屏:分屏主要检查兼容性,UI展示是否正确,物理碰撞是否生效并且正确。
  低电模式:低电量模式下游戏表现。
  设备登录:同一个账号在不同设备上同时登录。
  游戏加速:部分手机有手游加速模式。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号