【工具】二进制协议模拟测试工具(TcpEngine)使用简介

官网:http://www.gongfen100.com/tcp_engine/docs.html

功能介绍

  在有的网络开发需要走二进制流协议场景,比如网络游戏开发,在开发阶段,前端和后端协商好协议后就分别开发。在开发写代码的时候,有时需要对端发送一条完整的协议过来触发一下自己的代码,进行单步调试或单元测试,但对端现在也在开发,不能发完整的协议过来。这种情况下,我们可以使用TcpEngine工具模拟对端向我们发送完整的协议,实现触发我们的代码逻辑。

  TcpEngine是可以通过xml配置,模拟二进制流协议的工具,比如有一条协议的定义如下面四个部分

 

1. 1~4共四个字节是整型,存放消息体长度。

  1. 5~6共两个字节是短整型,存放命令ID。
  2. 7~8共两个字节是短整型,存放固定值123。

4. 最后是消息体,长度由首四个字节指定。

  那么TcpEngine对象的xml配置如下面所示。

<!-- 用<data>变量体接收协议配置过程示例,排序位置表示在协议中的位置 -->

<data id="msg_len" value="{int:net}"></data> <!-- 1~4共四个字节整型,从网络接收数据 -->

<data value="{short:net}"></data>       <!-- 5~6共两个字节短整型,从网络接收数据 -->

<data value="{short:local:const}123"></data><!-- 7~8共两个字节短整型,填本地固定值123 -->

  <data value="{string:net:calc}$msg_len"></data> <!-- 后面是消息体,从网络接收,接收长度由变量id=msg_len变量体指定 -->

  这个工具的主要功能有

1. 通过xml配置二进制协议。

2. 支持模拟前端和后端(模拟后端时,只允许一个前端连接)

3. 支持byte(一个字节);short(两个字节短整型);int(四个字节整型);long(八个字节长整型);float(四个字节浮点型);double(八个字节浮点型);json字符串。

4. 支持Tcp和WebSocket两种网络协议。

5. 保存关键数据,在下一条协议中继续使用。

6. 日志显示测试过程数据变化,可保存日志到文件,下次打开日志文件可恢复测试现场。

7. 支持常用的运算符。

8. 支持延迟或暂停测试过程。

工具主界面

 

 

 

运行界面

 

工具地址: https://pan.baidu.com/s/1P0yPWWiEj8lUvN-a7GwIWw

 

实例:按“恢复”一次,发送一条( <send sleep="pause">)/每5秒发送一次(<send sleep="5000">)

<?xml version='1.0' encoding='UTF-8'?>
<engine>
    <net>
        <desc>网络配置</desc>
        <type>client</type>
        <!-- 本工具摸拟类型:server/client -->
        <ip>127.0.0.1</ip>
        <!-- 网络地址:如果type=server,这条忽略  -->
        <port>7787</port>
        <!-- 网络端口:type=server 监听端口;type=client 连接端口  -->
        <nettype>tcp</nettype>
        <!-- 协议类型:tcp/websocket -->
    </net>
    <process>
        <desc>死循环发送</desc>
        <monitor>
            <!-- 触发器 -->
            <desc>执行入口</desc>
            <elem>startup</elem>
        </monitor>
        <trigger>
            <desc>触发下次执行逻辑</desc>
            <data id="trig_1" value="{short:local:const}10"/>
            <!-- 字符串数据类型 -->
        </trigger>
    </process>
    <process>
        <desc>循环执行过程示例</desc>
        <monitor>
            <!-- 触发器 -->
            <desc>通过triger触发</desc>
            <elem>{short:local:const}10=={short:calc}$trig_1</elem>
            <!-- 如果是变量名,先从全局recv找,再到gold找 -->
        </monitor>
        <send sleep="pause">
            <desc>发送的数据定义</desc>
            <data value="{byte:const}c"/>
            <data id="send_int" value="{int:const}10086"/>
            <data id="send_short" value="{short:calc}size($send_string)"/>
            <!--动态计算变量值-->
            <data id="send_long" value="{long:calc}10001+$send_int-10"/>
            <!--有算术运算-->
            <data id="send_float" value="{float:const}1.22"/>
            <!--常量赋值-->
            <data id="send_double" value="{double:const}5.66"/>
            <data id="send_string" value="{string:const}&quot;hello&quot;"/>
            <!--发送字符串 &quot;转义"号-->
        </send>
        <trigger>
            <data id="trig_1" value="{short:local:const}10"/>
            <!-- 字符串数据类型 -->
        </trigger>
    </process>
</engine>

 

posted on 2022-10-04 01:27  bdy  阅读(23)  评论(0编辑  收藏  举报

导航