做游戏测试有些年头了,其中协议和接口测试是必不可少的测试内容。
来论坛第 1 贴,说说做游戏协议测试的一些心得,分享给大家,希望一起讨论交流吧。
一.在做网页游戏测试时,进行协议测试的方法:
1.wpe 抓包、拦截改包、重发测试
2.内置 GM 工具通过作弊指令,模拟协议测试
二.现在做手机游戏,使用之前的方式都不是很友好。
1.先是用 c# 重构了客户端与服务端的整个通信流程,引入协议结构体,监听打印服务器返回数据。
但是存在代码工作量大、且需要测试人员较高的编码水平,不易于测试内部使用。而且进行协议测试后,还是得上游戏验证数据。过于复杂,弃用。
2.感慨于 wpe 的方便,所以想有 wpe 这样的抓包重复工具。
a.最开始使用 wpe+ 代理的方式抓手机包,但是作为测试来讲还是过于麻烦。需要去解析和转换数据,于是放弃。
b.在经过多次在基于客户端源码直接进行修改源码进行协议测试的情况下,决定基于 unity 在客户端源码上实现一个类似于 WPE 的协议测试工具。
由于我们公司在PC上进行测试时,是可以拿到客户端的代码的可以在unity进行测试。
所以,在之前直接修改客户端代码进行协议测试的基础上,实现 WPE 的抓包、拦截、重发、修改参数功能。
先看一个实现的截图:
实现过程:
1.找到游戏通信基类,阅读通信相关代码,然后在客户端发送给服务器的方法里,进行拦截和修改。
2.自己写一个脚本作为在 unity 运行时挂到游戏场景中,然后进行模拟 wpe 的抓包测试
前实现的功能:
1.抓包、重发
2.抓包、修改参数
3.直接根据协议结构构建数据包
4.模拟弱网上行下行丢包
……
存在的问题:
这个工具只能是提供给没什么编码基础的测试同事使用。
无法解决复杂的协议和逻辑测试。例如设计的测试用例,那么有些可能就无法执行了
那么到了这一步就需要我们进行编码进行协议测试了。
针对一些复杂的参数进行测试时,特别是无效参数时,直接通过构造协议体进行测试将会更方便。
一个协议测试类:
关于协议测试这一块:
1.思考过想做一个类似于Jmeter的工具来实现自动化,但是能力有限没有实现。
2.一般的协议测试,如果自己没有编码能力,那么直接让客户端或者服务端程序员实现类似于wpe的功能即可。
3.一些复杂的测试场景,需要编码进行测试。手机游戏,个人推荐直接使用c#或者lua。
写在最后:
希望每个游戏测试人都可以简单的做协议测试。