周偉娟 鐘偉 張禮學(xué)
(1 中國電子科技集團(tuán)公司 第三十四研究所,廣西 桂林 541004;2 陸軍裝備部駐柳州地區(qū)軍代室,廣西 柳州 545000)
隨著強化學(xué)習(xí)、深度學(xué)習(xí)等機器學(xué)習(xí)算法的強勁發(fā)展,微電子、計算機和數(shù)字化技術(shù)的廣泛應(yīng)用,以機器學(xué)習(xí)為主要實現(xiàn)途徑的人工智能技術(shù)已在國防武器裝備發(fā)展中嶄露頭角,解決了智能環(huán)境感知、輔助決策、控制執(zhí)行領(lǐng)域中的一系列難題。人工智能的廣泛應(yīng)用對裝備性能提升起到了巨大的推動作用,有力地推進(jìn)了裝備由機械化信息化向智能化發(fā)展。人工智能技術(shù)與裝備的緊密結(jié)合是未來裝備發(fā)展的大趨勢。目前,以美國為首的軍事強國正大力加強在人工智能裝備領(lǐng)域的投資,并采取行政干預(yù)、經(jīng)濟(jì)制裁、科技脫鉤等一切手段打壓其他國家在這方面的發(fā)展,力圖維持其在該領(lǐng)域的非對稱優(yōu)勢。經(jīng)過提前布局和多年的發(fā)展,中國在人工智能領(lǐng)域取得了長足發(fā)展,在許多方面都可以與美媲美。軟件測試作為軟件質(zhì)量“衛(wèi)士”,在軟件的整個生命周期中起著非常重要的作用。但是當(dāng)前針對人工智能裝備的軟件測試技術(shù)研究已明顯滯后于人工智能技術(shù)在武器裝備研發(fā)和生產(chǎn)中的應(yīng)用速度。目前已公開的關(guān)于人工智能軟件測試的研究文獻(xiàn)比較少,許多人工智能項目的軟件測試工作仍對標(biāo)傳統(tǒng)軟件測試方法進(jìn)行,忽視了人工智能軟件獨有的特點和質(zhì)量形成規(guī)律,效率低且效果差,對其理論進(jìn)行研究需求迫切[1]。為此,本文先對人工智能裝備軟件的新特點進(jìn)行總結(jié),再對現(xiàn)在軟件開發(fā)過程中的常見問題進(jìn)行梳理,接著分析人工智能裝備給軟件測試帶來的新挑戰(zhàn),最后從“體系+測試”強化軟件測試綜合評價等六方面提出提升人工智能裝備軟件測試效能的對策措施。
人工智能裝備是集智能環(huán)境感知、信息處理、輔助決策、人機交互和控制執(zhí)行等多種高新技術(shù)于一體并深度融合的裝備。雖然其也由軟硬件組成,但其軟件特性已與傳統(tǒng)裝備的軟件有很大區(qū)別,掌握人工智能裝備軟件的新特點是提升軟件測試效能的前提和基礎(chǔ)。
具備較強的自主能力,能夠?qū)崿F(xiàn)智能感知、智能決策、智能行動、智能保障是人工智能裝備區(qū)別于傳統(tǒng)裝備的最大特征,而實現(xiàn)這些功能的最大貢獻(xiàn)來源于其功能強大的系統(tǒng)軟件。在人工智能裝備的軟硬件構(gòu)成中,軟件占比大且功能突出主要體現(xiàn)在兩方面:一是軟件代碼規(guī)模大,軟件開發(fā)工作量大且周期長,占用成本高;二是與傳統(tǒng)裝備不同,人工智能裝備在環(huán)境感知、信息融合、方向決策、行動執(zhí)行等方面的自主功能的實現(xiàn)均深深依賴于系統(tǒng)軟件功能的正常發(fā)揮。部分裝備如具有認(rèn)知功能的數(shù)字化雷達(dá)的開發(fā)模式正逐步由“以硬件技術(shù)為核心”轉(zhuǎn)向“以軟件技術(shù)為核心”[2]。
人工智能裝備軟件大多以嵌入式為主,如智能導(dǎo)彈的導(dǎo)航制導(dǎo)部件,無人運載車的智能感知部件等,其功能實現(xiàn)離不開系統(tǒng)軟硬件的緊密配合。軟件成為系統(tǒng)的重要組成部分,有些甚至是部件功能實現(xiàn)的關(guān)鍵部分。一旦軟件因質(zhì)量問題發(fā)生錯誤,就會導(dǎo)致硬件系統(tǒng)工作異常,甚至造成災(zāi)難性后果[3-4]。與此相對應(yīng),軟件的附著體硬件會隨著其所處環(huán)境(如溫濕度、振動、電磁場等)變化,在某些方面發(fā)生性能變化(如晶振的時間漂移、電壓的變大或減小等),而這些變化都會作為一種輸入通過接口直接進(jìn)入軟件系統(tǒng),影響軟件功能的正常發(fā)揮。
人工智能算法的靈感來源于人類大腦皮層的工作機制、生物群體的集群覓食遷徙活動模擬等,其通過構(gòu)建一些參數(shù)靠日常學(xué)習(xí)訓(xùn)練而不是嚴(yán)密邏輯推理的數(shù)學(xué)模型來實現(xiàn)。這就決定了該類型模型的有效實現(xiàn)離不開大量的學(xué)習(xí)訓(xùn)練,系統(tǒng)功能的強弱與其所經(jīng)歷的訓(xùn)練場景息息相關(guān)。且由于學(xué)習(xí)是一個漫長而無止境的過程,因此人工智能裝備性能的提升需要反復(fù)迭代,具有可成長性。其可以在與研發(fā)者、用戶和電磁等外部環(huán)境的互動過程中使其自身性能得到提升。
人工智能技術(shù)的發(fā)展與大數(shù)據(jù)、物聯(lián)網(wǎng)的發(fā)展聯(lián)系緊密,大數(shù)據(jù)、物聯(lián)網(wǎng)技術(shù)的發(fā)展為人工智能技術(shù)在裝備上的應(yīng)用提供了堅實基礎(chǔ),而人工智能技術(shù)的發(fā)展也為大數(shù)據(jù)、物聯(lián)網(wǎng)的發(fā)展應(yīng)用提供了強有力的支撐,但這也給軟件測試增加了運行場景更加多元化、需要檢測的功能增多等許多需要考慮的因素[5]。
隨著軟件規(guī)模和復(fù)雜度的迅速增加,軟件質(zhì)量已成為人工智能裝備中風(fēng)險最大的部分。據(jù)統(tǒng)計我國裝備軟件交付驗收時缺陷發(fā)現(xiàn)率約為6.65(千行代碼缺陷數(shù))[6]。如按每年交付定型1 000萬行計,數(shù)以十萬計的軟件缺陷潛伏在已驗收裝備中,風(fēng)險之大可想而知。從統(tǒng)計情況看,目前軟件開發(fā)過程常見問題有以下幾方面。
在需求分析階段沒有充分地與裝備總體、裝備硬件等相關(guān)部分進(jìn)行有效溝通,純粹從自身的經(jīng)驗和理解出發(fā),形成相應(yīng)的軟件需求,從而導(dǎo)致軟件的需求僅針對軟件自身的功能,缺少從用戶的角度、基于任務(wù)剖面的需求分析,從而導(dǎo)致需求分析不到位,甚至導(dǎo)致錯誤的需求[7]。
先編碼再補設(shè)計文檔,使得軟件質(zhì)量完全依賴編碼人員的個人能力。如在最初編碼時沒有考慮到可測性、復(fù)用性要求,則無法產(chǎn)生高質(zhì)量軟件。后補的軟件設(shè)計文檔大多是由軟件代碼直接“翻譯”過來,很少包含軟件架構(gòu)的整體設(shè)計思路,導(dǎo)致后期軟件維護(hù)的時候,其他人員很難通過軟件設(shè)計文檔理解軟件的整體邏輯,從而增加維護(hù)成本。
承制單位在軟件質(zhì)量保證能力建設(shè)上參差不齊,人員配備或數(shù)量不足或質(zhì)量不夠。質(zhì)量評審流于形式,無法發(fā)現(xiàn)深層次的需求邏輯或設(shè)計問題。軟件測試不規(guī)范、測試時機滯后、測試深度不夠,無法發(fā)現(xiàn)有價值的軟件問題。對于評審、測試發(fā)現(xiàn)的相關(guān)問題,沒有很好的機制督促研制單位及時閉環(huán)。
此外,在意識層面:一是目前對軟件研制的管理一般依附于硬件研制,且節(jié)點往往落后于硬件研制,導(dǎo)致關(guān)鍵控制節(jié)點與實際研制進(jìn)度脫節(jié)。二是部分軟件尚未單獨審價,研發(fā)單位對其投入不夠,導(dǎo)致軟件質(zhì)量文化缺乏。軟件工程化管理水平不高,僅僅注重功能的實現(xiàn),對軟件質(zhì)量和可靠性重視不夠。三是質(zhì)量監(jiān)督管理隊伍中,軟件專業(yè)人才較少,對軟件項目管理、文檔編制、編程技術(shù)等方面存在“先天性不足”。更不用說對算法選擇科學(xué)性、時序設(shè)計合理性、接口參數(shù)匹配性、模塊集成性、軟件復(fù)用性等方面進(jìn)行審核和監(jiān)督[8-9]。
軟件測試隨軟件開發(fā)的誕生而產(chǎn)生,是軟件開發(fā)生命中的重要過程之一。常根據(jù)軟件任務(wù)書、軟件需求和軟件規(guī)格說明書等編寫一系列測試用例來驗證軟件產(chǎn)品性能,從而保證其質(zhì)量。是一種審核比較輸入與輸出的過程,是為了發(fā)現(xiàn)錯誤而運行程序的過程[10]。據(jù)統(tǒng)計,隨著軟件產(chǎn)品復(fù)雜性的增加,軟件測試需花費掉一半甚至更多的軟件開發(fā)成本。
與傳統(tǒng)機械化信息化裝備相比,人工智能裝備由于軟件占比大,軟件引發(fā)的故障數(shù)在系統(tǒng)故障中的比例越來越大。且軟件作為研發(fā)人員的精神產(chǎn)物,沒有物理實體,不會自然變化,但容易人為變更。因其是腦力勞動,是無形的、不可見,難以控制。其系統(tǒng)的數(shù)據(jù)模型一般為離散型,輸入空間巨大,關(guān)聯(lián)關(guān)系復(fù)雜。故障一般由特定輸入觸發(fā),無物理原因,無失效前兆,需要在無限的測試輸入空間中通過適當(dāng)?shù)臏y試方法選取合適的輸入進(jìn)行測試,才可能找出潛在的軟件缺陷。必須采取相異的冗余設(shè)計才能提高可靠性,必須修改源代碼才能修復(fù)故障,但同時容易引入新問題,且故障沒有明顯的規(guī)律性,過程較復(fù)雜。
人工智能算法具有邏輯性不強、算法訓(xùn)練規(guī)律難掌握和結(jié)果有效性難驗證的特點[11]。人工智能算法并不遵循傳統(tǒng)的編程規(guī)則,而是通過機器學(xué)習(xí)算法模型直接從大量數(shù)據(jù)中進(jìn)行學(xué)習(xí)訓(xùn)練來固化模型參數(shù)。對于設(shè)計人員來說,這實際上就類似一個“黑箱”,計算機程序員可以查看機器學(xué)習(xí)的輸出結(jié)果,了解結(jié)果的正誤情況,但要理解系統(tǒng)為什么會得出某種結(jié)論,尤其是預(yù)測故障,則相當(dāng)具有挑戰(zhàn)性。此外,隨著機器學(xué)習(xí)算法功能的更加強大,其能處理的事件也更為復(fù)雜,但這些都伴隨著算法模型規(guī)模的不斷擴大。規(guī)模的擴大會導(dǎo)致有越來越多的問題結(jié)果讓人感覺迷惑不解,算法中存在的部分“反直覺、奇怪的”漏洞不容易察覺和排除。
大數(shù)據(jù)存在體量大、多樣性和變化快的特性,而物聯(lián)網(wǎng)實現(xiàn)了萬物互聯(lián)互通,再加上裝備自身的軟硬件結(jié)合緊密等特點,使得軟件測試面臨著復(fù)雜的測試環(huán)境,給測試數(shù)據(jù)準(zhǔn)備和測試數(shù)據(jù)組合帶來巨大工作量,對測試過程的實時性提出了很高要求。如何驗證數(shù)據(jù)的一致性、齊備性和完整性, 需要開發(fā)相應(yīng)的工具。對系統(tǒng)的安全性、可伸縮性、可擴展性、協(xié)同感知等需要進(jìn)行驗證。要對系統(tǒng)多樣化的應(yīng)用場景進(jìn)行充分的測試,需要對用戶應(yīng)用環(huán)境以及應(yīng)用方式等做一系列科學(xué)合理的假設(shè)[12-13]。
人工智能算法的邏輯性不強和軟件故障的隨機性特點決定了提高軟件質(zhì)量水平一靠設(shè)計開發(fā)過程符合規(guī)范要求,使得過程的策劃和實施都能得到充分的論證和考核。二靠充分有效的測試,其能通過功能、邊界、異常、接口和安全性等方面的測試盡早盡多的發(fā)現(xiàn)軟件中存在的問題。因此,采用“體系+測試”的綜合評價方法既能使程序開發(fā)者的開發(fā)過程做到規(guī)范標(biāo)準(zhǔn),又可以在充分的測試下最大程度發(fā)現(xiàn)軟件存在的問題。要在裝備承制單位中大力推廣GJB5000A軟件能力成熟度模型,不斷督促其提升等級水平,并根據(jù)其取得的認(rèn)證范圍和等級水平來分配合同任務(wù)。在人工智能裝備型號研制項目的試驗總案中,要根據(jù)其軟件承擔(dān)任務(wù)的重要程度將其分為關(guān)鍵軟件、重要軟件和一般軟件。根據(jù)其來源劃分為新研軟件、改進(jìn)軟件和沿用軟件(含貨架軟件),并采取不同的測試策略。對既是關(guān)重軟件又是新研或改進(jìn)類軟件要加強關(guān)注。應(yīng)前移第三方軟件測試工作介入關(guān)口,并要求進(jìn)行驗證測試、鑒定測評和軟件能力評估。此外,在軟件測試工作策劃時要加強風(fēng)險預(yù)判和過程思維,將軟件測試過程融入方案設(shè)計、開發(fā)調(diào)試、學(xué)習(xí)訓(xùn)練和使用完善的全壽命過程中。將事前預(yù)防工作提到和事后測試驗證同等重要位置,提前發(fā)現(xiàn)問題隱患并采取控制措施,從根上提升軟件質(zhì)量。
巨大的數(shù)據(jù)量、多樣化的應(yīng)用環(huán)境和極高的實時性要求,使得開發(fā)一種能夠?qū)θ斯ぶ悄苎b備軟件進(jìn)行智能化測試的工具成為迫切。當(dāng)然,這里的智能化測試涵蓋了測試需求分析、測試策劃、測試分析、測試設(shè)計與實現(xiàn)、測試執(zhí)行、質(zhì)量度量、測試過程監(jiān)控與評估和測試結(jié)果評估等全流程的智能化。一是智能化測試用例生成。要利用人工智能技術(shù)根據(jù)約束要求自動生成大量測試用例,充分吸收借鑒軟件測試專家積累的經(jīng)驗知識,豐富專家系統(tǒng),并使用優(yōu)化算法進(jìn)行挑選形成最佳測試用例集。二是多樣化測試手段。實景測試具有最真實的現(xiàn)實代表性,但其容易受限于安全性、復(fù)雜度、成本和效益等約束。許多時候,需要基于半實物以及仿真等手段構(gòu)建相應(yīng)的測試環(huán)境。仿真測試可解決實景測試場景不夠豐富,操作者素質(zhì)、熟練程度不一致等因素影響。其能根據(jù)測試項目需要利用圖像合成、 參數(shù)化重組等進(jìn)一步加工豐富測試場景內(nèi)容, 從而生成合適復(fù)雜度的虛擬環(huán)境。純仿真模型的軟件測試有著成本低、場景可反復(fù)、細(xì)節(jié)易調(diào)節(jié)的特點,但也存在可靠性高度依賴模擬傳感器和環(huán)境模型準(zhǔn)確性的缺陷。主要用于在物理原型出現(xiàn)之前,其能在系統(tǒng)層面上驗證和優(yōu)化相關(guān)模塊和功能的設(shè)計。三是基于體系能力統(tǒng)籌裝備試驗和軟件測試條件建設(shè)。要加強裝備數(shù)字化模型的構(gòu)建工作,通過漸進(jìn)式、螺旋式的迭代開發(fā)不斷提升模型逼真度。要充分利用立體空間偵察、測量和重構(gòu),智能生成試驗環(huán)境,并形成測試環(huán)境場景數(shù)據(jù)庫。以模型、算法、算力為建設(shè)核心,實裝和仿真互補一體化推進(jìn)、縮短周期成本。要將測試工作融入裝備演習(xí)演練中,讓數(shù)實相互驗證,避免缺要素導(dǎo)致環(huán)境復(fù)雜度不夠[14]。
萬物互聯(lián)、嵌入式軟件與硬件的強耦合性使得傳統(tǒng)將軟件測試完全獨立于硬件和工作環(huán)境的做法在進(jìn)行人工智能裝備軟件測試時不再可行。要加強該類型裝備的軟硬件一體化測試考核。有機融合第三方軟件測評和基地試驗等考核環(huán)節(jié),減少一些重復(fù)的同質(zhì)化測試,增加部分聯(lián)合測試項目。讓施加的極限(溫度、濕度、震動、鹽霧、電磁)環(huán)境應(yīng)力條件在考核硬件時也作為輸入考核系統(tǒng)軟件,同時讓軟件測試的大范圍輸入加強硬件考核的充分性。此外,當(dāng)整機系統(tǒng)進(jìn)行極限環(huán)境考核存在測試環(huán)境建設(shè)不足、試驗成本過高等制約時,應(yīng)加強人工智能裝備關(guān)鍵組件的極限環(huán)境考核測試。
人工智能裝備的軟件規(guī)模巨大,對其進(jìn)行開發(fā)、調(diào)試和測試是一項巨大工程。開源軟件的出現(xiàn)簡化了分工合作模式,可大大減輕程序員的開發(fā)負(fù)擔(dān),是加快軟件開發(fā)進(jìn)程的有效捷徑。但開源軟件多采用分布式協(xié)作開發(fā)模式,其開發(fā)過程具有參與者眾多、層次參差不齊等特點。在開源軟件社區(qū),很多軟件開發(fā)人員都是因為興趣愛好而參與到一起的,軟件的開發(fā)過程無法像商業(yè)軟件那樣安排專業(yè)的第三方軟件測試團(tuán)隊對其進(jìn)行全方位測試。開源軟件的測試工作大多是在使用者運行程序時進(jìn)行,存在著測試不全面、問題反饋不及時不齊全等問題。此外,使用開源軟件進(jìn)行二次開發(fā)容易脫節(jié)軟件原來的開發(fā)路線。這些都使得在對人工智能裝備的軟件進(jìn)行測試時需要加強開源軟件質(zhì)量測評。要利用靜態(tài)代碼分析工具對軟件代碼進(jìn)行全面分析,要積極關(guān)注該軟件已產(chǎn)生缺陷的深層次原因,要對開源社區(qū)中該開源軟件開發(fā)人員留下的活動蹤跡進(jìn)行仔細(xì)分析評估[11,15]。
智能化裝備智能特性的可成長決定了其軟件在研發(fā)階段要經(jīng)歷反復(fù)訓(xùn)練和測試,需要有大規(guī)模的訓(xùn)練和測試數(shù)據(jù)。而生產(chǎn)、使用和維護(hù)階段,人工智能裝備將在不同的環(huán)境中使用,其又能產(chǎn)生大量可促進(jìn)其智能特性提升的數(shù)據(jù),因此圍繞可成長性開展性能測試勢在必行。人工智能應(yīng)用程序地對大數(shù)據(jù)具有較大依賴性、隨機性的輸入/輸出、難以預(yù)測所有應(yīng)用場景和需要從過去的行為中不斷自我學(xué)習(xí)成長等特點決定了智能化裝備在開發(fā)和測試過程中均需用到大量數(shù)據(jù),而且這些數(shù)據(jù)的質(zhì)量將直接影響裝備開發(fā)和測試的有效性驗證質(zhì)量。因此,負(fù)責(zé)智能化裝備的承研單位和負(fù)責(zé)重要智能化裝備的軟件測試機構(gòu)應(yīng)盡早結(jié)合自身研發(fā)和測試需求建立自己獨立的專業(yè)訓(xùn)練和測試數(shù)據(jù)庫。此外,在日常工作中,要對研發(fā)單位、生產(chǎn)制造部門、使用客戶、維修保養(yǎng)單位以及軟件測試機構(gòu)等的人工智能裝備性能數(shù)據(jù)的采集、分析與存儲過程的齊備性、完整性以及標(biāo)準(zhǔn)化、規(guī)范化問題進(jìn)行統(tǒng)一,以方便數(shù)據(jù)能在各部門之間進(jìn)行共享。
由于人工智能裝備系統(tǒng)能力是動態(tài)可提升的,因此其軟件測試過程是一項持續(xù)周期長的活動,也決定了其測試過程中不能照本宣科的用機械化信息化尺子去衡量人工智能裝備。裝備的智能化要求軟件測試過程中必須不斷提升數(shù)據(jù)分析運用能力,只有對軟件運行過程中的狀態(tài)和質(zhì)量數(shù)據(jù)進(jìn)行實時采集、系統(tǒng)分析并加以充分利用,才能讓人工智能裝備在信息數(shù)據(jù)的閉環(huán)管理中不斷學(xué)習(xí)訓(xùn)練并拓展能力。一是要精準(zhǔn)采集數(shù)據(jù)。要充分利用自動化智能化監(jiān)控和檢測設(shè)備,實時準(zhǔn)確采集人工智能裝備在研發(fā)、生產(chǎn)、使用、維護(hù)等各環(huán)節(jié)的運行環(huán)境、運行狀態(tài)數(shù)據(jù)。精準(zhǔn)識別有用信息,并保證數(shù)據(jù)完整、準(zhǔn)確、規(guī)范。二是要有效應(yīng)用數(shù)據(jù)。要將當(dāng)前采集到的數(shù)據(jù)與裝備科研樣機、歷史批次的學(xué)習(xí)訓(xùn)練數(shù)據(jù)進(jìn)行對比分析并深入挖掘。要使用數(shù)值分布、包絡(luò)分析和SPC等統(tǒng)計分析方法,及時發(fā)現(xiàn)離群、異常數(shù)據(jù),對過程控制的異常行為做出預(yù)警。這些閉環(huán)信息的有效利用既可為人工智能裝備的軟件性能升級改進(jìn)提供訓(xùn)練數(shù)據(jù),實現(xiàn)性能參數(shù)的及時優(yōu)化,又可為軟件測試綜合評價提供決策支撐。
未來,人工智能裝備將是戰(zhàn)場上的主力軍,其可代替戰(zhàn)士在戰(zhàn)場上沖鋒陷陣,有效減輕戰(zhàn)爭中的人員傷亡。但其也存在著因自身設(shè)計論證、試驗測試不充分等問題而發(fā)生工作異常甚至是“臨陣倒戈”的風(fēng)險,因此加強人工智能裝備軟硬件性能測試方法研究迫在眉睫。隨著人工智能技術(shù)的繼續(xù)進(jìn)步,分布式、強協(xié)同的群智能技術(shù)將會是發(fā)展方向[16]。人工智能裝備的軟件測試也必然朝著云化、分布式、服務(wù)化、自動化、智能化方向發(fā)展。面對人工智能裝備軟件測試提出的新挑戰(zhàn),要加強頂層設(shè)計謀劃,提前做好人才培養(yǎng)、技術(shù)和數(shù)據(jù)儲備等工作。要不斷摸索更為有效的軟件測試方法和測試手段,不斷開發(fā)功能強大、實時性高的自動化智能化測試設(shè)備。要不斷總結(jié)人工智能裝備軟件質(zhì)量的形成規(guī)律,找出關(guān)鍵控制點,讓軟件測試工作的開展更加有效。