張少杰,李建偉
(1.中國直升機設計研究所,江西 景德鎮 333001;2.陸航駐景德鎮地區軍代室,江西 景德鎮 333000)
無人直升機飛控系統軟件測試技術應用研究
張少杰1,李建偉2
(1.中國直升機設計研究所,江西 景德鎮 333001;2.陸航駐景德鎮地區軍代室,江西 景德鎮 333000)
軟件測試是保證軟件質量的必要環節。針對無人直升機飛控系統軟件嵌入性、實時性和高可靠性的特點,提出一種可行的測試策略,建立了基于需求的軟件測試模型,并結合軟件測試自動化工具的使用,通過實際項目,驗證了該測試策略和測試模型能夠提高測試效率,確保飛控軟件質量。
軟件測試;飛控系統軟件;軟件測試自動化
軟件測試是軟件工程中的重要組成部分,是軟件質量驗證、確認和提高的有力保障,尤其是涉及高度安全的軟件系統。但隨著軟件開發規模的增大,復雜度增加,測試工作的難度也隨之增加。無人直升機飛控系統軟件作為無人機系統的關鍵性軟件,具備高可靠性、高安全性的特點,為了及早發現軟件中存在的缺陷,盡可能降低無人直升機機飛行過程中的風險,在飛控系統軟件的開發過程中進行嚴格完善的軟件測試工作是必不可少的。
IEEE提出的軟件工程標準術語中,軟件測試的定義為:對軟件系統或軟件系統組件進行檢測和評估的過程,通過人工或自動的方式來驗證是否滿足特定的規定和需求,確認實際運行結果與所期望的運行結果之間的差異[1]。
雖然長期以來對軟件測試的理解和表述不盡相同,但對其目標的闡釋基本是一致的:盡可能尋找軟件中隱藏的錯誤和缺陷,提高軟件的質量,對軟件進行驗證和確認。軟件測試的基本原理如圖1所示。
1.1軟件測試方法
根據是否運行程序,軟件測試方法分為靜態測試和動態測試兩大類。
靜態測試是不運行程序而尋找程序代碼中可能存在的錯誤和評估程序代碼的過程,常采用文檔審查、代碼審查、靜態分析和形式化證明等形式。
動態測試以測試數據為輸入,運行程序并全面分析代碼功能、邏輯、結構等以發現錯誤的過程,又可分為黑盒測試、白盒測試和灰盒測試。
1.2軟件測試級別
根據軟件開發周期的不同階段、不同測試對象,軟件測試的過程一般分為四個步驟:單元測試、集成測試、確認測試、系統測試,最后進行驗收測試,其測試過程如圖2所示。
單元測試又稱模塊測試,完成對設計中定義的軟件產品結構中的最小邏輯單元的驗證;集成測試又稱部件測試,對象是由軟件單元和(或)軟件部件組裝得到的各級軟件部件,檢查軟件單元與部件之間的接口關系等;確認測試檢查已經實現的軟件是否與需求規格說明保持一致以及軟件配置項是否完整、正確;系統測試是將完整的、集成的軟件系統納入實際的運行環境,檢驗軟件系統能否滿足軟件研制任務書和系統設計方案的要求。
1.3嵌入式軟件測試
嵌入式軟件是嵌入式系統中的用戶應用軟件,與硬件類型緊密相關,并且通常具有實時性[2]。一般而言,嵌入式軟件的開發環境和最終運行環境是不同的,開發環境為宿主機平臺(Host),運行環境為目標平臺(Target),相應的測試就有宿主機測試(Host Testing)和交叉環境測試(Cross Testing)。
嵌入式系統具有多平臺開發、嵌入性、實時性、開發環境和運行環境不同、高強度運行等特點,這使得軟件測試代價增加,而且帶來了測試策略的問題[3]。因此在嵌入式軟件的測試中,需針對軟件模型采用適當的測試策略來提高嵌入式軟件的測試效率,來減弱外界因素對目標系統的影響。
本文的測試對象是某型無人直升機的飛控系統軟件,屬于典型的嵌入式系統。
2.1飛控系統軟件分析
無人直升機飛控系統軟件是無人直升機飛控系統的核心,分為飛行控制功能和飛行管理功能兩部分。飛行控制功能根據控制策略解算控制律,主要用于發動機控制和飛行姿態(俯仰、橫滾和航向)的穩定,控制飛行航跡,使無人直升機完成從起飛到降落整個過程的飛行;飛行管理功能主要進行自動導航管理、發動機管理、機載設備管理、制導控制管理、系統監管等多項飛行管理任務。本文研究的飛控系統軟件功能層次如圖3所示。
無人直升機飛控系統軟件需求規格說明中闡述了飛控系統軟件的功能、性能、接口以及所要考慮的限制條件。它盡可能完整地描述了飛控系統預期的外部行為和用戶可視化行為,不僅是開發人員設計和編程的基礎,也是系統測試的重要參考和依據。
2.2飛控系統軟件測試策略
無人直升機飛控系統軟件作為航空機載的關鍵軟件,其測試嚴格遵守GJB 5369-2005《航天型號軟件C語言安全子集》的標準。
針對飛控系統軟件嵌入性、實時性、高安全性、高可靠性的特點,制定相應的測試策略以滿足測試需求。
1)嵌入性問題的解決
嵌入式軟件的特點是開發環境(宿主機)和運行環境(目標機)是不同的,例如本文研究的飛控系統軟件的宿主機開發環境是CodeWarrior,而目標機運行環境是μc/OSII。理論上,有效的測試工作應當在軟件實際運行環境下進行,但由于受到各方面因素的限制而無法完全實現。
因此,在開發環境中執行單元測試、功能測試、軟件集成測試,在運行環境中進行軟/硬件集成測試和系統測試。運行環境下的測試在搭建的飛控系統半物理仿真平臺下進行,其原理示意圖如圖4所示。整個地面半物理仿真系統中使用仿真測試設備模擬各類傳感器和通信方式,其接口與真實運行環境接口一致,其傳感器數據的采集、計算和輸出與真實的傳感器設備僅有微小差異,對測試結果無影響。
2) 實時性問題的解決
實時程序的測試一般包含性能測試和邏輯測試兩個方面,但功能測試會對軟件的實時性造成影響。一般的解決方法是:①將時間限制適當放寬到不影響軟件的執行邏輯;②應用專門的測試設備來獲取測試信息。
3)高安全性、高可靠性問題的解決
飛控系統軟件的質量直接影響無人直升機的飛行品質和飛行安全,提升軟件的可靠性需要完善測試活動的過程。
① 軟件測試應當是軟件驗證的過程,而不是簡單的測試過程。軟件驗證是評審、分析和測試的組合,將評審和分析融入到軟件的測試過程中,驗證測試用例和測試程序是否滿足目標,有助于測試人員更早地發現更多的軟件缺陷。
② 軟件測試活動應存在于軟件開發的整個生命周期。軟件測試不是軟件開發結束后的活動,而應該是和軟件開發同步并行展開的。
2.3飛控系統軟件測試關鍵技術
2.3.1 測試用例的設計
測試用例是為特定的測試項所規定的一組輸入、執行條件和預期結果。設計測試用例時,應遵循以下原則:
1)基于測試要求:應按照測試級別的不同要求設計測試用例。軟件單元測試和軟件部件測試依據《軟件設計說明》;軟件配置項測試依據《軟件研制任務書》、《軟件需求規格說明》;軟件系統測試依據《軟件研制任務書》、《軟件需求規格說明》、《系統設計方案》。
2)基于測試方法:應明確所采用的測試用例設計方法。為達到不同的測試充分性要求,應采用相應的測試方法,例如等價類劃分、邊界值分析、猜錯法、因果圖等方法。
3)兼顧測試充分性和效率的原則:測試用例集應兼顧測試的充分性和測試的效率;每個測試用例的內容也應完整,具有可操作性。
4)測試執行的可重復性:應保證測試用例執行的可重復性。
測試用例的設計步驟如圖5所示。
2.3.2 測試覆蓋分析
測試覆蓋分析包括需求覆蓋分析和結構覆蓋分析。
需求覆蓋分析的目標是確定基于需求的測試是否完全覆蓋了軟件需求,基于需求的軟件測試使測試用例覆蓋軟件的每一項需求。
結構覆蓋分析是對軟件結構的執行情況進行分析的一種手段,常見的結構覆蓋法有:語句覆蓋、判定覆蓋、條件覆蓋、條件/判定覆蓋、條件組合覆蓋等,結構覆蓋分析的過程如圖6所示。
本文針對某型無人直升機飛控系統軟件的覆蓋要求:重要模塊(實現軟件重要功能、安全性需求的模塊即為重要模塊,重要模塊的比例不低于軟件總代碼量的10%)要求語句、分支、條件/判斷覆蓋率達到100%,其它模塊要求語句和分支覆蓋率100%,對覆蓋率無法達到的需說明原因。
2.4飛控系統軟件的測試模型
傳統的V模型描述了基本的開發過程和測試行為,明確了測試過程的不同級別,清晰地描述了不同測試階段和開發過程階段的對應關系,但其存在固有的局限性。V模型是順序開發模型,將系統開發過程劃分為具有固定邊界的不同階段,使得測試人員難以越過邊界采集測試所需要的信息,以致V模型無法引導軟件項目的全部過程,來確定先行的測試或延后的測試。
極限編程的理念是測試應當先行,并貫穿軟件開發的整個生命周期[4]。軟件缺陷修復的代價會隨著時間的推移呈指數級增加,所以測試活動越早介入越好。因此,在軟件設計開發的過程中,同時需要平行、同步地進行測試的計劃和設計、測試用例的生成、測試程序的編寫,測試工具的選擇和測試環境的搭建等。
綜合考慮嵌入式的無人直升機飛控系統軟件,結合軟件測試技術、極限編程思想,借鑒傳統的V模型,提出基于需求的無人直升機飛控系統軟件測試模型。
基于需求的無人直升機飛控系統軟件測試模型如圖7所示。對于該模型的說明如下:
1)該模型包含的主要活動包括:軟件需求評審、軟件設計評審、代碼評審、單元測試、基于需求的測試用例設計、基于需求的測試用例評審、基于需求的測試程序設計、基于需求的測試程序評審、軟件集成測試、軟件配置項測試、需求覆蓋分析、結構覆蓋分析、軟件系統測試。
2)該模型依據軟件需求進行結構設計、編碼和測試用例設計,軟件測試活動的整個過程是以軟件需求為中心,完成需求覆蓋、結構覆蓋的測試和分析。
3)軟件的開發和測試過程是并行工作模式,彌補了V模型中順序開發模式的缺點,提高了測試效率,降低了軟件產品的質量風險,縮短了整個軟件的研發周期和維護成本。
4)該模型中,軟件的開發和測試的各階段都增加了一個評審活動,對源代碼和測試用例的準確性、完整性提供專業的評估,屬于間接的軟件驗證過程,能夠及時發現在開發和測試活動中存在的軟件缺陷。
5)該模型中明確了需求覆蓋分析和結構覆蓋分析的執行和判斷標準,通過測試用例的增加、重編、迭代來滿足測試計劃的要求。
6)該模型中的編碼、代碼審查和單元測試不是單一的順序執行關系,而是交叉、耦合、同步實施的活動。一部分編碼工作完成后,就開始代碼審查和單元測試,然后依據測試的結果,再對代碼進行完善。
3.1軟件測試自動化
自動化測試是指利用測試工具來執行測試,并對測試結果進行分析的測試行為,軟件自動化測試工具是提高測試效率、覆蓋率和可靠性的一種有效方法[5]。
在飛控系統軟件的測試過程中,引入自動化測試工具,其各測試階段測試工具的引入情況如下:
靜態分析:LDRA Testbed、LDRA TBAudit;
單元測試:LDRA Testbed、LDRA TBrun;
代碼評審、設計評審、質量評審:LDRA工具包。
通過測試工具的應用,生成靜態分析、復雜度分析和度量評估的報告,并完成測試用例的執行、測試結果的比較、結構覆蓋率分析等的自動化。
3.2軟件的測試準備
依據《飛控系統軟件研制任務書》的設計約束和602所三級過程體系文件之《軟件測試裁剪指南》的要求確定本次的測試級別包括靜態測試、單元測試和系統測試。
1)文檔資料:《飛控系統軟件研制任務書》、《飛控系統軟件需求規格說明》、《飛控系統軟件設計說明》和《飛控系統軟件接口控制文件》等。
2)測試環境和測試工具
靜態分析:PC機+Windows XP+CodeWarrior+LDRA TBAudit;
單元測試:PC機+Windows XP+CodeWarrior+LDRA TBrun;
系統測試:PC機+Windows XP+CodeWarrior+遙控遙測軟件+仿真控制臺軟件+飛控計算機(目標機)+μc/OSII操作系統+仿真測試設備。
3.3軟件的測試過程
根據上文中提出的基于需求的飛控系統軟件測試策略及模型執行軟件的各項測試工作,其主要內容包括:軟件需求評審、軟件設計評審、代碼審查、單元測試、基于需求的測試用例設計、基于需求的測試程序設計、執行測試、覆蓋分析、測試問題報告。
靜態測試的測試類別包括文檔審查DOCR、代碼審查CR、靜態分析SA;單元測試的測試類別包括:功能測試FN、接口測試IF和結構覆蓋測試SC;系統測試的測試類別包括:功能測試FN、性能測試PF、接口測試IF、邊界測試BD、強度測試IS、余量測試RC、安全性測試SAF。
3.4軟件測試的執行
基于需求的飛控系統軟件測試模型包括多個評審過程:軟件需求評審、軟件設計評審、代碼審查、測試用例評審、測試程序評審。在測試過程中,每個測試環節結束后,都需進行相應的評審并填寫評審單。
依據2.3.1節所述的測試用例的設計準則,分析軟件的需求編寫測試用例。每個測試用例應包括以下要素:被測軟件名稱、標識和版本,編號,用例標識,測試級別,測試說明,用例描述,測試步驟,預期結果,實測結果,故障現象描述,測試用例的設計人員、設計時間、測試人員、測試時間、測試地點,依據測試結果評估準則得出的測試結論。測試用例表的格式如圖8所示。
通過對被測軟件的測試需求分析,將軟件需求(包括隱含需求)整理為測試需求,每個測試需求都分解為具體的測試項,飛控系統軟件的單元測試共確定了27個測試項,覆蓋了被測軟件設計說明中重要模塊的全部可測需求,共設計了142個測試用例;飛控系統軟件的系統測試共確定了18個測試項,覆蓋了被測軟件需求規格說明中的全部可測需求,針對每個測試項,從功能測試、性能測試、邊界測試、余量測試、強度測試等方面設計了156個測試用例。此外,從軟件測試說明中的測試用例到它所涉及的系統或CSCI需求都是可追蹤的,從軟件測試說明所提及的每項系統或CSCI需求到涉及它們的測試用例也是可追蹤的。
基于需求的飛控系統軟件測試模型在各關鍵的測試環節都增加了評審活動,能夠有效地減小測試錯誤率。LDRA Testbed測試工具的應用,實現了代碼分析、測試用例執行、結果比對、結構覆蓋率檢測的自動化。通過實踐分析證明,在實際的測試活動中,結合基于需求的飛控系統軟件模型,能夠盡早地發現軟件中存在的錯誤,提高測試效率,縮短測試周期,從而保證飛控系統軟件的可靠性和安全性。
[1] IEEE std 610.12-1990. IEEE Standard Glossary of Software Engineering Terminology[S].In IEEE Standards Software Engineering, Volume One: Customer and Terminology Standards, 2009.
[2] 唐 科.軟件仿真環境下的嵌入式軟件測試的研究[D].成都:電子科技大學,2006:7-8.
[3] 張臻鑒.航空嵌入式軟件測試研究[D].西安:西安交通人學,2003:14-15.
[4] 張惠彥.極限編程的研究和應用[J].科學技術與工程,2007,7(12):2998-3000.
[5] 朱國慶,許聚常,任繼平,等.軟件測試自動化實踐[J].裝甲兵工程學報,2004,18(2):91-92.
AppliedResearchontheTestingTechnologyofUnmannedHelicopterFlightControlSystemSoftware
ZHANG Shaojie1,LI Jianwei2
(1.China Helicopter Research and Development Institute, Jingdezhen 333001, China;2.Army Aviation Department of the PLA General Staff Military Representative Office in Jingdezhen Rejion, Jingdezhen 333000,China)
Software Testing is a necessary link to ensure the software quality. In order to solve the characteristics of real-time performance, embed ability and high reliability of unmanned helicopter flight control system software (FCSS), this paper put forward a feasible testing strategy and proposed the requirements based software testing model for FCSS.Through the actual project and combining with application of software testing automation tools, the testing result indicated that the strategies and model could improve the efficiency and ensure the quality of FCSS.
software testing; flight control system software; FCSS; software testing automation
2016-11-14
張少杰(1990-),男,河北石家莊人,碩士,助理工程師,主要研究方向:無人直升機飛行控制。
1673-1220(2017)04-040-06
TP311.55;V249
A