劉 晶
(民航局空管局技術(shù)中心,北京 100015)
民航空中交通管制自動化系統(tǒng)(以下簡稱“自動化系統(tǒng)”)是空管的核心設(shè)備,為管制員提供監(jiān)視、飛行計劃及各種告警等信息,自動化系統(tǒng)軟件質(zhì)量保障在民航安全運行中發(fā)揮重要作用,因此對軟件的安全性和可靠性要求較高,軟件測試是保證軟件質(zhì)量的重要手段,加強軟件測試,提高軟件質(zhì)量是民航空管行業(yè)亟需解決的技術(shù)研究問題。
文章分析了空管自動化系統(tǒng)軟件測試現(xiàn)狀中存在的問題,認為軟件測試過程缺少專業(yè)的人員和管理體系,造成測試結(jié)果的偏差或錯誤,而國內(nèi)權(quán)威軟件測試機構(gòu)均通過實驗室認可的認證,能夠?qū)y試過程規(guī)范化、標準化,保證測試結(jié)果的有效性。因此,從實驗室認可的管理體系、資源要求和過程要求等方面研究了對空管自動化系統(tǒng)軟件測試的改善和提升。
所謂實驗室認可就是中國合格評定國家認可委員會(英文縮寫為CNAS)對實驗室有能力進行規(guī)定類型的檢測和(或)校準所給予的正式承認。實驗室認可遵循開放性、自愿性和非歧視原則,對實驗室的質(zhì)量和技術(shù)管理能力進行全面、系統(tǒng)的評審。CNAS 實驗室認可依據(jù)是CNAS-CL01:2018《檢測和校準的實驗室的認可準則》(以下簡稱《認可準則》),等同采用ISO/IEC17025:2017《檢測和校準實驗室能力的通用要求》,即通過了國家實驗室認可的實驗室,獲得了按有關(guān)認可國際組織內(nèi)互認的國家和地區(qū)實驗室認可機構(gòu)的承認。
空管自動化系統(tǒng)軟件是管制員指揮的核心系統(tǒng),對安全性和可靠性要求高,具有系統(tǒng)結(jié)構(gòu)和功能復(fù)雜、規(guī)模大、專業(yè)化程度高等特點。一套自動化系統(tǒng)從開發(fā)到上線運行通常經(jīng)過開發(fā)廠家的工廠驗收測試及系統(tǒng)運行現(xiàn)場的現(xiàn)場驗收測試兩部分,從廠家開發(fā)過程來看,會出現(xiàn)以下問題。
(1)測試人員不足。開發(fā)廠家雖然配備專職測試人員,但受限于測試人員與開發(fā)人員比例遠低于國內(nèi)軟件行業(yè)1 ∶5的比例,更不提國際軟件行業(yè)1 ∶1的人員比例,測試人員嚴重不足。
(2)測試缺少過程控制。在集成測試中缺少需求分析、測試用例設(shè)計和審核過程存在失能情況,導(dǎo)致測試覆蓋性嚴重不足,造成軟件升級后出現(xiàn)低級錯誤甚至回滾的情況。從運行現(xiàn)場角度來看,運行現(xiàn)場很少配備專職的測試人員,有些現(xiàn)場甚至不具備基本的測試平臺,現(xiàn)場驗收測試時多為廠家測試人員執(zhí)行,用戶觀察的測試方式,測試用例的編制多為工廠驗收時廠家提供的內(nèi)容,受制于人員能力、測試環(huán)境、測試過程控制等因素的制約,使得現(xiàn)場驗收測試無法充分發(fā)揮作用。而在系統(tǒng)上線運行過程中,作為軟件系統(tǒng)不可避免會存在軟件故障,在廠家提供解決故障的補丁或新版本軟件時,科學且完善的測試才是保證軟件系統(tǒng)在使用過程中減少和避免出現(xiàn)軟件故障的必要手段。
為完善空管自動化系統(tǒng)測試存在的問題,使得空管自動化系統(tǒng)測試更加規(guī)范化、標準化,設(shè)置第三方實驗室(獨立于廠家和用戶)對軟件進行客觀、公正且規(guī)范的測試,通過CNAS 實驗室認可,建立符合國際標準的軟件檢測實驗室可滿足以下適應(yīng)性要求。
CNAS 認可要求實驗室須是法律實體,或法律實體中被明確界定的一部分,能夠承擔相應(yīng)法律責任,擁有與其測試任務(wù)相適應(yīng)的場地、設(shè)施、設(shè)備、測試工具軟件等資產(chǎn)。一般應(yīng)具有一定數(shù)量(如5名以上)的具備一定資質(zhì)的軟件測試人員。建立、實施和保持與軟件檢測活動范圍相適應(yīng)的管理體系,應(yīng)特別加強軟件檢測相關(guān)的過程和活動及檢測項目管理相關(guān)的過程與活動的政策、制度、計劃、程序的分析工作。CNAS 實驗室的管理體系要求有助于建立符合要求且業(yè)務(wù)穩(wěn)定的專職測試單位,是滿足空管自動化系統(tǒng)軟件測試專業(yè)性和規(guī)范性的基礎(chǔ)。
3.2.1 人員方面
空管自動化系統(tǒng)軟件測試人員通常為運行現(xiàn)場技術(shù)保障人員,具備豐富的通信導(dǎo)航經(jīng)驗,缺少軟件測試工作的專業(yè)背景及實踐經(jīng)驗,CNAS 認可要求軟件測試從業(yè)人員應(yīng)出自電子信息技術(shù)或計算機相關(guān)專業(yè),在上崗前進行軟件測試相關(guān)培訓(xùn)取得資格,軟件測試管理人員應(yīng)具有3 a 以上相關(guān)行業(yè)測試經(jīng)驗,確保具備專業(yè)的軟件測試工具、從事測試工作、評價測試結(jié)果、簽署測試報告的能力,能夠定期培訓(xùn)新的測試人員并在日常工作中對測試人員進行監(jiān)督,同時應(yīng)具備空管自動化系統(tǒng)軟件技術(shù)相關(guān)知識、獲取最新測試標準的技術(shù)能力。人員專職崗位設(shè)置、資質(zhì)要求、持續(xù)的培訓(xùn)和監(jiān)督都使得測試人員能力得到保障,工作流程得到規(guī)范和監(jiān)督,保證測試過程的正確性和測試結(jié)果的可信性。
3.2.2 設(shè)施和環(huán)境方面
空管自動化系統(tǒng)軟件測試具有其特殊性,測試通常需搭建被測試全系統(tǒng),需較多高性能服務(wù)器、工作站及高清晰顯示器,整體測試環(huán)境搭建造價較高,特別是針對運行中需修復(fù)故障或?qū)崿F(xiàn)新功能的系統(tǒng),按照空管運行安全和網(wǎng)絡(luò)安全管理要求,無法在在用系統(tǒng)上進行軟件測試,大多數(shù)運行現(xiàn)場采用利舊設(shè)備和一般辦公室作為測試平臺搭建的環(huán)境。CNAS 實驗室認可規(guī)定測試場地一般應(yīng)具備防靜電、電源故障保障措施,滿足測試要求的環(huán)境條件,同時要保證計算機病毒及網(wǎng)絡(luò)安全,控制無關(guān)人員進入測試區(qū)域等措施;在軟件測試環(huán)境搭建方面,專職實驗室通過搭建專用被測試系統(tǒng),能夠滿足模擬各種測試情景的要求,針對不同廠家和版本的自動化系統(tǒng)軟件進行解決,還可通過虛擬化云平臺方式解決現(xiàn)場無法滿足的情況,以保證軟件測試的質(zhì)量和效率。
3.2.3 設(shè)備方面
空管自動化系統(tǒng)軟件測試工具經(jīng)常為廠家自行開發(fā)的雷達數(shù)據(jù)、飛行數(shù)據(jù)和氣象數(shù)據(jù)模擬“小工具”,未對其邊界和數(shù)據(jù)準確性等進行驗證和檢查,測試的結(jié)果很大可能性會隨著測試工具輸入的不同而得到不同的測試輸出,測試數(shù)據(jù)不可復(fù)現(xiàn),導(dǎo)致測試結(jié)果的不確定性。CNAS 實驗室認可要求測試工具應(yīng)是通過批準的貨架軟件或經(jīng)同行專家技術(shù)檢定的非貨架軟件,在使用前應(yīng)對該測試工具按照程序進行驗證,確保測試工具為正式軟件版本且對有指標要求的部分進行明確。運行現(xiàn)場一般配置主備兩套自動化系統(tǒng),應(yīng)能夠使用相同測試工具驗證系統(tǒng)功能等指標,確保測試結(jié)果的有效性。
3.3.1 方法選擇和確認
由于過去很長一段時間,空管自動化系統(tǒng)都依賴于購買國外廠商提供,軟件測試參與度低,對軟件開發(fā)實現(xiàn)的原理缺少深入了解,近些年,自動化系統(tǒng)國產(chǎn)廠家大幅增加,但軟件測試方法主要是依賴于過去的經(jīng)驗,不同測試人員的操作或理解不同均會導(dǎo)致測試結(jié)果的差異,影響測試結(jié)果的一致性和有效性。CNAS 實驗室認可要求實驗室采用國際、國內(nèi)或行業(yè)內(nèi)的標準測試方法,針對測試方法可制訂相應(yīng)的軟件測試方法使用指導(dǎo)書、測試用例集、測試腳本等,保證測試人員按照相同的測試指導(dǎo)書能夠得到同樣的結(jié)果,同時要求實驗室應(yīng)通過培訓(xùn)或現(xiàn)場技術(shù)指導(dǎo)的方式確保測試人員能夠選擇并運用正確的測試方法。實驗室應(yīng)積極關(guān)注測試方法或標準的更新,及時更新培訓(xùn)新的標準方法。在首次使用新的測試標準或方法時應(yīng)全面針對測試方法進行確認,確認并驗證各種質(zhì)量子特性的測試順序、測試約束及測試輸入的組合的結(jié)果。在空管自動化系統(tǒng)測試中,中國民用航空局空管行業(yè)管理辦公室2012 年下發(fā)的AC-115-TM-2012-01《民用航空空中交通管制自動化系統(tǒng)測試要求》中明確了測試的項目、環(huán)境、方法和工作量,結(jié)合軟件行業(yè)通用的測試標準GB/T 25000.51—2016《系統(tǒng)與軟件工程系統(tǒng)與軟件質(zhì)量要求和評價(SQuaRE)第51部分:就緒可用軟件產(chǎn)品(RUSP)的質(zhì)量要求和測試細則》和以往測試經(jīng)驗,制訂空管自動化系統(tǒng)的測試作業(yè)指導(dǎo)書、通用測試用例集。
3.3.2 測試過程
空管自動化系統(tǒng)軟件測試在運行現(xiàn)場的客戶端由于缺少專職人員,測試過程常缺少需求分析過程,由廠家提供測試用例,或由現(xiàn)場人員現(xiàn)場依照經(jīng)驗邊想邊測,沒有規(guī)范的測試過程要求,易造成測試覆蓋不全或遺漏,測試記錄不全或不清晰,測試結(jié)果不準確或出現(xiàn)錯誤的情況較為普遍。一般規(guī)范的測試過程如圖1所示,應(yīng)分為測試策劃、測試需求分析、測試設(shè)計、測試執(zhí)行及測試總結(jié)5個環(huán)節(jié)。
圖1 標準測試流程
(1)在測試策劃過程中,需進行測試目的確認、測試任務(wù)分解、測試環(huán)境搭建和確認、測試人員安排和測試進度安排,需明確測試的目的,以及為達到目的所需要的文件、程序,進行測試工作任務(wù)分解,對測試所需時間和人力資源進行評估,明確測試所需人員和進度安排,保證測試工作按計劃完成,搭建相應(yīng)的測試環(huán)境,確認測試環(huán)境符合要求。
(2)測試需求分析主要是根據(jù)被測試軟件的需求規(guī)格說明或設(shè)計文檔,對測試項目進行測試類型分解,在空管自動化系統(tǒng)測試中,一般包括文檔審查、功能測試(或修復(fù)項測試)、性能測試、接口測試、可靠性測試,其中功能性測試為測試主要部分,以功能測試為例,要對被測系統(tǒng)的軟件功能進行分解,明確功能和功能間的邊界,每一個單一功能的輸入和輸出,把握數(shù)據(jù)在系統(tǒng)內(nèi)的流向和呈現(xiàn)形式。在需求分析過程中,應(yīng)充分考慮每個測試類型中包含的測試項及測試項的充分性,明確測試項的測試終止條件,建立測試需求規(guī)格說明與被測軟件需求規(guī)格說明或設(shè)計文檔的追蹤關(guān)系,確保需求均得到覆蓋。測試需求分析階段應(yīng)形成測試計劃文檔作為測試設(shè)計的輸入文檔。
(3)在測試設(shè)計階段,主要分析每個測試項,逐一完成測試方法確認和設(shè)計測試用例,從輸入、條件和輸出3個方面著手,在輸入方面,一項功能的輸入可能是一個或多個數(shù)值,亦可是一個或多個事件。當有多個輸入的可能,測試用例設(shè)計就要盡量窮盡所有的可能性。在空管自動化系統(tǒng)測試中,黑盒測試方法中的等價值法、邊界值法和試錯法都可應(yīng)用到設(shè)計中;在條件方面,一項軟件功能能夠?qū)崿F(xiàn)離不開各種約束條件,各種約束條件間可能存在“且”“或”“包含”或“交叉”的關(guān)系,亦可能是多種邏輯關(guān)系的組合。測試設(shè)計人員要不重復(fù)的覆蓋所有約束條件的可能,分別設(shè)計用例驗證這項軟件功能在描述的條件下能夠得到預(yù)期輸出。輸出方面,一項軟件功能若能夠得到不同的輸出,一定是有不同的輸入或不同的條件約束。因此在測試用例設(shè)計時,可從輸入或條件入手,也可從輸出入手,具體問題要具體分析。
(4)在測試執(zhí)行階段,測試人員應(yīng)首先確認測試環(huán)境符合要求后,嚴格按照步驟執(zhí)行經(jīng)過測試管理人員審批受控的測試說明,在測試過程中如實、詳細地記錄測試結(jié)果,如在測試過程中發(fā)現(xiàn)軟件缺陷,可溝通是否進行回歸測試,明確回歸測試影響范圍。
(5)在測試總結(jié)階段,依據(jù)測試整改過程及測試記錄結(jié)論,分析整個測試過程,給出測試結(jié)論,形成測試報告,測試報告應(yīng)滿足CNAS 認可對測試報告格式統(tǒng)一、內(nèi)容完整、數(shù)據(jù)準確、分析合理、結(jié)論準確的要求,報告應(yīng)經(jīng)過編制人員的自查、審核人員的核對和最終的批準才可發(fā)布。
在測試過程中,CNAS 認可要求對整個測試過程開展配置管理,除了針對開發(fā)過程中外,還應(yīng)在整個軟件生命周期中進行配置管理。測試過程中對被測軟件進行唯一性編號,對各個過程中產(chǎn)生的測試計劃、測試說明、測試記錄及測試報告審核和批準過程均做出入庫的審核,對修改的內(nèi)容有修改記錄和批準過程,監(jiān)控整個軟件測試過程。在空管自動化系統(tǒng)軟件測試過程中,配置管理基本上是空白領(lǐng)域應(yīng)引起測試人員的重視。
3.3.3 能力驗證
空管自動化系統(tǒng)測試中缺少對負責測試的人員和組織測試能力的確認,在人員上崗前針對空管自動化系統(tǒng)的維護進行培訓(xùn)和上崗資質(zhì)認定,測試能力并不作為資質(zhì)認定的范圍,無法確認測試承擔部門是否具備測試的能力和條件。CNAS 實驗室認可要求軟件測試的實驗室至少一個認可周期內(nèi)每個子領(lǐng)域參加一次能力驗證或測量審核,對實驗室的技術(shù)能力和維持其技術(shù)能力的重要依據(jù),可看作是對實驗室技術(shù)能力的外部考試,對結(jié)果的分析也是實驗室提高自身管理、技術(shù)能力的重要來源。在空管自動化系統(tǒng)測試中,可選擇參加CNAS 官方認證的測量審核機構(gòu)提供的軟件功能、性能等方面的能力驗證計劃,測量審核由指定機構(gòu)提供帶有特定BUG 的軟件樣品,實驗室可根據(jù)軟件樣品的說明要求,開展功能測試,最終按要求提交測試文檔和測試結(jié)果,由樣品提供機構(gòu)對測試結(jié)果進行評分后給出測量審核結(jié)果,測試過程本身就是一次很好的業(yè)務(wù)鍛煉和提升,也可讓空管系統(tǒng)測試較封閉的行業(yè)與市場上通用軟件行業(yè)進行一次技術(shù)交流。
空管自動化系統(tǒng)軟件測試對民航安全運行有重要作用,其測試能夠直接反映空管自動化系統(tǒng)的功能、性能等的優(yōu)劣,影響管制員的對空指揮。目前空管行業(yè)的軟件測試發(fā)展還較為滯后,僅有兩家實驗室通過了CNAS實驗室認可,而通過實驗室認可的建立,能夠從管理、技術(shù)兩方面提高軟件測試的能力和質(zhì)量保證,不斷提高測試的技術(shù)水平,對空管自動化系統(tǒng)軟件的質(zhì)量提升和全生命周期的管理具有重大意義。