葛澤文 胡兆華
摘要:本文針對受安全性限制的自定義通信協(xié)議的動態(tài)測試難題,通過對協(xié)議的特征進(jìn)行分析,研究協(xié)議動態(tài)測試通用技術(shù),從協(xié)議模板定義、用例生成、動態(tài)交互、即時調(diào)用三方庫等方面進(jìn)行方法研究。找到了解決自定義通信協(xié)議動態(tài)測試問題的方法,并且該方法通用于所有協(xié)議的測試應(yīng)用。
關(guān)鍵詞:自定義通信協(xié)議;動態(tài)測試;協(xié)議模板;用例自動生成
中圖分類號:TP273 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2019)09-0090-03
0 引言
一些涉及安全性的行業(yè),其定義的通信協(xié)議一般具有特殊的安全性要求,協(xié)議中采用了受控的安全機(jī)制,協(xié)議功能和性能測試無法直接通過通用測試工具來構(gòu)造,只能屏蔽被測產(chǎn)品安全特性及處理流程來實現(xiàn),并且構(gòu)造測試數(shù)據(jù)非常因難,測試覆蓋也不充分。針對自定義通信協(xié)議存在的測試問題主要有以下幾個方面:(1)協(xié)議功能動態(tài)測試,目前只能采用靜態(tài)分析和代碼跟蹤,效率低,且只能覆蓋部分功能需求。(2)協(xié)議并發(fā)性能測試,需要被測設(shè)備修改程序、取消諸如抗重放等機(jī)制的檢查,固化參與協(xié)議過程的臨時參數(shù)等,導(dǎo)致測試場景與生產(chǎn)場景差異巨大。(3)協(xié)議承載的業(yè)務(wù)測試,對陪測設(shè)備類型和數(shù)量的依賴非常大,導(dǎo)致測試效率差。
因此,需要研究協(xié)議動態(tài)測試方法和工具套件,以解決自定義通信協(xié)議動態(tài)測試問題,并發(fā)數(shù)據(jù)構(gòu)造問題,模擬測試配套設(shè)備問題。
1 協(xié)議測試分析
自定義通信協(xié)議一般具有專用性,安全機(jī)制受限[1],承載于各類通信信道等特點。(1)自定義協(xié)議格式種類多,不同設(shè)備或不同系統(tǒng)可能都不同。需要考慮測試技術(shù)通用性,不同協(xié)議均能采同一種動態(tài)測試方法(協(xié)議模板化[2])進(jìn)行構(gòu)造。(2)安全性機(jī)制受限,要考慮協(xié)議個性,需要將安全機(jī)制涉及模塊形成第三方方法庫,以便支持不同安全機(jī)制的靈活擴(kuò)展。(3)承載通信信道或承載通信協(xié)議多種多樣,需要支持多各類信道或承載協(xié)議擴(kuò)展。
2 協(xié)議動態(tài)測試模型研究
協(xié)議動態(tài)測試由通信雙方實體(測試端和被測端)構(gòu)成,測試端根據(jù)協(xié)議模板和用例控制與被測端實施動態(tài)測試業(yè)務(wù),并統(tǒng)計結(jié)果形成測試報告。協(xié)議動態(tài)測試模型見圖1。
主要完成以下四個部分功能:(1)協(xié)議解析和構(gòu)造,依據(jù)協(xié)議模板和協(xié)議用例完成協(xié)議發(fā)送數(shù)據(jù)構(gòu)造和接收數(shù)據(jù)解決,并進(jìn)行字段用例預(yù)期檢查;(2)協(xié)議流程的控制,依據(jù)協(xié)議模板控制協(xié)議交互流程,調(diào)度解析/構(gòu)造模塊,并進(jìn)行流程用例預(yù)期檢查;(3)測試業(yè)務(wù)的調(diào)度,依據(jù)協(xié)議模板中流程定義和字段定義生成用例數(shù)據(jù);根據(jù)單次用例調(diào)度流程控制、通道控制和代理執(zhí)行測試業(yè)務(wù),并收集測試結(jié)果;(4)收發(fā)通道的選取和驅(qū)動,支持各層次通道的選取和驅(qū)動,如以太網(wǎng)、IP、TCP、串口等。支持對多實例共享或獨(dú)占通道。
其中,協(xié)議解析和構(gòu)造部分,根據(jù)模板完成協(xié)議消息數(shù)據(jù)生成和接收,并根據(jù)模板調(diào)用三方庫完成協(xié)議字段數(shù)據(jù)動態(tài)生成和解析。如圖2所示。
2.1 協(xié)議動態(tài)測試流程
依據(jù)定義的協(xié)議模板自動生成數(shù)據(jù)包,根據(jù)配置承載通道進(jìn)行數(shù)據(jù)發(fā)送、接收數(shù)據(jù)解析、預(yù)期結(jié)果檢查、測試報告生成等操作。測試流程如圖3所示。
在協(xié)議測試過程中,構(gòu)造用例對交互協(xié)議進(jìn)行動態(tài)測試,確認(rèn)協(xié)議數(shù)據(jù)字段處理是否與定義要求一致。具體測試活動流程如下:
(1)協(xié)議模板定義。1)協(xié)議交互定義:定義協(xié)議完整的交互流程,測試端發(fā)送的協(xié)議消息(如申請)和接收解析的協(xié)議消息(如響應(yīng)),及組成關(guān)系(如根據(jù)接收包內(nèi)容不同,組織不同消息發(fā)送)。2)協(xié)議交互包格式定義:定義消息中涉及的字段及組成關(guān)系。3)字段屬性定義:含協(xié)議字段本身的要素信息(含字段依賴:協(xié)議包內(nèi)部和外部的依賴關(guān)系)和測試管理要素(取值方法,存儲方法、檢查點等)。
(2)測試預(yù)期設(shè)置。通過設(shè)置字段預(yù)期,作為協(xié)議字段數(shù)據(jù)解析后比對基準(zhǔn),形成檢查點(含協(xié)議流程預(yù)期設(shè)置)。
(3)生成測試用例。將定義的協(xié)議模板(含外部導(dǎo)入的預(yù)置數(shù)據(jù)、字段構(gòu)造的用例值)和預(yù)置的檢查點等形成用例套件,供協(xié)議數(shù)據(jù)解析時自動進(jìn)行測試(含協(xié)議流程用例)。
(4)協(xié)議動態(tài)交互。控制端加載協(xié)議模板生成的用例套件,控制測試端與被測端進(jìn)行協(xié)議交互測試:
1)按配置通道進(jìn)行消息發(fā)送和接收:協(xié)議控制層將數(shù)據(jù)交由發(fā)送模塊,接收模塊接收數(shù)據(jù)交協(xié)議控制層,協(xié)議控制層控制消息的動態(tài)交互;2)發(fā)送消息生成:按模板生成發(fā)送數(shù)據(jù),構(gòu)造的用例數(shù)據(jù)和需要動態(tài)生成的數(shù)據(jù),即時調(diào)用相應(yīng)三方庫處理后,形成協(xié)議發(fā)送消息數(shù)據(jù);3)接收消息解析:按模板解析數(shù)據(jù),存儲相應(yīng)數(shù)據(jù)供后續(xù)解析過程使用,按模板即時調(diào)用相應(yīng)三方庫處理,并進(jìn)行比對檢查和進(jìn)行下一消息動態(tài)生成。
(5)生成測試報告。協(xié)議數(shù)據(jù)交互過程中,根據(jù)用例套件中涉及的檢查點(含響應(yīng)消息接收失?。┍葘Y(jié)果輸出測試報告。
2.2 協(xié)議靜態(tài)分析流程
根據(jù)自定義的協(xié)議模板,可自動分析從數(shù)據(jù)包中提取的協(xié)議數(shù)據(jù),自動判斷數(shù)據(jù)包是否符合協(xié)議模板預(yù)期定義,并導(dǎo)出分析結(jié)果和報告。測試流程如圖4所示。
設(shè)備涉及的各類自定義協(xié)議在測試過程中,對交互數(shù)據(jù)進(jìn)行靜態(tài)解析驗證,確認(rèn)協(xié)議數(shù)據(jù)封裝是否與定義要求一致。具體測試處理流程如下:
(1)協(xié)議模板定義。1)協(xié)議流程定義:定義交互流程(格式),測試端發(fā)送的協(xié)議消息(如申請)和接收解析的協(xié)議消息(如響應(yīng))。2)協(xié)議格式(消息)定義:定義消息中涉及的字段及組成關(guān)系。3)字段屬性定義:定義協(xié)議字段本身的要素信息(含字段依賴:消息內(nèi)部和消息外部)和測試管理要素(取值方法,存儲方法、檢查點等)。
(2)字段預(yù)期設(shè)置。通過設(shè)置字段預(yù)期,作為協(xié)議字段數(shù)據(jù)解析后比對基準(zhǔn),形成檢查點。
(3)生成測試用例。將協(xié)議模板定義和預(yù)置的檢查點組合形成用例套件,供協(xié)議數(shù)據(jù)解析時自動進(jìn)行測試。
(4)輸入數(shù)據(jù)解析。控制端加載按模板生成的用例套件,對輸入?yún)f(xié)議數(shù)據(jù)進(jìn)行解析:1)按模板解析數(shù)據(jù),與檢查點預(yù)置數(shù)據(jù)進(jìn)行比對,并記錄結(jié)果。2)存儲供后續(xù)解析過程使用的字段內(nèi)容。3)在協(xié)議分析過程中,按模板字段屬性方法及依賴數(shù)據(jù),自動調(diào)用三方庫進(jìn)行處理。
(5)生成測試報告。數(shù)據(jù)解析完成后,自動依據(jù)用例套件中涉及的檢查點比對結(jié)查輸出測試報告。
3 協(xié)議動態(tài)測試關(guān)鍵技術(shù)研究
3.1 協(xié)議模板按需定義
根據(jù)被測協(xié)議具體要求,定義協(xié)議流程、協(xié)議格式、協(xié)議字段和字段依賴關(guān)系及處理方法(含外部算法調(diào)用),形成協(xié)議模板。協(xié)議模板定義如下:
(1)協(xié)議消息條目定義。定義協(xié)議涉及的交互消息條目,控制消息申請、響應(yīng)及其時序關(guān)系。
(2)協(xié)議消息字段定義。根據(jù)接收消息特定字段取值,選擇模板定義分支或?qū)哟危ㄗ幽0澹?。如協(xié)議通過類型字段區(qū)分,后續(xù)封裝數(shù)據(jù)不同定義子模板供選擇,如圖5所示。
(3)協(xié)議字段依賴關(guān)系。主要涉及兩類字段依賴:1)消息內(nèi)部,后面字段依賴前面字段取值,如B字段長度依賴A字段值來確定等。主要有值依賴、循環(huán)次數(shù)依賴及子模板依賴等,如圖6所示。2)消息外部,生成消息中存在字段依賴接收消息字段值(動態(tài)值)或外部輸入值(個性值)來參與三方(方法庫)處理后生成的動態(tài)值,如圖7所示。
(4)用例和檢點嵌入。1)用例數(shù)據(jù)構(gòu)造:如A字段取值,需從邊界、等價類等進(jìn)行用例測試,該類例重復(fù)進(jìn)行協(xié)議消息交互來進(jìn)行驗證。模板中定義測試業(yè)務(wù)控制字來進(jìn)協(xié)議控制調(diào)度。2)針對字段設(shè)定檢查點:并設(shè)預(yù)期值,控制協(xié)議交互中將調(diào)用檢查模塊進(jìn)行對比確認(rèn)并記錄,供生成測試報告。
(5)子模板及字段數(shù)據(jù)處理方法外部擴(kuò)展。1)子模板數(shù)據(jù)處理方法:自定義協(xié)議大多是分層處理,外層處理一般涉及多個字段處理之后,再進(jìn)行外層處理。針對這類層次子模板也定義方法進(jìn)行處理;2)字段數(shù)據(jù)處理方法:調(diào)用三方庫對數(shù)據(jù)進(jìn)行生成處理或解析處理,主要涉及加密、解密、簽名、驗簽等,涉及依賴其他字段值需要存儲或從外部導(dǎo)入。
3.2 協(xié)議測試數(shù)據(jù)動態(tài)處理
根據(jù)模板定義組織協(xié)議交互流程場景;根據(jù)測試用例,在三方庫支持下,即時生成或解析協(xié)議消息數(shù)據(jù);按字段屬性處理(存儲、輸出、變換、比對等)字段數(shù)據(jù)。
3.2.1 協(xié)議數(shù)據(jù)生成和解析
協(xié)議數(shù)據(jù)生成同解析數(shù)據(jù),處理方式相反。主要涉及以下處理內(nèi)容:(1)支持對變長字段處理;(2)支持字段依賴處理;(3)支持對接收字段依賴處理;(4)字段預(yù)期定義處理,預(yù)期格式功能用于判斷被測目標(biāo)返回值是否符合用戶的預(yù)期。
3.2.2 協(xié)議數(shù)據(jù)三方庫處理
協(xié)議交互數(shù)據(jù)即時處理,除設(shè)計的收發(fā)場景外,即時根據(jù)字段屬性,依據(jù)當(dāng)前數(shù)據(jù)條件,選擇處理方法,調(diào)用三方動態(tài)庫,快速生成所需數(shù)據(jù)。實現(xiàn)從庫建立階段定義方法,協(xié)議定義階段選擇方法,協(xié)議執(zhí)行階段調(diào)用方法,將對字段的處理方法統(tǒng)一形成三方庫,以便于靈活擴(kuò)展。針對三方庫處理關(guān)系如圖8所示。
4 協(xié)議動態(tài)測試應(yīng)用場景
4.1 協(xié)議動態(tài)測試
用于驗證協(xié)議動態(tài)交互過程,構(gòu)造數(shù)據(jù)測試被測設(shè)備或系統(tǒng)對協(xié)議字段的處理,驗證協(xié)議處理邏輯與協(xié)議規(guī)范的一致性。(1)針對每個字段構(gòu)造數(shù)據(jù),驗證被測系統(tǒng)接收情況;(2)針對每個字段設(shè)置預(yù)期,檢查響應(yīng)結(jié)果。
4.2 協(xié)議靜態(tài)解析
用于針對被測設(shè)備或系統(tǒng)涉及協(xié)議真實交互數(shù)據(jù)的靜態(tài)解析,驗證協(xié)議封裝和承載數(shù)據(jù)內(nèi)容是否與被測對象設(shè)計要求一致。
4.3 并發(fā)數(shù)據(jù)構(gòu)造測試
將協(xié)議動態(tài)交互形成一個用戶套件,并根據(jù)用戶個性數(shù)據(jù)生成多用戶協(xié)議業(yè)務(wù),加載通道承載,形成并發(fā)測試場景,構(gòu)造協(xié)議業(yè)務(wù)并發(fā)測試,驗證協(xié)議性能(含并發(fā)和業(yè)務(wù)性能)。
5 結(jié)語
由于自定義協(xié)議動態(tài)測試技術(shù)考慮了通用性和可擴(kuò)展性等要素,適用于所有自定義協(xié)議動態(tài)功能和性能測試。能實現(xiàn)的測試目標(biāo)包括:建立各類協(xié)議的功能基準(zhǔn)測試;模擬真實的協(xié)議負(fù)載行為,測試設(shè)備或系統(tǒng)的協(xié)議性能;模擬陪測設(shè)備,建立更多測試場景。綜上所述,應(yīng)用協(xié)議動態(tài)測試技術(shù),在解決自定義協(xié)議動態(tài)測試問題的同時,可以提高測試業(yè)務(wù)的生產(chǎn)效率和質(zhì)量。
參考文獻(xiàn)
[1] 戴宗坤.信息系統(tǒng)安全[M].電子工業(yè)出版社,2002.
[2] 古樂,史九林.軟件測試技術(shù)概論[M].清華大學(xué)出版社,2004.
Abstract:With the development of ?The Times,the level of world technological innovation is continuously improving,but the physical quality of people is declining with years.Therefore,physical exercises,the improvement of physical fitness is also the current national priority.For this reason,our team has developed an intelligent ?fitness platform used Convolutional Neural Network for image recognition process and Android platform as the client.People can run the software to identify,judge,and recorrect their movement,so as to achieve the same effects as the personal coach.
Key words:Convolutional Neural Network;Image Recognition;movement teaching