王敏
關鍵詞:可靠性;可靠性測試;故障注入
中圖分類號:TP393 文獻標識碼:A
文章編號:1009-3044(2023)02-0075-03
1 引言
隨著云計算技術在各個行業(yè)的普及,基于云計算的軟件在各個行業(yè)的應用也越來越廣泛。云計算軟件在長期運行過程中,經(jīng)常會出現(xiàn)一些可靠性問題,雖然部分問題是低概率問題,但是問題一旦出現(xiàn),會給整個系統(tǒng)造成嚴重的后果。智能網(wǎng)絡管控系統(tǒng)作為全局網(wǎng)絡設備的管理、控制和分析中心,在整個網(wǎng)絡中的地位尤其重要,一旦出現(xiàn)問題,必然會帶來非常嚴重的影響。為了避免此類問題,軟件可靠性測試尤其重要。軟件可靠性測試涵蓋了需求分析、軟件設計、測試設計、測試驗證等各個階段。在智能網(wǎng)絡管控系統(tǒng)測試過程中,結合故障注入技術,在該軟件系統(tǒng)中開展可靠性測試全過程,通過工作實踐證明,故障注入測試在可靠性測試中的重要性。
2 故障注入概念
故障注入測試屬于軟件可靠性測試方法[1]中的一種,它是根據(jù)選定的故障模型,采用故障注入工具將故障注入系統(tǒng)中,通過采集系統(tǒng)對注入故障的反應信息,對系統(tǒng)進行可靠性分析[2]。
故障注入技術根據(jù)故障注入方式不同分為三種:硬件實現(xiàn)的故障注入、仿真實現(xiàn)的故障注入、軟件實現(xiàn)的故障注入[3]。軟件實現(xiàn)的故障注入是通過軟件的方式模擬故障,通過修改軟件的相關數(shù)據(jù)或軟件的狀態(tài)變量來模擬故障的產(chǎn)生,從而加速系統(tǒng)的失效[4]。通常情況下,軟件系統(tǒng)的故障可能會隱藏得較深,需要在特定的環(huán)境或復雜的條件下才能觸發(fā),被動地等待故障發(fā)生后,再去定位和修復,這種方式是非常低效的,也無法全面保證軟件系統(tǒng)的可靠性。軟件故障注入能夠在可控的條件下主動去觸發(fā)故障,再進行分析和解決,從而保證軟件系統(tǒng)可靠性測試的充分性[5]。
3 智能網(wǎng)絡管控系統(tǒng)的故障注入測試
智能網(wǎng)絡管控系統(tǒng)實現(xiàn)了物理網(wǎng)絡與商業(yè)意圖的有效連接,向下實現(xiàn)全局網(wǎng)絡的集中管理、控制和分析,面向商業(yè)和業(yè)務意圖使能資源云化、全生命周期自動化,以及數(shù)據(jù)分析驅動的智能閉環(huán);向上提供開放網(wǎng)絡API與IT快速集成。智能網(wǎng)絡管控系統(tǒng)應用于運營商網(wǎng)絡、數(shù)據(jù)中心、企業(yè)園區(qū)、企業(yè)專線等場景,讓網(wǎng)絡更加簡單、智慧、開放和安全,加速運營商及企業(yè)的業(yè)務轉型和創(chuàng)新。整個系統(tǒng)層級結構如圖1 所示。
智能網(wǎng)絡管控系統(tǒng)具有以下三個關鍵能力。第一個能力是管、控、析融合,實現(xiàn)以場景為中心的自治閉環(huán)。采用云化架構,將不同系統(tǒng)和流程中的數(shù)據(jù)統(tǒng)一到一個平臺,拉通數(shù)據(jù)模型,匹配不同業(yè)務場景和各運維階段的訴求,將業(yè)務意圖封裝在業(yè)務模型中,客戶可根據(jù)業(yè)務訴求選擇所需模型,多個業(yè)務模型以場景為中心封裝在業(yè)務App中,閉環(huán)解決該場景的各類運維需求。第二個能力是云地協(xié)同,AI使能預測性網(wǎng)絡維護。通過大數(shù)據(jù)處理技術,注入多種AI算法,實現(xiàn)網(wǎng)絡流量實時可視和可預測、網(wǎng)絡故障自動識別和預測、業(yè)務體驗歷史可回放和預測。第三個能力是開放可編程,使能開放App生態(tài),提供開放可編程框架,南向支持與第三方網(wǎng)絡控制器或者設備對接,北向與云端AI訓練平臺和IT應用快速集成。
智能網(wǎng)絡管控系統(tǒng)的可靠性測試貫穿整個版本生命周期,可靠性測試過程主要包括:可靠性測試計劃制定、需求分析、測試設計、測試執(zhí)行和測試結果分析,如圖2所示。
3.1 可靠性測試計劃制定階段
由版本測試經(jīng)理制定版本測試計劃,版本測試計劃包含了各類專項測試計劃,其中一個專項測試就是可靠性專項測試,該計劃中需要明確可靠性測試范圍、可靠性測試方法以及測試時間點等。
3.2 可靠性需求分析和測試設計階段
測試架構師和測試工程師參與需求分析和開發(fā)設計的評審,從需求列表分析出可靠性測試需求,制定測試方案,并設計測試用例??煽啃詼y試方案和測試用例需通過測試架構師評審,再由測試工程師針對可自動化用例提前編寫自動化測試腳本。
針對智能網(wǎng)絡管控系統(tǒng)層級結構的特點,測試架構師設計了故障注入可靠性測試用例基線,故障類型主要分為節(jié)點故障、進程故障、網(wǎng)絡故障、內存故障、CPU故障、磁盤故障、文件故障等七大類[6],如表1所示。各故障類型中包含多個測試用例,用例基線總數(shù)超過了200個。測試工程師可根據(jù)所負責模塊的需求進行分析,從基線中選取適用的故障注入類型,生成各個模塊的故障注入測試用例。
3.3 可靠性測試環(huán)境搭建
故障注入測試之前,必須首先完成測試環(huán)境的搭建,包括環(huán)境部署和軟件產(chǎn)品的安裝,以及故障注入工具的安裝。
3.3.1 環(huán)境的部署和軟件產(chǎn)品的安裝
智能網(wǎng)絡管控系統(tǒng)部署相對復雜,這里從服務器配置開始介紹整個硬件環(huán)境部署和軟件產(chǎn)品的安裝過程。
1)配置硬件設備
登錄各服務器系統(tǒng),配置IP和用戶名密碼,根據(jù)磁盤數(shù)量和磁盤可靠性要求配置RAID。
2)安裝FusionCompute CAN 和FusionComputeVRM
各服務器主機節(jié)點首先安裝FusionCompute CAN (Compute Node Agent),然后規(guī)劃兩個主機節(jié)點安裝FusionCompute VRM(Virtual Resource Management),通過FusionCompute VRM 可以實現(xiàn)對虛擬資源和用戶數(shù)據(jù)的統(tǒng)一管理,對外提供彈性計算、存儲、IP等服務。
3)配置FusionCompute 安裝VRM時,已經(jīng)自動將VRM所在的兩臺CNA 主機添加到FusionCompute管理系統(tǒng)中。為了管理所有的CNA主機,需要在FusionCompute管理界面手動添加其余的CNA主機,并將新添加主機的存儲資源都添加到FusionCompute中。
虛擬機管理軟件FusionCompute安裝完成后,默認會創(chuàng)建一個ManagementDVS虛擬分布式交換機,用于業(yè)務分發(fā)平面(和CNA、VRM地址規(guī)劃所在平面相同)。需要再創(chuàng)建1個虛擬分布式交換機,用于內部通信。虛擬交換機通過上行鏈路連接到物理機網(wǎng)口,通過端口組連接到虛擬機網(wǎng)口,創(chuàng)建虛擬交換機的同時需要添加上行鏈路和創(chuàng)建端口組才能正常工作。
4)創(chuàng)建虛擬機
FusionCompute 完成配置后,可通過本地模板創(chuàng)建虛擬機。通過https://VRM 節(jié)點IP地址:8443登錄FusionCompute,選擇本地相應的虛擬機模板文件創(chuàng)建相應操作系統(tǒng)的虛擬機,虛擬機安裝操作系統(tǒng)后需要進行必要的網(wǎng)絡配置。
5)安裝產(chǎn)品軟件
完成上述規(guī)劃后,即可通過EasySuite軟件,根據(jù)計劃安裝的集群選取虛擬機節(jié)點數(shù)量,安裝對應的智能網(wǎng)絡管控系統(tǒng)版本。
3.3.2 故障注入測試工具安裝
這里介紹TC工具、CFE工具、客戶端命令、ARES 工具四種故障注入方法[7],在測試過程中,主要通過ARES工具實現(xiàn)故障注入測試。
1)TC工具注入
TC(Traffic Control)流量控制器,是Linux自帶的模塊。通過TC命令可以注入網(wǎng)絡丟包、網(wǎng)絡錯包以及網(wǎng)絡延時等故障。
2)CFE工具注入
CFE(Common Fault-injection Entry)工具是公司自研的故障注入工具,在Linux系統(tǒng)中通過CFE命令方式可以實現(xiàn)進程故障、CPU故障、內存故障、磁盤故障等多種故障注入。
3)客戶端命令注入
通過客戶端軟件登錄虛擬機,實現(xiàn)虛擬機復位、進程重啟等故障,也可以通過Linux操作系統(tǒng)的ifcon?fig實現(xiàn)虛擬機網(wǎng)絡端口故障。
4)ARES工具注入
ARES工具是公司基于CFE自研的可視化故障注入工具,可通過Web界面實現(xiàn)各類故障注入測試。該工具集成了TC工具、CFE工具、客戶端命令支持的所有故障注入類型,且操作界面方面簡單,不需要記憶各種操作命令。
因為ARES工具操作簡單,故障注入測試優(yōu)先選用ARES工具進行測試。首先,將ARES客戶端安裝包上傳到需要注入故障的各個虛擬機,并進行安裝。然后,登錄ARES服務器Web頁面,通過輸入虛擬機IP、用戶名和密碼進行連接,連接虛擬機成功后,就可以針對虛擬機進行各類故障注入測試。
3.4 可靠性測試執(zhí)行
完成智能網(wǎng)絡管控系統(tǒng)和故障注入工具安裝后,就可以按照可靠性測試用例進行測試執(zhí)行??煽啃詼y試執(zhí)行方式包括自動化執(zhí)行和手工執(zhí)行兩部分。
測試工程師在需求交付后,完成自動化腳本的調試和執(zhí)行,所有腳本提交到自動化工廠,經(jīng)自動化工廠驗收通過后方可納入自動化工廠腳本。無法實現(xiàn)自動化的腳本,則由測試工程師手工執(zhí)行。根據(jù)版本可靠性測試計劃,在相應迭代開發(fā)時間點,由自動化工廠完成全部可靠性腳本執(zhí)行,并由測試工程師完成腳本分析和手工測試執(zhí)行。
無論是自動化測試還是手工測試,故障注入測試過程如圖3所示。首先,需完成業(yè)務背景的部署,要求按照業(yè)務滿規(guī)格的一定比例進行部署,具體比例由開發(fā)架構師和測試架構師審核達成一致。然后,執(zhí)行相關業(yè)務配置,完成業(yè)務配置后,注入故障。在注入故障的同時,進行業(yè)務檢查。由于此時處于故障注入狀態(tài),部分業(yè)務會顯示不正常狀態(tài),因此需要選擇可預估的業(yè)務狀態(tài)進行檢查。最后,撤銷故障注入,再次進行業(yè)務檢查,所有業(yè)務狀態(tài)都應該恢復正常。為了能更好地發(fā)現(xiàn)低概率問題,故障注入自動化測試也可用作夜航腳本,利用晚上的時間反復執(zhí)行后,再去檢查系統(tǒng)狀態(tài),通過夜航腳本可以更高效地發(fā)現(xiàn)問題。
3.5 可靠性測試結果分析
在多個版本的可靠性測試過程中,故障注入測試發(fā)現(xiàn)了很多有價值的可靠性問題,如典型故障有:
1)集群環(huán)境中某個節(jié)點注入故障后,整個集群不能感知該節(jié)點故障,業(yè)務繼續(xù)下發(fā)到故障節(jié)點,導致業(yè)務處理失敗。
2)構造集群中某個節(jié)點上關鍵配置文件損壞故障后,無法從集群中其他節(jié)點獲取最新配置文件,導致該節(jié)點異常。
3)通過設置超大日志或者大量日志文件,觸發(fā)日志文件繞接場景,發(fā)現(xiàn)日志繞接失敗,日志文件過多,導致磁盤空間滿。
通過對每一輪故障注入測試發(fā)現(xiàn)問題的故障分析,甄別出典型故障,并在版本的各個模塊發(fā)起測試排查,同步完善可靠性測試用例基線。經(jīng)過測試執(zhí)行閉環(huán)和基線用例閉環(huán),進一步提升了版本的可靠性質量。
4 結束語
隨著軟件系統(tǒng)在長期使用過程中,暴露出越來越多的可靠性問題,可靠性測試的重要性也在逐步提升,做好軟件的可靠性測試,對于提升整個軟件的產(chǎn)品質量,提高系統(tǒng)的穩(wěn)定性和安全性,尤為重要。在智能網(wǎng)絡管控系統(tǒng)的可靠性測試中結合故障注入技術,使系統(tǒng)可靠性測試的故障類型更加全面,同時也提高了低概率問題發(fā)現(xiàn)的效率,故障注入技術已經(jīng)成為可靠性測試中不可缺少的重要手段。