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