# kylinbot-autotest-scripts **Repository Path**: openkylin/kylinbot-autotest-scripts ## Basic Information - **Project Name**: kylinbot-autotest-scripts - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2026-07-27 - **Last Updated**: 2026-09-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # KylinBot 配置驱动测试脚本 通过 TOML 配置文件描述一次完整测试运行(消息列表 + 规则 + 会话策略),脚本读取配置后通过 WebSocket gateway 与 KylinBot 交互,输出结构化 JSON 结果。 ## 目录结构 ``` . ├── kylinbot_test.py # 测试运行主脚本(配置驱动) ├── ws_chat_benchmark.py # WebSocket 客户端底层(kylinbot_test.py 依赖) ├── run_stress.sh # 压力测试编排脚本(依次跑三个压测配置) ├── cases/ # 所有测试用例配置(TOML) │ ├── example_config.toml │ ├── smoke_test.toml │ ├── long_multi_round.toml │ ├── repeat_message.toml │ └── office_scenario.toml └── results_*/ # 运行结果(按配置的 output_dir 自动生成) ``` ## 快速开始 ### 1. 启动 KylinBot gateway 确保 kylinbot 服务正在运行,监听 `ws://127.0.0.1:42617`。 ### 2. 准备 token token 三层覆盖优先级:**CLI `--token` > 环境变量 `KYLINBOT_WS_TOKEN` > 配置文件 `[gateway].token`**。 - **跑冒烟/压测套件**:无需改任何配置文件,直接把 token 作为参数传入即可(见下)。 - **手动单跑某个配置**:可用 `--token` 透传,或打开 `cases/example_config.toml` 把 `[gateway].token` 替换为本机 token(`zc_` 开头,从 KylinBot web UI 取)。 > 在未配置过自动化脚本运行环境的新机器上,需要替换 web 资源来获取 token:把 `web-source/` 目录下的 zip 解压后替换 `/usr/share/kylin-bot/web` 中的内容,重启 kylin-bot,再参考 `web-source/` 目录下的视频获取 token。 ### 3. 运行 **冒烟测试**(单配置,快速验证系统基本可用 + 上下文保持): ```bash python3 kylinbot_test.py cases/smoke_test.toml --token zc_xxx ``` **压力测试套件**(依次跑 `smoke_test` → `long_multi_round` → `repeat_message` 三个配置,只需提供 token): ```bash ./run_stress.sh zc_xxx # 或用环境变量 KYLINBOT_WS_TOKEN=zc_xxx ./run_stress.sh # 可选第二参数:把三份结果汇总到同一目录 ./run_stress.sh zc_xxx ./results_stress_run ``` **手动单跑任意配置**(可用 CLI 覆盖配置): ```bash python3 kylinbot_test.py cases/long_multi_round.toml \ --token zc_xxx \ --output-dir ./results-q3 \ --message-timeout 240 ``` ### 4. 查看结果 结果写在各配置 `[run].output_dir` 下的 `result--.json`(用 `run_stress.sh` 时按上方可选第二参数汇总到同一目录)。 ## 测试用例配置(`cases/`) | 文件 | 用途 | session 策略 | output_dir | |---|---|---|---| | `example_config.toml` | 配置模板/字段示例,新手参考 | single_session | `./results` | | `smoke_test.toml` | **冒烟测试**:混合场景,快速验证基本可用 + 上下文 | single_session | `./results_smoke` | | `long_multi_round.toml` | 长多轮对话:单 session 压测多轮上下文记忆 | single_session | `./results_stress` | | `repeat_message.toml` | 重复消息压测:per_message 高频重复(count=500×2,**耗时很长**) | per_message | `./results_stress` | | `office_scenario.toml` | 办公整理任务压测变体(count=10,**非标准三件套**) | per_message | `./results_stress` | > 标准压测套件(`run_stress.sh`)= `smoke_test` + `long_multi_round` + `repeat_message` 三个配置。`example_config.toml` 是模板,`office_scenario.toml` 是独立变体,均不在标准套件内。 ## 配置文件结构 - `[gateway]`:连接参数(`url` / `token` / `mode` / `message_timeout`) - `[run]`:运行参数(`session_strategy` / `output_dir` / `approval_decision`) - `[scenarios.]`:命名规则集,多个 message 共享 - `[[messages]]`:消息列表,每条声明所属 `scenario` + 可选的 `count` / `file_*` / `required_tools` 字段 ### 场景 | 场景 | 用途 | 关键规则 | |---|---|---| | `office` | 办公任务(总结/整理/生成文件) | max_tools=10, max_duration=3~5min, forbidden `~/.kylinbot/workspace` | | `intent` | 意图识别 | max_tools=0, max_duration=3~10s | | `stress` | 压力/重复 | max_tools=20, max_duration=10min(见 `repeat_message.toml`) | ## 退出码 `kylinbot_test.py`: - `0`:所有 message 成功 - `1`:有 failed 或 skipped - `2`:配置错误或连接级错误 `run_stress.sh`: - `0`:三个配置全部通过 - `1`:至少一个配置失败/出错 - `2`:参数/环境检查未通过(如未提供 token、找不到配置或运行脚本)