張超 陳小春 孫亮 周強
摘要:隨著國產(chǎn)計算機產(chǎn)業(yè)鏈融合創(chuàng)新高質(zhì)量發(fā)展,自主可控新研設(shè)備量產(chǎn)不斷加速,迫切需要相關(guān)測試平臺要與其量產(chǎn)速度相配合。面向計算設(shè)備硬件、固件、操作系統(tǒng)以及遠(yuǎn)程網(wǎng)絡(luò)服務(wù)測試需求,在現(xiàn)有計算機固件測試技術(shù)沉淀基礎(chǔ)上,研制了可支持各類型計算機和嵌入式設(shè)備的自動化測試框架,并通過基于測試根的雙層跨平臺自動化測試技術(shù)實現(xiàn)了測試環(huán)境與硬件平臺的解耦,通過腳本動態(tài)測試執(zhí)行技術(shù)實現(xiàn)了多處理器平臺下的全兼容性。目前,該框架已經(jīng)完成了原型開發(fā),并應(yīng)用于國產(chǎn)計算機項目,在對部署了昆侖BIOS和昆侖BMC系列固件的各類計算設(shè)備測試過程中,取得了良好的效果。
關(guān)鍵詞:自動化測試;國產(chǎn)計算機;BIOS;BMC
中圖分類號:TP309.1文獻(xiàn)標(biāo)志碼:A文章編號:1008-1739(2023)04-64-7
隨著我國信息技術(shù)高速發(fā)展、經(jīng)濟社會深刻變革,萬億級的新基建聚焦工業(yè)互聯(lián)網(wǎng)、云計算和物聯(lián)網(wǎng)等領(lǐng)域,為國產(chǎn)計算機產(chǎn)業(yè)帶來了跨越式發(fā)展的歷史機遇。新基建[1]的核心是信息基礎(chǔ)設(shè)施、融合基礎(chǔ)設(shè)施和創(chuàng)新基礎(chǔ)設(shè)施3類基礎(chǔ)設(shè)施。其中,任何一類信息基礎(chǔ)設(shè)施都可能包括小到傳感器、大到服務(wù)器等各類型的計算設(shè)備。我國自主可控計算機的研制經(jīng)歷了從“無”到“有”,從“小”到“大”的過程,正在從“可用”向“好用”的方向發(fā)展。雖然在功能和性能上距離國際前沿仍有一定差距,但已基本滿足黨政軍核心要求[2]。隨著信息技術(shù)應(yīng)用創(chuàng)新的推進(jìn),自主可控的創(chuàng)新發(fā)展已經(jīng)到了新的階段,在新基建的歷史機遇下,必然會大量出現(xiàn)全國產(chǎn)的服務(wù)器、筆記本、臺式機和嵌入式設(shè)備新產(chǎn)品,并進(jìn)入批量部署階段。
但是,計算設(shè)備從設(shè)計到推向市場,需要經(jīng)歷一個完整的研制周期。其中,軟件測試是研制過程中的一個重要環(huán)節(jié)[3]。面對新基建的歷史機遇,新需求和新產(chǎn)品必然產(chǎn)生爆發(fā)式增長。對于國產(chǎn)計算機設(shè)備,充分和快速的測試已經(jīng)成為制約國產(chǎn)計算設(shè)備快速研制和推廣的關(guān)鍵瓶頸。僅僅依靠手工逐項測試的方法,已不能滿足當(dāng)前快速研制效率的要求,自動化軟件測試成為國產(chǎn)計算機產(chǎn)業(yè)界的迫切需求[4]。
目前,市場上仍然缺少可普適應(yīng)用于國產(chǎn)化計算設(shè)備的自動化測試軟件。國產(chǎn)處理器包括龍芯、飛騰、申威、兆芯、海光和鯤鵬等多種架構(gòu)。受指令集和配套操作系統(tǒng)所限,大多現(xiàn)有測試軟件缺乏足夠支撐各類國產(chǎn)平臺的兼容能力,并且市場上的自動化測試軟件大多以軟件測試為主,缺少硬件測試能力。因此,在以往計算機固件測試的基礎(chǔ)上,融合計算設(shè)備硬件、固件、操作系統(tǒng)以及遠(yuǎn)程網(wǎng)絡(luò)服務(wù)測試需求,研制了可支持計算機和嵌入式計算設(shè)備的自動化測試框架,并通過基于測試根的雙層跨平臺自動化測試技術(shù)實現(xiàn)了測試環(huán)境與硬件平臺的解耦,通過腳本動態(tài)測試執(zhí)行技術(shù)實現(xiàn)了多處理器平臺下的全兼容性。目前,該框架已經(jīng)完成了原型開發(fā),并應(yīng)用于國產(chǎn)化計算機項目,在對部署了昆侖BIOS和昆侖BMC系列固件的各類計算設(shè)備測試過程中,取得了良好的效果。
1.1國內(nèi)外研究現(xiàn)狀
使用成熟和自動化的測試工具已經(jīng)是大型軟件企業(yè)和整機廠商的常態(tài)[5]。目前,市面中流行的自動化測試工具都來自國外,如Loadrunner、QTP、RFT、Selenium、Watir和Robot Framework等,涵蓋了軟件、網(wǎng)絡(luò)服務(wù)以及嵌入式設(shè)備[6]。目前,Intel公司的智能測試系統(tǒng)(ITS)是目前已知唯一具有完備的UEFI固件自動化測試商用解決方案,涉及軟件和硬件,支持BIOS自動化測試。
但是,國外的硬件或固件的測試工具大多僅支持X86平臺,難以滿足國產(chǎn)處理器多種架構(gòu)并存的現(xiàn)實需求。目前,國內(nèi)已出現(xiàn)了較為成熟的軟件自動化測試工具,如國產(chǎn)操作系統(tǒng)自動化測試平臺[7]、筆記本電腦自動化測試系統(tǒng)[8]、用例驅(qū)動自動化測試系統(tǒng)[9]等。但是,以上測試工具大多針對軟件服務(wù)的測試,缺少對底層硬件、固件的測試方法。
綜上,面對國產(chǎn)計算機產(chǎn)業(yè)的快速發(fā)展,實現(xiàn)支持國產(chǎn)處理器平臺硬件、固件和軟件于一身的自動化測試平臺,是計算機產(chǎn)業(yè)鏈當(dāng)前迫切需要解決的問題。
1.2國產(chǎn)計算設(shè)備的測試需求
目前,國產(chǎn)計算設(shè)備正處于新研機型不斷出現(xiàn)的爆發(fā)式增長階段。這些計算設(shè)備的CPU處理器多樣、機型種類豐富、功能定制各不相同[10]。我國國產(chǎn)計算機產(chǎn)業(yè)鏈中,在測試方面仍然主要以采用人工手動單項測試,無法適應(yīng)當(dāng)前急劇增長的測試要求。以國產(chǎn)服務(wù)器測試為例說明。
①國產(chǎn)服務(wù)器處理器平臺眾多,配套軟件定制化強。目前,國產(chǎn)處理器已經(jīng)包括龍芯、飛騰、申威、兆芯、海光和鯤鵬等多種架構(gòu),并且各平臺配套的操作系統(tǒng)存在互不兼容的情況,需要測試人員對每類處理器平臺和配套軟件都十分了解,才能制定出全面覆蓋功能、性能等方面的測試用例[9]。
②國產(chǎn)新研服務(wù)器機型迅速增加,需要進(jìn)行硬件、固件和操作系統(tǒng)3方面測試。每種處理器平臺都可能對應(yīng)十多種服務(wù)器機型,每個機型對應(yīng)一個專用的BIOS,BMC和操作系統(tǒng)版本,造成服務(wù)器測試工作量大、重復(fù)性工作多、效率低。
③測試人員水平不同,存在測試質(zhì)量波動。測試質(zhì)量與測試人員技能、經(jīng)驗強相關(guān),因而造成一定質(zhì)量波動性,影響設(shè)備BIOS,BMC和操作系統(tǒng)的測試質(zhì)量。
④服務(wù)器需要多臺集群測試。服務(wù)器對穩(wěn)定性要求苛刻,為保證出廠質(zhì)量,需要多臺服務(wù)器同時進(jìn)行測試,并且測試時間長、測試用例眾多,手工逐臺測試不可行。
⑤服務(wù)器測試問題需要盡快反饋和修復(fù)。由于研發(fā)階段缺乏相應(yīng)的檢測手段,導(dǎo)致很多低級問題在測試階段才能被發(fā)現(xiàn),頻繁修改代碼,既影響代碼繼承性、穩(wěn)定性,又影響服務(wù)器整機設(shè)備研制和產(chǎn)品化進(jìn)度。
盡管國產(chǎn)計算機測試遇到了很大的挑戰(zhàn),但同時也存在全國產(chǎn)自動化測試軟件的巨大機遇。新研國產(chǎn)機型的大量出現(xiàn),表明當(dāng)前國產(chǎn)化趨勢正在進(jìn)一步加強。研發(fā)全國產(chǎn)的自動化測試軟件有利于打破國外技術(shù)壟斷,構(gòu)建穩(wěn)固的國產(chǎn)計算機供應(yīng)鏈測試環(huán)節(jié),為自主可控供應(yīng)鏈提供測試技術(shù)保障。
根據(jù)以上需求,設(shè)計了面向國產(chǎn)計算設(shè)備的自動化測試框架,其中涉及雙層跨平臺自動化測試技術(shù)、腳本動態(tài)測試技術(shù)2項關(guān)鍵技術(shù)。
2.1雙層跨平臺自動化測試技術(shù)
面對國產(chǎn)處理器多樣化和異構(gòu)化的問題,為了將國產(chǎn)計算機設(shè)備中的自動化測試環(huán)境與硬件平臺解耦,本文提出基于測試根的雙層跨平臺自動化測試技術(shù),將自動化測試客戶端劃分為測試根和測試代理2個層面,測試根用于檢測計算機處理器等關(guān)鍵部件的硬件平臺環(huán)境,并通過網(wǎng)絡(luò)回傳到自動化測試平臺服務(wù)器,以分析和提供與處理器平臺相適應(yīng)的自動化測試啟動和運行環(huán)境;測試代理用于執(zhí)行測試的具體任務(wù)。該技術(shù)通過自動識別處理器軟硬件平臺關(guān)鍵信息,可以自動匹配和部署對應(yīng)的測試環(huán)境,解決了國產(chǎn)多樣化處理器平臺和定制化軟件造成的測試環(huán)境復(fù)雜的問題。
面向國產(chǎn)計算設(shè)備的自動化測試框架首先需要滿足對主流國產(chǎn)處理器平臺的兼容性需求,需要滿足對以下3類測試的支持:
①硬件級測試。支持對處理器平臺關(guān)鍵元件的測試,如重啟測試、硬件配置信息準(zhǔn)確性測試、CPU性能測試、內(nèi)存壓力測試和分辨率測試等。
②固件級測試。支持對BIOS、BMC等固件測試,如SMBIOS測試、UEFI合規(guī)性測試和IPMI合規(guī)性測試等。
③操作系統(tǒng)級測試。支持對操作系統(tǒng)內(nèi)核、應(yīng)用和Web Service等進(jìn)行測試。
國產(chǎn)計算設(shè)備自動化測試平臺需要在操作系統(tǒng)級和BIOS級2個運行環(huán)境,分別部署相應(yīng)的測試支撐軟件。其中,在操作系統(tǒng)中,現(xiàn)有處理器平臺中的系統(tǒng)軟件運行環(huán)境復(fù)雜,各類運行庫的支持不一,但基本已經(jīng)支持Python環(huán)境;在BIOS層面,雖然各處理器平臺BIOS受限于指令集,不能直接互換使用,但是一般都支持UEFI規(guī)范,并且,針對BIOS測試一般需要UEFI運行環(huán)境的支持。因此,為滿足多平臺對自動化測試的兼容性要求,并降低軟件復(fù)雜度,設(shè)計了可集中管控的自動化測試平臺,包括客戶端和服務(wù)器2個部分,如圖1所示。
圖1展示了自動化測試平臺服務(wù)端和待測計算機客戶端之間的邏輯結(jié)構(gòu)。在待測計算機中,包括了Linux操作系統(tǒng)運行環(huán)境和UEFI固件運行環(huán)境2個層面。其中,在操作系統(tǒng)中安裝了操作系統(tǒng)級測試客戶端,用于實現(xiàn)與自動化測試平臺的網(wǎng)絡(luò)交互、操作系統(tǒng)級測試用工具的獲取和安裝、測試環(huán)境的部署和執(zhí)行,以及測試報告的自動生成和發(fā)送;在UEFI固件環(huán)境中,有BIOS級測試客戶端,用于實現(xiàn)BIOS級的自動化測試。
雙層跨平臺自動化測試技術(shù)將自動化測試客戶端劃分為測試根和測試代理2個層面,測試根用于檢測硬件平臺環(huán)境、測試代理用于執(zhí)行測試;并且,為了簡化整個系統(tǒng)的復(fù)雜度,操作系統(tǒng)和BIOS的客戶端架構(gòu)保持一致。雙層跨平臺自動化測試技術(shù)框架如圖2所示。
①測試根。測試根的作用是獲取待測計算設(shè)備的處理器平臺、操作系統(tǒng)版本等測試環(huán)境中的重要信息,為隨后的測試環(huán)境自動化部署提供準(zhǔn)確的信息支撐。測試根包括操作系統(tǒng)級測試根和BIOS級測試根,二者的功能基本相同,都是獲取處理器平臺環(huán)境的重要信息。
②測試代理。測試代理是自動化測試平臺在待測計算設(shè)備中測試環(huán)境的核心,用于完成測試腳本的解析和測試工具的下載、安裝。
在自動化測試平臺的服務(wù)端,構(gòu)建了按處理器平臺劃分的測試用例庫,包括各處理器平臺的配套固件和操作系統(tǒng)之間的對應(yīng)關(guān)系以及配套測試用例。每個測試用例庫都包括針對硬件、固件和操作系統(tǒng)的基線測試用例集和定制測試用例集。基線測試用例集針對于該平臺的基礎(chǔ)功能,定制測試用例集為用戶提供可擴展及自定義的測試用例。
2.2腳本動態(tài)測試執(zhí)行技術(shù)
由于國產(chǎn)化計算設(shè)備存在處理器多樣化、配套軟件定制化的現(xiàn)狀問題,測試人員必須要首先了解平臺的差異性,才能夠進(jìn)行測試腳本代碼編寫。受限于測試人員水平不一,測試腳本編寫的質(zhì)量也參差不齊,制約了國產(chǎn)計算設(shè)備的測試效率。因此,結(jié)合當(dāng)前的國產(chǎn)化計算機現(xiàn)狀,本文提出腳本動態(tài)測試執(zhí)行技術(shù)。該技術(shù)的核心是將腳本邏輯結(jié)構(gòu)與自動測試平臺軟件結(jié)構(gòu)相對應(yīng),屏蔽了底層硬件細(xì)節(jié),測試人員只需要編寫測試功能,就可以根據(jù)硬件平臺執(zhí)行相應(yīng)的測試功能。圖3展示了腳本動態(tài)測試執(zhí)行技術(shù)中涉及的軟件模塊映射關(guān)系圖。從邏輯上來看,自動化測試的模塊架構(gòu)包括適配層、模塊層、組件層、邏輯層和腳本層,其主要功能如下:
圈5腳本層:由可執(zhí)行的測試腳本構(gòu)成,每個腳本中包括了操作系統(tǒng)層或固件層中可運行的腳本命令。
圈4邏輯層:由測試邏輯部件構(gòu)成,每個邏輯部件都對應(yīng)了計算設(shè)備的某個功能或性能指標(biāo)。
圈3組件層:由單元測試構(gòu)成,每個測試單元都對應(yīng)了一段封裝具體功能的測試代碼。
圈2模塊層:由支持測試的具體模塊構(gòu)成,每個模塊都對應(yīng)了測試環(huán)境中的測試工具或支撐函數(shù)模塊。
圈1適配層:由每個處理器平臺定制的支撐軟件代碼構(gòu)成,每個適配層的模塊都可以屏蔽底層硬件,保證腳本能夠在對應(yīng)的處理器平臺環(huán)境中運行。
在測試過程中,自動測試客戶端將解析測試腳本中的內(nèi)容,并動態(tài)加載各平臺適用的測試環(huán)境,調(diào)用測試工具集中的相關(guān)接口,按照測試邏輯次序完成相關(guān)的測試工作。
自動測試引擎主要包括腳本解析模塊和腳本執(zhí)行模塊2個部分,如圖4所示。
腳本解析模塊需要包括標(biāo)簽解析、標(biāo)簽類型處理和測試指令翻譯3個部分。
①標(biāo)簽解析。自動化測試平臺的測試腳本包括4個標(biāo)簽:包括“預(yù)置條件”“操作步驟”“結(jié)果比對”“恢復(fù)環(huán)境”。在解析腳本的具體內(nèi)容之前,需要判斷當(dāng)前的腳本內(nèi)容是哪個標(biāo)簽,而后按照對應(yīng)的操作規(guī)則執(zhí)行腳本中的命令語句。
②標(biāo)簽類型處理。在解析標(biāo)簽類型后,需要按照不同的標(biāo)簽類型,進(jìn)入相應(yīng)的分支進(jìn)行執(zhí)行。
③標(biāo)簽指令翻譯。該模塊用于將腳本中的文本翻譯為可直接執(zhí)行的指令,包括指令和相應(yīng)參數(shù)。
腳本執(zhí)行模塊用于執(zhí)行腳本解析模塊發(fā)送的測試指令序列。在收到測試指令序列后,該模塊將通過指令庫查找該指令調(diào)用的路徑和接口。通過逐個調(diào)用工具接口或調(diào)用標(biāo)準(zhǔn)庫函數(shù),完成每個測試步驟。
以BMC固件的遠(yuǎn)程關(guān)機測試為例,說明自動化測試引擎的過程流程。首先,自動化測試引擎收到測試腳本,對腳本進(jìn)行解析。一般地,會先執(zhí)行帶有“預(yù)置條件”的腳本內(nèi)容,包括測試環(huán)境依賴的軟件是否完備、測試前置條件數(shù)據(jù)是否完整。其次,根據(jù)測試腳本中“操作步驟”的腳本內(nèi)容,執(zhí)行“管理員登錄”“遠(yuǎn)程關(guān)機”的配套指令。通過測試指令翻譯模塊,將腳本映射為特定的代碼模塊調(diào)用命令序列,并從指令庫中查找對應(yīng)的指令,并順序進(jìn)行指令。如遠(yuǎn)程關(guān)機指令就包括了“調(diào)用Selenium模塊”“訪問管理員頁面”“自動輸入用戶名和口令”“進(jìn)入電源管理頁面”“點擊遠(yuǎn)程關(guān)機選項”等命令序列,并分別調(diào)用對應(yīng)的軟件模塊進(jìn)行執(zhí)行。再次,完成指令調(diào)用后,將生成的計算結(jié)果與“結(jié)果比對”中的測試基線數(shù)據(jù)進(jìn)行比對,自動生成測試報告。最后,執(zhí)行“恢復(fù)環(huán)境”標(biāo)簽的腳本內(nèi)容,刪除已經(jīng)安裝的軟件模塊,恢復(fù)測試前的計算環(huán)境。
2.3 BIOS自動化測試執(zhí)行技術(shù)
目前計算機產(chǎn)業(yè)鏈中,在BIOS測試方面仍然以主要采用人工手動單項測試。BIOS界面中的選項眾多,存在大量重復(fù)性、耗時性工作占據(jù)測試人員大部分工作量,造成計算機設(shè)備測試工作耗時長、耗費大、效率相對低下,無法適應(yīng)當(dāng)前急劇增長的測試要求。
通過BIOS自動化測試執(zhí)行技術(shù),能夠設(shè)計包含BIOS可執(zhí)行命令的測試腳本,將測試腳本發(fā)送到待測計算機,并自動檢測返回的測試結(jié)果,判斷測試腳本是否成功執(zhí)行,最終自動生成測試報告;并且該技術(shù)針對同款計算機BIOS,可以直接重復(fù)利用進(jìn)行測試即可;若針對不同款計算機BIOS,可以根據(jù)BIOS差異,修改測試腳本后即可進(jìn)行測試。
BIOS自動化測試技術(shù)框架如圖5所示,包括測試主機和待測計算機。BIOS測試腳本通過測試指令庫,將BIOS測試腳本轉(zhuǎn)換為BIOS可執(zhí)行的測試命令序列;而后通過BIOS通信模塊,將測試命令序列發(fā)送到待測計算機的BIOS中進(jìn)行執(zhí)行,并返回測試結(jié)果;BIOS碼流解析模塊對返回的測試數(shù)據(jù)進(jìn)行解析,并通過測試結(jié)果分析模塊,確定返回的測試結(jié)果是否正確,測試結(jié)果由測試結(jié)果存儲模塊進(jìn)行存儲。
BIOS自動化測試主機中部署了BIOS運行腳本模塊、BIOS通信模塊、BIOS碼流解析模塊、BIOS測試結(jié)果分析模塊、測試結(jié)果存儲模塊和測試指令庫。
BIOS運行腳本模塊用于啟動BIOS自動化測試腳本執(zhí)行的模塊,根據(jù)測試場景需求,執(zhí)行測試過程。
BIOS通信模塊用于模擬通信交互工具的模塊,測試主機與被測主機進(jìn)行通信,包括接收BIOS傳輸碼流信息和向被測主機發(fā)送模擬按鍵指令等操作。
BIOS碼流解析模塊用于對接收BIOS返回的碼流信息進(jìn)行解析,對碼流中顏色信息,查找并截取碼流中的關(guān)鍵信息,轉(zhuǎn)成可視化和可分析的數(shù)據(jù)。
BIOS測試結(jié)果分析模塊用于對解析后的結(jié)果數(shù)據(jù)進(jìn)行分析,檢測其與基準(zhǔn)值數(shù)據(jù)是否一致。
測試結(jié)果存儲模塊用于對測試結(jié)果進(jìn)行保存,輸出測試報告。
測試指令庫用于存儲可用于BIOS測試的指令合集,將按鍵名稱與對應(yīng)的ASCII碼進(jìn)行映射,例如上下左右方向按鍵、ENTER鍵、三鍵重啟、ESC鍵和F1(BIOS啟動熱鍵)等。
基于測試根的雙層跨平臺自動化測試技術(shù)、腳本動態(tài)測試技術(shù)2項關(guān)鍵技術(shù),結(jié)合國產(chǎn)計算機測試的現(xiàn)實需求,設(shè)計了國產(chǎn)計算設(shè)備自動化測試平臺的總體框架,并完成了原型系統(tǒng)開發(fā)。
3.1國產(chǎn)計算設(shè)備自動化測試平臺總體結(jié)構(gòu)設(shè)計
自動測試平臺總體架構(gòu)如圖6所示,包括部署在內(nèi)網(wǎng)的自動化測試服務(wù)端和部署在待測計算設(shè)備中的測試客戶端(測試根和測試代理)。其中,對服務(wù)器而言,BMC固件內(nèi)置了嵌入式操作系統(tǒng),BMC測試根和測試代理組成了高度定制化的嵌入式操作系統(tǒng)級測試客戶端。