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

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

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

共收到 21 条回复 时间 点赞

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

其实挺合理的

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

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

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

Sss #16 · 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 获取二进制数据,缓存数据,再拉起一个播放器播放,人工观看判断质量?

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

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