编写信号发生器脚本的测试用例需要覆盖功能、性能、边界条件及异常场景,确保脚本在各种情况下能正确生成信号并处理错误。以下是详细的测试用例设计方法和示例:
一、测试用例设计原则
- 功能覆盖:验证脚本能否生成指定类型(正弦波、方波、三角波等)、频率、幅度和相位的信号。
- 边界条件:测试频率/幅度上下限、占空比极值、相位偏移边界等。
- 异常处理:模拟非法输入(如负频率、超范围幅度)和硬件故障(如时钟丢失)。
- 性能指标:验证信号生成延迟、频率切换时间、资源占用(CPU/内存)。
- 兼容性:测试不同操作系统、硬件平台或依赖库版本的兼容性。
二、测试用例分类与示例
1. 功能测试
目标:验证信号生成的基本功能是否正确。
示例用例:
- TC1-正弦波生成
- 输入:类型=正弦波,频率=1kHz,幅度=2Vpp,相位=0°
- 预期输出:生成正弦波,频谱分析显示主频为1kHz,谐波失真<1%。
- 验证方法:使用示波器或频谱分析仪捕获输出信号。
- TC2-方波占空比控制
- 输入:类型=方波,频率=10kHz,占空比=30%
- 预期输出:高电平持续时间=30μs,低电平=70μs(周期100μs)。
- 验证方法:示波器测量占空比。
- TC3-多通道同步输出
- 输入:通道1=1kHz正弦波,通道2=2kHz方波,同步触发
- 预期输出:两通道信号起始时间差<1μs。
- 验证方法:双通道示波器观察相位关系。
2. 边界条件测试
目标:验证脚本在极限参数下的行为。
示例用例:
- TC4-最小频率生成
- 输入:频率=0.1Hz(接近硬件最低限制)
- 预期输出:信号周期=10s,无丢周期或跳变。
- 验证方法:长时间记录输出信号。
- TC5-最大幅度输出
- 输入:幅度=10Vpp(接近DAC最大输出)
- 预期输出:信号幅度=10Vpp±5%,无削波。
- 验证方法:示波器测量峰峰值。
- TC6-相位偏移边界
- 输入:相位=359°(接近360°循环)
- 预期输出:相位与0°信号几乎重合,误差<1°。
- 验证方法:李萨如图形分析。
3. 异常处理测试
目标:验证脚本对非法输入或硬件故障的响应。
示例用例:
- TC7-负频率输入
- 输入:频率=-5kHz
- 预期输出:脚本报错“频率必须为正数”,不生成信号。
- 验证方法:检查日志或控制台输出。
- TC8-超范围幅度
- 输入:幅度=15Vpp(超过DAC限制)
- 预期输出:自动限幅至10Vpp,并提示“幅度超出范围”。
- 验证方法:示波器测量输出幅度+日志检查。
- TC9-时钟丢失模拟
- 操作:断开外部时钟源
- 预期输出:脚本检测到时钟丢失,切换至内部时钟或报错停止。
- 验证方法:观察脚本日志和输出信号状态。
4. 性能测试
目标:评估信号生成的实时性和资源占用。
示例用例:
- TC10-频率切换延迟
- 操作:从1kHz切换至10kHz,测量切换时间
- 预期输出:切换延迟<1ms,无瞬态过冲。
- 验证方法:高速示波器捕捉切换瞬间。
- TC11-CPU占用率
- 操作:同时生成4通道高频信号(如1MHz)
- 预期输出:CPU占用率<50%(依赖硬件配置)。
- 验证方法:任务管理器或性能分析工具。
- TC12-长时间稳定性
- 操作:连续运行24小时生成1kHz信号
- 预期输出:频率漂移<0.01%,无崩溃或内存泄漏。
- 验证方法:频谱分析仪定期监测+系统日志检查。
5. 兼容性测试
目标:确保脚本在不同环境下的可靠性。
示例用例:
- TC13-跨平台运行
- 环境:Windows 10/Linux Ubuntu 20.04
- 预期输出:脚本在两系统下均能正常生成信号。
- 验证方法:在两平台分别执行测试用例。
- TC14-依赖库版本
- 环境:NumPy 1.21 vs 1.24
- 预期输出:信号生成功能不受库版本影响。
- 验证方法:单元测试对比输出结果。
三、测试工具与自动化
- 硬件工具:示波器、频谱分析仪、信号发生器(用于对比)。
- 软件工具:
- Python:
unittest或pytest框架编写测试脚本。 - MATLAB:生成参考信号与脚本输出对比。
- LabVIEW:自动化硬件测试流程。
- 自动化示例(Python伪代码):
| import pytest |
| from signal_generator import generate_signal |
|
| def test_sine_wave(): |
| signal = generate_signal(type="sine", freq=1e3, amp=2.0, phase=0) |
| # 使用频谱分析仪验证频谱 |
| assert verify_spectrum(signal, expected_freq=1e3, thd=<0.01) |
|
| def test_invalid_freq(): |
| with pytest.raises(ValueError): |
| generate_signal(freq=-5e3) |
四、测试报告与迭代
- 报告内容:通过率、失败用例详情、性能指标汇总、环境信息。
- 迭代优化:根据测试结果调整脚本参数(如滤波器系数)、优化算法或修复硬件问题。
五、高级测试场景
- 动态信号生成:验证脚本能否实时响应外部触发(如GPIO中断)。
- 噪声注入测试:在输入信号中添加高斯噪声,验证脚本的抗噪能力。
- 多线程/多进程测试:确保并发生成信号时无资源冲突。
通过系统化的测试用例设计,可全面验证信号发生器脚本的可靠性和性能,为实际应用提供保障。