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