RPC接口测试技术-Tcp 协议的接口测试

简介: 首先明确 Tcp 的概念,针对 Tcp 协议进行接口测试,是指基于 Tcp 协议的上层协议比如 Http ,串口,网口, Socket 等。这些协议与 Http 测试方法类似(具体查看接口自动化测试章节),但在测试过程中需要做些调整。## SocketSocket 又称套接字,进程可通过套接字进行网络通信,使多个设备具有交互能力。Socket 适合对传输速度和安全性有严格要求的应用,比

首先明确 Tcp 的概念,针对 Tcp 协议进行接口测试,是指基于 Tcp 协议的上层协议比如 Http ,串口,网口, Socket 等。这些协议与 Http 测试方法类似(具体查看接口自动化测试章节),但在测试过程中需要做些调整。

Socket

Socket 又称套接字,进程可通过套接字进行网络通信,使多个设备具有交互能力。Socket 适合对传输速度和安全性有严格要求的应用,比如手机内核与外界进行测试数据的传输。支持 Socket 设备不止计算机,还会有移动端,如果测试 Socket 协议,需要有收发 Socket 数据的能力或代理 Socket 的能力。
下图展示了正常的 Socket 通信流程:

如果测试 Socket 协议,需要做以下改造,即利用 Socket 代理,进行 Socket 数据的接收:

需要特别注意,需要应用可更改 Socket 地址,才可使用代理。以 Python 的 Socket 为例,下面是一个简单的 Socket 客户端和服务端:

# 客户端
import socket               # 导入 socket 模块

s = socket.socket()         # 创建 socket 对象
host = '127.0.0.1'          # 获取本地主机名
port = 12345                # 设置端口号
s.connect((host, port))
print(s.recv(1024).decode())
s.close()
# 服务端

import socket               # 导入 socket 模块
s = socket.socket()         # 创建 socket 对象
host = '127.0.0.1'          # 获取本地主机名
port = 12345                # 设置端口
s.bind((host, port))        # 绑定端口

s.listen(5)                 # 等待客户端连接
while True:
    c,addr = s.accept()     # 建立客户端连接
    print(addr)
    c.send('收到信息'.encode())
    c.close()                # 关闭连接

客户端可与服务端进行交流,但 Socket 地址不可更改,即上述客户端代码的 127.0.0.1 和 12345 端口不能通过配置文件进行更改。如果不能更改这两者,就堵死了通向代理的道路:

如何进行修改?以客户端代码为例,可通过配置文件来配置 host 和 port :

import socket
import yaml
# 通过配置文件,进行 host 和 port 配置
with open("config.yaml","r", encoding="utf-8") as f:
    data = yaml.safe_load(f)
host = data.get("host")
port = data.get("port")
s = socket.socket()
s.connect((host, port))
print(s.recv(1024).decode())
s.close()

config.yaml 的内容如下:

host: "127.0.0.1"
port: 12345

上述更改,可使应用走 Socket 代理。测试人员还需一款合适的代理工具,推荐 mitmproxy 或自写 Socket 代理。mitmproxy 使用请参考:
mitmproxy 官网:https://www.mitmproxy.org/

其他协议

其它协议,比如串口、网口、visa 等,与 Socket 的测试模式类似,用相同的图即可简述:

其它协议较 Sokcet 更冷门,无合适的代理工具。需要测试人员自己写代理,比如串口协议, Python 虽然支持 Pyserial 进行收发串口,但无代理。此时需要测试人员自行编写串口代理工具。这个过程需要开启两个监听服务,如下图,监听服务 A 监听端口 123 ,如果有数据进来,会透传(或做数据更改,实现 mock)给端口 456,监听服务 B 同理:

使用两个监听服务,可编写任意协议,但注意缺点,数据的传输时间会增加,如果过分注重性能,此方案慎用。下面是参考代码,其中只保留了关键逻辑:

def forward(self):
    """
    开启监听
    :return:
    """
    while True:
        # 从虚拟串口接收到请求
        virtual_req = self.virtual_ser.recv()
        if b'' == virtual_req:
            continue
        if self.is_call_back:
            # 返回空值,让 mock_server 决定返回内容
            real_result = b""
        else:
            # 等待真实设备出现
            if self.real_ser is None :
               # 代码省略

            # 将请求转发到真实串口
            real_result = self.real_ser.write_by_bytes(virtual_req)

        # 获取 mock 的结果,在此可以加入 mock 操作
        mock_result = self.mock_server.mock(virtual_req, real_result)
        # 将 mock 结果写入虚拟串口
        self.virtual_ser.send(mock_result)

再次强调,需要让应用支持端口修改,才能使用代理工具,这部分需要与开发交流,提修改需求。

相关文章
|
2月前
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
62 4
|
3月前
|
前端开发 JavaScript 测试技术
前端测试技术中,如何提高集成测试的效率?
前端测试技术中,如何提高集成测试的效率?
|
8天前
|
缓存 网络协议
Jmeter如何对UDP协议进行测试?
`jmeter-plugins`是JMeter的插件管理器,用于管理和组织所有插件。访问[官网](https://jmeter-plugins.org/install/Install/)下载并放置于`lib/ext`目录下,重启JMeter后可在“选项”中看到插件管理器。
20 1
Jmeter如何对UDP协议进行测试?
|
3月前
|
Dubbo 安全 应用服务中间件
Apache Dubbo 正式发布 HTTP/3 版本 RPC 协议,弱网效率提升 6 倍
在 Apache Dubbo 3.3.0 版本之后,官方推出了全新升级的 Triple X 协议,全面支持 HTTP/1、HTTP/2 和 HTTP/3 协议。本文将围绕 Triple 协议对 HTTP/3 的支持进行详细阐述,包括其设计目标、实际应用案例、性能测试结果以及源码架构分析等内容。
237 10
|
3月前
|
数据采集 前端开发 安全
前端测试技术
前端测试是确保前端应用程序质量和性能的重要环节,涵盖了多种技术和方法
|
3月前
|
前端开发 JavaScript 测试技术
前端小白逆袭之路:如何快速掌握前端测试技术,确保代码质量无忧!
【10月更文挑战第30天】前端开发技术迭代迅速,新手如何快速掌握前端测试以确保代码质量?本文将介绍前端测试的基础知识,包括单元测试、集成测试和端到端测试,以及常用的测试工具如Jest、Mocha、Cypress等。通过实践和学习,你也能成为前端测试高手。
86 4
|
16天前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
16天前
|
存储 测试技术 数据库
接口测试工具攻略:轻松掌握测试技巧
在互联网快速发展的今天,软件系统的复杂性不断增加,接口测试工具成为确保系统稳定性的关键。它如同“翻译官”,模拟请求、解析响应、验证结果、测试性能并支持自动化测试,确保不同系统间信息传递的准确性和完整性。通过Apifox等工具,设计和执行测试用例更加便捷高效。接口测试是保障系统稳定运行的第一道防线。
|
16天前
|
Web App开发 JSON 测试技术
API测试工具集合:让接口测试更简单高效
在当今软件开发领域,接口测试工具如Postman、Apifox、Swagger等成为确保API正确性、性能和可靠性的关键。Postman全球闻名但高级功能需付费,Apifox则集成了API文档、调试、Mock与自动化测试,简化工作流并提高团队协作效率,特别适合国内用户。Swagger自动生成文档,YApi开源但功能逐渐落后,Insomnia界面简洁却缺乏团队协作支持,Paw仅限Mac系统。综合来看,Apifox是国内用户的理想选择,提供中文界面和免费高效的功能。
|
2月前
|
监控 JavaScript 测试技术
postman接口测试工具详解
Postman是一个功能强大且易于使用的API测试工具。通过详细的介绍和实际示例,本文展示了Postman在API测试中的各种应用。无论是简单的请求发送,还是复杂的自动化测试和持续集成,Postman都提供了丰富的功能来满足用户的需求。希望本文能帮助您更好地理解和使用Postman,提高API测试的效率和质量。
120 11