近期项目都是我们提供 WebSocket 的接口服务,客户端是业务那边,我要测我们的接口,开发让我写客户端,每次用 AI 写的都要修改很久,比测试时间都长。。。。请问大佬们,这是正常的测试流程吗?
其实算是测试方法的问题,这个客户端我个人理解有点类似于你们的测试环境,其实测试搭建测试环境倒也没啥,如果你有不需要写这个客户端就可以完成验证的方法,那完全可以不写嘛
其实挺合理的
开发让你写客户端,你可以写个 CLI 的客户端,只是调接口而已,你是不是理解成要有 GUI 的客户端了……
写客户端是什么意思?python 已有很多现成的 websocket 库,直接用就行了。
是接口测试要用脚本模拟调用方的请求建立链接进行测试么?
测试目的是什么?功能和数据验证?稳定性? 性能?
简单的功能验证有其他工具,比如一些 chrome 浏览器插件。
如果涉及到稳定性,性能,ws 心跳,或者定制化协议之类的,自己写代码要方便的多。
客户端一般会向后端传参吧,感觉需要模拟的
请教下 CLI 是什么?没有写 GUi 的客户端,单纯是调接口,检查结果返回,以及更重要的是要处理返回数据转变为音视频,看算法侧的效果
postman 不是可以直接调 ws 的接口
python,java,jmeter 工具等
我能说我一个小小测试,还要给客户开发业务功能吗…………
开发可以支配测试吗
import socketio
class ExportResourceClient:
def __init__(self, server_url):
self.server_url = server_url
self.sio = socketio.Client()
# 用于判断当前任务是否完成
self.current_task_done = False
self._register_events()
def _register_events(self):
"""注册事件回调函数"""
@self.sio.event
def connect():
log.info("SocketIO连接成功")
@self.sio.event
def export_start(data):
log.info("开始导出...")
@self.sio.event
def export_progress(data):
log.info(f"进度: {data['msg']}")
@self.sio.event
def export_error(data):
log.info(f"导出失败: {data['msg']}")
self.current_task_done = True # 标记任务完成,避免卡住
@self.sio.event
def export_info(data):
log.info(f"信息: {data['msg']}")
@self.sio.event
def export_success(data):
log.info(f"导出成功: {data['msg']}")
log.info(f"下载地址: {data['url']}")
self.current_task_done = True # 标记任务完成
@self.sio.event
def task_status(data):
print(f"任务状态: {'运行中' if data['is_running'] else '已完成'}")
def connect(self):
"""连接到WebSocket服务器"""
self.sio.connect(self.server_url)
def send_task(self, task_name):
"""发送任务事件"""
self.current_task_done = False # 任务开始时重置状态
self.sio.emit(task_name)
log.info(f"任务 {task_name} 已发送")
def wait_for_task_completion(self):
"""等待当前任务完成"""
log.info("等待任务完成...")
while not self.current_task_done:
time.sleep(1)
def start_export_kr_resource(self):
log.step("start export kr resource event_name:start_export_kr_resource")
self.send_task("start_export_kr_resource")
self.wait_for_task_completion()
def start_export_kr_img_resource(self):
log.step("start export img resource event_name:start_export_kr_img_resource")
self.send_task("start_export_kr_img_resource")
self.wait_for_task_completion()
def start_export_translation_pack(self):
log.step("start export translation pack event_name:start_export_translation_pack")
self.send_task("start_export_translation_pack")
self.wait_for_task_completion()
def wait_for_events(self):
"""保持WebSocket连接,等待事件"""
self.sio.wait()
协调一个客户端资源帮你写个 demo
试试直接用工具是否可以满足?jmeter 可以装 websocket 的插件,然后取样器就可以新增 websocket 类型的。
梳理一下要做什么事?
感觉用 python 脚本能搞定
"测试传参是一方面,还需要看音视频最终返回的效果,来判断算法是否有误"
从描述来看是使用 ws 通信作为音视频传输的方式。
那么问题就是,如何判断音视频的效果, 和你说的” 算法 “是什么。 缓存算法?压缩算法?编解码算法?
ws 传输的音视频的本质是编码后的二进制数据流,对” 效果 “的评估可能基于两点。
如果对于质量没有量化评估方式或指标,可能只需要通过 ws 获取二进制数据,缓存数据,再拉起一个播放器播放,人工观看判断质量?
合理。测试向测试开发升级的过程。之前遇到过类似的事情,要了上游代码直接抄了一个上游系统,删减了用不到的代码。偷懒点可以找开发帮忙写,请吃顿饭。