This commit is contained in:
2026-02-20 23:04:09 +08:00
parent 43d69d5a99
commit 5d8412bcb6
244 changed files with 9304 additions and 1463 deletions

View File

@@ -1,57 +1,51 @@
# Test & Validation Tools (Unified)
# 测试与验证工具
该目录包含用于测试无人机规划系统、API 接口及 LLM 服务的集成验证工具集
该目录用于接口回归、批量稳定性测试和结果导出
## 🚀 快速开始
使用统一入口脚本启动交互式菜单:
## 快速开始(完整命令)
```bash
python run_tests.py
cd /home/huangfukk/DronePlanning
source backend_service/venv/bin/activate
python tools/test_validate/run_tests.py
```
## 🛠️ 测试模式
### 1. 交互式单次测试 (Mode 1)
- **场景**: 快速验证单条指令,调试 Prompt。
- **操作**: 在终端输入自然语言指令,即时获取结果。
- **输出**: `validation/temporary/{指令名}/`
- `response.json`: 完整 API 响应
- `plan.png`: 可视化任务树
- `process.log`: 请求与响应日志
### 2. 批量/场景测试 (Mode 2)
- **场景**:
- **场景测试**: 验证一组预定义指令的正确性(默认运行 1 次)。
- **稳定性测试**: 对同一组指令进行高频重复测试(如运行 10 次),检测成功率和延迟抖动。
- **操作**:
1. 选择指令文件(位于 `instructions/` 目录)。
2. 输入每条指令的运行次数(默认 1
- **输出**: `validation/{时间戳}/`
- `test_summary.csv`: 统计摘要(成功率、平均耗时)
- `test_details.csv`: 每次运行的详细记录
- `instructions_backup.txt`: 本次测试使用的指令备份
- `{指令名}/`: 包含所有运行的 `.json``.png` 产物
## 📂 目录结构
## 目录说明
```text
tools/test_validate/
├── instructions/ # 指令集文件 (.txt)
├── modules/ # 功能模块
│ ├── api_client.py # API 客户端核心
│ ├── interactive_test.py # 交互式测试逻辑
│ ├── batch_runner.py # 批量测试逻辑
│ ├── visualizer.py # 可视化工具库
│ ├── llm_tester.py # LLM 连接测试
│ └── drone_uploader.py # 任务上传工具
├── validation/ # 测试产物输出
│ ├── temporary/ # 交互式测试结果
│ └── {时间戳}/ # 批量测试结果
└── run_tests.py # 主程序入口
├── instructions/ # 指令集.txt
├── modules/ # API 客户端、批量执行、可视化等
├── validation/ # 输出结果目录
└── run_tests.py # 统一入口
```
## 📄 配置文件
## 使用方式
- **instructions/validate_instructions.txt**: 默认的预定义场景指令集。
- 您可以在 `instructions/` 下添加任意 `.txt` 文件,测试时会在菜单中自动列出供选择。
- Mode 1交互式单条测试快速调试
- Mode 2批量测试场景回归/稳定性)
输出默认在 `tools/test_validate/validation/`,包括:
- `test_summary.csv`
- `test_details.csv`
- 每条指令的 `response.json``plan.png`
## 典型回归流程
```bash
cd /home/huangfukk/DronePlanning
source backend_service/venv/bin/activate
# 先确保后端已启动
./start_all.sh status
# 运行测试菜单
python tools/test_validate/run_tests.py
```
## 常见问题
- 后端未启动:先执行 `./start_all.sh start``./start_all_vllm.sh start`
- API 超时:查看 `logs/fastapi.log` 与模型日志
- 结果目录为空:确认菜单中已实际执行测试轮次

View File

@@ -1,10 +1,10 @@
无人机当前在地面,到广场查找穿色衣服的男子,找到后近距离拍照。
无人机当前在空中,回到广场,对戴帽子的人进行拍照。
无人机当前在空中,去广场西边200米对过往的公交车拍张照,然后返航。
无人机当前在地面,到广场查找绿色公交车,看见了拍个照片。
无人机当前在空中,搜索小汽车,搜索到了我确认后再决定要不要拍照
无人机当前在空中,往广场西边飞200米持续监控5分钟发现人就拍照告诉我到时间可以返航。
无人机当前在地面,到广场边上的施工区域内,发现未戴安全帽的飞近后拍照。
无人机当前在空中,紧急回到广场,看见了红绿灯之后直接降落。
无人机当前在地面,快速去往东边60米身穿白色衣服,头戴帽子在挟持他人的人进行拍照。
无人机当前在空中,离色衣服戴帽子的人太远了照片看不清贴近到3米距离拍拍完可以直接返航。
无人机当前在地面,到飞行场地查找穿色衣服的男子,找到后近距离拍照。
无人机当前在空中,回到飞行场地,对戴帽子的人进行拍照。
无人机当前在空中,去飞行场地西边50米对过往穿红色衣服的人拍张照,然后返航。
无人机当前在地面,到飞行场地查找长头发的人,看见了拍个照片。
无人机当前在空中,搜索穿红色衣服的人,搜索到了拍张照,我确认后再决定要不要返航
无人机当前在空中,往飞行场地西边飞50米持续监控5分钟发现人就拍照告诉我到时间可以返航。
无人机当前在地面,到飞行场地,发现未带帽子的飞近后拍照。
无人机当前在空中,紧急回到飞行场地,看见了之后直接降落。
无人机当前在地面,快速去往东边30米身穿白色衣服,头戴帽子的男子在挟持他人,对其进行拍照。
无人机当前在空中,离色衣服戴帽子的人太远了照片看不清贴近到3米距离拍拍完可以直接返航。

View File

@@ -0,0 +1,10 @@
无人机当前在地面,到飞行场地查找穿红色衣服的男子,找到后近距离拍照。
无人机当前在空中,回到飞行场地,对戴帽子的人进行拍照。
无人机当前在空中去飞行场地西边50米对过往穿红色衣服的人拍张照然后返航。
无人机当前在地面,到飞行场地查找长头发的人,看见了拍个照片。
无人机当前在空中,搜索穿红色衣服的人,搜索到了拍张照,我确认后再决定要不要返航。
无人机当前在空中往飞行场地西边飞50米持续监控5分钟发现人就拍照告诉我到时间可以返航。
无人机当前在地面,到飞行场地,发现未带帽子的飞近后拍照。
无人机当前在空中,紧急回到飞行场地,看见了树之后直接降落。
无人机当前在地面快速去往东边30米有身穿白色衣服头戴帽子的男子在挟持他人对其进行拍照。
无人机当前在空中离白色衣服戴帽子的人太远了照片看不清贴近到3米距离拍拍完可以直接返航。

View File

@@ -0,0 +1,11 @@
instruction,run_id,success,latency,error
无人机当前在地面,到飞行场地查找穿红色衣服的男子,找到后近距离拍照。,1,True,13.293935775756836,
无人机当前在空中,回到飞行场地,对戴帽子的人进行拍照。,1,True,10.266583442687988,
无人机当前在空中去飞行场地西边50米对过往穿红色衣服的人拍张照然后返航。,1,True,11.274949550628662,
无人机当前在地面,到飞行场地查找长头发的人,看见了拍个照片。,1,True,1.6364917755126953,
无人机当前在空中,搜索穿红色衣服的人,搜索到了拍张照,我确认后再决定要不要返航。,1,True,10.27147102355957,
无人机当前在空中往飞行场地西边飞50米持续监控5分钟发现人就拍照告诉我到时间可以返航。,1,True,13.89813232421875,
无人机当前在地面,到飞行场地,发现未带帽子的飞近后拍照。,1,True,3.24064302444458,
无人机当前在空中,紧急回到飞行场地,看见了树之后直接降落。,1,True,19.873026847839355,
无人机当前在地面快速去往东边30米有身穿白色衣服头戴帽子的男子在挟持他人对其进行拍照。,1,True,13.099174499511719,
无人机当前在空中离白色衣服戴帽子的人太远了照片看不清贴近到3米距离拍拍完可以直接返航。,1,True,8.792617082595825,
1 instruction run_id success latency error
2 无人机当前在地面,到飞行场地查找穿红色衣服的男子,找到后近距离拍照。 1 True 13.293935775756836
3 无人机当前在空中,回到飞行场地,对戴帽子的人进行拍照。 1 True 10.266583442687988
4 无人机当前在空中,去飞行场地西边50米,对过往穿红色衣服的人拍张照,然后返航。 1 True 11.274949550628662
5 无人机当前在地面,到飞行场地查找长头发的人,看见了拍个照片。 1 True 1.6364917755126953
6 无人机当前在空中,搜索穿红色衣服的人,搜索到了拍张照,我确认后再决定要不要返航。 1 True 10.27147102355957
7 无人机当前在空中,往飞行场地西边飞50米,持续监控5分钟,发现人就拍照告诉我,到时间可以返航。 1 True 13.89813232421875
8 无人机当前在地面,到飞行场地,发现未带帽子的飞近后拍照。 1 True 3.24064302444458
9 无人机当前在空中,紧急回到飞行场地,看见了树之后直接降落。 1 True 19.873026847839355
10 无人机当前在地面,快速去往东边30米,有身穿白色衣服,头戴帽子的男子在挟持他人,对其进行拍照。 1 True 13.099174499511719
11 无人机当前在空中,离白色衣服戴帽子的人太远了照片看不清,贴近到3米距离拍,拍完可以直接返航。 1 True 8.792617082595825

View File

@@ -0,0 +1,11 @@
Instruction,Total Runs,Success Runs,Success Rate,Avg Latency
无人机当前在地面,到飞行场地查找穿红色衣服的男子,找到后近距离拍照。,1,1,100.0%,13.29s
无人机当前在空中,回到飞行场地,对戴帽子的人进行拍照。,1,1,100.0%,10.27s
无人机当前在空中去飞行场地西边50米对过往穿红色衣服的人拍张照然后返航。,1,1,100.0%,11.27s
无人机当前在地面,到飞行场地查找长头发的人,看见了拍个照片。,1,1,100.0%,1.64s
无人机当前在空中,搜索穿红色衣服的人,搜索到了拍张照,我确认后再决定要不要返航。,1,1,100.0%,10.27s
无人机当前在空中往飞行场地西边飞50米持续监控5分钟发现人就拍照告诉我到时间可以返航。,1,1,100.0%,13.90s
无人机当前在地面,到飞行场地,发现未带帽子的飞近后拍照。,1,1,100.0%,3.24s
无人机当前在空中,紧急回到飞行场地,看见了树之后直接降落。,1,1,100.0%,19.87s
无人机当前在地面快速去往东边30米有身穿白色衣服头戴帽子的男子在挟持他人对其进行拍照。,1,1,100.0%,13.10s
无人机当前在空中离白色衣服戴帽子的人太远了照片看不清贴近到3米距离拍拍完可以直接返航。,1,1,100.0%,8.79s
1 Instruction Total Runs Success Runs Success Rate Avg Latency
2 无人机当前在地面,到飞行场地查找穿红色衣服的男子,找到后近距离拍照。 1 1 100.0% 13.29s
3 无人机当前在空中,回到飞行场地,对戴帽子的人进行拍照。 1 1 100.0% 10.27s
4 无人机当前在空中,去飞行场地西边50米,对过往穿红色衣服的人拍张照,然后返航。 1 1 100.0% 11.27s
5 无人机当前在地面,到飞行场地查找长头发的人,看见了拍个照片。 1 1 100.0% 1.64s
6 无人机当前在空中,搜索穿红色衣服的人,搜索到了拍张照,我确认后再决定要不要返航。 1 1 100.0% 10.27s
7 无人机当前在空中,往飞行场地西边飞50米,持续监控5分钟,发现人就拍照告诉我,到时间可以返航。 1 1 100.0% 13.90s
8 无人机当前在地面,到飞行场地,发现未带帽子的飞近后拍照。 1 1 100.0% 3.24s
9 无人机当前在空中,紧急回到飞行场地,看见了树之后直接降落。 1 1 100.0% 19.87s
10 无人机当前在地面,快速去往东边30米,有身穿白色衣服,头戴帽子的男子在挟持他人,对其进行拍照。 1 1 100.0% 13.10s
11 无人机当前在空中,离白色衣服戴帽子的人太远了照片看不清,贴近到3米距离拍,拍完可以直接返航。 1 1 100.0% 8.79s

View File

@@ -0,0 +1,3 @@
{
"error": "在3次尝试后仍未能生成一个有效的Pytree。"
}

View File

@@ -0,0 +1,10 @@
无人机当前在地面,到飞行场地查找穿红色衣服的男子,找到后近距离拍照。
无人机当前在空中,回到飞行场地,对戴帽子的人进行拍照。
无人机当前在空中去飞行场地西边50米对过往穿红色衣服的人拍张照然后返航。
无人机当前在地面,到飞行场地查找长头发的人,看见了拍个照片。
无人机当前在空中,搜索穿红色衣服的人,搜索到了拍张照,我确认后再决定要不要返航。
无人机当前在空中往飞行场地西边飞50米持续监控5分钟发现人就拍照告诉我到时间可以返航。
无人机当前在地面,到飞行场地,发现未带帽子的飞近后拍照。
无人机当前在空中,紧急回到飞行场地,看见了树之后直接降落。
无人机当前在地面快速去往东边30米有身穿白色衣服头戴帽子的男子在挟持他人对其进行拍照。
无人机当前在空中离白色衣服戴帽子的人太远了照片看不清贴近到3米距离拍拍完可以直接返航。

View File

@@ -0,0 +1,11 @@
instruction,run_id,success,latency,error
无人机当前在地面,到飞行场地查找穿红色衣服的男子,找到后近距离拍照。,1,True,14.206302165985107,
无人机当前在空中,回到飞行场地,对戴帽子的人进行拍照。,1,True,9.870139360427856,
无人机当前在空中去飞行场地西边50米对过往穿红色衣服的人拍张照然后返航。,1,True,11.775025844573975,
无人机当前在地面,到飞行场地查找长头发的人,看见了拍个照片。,1,True,10.768753051757812,
无人机当前在空中,搜索穿红色衣服的人,搜索到了拍张照,我确认后再决定要不要返航。,1,True,10.050657749176025,
无人机当前在空中往飞行场地西边飞50米持续监控5分钟发现人就拍照告诉我到时间可以返航。,1,True,13.982521057128906,
无人机当前在地面,到飞行场地,发现未带帽子的飞近后拍照。,1,True,12.104306697845459,
无人机当前在空中,紧急回到飞行场地,看见了树之后直接降落。,1,True,21.10497808456421,
无人机当前在地面快速去往东边30米有身穿白色衣服头戴帽子的男子在挟持他人对其进行拍照。,1,True,11.49827790260315,
无人机当前在空中离白色衣服戴帽子的人太远了照片看不清贴近到3米距离拍拍完可以直接返航。,1,True,9.288247346878052,
1 instruction run_id success latency error
2 无人机当前在地面,到飞行场地查找穿红色衣服的男子,找到后近距离拍照。 1 True 14.206302165985107
3 无人机当前在空中,回到飞行场地,对戴帽子的人进行拍照。 1 True 9.870139360427856
4 无人机当前在空中,去飞行场地西边50米,对过往穿红色衣服的人拍张照,然后返航。 1 True 11.775025844573975
5 无人机当前在地面,到飞行场地查找长头发的人,看见了拍个照片。 1 True 10.768753051757812
6 无人机当前在空中,搜索穿红色衣服的人,搜索到了拍张照,我确认后再决定要不要返航。 1 True 10.050657749176025
7 无人机当前在空中,往飞行场地西边飞50米,持续监控5分钟,发现人就拍照告诉我,到时间可以返航。 1 True 13.982521057128906
8 无人机当前在地面,到飞行场地,发现未带帽子的飞近后拍照。 1 True 12.104306697845459
9 无人机当前在空中,紧急回到飞行场地,看见了树之后直接降落。 1 True 21.10497808456421
10 无人机当前在地面,快速去往东边30米,有身穿白色衣服,头戴帽子的男子在挟持他人,对其进行拍照。 1 True 11.49827790260315
11 无人机当前在空中,离白色衣服戴帽子的人太远了照片看不清,贴近到3米距离拍,拍完可以直接返航。 1 True 9.288247346878052

View File

@@ -0,0 +1,11 @@
Instruction,Total Runs,Success Runs,Success Rate,Avg Latency
无人机当前在地面,到飞行场地查找穿红色衣服的男子,找到后近距离拍照。,1,1,100.0%,14.21s
无人机当前在空中,回到飞行场地,对戴帽子的人进行拍照。,1,1,100.0%,9.87s
无人机当前在空中去飞行场地西边50米对过往穿红色衣服的人拍张照然后返航。,1,1,100.0%,11.78s
无人机当前在地面,到飞行场地查找长头发的人,看见了拍个照片。,1,1,100.0%,10.77s
无人机当前在空中,搜索穿红色衣服的人,搜索到了拍张照,我确认后再决定要不要返航。,1,1,100.0%,10.05s
无人机当前在空中往飞行场地西边飞50米持续监控5分钟发现人就拍照告诉我到时间可以返航。,1,1,100.0%,13.98s
无人机当前在地面,到飞行场地,发现未带帽子的飞近后拍照。,1,1,100.0%,12.10s
无人机当前在空中,紧急回到飞行场地,看见了树之后直接降落。,1,1,100.0%,21.10s
无人机当前在地面快速去往东边30米有身穿白色衣服头戴帽子的男子在挟持他人对其进行拍照。,1,1,100.0%,11.50s
无人机当前在空中离白色衣服戴帽子的人太远了照片看不清贴近到3米距离拍拍完可以直接返航。,1,1,100.0%,9.29s
1 Instruction Total Runs Success Runs Success Rate Avg Latency
2 无人机当前在地面,到飞行场地查找穿红色衣服的男子,找到后近距离拍照。 1 1 100.0% 14.21s
3 无人机当前在空中,回到飞行场地,对戴帽子的人进行拍照。 1 1 100.0% 9.87s
4 无人机当前在空中,去飞行场地西边50米,对过往穿红色衣服的人拍张照,然后返航。 1 1 100.0% 11.78s
5 无人机当前在地面,到飞行场地查找长头发的人,看见了拍个照片。 1 1 100.0% 10.77s
6 无人机当前在空中,搜索穿红色衣服的人,搜索到了拍张照,我确认后再决定要不要返航。 1 1 100.0% 10.05s
7 无人机当前在空中,往飞行场地西边飞50米,持续监控5分钟,发现人就拍照告诉我,到时间可以返航。 1 1 100.0% 13.98s
8 无人机当前在地面,到飞行场地,发现未带帽子的飞近后拍照。 1 1 100.0% 12.10s
9 无人机当前在空中,紧急回到飞行场地,看见了树之后直接降落。 1 1 100.0% 21.10s
10 无人机当前在地面,快速去往东边30米,有身穿白色衣服,头戴帽子的男子在挟持他人,对其进行拍照。 1 1 100.0% 11.50s
11 无人机当前在空中,离白色衣服戴帽子的人太远了照片看不清,贴近到3米距离拍,拍完可以直接返航。 1 1 100.0% 9.29s

View File

@@ -0,0 +1,3 @@
{
"error": "在3次尝试后仍未能生成一个有效的Pytree。"
}