自动化测试

硬件测试方案

目录

  1. 项目背景与目标
  2. 整体系统架构
  3. GUI界面设计详细方案
  4. 仪器可编程控制层(核心)
  5. 自动数据采集与参数提取
  6. 规格书自动解析与标准建立
  7. 历史数据库与趋势分析
  8. AI智能波形识别与异常检测
  9. 自动报告生成
  10. 完整测试流程与状态机
  11. 技术选型与依赖清单
  12. 项目开发阶段与里程碑
  13. 部署与运维

1. 项目背景与目标

1.1 传统测试痛点

痛点 影响
手动连接、设置、读数,每个测试点耗时5~10分钟 批量测试效率极低
肉眼判断波形异常(毛刺、振铃、过冲) 主观性强,漏检率高
测试数据手工记录,格式不统一 追溯困难,无法做SPC分析
规格书参数人工比对 易错,尤其当规格版本更新时
报告手工整理,每人格式不同 客户审核时难以统一

1.2 系统目标

  • 一键测试:工程师仅需连接设备并点击“开始”,后续全自动。
  • 标准化:所有测试步骤、判定准则、报告格式完全统一。
  • 智能化:AI辅助波形判读,规格书自动解析,趋势预警告警。
  • 平台化:支持多种仪器(示波器、电源、万用表、信号源)和多种产品类型。

1.3 适用场景

  • 研发阶段的设计验证(DVT)
  • 生产线的在线测试(ICT / FCT)
  • 质量部门的来料检验(IQC)
  • 售后故障复现与分析

2. 整体系统架构

采用六层分层架构,便于模块替换与扩展。

层级 功能 技术组件
表现层 GUI人机交互 PyQt5 / PySide6,QML可视化
控制层 测试流程编排、状态管理 自定义测试引擎(State Machine)
设备接入层 仪器连接与命令封装 PyVISA + 各厂商VICP/LAN驱动
数据处理层 参数提取、波形预处理、单位转换 NumPy, SciPy, Pandas
智能分析层 AI识别、规格解析、异常检测 OpenCV, PyTorch, Tesseract OCR
数据持久层 测试记录、规格库、历史趋势 SQLite / MySQL, MinIO(波形图存储)

架构图(文字描述)

[测试工程师] → [GUI (PyQt)]
        ↓
[测试引擎] → 解析用户选择的测试项,加载对应的测试序列(JSON/YAML)
        ↓
[设备管理器] → 根据序列指令,通过PyVISA控制示波器、电源等
        ↓
[数据采集器] → 读取波形数据(二进制或CSV)和测量参数(SCPI查询)
        ↓
[数据分析器] → 计算Vpp、Freq、RiseTime等,并做单位归一化
        ↓
[判定模块] → 结合规格书标准(来自DB)和历史趋势,输出Pass/Fail/Warning
        ↓
[报告生成器] → 填充模板,插入波形截图,输出PDF/Excel

3. GUI界面设计详细方案

3.1 主窗口布局(采用Dockable窗口)

区域 内容 实现说明
顶部工具栏 连接/断开设备、开始/停止测试、紧急停止 大按钮,颜色标识(绿/红/黄)
左侧面板 测试项目树形列表(按产品/板卡分类) 支持多选,批量测试
中央区 波形显示(Matplotlib嵌入) 实时刷新,支持缩放/游标测量
右侧面板 实时参数数值表(Vpp, Freq, …) 动态更新,Pass/Fail标色
底部日志 测试步骤日志、错误信息 支持保存至文件
状态栏 设备连接状态、当前测试进度条 显示剩余时间估算

3.2 关键界面设计细节

  • 设备连接弹窗:自动扫描可用VISA资源,显示设备型号和序列号,支持手动输入地址(如TCP/IP)。
  • 测试配置页:允许用户选择规格书版本(PDF自动解析后入库),选择测试项(如“上电时序”、“纹波噪声”),并可设定循环次数或批量样本数。
  • 实时数据显示:以表格和仪表盘形式展示,例如电压用Gauge控件,频率用数字+趋势小图。
  • 波形截图预览:每次测试自动保存截图,并缩略图显示在底部时间轴上,点击可放大查看。
  • 报告预览:内置报告预览窗口,在生成前可检查内容和排版。

3.3 用户权限管理

  • 管理员:可修改测试参数、规格书、仪器配置。
  • 测试工程师:可执行测试、导出报告、查看历史。
  • 访客:仅查看结果。

使用RBAC模型,登录采用LDAP或本地加密数据库。


4. 仪器可编程控制层(核心)

4.1 VISA通信框架

  • 使用 PyVISA 作为统一抽象层,支持:
    • USB (USB-TMC/ USB-RAW)
    • LAN (VXI-11, HiSLIP, Socket)
    • GPIB (需安装NI-488.2或linux-gpib)
    • RS232 (通过VISA Serial)
  • 兼容主流品牌:Keysight, Tektronix, R&S, Lecroy, Keithley, Fluke等。

4.2 设备抽象类设计(Python)

class InstrumentBase(ABC):
    @abstractmethod
    def connect(self, address: str, timeout=5000) -> bool: ...
    @abstractmethod
    def disconnect(self): ...
    @abstractmethod
    def query(self, cmd: str) -> str: ...
    @abstractmethod
    def write(self, cmd: str): ...
    @abstractmethod
    def read_raw(self) -> bytes: ...

class Oscilloscope(InstrumentBase):
    def setup_timebase(self, scale: float, position: float): ...
    def setup_channel(self, ch: int, vscale: float, vpos: float, coupling='DC'): ...
    def setup_trigger(self, source: int, level: float, slope='POS'): ...
    def acquire_single(self): ...
    def read_waveform(self, channel: int) -> np.ndarray: ...
    def measure_parameter(self, param: str, source: int) -> float: ...
    def save_screenshot(self, filepath: str): ...

4.3 常用SCPI命令封装(示波器为例)

功能 SCPI命令 示例
复位 *RST
自动量程 :AUToscale
设置水平刻度 :TIMebase:SCALe 1e-3 1ms/div
设置垂直刻度 :CHANnel1:SCALe 2.0 2V/div
设置触发边沿 :TRIGger:A:EDGe:SLOPe POSitive 上升沿
读取Vpp :MEASure:VPP? CHANnel1 返回数值
读取波形数据 :WAVeform:DATA? 返回二进制字节流
硬拷贝(截图) :DISPlay:DATA? PNG 返回PNG图像

4.4 设备自动发现与连接管理

  • 程序启动时自动扫描所有VISA资源,缓存设备信息。
  • 支持配置常用仪器列表(存储IP或USB地址),快速连接。
  • 心跳检测:每5秒查询*IDN?,若超时则自动重连,并记录异常。

4.5 错误处理与重试机制

  • 每次SCPI操作封装try-except,若超时则重试最多3次。
  • 对于测量值明显异常(如NaN或超出物理范围),标记为“无效”并提示用户检查探头连接。

5. 自动数据采集与参数提取

5.1 参数读取方式

分为两类:

  1. 仪表内置测量(最快):使用MEASure类SCPI命令直接读取Vpp, Freq, RiseTime等。
  2. 波形后处理(更灵活):下载原始波形数据(Y轴电压数组+X轴时间数组),由软件使用NumPy计算:
    • Vpp = max - min
    • Vrms = sqrt(mean(square))
    • 频率 = 通过过零检测或FFT
    • 上升时间 = 10%~90%跨度时间
    • 过冲 = (max - 稳定值) / 稳定值 ×100%

5.2 波形数据解析(二进制转数值)

示波器波形数据常见格式:

  • BYTE(8位)或 WORD(16位),带参考电压和缩放因子。
  • PyVISA读取后,按照示波器返回的:WAVeform:XINCrement?(时间增量)和:WAVeform:YREFerence?(参考点)等参数还原物理值。
  • 示例解析函数:
def parse_waveform(raw_bytes, x_increment, x_origin, y_increment, y_origin, y_reference):
    # 将字节转为整型数组(有符号/无符号根据格式)
    int_vals = ... 
    voltages = (int_vals - y_reference) * y_increment + y_origin
    times = np.arange(len(voltages)) * x_increment + x_origin
    return times, voltages

5.3 多通道同步采集

  • 支持同时读取多个通道(如CH1电压,CH2电流),时间对齐。
  • 可配置触发源,保证多通道相位一致。

5.4 数据校验与单位转换

  • 自动识别单位(V, mV, A, mA, Hz, kHz, s, ns等),统一转为SI单位后存储。
  • 判异准则:若某参数超出传感器量程,立即终止测试并报警。

6. 规格书自动解析与标准建立

6.1 支持的文件格式

  • PDF(含文本层):使用pdfplumber提取表格和段落。
  • PDF(扫描版/图片):使用pytesseract (Tesseract OCR) + PIL 进行文字识别,再用正则提取参数。
  • Word (.docx):使用python-docx读取表格。
  • Excel (.xlsx):使用openpyxlpandas,最稳定。
  • 纯文本/CSV:直接解析。

6.2 参数提取规则(基于正则与关键词)

建立关键词词典,例如:

PATTERNS = {
    "voltage": r"(?:output voltage|vout|voltage).*?(\d+\.?\d*)\s*(V|mV)",
    "ripple": r"(?:ripple|纹波).*?(\d+\.?\d*)\s*(mV|V)",
    "rise_time": r"(?:rise time|tr).*?(\d+\.?\d*)\s*(ns|us|ms|s)",
    "tolerance": r"±(\d+\.?\d*)\s*%",
}

提取后存入数据库的spec_limits表,结构如下:

product_id parameter min_value max_value unit tolerance_type
PSU-100 Vout 11.4 12.6 V absolute
PSU-100 Ripple 0 100 mV absolute
PSU-100 RiseTime 0 10 ms absolute

6.3 规格书版本管理

  • 每个产品可关联多个规格书版本(Rev1.0, Rev2.0)。
  • 测试时选择当前有效版本,所有判定以此为准。
  • 历史数据仍保留测试时使用的版本ID,方便追溯。

6.4 自动更新与审核

  • 当解析到新规格书时,自动比对差异,提示管理员审核变更点。
  • 变更记录审计日志。

7. 历史数据库与趋势分析

7.1 数据模型(核心表)

-- 测试记录主表
test_records (
    id INT PK,
    product_id VARCHAR(50),
    spec_version_id INT,
    tester VARCHAR(50),
    test_start_time DATETIME,
    test_end_time DATETIME,
    overall_result ENUM('PASS','FAIL','WARNING'),
    waveform_image_path VARCHAR(255)   -- 存储截图文件路径或MinIO URL
)

-- 测量参数详情表
test_measurements (
    id INT PK,
    record_id INT FK,
    param_name VARCHAR(50),
    value DOUBLE,
    unit VARCHAR(10),
    min_limit DOUBLE,
    max_limit DOUBLE,
    result ENUM('PASS','FAIL','WARNING')
)

-- 规格书表
spec_limits (
    id INT PK,
    product_id VARCHAR(50),
    param_name VARCHAR(50),
    min_value DOUBLE,
    max_value DOUBLE,
    unit VARCHAR(10),
    version VARCHAR(20),
    effective_date DATE
)

7.2 历史趋势分析

  • 按产品/参数/时间维度查询,绘制控制图(X-bar, R图)或箱线图
  • 自动计算Cpk(过程能力指数),若Cpk<1.33则发出预警。
  • 异常检测:使用移动极差规则,自动标记离群值。

7.3 数据库选择

  • 研发/单机:SQLite(轻量,无需服务端)。
  • 产线/多用户:MySQL / PostgreSQL(支持并发),可配合Redis做缓存。

7.4 数据备份与归档

  • 每日自动备份到NAS或云存储。
  • 超过一年的数据压缩归档,但仍支持查询。

8. AI智能波形识别与异常检测

8.1 当前实现方案(基于规则+图像处理)

  • OpenCV预处理
    • 灰度化 → 二值化 → 边缘检测(Canny) → 提取波形轮廓。
    • 通过轮廓拟合得到波形曲线点集。
  • 特征工程
    • 峰值数量、过冲幅度、振铃频率、噪声功率谱密度。
    • 与理想波形(标准模板)做DTW(动态时间规整)相似度比较。
  • 规则判定
    • 若过冲 > 5% → Fail
    • 若振铃幅度 > 10% → Fail
    • 若高频噪声超过阈值 → Warning

8.2 未来升级方向(深度学习)

  • 数据集准备:收集历史测试波形截图,人工标注“正常”、“过冲”、“振铃”、“噪声异常”、“缺失”等标签。
  • 模型选择:采用轻量级CNN如MobileNetV3ResNet18,输入为波形截图(224x224)。
  • 训练与部署
    • 使用PyTorch训练,导出ONNX模型。
    • 推理时加载模型,对截图进行预测,输出各类别概率。
    • 结合规则引擎(若模型置信度<0.8,则转为人工复核)。
  • 持续学习:将人工复核后的数据回传,定期增量训练。

8.3 规格书文本理解(LLM辅助)

  • 对于非结构化的规格书描述(如“上升时间应小于10ms,且过冲不超过5%”),可使用本地部署的轻量级LLM(如Qwen2.5-7B)进行信息抽取。
  • 也可用于生成测试结论描述(例如:“Ripple为45mV,小于100mV,Pass;但波形存在轻微振铃,建议检查布局”),提高报告可读性。

8.4 性能优化

  • GPU推理(NVIDIA CUDA)或Intel OpenVINO加速。
  • 对批量测试,使用异步队列,避免阻塞主流程。

9. 自动报告生成

9.1 报告模板引擎

  • 使用 Jinja2 生成HTML中间格式,再通过 WeasyPrintwkhtmltopdf 转换为PDF。
  • Excel报告使用 openpyxl 写入模板,支持图表嵌入。
  • 报告内容:
    • 封面:公司Logo、产品名称、测试日期、测试人。
    • 测试配置:仪器型号、规格书版本、测试项目列表。
    • 测试结果汇总表(所有参数值、限值、判定)。
    • 波形截图(每个通道独立图片)。
    • 趋势图(如果该产品有历史数据)。
    • AI分析结论(异常描述)。
    • 签名栏(电子签名)。

9.2 批量报告生成

  • 支持一次测试多个样本(例如10个DUT),生成一个综合报告,包含每个DUT的独立表格和汇总统计(均值、标准差、PPM)。

9.3 自动化分发

  • 报告生成后自动保存至指定网络路径。
  • 可配置邮件通知(使用smtplib)发送给相关人员。
  • 可上传至MES系统(通过REST API)。

10. 完整测试流程与状态机

10.1 测试引擎状态机

IDLE → CONNECTING → CONNECTED → CONFIGURING → ACQUIRING → ANALYZING → JUDGING → REPORTING → IDLE
                       ↓ (错误)
                    ERROR → 重试/停止
  • IDLE:就绪,等待用户操作。
  • CONNECTING:尝试连接所有所需仪器。
  • CONFIGURING:按照测试序列逐个设置仪器参数(时基、电压、触发等)。
  • ACQUIRING:发送“单次触发”命令,等待采集完成(轮询*OPC?)。
  • ANALYZING:读取测量参数和波形数据,进行数值计算和AI推理。
  • JUDGING:与规格书比较,结合历史趋势,输出每个参数结果和整体结论。
  • REPORTING:生成报告并保存。
  • ERROR:任一环节失败进入,可重试或跳过。

10.2 测试序列定义(JSON示例)

{
  "test_name": "Power Supply Startup Test",
  "instruments": {
    "oscilloscope": "192.168.1.100",
    "dc_power": "USB::0x1234::0x5678"
  },
  "steps": [
    {
      "step_id": 1,
      "action": "set_power_output",
      "params": {"voltage": 12, "current": 3}
    },
    {
      "step_id": 2,
      "action": "scope_setup",
      "params": {"timebase": 0.01, "ch1_vscale": 5, "trigger_level": 6}
    },
    {
      "step_id": 3,
      "action": "acquire_waveform",
      "channels": [1, 2]
    },
    {
      "step_id": 4,
      "action": "measure_params",
      "params": ["VPP", "FREQ", "RISE"]
    }
  ]
}

10.3 并行测试支持

  • 对于多台相同仪器的产线,可启动多个测试实例(多进程),每个实例连接不同的仪器地址。
  • 使用Redis队列管理任务分配,主控界面显示所有工位的测试状态。

11. 技术选型与依赖清单

11.1 核心框架

组件 技术 版本
编程语言 Python 3.10+
GUI框架 PyQt5 / PySide6 5.15+
仪器通信 PyVISA + pyvisa-py (纯Python后端) 1.13+
数值计算 NumPy, SciPy 1.24+
数据处理 Pandas 2.0+
数据库 SQLite (开发) / MySQL 8.0 (生产)
PDF生成 WeasyPrint / reportlab 60+
Excel读写 openpyxl 3.1+
图像处理 OpenCV-Python 4.8+
深度学习 PyTorch (或TensorFlow) 2.0+
OCR pytesseract + Tesseract-OCR 5.0
PDF文本解析 pdfplumber, PyPDF2 0.10+
日志 logging + loguru
配置管理 PyYAML, python-dotenv
任务队列 Celery (可选,用于异步AI推理)

11.2 开发工具

  • IDE: PyCharm / VS Code
  • 版本控制: Git + GitLab(CI/CD)
  • 虚拟环境: Poetry / Conda
  • 打包工具: PyInstaller (生成exe) / Inno Setup (安装包)

12. 项目开发阶段与里程碑

阶段 工作内容 预计周期 状态
P0 - 基础框架 搭建GUI主界面,设备连接模块(PyVISA),日志系统 2周 ✅ 已完成
P1 - 示波器控制 实现示波器基本控制(时基、电压、触发),能读取截图和测量值 3周 ✅ 已完成
P2 - 数据采集 实现波形下载和参数自动读取,支持多通道 2周 🔄 联调中
P3 - 测试用例管理 支持从Excel/CSV导入测试项,测试序列执行引擎 2周 🔄 开发中
P4 - 规格书解析 PDF/OCR解析,提取参数限值并存入数据库 3周 🔄 开发中
P5 - 历史数据对比 建立数据库模型,实现历史查询、趋势图、自动预警 2周 🔄 开发中
P6 - 报告生成 PDF/Excel报告模板,自动填充数据 2周 📋 规划中
P7 - AI识别模块 基于OpenCV的波形异常检测,深度学习模型训练与部署 4周 📋 规划中
P8 - 系统集成测试 端到端测试,性能优化,文档编写 2周 📋 规划中
P9 - 用户验收与部署 现场试运行,反馈修复,交付 2周 📋 规划中

总预估周期:约24周(6个月),可根据团队人力并行推进缩短。


13. 部署与运维

13.1 部署模式

  • 单机版:安装在工程师PC或工控机上,使用SQLite本地数据库,适合研发测试。
  • 服务器-客户端版:中心服务器部署MySQL+文件存储,客户端通过网络连接,适合产线多工位。

13.2 环境要求

  • 操作系统:Windows 10/11(首选),支持Linux(Ubuntu 20.04+)。
  • 仪器驱动:需安装NI-VISA或pyvisa-py(纯Python,无需额外驱动)。
  • 对于USB设备,需配置相应权限(Linux下需添加udev规则)。

13.3 持续集成与更新

  • 使用GitLab CI自动构建可执行文件。
  • 提供自动更新功能(检查版本,下载差分包)。
  • 配置远程日志收集(ELK或Sentry),便于故障诊断。

13.4 安全性

  • 数据库连接加密(TLS)。
  • 敏感配置(如数据库密码)使用环境变量或Windows凭据管理器。
  • 操作日志记录所有用户的动作,满足审计要求。

14. 项目价值与展望

  • 短期价值:测试效率提升70%以上,人为错误归零,报告规范化,客户满意度提升。
  • 中期价值:积累大量测试数据,可开展质量预测、良率分析,辅助研发改进设计。
  • 长期价值:AI模型持续进化,逐步实现全自动“黑灯测试”;可与MES、PLM系统深度集成,成为企业数字化制造的核心环节。

本方案文档版本 V2.0,最后更新于2026年7月。

posted @ 2026-07-13 10:53  mo686  阅读(30)  评论(0)    收藏  举报