楼主这边一直在思考如何让 QA 也能够更好的支持游戏压测,在不擅长编写脚本的前提下,也能够支持压测需求。
   高情商的管这叫叫赋能 QA
具体是啥,自行百度。这边使用的行为树工具为 https://github.com/magicsea/behavior3go
目前只考虑 tcp,数据传输使用 protobuf。
   大体的实现方式:
         1、新增两个 Composites,ReqMsg(发送协议),RespMsg(响应协议)。两个协议必填属性为协议 Id 和协议名称 (需要与 proto 文件一致)。同时 ReqMsg 可以填充参数,例如有一个复杂的 proto 结构体。
     
        message  LoginReq{
           string name = 1;  
           OtherMessage  c= 2;
        }
        message  OtherMessage {
           repeated int32 a= 1;  
        }
  可使用以下来进行表示
    
2、能从行为树获得的数据,就有协议名称和对应的 json 数据。这样工具可以通过这些信息,去编译出可用 protobuf 数据流
    3、各个游戏的编解码方式不同。故接入的游戏项目都需要去实现对应的编解码接口。后续可以做成插件,但对于压测来说效率比较尴尬。
      
            type MsgIdType uint32
            type Codec interface {
           Encode(MsgIdType, []byte) ([]byte, error)
           Decode(net.Conn) (MsgIdType, []byte, error)
           }
    4、参数上下文传递。这边使用 $RespMsg.Key.Val 的方式 (jmespath) 来获取上文信息。例如,先获取敌人列表,如何再挑一个敌人 Id 进行挑战
5、增加 Action, Check(未实现).对响应的数据进行断言
地址: https://github.com/OwnSecurityGuard/stress
    下载项目后
       启动测试用的服务器: cd stress/src/server && go run server.go
       启动工具:cd stress && go run main.go  --num 人数数量 --spawn 生成速度      后边两个也可不填,默认均为 1
    运行效果:
       
   
   
## 后续
  简陋的 demo 搞了出来,感觉还行,目前还有存在一些问题,工具的效率问题等等。不过如果真的能做出来的话,因为行为树其实就是一堆 json 文件,可以搞成平台去运行,也就可以搞成自动化 (所有的专项测试的最终目标怎么感觉都是自动化,哈哈哈)。
   大佬们,提提意见,说说在你们公司,是如何进行游戏压测的呢?