自從上個世紀80年代數(shù)控裝置廣泛采用32位CPU組成多微處理器系統(tǒng)以來,計算機軟件在數(shù)控設備中的地位逐漸變得重要起來。90年代以后,隨著計算機技術的飛速發(fā)展,利用PC機豐富的軟件及硬件資源開發(fā)出來的開放式體系結構的數(shù)控系統(tǒng)中的軟件,對于智能化和網(wǎng)絡化的支持更加強大,軟件的規(guī)模和功能進一步的增強了。數(shù)控設備已經(jīng)成為一種硬件與軟件高度集成化的綜合性系統(tǒng)。
[b] 一、數(shù)控系統(tǒng)中軟件的特點
[/b]
數(shù)控系統(tǒng)中的軟件大多數(shù)都是嵌入式軟件,與硬件有著緊密關系并且運行在特定的硬件環(huán)境中。其最大的特點就是與硬件環(huán)境有著密不可分的關系,整個數(shù)控系統(tǒng)的性能、智能化水平的高低以及可靠性的優(yōu)劣等都是由硬件環(huán)境和軟件共同決定的。但當前技術條件下,軟件的可靠性比硬件的可靠性要低一個數(shù)量級。據(jù)資料統(tǒng)計,嵌入式系統(tǒng)的運行失效中有75%是由其中的軟件失效所引起的。事實上軟件失效所導致的系統(tǒng)故障已經(jīng)成為數(shù)控設備故障診斷中一個不容忽視的問題了。
二、數(shù)控系統(tǒng)中軟件的測試與診斷方法
與硬件相比軟件失效主要有以下兩個特點:(1)軟件失效不會隨時間而發(fā)生變化。硬件的有很大一部分是由于設備的磨損和材料的老化所致,而在軟件中則不存在這樣的問題。一旦軟件運行正確,它是不會隨著時間的推移而退化的。(2)軟件的失效多數(shù)是由程序代碼中的固有錯誤所導致,而對于嵌入式軟件來說,軟硬件之間的接口錯誤也是導致失效的一個重要因素。
[font=宋體] 因為失效機理的不同,軟件的診斷方法與硬件通常所使用的故障診斷方法也不盡相同。從保證設備可靠性的角度來看,硬件設備在出廠之前要做一系列的可靠性試驗,目的就是要把設計和加工過程中產(chǎn)生的問題提前暴露出來,而到了用戶使用階段,工作的重點就是對設備的運行狀態(tài)進行監(jiān)測,對出現(xiàn)的故障進行診斷和維修。而軟件則在于出廠前和使用初期對其進行的測試,尤其是對軟件與硬件集成之后所進行的系統(tǒng)測試。即系統(tǒng)測試是發(fā)現(xiàn)嵌入式系統(tǒng)中軟件問題的最行之有效的方法之一。
在軟件測試的理論中,系統(tǒng)測試屬于一種動態(tài)黑盒測試,即測試人員不必深入軟件代碼的細節(jié),只需通過控制軟件的輸入條件驅動被測軟件的真正運行。簡單的說,動態(tài)黑盒測試就是要盡量模擬出被測系統(tǒng)的真實使用情況,并通過對被測系統(tǒng)的實際操作來達到發(fā)現(xiàn)故障的目的。根據(jù)系統(tǒng)測試原理,實驗室自主設計開發(fā)出一種具有一定通用性的嵌入式軟件系統(tǒng)測試環(huán)境,并在此基礎上總結出一套有效的系統(tǒng)測試方法。下面結合一個具體測試實例對系統(tǒng)測試環(huán)境以及測試方法進行介紹。
三、數(shù)控系統(tǒng)中的軟件系統(tǒng)測試
1.系統(tǒng)測試環(huán)境
對一個數(shù)控設備中的嵌入式軟件進行系統(tǒng)測試的第一步就是要搭建系統(tǒng)測試的環(huán)境。系統(tǒng)測試環(huán)境的作用就是能夠讓軟件在真實的硬件環(huán)境下運行,而且還能夠讓測試人員把測試用例施加到被測軟件中,并且可以收集到測試的結果數(shù)據(jù)。系統(tǒng)測試環(huán)境是一個由硬件和軟件共同組成的測試平臺。
[align=center]
圖1所示為某型號發(fā)動機的數(shù)控系統(tǒng)軟件測試時所設計開發(fā)的系統(tǒng)測試環(huán)境。[/align]
整個測試環(huán)境由三大部分組成:測試用例及測試腳本生成環(huán)境、系統(tǒng)檢測軟件以及系統(tǒng)檢測箱。其中的測試用例及測試腳本生成環(huán)境和系統(tǒng)檢測軟件屬于測試平臺的軟件部分,而系統(tǒng)檢測箱以及與之相連的I/O設備都屬于硬件部分。
測試用例及測試腳本生成環(huán)境是一個圖形化的編輯環(huán)境,測試人員可以在這個環(huán)境中把設計好的測試用例通過畫圖或是寫文本的方式轉換成測試腳本,它是測試用例的可執(zhí)行形式。測試腳本中包含了一系列對被測系統(tǒng)的操作動作,它的實質(zhì)作用就是通過控制測試流程來實現(xiàn)測試者的測試意圖。
系統(tǒng)檢測軟件由腳本解釋器、模型、測試結果收集和顯示模塊四個部分組成。腳本解釋器是用來把測試腳本解釋成為可執(zhí)行的代碼形式,在測試過程中用于控制測試流程。模型則根據(jù)測試腳本的要求計算產(chǎn)生測試數(shù)據(jù),并發(fā)送到被測系統(tǒng)之中。測試結果收集是用來收集被測系統(tǒng)運行過程中的狀態(tài)信息和輸出數(shù)據(jù)。顯示模塊用來根據(jù)測試人員的要求在測試過程中把被測系統(tǒng)的狀態(tài)信息和輸出數(shù)據(jù)顯示出來,以便測試者可以觀察和控制測試的進行。
地面檢測裝置(系統(tǒng)檢測箱)是在設備正常運行之前檢測數(shù)控系統(tǒng)的完好性和對裝置中閃存的讀寫操作,以及設備運行以后進行數(shù)據(jù)下載和數(shù)據(jù)分析的工具。地面檢測裝置的功能包括對電子控制器及發(fā)動機模型的仿真、電子控制器的檢測、繼電器箱的檢測、傳感器的檢測和電液伺服閥線圈的檢測等。在測試環(huán)境中,地面檢測裝置從系統(tǒng)檢測軟件中獲得模型根據(jù)測試腳本所產(chǎn)生的測試數(shù)據(jù),在裝置內(nèi)部把這些測試數(shù)據(jù)全都轉換為可以輸入到被測系統(tǒng)中的數(shù)據(jù)形式,并通過I/0接口送到被測系統(tǒng)之中,驅動被測系統(tǒng)的運行并完成測試。
這套系統(tǒng)測試環(huán)境具有以下幾個主要特點:
(1)有一定的通用性。這套環(huán)境不僅可以對發(fā)動機數(shù)控軟件進行測試,而且可以對相似的一類嵌入式軟件進行測試。
(2)操作簡便。測試環(huán)境只需要測試者把測試用例編寫成測試腳本的形式,即可在測試環(huán)境中實現(xiàn)自動化的測試,無須對被測系統(tǒng)進行直接的操作。
(3)測試效率較高。由于有了系統(tǒng)檢測軟件和系統(tǒng)檢測箱的支持,這種自動化測試的執(zhí)行效率比手工測試有較大的提高。
(4)支持重復性的測試。由于測試用例是以測試腳本的形式存在,所以同一個測試可以毫無差別地無限次執(zhí)行。重復性測試在故障修改之后的回歸測試中有很大的應用。
2.系統(tǒng)測試過程
在建立好測試環(huán)境之后,就可以利用它進行系統(tǒng)測試了,具體過程有以下步驟。
(1) 設計測試用例。系統(tǒng)測試用例由兩部分組成:測試輸入序列和測試的預期結果。測試輸入序列描述了一次測試中對被測設備的具體操作流程,包括如何啟動設備、何時進行加速操作、何時進行停車操作以及何時關閉設備等。測試預期結果描述了被測試的設備在上述的操作下應該產(chǎn)生什么樣的動作或處于什么樣的狀態(tài)。
測試用例的質(zhì)量是能否發(fā)現(xiàn)設備軟件故障的關鍵所在。在設計測試用例時,可以根據(jù)測試的側重點不同,從正常功能、邊界情況和非正常操作等幾個方面進行考慮。正常功能測試就是根據(jù)被測試的發(fā)動機的正常使用情況,模擬出一些具有代表性的操作。邊界情況的測試是指對輸入被測系統(tǒng)的模擬量的邊界值進行測試,經(jīng)驗表明當輸入量在邊界上或是邊界的臨近點取值時是最容易產(chǎn)生錯誤的,例如發(fā)動機在正常轉速范圍的邊界點附近運行時往往容易發(fā)生故障。非正常操作主要是考察數(shù)控系統(tǒng)軟件在處理一些異常情況時的能力,例如在使用者出現(xiàn)錯誤操作或是在使用中突然發(fā)生硬件故障的時候,數(shù)控系統(tǒng)軟件是否具有一定的保護功能,而不至于出現(xiàn)重大的事故,這項測試主要是考察數(shù)控系統(tǒng)的可靠性和健壯性。
(2) 運行測試。設計好的測試用例在測試環(huán)境提供的圖形化編輯環(huán)境中,通過畫圖或是文本方式可以轉換成測試環(huán)境能夠識別的測試腳本形式。每一個測試用例轉換成為一個測試腳本,測試腳本可以直接加載到測試環(huán)境中進行一次測試。在測試運行過程中,測試用例在操作序中得到依次執(zhí)行,被測試的系統(tǒng)也因此得到運行。運行過程中還可以通過測試環(huán)境提供的顯示模塊觀察到設備運行的狀態(tài)。
(3)分析測試結果并得出測試結論。一次測試結束之后,測試環(huán)境會自動地收集被測試系統(tǒng)的各項運行數(shù)據(jù)。把這些數(shù)據(jù)與測試用例中預期結果進行比較,由此判斷被測試設備運行是否正常,是否發(fā)生了故障。
從正常功能、邊界情況和非正常操作三個方面考慮生成了100個測試用例,并在搭建的測試環(huán)境中得到成功的運行,最后通過對測試結果數(shù)據(jù)的分析,發(fā)現(xiàn)了幾個關鍵性的問題,例如當飛機的飛行高度超過一定值后,軟件所進行的插值計算就會出現(xiàn)錯誤。另外還有因為軟件的設計邏輯有問題而導致發(fā)動機在不該停車的時候停車了等。經(jīng)過分析確定這些故障都是由于數(shù)控系統(tǒng)軟件的缺陷所導致的。軟件設計人員對這些問題進行了正確的修改之后,系統(tǒng)的可靠性和健壯性都得到了很大的提高。
四、結束語
利用上述系統(tǒng)測試環(huán)境以及測試方法,已經(jīng)成功地進行了多個嵌入式軟件的測試,發(fā)現(xiàn)了許多軟件中潛在的重要缺陷,在為提高設備的質(zhì)量和可靠性方面發(fā)揮了重要作用。