


摘 要:在計算機通信技術飛速發展的時代,計算機網絡變得越來越重要。網絡間實現信息共享和交換,主要是依靠網絡協議,因此網絡協議是各種網絡類設備及系統級軟件產品的重要組成部分。協議測試也是產品測試的重點。當前協議測試主要覆蓋協議一致性測試,測試方法多采用靜態解析的方式進行。這種測試方法存在協議異常分支難以覆蓋,測試自動化程度低,且測試方法和測試工具都難以滿足通用性,可移植性要求的問題。本文提供一種基于XML的協議動態測試工具設計方法,目的在于解決協議的動態測試自動化需求,該工具可完整覆蓋協議一致性測試,協議級別的性能測試,具有測試用例易于維護,自動化程度高的優點,可有效提高測試質量和效率。
關鍵詞:XML;協議測試;性能測試;通用性;擴展性
中圖分類號:TN39 文獻標識碼:A DOI:10.3969/j.issn.1003-6970.2021.02.033
本文著錄格式:何舒.基于XML的協議動態測試工具設計[J].軟件,2021,42(02):108-111
Research on Dynamic Protocol Testing Method Based on XML
HE Shu
(The 30th Research Institute of China Electronics Technology Group Corporation, Chengdu? Sichuan? 610041)
【Abstract】:With the rapid development of computer communication technology, computer network becomes more and more important. The realization of information sharing and exchange between networks mainly depends on network protocol, so network protocol is an important part of various network devices and system level software products. Protocol testing is also the focus of product testing. At present, protocol testing mainly covers protocol conformance testing, and most of the testing methods are static analysis. This test method has the problems of protocol exception branch, which is difficult to cover, low degree of test automation, and test methods and tools are difficult to meet the requirements of generality and portability. This paper provides a design method of protocol dynamic testing tool based on XML, which aims to solve the requirement of protocol dynamic testing automation. The tool can completely cover protocol conformance testing and protocol level performance testing. It has the advantage of easy maintenance of test cases and high degree of automation, and can effectively improve the quality and efficiency of testing.
【Key words】:XML;protocol testing;performance testing;scalability
0引言
當今時代,各種網絡通信設備以及系統級別的大型軟件產品通過網絡通信協議與外界交互。協議的穩定性是產品穩定的基礎,因此協議測試是產品測試的重點之一。當今部分產品由于其本身使用場景的特性導致其通信協議不是常見的通用協議,而是根據產品需要設計的自定義協議。這類產品往往由于種類繁多,版本迭代快,導致協議測試的工作量較大,通過手工測試的方式難以滿足測試效率和質量的要求。被測協議的不確定性對協議測試工具也提出了更高的要求,即需要滿足通用性和可擴展性的要求。本文在充分了解設備通信協議格式特點的基礎上,結合XML文件跨平臺適用性及擴展性好的優點提出了基于XML的協議動態測試工具設計方法[1]。
1協議動態測試概述
當前協議測試主要包含協議一致性測試,協議級別的性能測試等。其中,協議一致性測試是指,根據協議設計文檔的描述,確認協議的設計及實現與文檔描述的一致性。測試方法可分為靜態測試和動態測試兩種。
(1)靜態測試方法:通過在網絡上抓包獲取協議交互的完整數據包,再根據協議文檔的描述手動比對各個協議字段與預期結果是否一致,或通過定義協議模板,調用傳統的協議靜態解析工具進行自動比對,從而確認協議實現一致性的方法。該方法可以覆蓋協議正常分支,但協議異常分支需要手動構造異常數據包來實現。該方法的局限性在于,部分協議分支由于數據構造困難無法覆蓋,測試過程大部分依靠手工操作,測試效率低,且測試質量難以保證。
(2)動態測試方法:通過模擬與被測設備進行協議交互的過程,完整覆蓋協議的所有正常和異常分支。與靜態測試的區別在于,靜態測試不需要運行程序,而動態測試是需要工具模擬與被測設備交互的對象,與被測設備進行真實的協議交互,協議交互的數據均與真實數據一致。其優點在于,完整覆蓋協議的正常和異常分支,相比靜態測試,測試結果更接近真實,更準確可靠,測試覆蓋度更高。
協議級別的性能測試則是指通過模擬與被測設備的真實協議交互過程,對被測設備進行并發測試,性能指標測試,穩定性測試等。
2協議動態測試工具設計原理
協議動態測試工具的設計原理是,定義一種XML格式的協議模板描述語言,該語言通過XML文件可以將協議交互過程的數據及操作信息表示出來。測試人員根據協議描述文檔以及協議模板編寫的語法,編寫被測協議模板。工具通過對XML協議模板的解析,獲取協議交互的過程信息及默認數據信息,動態組裝數據包并發送給被測設備,被測設備按照正常協議流程回復響應包后,工具接收并根據協議模板定義解析響應包,對解析數據進行正確性斷言并實時做出符合協議描述的響應(如:繼續組裝另一個協議數據包并發送),如此循環,直到完成協議交互的全過程[2]。
3工具架構
協議動態測試工具的總體架構圖如圖1所示。外部測試驅動程序模擬真實設備與被測設備或軟件進行協議交互。協議數據包通過由測試驅動程序調用協議動態測試工具提供的對外接口完成協議動態組包和靜態解析操作,輸出協議交互的數據包。其中組包和解析所需的各種數據信息是通過讀取各種外部數據,并調用外部函數庫進行運算得到的。關于各個組成部分的說明如下:
3.1協議動態組包工具的核心模塊
(1)動態組包模塊:讀取協議模板和用例數據,調用外部函數庫進行相關運算得到組裝的協議數據包。
(2)解析模塊:讀取協議模板和用例數據,調用外部函數庫進行運算,得到協議數據的實際值與預期值,并對其進行一致性斷言。
(3)報文收發模塊:主要包括TCP和UDP兩種常見網絡協議的發送和接收,后續可根據需要擴展其他類型網絡協議。
(4)外部函數處理:該模塊起一個中間件的作用,用于屏蔽外部函數中部分不必要的參數,實現協議模板中定義的函數的動態調用。
(5)對外接口封裝:協議動態測試工具以動態鏈接庫的形式提供一系列簡單有效的接口供外部測試驅動程序調用。可根據測試需要選擇功能測試自動化框架或性能測試工具(如LoadRunner)作為測試驅動程序。對外接口也可根據實際需要擴展。
(6)日志報表處理:將工具運行產生的兩類日志輸出到測試驅動程序或日志文件。其中,運行流程日志通過接口輸出給測試驅動程序,由上層程序調用自身的日志模塊進行打印輸出,協議組包和解析的字段數據值則通過生成XML格式的協議交互數據文件輸出給測試人員查看。
(7)配置信息管理:各種運行時配置信息通過XML格式的配置文件定義,工具通過解析配置文件獲取相關配置信息。
3.2外部輸入數據
(1)測試用例:以Excel文件形式存在。每個用例為Excel中的一行數據,通過工具接口的調用進行協議業務流程的定義,同時指定該條用例的預期結果等。
(2)協議模板:以XML文件形式存在。協議模板的語法定義參見4.1章節所述。
(3)配置信息:以XML文件形式存在。包含配置項名-配置項值的鍵值對。
(4)預準備數據:部分需要從文件中讀取的輸入數據。工具會在測試執行初期將其一并讀入,減少文件的反復讀取,提高執行性能。
(5)性能測試腳本:需要通過性能測試工具Load
Runner作為測試驅動程序進行性能測試時,通過Load
Runner腳本定義協議的業務交互流程,用例僅包含需要修改的協議字段信息。
3.3測試驅動程序
(1)功能測試驅動程序:本工具使用自研的功能自動化測試框架作為功能測試驅動程序。也可選擇其他測試框架,工具通過動態鏈接庫的方式提供接口給測試驅動程序,測試驅動程序自定義業務流程,調用工具接口進行組包,解析和報文收發,完成協議交互過程。
(2)性能測試驅動程序:本工具選用通用性能測試工具LoadRunner作為性能測試驅動程序。通過Load
Runner腳本調用工具接口進行協議流程定義。再通過LoadRunner多線程或多進程運行腳本實現協議級別的性能測試,包括并發測試,壓力測試和穩定性測試等。
3.4外部函數庫
(1)基礎函數庫:包含通用協議運算所需的基礎函數,如:字符串拼接,異或運算,base64編碼等,可根據需要不斷擴展。
(2)業務函數庫:工具模擬真實設備,有可能涉及部分業務相關的處理或運算,所有這些操作需要定義成業務函數,在協議模板中定義,工具才能正常執行相關操作。該函數庫可按不同產品進行管理擴充。
4關鍵技術實現
4.1 XML協議模板設計
XML協議模板的設計關系到協議流程描述是否能被工具有效識別。因此,協議模板的設計是協議動態測試工具的關鍵。設計總原則為既能描述各種協議復雜的流程,動作,數據依賴關系,又不能晦澀難懂,冗余。設計的關鍵點如下[3]:
(1)一個XML協議模板定義一個完整協議交互的所有數據包字段格式及字段產生方式。
(2)針對每個數據包,分別對應一套組包模板和解析模板,兩個模板的字段名一致,內容定義各不相同,組包模板用于定義數據的產生方式,解析模板用于給出字段的預期值及實際值的獲取方式,以便對解析結果斷言。
(3)通過定義不同的XML關鍵字,描述協議交互過程的各種關鍵動作或要素。
(4)單個字段或區域實體,通過定義其不同屬性,指明數據產生方式等;常用屬性如表1所示。
(5)定義多個“區域”關鍵字,用于描述不同的協議交互場景中對數據的不同處理,如表2所示。
4.2接口設計
接口設計遵循簡單,通用的原則,提供以下接口給外部驅動程序調用,如表3所示。
5結語
通過協議動態測試工具提供的接口進行業務流程組裝,可以靈活地自定義協議交互過程;通過不同的測試驅動程序調用工具的接口,可以進行功能測試和性能測試等不同類型的協議測試;通過自定義協議模板,可以靈活適配各種被測協議;通過函數庫擴展,可進行常用的基礎運算以及根據不同業務定制業務處理函數;通過編寫用例文件,可高效執行并維護測試用例,提高測試的效率和質量。更多的用法有待擴充,但都需要解決工具與外部程序的接口銜接等問題。
參考文獻
[1] 葛澤文.基于自定義通信協議的動態測試技術研究[J].數字技術與應用,2019(9):90-92.
[2] 嚴軍.基于XML的智能設備協議測試方法的研究[J].工業控制計算機,2019(8):55-57.
[3] 吳建平,尹霞.基于形式化方法的協議測試理論[J].清華大學學報:自然科學版,2001(4):203-208.