龍建祥 王宏風 姚申茂
(海軍705廠1) 湛江 524016)(海裝艦船技術保障部2) 北京 100841)
各國武器裝備發展的實踐表明,武器裝備實行“三化”(通用化、系列化、模塊化)不僅是發展武器裝備的需要,而且對推動國防科技進步也起到非常重要的作用。它的目的就是為了最大限度地利用先進科技成果,最大限度地減少同一水平上的重復勞動,以最小的投入和有限的品種、規格的單元研制出滿足多樣化需求的武器裝備,以達到縮短研制周期、降低成本、提高質量和可靠性、簡化維修和后勤裝備保障、提高戰斗力的目的。VXI總線測試方案就是“三化”建設中的一個很好的例子,它具有電磁兼容性好、可移植性強和組建系統容易等優點,當前各國武器裝備的維修設備中普遍采用了VXI總線的測試方案。
新技術的應用往往也伴隨著對該項新技術的測試課題的研究。如:基于VXI總線的測試軟件如何進行軟件測試?基于VXI總線的測試軟件的可靠性與可用性如何評估?
VXI總線是 VME總線在儀器領域的擴展(VMEbus eXtensions for Instrumentation),是計算機操縱的模塊化自動儀器系統。經過十多年的發展,它依靠有效的標準化以及VXI總線儀器的互換性和互操作性。目前,全世界有近400家公司在VXI總線聯合會申請了制造VXI總線產品的識別代碼(ID號)。大約有1300多種VXI產品,其門類幾乎覆蓋了數據采集和測量的各個領域。
軍事部門不僅把VXI用于基地設備的修理與維護,而且也用于作戰系統。目前,許多政府機構和軍事機構正在把VXI看作測試標準,美國軍方開始由定做逐步轉向使用現成的商用VXI系統,這一行動正在把更多的民用部門導向VXI。VXI總線已成為公認的21世紀儀器總線系統和自動測試系統的優秀平臺。
軟件測試(Software testing)是軟件生命周期(Software life cycle)中的一個重要階段,是軟件質量保證的關鍵步驟。軟件測試就是在軟件投入運行前,對軟件需求分析、設計規格說明和編碼進行最終復審的活動,軟件測試的目的是為了檢驗軟件系統是否滿足需求[2]。
軟件測試從測試方法上分可以分為“白盒測試”和“黑盒測試”兩種。白盒測試是根據程序的內部邏輯來設計測試用例(test case),檢查程序中的邏輯通路是否都按照預定的要求正確工作。而黑盒測試是根據規格說明書規定的功能來設計測試用例,檢查程序的功能是否符合規格說明書的要求[3]。
從測試的順序和規模上分,又可分為單元測試、集成測試、確認測試和系統測試。單元測試是測試軟件模塊級的功能和算法,單元測試應該在編碼和詳細設計階段應用白盒測試的方法進行測試。集成測試是測試軟件模塊間的接口和通訊,集成測試應該在設計階段應用黑盒測試的方法進行測試,確認測試是以規格說明書為依據,對軟件的功能、性能等進行的黑盒測試,而系統測試則是對軟件與硬件和其他相關因素的功能測試。
對各個階段的測試必須選用相應的測試工具來完成,常用的軟件測試工具有測試數據生成程序、動態分析程序、靜態分析程序和文件比較程序。測試數據生成程序可以為被測試系統自動生成大量輸入數據;動態分析程序是分析被測程序中每個語句的執行次數,利用它可以發現測試過程中沒有執行的語句,以便增加測試數據;靜態分析程序不需要執行被測試的程序,它僅僅掃描被測程序的正文,從中尋找可能導致錯誤的異常情況。在這些自動測試工具中,NuMega公司的NuMega測試軟件最具權威性,該測試軟件由一個靜態分析程序(BoundsChecker)和兩個動態分析程序(T rueCoverage和T rueTime)組成。
為了對基于VXI總線測試軟件進行較為完備的測試,結合VXI平臺的主要功能,我們擬訂以下測試方法:
1)文件管理功能的測試,主要進行文件的存儲、文件打開、文件新建、文件訪問和文件合并等文件功能進行測試。
2)程序運行及調試功能的測試,這部分的測試用例將運行源程序并進入界面,單步執行并設斷點功能進行測試。
3)編程控件的測試,這部分的測試用例將對基本控件,包括流程設計控件、函數調用控件、輸入輸出控件、數據控件以及顯示控件進行功能測試。
4)對VXI平臺重要的常用功能的測試,這部分的測試用例將對儀器管理與控制、子程序與子函數的調用、測試數據的分析與顯示、測試結果的存儲與取回、操作界面的建立以及生成測試報告六個常用功能進行測試。
5)在進行上述的測試的同時,用NuMega公司的NuMega測試工具對源程序進行靜態分析和動態分析。
軟件測試主要依據是被測試系統的研制任務書和技術規格書,是對軟件整體功能和性能的綜合測試與評估。測試用例的合理性對于軟件的測試與評估具有關鍵作用,所以應該與軟件的研制人員以及最終用戶一起,有針對性地研究實際操作環境并加以描述,形成合理的測試用例。另一方面,軟件運行環境的復雜程度對軟件評估具有重要作用,所以應產生盡量逼真的運行背景[4]。
軟件維護是軟件生命周期的最后一個階段,也是持續時間最長,代價最大的一個階段。測試的主要目的就是提高軟件的可維護性,降低軟件維護的成本。軟件維護通常包括四類:為了糾正在使用過程中暴露出來的錯誤而進行的改進性維護;為了適應外部環境的變化而進行的適應性維護;為了改進原有的軟件而進行的完善性維護;以及為了改進將來的可維護性和可靠性而進行的預防性維護。
軟件的可理解性、可測試性和可修改性是決定軟件可維護性的基本因素。軟件生命周期每個階段的工作都和軟件可維護性有密切的關系。良好的設計、完善的文檔資料以及一系列嚴格的復審和測試,使得一旦發現錯誤是比較容易診斷和糾正。因此,在軟件周期的每個階段都必須充分考慮可維護性問題,并且為軟件維護作好準備。
文檔是影響軟件可維護性的決定因素,因此,文檔甚至比可執行代碼更為重要。文檔可分為用戶文檔和系統文檔兩大類。不管是那一類文檔都必須和源代碼同時維護,只有與程序完全一致的文檔才是真正有價值的文檔。根據軟件行業的有關標準,軟件研制過程中形成的文檔主要有:《軟件開發計劃》、《軟件需求規格說明》、《接口需求規格說明》、《接口設計文檔》。
可靠性(reliability)是產品在規定的條件下和規定的時間內完成規定功能的能力,它的概率度量稱為可靠度。軟件可靠性(software reliability)是軟件系統的固有特性之一,它表明了一個軟件系統按照用戶的要求和設計的目標,執行其功能的正確程度。軟件可靠性與軟件缺陷有關,也與系統輸入和系統使用有關。理論上說,可靠的軟件系統應該是正確、完整、一致和健壯的。但是實際上任何軟件都不可能達到百分之百的正確,而且也無法精確度量。一般情況下,只能通過對軟件系統進行測試來度量其可靠性。
軟件測試的根本目的是消除故障,提高軟件的可靠性。軟件可靠性涉及到兩個概念,即軟件的可靠性和軟件的可用性。軟件可靠性是程序在給定的時間間隔內,按照規格說明書的規定成功運行的概率。軟件可用性是程序在給定的時間點,按照規格說明書的規定成功運行的概率。
在一段時間內,軟件系統故障停機時間分別為tdown1,tdown2,tdown3…,正常運行時間分別為tup1,tup2,tup3…,則系統的穩態可靠性為:

如果引入系統平均無故障時間MTBF和平均維修時間MTBR的概念,則As s可以變為:

平均維修時間MTBR是修復一個故障平均需要的時間,它取決于維護人員的技術水平和對系統的熟練程度,也和系統的可維護性有重要的關系。平均無故障時間MTBF是系統按規格說明書規定成功地運行的平均時間,它主要取決于系統中潛伏的故障的數目。
軟件的平均無故障時間MTBF是一個重要的質量指標,往往作為對軟件的一項要求。MTBF可以用以下的公式進行估計:

其中:ET為測試之前程序中故障總數;IT為程序長度(機器指令總數);τ為測試(包括調式)時間;Ec(τ)為在0到 τ期間改正的錯誤數 。K 為常數,它的值應該根據經驗選取,K的典型值是200。
在上述公式中的ET(故障總數)是一個十分重要的量,它既是直接標志軟件的可靠性程度,又是計算軟件平均無故障時間的重要參數。ET與程序規模、類型、開發環境、開發方法、開發人員的技術水平和管理水平等都有密切的關系。估計ET有兩種方法,即置入故障法和分別測試法[6]。
實踐證明,盡管人們在開發軟件的過程中使用了許多保證軟件質量的方法和技術,但開發出的軟件中還會隱藏許多錯誤和缺陷。這對于規模大、復雜性高的軟件更是如此。所以,嚴格的軟件測試對于保證軟件質量具有重要作用。軟件測試與可靠性評估工程雖然得到了普遍的重視,但還處于不成熟階段,特別是軍方軟件的測試與可靠性評估管理還沒有建立較完善較權威的管理和規范。加上國內對于軟件可靠性模型的研究多集中在軟件的研制階段,而很少有涉及測試與評估階段,所以加大軟件測試與可靠性評估研究具有重要意義。本文設計了基于VXI總線的測試軟件的軟件測試與可靠性評估方法,可用于當前基于VXI總線的測試軟件的測試、可靠性、可用性做出初步的鑒定的參考。
[1]Dr.Linda Rosenberg,Ted Hammer,Jack Shaw.Software Metrics and Reliability Unisys/NASA GSFC,Bld 6 Code 300.1
[2]徐曉春.軟件測試的方法和工具[J].計算機世界,1999(12)
[3]淡艷.如何設計黑盒測試的測試用例[J].成都教育學院學報,2005,19(11)
[4]李海鷗,張忠亭,姜守達.基于VXI總線的通用測試軟件研究[J].高技術通訊,2000(12)
[5]陳光禹.VXI總線測試平臺技術[M].北京:電子科技大學出版社,1996,10
[6]魏震生,張義忠,于振江.基于VXI總線的測試平臺與故障診斷系統設計[J].計算機自動測量與控制,2001(10)