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

      最后更新: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&timestamp=1649562192&author=BB

      如果我的博客对你有帮助, 如果你喜欢我的博客内容, 请给予它一个赞美, 评论, 并收集.

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/27363.html

          热门文章

          文章分类