張 彬中國科學院長春光學精密機械與物理研究所,吉林長春 130033
C++ Test在自動控制軟件中的應用
張彬
中國科學院長春光學精密機械與物理研究所,吉林長春130033
摘要C++ Test作為一款優秀的軟件測試工具已經成為軟件測試行業工業標準,本論文討論了C++ Test軟件在自動控制算法設計上的應用,包括靜態測試和動態測試。靜態測試提出了自動控制算法比較實用的測試規則;動態測試以matlab產生算法正確的測試用例,并使用C++ Test動態測試與matlab產生的測試用例進行比較,從而驗證自動控制算法的正確性。
關鍵詞C++ Test;自動控制;軟件
軟件測試技術是現代軟件工程開發的質量保證的關鍵環節,自動控制軟件開發具有其自身的特點,探索有效的自動控制軟件測試方法具有非常重要的意義。一方面可以考察軟件在出現頻率較低極限條件下的行為,從而提高軟件的可靠性;另一方面可以與自動控制行業公認的優秀軟件算法如matlab進行比較,從而保證算法的準確和高效。
本論文建議將軟件測試過程為算法驗證和算法實現兩個步驟:算法驗證過程主要由算法設計工程師完成,以matlab為主要工具驗證算法的有效性,將一個算例分成實驗數據產生、計算、驗證三部分。算法實現由軟件工程師完成,將算法工程師給出的matlab數據通過C++實現代碼產生結果數據,將這個結果數據與算法工程師提供的matlab計算結果數據進行對比。本文推薦的軟件開發模型中不同角色的分工和職能,如 表1所示。

表1 本文推薦的軟件開發模型
本論文在討論C++Test靜態和動態分析方法的基礎上,以Kalman濾波算法為例子討論了本文軟件開發模型的應用。
在軟件生命周期的任何階段,只要軟件發生了改變就可能給軟件帶來問題,每當軟件發生變化,就必須重新測試現有的功能,以便確定修改是否打到了預期的目的,檢查修改是否損害了原有正常功能,還需要補充新的測試用例來測試新的功能,這就是軟件動態測試方法。C++Test完全自動化完成軟件所有步驟,它首次測試某個類時,自動保存其測試和測試參數。C++Test會自動運行完全相同的測試用例和測試參數,并告之發現的任何問題。這意味著你能夠立即知道修改是否引入了任何錯誤。
C++動態測試首先要對待控制的儀器設備和計算機硬件環境,使用樁函數進行替代。樁函數是C++Test動態測試最重要的概念,提供被調用函數的占位,使得可以獨立的進行動態測試而不依賴外部文件或函數。樁函數主要有兩個用途,一是將正在測試的代碼從集成環境中分離出來,二是在不影響函數行為,且需要使用替代實施的情況下進行測試。動態測試的基本步驟:
1)使用matlab產生標準的測試用例。
2)創建測試用例數據庫:建議用文件形式輸入數據并自動生成測試用例進行測試,如Excel, CVS等格式創建新的數據資源庫。
3)創建新的測試用例,即導入期望的數據。
4)執行測試用例。
本文以kalman濾波算法為例用以說明使用C++Test的算法測試方法,完成算法工程師和軟件工程師直接的接口工作,進行前期魯邦性仿真單元測試,提供可靠的算法C++模塊。
本文以自由落體條件下的仿真測試Kalman濾波算法。 首先使用matlab產生自由落體模型的運動速度和位置速度數據,加入一定的白噪聲干擾,并使用maltab中標準kalman濾波算法得到輸出。使用C++編寫Kalman濾波算法。使用maltab的輸入輸出數據作為測試用例,對C++編寫的濾波算法進行驗證。圖1中給出速度位置估計、速度位置絕對和相對誤差,以及標準差的計算結果。圖2是使用C++ Test進行軟件動態測試的軟件界面,C++ Test驗證了malab標準算法與C++編寫的Kalman濾波算法的一致性。
本論文提出了一種自動控制軟件算法測試的方法,首先使用matlab的算法功能驗證,產生測試用例所需的輸入輸出數據,然后使用C++實現軟件算法,并使用C++Test對matlab產生的測試用例進行軟件動態測試,驗證matlab標準算法與C++算法的一致性,從而達到自動控制算法驗證的目的,該方法適用范圍廣,具有一定的指導意義。
參考文獻
[1]C++ Test軟件幫助文檔.2006.
[2]方崇智,蕭德云.過程辨識[M].北京:清華大學出版社,1998.
[3]Richar C.Dorf,Rober H.Bishop.現代控制理論[M].北京:高等教育出版社,2004.
中圖分類號TP39
文獻標識碼A
文章編號1674-6708(2015)139-0102-01