概括起來講,死鎖問題解決思路就是九個字“要么都給,要么都不給”,這就是所謂的資源申請原子性。每個測試任務一次性向軟件平臺申請所需的所有資源,軟件平臺要么釋放全部所需資源,要么什么都不返回。
通過上述方式,軟件平臺有效地管理了系統中測試資源的使用情況,將測試任務對儀器的無序同時訪問轉變為有序訪問,從而支持了系統級的并行測試實現。
(2)多線程測試任務管理問題解決思路
我們采用了基于事件的異步模式實現多線程測試任務管理思路。所謂事件就是啟動測試、暫停測試、繼續測試、中止測試以及跨線程傳遞測試數據等消息。而所謂異步模式就是指主界面啟動測試線程后繼續運行自身工作,而不必一直阻塞自身線程,還可以取消某個或所有正在執行的測試線程。另外,客戶端還可以通過訂閱和處理相關事件實現運行完畢后的數據和報表處理等工作。因此,這種模式特別適合并行測試任務的管理。
(3)并行測試任務調度規劃自動生成問題解決思路
并行測試任務調度規劃不但要自動生成,而且要保證可靠性和效率最高,這就是一個所謂的“尋優”問題。在解決尋優問題方面有很多全局隨機最優化算法,比如:遺傳模擬退火算法和蟻群算法,其實都可以用來解決任務調度規劃自動生成和優化問題。目前,我們實現了遺傳模擬退火算法來自動生成并行測試任務調度規劃,經過驗證具有良好的尋優效果。
(4)系統建模問題解決思路
我們采用了一種“層次化+網絡化”的方式進行系統建模。第一層描述系統有哪些UUT,第二層描述測試任務的信息和任務之間的網狀關系。由于測試任務之間的時序相關性只會出現在同一UUT下,即每個UUT的測試任務是獨立于其他UUT。如果每個UUT的測試任務是相同的,在建模時只需要單獨描述一個UUT的測試任務時序關系即可,這樣就極大地減少了建模工作量。
(5)信號鏈路動態建立問題解決思路
我們采用了一種可配置化的信號鏈路信息管理方法,改變了現有的資源動態管理器框架,在資源配置文件中加入了一個信號鏈路信息集,該集合由信號鏈路信息條目組成,每個條目又包含了儀器名稱、儀器端口號、UUT名稱、UUT端口號、經過的開關名稱、開關通道等信息。資源配置文件的內容可以通過資源配置編輯器修改和編輯,當用戶改變了系統的硬件連線后,只需要通過測試資源配置編輯器修改信號鏈路信息的內容即可,根據儀器端口和UUT端口,測試任務程序可以在運行時得到信號鏈路信息,從而動態打通所需的信號鏈路。
某型四組件并行測試系統照片
我們以某型T/R組件(一塊)和放大器模塊(三塊)為測試驗證對象進行了并行測試驗證,經過反復運行,性能穩定,測試效率提高了1倍多。當然,并行測試效率提升不是一個固定的數值,它與測試任務分布、UUT數量和儀器配備等因素密切相關。