|
|
||
|---|---|---|
| .vscode | ||
| config | ||
| data | ||
| logs | ||
| security | ||
| src | ||
| .gitignore | ||
| CHANGELOG.md | ||
| CONFIG_EDITOR_COMPLETE.md | ||
| CONFIG_EDITOR_GUIDE.md | ||
| CONFIG_QUICK_REFERENCE.md | ||
| ERROR_FIX_LOG.md | ||
| FEATURE_COMPLETE_REPORT.md | ||
| LOGIN_LAYOUT_FIX.md | ||
| LOGIN_OVERLAP_FIX.md | ||
| PROJECT_STRUCTURE.txt | ||
| README.md | ||
| TEST_LOGIC_FIX.md | ||
| UI_FIX_SUMMARY.md | ||
| UI_IMPROVEMENTS.md | ||
| diagnose_serial.py | ||
| edit_config.py | ||
| production_test_tool.spec | ||
| requirements.txt | ||
| run.bat | ||
| run.sh | ||
| test_ui.py | ||
| verify_imports.py | ||
| 使用指南.md | ||
| 项目完成报告.txt | ||
README.md
采集箱出厂测试工具
项目简介
这是一个用于自动化测试和配置采集箱设备的桌面应用程序。通过串口和SSH连接,自动完成设备的初始化配置、网络设置、安全加固等出厂测试流程。
功能特性
- 串口通信: 自动检测串口,建立与设备的串口连接
- 硬件信息读取: 读取CPU序列号、MAC地址等硬件唯一标识
- 密码管理: 自动生成高强度随机密码,支持加密存储
- 网络配置: 自动配置双网卡(ETH-H0/ETH-H1)网络参数
- SSH连接: 测试SSH远程连接功能
- 文件传输: 支持SFTP文件上传下载
- 系统配置: 时区设置、时间同步等
- 测试报告: 自动生成测试报告,支持导出
- 用户管理: 多用户支持,角色权限控制
- 审计日志: 完整的操作日志记录
项目结构
production_test_tool/
├── src/ # 源代码目录
│ ├── main.py # 程序入口
│ ├── models.py # 数据模型
│ ├── database.py # 数据库操作
│ ├── serial_manager.py # 串口管理
│ ├── ssh_manager.py # SSH管理
│ ├── password_manager.py # 密码管理
│ ├── test_engine.py # 测试引擎
│ ├── ui/ # UI界面模块
│ │ ├── main_window.py # 主窗口
│ │ ├── login_dialog.py # 登录对话框
│ │ ├── widgets.py # 自定义控件
│ │ └── styles.py # 样式表
│ └── utils/ # 工具模块
│ ├── config.py # 配置管理
│ ├── logger.py # 日志工具
│ └── helpers.py # 辅助函数
├── config/ # 配置文件
│ ├── config.json # 主配置
│ └── test_items.json # 测试项配置
├── data/ # 数据目录
│ └── production_test.db # SQLite数据库
├── logs/ # 日志目录
├── resources/ # 资源文件
│ ├── icons/ # 图标
│ └── templates/ # 模板文件
├── requirements.txt # Python依赖
└── README.md # 项目说明
安装要求
系统要求
- Windows 10/11 或 Linux
- Python 3.8+
- 串口设备驱动
Python依赖
pip install -r requirements.txt
主要依赖包:
- PyQt5 >= 5.15.0 (GUI界面)
- pyserial >= 3.5 (串口通信)
- paramiko >= 3.0.0 (SSH连接)
- cryptography >= 41.0.0 (加密)
- bcrypt >= 4.0.0 (密码哈希)
- reportlab >= 4.0.0 (PDF报告)
快速开始
1. 安装依赖
pip install -r requirements.txt
2. 运行程序
python src/main.py
3. 登录系统
- 默认用户名:
admin - 默认密码:
admin123
4. 开始测试
- 输入设备序列号
- 选择串口
- 点击"开始测试"按钮
配置说明
网络配置 (config/config.json)
{
"network": {
"eth0": {
"connection_name": "ETH-H0",
"ip": "192.168.0.3",
"netmask": "255.255.255.0",
"gateway": "192.168.0.1",
"ethtool": {
"speed": 100,
"duplex": "full",
"autoneg": "off"
}
},
"eth1": {
"connection_name": "ETH-H1",
"ip": "10.0.5.232",
"netmask": "255.255.255.0",
"gateway": "10.0.5.1"
}
}
}
测试项配置 (config/test_items.json)
可以自定义测试流程,添加或修改测试项目。
📝 配置文件编辑器
新增了专业的 JSON 配置文件编辑窗口,支持可视化编辑配置文件。
快速打开
- 快捷键:
Ctrl+, - 菜单: 工具 → 编辑配置文件
- 脚本:
python edit_config.py
功能特性
- 树形结构展示 JSON 配置
- 智能编辑器(自动适配数据类型)
- JSON 格式验证
- 自动备份原文件
- 修改跟踪和确认
使用场景
修改串口波特率、网络参数、SSH配置、测试超时等,无需手动编辑 JSON。
📖 详见: CONFIG_QUICK_REFERENCE.md
测试流程
- 串口连接建立 - 建立与设备的串口通信
- 读取硬件信息 - 获取CPU序列号等硬件ID
- 修改默认密码 - 将默认密码改为临时密码
- 设置系统时区 - 设置为Asia/Shanghai
- 配置网络接口ETH-H1 - 配置ethernet1
- 配置网络接口ETH-H0 - 配置ethernet0(含ethtool参数)
- SSH连接测试 - 测试SSH远程连接
- 文件传输测试 - 测试SFTP文件传输
- 网络连通性测试 - ping网关测试
- 系统时间同步 - 同步主机时间到设备
- 设置最终强密码 - 生成并设置高强度随机密码
- 生成设备标识文件 - 创建/etc/device_identity
打包为可执行文件
使用PyInstaller打包:
pyinstaller --onefile --windowed --name "采集箱出厂测试工具" src/main.py
或使用.spec配置文件进行高级打包。
开发说明
代码规范
- 遵循PEP 8编码规范
- 使用类型注解
- 编写完整的文档字符串
测试
# 运行单元测试
python -m pytest tests/
日志
日志文件保存在 logs/ 目录,按日期自动分割。
安全说明
- 密码加密: 所有密码使用bcrypt哈希存储,设备密码使用Fernet对称加密
- 密钥保护: 主密钥文件设置600权限,仅所有者可读写
- 审计日志: 所有操作记录完整日志,便于追溯
- 会话管理: 支持自动锁定,防止未授权访问
故障排除
串口无法连接
- 检查设备驱动是否正确安装
- 确认串口未被其他程序占用
- 尝试更换USB端口
SSH连接失败
- 确认设备IP地址正确
- 检查网络连通性
- 验证用户名密码
数据库错误
- 检查data目录写入权限
- 删除损坏的数据库文件重新初始化
版本历史
v1.0.0 (2024-01)
- 初始版本发布
- 支持完整的12步测试流程
- 用户管理和审计日志
- 测试报告生成
许可证
MIT License
联系方式
如有问题或建议,请联系开发团队。