游戏协议测试理论(游戏测试是什么)

转载:https://blog.csdn.net/SR0ad/article/details/8253126协议测试:针对通信协议进行的测试,是对常规测试的一种补充。重要性:实现一些常规测试中无法实现的流程,修改通信数据包检测服务器异常处理,修改数据包的先后次序检查服务器处理流程。协议测试的主要测试点:1.数据类型溢出:通信双方对协议数据类型的解析不一致,导致内存操作错误。2.数据包…

大家好,又见面了,我是你们的朋友全栈君。

转载:https://blog.csdn.net/SR0ad/article/details/8253126

协议测试:针对通信协议进行的测试,是对常规测试的一种补充。

重要性:实现一些常规测试中无法实现的流程,修改通信数据包检测服务器异常处理,修改数据包的先后次序检查服务器处理流程。

协议测试的主要测试点:

1.数据类型溢出:通信双方对协议数据类型的解析不一致,导致内存操作错误。

2.数据包构造欺骗:根据数据包的规则创建出一新的数据包,填充数据包后发给server,用来模拟client的操作(比如使用某些不存在的物品)。

3.数据包重发:拦截和监听数据包,把监听到数据包重复发送给server,检测server是否有容错检查。

4.逻辑数据包先后次序:例如在未锁定情况下交易,CF在同时捡取物品时变身。

5.C/S定义数据长度字段不一致:在便携程序是未考虑到client上发送数据的安全性,未对字段ncount进行检查导致内存copy越界。

6.非正常逻辑server未做检查:例如提交任务/NPC编号不存在,发送私聊的GID不存在。

游戏协议测试优先级:背包/仓库道具系统—-交易系统—-邮件—-商城—-装备打造—-战斗技能系统—-移动系统—-帮派/家族系统

协议测试的步骤:

准备阶段(80%):系统业务的理解,协议交互流程,测试用例设计,工具选择或开发

执行阶段(10%):测试用例/场景执行,测试数据/系统数据收集

分析阶段(10%):数据汇总/日志分析,测试报告

测试工具(协议外挂):

1.HOOK目标进程的send,sendto,recv,recvform函数,监听数据包

2.揭秘解码数据包形成明文包

3.修改明文数据包

4.编码加密数据包发送到server

PS:提供加解密解码接口能快速开发使用其他业务协议明文,使用Table树方式展现,方便查看和修改协议加载方式利用,利用配置协议文件实现拦截器,自定义可以拦截指定的协议数据包。

协议测试分析:

1.结合流程图或者C/S交互图分析

数据包先后次序

数据包重发

数据逻辑(必须结合协议结构)

2.结合协议结构体分析

数据逻辑

数据包重发

数据溢出

内存越界

经典BUG分析

1.服务器未对对象合法性进行检查

e.g:自己可以和自己进行交易,修改聊天室ID导致服务器当机,修改数据包操作其他玩家

解决办法:交易,组队,聊天,人物等协议交互中标记操作者和被操作者关系的字段进行检查

2.服务器未对对象个数有效性进行检查

e.g:摆摊购物买物品数量改成-1导致刷钱,购买商场物品时修改购买个数,可以成功购买

解决办法:检测邮件删除/购买物品/物品移动/拆分,装备打造等协议字段中上报个数字段

3.服务器未对对象当前状态位置进行检查

e.g:跨越地图领取任务,骑乘状态下删除坐骑导致无法下坐骑,战斗状态下发送role登出,可进入角色列表(对象角色互斥),交易锁定的物品出售给NPC,服务器当机

解决办法:对象当前状态与操作的胡吃检查不严格,确保对象当前状态,在该中泰下进行各项操作,检查操作是否与当前状态互斥。

4.其它类型BUG

e.g:物品使用在server未做类型校验,标记类字段检查不严格(0/非0),client与server定义的数组长度不一致,前置条件不满足的情况下操作。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/128741.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 为什么百度查到的ip和ipconfig查到的不一样;详解公网Ip和私网ip;详解网络分类ABC;

    为什么百度查到的ip和ipconfig查到的不一样;详解公网Ip和私网ip;详解网络分类ABC; IP可以分为PublicIP和PrivateIP,出现这种规划的原因在于IPv4所能表示的IP太少而电脑太多以至于不够用,然而只有PublicIP才能直接连接上网络,所以对于那些公司,学校,政府机构等场所,就可以集中使用私有的IP进行管理,而大家可以共用一个IP去连接上公网,这样,就省下了许多宝贵的PublicIP。你有没有发现,你每次使用ipconfig查到的地址,要么就是172….

    2022年6月6日
  • 黑苹果安装详细过程

    黑苹果安装详细过程前言:此教程谨献给出入黑苹果的小白们学习经验,如安装过程出现任何意外将于本人无关。鉴于网上有很多大佬写的教程,但以我的角度来看(才识浅薄),有些细节并没有提到,会让小白比较懵,所以才有了写这篇教程的想法。第一次写教程,请多指教,有写错的地方还请各路大神指正,老鸟看看就好,勿喷(感谢)(未经允许,禁止转载,请尊重)废话就不说了,直接进入正题。UEFI+GPT是前提,如果是传统引导方式的,请自行…

    2022年6月11日
  • axisfault faultcode_转付证明怎么写

    axisfault faultcode_转付证明怎么写2007-06-26关于AxisFault的说明一般说来,不可避免的WebService的服务中也会出现异常,举个简单的例子,一个服务接受一个SOAP请求消息,获取有效负载后,进行一个数据库更新操作,而在更新操作过程中发生了SQLException,这个时候就需要告诉客户端(调用WebService)出现异常了,Axis2将异常封装成为一个AxisFault进行抛出。任何类型的…

    2022年9月13日
  • navicat for mysql永久激活码最新【2022最新】「建议收藏」

    (navicat for mysql永久激活码最新)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~2KLKA7BQFO-eyJsaWNlb…

    2022年4月1日
  • OpenCV中的width与widthStep

    OpenCV中的width与widthStep1.在opencv中width表示的是图像的每行像素数,widthstep表示的是存储一行像素需要的字节数,位了快速读取数据,在opencv中一般使widthStep为4的倍数,从而实现字节的对齐,有利于提高运算速度。2.函数的原型为image->widthStep=(((image->width*image->nChannels*(image->depth&~IPL_DEPTH_SIGN)+7)/8)+align-1)&(~(alig

    2022年5月30日
  • latex 希腊字母表_物理希腊字母

    latex 希腊字母表_物理希腊字母因为有时候用到希腊字母时总会忘了读音或拼写,所以自己整理了一份表格,分别罗列了常用希腊字母的大小写,音标以及如何用LaTex公式书写出来。详见下表:希腊字母大写小写小写公式音标(美式)备注AAα\alpha\alpha/ˈælfə/大写为A,看上去是英文大写的其实就直接英文大写就行,下同BBβ\beta\beta/ˈb

    2022年8月31日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号