最后更新:2022-06-15 06:38:24 手机定位技术交流文章
首先,澄清Tcp的概念,为Tcp协议进行接口测试,它指基于Tcp协议的高级协议,例如HTTP,串口,网口,索克等。这些协议类似于HTTP测试方法(详情见界面自动化测试部分),但测试过程需要一些调整。
Socket
索克也被称作索克。这个过程可以通过一个插座通过网络进行通信,使多个设备相互作用.插座适用于严格的传输速度和安全要求的用途,例如, 手机的内核将测试数据发送到外部世界.支持 Socket设备不仅仅是计算机,还会有移动端,如果Socket协议被测试,需要接收和发送索克数据或作为索克代理。
下面的图示了正常接口通信过程:

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

需要特别注意使用可修改的索克地址来使用代理。 以Python的索克为例,下面是一个简单的索克客户端和服务端子:
# 客户端
导入插座 #导入插座模块
s = socket.socket() # 创建索克对象
主机 = '' # 获取本地主机名称
端口 = 12345 # 设置端口号
s.connect((host, port))
print(s.recv(1024).decode())
s.close()
# 服务端
导入插座 #导入插座模块
s = socket.socket() # 创建索克对象
主机 = '' # 获取本地主机名称
端口=12345 #安装端口
s.bind((主机,端口)) #绑定端口
s.listen(5) #等待客户端连接
whileTrue:
c, addr = s.accept() #建立客户端连接
print(addr)
c.收到的信息。encode())
c.close() #关闭连接
客户端可以与服务端进行通信,但不能通过配置文件更改索克地址,即上面的客户端代码和12345端口。 如果你不能更改这两个东西,你正阻塞到代理:

如何修改?例如,您可以通过配置文件配置主机和端口:
importsocket
importyaml
#通过配置文件配置主机和端口
withopen("config.yaml","r", encoding="utf-8")asf:
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 Agent。 测试者还需要一个合适的代理工具,推荐mitmproxy或自写的Socket proxy。
Mitmproxy网站: https://ww.mitmproxy.orgMitmproxy.org/ 1
其他协议
其他协议,如串行端口、网络端口、签证等,与Socket的测试模式相似,并可在同一个图中归纳:

其他协议比索克塞特更冷,无合适的代理工具。测试人员需要写自己的代理人,比如串口协议,虽然Python支持Pyserial接收序列,但无代理。测试者需要在这个点上写出自己的字符串代理工具。这 一 进程 需要 开放 两 个 监测 服务,如下图,监察服务 A 监察终端123,如果有数据进来,发送(或更改数据,实现模板)到456端口,监察服务B一致性:

1080×628 47.6 KB
使用两个监视服务,可以编写任意协议,但注意缺点,数据传输时间增加,如果对性能给予过多的注意,则程序会小心。 这里是参考代码,只保留关键逻辑:
defforward(self):
"""
开启监听
:return:
"""
whileTrue:
#从虚拟线程接收请求
virtual_req = self.virtual_ser.recv()
ifb'' == virtual_req:
continue
ifself.is_call_back:
#返回一个空值,允许 mock_server决定返回内容
real_result = b""
else:
#等待真正的设备出现
ifself.real_serisNone :
# 代码省略
#将请求转移到真正的字符串
real_result = self.real_ser.write_by_bytes(virtual_req)
#获取模拟结果,您可以添加模拟操作
mock_result = self.mock_server.mock(virtual_req, real_result)
#将模拟结果写入虚拟字符串
self.virtual_ser.send(mock_result)
再次强调,应用程序需要支持端口修改,以便使用代理工具,这部分需要与开发者沟通,提出修改要求。
更多技术文章: https://qrcode.Ceba.Ceshiren.com/link?name=article&project_id=qrcode&from=souhu×tamp=1649562192&author=BB
如果我的博客对你有帮助, 如果你喜欢我的博客内容, 请给予它一个赞美, 评论, 并收集.
本文由 在线网速测试 整理编辑,转载请注明出处。