張 珂,馬 楠
(北京郵電大學(xué) 網(wǎng)絡(luò)與交換國家重點實驗室,北京 100876)
基于S2SH框架的終端測試平臺的研究與實現(xiàn)
張珂,馬楠
(北京郵電大學(xué) 網(wǎng)絡(luò)與交換國家重點實驗室,北京100876)
針對目前終端測試領(lǐng)域中測試成本高,測試儀表群管理復(fù)雜等問題,在原有終端測試方法的基礎(chǔ)上,研究并實現(xiàn)了一個基于Struts2+Spring+Hibernate(S2SH)框架的終端測試平臺。該平臺各模塊解耦分層實現(xiàn),具有良好可擴(kuò)展性和可維護(hù)性。新的測試平臺滿足了用戶遠(yuǎn)程控制儀表自動化執(zhí)行測試任務(wù)的需求,并通過設(shè)計集成工具實現(xiàn)了對測試儀表群的集群管理。同時也提高了用戶測試效率,降低了測試成本,使終端測試更加集約化、規(guī)范化,具有很高的應(yīng)用價值。
S2SH;終端測試平臺;Struts2;Spring;Hibernate
本文著錄格式:張珂,馬楠,等. 基于S2SH框架的終端測試平臺的研究與實現(xiàn)[J]. 軟件,2016,37(8):74-80
從2G[1]、3G到LTE長期演進(jìn)及4G技術(shù)[2],新的移動通信技術(shù)標(biāo)準(zhǔn)不斷出現(xiàn),終端測試種類和制式越來越多,通常同類測試還需要在多家儀表進(jìn)行驗證,才能確保終端的兼容性和可靠性[3]。這都需要購買大量的測試系統(tǒng),并配備大量的測試人員,對測試系統(tǒng)群的管理也非常的繁瑣復(fù)雜。因此,當(dāng)前終端測試主要集中于運營商、認(rèn)證機構(gòu)、芯片廠商、以及大型終端廠商[4]。然而市場上的眾多小型終端商、Design House也存在大量的測試需求,但由于測試儀表價格昂貴、技術(shù)門檻高,很多廠商沒有實力購買測試儀表對終端進(jìn)行全面測試,導(dǎo)致交付認(rèn)證機構(gòu)、運營商進(jìn)行入網(wǎng)入庫測試驗證時,花費大、效率低,而且存在巨大風(fēng)險。針對傳統(tǒng)終端測試方案固有的成本及效率問題,本文提出了基于S2SH框架的新型終端測試平臺的解決方案。
1.1需求分析
本文設(shè)計與實現(xiàn)的終端測試平臺的目的是為了改善傳統(tǒng)終端測試方案中固有的成本及效率問題。測試平臺需支持用戶使用任意一臺聯(lián)網(wǎng)的PC在網(wǎng)
1.2平臺架構(gòu)
基于S2SH框架的終端測試平臺的結(jié)構(gòu)組成(如圖1所示)包括:客戶端、服務(wù)器群、集成工具三個部分,終端測試儀表可通過網(wǎng)絡(luò)經(jīng)由集成工具連接到測試平臺中。系統(tǒng)可同時支持多個用戶在線查詢、下單以及查看測試結(jié)果。
圖1 測試平臺系統(tǒng)構(gòu)成Fig.1 System Structure of Testing Platform
表1 測試平臺子系統(tǒng)概述
1.3平臺功能設(shè)計
根據(jù)終端測試平臺的功能需求,平臺劃分為四個功能模塊:系統(tǒng)配置及初始化,用戶管理,測試儀表管理和測試任務(wù)管理。系統(tǒng)功能結(jié)構(gòu)如圖2所示。1.3.1平臺功能模塊概述
系統(tǒng)配置及初始化:
(1)用戶組信息配置。管理員通過網(wǎng)頁客戶端,使用Root賬號登陸系統(tǒng),進(jìn)行用戶組信息配置。
(2)集成工具配置。通過集成工具配置界面進(jìn)行與服務(wù)器連接的配置。
(3)系統(tǒng)初始化。系統(tǒng)通過初始化進(jìn)入工作狀態(tài)。
用戶管理:
(1)用戶注冊。新用戶通過主頁注冊。
(2)用戶信息修改。已登錄用戶修改注冊時錄入的用戶信息。
(3)用戶登錄、退出、注銷。用戶通過瀏覽器訪問云測試平臺主頁進(jìn)行登錄操作,已登錄用戶在菜單欄選擇退出及注銷操作。
測試儀表管理
(1)配置測試儀表信息。用戶在測試儀表使用前,將測試儀表IP、功能列表、所屬集成工具IP等信息配置到數(shù)據(jù)庫。
(2)顯示測試儀表狀態(tài)。用戶通過頁面編輯測試儀表狀態(tài),頁面上顯示測試儀表當(dāng)前狀態(tài),包括儀表故障、已分配測試任務(wù)、未分配測試任務(wù)三種狀態(tài)。
測試任務(wù)管理
(1)創(chuàng)建、刪除、修改測試任務(wù)。已登錄用戶可以創(chuàng)建測試任務(wù),在頁面上刪除該用戶所屬的測試任務(wù)以及修改該用戶未執(zhí)行的測試任務(wù)信息。
圖2 測試平臺功能模塊Fig.2 Function Module of Testing Platform
(2)執(zhí)行、停止測試任務(wù)。用戶通過網(wǎng)頁將測試任務(wù)分配至測試儀表,控制測試任務(wù)執(zhí)行和停止。
(3)查看測試任務(wù)狀況。已登錄用戶根據(jù)權(quán)限查看所屬用戶組的測試任務(wù)情況。
(4)下載測試報告。已登錄用戶,選擇查看指定測試任務(wù)的測試報告,在測試報告頁面,選擇將測試報告另存為文件保存到本地。
(5)數(shù)據(jù)庫日志。服務(wù)器將對數(shù)據(jù)庫的指定操作記錄在數(shù)據(jù)庫日志中,包括用戶登錄相關(guān)信息和數(shù)據(jù)庫內(nèi)容修改的相關(guān)信息。
1.3.2業(yè)務(wù)流程設(shè)計
本文所述終端測試系統(tǒng)支持用戶在線完成下達(dá)測試訂單,執(zhí)行測試任務(wù),反饋測試結(jié)果一系列步驟,因此,合理的業(yè)務(wù)流程設(shè)計是實現(xiàn)整個測試平臺功能的關(guān)鍵。
根據(jù)系統(tǒng)構(gòu)成和功能要求,第一步系統(tǒng)初始化工作包括:對整個測試系統(tǒng)的軟硬件環(huán)境進(jìn)行配置,包括對數(shù)據(jù)庫、Web服務(wù)器、集成工具和測試儀表的配置;用戶在測試平臺進(jìn)行注冊;分配用戶權(quán)限,管理員具有最高root權(quán)限,管理所有普通注冊用戶,普通用戶在自己的權(quán)限范圍內(nèi)進(jìn)行在線終端測試[5]。
第二步,測試人員在測試平臺主頁填寫用戶名、密碼登錄系統(tǒng)創(chuàng)建測試任務(wù)。用戶正確填寫測試任務(wù)信息并提交后,測試訂單將更新至數(shù)據(jù)庫,服務(wù)器返回測試任務(wù)已提交,同時客戶端顯示排在該測試任務(wù)之前的任務(wù)信息。
第三步,用戶連接好待測終端后,在Web客戶端選擇配置測試儀表信息,瀏覽器將返回對應(yīng)配置頁面。用戶在該頁面編輯測試儀表信息,包括支持的band、上位機IP、所屬的集成工具ID、測試儀表類型、支持的功能列表(功能列表通過上傳文件的方式實現(xiàn))等信息,編輯完畢后提交,服務(wù)器將收到的儀表信息寫入到數(shù)據(jù)庫中并反饋儀表信息配置結(jié)果。若儀表信息配置成功,則提交測試任務(wù)執(zhí)行訂單。
第四步,用戶通過網(wǎng)頁將測試任務(wù)分配至測試儀表,控制測試任務(wù)執(zhí)行。(如圖3所示)
圖3 測試任務(wù)執(zhí)行時序圖Fig.3 Testing Task Execution Timing Diagram
1)被測終端連接完畢且參數(shù)表本地調(diào)試正常后,用戶通過網(wǎng)頁控制測試任務(wù)執(zhí)行,瀏覽器將執(zhí)行測試任務(wù)的命令發(fā)送至Web服務(wù)器;
2)Web服務(wù)器收到執(zhí)行測試任務(wù)命令,查詢數(shù)據(jù)庫獲得該測試任務(wù)的信息;
3)Web服務(wù)器根據(jù)測試任務(wù)中指定測試儀表信息,查詢該測試儀表所屬的集成工具IP,將測試任務(wù)分配至該集成工具,同時將該測試儀表在數(shù)據(jù)庫中的狀態(tài)標(biāo)識為“占用”,修改該測試任務(wù)的狀態(tài)標(biāo)識為“正在執(zhí)行”;
4)集成工具收到Web服務(wù)器執(zhí)行測試任務(wù)的命令,根據(jù)其中包含的指定儀表的IP信息,將測試任務(wù)發(fā)送給core程序,core程序解析測試任務(wù),并根據(jù)測試任務(wù)內(nèi)容控制測試儀表執(zhí)行測試?yán)?/p>
5)測試?yán)龍?zhí)行后,測試儀表將結(jié)果反饋給集成工具core程序;
6)集成工具將測試結(jié)果發(fā)送至服務(wù)器;
7)服務(wù)器將測試結(jié)果寫入數(shù)據(jù)庫,并根據(jù)情況更新測試任務(wù)狀態(tài)(是否已完成)。
第五步,用戶通過網(wǎng)頁在線查看測試結(jié)果。已登錄用戶查看指定測試任務(wù)的測試報告,瀏覽器將測試報告查看請求發(fā)送至Web服務(wù)器;Web服務(wù)器查詢數(shù)據(jù)庫中該測試任務(wù)的測試報告信息;Web服務(wù)器將測試報告頁面返回給瀏覽器;用戶選擇將測試報告另存到本地。
1.3.3設(shè)計集成工具管理測試儀表群
傳統(tǒng)的終端測試方式,需要測試人員逐一操作每臺儀表的TsManager主控軟件運行測試任務(wù),本文所述終端測試系統(tǒng)設(shè)計集成工具來連接Web服務(wù)器與測試儀表,由集成工具負(fù)責(zé)分配測試任務(wù),管理測試儀表群。集成工具是實現(xiàn)終端測試人機分離的重要組成部分。
從Web服務(wù)器端觀察,集成工具就是執(zhí)行測試任務(wù)的工廠[6]。用戶遠(yuǎn)程下訂單運行測試任務(wù)時,集成工具根據(jù)訂單號查詢數(shù)據(jù)庫,解析測試任務(wù)信息,然后將測試任務(wù)推送至相應(yīng)測試儀表的主控軟件執(zhí)行訂單。測試任務(wù)運行結(jié)束后,集成工具反饋測試任務(wù)的執(zhí)行結(jié)果到Web服務(wù)器,并轉(zhuǎn)儲儀表運行測試?yán)腖og文件到文件服務(wù)器。
通過設(shè)計集成工具管理測試儀表群,Web服務(wù)器端執(zhí)行測試任務(wù)時不必對每臺測試儀表建立socket連接而只需要連接集成工具,極大減輕了Web服務(wù)器的工作壓力,也實現(xiàn)了Web服務(wù)器端與單臺測試儀表的解耦,減少了Web服務(wù)器端的復(fù)雜度,為測試平臺的系統(tǒng)結(jié)構(gòu)提供了靈活的動態(tài)擴(kuò)展機制,方便維護(hù)。
2.1客戶端及Web服務(wù)器的實現(xiàn)
客戶端及服務(wù)器群(如圖4所示)是測試平臺的核心組成部分??蛻舳素?fù)責(zé)提交用戶數(shù)據(jù)和返回處理結(jié)果,Web服務(wù)器實現(xiàn)了所有業(yè)務(wù)邏輯并與數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交互。該部分的實現(xiàn)基于MVC模式的Struts2+Spring+Hibernate(S2SH)框架,其中Spring居于核心地位向上向下分別整合Struts2和Hibernate,是生成和管理所有業(yè)務(wù)邏輯和DAO組件的工廠,Struts2負(fù)責(zé)攔截轉(zhuǎn)發(fā)用戶請求,Hibernate提供了面向?qū)ο蟮姆绞絹聿僮鲾?shù)據(jù)庫。
圖4 客戶端及服務(wù)器群結(jié)構(gòu)Fig.4 Client and Server Group Structure
2.1.1Web層的關(guān)鍵技術(shù)實現(xiàn)
Web層包括視圖層以及控制器層。視圖層由JSP頁面加Struts2標(biāo)簽實現(xiàn),主要負(fù)責(zé)收集用戶數(shù)據(jù)以及業(yè)務(wù)數(shù)據(jù)的顯示;控制器層使用MVC框架技術(shù),由Struts2的Action攔截用戶請求,并根據(jù)處理結(jié)果返回對應(yīng)視圖給表現(xiàn)層,負(fù)責(zé)用戶請求和業(yè)務(wù)邏輯組件的信息交互[7]。
要啟動Struts2,首先需要在Web.xml里配置Struts2的核心攔截器來攔截所有的用戶請求。
Struts2的核心Filter啟動后,StrutsPrepare-AndExecuteFilter就會攔截用戶請求調(diào)用相應(yīng)的Action來處理。但是系統(tǒng)的所有業(yè)務(wù)邏輯組件需要由Spring負(fù)責(zé)管理,Struts2只是連接用戶請求與業(yè)務(wù)邏輯方法的紐帶,所以還要在Web.xml中使用
2.1.2業(yè)務(wù)層的關(guān)鍵技術(shù)實現(xiàn)
測試平臺的業(yè)務(wù)層包括業(yè)務(wù)邏輯層和DAO層,使用Spring框架,采用面向接口編程。首先在與Web層的對接上,Spring會托管Struts2的Action,實現(xiàn)方式已經(jīng)在上文中有所交代。其次,業(yè)務(wù)邏輯層定義了大量的業(yè)務(wù)方法,主要目的是實現(xiàn)測試平臺的業(yè)務(wù)需求,而在持久層之上,配置DAO組件作為連接業(yè)務(wù)層和持久層的橋梁。DAO組件也采用面向接口的編程方式,基本的CRUD操作可以抽象出來由BaseDAO接口實現(xiàn)[8]。其他DAO組件均繼承BaseDAO接口,并根據(jù)需求訂制自身的操作函數(shù)。
完成業(yè)務(wù)邏輯邏輯方法后還需對其添加事務(wù)管理。在Spring中選擇使用更方便的聲明式事務(wù)管理。
為了避免因配置文件過大而降低可讀性,可以將配置文件拆分為applicationContext-beans.xml和applicationContext-config.xml進(jìn)行對應(yīng)配置。
2.1.3持久層的關(guān)鍵技術(shù)實現(xiàn)
在持久層的實現(xiàn)上,利用Hibernate提供的O/R Mapping支持,設(shè)計持久化實體,使用面向?qū)ο蟮姆绞酱鎮(zhèn)鹘y(tǒng)的JDBC方法操作數(shù)據(jù)庫[9]。每一個持久化類對應(yīng)一張數(shù)據(jù)表,設(shè)計持久化類時只需要提供標(biāo)識該實例的標(biāo)識屬性(對應(yīng)數(shù)據(jù)表中的主鍵)并添加成員變量的get和set方法支持,而不應(yīng)包含業(yè)務(wù)邏輯方法,不同持久化對象之間的關(guān)聯(lián)通過成員變量表現(xiàn)出來。根據(jù)業(yè)務(wù)需求,本文采用貧血模式設(shè)計了13個持久化類,這些持久化類可以分為用戶信息相關(guān)類和測試任務(wù)相關(guān)類兩種。
用戶信息相關(guān)類包含了登錄到測試平臺的用戶的信息,由對應(yīng)用戶信息表的User類、對應(yīng)用戶組信息的Usergroup類和標(biāo)明用戶與用戶組之間的關(guān)系的UserRelationship類組成。測試任務(wù)相關(guān)類則封裝了與測試任務(wù)的創(chuàng)建、執(zhí)行及運行結(jié)果相關(guān)的屬性信息。測試任務(wù)相關(guān)類主要持久化類如下所示。
Tester:測試系統(tǒng)信息表,對應(yīng)測試系統(tǒng)配置信息,包括系統(tǒng)接入時間、儀表制造商、系統(tǒng)對外IP、功能列表最近更新時間等。
Tool:對應(yīng)集成工具表,包括集成工具IP地址、狀態(tài)、模式、配置更新時間等信息。
Task:對應(yīng)測試任務(wù)表,描述了測試任務(wù)的測試類型,被測終端型號以及測試任務(wù)的狀態(tài)標(biāo)識。并通過UserId和UsergroupId與用戶信息建立連接。
TestCase:對應(yīng)測試?yán)?,包括測試?yán)_始執(zhí)行時間、完成時間、測試結(jié)果、循環(huán)次數(shù)、協(xié)議編號及Band號信息。
而持久層的變化主要由DAO組件負(fù)責(zé)。在業(yè)務(wù)邏輯的方法中,只需要保留DAO組件的接口對象,在配置文件中配置依賴注入,由Spring容器負(fù)責(zé)實例化對象對持久層進(jìn)行操作[10]。這樣就實現(xiàn)了業(yè)務(wù)邏輯與數(shù)據(jù)訪問邏輯相互分離。
圖5 集成工具流程圖Fig.5 Integrated Tool Flow Chart
2.2集成工具的實現(xiàn)
集成工具模塊運行流程如圖5所示首先進(jìn)行模塊初始化,包括連接數(shù)據(jù)庫,以及啟動socket服務(wù),監(jiān)聽作為socket客戶端的Web服務(wù)器發(fā)來的訂單執(zhí)行請求。接收到訂單執(zhí)行請求后,集成工具根據(jù)訂單ID查詢數(shù)據(jù)庫獲取訂單全部信息,然后與指定測試儀表建立socket連接,把測試?yán)啃畔鬏斨翜y試儀表并控制其執(zhí)行測試?yán)y試儀表執(zhí)行測試?yán)戤吅?,集成工具將更新測試任務(wù)的數(shù)據(jù)庫信息,把測試?yán)\行產(chǎn)生的Log文件轉(zhuǎn)儲至文件服務(wù)器,以支持用戶在線下載測試Log。最后通過socket通知Web服務(wù)器測試任務(wù)執(zhí)行完成。
當(dāng)前的終端測試方案不能滿足市場上急劇增長的終端測試需求,因此本文設(shè)計并實現(xiàn)了一個新的終端測試平臺。一方面,使用終端測試平臺可以大幅度節(jié)約因購置大量測試儀表所需的巨額成本,另一方面,本平臺實現(xiàn)了終端測試的人-機分離,便于測試儀表群進(jìn)行統(tǒng)一管理,提高測試效率。測試平臺設(shè)計基于MVC模式的S2SH框架,其中Spring處于核心地位向上向下分別整合Struts2和Hibernate,充分發(fā)揮了各個框架在各自層面的優(yōu)勢;使用集成工具連接并管理測試儀表群,結(jié)構(gòu)清楚,從而使測試平臺具有較高的可維護(hù)性和可擴(kuò)展性。
[1] 陳發(fā)堂, 吳中華, 張有緣, 等. 多模終端測試平臺的搭建及仿真實現(xiàn)[J]. 電訊技術(shù), 2015, 55(9): 1042-1046. CHEN Fatang, WU Zhonghua, ZHANG Youyuan, XU Xiaohan. Building and Simulation Realization of a Multimode Terminal Test Platform[J]. Telecommunication Engineering, 2015, 55(9): 1042-1046. (in Chinese)
[2] 趙明宇, 周俊, 鄧飛. TD-LTE測試終端現(xiàn)狀及性能對比方法[J]. 移動通信, 2013, 19: 41-43. ZHAO Mingyu, ZHOU Jun, DENG Fei. TD-LTE Test Terminal Status and Performance Comparison Method[J]. Mobile Communication, 2013, 19: 41-43. (in Chinese)
[3] 馬志剛. 物聯(lián)網(wǎng)發(fā)展趨勢及測試方案[J]. 電子科學(xué)技術(shù), 2015, 2(4): 494-499. MA Zhigang. Development Trend and Test Plan of Internet of Things[J]. Electronic Science and Technology, 2015, 2(4): 494-499. (in Chinese)
[4] 亢娟, 李艷萍, 廖軍, 等. 移動終端測試與質(zhì)量評估體系的研究[J]. 電視技術(shù), 2013, 37(16). KANG Juan, LI Yanping, LIAO Jun. Research of Mobile Terminal Testing and Quality Evaluation System[J]. Video Engineering, 2013, 37(16).
[5] 辛?xí)赠i, 吳偉明. J2EE及相關(guān)技術(shù)的優(yōu)化在基站巡檢系統(tǒng)中的應(yīng)用[J]. 軟件, 2015, 36(9): 87-91. Application of Optimization Based on J2EE and Related Technologies in Base Station Inspection System[J]. Computer Engineering & Software, 2015, 36(9): 87-91. (in Chinese)
[6] Gamma E. Design patterns elements of reusable object-oriented software[M]. 北京: 機械工業(yè)出版社, 2002. Gamma E. Design patterns elements of reusable objectoriented software[M]. Beijing: China Machine Press, 2002. (in Chinese)
[7] 申斌, 李利民. 基于MVC模式S2SH框架的庫存管理系統(tǒng)[J]. 實驗室研究與探索, 2014, 33(11): 113-117. SHEN Bin, LI Limin. Design of Inventory Management System Based on MVC Pattern and S2SH Framework. (in Chinese)
[8] 高洪巖. 基于Struts2+Hibernate+Spring實用開發(fā)指南[M].北京: 化學(xué)工業(yè)出版社, 2010: 282. GAO Hongyan. Practical Development Guide Based on S2SH[M]. Beijing: Chemical Industry Press, 2010: 282. (in Chinese)
[9] 李剛. 輕量級Java EE 企業(yè)應(yīng)用實戰(zhàn): Struts 2+Spring 4+Hibernate 整合開發(fā)[M]. 北京: 電子工業(yè)出版社, 2014. 10. LI Gang. Lightweight Java EE Enterprise Application Combat: Integrated Development of Struts 2+Spring 4+Hibernate. Beijing: Electronic Industry Publishing House, 2014. 10. (in Chinese)
[10] 郭文龍, 姜惠娟, 劉世貴. 基于 SSH 框架的 RBAC 設(shè)計與實現(xiàn) [J]. 軟件, 2011, 32(6): 47-48. GUO Wenlong, JIANG Huijuan, LIU Shigui. Based on SSH framework RABC design and Implementation[J]. Computer Engineering & Software, 2011, 32(6): 47-48.
Research and Implementation of Terminal-test Platform Based on Struts2 & Hibernate & Spring
ZHANG Ke, MA Nan
(Beijing University of Posts and Telecommunications, State Key Laboratory of Networking and Switching, Beijing100876)
For the problems in traditional terminal-test field, such as the high cost of testing and the complicated management of test-instrument cluster, a new terminal-test platform based on the Struts2+Spring+Hibernate(S2SH) framework is presented.The platform modules implemented hierarchical and decoupled have good scalability and maintainability. The new test platform meets users’ demand to control instruments automated testing tasks remotely and manages test-instrument cluster by designing integration-tool. It has high values because the terminal-test platform can improve test efficiency and reduce testing costs and make the terminal-test more intensive, standardized.
S2SH; Terminal-test platform; Struts2; Spring; Hibernate
TP311
A
10.3969/j.issn.1003-6970.2016.08.017
張珂(1991-),男,山東萊蕪人,碩士研究生,主要研究方向:寬帶無線通信新技術(shù);馬楠(1979-),男,北京人,講師,主要研究方向:寬帶移動通信新技術(shù)研究。頁客戶端遠(yuǎn)程分配測試任務(wù),控制測試儀表自動化執(zhí)行;支持對測試儀表群的集群管理;測試平臺可記錄整個芯片測試周期中的測試數(shù)據(jù),反饋測試結(jié)果,輔助用戶在線測試及分析;測試平臺需能存儲大量終端測試數(shù)據(jù),為后期進(jìn)行終端測試的大數(shù)據(jù)分析提供數(shù)據(jù)支撐;支持按用戶測試種類及數(shù)量計費。