中圖分類號:TB9;TP311.5 文獻(xiàn)標(biāo)志碼:A文章編號:1674-5124(2025)07-0154-10
Abstract: To address the shortcomings of complex protocol testing in formal modeling and test completeness assessment,a modelingand simulation-based technique is proposed to implement protocol testing verification technology.The formal model specification is used to establish the test behavior paradigm of the protocol test object model; the test model is used as the core component to realize the automatic generation of test cases through model-driven approach;the model simulation is used to realize the dynamic view of the test process and the weak real-time verification ofthe test results; finally,the basic test scenario model is used to realize the completeness assessment of the protocol test. The technology provides systematic theoretical support and a complete solution for model-driven protocol test verification. Experiments show that the testing method using this technology can shorten test time by 30% ,reduce test design error rate by 50% ,and improve coverage rate by 70% in the first round of test coverage compared with the traditional script-driven testing method. Keywords: protocol test; completeness assessment; modeling and simulation; model-driven
0 引言
消息協(xié)議是實(shí)現(xiàn)各信息系統(tǒng)互聯(lián)互通,信息共享的重要載體。一旦消息協(xié)議存在一致性或互操作問題,關(guān)鍵信息將無法及時(shí)得到處理,從而影響各平臺/系統(tǒng)的協(xié)同工作效能。協(xié)議測試驗(yàn)證活動是保障消息協(xié)議標(biāo)準(zhǔn)正確及有效的關(guān)鍵環(huán)節(jié),它能顯著減少消息協(xié)議中缺陷,降低系統(tǒng)發(fā)生通訊錯(cuò)誤的風(fēng)險(xiǎn),保障消息通訊安全并降低系統(tǒng)維護(hù)成本。
隨著新一代信息系統(tǒng)中功能與接口的急劇增多,系統(tǒng)之間的通訊行為規(guī)則變得更為復(fù)雜[1],豐富的協(xié)議種類和多樣的信息交互方式,使傳統(tǒng)協(xié)議測試方法在面對復(fù)雜協(xié)議規(guī)則處理時(shí)更易出錯(cuò)且要消耗大量資源,消息協(xié)議測試規(guī)范性設(shè)計(jì)、測試用例的維護(hù)與管理、協(xié)議測試質(zhì)量的定量評價(jià)等工作變得尤為棘手。
建模和仿真(modelingand simulation,Mamp;S)技術(shù)是復(fù)雜系統(tǒng)研制工作的一種必不可少的手段,廣泛應(yīng)用在基于模型的系統(tǒng)工程(model-basedsystems engineering,MBSE)[2]。吳新泉[3]提出一種基于系統(tǒng)建模語言(system modelinglanguage,SysML)和離散事件系統(tǒng)(discrete event system,DEVS)規(guī)范的系統(tǒng)模型仿真代碼自動生成方法。Luo[4使用DEVS對數(shù)據(jù)鏈通信進(jìn)行模擬和仿真實(shí)驗(yàn)。王霄漢[5]借助DEVS中原子模型的事件轉(zhuǎn)移機(jī)制對智能體的學(xué)習(xí)交互過程進(jìn)行建模和仿真??梢钥闯?,Mamp;S有效增加了設(shè)計(jì)模型的有效性和置信度。
對系統(tǒng)設(shè)計(jì)模型進(jìn)行測試,采用基于模型驅(qū)動的自動化測試方法,通過快速生成大量測試用例,有效提高基于模型的系統(tǒng)測試效率。黃雙芹開發(fā)了一套自動解析后臺表單并進(jìn)行自動化測試的系統(tǒng)。ROCHA M[7] 將UML時(shí)序轉(zhuǎn)化為拓展的有限狀態(tài)機(jī)(extended finite statemachines,EFSM) 來生成測試用例。羊鈴霞[8]基于UML模型生成測試用例自動生成方法。MOHD-SHAFIEML[]提出一種基于EFSM的測試用例數(shù)據(jù)自動生成方法。然而,當(dāng)前已有的基于模型驅(qū)動的自動化測試架構(gòu)側(cè)重強(qiáng)調(diào)測試用例的自動生成,對測試用例集的完備性的考慮不夠完善。
在協(xié)議測試領(lǐng)域中,陳升來[10提出一種針對Link16數(shù)據(jù)鏈協(xié)議一致性測試方法,基于因果圖設(shè)計(jì)測試用例,以確保測試用例的全面性。趙露露[1]基于Mamp;S方法構(gòu)建Link16數(shù)據(jù)鏈互操作性測試模型。田萬勇[12]提出了一種基于Mamp;S的消息協(xié)議一致性測試模型,用于Link16消息標(biāo)準(zhǔn)的語法、語義層面的一致性測試?;贛amp;S的協(xié)議測試方法提高數(shù)據(jù)鏈消息協(xié)議測試自動化程度和通用性,但是普遍存在模型的形式化程度不高。同時(shí),驗(yàn)證過程缺乏對模型測試流程仿真和數(shù)據(jù)流的動態(tài)記錄。在實(shí)際應(yīng)用場景中對數(shù)據(jù)充分性以及模型驅(qū)動的協(xié)議測試完備性方面考慮不足。
表1為基于模型驅(qū)動的自動化測試方法和基于Mamp;S的協(xié)議測試方法的相關(guān)研究的描述??梢钥闯?,現(xiàn)有協(xié)議測試方法在形式化建模方面存在形式化程度不高、模型可復(fù)用性不足等問題,在測試完備性方面,在設(shè)計(jì)、建模、仿真、驗(yàn)收、評估的完整流程中缺少系統(tǒng)化理論支撐和完善解決方案。因此,本文以測試模型作為核心組件,增加測試狀態(tài)的形式化原子模型,實(shí)現(xiàn)多條件的協(xié)議測試驗(yàn)證行為,設(shè)計(jì)結(jié)構(gòu)模型、交互模型與實(shí)例模型三層模型結(jié)構(gòu),實(shí)現(xiàn)協(xié)議測試建模的松耦合,提高模型的可理解性與可復(fù)用性,使用模型驅(qū)動技術(shù)保證模型設(shè)計(jì)與執(zhí)行用例的一致性與準(zhǔn)確性,利用模型仿真技術(shù)實(shí)現(xiàn)測試過程的動態(tài)視圖顯示與結(jié)果驗(yàn)證,基于模型實(shí)現(xiàn)協(xié)議測試的完備性評估,顯著提升復(fù)雜協(xié)議規(guī)則測試能力和測試效率。相比傳統(tǒng)的協(xié)議測試方法,本文的主要貢獻(xiàn)如下:
1)設(shè)計(jì)一套形式化模型規(guī)范對協(xié)議測試的建模過程進(jìn)行約束,建立協(xié)議標(biāo)準(zhǔn)對象的行為范式保證協(xié)議測試流程描述的精確性與無二義性;
2)建立協(xié)議測試完備性評估方法,提出消息協(xié)議重要度等級與協(xié)議充分性準(zhǔn)則,并基于測試流程模型實(shí)現(xiàn)基于覆蓋的完備性分析。
1基于Mamp;S的協(xié)議測試驗(yàn)證框架
基于建模與仿真的協(xié)議測試驗(yàn)證技術(shù)框架包含四個(gè)部分:形式化建模、模型驅(qū)動測試用例生成、仿真測試驗(yàn)證與完備性評估,如圖1所示。
形式化建模是Mamp;S的基礎(chǔ),其核心是通過模型描述協(xié)議測試的動態(tài)行為。這種描述具有明確性和無二義,符合形式化方法,以此構(gòu)建的測試模型能夠通過模型驅(qū)動技術(shù)支撐后續(xù)測試工作的開展。
實(shí)現(xiàn)模型的松耦合和層級關(guān)系,構(gòu)建消息協(xié)議標(biāo)準(zhǔn)模型描述協(xié)議結(jié)構(gòu),構(gòu)建交互環(huán)境模型描述協(xié)議使用和流向,構(gòu)建協(xié)議規(guī)則處理模型描述協(xié)議收發(fā)處理行為。協(xié)議規(guī)則處理模型是實(shí)例模型,包含具體測試信息,其模型行為需要受到形式化建模規(guī)范的約束,因此,該模型本身具備形式化特征。
模型驅(qū)動測試用例以協(xié)議規(guī)則處理模型為基礎(chǔ),在測試路徑生成策略的應(yīng)用下構(gòu)建測試路徑集,通過模型驅(qū)動關(guān)鍵數(shù)據(jù)提取從形式化模型中獲取測試數(shù)據(jù)并生成XML測試用例。XML測試用例包含完整測試信息卻不具備執(zhí)行能力,需要采用XSLT模板轉(zhuǎn)換技術(shù)生成可執(zhí)行測試腳本。
仿真測試驗(yàn)證模塊控制協(xié)議測試的執(zhí)行流程,其中測試驅(qū)動單元負(fù)責(zé)加載并執(zhí)行測試用例。在測試節(jié)點(diǎn)與被測對象之間產(chǎn)生測試交互數(shù)據(jù)時(shí),由仿真面板將數(shù)據(jù)映射到仿真視圖和模型視圖,實(shí)現(xiàn)測試數(shù)據(jù)的弱實(shí)時(shí)測試驗(yàn)證,同時(shí),將測試用例的覆蓋信息和測試結(jié)果保存到數(shù)據(jù)庫中。
完備性評估模塊負(fù)責(zé)建立完善的測試有效性評價(jià)方法,實(shí)現(xiàn)測試用例集的完備性評估。在確定測試完備性要求前,需要對消息協(xié)議以及協(xié)議測試場景的重要度定級,依據(jù)不同的級別給定測試完備性要求,以此作為評價(jià)的依據(jù)。
2 形式化建模
2.1 形式化模型規(guī)范
形式化模型規(guī)范是利用嚴(yán)謹(jǐn)?shù)臄?shù)學(xué)方法來表達(dá)對象的行為邏輯與約束,建立起對象模型的行為范式。該規(guī)范包含原子模型規(guī)范和耦合模型規(guī)范,原子模型是描述軟件測試過程中信息輸人、輸出的最小單元實(shí)體,具有獨(dú)立功能結(jié)構(gòu)、行為和接口。耦合模型用于描述多個(gè)原子模型的時(shí)序關(guān)聯(lián),若干個(gè)原子模型通過耦合規(guī)范集成為耦合模型,并作為更上層模型的子模型元素,最終通過關(guān)系的耦合形成模型的層次結(jié)構(gòu)。
2.1.1 原子模型規(guī)范
1)原子模型結(jié)構(gòu)。原子模型M的結(jié)構(gòu)定義由七元組描述[13]: M=(IN,OUT,S,time,δintermabδextemalf)
① IN 是外部輸入集;
② OUT是輸出集合;
③S 是模型狀態(tài)集。
④ time是時(shí)鐘運(yùn)行函數(shù),time(s)表示在沒有外部輸入到達(dá)時(shí),模型狀態(tài)保持為 s 的時(shí)鐘數(shù), s∈S time(s)=+∞ 的模型狀態(tài)稱為靜止。在無外部輸入情況下,模型將保持靜止(不工作)。 time(s)=0 的模型狀態(tài)稱為瞬時(shí),表示在該狀態(tài)下時(shí)鐘不運(yùn)行。
⑤ δinternal 是內(nèi)部轉(zhuǎn)移函數(shù)。如無外部輸入激發(fā),系統(tǒng)經(jīng)過 time(s) 時(shí)間后,狀態(tài) s 將轉(zhuǎn)移到δinternal(s)的狀態(tài)。
⑥ δextemal 是外部轉(zhuǎn)移函數(shù),若有一外部輸人in∈N 激發(fā),模型在狀態(tài) s 已停留時(shí)間為 t, 則它立即轉(zhuǎn)移到 δexternal(s,t,in) ,并將 t 重置為0。
⑦f 是輸出函數(shù),輸出函數(shù)在模型狀態(tài)發(fā)生轉(zhuǎn)移時(shí)執(zhí)行,在狀態(tài) s 發(fā)生轉(zhuǎn)移時(shí)產(chǎn)生輸出f(s)。
2)原子模型類型。測試基本行為由發(fā)送消息和信息接收構(gòu)成,最后通過組合原子模型的關(guān)系構(gòu)成功能,定義三種類原子模型:
“發(fā)送信息\"原子模型:在等候時(shí)間結(jié)束時(shí)發(fā)送一條消息。
“信息接收\"原子模型:以等候時(shí)間內(nèi)等待一條消息,收到消息時(shí)進(jìn)行測試預(yù)言,確定通過/不通過狀態(tài)。
“測試狀態(tài)\"原子模型:不接收和發(fā)送任何消息,在整個(gè)測試過程中獲取從耦合模型\"開始\"到最后一個(gè)非本原子模型的狀態(tài),并通過狀態(tài)邏輯設(shè)置,完成功能的測試預(yù)言,是耦合模型的結(jié)束節(jié)點(diǎn)。
3)原子模型端口。包含控制關(guān)系和數(shù)據(jù)關(guān)系??刂脐P(guān)系描述模型的進(jìn)入與退出條件,包含兩個(gè)端□:開始端口和通過端口;數(shù)據(jù)關(guān)系描述模型的輸入與輸出數(shù)據(jù),包含兩個(gè)端口:信息輸入端口和信息輸出端口。
4)原子模型行為。描述模型在仿真或執(zhí)行過程中基于事件的行為反應(yīng),顯示原子模型在當(dāng)前測試執(zhí)行狀態(tài)下的行為,模型表示及狀態(tài)機(jī)描述如圖2表示。
外部“信號\"用于表明模型的初始狀態(tài),如果初始為休眠信號,模型將以“激活狀態(tài)\"啟動。在不同的\"狀態(tài)\"下,根據(jù)\"端口\"類型和值,產(chǎn)生狀態(tài)遷移或進(jìn)行端口及數(shù)據(jù)的輸出?!盃顟B(tài)\"在處理狀態(tài)事件結(jié)束后,將會產(chǎn)生內(nèi)部遷移 δintemal(s) ,如發(fā)送原子模型在\"發(fā)送狀態(tài)\"下從輸出端口輸出數(shù)據(jù),并從通過端口輸出Pass值結(jié)束后,狀態(tài)遷移到\"休眠狀態(tài)”。
“測試狀態(tài)\"原子模型從“休眠狀態(tài)”啟動,它的輸入端為此原子模型\"開始\"包含所有“信息接受\"原子模型的\"通過\"端口信息。在驗(yàn)證狀態(tài)下,模型根據(jù)測試邏輯計(jì)算當(dāng)前測試狀態(tài)是Pass還是Fail;并根據(jù)設(shè)置斷言邏輯決定是否產(chǎn)生中斷信號。中斷信號產(chǎn)生包含\"正常執(zhí)行\(zhòng)"和\"錯(cuò)誤退出\"兩個(gè)模式。在“正常執(zhí)行\(zhòng)"模式下,“測試狀態(tài)\"原子模型之前所有原子模型都必須全部執(zhí)行完畢,并產(chǎn)生中斷信號。在\"錯(cuò)誤退出\"模式下,“測試狀態(tài)\"原子模型的測試邏輯為Fail時(shí)產(chǎn)生中斷信號。
2.1.2 耦合模型規(guī)范
耦合模型通過多個(gè)原子模型通過耦合規(guī)則構(gòu)成負(fù)責(zé)描述原子操作組合而成具體功能的層次模型
1)耦合模型結(jié)構(gòu)。耦合模型C的結(jié)構(gòu)定義由五元組描述[13]: C=(IN,OUT,N,M,R) (204號
① IN是外部輸入集;
② OUT是輸出集合;
③N 是耦合模型中模型名稱集;
④M 是耦合模型中的模型集, Mi(i∈N) 是原子模型或耦合模型;
⑤R 是模型之間的輸出轉(zhuǎn)移關(guān)系, R(i,j) 表示存在模型 Mi 到模型 Mj 的輸出轉(zhuǎn)移關(guān)系。
2)耦合規(guī)則。耦合模型由原子模型構(gòu)成,而耦合模型能夠與其他原子模型構(gòu)成更為復(fù)雜的耦合模型,一個(gè)典型的耦合模型如圖3所示。
耦合模型內(nèi)部通過原子模型之間的耦合關(guān)聯(lián),形成耦合模型的邏輯行為。耦合關(guān)系以連線的方式進(jìn)行確定。為了能夠正確地完成耦合模型構(gòu)建,需要定義規(guī)則對模型關(guān)聯(lián)進(jìn)行約束。約束規(guī)則如下:
① 原子模型的通過端口只能連接其他原子模型的開始端口或耦合模型的通過端口;
② “信息發(fā)送\"原子模型的信息輸出端口自動連接耦合模型的信息輸出端口;
③ “信息接收\"原子模型信息輸入端口自動連接耦合模型的信息輸入端口;
④ “測試狀態(tài)\"原子模型的開始端口自動連接之前的其他“信息接收”原子模型通過端口;
⑤ 耦合模型可以包含多個(gè)“信息發(fā)送\"原子模型、“信息接收”原子模型,有且只有一個(gè)“測試狀態(tài)”原子模型,在一個(gè)耦合模型中至少要使用一個(gè)“信息發(fā)送\"原子模型或信息接收\"原子模型;
⑥ 耦合模型必須以“測試狀態(tài)\"原子模型結(jié)尾。
2.1.3 模型的無二義性
形式化模型規(guī)范包含原子模型規(guī)范和耦合模型規(guī)范,并提供了一種形式化的方式來描述模型對象。本文提出了信息發(fā)送、信息接收測試狀態(tài)三種原子模型。圖2描寫了三種原子模型的狀態(tài)機(jī),可以看出,原子模型的初態(tài),任意時(shí)刻下的狀態(tài),以及不同狀態(tài)下的遷移條件均是確定,符合確定有限狀態(tài)自動機(jī)的描述,因此原子模型的行為具備無二義性。
其次,耦合模型規(guī)范約束了多個(gè)原子模型在耦合過程中的端口連接行為,確保測試建模過程中的原子模型的外部端口關(guān)聯(lián)的正確性與有序性。耦合模型中各個(gè)信息發(fā)送原子模型和信息接收原子模型只能按照一定的時(shí)序關(guān)系鏈接,一個(gè)耦合模型有且只有一個(gè)測試狀態(tài)原子模型,可以充分保證了耦合模型內(nèi)部的原子模型在任意時(shí)刻的執(zhí)行和輸出時(shí)唯一性和無二義性。通過原子模型本身的無二義性與模型耦合的無二義性,從而確保整個(gè)測試模型的無二義性。
2.2 協(xié)議測試建模
形式化模型規(guī)范建立抽象模型行為約束,具體模型的建立通過協(xié)議測試建模過程完成。協(xié)議測試建模包含三層模型:協(xié)議標(biāo)準(zhǔn)模型、協(xié)議交互模型與協(xié)議規(guī)則處理模型。
協(xié)議標(biāo)準(zhǔn)模型負(fù)責(zé)對協(xié)議結(jié)構(gòu)進(jìn)行建模,為協(xié)議交互建模提供協(xié)議模板。該模型包括消息協(xié)議基本定義和協(xié)議結(jié)構(gòu)元素,如圖4所示。協(xié)議結(jié)構(gòu)模型描述了消息本身的基本屬性與元素信息。元素列表包含消息中所有的數(shù)據(jù)字段,消息元素以面向字節(jié)和面向比特的方式進(jìn)行封裝,定義消息元素基本信息與位段起始位、結(jié)束位,初值等信息。
協(xié)議標(biāo)準(zhǔn)單獨(dú)建模能夠?qū)崿F(xiàn)協(xié)議模型的松耦合,提高模型復(fù)用率且保證協(xié)議定義在測試流程中的一致性,減少協(xié)議測試的設(shè)計(jì)負(fù)擔(dān)。
協(xié)議交互模型明確不同實(shí)體對象存在的消息交互的流向,同時(shí)對應(yīng)用中協(xié)議類型進(jìn)行了限定。協(xié)議交互模型由節(jié)點(diǎn)和帶方向的連線構(gòu)成,通過建立節(jié)點(diǎn)和連線的方式可以對測試平臺和被測對象之間存在的協(xié)議交互關(guān)系進(jìn)行建模。節(jié)點(diǎn)描述協(xié)議應(yīng)用對象實(shí)體,連線描述協(xié)議交互的流向。通過在連線模型上加載消息協(xié)議標(biāo)準(zhǔn)模型實(shí)現(xiàn)協(xié)議交互關(guān)系的定義與描述。
消息協(xié)議交互模型可定義為 IM= (Models,Links),其中:Models表示使用消息協(xié)議的節(jié)點(diǎn)模型集合。Models {TestPlatform,ObjectNodes},其中 :TestPlatform表示測試平臺系統(tǒng),ObjectNodes表示使用協(xié)議的應(yīng)用對象集合。Links表示測試平臺與協(xié)議對象之間的協(xié)議交互關(guān)系,其中包含定義的協(xié)議標(biāo)準(zhǔn)模型集。
協(xié)議規(guī)則處理模型是從用戶的角度描述協(xié)議在應(yīng)用中的行為,包含通訊中協(xié)議的發(fā)送、接收、時(shí)序和條件,建模過程受形式化模型規(guī)范約束。如圖5所示,協(xié)議規(guī)則處理模型包含三個(gè)模型層次,基礎(chǔ)模型設(shè)計(jì)層、高層模型設(shè)計(jì)層、模型應(yīng)用層
基礎(chǔ)模型設(shè)計(jì)層描述基礎(chǔ)模型的規(guī)范,測試原子模型和耦合模型描述測試流程中各模型行為和模型耦合關(guān)聯(lián)的規(guī)范,為高層模型提供一套抽象的邏輯行為規(guī)范,該規(guī)范通過具體的協(xié)議載體進(jìn)行對象化和實(shí)例化。
高層模型設(shè)計(jì)層關(guān)注協(xié)議的規(guī)則抽象,在協(xié)議規(guī)則處理模型中建立測試原子模型,從協(xié)議交互模型中導(dǎo)入?yún)f(xié)議標(biāo)準(zhǔn)模型實(shí)現(xiàn)原子模型的對象化。
模型應(yīng)用層關(guān)注協(xié)議具體收發(fā)數(shù)據(jù),通過給測試原子模型裝載的協(xié)議對象中具體字段進(jìn)行賦值,實(shí)現(xiàn)原子模型的實(shí)例化。協(xié)議測試的重點(diǎn)是關(guān)注協(xié)議在使用中進(jìn)行信息交互時(shí)的數(shù)據(jù)一致性與互操作的正確性,從而確定是否正確實(shí)現(xiàn)協(xié)議功能。協(xié)議標(biāo)準(zhǔn)模型是信息載體,只有將測試原子模型中的對象(協(xié)議標(biāo)準(zhǔn))進(jìn)一步實(shí)例化,體現(xiàn)協(xié)議在真實(shí)應(yīng)用場景中數(shù)據(jù)特征,協(xié)議規(guī)則處理模型才具備測試的目的性。
3模型驅(qū)動測試用例生成
協(xié)議規(guī)則處理模型通過形式化模型規(guī)范約束,是一個(gè)形式化模型,可通過模型驅(qū)動技術(shù)實(shí)現(xiàn)測試用例的自動化生成。
測試用例為了驗(yàn)證場景中一個(gè)具體功能,對應(yīng)在協(xié)議規(guī)則處理模型中一條從開始節(jié)點(diǎn)到結(jié)束節(jié)點(diǎn)的測試路徑。
協(xié)議規(guī)則處理模型用一個(gè)四元組描述 ΔTM= (S,s0,sn,T) ,其中 S 是協(xié)議測試的操作步驟集, T 是操作的遷移集,遷移信息 t∈T 具有src、tgt、prob三個(gè)屬性,分別描述遷移的源操作、目的操作和遷移概率。 S 和 T 元素是定義測試路徑的關(guān)鍵元素。一條測試路徑 P 是由操作和遷移特征組成序列,操作和遷移特征之間存在時(shí)序順序關(guān)系,并且是由一個(gè)操作一個(gè)遷移特征交替連接。則測試路徑 P 將從“初始\"狀態(tài) s0 開始到\"終止\"狀態(tài) sn 結(jié)束,這條路徑是由\"初始\"到\"終止\"的一條可能路徑。測試路徑 P 的形式化描述如下[14]:
其中:0≤i≤n,s∈S,t∈T,tisrc=Si,Si.tgt=Si+10
測試路徑的選擇存在多樣性,從而能實(shí)現(xiàn)多種意圖的測試用例集。在協(xié)議測試中需要綜合考慮實(shí)際情況,采用不同測試路徑生成策略。如:
1)指定測試路徑生成策略:由測試人員根據(jù)需求手動選擇一條連通的測試路徑;
2)隨機(jī)生成策略:由系統(tǒng)隨機(jī)選取測試路徑;
3)基于剖面的生成策略:系統(tǒng)依據(jù)遷移概率選擇遷移目的操作,生成測試路徑;
4)基于測試覆蓋的生成策略:依據(jù)深度優(yōu)先遍歷算法自動生成協(xié)議測試處理模型的全部測試路徑。
測試人員可以采用多種生成策略組合進(jìn)一步保證測試覆蓋符合章節(jié)5的充分性準(zhǔn)則。
測試路徑集通過對測試路徑中關(guān)鍵測試信息獲取,并將測試數(shù)據(jù)寫人到XML格式測試腳本,實(shí)現(xiàn)模型數(shù)據(jù)到腳本數(shù)據(jù)的轉(zhuǎn)換。測試用例XML文件包含了測試的關(guān)鍵數(shù)據(jù)信息,有利于測試用例集的管理,但不具備執(zhí)行能力。采用可擴(kuò)展樣式表語言轉(zhuǎn)換XSLT(extensible stylesheet languagetransformations)將XML測試腳本轉(zhuǎn)換為C語言可執(zhí)行程序,通過C語言編譯器生成可執(zhí)行的測試腳本,工作原理如圖6所示。XSTL本質(zhì)是一個(gè)形式化模型的翻譯器,根據(jù)設(shè)計(jì)的模板將形式化模型的特征數(shù)據(jù)進(jìn)行提取,并將其翻譯成編譯器所能夠解讀的特定的文件。
4仿真測試驗(yàn)證
仿真驗(yàn)證是將仿真架構(gòu)和測試驗(yàn)證技術(shù)深度融合并進(jìn)行應(yīng)用,在測試過程通過仿真界面提供測試過程的可視化與弱實(shí)時(shí)結(jié)果驗(yàn)證。測試流程仿真并非實(shí)物對象仿真,通過協(xié)議規(guī)則處理模型在測試執(zhí)行過程中動態(tài)運(yùn)行和交互的仿真觀測,確保測試設(shè)計(jì)的正確性和一致性。測試流程仿真包含兩個(gè)部分:模型視圖和控件視圖。如圖7所示。
模型視圖提供測試用例在測試執(zhí)行過程中測試原子模型的動態(tài)執(zhí)行的狀態(tài)機(jī)遷移過程。雖然協(xié)議規(guī)則處理模型在設(shè)計(jì)測試場景上具有優(yōu)勢,但是在模型狀態(tài)機(jī)變遷顯示上受到模型層級的影響,不能有效呈現(xiàn)測試過程。通過將測試用例對應(yīng)的測試路徑轉(zhuǎn)換為泳道圖模型,明確協(xié)議測試時(shí)序與的流向,能清晰描述測試流程的時(shí)序邏輯與約束條件,同時(shí)避免分層模型所導(dǎo)致的信息隱藏。
控件視圖采用測試面板顯示,通過仿真控件搭建虛擬測試面板。仿真控件通過綁定測試交互過程中的特定數(shù)據(jù),實(shí)現(xiàn)測試焦點(diǎn)數(shù)據(jù)的可視化觀測
測試數(shù)據(jù)在測試過程中將通過的測試預(yù)言進(jìn)行邏輯判斷,判斷測試步驟通過/不通過,并將驗(yàn)證結(jié)果同步映射到仿真測試面板。仿真測試面板能夠在復(fù)雜的消息流程測試中精確顯示關(guān)鍵消息數(shù)據(jù)的測試狀態(tài),實(shí)現(xiàn)測試過程的可視化和關(guān)鍵信息的識別和分析,增強(qiáng)測試過程仿真的交互性,保障協(xié)議測試過程的高效可靠驗(yàn)證。
5 協(xié)議測試完備性評估
目前協(xié)議測試的完備性評估采用功能覆蓋方法,通過人工分解協(xié)議測試需求,確定需要測試的協(xié)議處理功能。隨著協(xié)議規(guī)則日益錯(cuò)綜復(fù)雜,測試需求易出現(xiàn)分解不充分,協(xié)議交互行為遺漏等問題。
本文以協(xié)議模型與規(guī)則處理模型的圖結(jié)構(gòu)為覆蓋基礎(chǔ),建立協(xié)議測試的完備性評估方法。協(xié)議規(guī)則處理模型是測試需求的形式化對象,以模型作為覆蓋評估對象能夠清晰且準(zhǔn)確地掌握協(xié)議測試的充分性水平。
首先需要對于數(shù)據(jù)通訊中的消息協(xié)議劃分重要度等級。不同的協(xié)議其重要度存在差異,重要等級更高的消息協(xié)議,需要設(shè)計(jì)更加嚴(yán)格的覆蓋標(biāo)準(zhǔn)。根據(jù)消息協(xié)議失效危害分析,對消息規(guī)則/協(xié)議的使用頻率以及消息錯(cuò)誤產(chǎn)生的危害影響進(jìn)行矩陣分析,可評估消息協(xié)議的重要度等級,并建立不同重要等級的協(xié)議充分性要求,如下表2所示。
協(xié)議測試的覆蓋類型分為圖(規(guī)則)覆蓋和協(xié)議覆蓋,其定義如下:
1)圖(規(guī)則)覆蓋:測試流程作為有向圖,從圖模型的角度評估圖節(jié)點(diǎn)與遷移的覆蓋,包含兩個(gè)覆蓋準(zhǔn)則。
① 圖覆蓋:測試流程中所有的功能節(jié)點(diǎn)至少被覆蓋一次,所有的遷移至少被覆蓋一次。
② 節(jié)點(diǎn)覆蓋:測試流程中所有功能的節(jié)點(diǎn)至少被覆蓋一次。
2)協(xié)議覆蓋:從協(xié)議項(xiàng)和協(xié)議元素項(xiàng)評估消息協(xié)議的有效,協(xié)議級包含協(xié)議項(xiàng)覆蓋,元素項(xiàng)覆蓋考慮協(xié)議中具體數(shù)據(jù)元素的應(yīng)用情況,包含以下兩個(gè)覆蓋準(zhǔn)則。
① 協(xié)議項(xiàng)覆蓋:測試交互環(huán)境模型中所有發(fā)送接收協(xié)議至少被使用一次。
② 協(xié)議元素覆蓋:協(xié)議中所有元素字段,在發(fā)送/接收協(xié)議中至少被使用/驗(yàn)證過一次。
圖覆蓋描述了多個(gè)協(xié)議的應(yīng)用規(guī)則,圖的覆蓋可以有效評價(jià)一個(gè)完整協(xié)議規(guī)則包含的交互行為。消息協(xié)議覆蓋是對消息協(xié)議的使用情況進(jìn)行細(xì)粒度的覆蓋分析,評估消息協(xié)議在測試中的覆蓋情況。
以覆蓋準(zhǔn)則作為測試完備性要求,從測試數(shù)據(jù)集中獲得測試用例的覆蓋信息,統(tǒng)計(jì)測試用例集中包含的測試用例的狀態(tài)(“未執(zhí)行”“通過\"和“不通過”)和覆蓋率情況??梢韵到y(tǒng)分析測試用例集的覆蓋指標(biāo),實(shí)現(xiàn)協(xié)議測試的完備性評估。最后,通過測試的完備性結(jié)果與測試的目標(biāo)進(jìn)行比較,評價(jià)協(xié)議測試的有效情況。
6實(shí)驗(yàn)
為驗(yàn)證本文提出技術(shù)的有效性,基于此技術(shù)研發(fā)了協(xié)議測試系統(tǒng)MSPTV,選擇某數(shù)據(jù)鏈消息通訊中負(fù)責(zé)定位與識別的協(xié)議規(guī)則進(jìn)行驗(yàn)證。該類協(xié)議功能用PPLI消息實(shí)現(xiàn)端機(jī)和平臺位置、狀態(tài)等數(shù)據(jù)的交換。實(shí)驗(yàn)以A級的協(xié)議完備要求作為評估標(biāo)準(zhǔn),測試物理環(huán)境采用一臺裝有測試系統(tǒng)的工控機(jī)作為測試節(jié)點(diǎn),采用兩臺端機(jī)作為協(xié)議測試的通訊節(jié)點(diǎn),基于以太網(wǎng)搭建測試網(wǎng)絡(luò)。實(shí)驗(yàn)設(shè)計(jì)5個(gè)協(xié)議收發(fā)規(guī)則場景和38個(gè)協(xié)議測試用例進(jìn)行測試驗(yàn)證。圖8為實(shí)驗(yàn)中使用MSPTV執(zhí)行某個(gè)測試
用例時(shí)的仿真面板界面。
將傳統(tǒng)基于腳本的測試方法作為比較對象,通過python語言編制用于解析腳本文件并進(jìn)行socket網(wǎng)絡(luò)通訊的工具。分別從測試時(shí)間消耗、測試用例出錯(cuò)情況及測試完備性三方面分析兩類測試方法的綜合效果。
兩種方法的測試耗時(shí)情況如表3所示。從中可以看到采用腳本的測試方法雖然不需要建模的步驟,但在使用腳本進(jìn)行測試設(shè)計(jì)時(shí)的時(shí)間消耗較長,且總測試時(shí)長要顯著高于本文方法。本文方法在建模中消耗的時(shí)間較多,卻在后續(xù)的測試過程中可以通過模型驅(qū)動技術(shù)進(jìn)行自動化,因此需要的總測試時(shí)長更少,減少約 32% 。體現(xiàn)出以模型作為測試數(shù)據(jù)載體的高效率。
通過分析兩種方法在執(zhí)行測試用例與時(shí)間關(guān)系(圖9)可以看出,測試腳本方法的測試用例與時(shí)間消耗總體呈現(xiàn)線性關(guān)系,MSPTV時(shí)間消耗主要集中要測試開始階段,在測試模型構(gòu)建完畢后,測試用例設(shè)計(jì)、生成與執(zhí)行的效率會顯著提高,體現(xiàn)出基于模型的測試方法具備較高的模型復(fù)用率和良好。
測試用例如果自身存在錯(cuò)誤情況將直接影響測試工作本身質(zhì)量,同時(shí)增加用例修改維護(hù)的資源消耗。因此,在設(shè)計(jì)測試用例時(shí),測試用例本身存在錯(cuò)誤率越低,測試質(zhì)量越高且資源消耗越少。比較兩種方法在測試用例設(shè)計(jì)中存在錯(cuò)誤的測試用例數(shù)(不含后續(xù)修復(fù)),如表4所示。實(shí)驗(yàn)數(shù)據(jù)表明,基于腳本的測試方法出錯(cuò)率和用例的修復(fù)時(shí)長要顯著高于MSPTV。原因在于基于模型的方法能夠保證測試信息的一致性,且模型結(jié)構(gòu)進(jìn)行復(fù)雜協(xié)議交互規(guī)則設(shè)計(jì)時(shí)更易理解。
測試完備性評估是評價(jià)測試活動是否充分有效的重要指標(biāo),表5展示了第一輪測試過程的測試覆蓋情況。統(tǒng)計(jì)兩類方法在相同的測試用例數(shù)量對圖級覆蓋和協(xié)議級覆蓋指標(biāo)。在第一輪測試用例設(shè)計(jì)中,腳本測試方法對圖級覆蓋和協(xié)議級覆蓋程度要明顯低于MSPTV方法,特別是在覆蓋難度更大的遷移覆蓋和協(xié)議元素覆蓋指標(biāo),數(shù)據(jù)差異更為明顯。雖然覆蓋率可以通過后續(xù)增補(bǔ)測試用例達(dá)到更高的數(shù)值,但是第一輪的覆蓋率越高,意味MS測試方法能夠使用較少測試用例達(dá)到測試的要求。
表5測試完備性評估表
%
7結(jié)束語
隨著通訊需求的增多、協(xié)議種類、應(yīng)用范圍的擴(kuò)大,人們對保障協(xié)議測試的質(zhì)量與效率提出更高要求。本文基于建模與仿真提出完備協(xié)議測試驗(yàn)證技術(shù),將建模與仿真技術(shù)應(yīng)用在協(xié)議測試領(lǐng)域解決復(fù)雜協(xié)議一致性和互操作性測試問題,通過形式化建模和模型驅(qū)動技術(shù)系統(tǒng)提高了復(fù)雜協(xié)議交互規(guī)則場景設(shè)計(jì)的規(guī)范性和自動化程度。通過實(shí)驗(yàn)證明,本文提出的技術(shù)在提升測試效率的同時(shí)也顯著提升測試質(zhì)量和測試評估有效性,對推進(jìn)MBSE方法在測試領(lǐng)域中實(shí)踐具有重要意義。
本文對測試模型提形式化建模方法,但是仍需要通過手動方式從需求文檔中提取協(xié)議測試需求并構(gòu)建協(xié)議測試場景,在協(xié)議功能需求到協(xié)議測試模型的自動化轉(zhuǎn)換方面仍有不足。如何基于條件規(guī)則實(shí)現(xiàn)協(xié)議處理需求的設(shè)計(jì)與描述,并基于半形式化自然語言的協(xié)議需求到測試模型的自動化生成將是本研究后續(xù)的焦點(diǎn)。
參考文獻(xiàn)
[1]周翔,王兆偉,李曉波,等.數(shù)據(jù)鏈中消息標(biāo)準(zhǔn)的標(biāo)準(zhǔn)化研究 [J].中國電子科學(xué)研究院學(xué)報(bào),2017,12(2):149-154. ZHOU X,WANG Z W,LI X B,et al.Researchon standardization of message standards in data chains [J]. Journal of theChinese Academy ofElectronic Sciences,2017, 12(2): 149-154.
[2]張鵬翼,黃百喬,鞠鴻彬.MBSE:系統(tǒng)工程的發(fā)展方向[J]. 科技導(dǎo)報(bào),2020,38(21):21-26. ZHANGPY,HUANG BQ, JUHB.MBSE: Development Direction ofSystemsEngineering[J].Scienceand TechnologyReview,2020,38(21):21-26.
[3]吳新泉,葉玲,高鑫等.基于DEVS的 SysML 混合模型仿真 代碼自動生成方法[J].指揮信息系統(tǒng)與技術(shù),2023,14(1): 81-87. WU X Q, YEL, GAO X, et al . Automatic generation method ofsimulation code for SysML hybrid model basedon DEVS[J]. Command Information Systems and Technology, 2023,14(1): 81-87.
[4]LUO Z, ZHAO L,TIAN W, et al. Data link modeling and simulation based on DEVS[C]//Proceedings of the 2019 2nd International Conference on Signal Processing and Machine Learning.2019: 35-40.
[5]王霄漢,張霖,賴?yán)铈戮?,?基于DEVS原子模型的智能體 離散仿真構(gòu)建方法[J].系統(tǒng)仿真學(xué)報(bào),2022,34(2):191- 200. WANG XH,ZHANGL,LAILYJ,et al.Methodfor constructing discrete simulation of intelligent agents based on DEVS atomic model[J]. Journal of System Simulation, 2022, 34(2):191-200.
[6]黃雙芹,劉英博,黃向生.模型驅(qū)動開發(fā)工具的自動化測試 僅九J」.異子,ZU1,4o(1j.J00-J/ HUANG SQ,LIUYB,HUANGXS.Research onautomated testing technology for model driven development tools[J]. Computer Science, 2021, 48(S1): 568-571.
[7]ROCHA M, SIMAO A, SOUSA T. Model-based test case generation from UML sequence diagrams using extended finite state machines[J]. Software Quality Journal, 2021,29: 597-627.
[8]羊鈴霞,陳元松,件林博,等.基于模型驅(qū)動的Web應(yīng)用自 動化測試平臺設(shè)計(jì)與應(yīng)用[J].計(jì)算機(jī)測量與控制,2022, 30(5): 30-36. YANG L X,CHEN Y S,WU L B,et al .Design and application of model driven web application automation testing platform[J]. Computer Measurement and Control, 2022, 30(5): 30-36.
[9]MOHD-SHAFIEM L, KADIRWMNW, KHATIBSYARBINI M, et al. An EFSM-Based test data generation approach in model-based testing[J]. CMCComputersMaterialsamp;Continua,2022,71(3):4337-4354.
[10] 陳升來.Link16數(shù)據(jù)鏈協(xié)議一致性測試方法研究[J].信息 化研究,2014,40(2):38-41. CHEN S L. Research on consistency testing method for Link 16 data link protocol[J]. Informationization Research,2014, 40(2): 38-41.
[11] 趙露露,王蘇樂,田萬勇.基于建模與仿真的數(shù)據(jù)鏈互操作 性動態(tài)測試[C]//中國指揮與控制學(xué)會.2019第七屆中國指 揮控制大會論文,2019:5. ZHAO L L, WANG S L, TIAN W Y. Dynamic testing of data linkinteroperability based on modeling and simulation [C]//Chinese Command and Control Society Proceedings of the 7th China Conference on Command and Control,2019:5.
[12] 田萬勇,趙露露,杜利剛,等.基于建模與仿真的Link-16 協(xié) 議一致性測試[J].現(xiàn)代導(dǎo)航,2021,12(4):284-288. TIANWY,ZHAOLL,DULG,et al.Link-16 protocol consistency testing based on modeling and simulation[J]. Modern Navigation,2021, 12(4): 284-288.
[13]邱曉剛,段偉.DEVS研究進(jìn)展及其對建模與仿真學(xué)科建立 的作用[J].系統(tǒng)仿真學(xué)報(bào),2009,21(21):6697-6704. QIU X G, DUAN W. Progress in DEVS research and its role inestablishing the discipline ofmodelingand simulation[J]. Journal of System Simulation,2009,21(21): 6697-6704.
[14]張帆,靳曉妍.基于視頻圖像的嵌入式水位監(jiān)測方法[J].中 國測試,2022,48(2): 140-145. ZHANGF,JINX Y.Embedded water level monitoring method based on video image[J]. China Measurementamp; Test,2022,48(2): 140-145.
(編輯:劉楊)