房燦新
(91404部隊 秦皇島 066001)
軍用軟件是武器裝備的神經中樞,用于硬件控制或信息決策,對外部世界影響深遠[1]。軟件測評是保證武器裝備質量的有效手段,它智慧密集、技術密集、管理密集。根據軍用軟件管理機構的定義,測評過程主要包括:測試需求分析、測試策劃、測試設計和實現、測試執(zhí)行、測試總結(包括評價過程和總結)。利用信息化路線圖的方法,建立規(guī)范有效的測試過程控制程序,統(tǒng)攬測試需求,明確測試大綱(計劃),復用測試用例,跟蹤軟件缺陷,提高測試自動化水平,是軍用軟件測評實驗室工作中的重中之重。
自2005年《軍用軟件產品定型管理辦法》實施以來,軟件測評為提高武器裝備質量做出了很大貢獻。軟件測評最主要目的是:發(fā)現缺陷,評估系統(tǒng)。由于武器裝備研制涉及面廣,且測評工作主要在研制過程結束后、試驗鑒定工作開始前較短的時間窗口展開,因而問題整改所帶來的軟件修改和新一輪的軟件測評過程往往是循環(huán)往復,這就要求在提高軟件測試深度與廣度的同時,盡可能地提高測評效率。
設計策略就是要將測評業(yè)務流程轉化為信息系統(tǒng)能夠識別的形式標識(即工作流邏輯),并在此形式表示的驅動下完成工作流的執(zhí)行和管理[2]。軍用軟件測評團隊往往是多人協(xié)同工作,需要以信息化手段統(tǒng)一過程管理規(guī)范,測評過程管理軟件系統(tǒng)以測試對象為中心,提供統(tǒng)一的測評過程管理、項目管理及公共服務管理;其核心概念和模型符合《GJB 2725A測試實驗室和校準實驗室通用要求》、《軍用軟件測評實驗室測評過程和技術能力要求》、《海軍武器裝備軟件評測細則》、《GJB 141/Z軟件測試指南》。建立標準測試流程,以向導方式明確測試需求、制定測試計劃、編寫測試步驟、跟蹤測試問題、擬制測試報告,對測評項目的原子事務和測評人員的工作績效進行有效的控制和管理,實時監(jiān)控測評狀態(tài)并分析項目測評質量,自動生成標準化的測試文檔,為測試管理人員、測試執(zhí)行人員、質量保證人員提供信息化的管理平臺[3]。
系統(tǒng)使用C# .net/JavaScript技術體制,后臺數據庫為SQL Server。本系統(tǒng)由兩個軟件配置項組成:過程管理軟件CSCI_1_Flab,項目管理軟件 CSCI_2_FlabMng。前者為項目組所有成員共享使用,因此采用B/S工作模式,后者主要由項目組長和管理人員使用,采用C/S工作模式。系統(tǒng)在局域網/廣域網的基礎上,采用數據訪問層、業(yè)務邏輯層、表示層的三層模型構架,以便于項目的靈活重組和后期維護,過程管理采用瀏覽器、Web服務器和數據庫服務器構成B/S結構,因此當業(yè)務邏輯變更、數據體系發(fā)生變化時,對客戶端并無任何影響。通過合理劃分系統(tǒng)的層次結構,確定數據的繼承關系,兼顧了軟件測評的工作效率和測試數據安全性要求。
系統(tǒng)將測試需求分析、測試計劃、測試設計、測試執(zhí)行、測試總結等過程緊密銜接,包括項目自由定制,標識自動建立,回歸測試過程自然統(tǒng)合。制定以測試需求樹為主線的測試過程管理的工作流程,將抽象軟件需求分解轉變成具體測試需求的層次結構,要求各個階段的信息能夠派生繼承,最大程度地減少測試人員的工作量。在信息匯總基礎上,將各種Word測試文檔自動輸出,支持各種插圖(所有圖形格式)的鎖定注入,章節(jié)號、表頭號、圖頭號自動維護。
1)標準符合與體系適應性。融合了軍、地專業(yè)測評機構的主流質量標準,包括GJB438B、《軍用軟件定型測評大綱、報告編制要求》。
·支持單元測試、部件測試、配置項測試、系統(tǒng)測試,以及相應階段的回歸測試;
·在全部的測試周期中,建立了人性化的測試向導,統(tǒng)一規(guī)范測試團隊的作業(yè)行為;
·自動輸出圖表一致的標準化文檔,根據不同企業(yè)組織的具體要求,進行裁剪和定制。
2)過程控制與信息繼承性。通過IE或FireFox向測試和開發(fā)人員呈現多標簽窗口(需求分析、測試大綱、測試說明、測試執(zhí)行、問題匯總等),以面向對象的方法實現測試信息的繼承和派生(圖例見表1)。
表1 Web樹型視圖圖例
·測試類型自由定制,測試項目可以在已有原型上有效實施;
·測試項、測試用例等可以在任一原型上繼承和派生;
·測試項、測試用例可以自由拖拉,進行結構上的重新組合;
·測試標識可以自動建立和維護;
·各個過程的字段信息前后索引關聯(lián),測試者所關心的信息,已智能化地引用、歸并或替換;
·自動建立測試需求、測試用例、執(zhí)行記錄、問題報告之間的跟蹤矩陣;
·自動維護測試文檔的目錄、一級、二級、三級標題編號;
·使用Session、Cookie技術,敏感記憶重復信息,最大程度減少人機輸入工作量;
·支持各種圖形格式,能將圖形鎖定輸出,自動維護圖表編號;換頁時的圖表能夠自動適應,一掃人工文檔輸入時圖片跳躍不定的郁悶。
3)項目管理與數據統(tǒng)計性[4]。測試項目組長可以通過C/S管理軟件,能夠對測試人員、測試進度、測試問題等進行分類管理;在與互聯(lián)網進行跨區(qū)聯(lián)合作業(yè)時,為了B/S的網絡安全,通過MAC地址、密碼、CPU編號、硬件狗等方式能夠對用戶進行身份驗證。
·問題等級、問題類型的分類統(tǒng)計,跟蹤軟件問題生命周期全過程;
·測試用例的執(zhí)行情況、測試覆蓋率等(個體情況以圖標方式在測試用例的樹型視圖上體現),可以根據測試對象、測試類型、測試問題級別等進行圖、表統(tǒng)計分析;
·實現回歸測試時的測試需求、測試計劃的剪裁重組和測試用例的復用,第一次測試文檔和各輪回歸測試文檔的一致性組織管理。
關于軟件系統(tǒng)的模塊劃分,可參考相關文獻[5~7],這里將對測試用例的管理作重點說明。測試用例主要的管理要素為:測試名稱與標識、測試用例說明(對象、目的和測試方法)、初始化要求(硬軟件配置等)、輸入(來源、性質和參數次序)、預期結果、評估準則和測試終止條件。在開發(fā)過程中,還應圍繞測試用例向上追溯至父表(測試計劃、測試需求),給出清晰、明確的追蹤關系。
測試需求項的信息字段主要有:名稱、標識、測試優(yōu)先級、測試項描述(充分性約束)。測試項的后綴按照測試類型來定義,如XX_GN,表示是功能測試。在后臺SQL Server數據庫中,定義了總裝《軍用軟件測評實驗室測評過程和技術能力要求》所規(guī)定的23種測試類型縮寫標識,并且補充了《海軍武器裝備軟件測試細則》里新增加的一個:內存錯誤測試。測試計劃與測試需求規(guī)格說明是一對一的依賴映射關系,因此不存在新建、刪除、移動操作;應該從測試的源頭即測試需求規(guī)格說明中去定義。至于測試用例的組織,使用者可以按照裝備的組成類別進行分類,例如:雷達主控、伺服機構、信號處理、PPI顯示等。測試時間、測試地點、測試者、監(jiān)測者,使用了cookie、session技術,由于無論瀏覽站點中的哪個頁面,瀏覽器和服務器都交換cookie信息,且以文本形式存儲于客戶端,這樣能高效地繼承上次測試過程所保存的中間數據,以減少人機輸入工作量。測試項和測試用例之間是一對多的映射關系。測試用例可以按照裝備類型在同一個測試項下,進行拖拉移動,本項目主要通過AJAX技術來實現。
圖1 AJAX信息處理流程
AJAX(Asynchronous JavaScript and XML)[8]建立在Web2.0基礎上,其協(xié)議標準還處在發(fā)展完善之中,主要由幾種新技術組合而成,即JavaScript、Document Object、XMLHttpRequest和XML。AJAX最顯著的特點是利用JavaScript對象的XMLHttpRequest,直接存取后臺異步數據,使得瀏覽器無需刷新窗口,即可進行網頁的動態(tài)更新而獲得即時的新體驗。如圖1所示,典型的AJAX處理流程為:頁面初始化、JavaScript事件觸發(fā)、服務器接受用戶請求、XMLHttpRequest接受用戶響應數據、JavaScript DOM處理返回信息、頁面被更新。本項目開發(fā)過程中,引用了第三方的Web ASP.NET樹形視圖控件FlyTreeView,它就是一種快捷而功能齊全的AJAX,對XMLHttpRequest的過程和方法進行了隱式封裝,提供先進的拖放功能,可以在本網頁頁面、跨網頁頁面內進行樹形視圖節(jié)點的自由拖放。頁面樹形節(jié)點拖放的具體代碼技術為:
當點擊要拖走(復制新增)的網頁樹形上某一節(jié)點時,發(fā)起事件響應;獲得其層級與名稱,并可得到此測試用例所有的表項信息,并且以此ID標識上溯其它有關聯(lián)的數據表項,如:測試類型、測試需求等(通過后臺數據庫事先定義好的一對一、一對多的索引關系):
在將某測試用例節(jié)點拖走,再停泊于Web樹形視圖的某父節(jié)點并釋放后,將發(fā)起新的事件響應,JavaScript就可以在當前層級下面,新增此控制項目的子節(jié)點:
然后在C#里復制相關數據表項至后臺數據庫,在添加相應的節(jié)點數據過程中,使用ADO.NET來屏蔽復雜的多類型數據格式差異問題,并在新的用例上進行標識的更新加一,如由Example_1自動變?yōu)镋xample_2:
在此基礎上,與本次拖放(復制新增)的測試用例表的記錄相對應,還要增補與它上幾個數據索引層次的父表的表項,如測試類型、測試需求等,以維持數據索引鏈條的一致和完整。
測試執(zhí)行表也是完全從測試說明表進行層次繼承,因此不允許移動、刪除。初始狀態(tài)為空,當選擇通過或未通過時,將從數據庫中拷入有關缺省數據字段內容,以減少人機輸入工作量。只有在不通過時,填寫問題報告單按鈕才被激活;按此按鈕后,將把測試前提、測試執(zhí)行的相關數據,直接拷入到問題報告數據庫表中。測試問題信息主要包括:測試問題描述、測試問題類型、嚴重性、優(yōu)先級、測試狀態(tài)、測試人員、發(fā)現時間,修改建議等信息;如果開發(fā)負責人認為測試問題屬于對軟件需求的理解差異等原因而對問題持有異議時,軟件問題的狀態(tài)為:待審核;對于回歸測試[9],測試問題的狀態(tài)可能是:重新打開或關閉。需要注意的是,填寫問題報告一般只允許一次,除非在問題報告的網頁中刪除此問題記錄,才可以在執(zhí)行網頁中重復進行。問題報告作如此處理的原因,一方面是防止將已經填好的問題信息被不小心地錯誤覆蓋;另一方面是忠實于軍用軟件測評關于《GJB 2725A-2001測試實驗室和校準實驗室通用要求》中對原始記錄應嚴格管理的規(guī)定。
在項目實際調試過程中,體會到以下幾點:1)盡管.NET足夠強大,但Java、JavaScript等實例技術[11],依然可以在一個項目中融進來,各取其所長。2)應充分利用第三方軟件公司的既有組件化成果,這樣可使開發(fā)效率事半功倍。3)FireFox瀏覽器的數據響應、網頁刷新速度要比IE快些。4)當軟件測試項目組團隊人員超過8人時,易選用Server操作系統(tǒng)。
依據本方案設計的軍用軟件測評過程管理平臺已經得到系統(tǒng)運用,克服了國外商用軟件測評管理工具(如TPlan,QA Director)與本土軟件測評實驗室運行實踐中,在管理理念上所存在的差異,以及與現行軍用軟件測評管理法規(guī)標準所存在的不兼容性,將測試人員從艱巨、繁雜的測試事務中解放出來,而更多專注于被測評的軍用軟件裝備本身的技術特性,如復雜電磁環(huán)境影響、作戰(zhàn)適應性、指揮協(xié)同流程等,對提高軍用軟件測評實驗室的技術與管理水平具有重要意義。本項目在軍用軟件測評實驗室的測評資源管理、測試工具集成、軟件缺陷系統(tǒng)分析等方面還存在進一步深入研究的議題。
[1]柳純錄.軟件測評師教程[M].北京:清華大學出版社,2005:611.
[2]朱武,馬書磊.應用工作流模型對測試管理過程建模[J].計算機工程與設計,2007,28(18):43364338.
[3]劉文紅,王占武,吳欣,等.基于CMMI的軟件測試項目過程管理[J].飛行器測控學報,2006,25(3):9193.
[4]梁成才.軟件測評實驗室軟件測試項目的度量研究[J].計算機工程,2005,31(23):9092.
[5]陸向艷,顏純麗,鐘誠,等.基于Web的軟件測試過程管理平臺的分析與設計[J].計算機工程與設計,2008,29(23):61216123.
[6]王立娟.基于過程的軟件測試管理系統(tǒng)的研究與應用[J].電腦知識與技術,2008,3(4):696698.
[7]王用杰,楊紅雨,韓學為,等.軟件測試管理的設計與實踐[J].四川大學學報,2004,41(10):620622.
[8]WALLACE B M,PAUL G.Beginning ASP.NET 2.0AJAX[M].India:Wiley Pvt Ltd,2007:3557.
[9]陳青.軟件回歸測試過程自動化管理方法的研究與實現[J].飛行器測控學報,2010,29(4):2225.
[10]王瑩,陳濤.基于組件的分布式測試管理系統(tǒng)研究[J].計算機與數字工程,2011,39(8).
[11]張紅琴,楊省偉.基于CSS+JavaScript的網頁下拉菜單的設計與實現[J].蘇州大學學報,2012,32(2):6164.