本發(fā)明涉及計(jì)算機(jī)技術(shù)及通信技術(shù)領(lǐng)域,特別是涉及一種接入網(wǎng)設(shè)備自動(dòng)化測(cè)試系統(tǒng)。
背景技術(shù):
自動(dòng)化測(cè)試是在PC上運(yùn)行自動(dòng)化測(cè)試程序,自動(dòng)化程序通過(guò)多個(gè)控制鏈路(TCP/IP、遠(yuǎn)程服務(wù)器Remote Server)對(duì)接入網(wǎng)設(shè)備進(jìn)行配置和信息查看,控制PC進(jìn)行測(cè)試幀的收發(fā),并完成測(cè)試結(jié)果的自動(dòng)獲取與判斷,最終得出該測(cè)試程序的測(cè)試結(jié)果。
Robot Framework是一個(gè)通用的關(guān)鍵字驅(qū)動(dòng)的自動(dòng)化測(cè)試技術(shù),可以通過(guò)一種非常簡(jiǎn)單的機(jī)制,使用Python或Java實(shí)現(xiàn)一個(gè)測(cè)試庫(kù),原生支持Python或Java腳本語(yǔ)言,并支持使用Python封裝調(diào)用TCL腳本。通過(guò)測(cè)試庫(kù)中實(shí)現(xiàn)的關(guān)鍵字來(lái)驅(qū)動(dòng)被測(cè)軟件。測(cè)試用例以HTML,純文本或TSV(制表符分隔的一系列值)文件存儲(chǔ)。目前,在應(yīng)用Robot Framework自動(dòng)化測(cè)試框架進(jìn)行測(cè)試時(shí),首先啟動(dòng)測(cè)試框架,讀入測(cè)試用例的關(guān)鍵字驅(qū)動(dòng)表Test Data,測(cè)試框架Robot Framework將調(diào)用測(cè)試框架中的測(cè)試引擎(Python)來(lái)處理測(cè)試用例表中的數(shù)據(jù),生成可被測(cè)試驅(qū)動(dòng)層識(shí)別的命令,通過(guò)協(xié)議執(zhí)行關(guān)鍵字轉(zhuǎn)換,再到驅(qū)動(dòng)層測(cè)試庫(kù)Test Library(對(duì)象、動(dòng)作執(zhí)行等)讀取命令,根據(jù)命令中的數(shù)據(jù)在系統(tǒng)下自動(dòng)生成測(cè)試腳本并執(zhí)行。運(yùn)行機(jī)制如圖1所示。
Robot Framework核心框架主要提供測(cè)試用例文件的解析、用例的調(diào)度、測(cè)試報(bào)告的生成功能,在基于自動(dòng)化測(cè)試及配置管理業(yè)務(wù)中,自動(dòng)化測(cè)試系統(tǒng)必須基于SSH(Secure Shell)、FTP、TCL服務(wù)等遠(yuǎn)程登錄到遠(yuǎn)端設(shè)備上自動(dòng)的執(zhí)行用戶命令,并有相應(yīng)協(xié)議開(kāi)發(fā)的測(cè)試庫(kù),但Robot Framework并未提供完善的基于協(xié)議開(kāi)發(fā)的特定測(cè)試庫(kù);另一方面,也不具有針對(duì)腳本文件系統(tǒng)共享、復(fù)用服務(wù)進(jìn)行測(cè)試的功能管理。綜上所述,現(xiàn)有的Robot Framework自動(dòng)化測(cè)試方式測(cè)試效果較差。
技術(shù)實(shí)現(xiàn)要素:
基于此,有必要針對(duì)現(xiàn)有的Robot Framework自動(dòng)化測(cè)試方式測(cè)試效果較差的問(wèn)題,提供一種接入網(wǎng)設(shè)備自動(dòng)化測(cè)試系統(tǒng)。
一種接入網(wǎng)設(shè)備自動(dòng)化測(cè)試系統(tǒng),包括:
客戶端、服務(wù)器和測(cè)試儀器;
所述客戶端通過(guò)服務(wù)器與測(cè)試儀器相連接,所述測(cè)試儀器與待測(cè)的接入網(wǎng)設(shè)備相連接;
所述服務(wù)器在監(jiān)聽(tīng)到所述接入網(wǎng)設(shè)備的連接請(qǐng)求之后,建立與所述接入網(wǎng)設(shè)備的通信連接,通過(guò)所述通信連接獲取所述接入網(wǎng)設(shè)備需要執(zhí)行的測(cè)試動(dòng)作,并將包含所述測(cè)試動(dòng)作的消息發(fā)送到客戶端;
所述客戶端根據(jù)所述消息中攜帶的測(cè)試動(dòng)作確定需要執(zhí)行的測(cè)試用例,將對(duì)所述測(cè)試用例的調(diào)用指令發(fā)送到所述服務(wù)器,接收所述服務(wù)器根據(jù)所述調(diào)用指令返回的封裝函數(shù),對(duì)所述封裝函數(shù)進(jìn)行解析,得到原始測(cè)試函數(shù),并通過(guò)所述服務(wù)器將所述原始測(cè)試函數(shù)發(fā)送至所述測(cè)試儀器;
所述測(cè)試儀器從預(yù)存的測(cè)試庫(kù)中獲取所述原始測(cè)試函數(shù)與目標(biāo)測(cè)試函數(shù)之間的關(guān)鍵字之間的映射關(guān)系,根據(jù)所述映射關(guān)系將所述原始測(cè)試函數(shù)轉(zhuǎn)換為相應(yīng)的目標(biāo)測(cè)試函數(shù),并將所述目標(biāo)測(cè)試函數(shù)發(fā)送到所述接入網(wǎng)設(shè)備;其中,所述測(cè)試庫(kù)用于存儲(chǔ)各個(gè)測(cè)試函數(shù)的關(guān)鍵字及其相應(yīng)的映射關(guān)系;
所述接入網(wǎng)設(shè)備根據(jù)所述目標(biāo)測(cè)試函數(shù)執(zhí)行相應(yīng)的測(cè)試操作,根據(jù)所述測(cè)試操作的執(zhí)行結(jié)果生成測(cè)試日志,并將所述測(cè)試日志返回至所述客戶端。
上述接入網(wǎng)設(shè)備自動(dòng)化測(cè)試系統(tǒng),根據(jù)待測(cè)的接入網(wǎng)設(shè)備需要執(zhí)行的測(cè)試動(dòng)作調(diào)用服務(wù)器中的測(cè)試用例,并通過(guò)測(cè)試儀器將測(cè)試用例的原始測(cè)試函數(shù)轉(zhuǎn)換為目標(biāo)測(cè)試函數(shù)后發(fā)送到待測(cè)設(shè)備進(jìn)行自動(dòng)化測(cè)試,能夠支持不同測(cè)試腳本,另外,將測(cè)試腳本存儲(chǔ)在服務(wù)器中,任意一個(gè)客戶端需要執(zhí)行自動(dòng)化測(cè)試時(shí),只需從服務(wù)器調(diào)用相應(yīng)的測(cè)試腳本,便于腳本文件系統(tǒng)共享和復(fù)用。
附圖說(shuō)明
圖1為現(xiàn)有技術(shù)的運(yùn)行機(jī)制示意圖;
圖2為本發(fā)明的接入網(wǎng)設(shè)備自動(dòng)化測(cè)試系統(tǒng)的結(jié)構(gòu)示意圖;
圖3為Robot Framework自動(dòng)化測(cè)試平臺(tái)的示意圖;
圖4為一個(gè)實(shí)施例的測(cè)試流程圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明的接入網(wǎng)設(shè)備自動(dòng)化測(cè)試系統(tǒng)的實(shí)施例進(jìn)行說(shuō)明。
圖2為本發(fā)明的接入網(wǎng)設(shè)備自動(dòng)化測(cè)試系統(tǒng)的結(jié)構(gòu)示意圖。如圖2所示,所述接入網(wǎng)設(shè)備自動(dòng)化測(cè)試系統(tǒng)可包括:
客戶端10、服務(wù)器20和測(cè)試儀器30;
所述客戶端10通過(guò)服務(wù)器20與測(cè)試儀器30相連接,所述測(cè)試儀器30與待測(cè)的接入網(wǎng)設(shè)備40相連接;
所述服務(wù)器20在監(jiān)聽(tīng)到所述接入網(wǎng)設(shè)備40的連接請(qǐng)求之后,建立與所述接入網(wǎng)設(shè)備40的通信連接,通過(guò)所述通信連接獲取所述接入網(wǎng)設(shè)備40需要執(zhí)行的測(cè)試動(dòng)作,并將包含所述測(cè)試動(dòng)作的消息發(fā)送到客戶端10;
所述客戶端10根據(jù)所述消息中攜帶的測(cè)試動(dòng)作確定需要執(zhí)行的測(cè)試用例,將對(duì)所述測(cè)試用例的調(diào)用指令發(fā)送到所述服務(wù)器20,接收所述服務(wù)器20根據(jù)所述調(diào)用指令返回的封裝函數(shù),對(duì)所述封裝函數(shù)進(jìn)行解析,得到原始測(cè)試函數(shù),并通過(guò)所述服務(wù)器20將所述原始測(cè)試函數(shù)發(fā)送至所述測(cè)試儀器30;
所述測(cè)試儀器30從預(yù)存的測(cè)試庫(kù)中獲取所述原始測(cè)試函數(shù)與目標(biāo)測(cè)試函數(shù)之間的關(guān)鍵字之間的映射關(guān)系,根據(jù)所述映射關(guān)系將所述原始測(cè)試函數(shù)轉(zhuǎn)換為相應(yīng)的目標(biāo)測(cè)試函數(shù),并將所述目標(biāo)測(cè)試函數(shù)發(fā)送到所述接入網(wǎng)設(shè)備40;其中,所述測(cè)試庫(kù)用于存儲(chǔ)各個(gè)測(cè)試函數(shù)的關(guān)鍵字及其相應(yīng)的映射關(guān)系;
所述接入網(wǎng)設(shè)備40根據(jù)所述目標(biāo)測(cè)試函數(shù)執(zhí)行相應(yīng)的測(cè)試操作,根據(jù)所述測(cè)試操作的執(zhí)行結(jié)果生成測(cè)試日志,并將所述測(cè)試日志返回至所述客戶端10。
其中,所述客戶端10的數(shù)量可以是一個(gè)或多個(gè)。各個(gè)客戶端10可以分別對(duì)不同的待測(cè)接入網(wǎng)設(shè)備40進(jìn)行自動(dòng)化測(cè)試,從而提高測(cè)試效率。各個(gè)客戶端10可以采用不同的自動(dòng)化測(cè)試語(yǔ)言。例如,其中一臺(tái)客戶端10可以采用Java語(yǔ)言,另一臺(tái)客戶端10可以采用Python語(yǔ)言,等等。
所述服務(wù)器20中可以存儲(chǔ)各種不同語(yǔ)言的測(cè)試用例。所述測(cè)試用例可以存儲(chǔ)在本地腳本庫(kù)50中,也可以存儲(chǔ)在遠(yuǎn)程腳本庫(kù)60中。所述服務(wù)器可以直接調(diào)用本地腳本庫(kù)50中的腳本,也可以接入其他服務(wù)器70,調(diào)用其他服務(wù)器70的遠(yuǎn)程腳本庫(kù)60中的腳本。測(cè)試項(xiàng)目的測(cè)試腳本文件,可按標(biāo)準(zhǔn)在服務(wù)器20上建立統(tǒng)一存儲(chǔ)、管理和共享,多臺(tái)客戶端10可直接通過(guò)服務(wù)器20進(jìn)行調(diào)用,對(duì)相同測(cè)試應(yīng)用場(chǎng)景的可對(duì)測(cè)試腳本進(jìn)行較少的修改或復(fù)用測(cè)試,減少測(cè)試開(kāi)發(fā)時(shí)間。
所述測(cè)試儀器30(如IXIA設(shè)備)可以內(nèi)置基于通信協(xié)議開(kāi)發(fā)的測(cè)試庫(kù),所述測(cè)試庫(kù)是測(cè)試儀器進(jìn)行測(cè)試時(shí)須啟用的測(cè)試服務(wù)(如IXIA的TCL SERVICE),包含測(cè)試環(huán)境、測(cè)試套件、命令函數(shù)等。測(cè)試儀器30通常使用TCL腳本語(yǔ)言(現(xiàn)在也越來(lái)越多支持Python\Java),測(cè)試庫(kù)可以理解為一個(gè)定義了很多函數(shù)的集合,每種語(yǔ)言都有對(duì)應(yīng)的測(cè)試庫(kù)。
所述接入網(wǎng)設(shè)備40的數(shù)量可以是一個(gè)或多個(gè)。不同接入網(wǎng)設(shè)備40通過(guò)IP地址來(lái)區(qū)分。所述測(cè)試儀器30可以獲取接入網(wǎng)設(shè)備40的IP地址,將所述IP地址發(fā)送到所述服務(wù)器20,并接收所述服務(wù)器20發(fā)送的所述原始測(cè)試函數(shù),根據(jù)所述IP地址將所述原始測(cè)試函數(shù)發(fā)送至相應(yīng)的接入網(wǎng)設(shè)備40。各個(gè)接入網(wǎng)設(shè)備40可以通過(guò)物理交換機(jī)80與測(cè)試儀器30相連接。所述物理交換機(jī)80可以實(shí)現(xiàn)設(shè)備間的軟拓?fù)溥B接。即測(cè)試過(guò)程中接入網(wǎng)設(shè)備40的連接拓?fù)浒l(fā)生變更時(shí),無(wú)需改變物理實(shí)際接線,可以通過(guò)物理交換機(jī)80的軟件實(shí)現(xiàn)便捷的連接配置,從而實(shí)現(xiàn)接入網(wǎng)設(shè)備40間的軟拓?fù)溥B接。
在所述接入網(wǎng)設(shè)備40進(jìn)行自動(dòng)化測(cè)試之前,所述測(cè)試儀器30可以根據(jù)所述目標(biāo)測(cè)試函數(shù)對(duì)所述接入網(wǎng)設(shè)備40的端口參數(shù)進(jìn)行配置,并將所述端口參數(shù)發(fā)送到所述接入網(wǎng)設(shè)備40,其中,所述接入網(wǎng)設(shè)備根據(jù)所述目標(biāo)測(cè)試函數(shù)和所述端口參數(shù)執(zhí)行相應(yīng)的測(cè)試操作。例如,當(dāng)進(jìn)行端口吞吐量的測(cè)試時(shí),需要先配置產(chǎn)生的模擬流量、流控、相互可以ping通的端口、數(shù)據(jù)包的大小等參數(shù),配置完成無(wú)錯(cuò)誤后,才會(huì)開(kāi)始一系列的測(cè)試執(zhí)行。
為了提高測(cè)試效率,在通過(guò)所述服務(wù)器20將所述原始測(cè)試函數(shù)發(fā)送至所述測(cè)試儀器30之前,可以在所述測(cè)試用例中設(shè)置斷點(diǎn)。設(shè)置斷點(diǎn)通常有兩種方式實(shí)現(xiàn),一種是直接在測(cè)試腳本中進(jìn)行編寫(xiě),一種是在測(cè)試動(dòng)作執(zhí)行中設(shè)置遇到錯(cuò)誤就暫停。
為了確保測(cè)試用例的正確性,所述客戶端10在獲取到測(cè)試用例之后,可以模擬測(cè)試用例“執(zhí)行步驟”的要求,在待測(cè)試系統(tǒng)上進(jìn)行操作。即所述客戶端10根據(jù)所述原始測(cè)試函數(shù)執(zhí)行相應(yīng)的測(cè)試操作,并根據(jù)所述測(cè)試操作的執(zhí)行結(jié)果對(duì)所述原始測(cè)試函數(shù)進(jìn)行校驗(yàn)。
在將對(duì)所述測(cè)試用例的調(diào)用指令發(fā)送到所述服務(wù)器20之前,所述客戶端10還可以對(duì)所述測(cè)試用例進(jìn)行數(shù)據(jù)標(biāo)準(zhǔn)化處理。
本發(fā)明的自動(dòng)化測(cè)試可以基于Robot Framework自動(dòng)化測(cè)試平臺(tái)。Robot Framework自動(dòng)化測(cè)試平臺(tái)的架構(gòu)如圖3所示。其中,被測(cè)DUT表示正在進(jìn)行測(cè)試的接入網(wǎng)設(shè)備,其數(shù)量可以是一個(gè),也可以是多個(gè)。測(cè)試儀器與被測(cè)DUT可通過(guò)以太網(wǎng)Ethernet相連接。測(cè)試儀器的測(cè)試庫(kù)中可根據(jù)預(yù)先定義的通信協(xié)議封裝測(cè)試所需的函數(shù),包括支撐層封裝函數(shù)、服務(wù)層封裝函數(shù)、業(yè)務(wù)層封裝函數(shù)。由于Robot Framework并未提供完善的基于協(xié)議開(kāi)發(fā)的特定測(cè)試庫(kù),上述封裝函數(shù)可以對(duì)Robot Framework平臺(tái)的功能進(jìn)行擴(kuò)展。測(cè)試儀器可通過(guò)服務(wù)器連接到客戶端??蛻舳丝梢韵蛴脩粽故疽粋€(gè)面向用戶的Robot Framework執(zhí)行引擎,接收用戶自定義的腳本,并根據(jù)需要從所述支撐層封裝函數(shù)、服務(wù)層封裝函數(shù)或業(yè)務(wù)層封裝函數(shù)中調(diào)用相應(yīng)的腳本進(jìn)行語(yǔ)言轉(zhuǎn)換。測(cè)試結(jié)果(包括測(cè)試報(bào)告和測(cè)試日志等)可以通過(guò)上述Robot Framework執(zhí)行引擎展示給用戶。
上述基于Robot Framework框架的自動(dòng)化測(cè)試系統(tǒng),除了支持自身測(cè)試用例的自主開(kāi)發(fā)(支持腳本語(yǔ)言Python/Java),同時(shí)能夠?qū)W(wǎng)絡(luò)測(cè)試儀表(支持TCL、Perl和Python等)進(jìn)行集成,在讀取不同自動(dòng)化腳本語(yǔ)言的時(shí)候啟用相應(yīng)的測(cè)試服務(wù)及測(cè)試庫(kù),對(duì)測(cè)試用例進(jìn)行解析。
下面結(jié)合圖4對(duì)本發(fā)明的接入網(wǎng)設(shè)備自動(dòng)化測(cè)試系統(tǒng)的測(cè)試過(guò)程的一個(gè)實(shí)施例進(jìn)行說(shuō)明。自動(dòng)化測(cè)試系統(tǒng)處理流程如下所示:
(1)測(cè)試準(zhǔn)備:包括測(cè)試用例和測(cè)試數(shù)據(jù)準(zhǔn)備測(cè)試人員編寫(xiě)好測(cè)試用例(包括環(huán)境配置信息與測(cè)試數(shù)據(jù)處理說(shuō)明),把準(zhǔn)備好的測(cè)試用例和測(cè)試數(shù)據(jù)存放到指定的目錄。
(2)測(cè)試環(huán)境搭建:自動(dòng)化測(cè)試系統(tǒng)根據(jù)環(huán)境配置信息,進(jìn)行環(huán)境搭建,包括環(huán)境變量設(shè)置,清理輸入目錄、輸出目錄和相關(guān)表數(shù)據(jù)等操作。啟動(dòng)RIDE將根據(jù)項(xiàng)目開(kāi)始配置,自動(dòng)進(jìn)行環(huán)境搭建。
(3)測(cè)試用例解析:進(jìn)行測(cè)試用例信息讀取、解析。
(4)測(cè)試數(shù)據(jù)處理:自動(dòng)化測(cè)試系統(tǒng)根據(jù)測(cè)試用例中對(duì)測(cè)試數(shù)據(jù)的要求,進(jìn)行測(cè)試用例數(shù)據(jù)的規(guī)范化處理。
(5)測(cè)試執(zhí)行:測(cè)試數(shù)據(jù)處理完成之后,自動(dòng)化測(cè)試系統(tǒng)模擬測(cè)試用例“執(zhí)行步驟”的要求,在待測(cè)試系統(tǒng)上進(jìn)行操作。
(6)測(cè)試結(jié)果分析:根據(jù)測(cè)試用例中設(shè)置的斷點(diǎn),如“日志內(nèi)容”等,對(duì)數(shù)據(jù)表、日志文件進(jìn)行分析,判斷該條測(cè)試用例是否執(zhí)行通過(guò)。如果不通過(guò),則捕獲失敗的原因。
(7)測(cè)試結(jié)果記錄:將分析結(jié)果填到測(cè)試用例表,如果測(cè)試不通過(guò),記錄“失敗原因”分析結(jié)果。
(8)結(jié)束判斷:如果本次執(zhí)行的是最后一條用例,則循環(huán)結(jié)束;否則繼續(xù)步驟(3)~步驟(8)。
(9)日志獲取和分析:自動(dòng)化測(cè)試系統(tǒng)處理的整個(gè)過(guò)程中,都會(huì)進(jìn)行日志分析,主要功能為日志提取與展示、操作截屏、錯(cuò)誤告警等。
本發(fā)明的接入網(wǎng)設(shè)備自動(dòng)化測(cè)試系統(tǒng)具有以下優(yōu)點(diǎn):
(1)可以同時(shí)支持不同的腳本語(yǔ)言實(shí)現(xiàn)的測(cè)試腳本,減少了自動(dòng)化測(cè)試腳本的開(kāi)發(fā)成本,提高了測(cè)試效率。
(2)將測(cè)試腳本存儲(chǔ)在服務(wù)器中,任意一個(gè)客戶端需要執(zhí)行自動(dòng)化測(cè)試時(shí),只需從服務(wù)器調(diào)用相應(yīng)的測(cè)試腳本,便于腳本文件系統(tǒng)共享和復(fù)用。
(3)支持軟拓?fù)洌軌驅(qū)崿F(xiàn)便捷的連接配置。
(4)斷點(diǎn)測(cè)試,便于發(fā)現(xiàn)測(cè)試過(guò)程中的錯(cuò)誤,進(jìn)一步提高了測(cè)試效率,同時(shí)也方便查找錯(cuò)誤發(fā)生的位置。
(5)面向?qū)ο蟮募軜?gòu),支持用戶自定義的腳本,降低了測(cè)試難度,便于非專業(yè)測(cè)試人員進(jìn)行操作。
以上所述實(shí)施例的各技術(shù)特征可以進(jìn)行任意的組合,為使描述簡(jiǎn)潔,未對(duì)上述實(shí)施例中的各個(gè)技術(shù)特征所有可能的組合都進(jìn)行描述,然而,只要這些技術(shù)特征的組合不存在矛盾,都應(yīng)當(dāng)認(rèn)為是本說(shuō)明書(shū)記載的范圍。
以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對(duì)發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。