文/樊茜 何雨昂 吳非 喬森 李東東
隨著軟件工程的發展以及軟件需求方的強烈要求,軟件的可靠性保證又推向了新的高度。國內外專家均不斷探索軟件硬件結合的軟件測試方法,發現軟件潛在問題,從而提高軟件質量。多控制模塊伺服控制驅動軟件是一種應用在伺服控制驅動器上的多時序指令軟件,廣泛適用于機電伺服系統。針對多控制模塊伺服控制驅動軟件,本文提出了多種測試技術,用于多控制模塊伺服控制驅動軟件功能、性能、可靠性和安全性的驗證。
開發方測試用例設計和執行的依據為軟件任務書、需求規格說明和設計說明文檔。部分可靠性安全性指標完全可以通過靜態測試技術進行驗證。靜態測試是不執行程序代碼而尋找程序代碼中可能存在的缺陷以及評估程序代碼的過程。該測試方法需要設定測試分析條件、執行步驟、代碼編程規則。靜態測試可以手工進行,也可以借助工具自動進行。目前有多類軟件安全漏洞檢測工具,對軟件的內存泄露、數據越界等潛在安全性問題進行深度分析。同時,再配合制定一份針對可靠性安全性問題排查的代碼審查單,在代碼走查中,結合專家人員的經驗對軟件代碼進行逐行檢查,可以盡早發現軟件深層次的可靠性安全性問題。
目前完整的代碼審查單中有多達100項審查內容,均是針對嵌入式C語言代碼、設計文檔、需求文檔制定,并通過多次實際審查進行了修改和完善。依據制定好的代碼審查單對可靠性安全性進行校驗,在開發方測試初期對代碼與文檔、文檔與文檔之間的一致性進行全面的驗證。由于篇幅有限,列舉部分可靠性安全性代碼審查內容如表1。

表1
依據軟件設計任務書中對安全性和可靠性設計要求,并使用靜態分析測試技術制定針對軟件安全漏洞以及可靠性指標的代碼審查單,對代碼與文檔、文檔與文檔之間的一致性進行全面的驗證,對不一致內容提出問題報告單,匯總后統一交由軟件設計進行修改。審查單可以根據不同的代碼、文檔等不同對象進行沿用和制定,并不斷的積累和豐富,進一步增加代碼審查單的檢查深度,更易發現軟件的深層次問題。
針對過去使用示波器獲取伺服控制驅動軟件性能指標的方式,存在軟件測試精度存在偏差和實時性差的問題,本文設計了強實時的伺服控制驅動軟件性能測試方法。
強實時的伺服控制驅動軟件性能測試環境利用LDRA 公司的嵌入式軟件測試工具TestBed,結合其配套的實時硬件數據采集工具RTInsight及測試結果分析和顯示軟件RTInsight Pro,將被測軟件軟件運行于伺服控制驅動器,對多控制模塊伺服控制驅動軟件進行實時性能測試。
TestBed是英國LDRA 公司的嵌入式軟件測試工具,它的功能包括編碼規則檢查、軟件度量分析、靜態數據流分析等靜態分析和軟件單元測試等功能。RTInsight是LDRA公司推出的和TestBed配套的實時硬件數據采集器,通過將RTInsight與被測系統的物理總線相連接,實時監控系統總線讀寫情況,并與軟件測試工具TestBed及RTInsigh配合使用,實現對被測軟件的覆蓋率分析、時間性能分析等功能。
被測軟件由于實時性的要求和硬件資源的限制,必須要考慮插樁代碼對被測系統的影響。過去的插樁方法常常會影響軟件的執行效率,原因在于通常的插樁會造成源文件代碼和數據空間驟增。TestBed的插樁技術能夠解決這些問題,大大提高了執行效率。同時,由于RTInsight采用高速虛擬端口技術,使得代碼插樁量可控制在函數入口、出口、程序分支點,僅使用一到兩條語句,大大減少了由于插樁代碼的增加而產生的對被測軟件的影響。
RTInsight作為完成強實時功能的硬件設備,是通過并口和隔離板左側連接,隔離板的右側為雙列直插的排針,再通過飛線和目標控制器相連。運行測試工具RTInsight Pro后,使用測試代碼對硬件連接進行測試,驗證是否能正確和完成采集到數據,測試代碼如下:

利用RTInsight進行性能測試的步驟如下:
測試主機通過網線和RTInsight硬件設備連接,RTInsight硬件設備通過飛線和伺服控制驅動器的數據線、地址線和讀寫信號線相連。
用TestBed對被測軟件源代碼進行靜態分析和代碼插樁,即是向一個未被使用的指定RAM 地址寫入特定內容,然后在測試主機上的編譯調試軟件對插樁后的源代碼進行編譯,生成目標控制器可運行文件。
測試主機通過板卡(例如1553B總線板卡)和伺服控制驅動器連接,通過測試主機上的程序燒寫軟件,將可運行文件燒寫至伺服控制驅動器的FLASH中。
伺服控制驅動器上電,在測試主機上運行測試結果分析軟件RTInsight Pro,RTInsight通過在被測程序的插樁地址采集數據,并將數據通過網絡上傳到測試主機,RTInsight Pro分析上傳的數據,以每3秒刷新的頻率,將結果顯示在測試軟件界面中,從而實時的得到軟件各個函數的執行時間。
使用多控制模塊伺服控制驅動軟件的高精度性能測試方法,可以對被測軟件進行強實時的性能測試,將測試精度提升到納秒級,實現了對軟件的高精度測試,更好的評估軟件的性能特性。
多控制模塊伺服控制驅動軟件功能測試,即根據需求規格說明進行分析提煉測試用例,來驗證程序在正常情況下能完成規格說明中預定的功能。但“軟件做了應該做的”不能代表該軟件沒有隱藏錯誤。軟件測試還需要從“軟件未做不應該做的”的角度,來考察軟件的容錯機制、邊界和異常數據處理的能力。
針對被測軟件,采用故障模擬注入技術,在測試需求分解過程中著重考慮無效等價類的測試用例設計。在程序中輸入任何可能的輸入條件,人為的添加軟件模擬運行中可能出現的故障于軟件上,驗證軟件對故障數據的處理、抵御誤操作的能力是否滿足軟件需求。多控制模塊伺服控制驅動軟件的測試主要采用三類故障模擬注入技術(即硬件故障、操作故障、數據故障),對軟件的主要功能模塊進行測試。
硬件故障的注入主要是利用高精可調直流電源實現對A/D接口硬件的檢測和軟件處理的檢查。硬件檢測的內容包括采樣精度、信號輸入有效范圍內的線性度、超邊界采樣能力等,軟件檢查的內容包括采樣數據一致性、濾波處理、符號位擴展等。
數據故障的注入主要是模擬多總線下發一系列真實的數據類型和數據值進行測試,以測試軟件在超負荷、飽和及其他“最壞情況”下的結果,或者下發一些假想的數據類型和數據值,測試軟件排斥不規則輸入的能力,或者下發一些非約定的數據值和錯誤指令,考核軟件的響應情況和容錯的能力。
操作故障的注入主要是通過編譯調試軟件強大的在線調試功能,利用插樁技術,在源代碼中插入一些變量標志,通過對變量標志的判斷來改變程序的流向,或者在變量查看窗口中改變某些關鍵變量的值,以此來改變某些關鍵功能的操作順序,例如時序、同步等,考核軟件對誤操作的抵御能力。
本文采用靜態分析測試技術、結合測試平臺和搭配嵌入式軟件測試工具,對多控制模塊伺服控制驅動軟件可靠性、安全性測試、性能測試和功能測試方法進行詳細分解,高精度高效率的完成軟件配置項測試。該技術高效高可靠的特點能夠充分應對測試任務繁重,研制周期緊張等特殊情況,同時提升多控制模塊伺服控制驅動軟件的質量。