大家好,又见面了,我是你们的朋友全栈君。
转载: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定义的数组长度不一致,前置条件不满足的情况下操作。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/128741.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...