才可使用代理。以 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/ 1

其他协议

其它协议,比如串口、网口、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:continueif 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)

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

软件测试 | 测试开发 | RPC接口测试技术-Tcp 协议的接口测试相关推荐

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

    霍格沃兹出品 <测试开发实战进阶>课程,资深测试架构师.开源项目作者亲授 BAT 大厂前沿最佳实践.4 个月 20+ 项目实战强化训练,带你一站式掌握 BAT 测试开发工程师必备核心技能( ...

  2. 软件测试 | 测试开发 | Dubbo 接口测试原理及多种方法实践总结

    本文为霍格沃兹测试学院优秀学员学习笔记,Java 中高级测试开发名企定向 进阶学习文末加群. 1.什么是 Dubbo? Dubbo 最开始是应用于淘宝网,由阿里巴巴开源的一款优秀的高性能服务框架,由 ...

  3. 软件测试/测试开发丨Docker 容器技术与常用命令

    公众号搜索:TestingStudio 霍格沃兹测试开发的干货都很硬核 Docker 简介 Docker 是一个开源的应用容器引擎,基于 Go 语言开发,Docker 可以让开发者打包他们的应用以及依 ...

  4. 软件测试 | 测试开发| 80后专科学历入职世界500强企业,二线城市年薪超30W

    本文为霍格沃兹测试学院优秀学员跳槽笔记,测试开发进阶学习文末加群. 这篇文章是写给想在测试行业或者转行做测试行业的小伙伴的.我将叙述如何从0到1转行到测试行业并入职世界500强企业.先交待一下我的背景 ...

  5. 软件测试 | 测试开发 | 双非院校,从外包到外企涨薪85%,他的涨薪秘籍全公开

    本文为霍格沃兹测试开发学社优秀学员跳槽笔记,测试开发进阶学习文末加群. 本身是一所不入流的院校毕业的一名建工类专业的瓜娃子,至今记得当初是因为找工作被培训公司忽悠才加入到这个行业的,抱着做着试试的想法 ...

  6. 软件测试/测试开发丨Java or Python?测试开发工程师如何选择合适的编程语言?

    很多测试开发工程师尤其是刚入行的同学对编程语言和技术栈选择问题特别关注,毕竟掌握一门编程语言要花不少时间成本,也直接关系到未来的面试和就业(不同企业/项目对技术栈要求也不一样),根据自身情况做一个相对 ...

  7. 软件测试 | 测试开发 | 测试人生 | 00后0经验应届毕业生拿下2线城市15W offer,好励志~

    本文为霍格沃兹测试开发学社优秀学员跳槽笔记,测试开发进阶学习文末加群. 本人毕业于武汉市某不知名二本院校的物联网工程专业,物联网专业在我们学校是偏硬件的,对于软件的学习仅仅停留在基本的理论和操作方面. ...

  8. 软件测试测试开发技能

    从事软件测试许多年,想必很多人都有感到迷茫不知所措的时候,人生的十字路口有很多,该如何抉择呢?有人成功转型,QA.项目管理.配置管理.当然还有技术型,性能测试.自动化测试.测试开发,而想要延续走技术型 ...

  9. 软件测试 | 测试开发 | 从外包菜鸟到测试开发,薪资一年翻三倍,连自己都不敢信!(附面试真题与答案)

    本人本科就读于某普通院校(很普通的那种技术示范学院),毕业后懵懂的加入了软件测试这个行业,至今有三年工作经验.通过在霍格沃兹测试学院的这段学习经历,我的职业角色完成了从功能测试到外包测试,再到测试开发 ...

最新文章

  1. CentOs下卸载程序
  2. python对数运算符号_科学网—Python中算数运算符之注意及np.logspace - 张伟的博文...
  3. openstack网络服务neutron
  4. 【深度学习】数形结合的图像处理(文末介绍了一种新型网络)
  5. ubuntu下面安装Keil uvision4与入门实例
  6. line-height:1.5和line-height:150%的区别
  7. C++ string 介绍
  8. sublime用cmd窗口调试python_Sublime Text设置程序输出窗口为dos窗口
  9. caffe prototxt 可视化工具
  10. PHP商城源码|好看的团购拼购商城源码
  11. STL源码分析-rotate
  12. 华中农业大学第五届程序设计大赛网络同步赛解题报告2(转)
  13. Spring Bean实例化的几种特殊方式
  14. thrift (转)
  15. marqueeview更改字体颜色_安卓手机上可以编辑字体的便签软件哪个好?
  16. pycharm搭建yolo3-pytorch-master的pytorch环境
  17. 编写一个程序,新建一个文件:d:\abc.txt,从键盘输入abc.txt内容(不超过100个字符)。然后新建另外一个文件:d:\def.txt,将abc.txt的前10个字符复制到def.txt上
  18. High-Frequency Strategies 高频交易策略介绍(译文)
  19. TransactionScope使用(二)——msdtc不可用
  20. 寒假集训三(暴力枚举)2020.01.02(11题)

热门文章

  1. python反转一个整数、123变成321_python怎么将整数反转输出
  2. HBS服务器什么样装系统,GitHub - unclay/hbs-test: hbs入门测试
  3. open-falcon judge组件报Hbs.GetStrategies: call hbs timeout问题
  4. spi遵循_我今天将遵循样式指南
  5. 【数学建模】拟合算法+Matlab实现
  6. Kaggle数据集猫狗分类(Pytorch+ResNet34预训练)99%以上正确率
  7. java poi导出word 多表格 页眉 非xml
  8. 【程序】Marvell 88W8801 WiFi模块创建或连接热点,并使用lwip2.1.2建立http服务器(20200208版)
  9. 卢松松:百度凤巢系统知道推广功能上线
  10. 《码出高效:Java开发手册》 四-走进JVM