陳琦
(國電南瑞研究院 江蘇省南京市 210000)
在軟件開發(fā)過程中,利用合理的軟件測試平臺,能夠在極大程度上提升軟件整體的測試效率。因此,當前相關(guān)領(lǐng)域的研究人員正逐步通過各類現(xiàn)代化的技術(shù)手段,構(gòu)建自動化的軟件測試平臺,對于未來軟件企業(yè)的建設和發(fā)展而言具有十分重要的價值意義[1]。當前,現(xiàn)有軟件測試平臺已經(jīng)能實現(xiàn)對多種不同類型軟件協(xié)同測試的功能,并做到對軟件測試整個過程中的跟蹤和管理。傳統(tǒng)軟件測試平臺在開發(fā)階段,大多采用虛擬機技術(shù)實現(xiàn)對平臺自動化測試環(huán)境以及監(jiān)控環(huán)境的構(gòu)建[2]。但這種方法在實際應用過程中,會產(chǎn)生更加高昂的開發(fā)成本,并且耗時較長,平臺在日常運行過程中很難得到維護等問題。工業(yè)自動化領(lǐng)域中,大多數(shù)用戶需要基于分布式計算環(huán)境,進行軟件測試,用戶數(shù)量龐大,功能全面而復雜,這進一步導致現(xiàn)有的軟件測試平臺不能滿足用戶需求?;诖?,本文開展分布式協(xié)同軟件測試平臺研究。
為實現(xiàn)對分布式協(xié)同軟件測試平臺的搭建,首先根據(jù)平臺的運行特點,選擇為其提供運行環(huán)境的vSphere 服務器。同時,為方便對平臺進行管理,還需要通過虛擬服務器對vSphere 服務器搭建的虛擬環(huán)境進行管理。在平臺虛擬環(huán)境中,通過引入不同的管理程序,能夠根據(jù)需要創(chuàng)建的平臺客戶端,對每個虛擬機進行系統(tǒng)化的安裝和分布式協(xié)同管理[3]。為滿足本文設計平臺的分布式需要,選擇將多臺虛擬機相連的方式,構(gòu)建一個分布式拓撲結(jié)構(gòu)網(wǎng)絡,針對該網(wǎng)絡當中的多臺虛擬機協(xié)同和監(jiān)控,主要是通過部署在虛擬機上的各個軟件完成,以此實現(xiàn)對軟件的自動化測試。在實際測試過程中,平臺用戶可以通過選擇不同的待測試軟件的屬性和類型,對軟件進行測試,并同時配合多臺虛擬機實現(xiàn)協(xié)同[4]。由于當前,傳統(tǒng)自動化工具和技術(shù)已經(jīng)無法滿足本文平臺的運行需要,因此,本文通過對多種不同的搭建技術(shù)的選擇,實現(xiàn)對平臺的構(gòu)建。為實現(xiàn)本文分布式協(xié)同軟件測試平臺的設計與開發(fā),綜合其各項優(yōu)勢,得出如下搭建技術(shù)應用流程:
利用Python 跨平臺計算機程序?qū)崿F(xiàn)對本文平臺中各個虛擬機的控制、查詢以及相互之間的通信協(xié)同功能;利用vSphere 腳本控制,結(jié)合自動化工具對vSphere 圖像當中的元素進行抓取。再利用獲取到的控件對象,對虛擬機的自動化腳本操作進行編寫;利用Jenkins 開源軟件集成工具對平臺在運行過程中的外部調(diào)用執(zhí)行工作進行監(jiān)控,將平臺虛擬機上的操作根據(jù)Jenkins 能夠識別的格式進行編寫,并在軟件測試過程中,通過調(diào)取相應的指令執(zhí)行自動化腳本;利用Power CLI 命令行工具通過技術(shù)開發(fā)官方提供的接口,對vSphere 服務器在運行過程中的各項自動化行為進行管理。
根據(jù)軟件測試需要,本文構(gòu)建的分布式協(xié)同軟件測試平臺整體框架結(jié)構(gòu)如圖1所示。
圖1:分布式協(xié)同軟件測試平臺整體框架結(jié)構(gòu)
由圖1可知,本文分布式協(xié)同軟件測試平臺當中包含了一個用于進行網(wǎng)絡互連的Server 服務器和若干個sSphere 用戶、一個vSphere 服務器,一個或多個資源服務器。其中vSphere 服務器是本文設計的測試平臺的控制中心,主要用于對集群當中各個虛擬機傳輸?shù)南鄳芾碇噶钸M行發(fā)送[5]。需要在本文測試平臺中進行測試的軟件,需要在腳本執(zhí)行要求的自動化測試環(huán)境當中,按照不同的部署結(jié)合Power CLI 命令行工具,將其傳輸?shù)綄奶摂M機當中。同時,測試過程中,用于協(xié)同多個虛擬機的程序也同樣需要部署在相應的虛擬機當中。并且,Resource 資源服務器還需要為軟件處理環(huán)境提供所需的軟件安裝包、工具安裝包以及自動化腳本等相關(guān)內(nèi)容的代碼。
由于本文分布式協(xié)同軟件測試平臺的主要應用場所是常見的各類網(wǎng)絡環(huán)境,因此在測試過程中為了保證軟件的安全性,防止其內(nèi)部敏感信息泄露,本文還需要對測試用戶的敏感信息進行安全防護,以此保證軟件公司的利益。在控制各個虛擬機進行對軟件的測試時,設置兩個需要進行身份驗證的模塊。第一個模塊設置在與vSphere服務器連接的位置,用戶在本文測試平臺上,無論是通過圖形界面登錄,還是通過控制命令的形式登錄,都需要進行vSphere用戶認證。第二個模塊設置在Master 程序在執(zhí)行相應測試指令過程中,需要由用戶提供當前測試設備以及目標設備的操作用戶認證。同時,由于登錄內(nèi)容也屬于用戶的敏感信息,因此考慮到登錄賬戶的安全問題,應當選擇安全級別較高的網(wǎng)絡環(huán)境作為登錄環(huán)境,并且在用戶輸入相應賬號和密碼時,不以明文的形式顯示、存儲和傳輸。同時,為了進一步保證用戶敏感信息的安全,本文引入證書認證的方式,對用戶敏感信息進行二次保護。在平臺部署階段,通過輸入密碼的方式生成相應的加密證書。利用本文測試平臺當中的Master 程序,根據(jù)證書和用戶創(chuàng)建的內(nèi)部證書對象,對后續(xù)測試過程中的相應指令進行驗證,以此確保用戶敏感信息的安全性。
表1:兩種測試平臺實驗結(jié)果對比表
為進一步提高本文分布式協(xié)同軟件測試平臺的測試效率,在對平臺協(xié)同測試環(huán)境進行部署時,通過引入Jenkins 技術(shù),實現(xiàn)開源項目的應用平臺設計,以及豐富本文測試平臺的功能,并實現(xiàn)插件的可擴展性,方便后續(xù)測試平臺的集成和交付。選擇本文測試平臺框架當中相對穩(wěn)定的虛擬機,在其中引入帶有Jenkins 技術(shù)的服務器,在利用Jenkins 技術(shù)對虛擬機上部署的客戶端管理的過程中,可通過Jenkins 對服務器中創(chuàng)建的各類任務進行管理,以此完成對虛擬機的管理、軟件安裝以及相應腳本的運行。引入Jenkins 技術(shù),實現(xiàn)自動化測試環(huán)境部署的主要流程為:
第一步,對測試部署環(huán)境當中的虛擬機執(zhí)行關(guān)機動作;
第二步,對平臺當中的虛擬機執(zhí)行鏡像恢復操作。在鏡像設置當中主要包含:啟用重啟后自動登錄模塊、禁用重啟后輸入關(guān)機原因?qū)υ捒?、版本更新等?/p>
第三步,對測試平臺部署環(huán)境當中的虛擬機執(zhí)行開機操作;
第四步,根據(jù)不同軟件的測試需要,在相應的虛擬機當中安裝軟件,并設置相應的配置。安裝的軟件除了包括需要進行測試的軟件以外,還應當包括支持自動化測試的軟件平臺;
第五步,對平臺部署環(huán)境當中完成部署的虛擬機執(zhí)行重啟操作;
第六步,將測試平臺當中相應的虛擬機進行協(xié)同控制;
第七步,啟動平臺當中的自動化測試腳本。
根據(jù)上述操作,完成對本文測試平臺的自動化測試環(huán)境部署。
為驗證本文設計的分布式協(xié)同軟件測試平臺在實際應用中的效果,選取常見的幾種軟件作為待測對象,分別為Redundancy Client12.0、View FV Client13.5、Talk Wisn Server 10.8 等。分別利用本文設計的測試平臺和傳統(tǒng)測試平臺對上述多種類型軟件進行測試,為了保證實驗的客觀性,將兩種平臺同時搭建在Windows 9 系統(tǒng)當中,并保證在搭建的過程中,除本文設計的各個條件存在差異外,其余可能影響實驗結(jié)果的條件均保持一致。對比兩種測試平臺在進行不同測試用例時的耗時情況??紤]到在實驗過程中可能會受到周圍影響因素的干擾,因此為了進一步保證本文實驗的公正性,每種測試用例均在兩種平臺上執(zhí)行5 次,并取5 次的平均值作為結(jié)果。完成上述操作后,將實驗結(jié)果進行記錄,并繪制成如表1所示的實驗結(jié)果對比表。
表1中的測試用例A~E 分別表示為:啟動主服務器,保持備用服務器運行;同時啟動主服務器和備用服務器;啟動備用服務器,保持主服務器正常運行;斷開主服務器;斷開備用服務器。由表1中的數(shù)據(jù)可以看出,本文測試平臺的耗時在各個測試用例當中均明顯小于傳統(tǒng)測試平臺的耗時。在實驗過程中發(fā)現(xiàn),造成這一實驗結(jié)果產(chǎn)生的主要原因是本文測試平臺在測試過程中采用了判斷目標出現(xiàn)或消失的方式替代傳統(tǒng)測試平臺的等時操作,因此時間成本得到明顯的降低。因此,通過實驗進一步證明,本文提出的分布式協(xié)同軟件測試平臺在實際應用中能夠有效提高測試平臺的響應速度。
針對復雜的分布式軟件在進行測試過程中需要多臺設備協(xié)同配合的問題,本文提出了一種全新的分布式協(xié)同軟件測試平臺,并通過實驗證明了該平臺的應用效果。將該測試平臺應用于實際,能夠有效提高對軟件的測試效率,值得在軟件企業(yè)中廣泛應用。