編寫信號發(fā)生器腳本的測試用例需要覆蓋功能、性能、邊界條件及異常場景,確保腳本在各種情況下能正確生成信號并處理錯誤。以下是詳細(xì)的測試用例設(shè)計方法和示例:
一、測試用例設(shè)計原則
- 功能覆蓋:驗證腳本能否生成指定類型(正弦波、方波、三角波等)、頻率、幅度和相位的信號。
- 邊界條件:測試頻率/幅度上下限、占空比極值、相位偏移邊界等。
- 異常處理:模擬非法輸入(如負(fù)頻率、超范圍幅度)和硬件故障(如時鐘丟失)。
- 性能指標(biāo):驗證信號生成延遲、頻率切換時間、資源占用(CPU/內(nèi)存)。
- 兼容性:測試不同操作系統(tǒng)、硬件平臺或依賴庫版本的兼容性。
二、測試用例分類與示例
1. 功能測試
目標(biāo):驗證信號生成的基本功能是否正確。
示例用例:
- TC1-正弦波生成
- 輸入:類型=正弦波,頻率=1kHz,幅度=2Vpp,相位=0°
- 預(yù)期輸出:生成正弦波,頻譜分析顯示主頻為1kHz,諧波失真<1%。
- 驗證方法:使用示波器或頻譜分析儀捕獲輸出信號。
- TC2-方波占空比控制
- 輸入:類型=方波,頻率=10kHz,占空比=30%
- 預(yù)期輸出:高電平持續(xù)時間=30μs,低電平=70μs(周期100μs)。
- 驗證方法:示波器測量占空比。
- TC3-多通道同步輸出
- 輸入:通道1=1kHz正弦波,通道2=2kHz方波,同步觸發(fā)
- 預(yù)期輸出:兩通道信號起始時間差<1μs。
- 驗證方法:雙通道示波器觀察相位關(guān)系。
2. 邊界條件測試
目標(biāo):驗證腳本在極限參數(shù)下的行為。
示例用例:
- TC4-最小頻率生成
- 輸入:頻率=0.1Hz(接近硬件最低限制)
- 預(yù)期輸出:信號周期=10s,無丟周期或跳變。
- 驗證方法:長時間記錄輸出信號。
- TC5-最大幅度輸出
- 輸入:幅度=10Vpp(接近DAC最大輸出)
- 預(yù)期輸出:信號幅度=10Vpp±5%,無削波。
- 驗證方法:示波器測量峰峰值。
- TC6-相位偏移邊界
- 輸入:相位=359°(接近360°循環(huán))
- 預(yù)期輸出:相位與0°信號幾乎重合,誤差<1°。
- 驗證方法:李薩如圖形分析。
3. 異常處理測試
目標(biāo):驗證腳本對非法輸入或硬件故障的響應(yīng)。
示例用例:
- TC7-負(fù)頻率輸入
- 輸入:頻率=-5kHz
- 預(yù)期輸出:腳本報錯“頻率必須為正數(shù)”,不生成信號。
- 驗證方法:檢查日志或控制臺輸出。
- TC8-超范圍幅度
- 輸入:幅度=15Vpp(超過DAC限制)
- 預(yù)期輸出:自動限幅至10Vpp,并提示“幅度超出范圍”。
- 驗證方法:示波器測量輸出幅度+日志檢查。
- TC9-時鐘丟失模擬
- 操作:斷開外部時鐘源
- 預(yù)期輸出:腳本檢測到時鐘丟失,切換至內(nèi)部時鐘或報錯停止。
- 驗證方法:觀察腳本日志和輸出信號狀態(tài)。
4. 性能測試
目標(biāo):評估信號生成的實時性和資源占用。
示例用例:
- TC10-頻率切換延遲
- 操作:從1kHz切換至10kHz,測量切換時間
- 預(yù)期輸出:切換延遲<1ms,無瞬態(tài)過沖。
- 驗證方法:高速示波器捕捉切換瞬間。
- TC11-CPU占用率
- 操作:同時生成4通道高頻信號(如1MHz)
- 預(yù)期輸出:CPU占用率<50%(依賴硬件配置)。
- 驗證方法:任務(wù)管理器或性能分析工具。
- TC12-長時間穩(wěn)定性
- 操作:連續(xù)運行24小時生成1kHz信號
- 預(yù)期輸出:頻率漂移<0.01%,無崩潰或內(nèi)存泄漏。
- 驗證方法:頻譜分析儀定期監(jiān)測+系統(tǒng)日志檢查。
5. 兼容性測試
目標(biāo):確保腳本在不同環(huán)境下的可靠性。
示例用例:
- TC13-跨平臺運行
- 環(huán)境:Windows 10/Linux Ubuntu 20.04
- 預(yù)期輸出:腳本在兩系統(tǒng)下均能正常生成信號。
- 驗證方法:在兩平臺分別執(zhí)行測試用例。
- TC14-依賴庫版本
- 環(huán)境:NumPy 1.21 vs 1.24
- 預(yù)期輸出:信號生成功能不受庫版本影響。
- 驗證方法:單元測試對比輸出結(jié)果。
三、測試工具與自動化
- 硬件工具:示波器、頻譜分析儀、信號發(fā)生器(用于對比)。
- 軟件工具:
- 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) |
四、測試報告與迭代
- 報告內(nèi)容:通過率、失敗用例詳情、性能指標(biāo)匯總、環(huán)境信息。
- 迭代優(yōu)化:根據(jù)測試結(jié)果調(diào)整腳本參數(shù)(如濾波器系數(shù))、優(yōu)化算法或修復(fù)硬件問題。
五、高級測試場景
- 動態(tài)信號生成:驗證腳本能否實時響應(yīng)外部觸發(fā)(如GPIO中斷)。
- 噪聲注入測試:在輸入信號中添加高斯噪聲,驗證腳本的抗噪能力。
- 多線程/多進(jìn)程測試:確保并發(fā)生成信號時無資源沖突。
通過系統(tǒng)化的測試用例設(shè)計,可全面驗證信號發(fā)生器腳本的可靠性和性能,為實際應(yīng)用提供保障。