張 馳
1.上海航天控制工程研究所,上海 200233 2.同濟大學軟件學院,上?!?01804
Ada語言軟件測試方法探討
張馳1,2
1.上海航天控制工程研究所,上海200233 2.同濟大學軟件學院,上海201804
摘要軟件測試是保證軟件質量的重要手段。本文結合某衛(wèi)星型號嵌入式星載軟件的工程實施介紹Ada語言軟件測試的工具和方法。
關鍵詞軟件質量;測試方法;測試環(huán)境
進入21世紀,計算機技術發(fā)展日新月異,作為計算機技術的重要組成部分,軟件的質量成為控制產品質量的關鍵所在。特別是一些航空航天領域的應用,軟件設計的可靠性和安全性更為突出[1]。如何保障軟件質量?測試環(huán)境則顯得尤為關鍵。軟件測試可以驗證其能否符合特定的需求以及預期設計目的,是通過軟件測試工程師或者專業(yè)的軟件測試工具測試特定軟件運行的系統(tǒng)工程。
單元測試是軟件開發(fā)設計周期中級別最低的測試活動。所謂單元測試,即將軟件分離成獨立的單元模塊,再與其他模塊進行測試。所以單元測試應該具備復制性,無論在程序修改過程中還是在環(huán)境復制過程中。因此,所有版本的單元測試都應該是在軟件的開發(fā)生命周期中進行的。本文筆者主要論述了軟件測試的流程以及測試工具。
Ada是普通程序經(jīng)常使用的設計語言,當年美國國防部花費巨資,耗時二十余年,歷經(jīng)萬難而研發(fā)出來。該語言大受贊譽,一經(jīng)推出,即成為第四代計算機語言的成功代表,是迄今為止,最具復雜性和完備性的程序開發(fā)語言。相比其它程序設計語言,Ada既體現(xiàn)眾多軟件技術開發(fā)的基本原理,也成功將這些理論基礎付諸實踐。運用Ada語言可顯著提高軟件系統(tǒng)的有效性,可靠性,可維護性甚至改善軟件系統(tǒng)的清晰性。目前,美國國防部唯一指定的可用于軍用系統(tǒng)開發(fā)的語言就是Ada語言。同時,該語言也是我國軍方內部開發(fā)的標準語言。
2.1 靜態(tài)分析
工作內容:方案設計師與軟件設計師走讀代碼。
常見問題:
1)邏輯判斷語句else涵蓋范圍:除if和else if語句特殊處理的情況,其他情況均按else分支進行處理,需確定是否有漏考慮特殊情況,或可并入else分支統(tǒng)一進行處理。
2)邊界條件的判斷:>和>=,<和<=是否有用錯;
3)循環(huán)變量的累加是否越界。
4)分母為變量時分析其初始值及物理意義。
2.2 單元/組裝測試
某衛(wèi)星型號的單元測試和組裝測試均使用LDRA公司的Testbed軟件,故合并來講。
軟件測試環(huán)境:某衛(wèi)星型號 GNC軟件單元測試環(huán)境由開發(fā)上位機完成,其中開發(fā)上位機安裝開發(fā)環(huán)境(ADAERC-32編譯器)、部件測試分析工具(Testbed TBrun)。
軟件測試的硬件和固件項:一臺上位機(內存為2G,有串口),上位機的配置見表1。
表1 測試環(huán)境的軟件項
系統(tǒng)配置:因為測試工具Testbed為windows版本,而編譯器為Linux版本,所以在系統(tǒng)中配置了Samba服務用以實現(xiàn)Windows系統(tǒng)和虛擬機的Linux系統(tǒng)之間的同網(wǎng)段文件夾共享功能。
(注:Samba是一個工具套件,在Unix上實現(xiàn)SMB (server messag block)協(xié)議,或者稱之為NETBIOS/ LanManager協(xié)議。SMB協(xié)議通常是被windows系列用來實現(xiàn)磁盤和打印機共享。)
測試前準備工作:
1)將被測代碼及所有被調用文件拷入samba服務配置好的共享文件夾,并拷入Testbed的驅動程序ldra_testbed_run.bat。
2)新建一個格式為[測試項目名].lib的文件,用來儲存測試程序的調用關系、數(shù)據(jù)流等信息。
3)新建一個集合(creat new set),該集合包含程序的所有頭文件(.ads),并進行靜態(tài)分析;如.ads文件比較少也可以逐個分析,靜態(tài)分析時需選定之前新建的.lib文件作信息記錄。
4)選定測試模塊(.adb)并開始測試。
測試內容:分支/語句100%覆蓋測試。
發(fā)現(xiàn)問題:如有不可達分支/語句,則可根據(jù)具體情況判斷。通常來說出現(xiàn)不可達分支是因為接口參數(shù)不充分和程序邏輯問題。
2.3 確認測試
測試環(huán)境:如圖1,某型號的確認測試在實時仿
真實驗室進行。GNC計算機為低等級產品,單機使用Matlab搭建的動力學模型進行仿真,數(shù)管軟件和AD信號等均為模擬信號。
確認測試工具:工具為上海創(chuàng)景公司自主研發(fā)的RTInsightPro。該套工具包括RTInsightPro主機一臺及配套上位機軟件,主機與上位機通過網(wǎng)線連接,通訊與設置遵循TCP/IP協(xié)議。RTInsightPro的工作原理為在目標代碼內插樁,然后通過監(jiān)測CPU對于插樁點目標地址的讀寫操作來抓取數(shù)據(jù)包,最后將數(shù)據(jù)包通過網(wǎng)線傳入上位機軟件里,實現(xiàn)監(jiān)控源代碼覆蓋率的功能。因為涉及CPU信號的讀取,測試前創(chuàng)景公司需與單機設計師討論并設計符合CPU預留接口的電路板。工具系統(tǒng)架構見圖2。
測試內容:分支/語句100%覆蓋率測試。
通過對軟件進行單元測試,確保了軟件在編碼上的邏輯正確性、驗證了軟件功能與文檔設計的一致性。降低了軟件開發(fā)風險以及開發(fā)成本。更是對航天飛行器軟件的高可靠性、安全性提供了保障。
參考文獻
[1]易海勝.單元測試用例設計方法初探[J].武漢科技學院學報,2006,19(5).
[2]張巍,尹海波,孫立財.軟件的單元測試方法[J].光電技術應用,2006,21(2).
[3]中國航天科技集團公司軟件專家組.航天軟件工程實施技術指南及范例(修訂版).
中圖分類號TP3
文獻標識碼A
文章編號1674-6708(2015)139-0137-01