测试基础 小白发问:测试需要写用来模拟测试的客户端吗??

Sss · 2025年07月04日 · 最后由 卡卡东 回复于 2025年07月11日 · 6453 次阅读

近期项目都是我们提供 WebSocket 的接口服务,客户端是业务那边,我要测我们的接口,开发让我写客户端,每次用 AI 写的都要修改很久,比测试时间都长。。。。请问大佬们,这是正常的测试流程吗?

共收到 21 条回复 时间 点赞

其实算是测试方法的问题,这个客户端我个人理解有点类似于你们的测试环境,其实测试搭建测试环境倒也没啥,如果你有不需要写这个客户端就可以完成验证的方法,那完全可以不写嘛

其实挺合理的

开发让你写客户端,你可以写个 CLI 的客户端,只是调接口而已,你是不是理解成要有 GUI 的客户端了……

写客户端是什么意思?python 已有很多现成的 websocket 库,直接用就行了。
是接口测试要用脚本模拟调用方的请求建立链接进行测试么?
测试目的是什么?功能和数据验证?稳定性? 性能?
简单的功能验证有其他工具,比如一些 chrome 浏览器插件。
如果涉及到稳定性,性能,ws 心跳,或者定制化协议之类的,自己写代码要方便的多。

客户端一般会向后端传参吧,感觉需要模拟的

Sss #6 · 2025年07月04日 Author
esnake0 回复

测试传参是一方面,还需要看音视频最终返回的效果,来判断算法是否有误

Sss #7 · 2025年07月04日 Author
恒温 回复

但没有给测试开发客户端的时间,开发接口提测后给接口文档,但写测试客户端也依赖他们的接口信息

Sss #8 · 2025年07月04日 Author
槽神 回复

请教下 CLI 是什么?没有写 GUi 的客户端,单纯是调接口,检查结果返回,以及更重要的是要处理返回数据转变为音视频,看算法侧的效果

postman 不是可以直接调 ws 的接口

python,java,jmeter 工具等

我能说我一个小小测试,还要给客户开发业务功能吗…………

alwaylack 回复

那你很厉害啊,申请涨工资

开发可以支配测试吗

Sss #14 · 2025年07月07日 Author

一次 ws 请求中,会涉及多个不同请求,postman 也可以实现吗

Sss 回复

没能理解你的问题。是指不通的 body 吗? 如果是, 可以。

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 脚本能搞定

Sss 回复

"测试传参是一方面,还需要看音视频最终返回的效果,来判断算法是否有误"
从描述来看是使用 ws 通信作为音视频传输的方式。
那么问题就是,如何判断音视频的效果, 和你说的” 算法 “是什么。 缓存算法?压缩算法?编解码算法?

ws 传输的音视频的本质是编码后的二进制数据流,对” 效果 “的评估可能基于两点。

  1. 传输的带宽和稳定性,每秒传输的字节数,传输过程中的中断重连机制等,侧重 ws 的网络通信。
  2. 音视频流还原后的质量,可能涉及到解压缩,侧重解码纠错算法和性能等。 感觉你收到的是一个综合性的模糊的任务,可能需要进一步和产品/研发沟通和细化测试需求,给出测试思路寻求反馈。 也可以跟测试同事和大佬沟通下以往的,业界的常见做法。

如果对于质量没有量化评估方式或指标,可能只需要通过 ws 获取二进制数据,缓存数据,再拉起一个播放器播放,人工观看判断质量?

合理。测试向测试开发升级的过程。之前遇到过类似的事情,要了上游代码直接抄了一个上游系统,删减了用不到的代码。偷懒点可以找开发帮忙写,请吃顿饭。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册