馬紅星,張洋
(1.海軍駐合肥地區(qū)軍事代表室,安徽合肥 230088;2.安徽賽寶工業(yè)技術研究院有限公司,安徽蕪湖 241006)
近年來,隨著計算機科學技術的高速發(fā)展,軍事裝備中計算機軟件的應用已經非常廣泛而深入,同時,隨著軍用軟件規(guī)模的不斷擴大,軟件設計的復雜程度不斷地提高,軟件開發(fā)中出現(xiàn)錯誤或缺陷的機率也越來越高。隨著軟件產業(yè)化的發(fā)展,人們對軍用軟件質量的要求越來越高,對軍用軟件質量的重視程度也越來越高,這就直接導致了軍用軟件測試過程質量控制也更加重要。在軍用軟件測試過程的質量監(jiān)督上,應該充分地利用現(xiàn)代信息技術、軟件自動化測試的最新成果,創(chuàng)新軟件測試過程的質量監(jiān)督方式,以確保軍用軟件測試過程的質量。
軍用軟件測試一般分為手工測試和自動化測試兩類。隨著軍用軟件規(guī)模的不斷擴大,手工測試的效率低下問題給軟件測試工作帶來了很多問題。一種成熟的軍用軟件自動化測試機制,可以在測試工具空閑時執(zhí)行無用戶參與的自動化測試,在相同的測試案例中使用相同的測試數據進行再測試,做到以最小的代價進行全面的系統(tǒng)測試,可以降低人為因素對測試過程的干擾,排除測試的隨機性和盲目性,降低冗余,減少遺漏等。
軍用軟件自動化測試是指執(zhí)行某種程序設計語言編制的自動測試程序,控制被測軟件的執(zhí)行,模擬手動測試步驟,完成全自動或半自動測試。自動化測試能夠通過自動化測試工具或其他手段,按照測試工程師的預定計劃進行自動的測試,目的是提高軍用軟件測試的效率,降低人為因素帶來的風險,從而達到提高軍用軟件測試質量的目的。軍用軟件自動化測試涉及測試流程、測試體系、自動化編譯、持續(xù)集成、自動發(fā)布測試系統(tǒng)和自動化測試等方面的整合。
自動化測試最初是通過外部的手段錄制測試的操作過程,再回放其過程從而達到自動化測試的目的。隨著研究的不斷深入,又誕生了基于數據驅動、基于領域驅動和基于功能驅動等多種不同的自動化測試技術。自動化測試技術的誕生不僅提高了測試的效率,同時也提高了測試的精度。雖不能完全取代手動測試工作,但對測試技術的發(fā)展起到了巨大的推動作用。就目前的操作系統(tǒng)而言,自動化測試技術主要有以下幾種。
a)Phoronix Test Suite
可支持多種類型操作系統(tǒng)的性能測試,但配置文件的處理方式簡單、不利于擴展添加。
b)Autotest
支持Linux系統(tǒng)內核的自動化測試,但搭建困難、對支撐軍用軟件的版本要求嚴格。
c)Linux Desktop Testing Project
用于功能的自動化測試,但腳本重用率低、對測試人員的要求較高。
通過分析當前主要的測試標準和現(xiàn)有的工具情況,本文提出了一種基于過程的軍用軟件自動化測試模型,通過對測試過程的抽象達到自動化測試的目的。該模型將測試過程中使用的測試用例、測試腳本和測試數據按照預定的準則進行標準化,并以配置文件的形式進行執(zhí)行過程的編輯,最后通過腳本驅動將配置文件內容轉化為自動化測試流程。
軍用軟件自動化測試框架主要包括測試工具庫、接口庫、測試腳本庫、測試數據結構和測試驅動等,其結構如圖1所示。
圖1 軍用軟件自動化測試框架
a)測試工具庫
主要用于存儲測試工具和執(zhí)行配置文件,在配置文件中按照預定義標準將測試工具在執(zhí)行測試時的執(zhí)行過程進行腳本化抽象,測試執(zhí)行時測試驅動會對該配置文件進行 “翻譯”,將其轉換為可執(zhí)行的shell腳本。
b)接口庫
主要用于存儲被測系統(tǒng)的操作接口,包括系統(tǒng)的遠端連接連口、執(zhí)行監(jiān)控接口、日志提取接口和命令執(zhí)行接口等。
c)測試腳本庫
主要用于存儲被測系統(tǒng)的功能測試腳本和接口腳本,由于系統(tǒng)的非圖形化功能都可通過命令行實現(xiàn),因而通過設計自動化測試腳本,自動執(zhí)行并返回系統(tǒng)執(zhí)行結果可有效地幫助測試人員節(jié)省測試的時間開銷。
d)測試數據結構
主要用于存儲測試結果數據測試結構及組成,由于不同種類的測試工具或測試腳本執(zhí)行所得到的測試結果的數據結構并不完全相同,因此為了保證系統(tǒng)的可擴展性可自定義測試數據的解析方法。
e)測試驅動
主要用于將測試工具庫中的配置文件轉換為可執(zhí)行腳本,執(zhí)行自動化測試并記錄測試結果數據。
自動化測試框架分為用戶接口層、業(yè)務處理層和數據處理層,如圖2所示。
圖2 軍用軟件自動化測試框架業(yè)務模型
a)用戶接口層提供了使用該平臺的一整套API,通過這些API用戶可以方便地進行機器性能測試,包括測試用例選擇、測試機器選擇、查看測試結果和查看每個機器的運行狀態(tài)等功能。這些API以Soap協(xié)議方式和本地調用兩種方式提供給使用者,包括機器信息模塊、測試用例模塊、測試記錄模塊、啟動測試模塊和運行時監(jiān)控模塊。
b)業(yè)務處理層接收測試作業(yè),然后安排測試作業(yè)的執(zhí)行。實現(xiàn)方式是為每個測試機器建立一個單獨的線程,專門處理該機器的測試任務。根據系統(tǒng)的資源耗用程度動態(tài)地調整測試任務分配,保證在系統(tǒng)健康、平穩(wěn)運行的過程中完成所有的測試任務。
c)數據處理層負責和數據庫交互,提供系統(tǒng)運行時所需要的數據以及保存運行產生的數據。對上提供查詢數據服務,業(yè)務處理層需要的數據全部由數據處理層提供,包括查詢機器信息、查詢測試用例信息和查詢測試記錄信息等。
2.3.1 軍用軟件自動化系統(tǒng)性能測試
自動化系統(tǒng)性能測試的著重點是準確地獲取系統(tǒng)在某一狀態(tài)下的性能指標,具有以下特點。
a)測試結果準確
自動化系統(tǒng)性能測試通過模擬用戶操作,對服務器發(fā)起負載,同時監(jiān)控服務器的狀態(tài),考察系統(tǒng)業(yè)務的響應時間和資源之間的關系,從而獲取系統(tǒng)的性能指標。通過工作負載分析,建立盡可能接近實際情況的測試場景,同時通過一系列的測試前準備工作,以及測試采樣設置,降低性能測試中的干擾因素。
b)節(jié)約測試成本
進行性能測試的成本,特別是硬件的成本很大。在保證測試準確性的基礎上,節(jié)約測試成本,如在企業(yè)員工的機器上安裝負載生成器,每臺機器在測試時分擔一小塊的負載生成任務。
c)減少手工工作量
性能測試需要使用大量的不同用戶進行操作,手工創(chuàng)建這些用戶帳號信息,以及設置權限等的工作量非常大,借助自動化捕獲回放工具可以完成這部分工作,同時可使用前面的自動化系統(tǒng)回歸測試框架進行關鍵功能的冒煙測試。
2.3.2 軍用軟件自動化系統(tǒng)性能測試框架的構建
性能測試框架的搭建通常包括以下流程。首先,配置標準版本的系統(tǒng)軟硬件環(huán)境,并安裝性能監(jiān)控器部件;然后,從版本管理系統(tǒng)上將穩(wěn)定的代碼待測版本取下,進行構建并部署到專門的性能測試環(huán)境中,完成系統(tǒng)的配置和初始化。系統(tǒng)在進行性能測試前經過自動化系統(tǒng)回歸測試框架的冒煙測試,驗證系統(tǒng)的基本功能正常,同時通過自動化工具進行測試用數據創(chuàng)建,如用戶帳號信息、權限和其他的測試實體,盡可能地減輕手工工作量。在以上任務完成后根據工作負載模型和測試用例,創(chuàng)建和執(zhí)行測試腳本和場景,收集并分析測試數據,得出系統(tǒng)性能指標。
軍用軟件測試過程的質量監(jiān)督非常重要,需要嚴格把控,注重質量監(jiān)督的效果。要強化專項監(jiān)督,使基本要素受控。要重視軟件產品質量歷史狀況與數據,找出自身薄弱環(huán)節(jié)和隱患所在,有針對性地選取若干監(jiān)控要素,現(xiàn)場重點監(jiān)督驗證,強化軟件測試的過程質量意識,確保軟件質量。
通過優(yōu)化過程監(jiān)督,對軟件測試進行跟蹤,使重點過程受控。通過科學設置里程碑的軟件測試質量監(jiān)督點,選取對產品質量影響比較大的重點測試項目和過程進行針對性的監(jiān)督,提高質量監(jiān)督的費效比。同時,可以借助信息技術、智能監(jiān)控設備和實時程序控制等工具,判斷測試過程有無異常、是否受控,進而對產品的質量作出評價,實現(xiàn)可靠的遠程質量監(jiān)督。
通過深化重點監(jiān)督,使關鍵環(huán)節(jié)受控。關鍵測試點對裝備質量來說都具有牽一發(fā)而動全身的作用,因而必須重點關注。結合國內現(xiàn)有的、先進自動化測試檢測手段來完善回歸測試,經過深入的測試和科學分析,確認對裝備質量沒有影響才準予放行,對于偏離許可、讓步接收,更要慎之又慎。
要遵循測試程序。軟件的測試既是對產品自身質量的一次測試,更是對軟件質量工作的一次把關?;诖耍覀儜搰栏竦匕凑找?guī)范及標準的要求,按程序和步驟監(jiān)督測試的各項工作。測試前,要認真學習需求技術文件,熟悉相關標準要求;測試中,要按規(guī)范一絲不茍地認真監(jiān)督,把控測試過程,審查測試記錄數據;測試后,會同測試單位召開總結會,通報測試結果,總結經驗教訓,為下一步的質量控制提供依據。
要吃透標準。即要對軍用軟件測試標準爛熟于心,對測試規(guī)范了然于胸,如此方能做到駕輕就熟,確保軟件測試質量。
軍用軟件自動化測試具有效率高、能快速全面地實行回歸測試等特點,因而正在成為軍用裝備中主要的軟件測試方法之一。盡管如此,軍用軟件自動化測試還不能解決軟件潛在的所有問題。21世紀是質量的世紀,武器裝備的快速發(fā)展,對軍用軟件設計開發(fā)和測試質量監(jiān)督工作提出了更高的要求。我們應正確地認識和把握軟件測試質量監(jiān)督工作,從中不斷地總結經驗,吸取教訓,強化科學監(jiān)督,消除產生和誘發(fā)軍用軟件質量問題的各種因素,不斷地提高軍用軟件質量,在軟件的具體測試過程中去探索、去研究、去實踐、去規(guī)范,為裝備的質量建設作出新的貢獻。