基于軟件可靠性仿真測試平臺實時技術研究
本文在介紹軟件可靠性仿真測試平臺的組成及功能的基礎上,以仿真器分系統為例,對平臺在實時測試過程中的一些實現技術進行了研究。
1 仿真測試平臺系統功能及組成框架
整個仿真測試平臺采用分布式結構,由主控機分系統(以下簡稱為主控機)、仿真器分系統(以下簡稱為仿真器)和激勵器分系統(以下簡稱為激勵器)三個分系統組成,各分系統與被測目標軟件的交聯關系如圖1所示。其中,主控機是測試平臺的控制中心,它負責生成原始測試數據,向仿真器、激勵器分發測試用例,協調兩個分系統的工作,并根據測試狀況控制仿真器和激勵器的工作模式。仿真器和激勵器將主控機傳送過來的測試用例數據,生成真正的目標軟件可以接收的測試用例數據傳送給目標系統,同時,仿真器和激勵器負責將自身工作狀態信息和從目標系統得到的測試結果數據通過底層網絡實時或非實時地傳送回主控機。
圖1 仿真測試平臺的交聯關系圖
由于目標軟件由匯編語言寫成,內部處理過程較為復雜,所以采用黑盒測試方法。目標軟件的處理周期為25 ms,因此在實時測試過程中,需要每25 ms有一組測試用例數據由仿真器通過1553B總線,激勵器通過并口同時輸入給目標軟件。仿真器和激勵器不僅需要每25 ms產生目標軟件的輸入數據,同步向目標軟件發送數據,而且仿真器還能接收目標軟件的輸出,并且對輸出數據進行相應的實時處理,如結果數據的收集、保存及數據的顯示等等。由于整個測試平臺是在非實時、多任務的Win98操作系統上實現的,因此,如何利用Win98的多任務并發的特性,采用合理的任務調度策略,在任務處理周期內,按時完成各種任務,并將多個任務協調一致,是整個設計過程中主要應該解決的問題。
在圖1所示的平臺各分系統中,主控機與目標軟件是通過仿真器形成實時閉環的。仿真器通過測試用例,實時給出目標軟件閉環運行所需要的交聯子系統發出的命令和數據,使得目標軟件能夠在較為真實的仿真任務剖面和交聯環境中運行。因此,仿真器是仿真測試平臺中的一個重要組成部分,仿真器的實時實現方法是整個平臺系統設計的重點。 2 仿真器分系統的功能設計及實時實現技術
2.1 仿真器分系統功能結構
仿真器分系統是個實時任務系統,在整個測試過程的運行模式下,需要并發處理不同的任務,如數據實時存盤、提取、交互式顯示、每25 ms驅動1553B總線等任務,任務調度涉及到CPU、內存、網絡、硬盤、數據結構、I/O接口等資源,因而合理調度各個任務,正確分配其所占用的系統資源,是仿真器測試平臺設計的關鍵之一。
為了提高平臺系統的可靠性和故障快速恢復能力,仿真器采用功能模塊化設計方法。不同任務對應的工作模塊工作相對獨立,可以隨時依據新技術對相應模塊的軟件算法進行更新和擴充,這種設計易于發揮Win98的多任務的特性,提高平臺系統實時工作的能力。其中,任務調度管理模塊是仿真器平臺系統的核心,其他各功能模塊的運行都是在管理調度模塊的統一管理控制下完成的。它與其他任務的功能模塊之間的邏輯調用關系如圖2所示。
圖2 任務調度管理模塊調用關系
在仿真器設計中,除了必要的網卡(和主控機連接)和MBI卡(和目標系統連接)等硬件設備以外,仿真器的各項功能均是通過軟件來完成的,因而系統軟件設計中采用合理的調度策略,避免操作系統的缺陷,以實現仿真器的功能。
2.2 仿真器調度模塊的設計
仿真器對于各類任務采用時間、事件以及數據驅動相結合的調度原則進行控制管理。為了提高系統的實時性和適應性,采用了動態和靜態調度策略相結合、任務發生的周期和優先級相結合的調度方式。
在調度框架中集中不同的調度策略。在運行模式下:系統測試工作正常,則對于周期性的實時任務采用靜態生成的調度策略;在系統發生故障時,則采用臨時的動態調度策略,它根據系統的運行狀況,實時加入動態任務,并根據動態任務的級別,決定該任務是立即執行還是按順序執行。隨著故障的排除,取消該任務,系統重新恢復到先前的調度策略。 仿真器根據任務運行占用時間的不同,以不同速率來調度不同模塊,滿足實時驅動的要求。采用優先級調度和分時調度相結合的方式:優先級調度方式即調度模塊對于每一項任務都賦予了嚴格的優先級,按優先級的次序從高到低執行;分時調度方式是采用時間片輪轉的方式來執行各個任務,這種調度方式多是在終止模式下采用(或在運行模式下,系統已經完成短周期的任務,還留有時間余量的情況下)。例如,對于1553B數據驅動和交聯數據生成等短周期任務在每25 ms定時到時串行化執行,被賦予了較高優先級,而對于顯示和記錄數據等長周期任務分時執行或交叉執行,被賦予了較低優先級,以保證能正常驅動MBI卡。
根據上述設計,在實時測試過程中,仿真器的實時調度層次模型如圖3所示。
圖3 RUN()模式下實時任務調度模型示意圖
3 結束語
本文以實時測試某航空軟件可靠性為背景,介紹了仿真器在仿真測試平臺中的作用。按照模塊化和可擴充的設計思想,給出了仿真器功能結構組成;并且著重介紹了仿真器的任務調度管理模塊的設計思想,針對具體任務和系統工作模式,提出了集成動態調度策略;對于優先+級的調度方式,采用了優先級浮動的原則。另外,給出了實時網絡實現的方法,討論了圖形實時顯示的可行性,利用WinDriver實現了在Win98下對硬件MBI卡的直接驅動。實驗結果表明,上述調度思想與相關技術綜合運用,很好地滿足了仿真器系統工作的實時性。
評論