一種基于SysML模塊圖的集成測試序列生成方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)軟件測試領(lǐng)域,主要涉及一種基于SysML模塊圖的集成測試序 列生成方法。
【背景技術(shù)】
[0002] 嵌入式實(shí)時系統(tǒng)中存在復(fù)雜的邏輯關(guān)系,且已廣泛運(yùn)用于航空、軍事等領(lǐng)域中。隨 著航空設(shè)備軟件化的概念日趨明顯,軟件已成為飛控、火控、航電及維修保障的核心。在波 音757的飛控系統(tǒng)中,支持系統(tǒng)冗余度管理和故障檢測的代碼部分超過整個代碼的55%。然 而,系統(tǒng)規(guī)模和復(fù)雜性的迅速增長,使測試所需的用例成數(shù)量級的增長。如何合理的設(shè)計(jì)測 試用例是軟件測試領(lǐng)域的關(guān)鍵問題。測試用例的自動生成實(shí)質(zhì)就是根據(jù)軟件開發(fā)各階段的 規(guī)格說明和程序的內(nèi)部機(jī)構(gòu)精心選取一批測試用例的過程,具體實(shí)現(xiàn)包括兩階段:提取測 試序列和選取滿足各序列執(zhí)行要求的測試用例集,也就是說,測試用例的設(shè)計(jì)是由測試序 列為引導(dǎo)。
[0003] 目前在行業(yè)內(nèi),基于模型的自動化測試主要集中在基于UML的測試用例自動生成 上。江南大學(xué)的任洪麗,為了防止在測試用例自動生成過程中出現(xiàn)狀態(tài)爆炸問題,提出了一 種使用改進(jìn)的蟻群算法直接從UML狀態(tài)機(jī)圖中生成測試用例的方法。針對單一 UML模型測試 不充分的問題,重慶大學(xué)的曾一通過結(jié)合UML類圖、順序圖、交互概覽圖,構(gòu)造可測試交互概 覽圖,并基于該模型提出一種測試線索生成方法。南京大學(xué)的陳鑫采用了面向路徑的測試 用例生成方法,為了滿足對安全攸關(guān)場景建模的需求,對UML活動圖擴(kuò)充了時間驅(qū)動機(jī)制和 時間特性描述機(jī)制,然后以簡單路徑覆蓋準(zhǔn)則為導(dǎo)向,自動生成測試用例,實(shí)現(xiàn)對場景中所 有可能運(yùn)行的完全覆蓋。如文獻(xiàn):(1)任洪麗,張偉,李文瑞.基于改進(jìn)蟻群算法UML狀態(tài)機(jī)圖 的測試用例生成[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31 (17): 3835-3837,3928; (2)曾一,王翠欽, 李函逾,洪豪.基于UML交互概覽圖的測試線索生成方法[J].計(jì)算機(jī)應(yīng)用,2014,34(1):270_ 275,291;(3)陳鑫,姜鵬,張一帆,黃超,周巖.一種面向列車控制系統(tǒng)中安全攸關(guān)場景的測 試用例自動生成方法[J].軟件學(xué)報,2015,26(2): 269-278。
[0004] 雖然上述方法能夠在部分程度上通過對系統(tǒng)建模以達(dá)到測試要求,但總體而言, 這些方法都是從軟件層面來對系統(tǒng)結(jié)構(gòu)進(jìn)行建模,難以對包括硬件設(shè)備的復(fù)雜嵌入式實(shí)時 系統(tǒng)進(jìn)行一致性驗(yàn)證分析。SysML是系統(tǒng)工程應(yīng)用開發(fā)的標(biāo)準(zhǔn)語言,能夠彌補(bǔ)功能描述不 足、模型互操作性差、模型缺乏嚴(yán)格的語義等UML在系統(tǒng)工程領(lǐng)域中建模所存在的問題。
[0005] 綜上所述,本文使用SysML模塊圖對嵌入式實(shí)時系統(tǒng)進(jìn)行建模,提出了一種可行的 集成測試策略,并以相應(yīng)的覆蓋準(zhǔn)則為導(dǎo)向,自動生成集成測試序列集。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明的目的在于為了降低軟件測試人員的工作強(qiáng)度、提高軟件測試效率,提供 了一種基于SysML模塊圖的集成測試序列生成方法。該方法適用于嵌入式系統(tǒng)中的功能模 塊集成測試。
[0007] 為了實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明的技術(shù)方案是,針對嵌入式系統(tǒng)邏輯上的功能組 合關(guān)系提出一種先約束再組合、先成對再成組、由里到外、自底向上的集成測試策略;然后 以覆蓋準(zhǔn)則為導(dǎo)向,自動生成集成測試序列集。
[0008] 本發(fā)明的具體步驟如下:
[0009] (1)嵌入式系統(tǒng)的功能分組能夠?qū)⒏鲬?yīng)用系統(tǒng)之間的邏輯關(guān)系組織起來,通過對 這種邏輯關(guān)系進(jìn)行分析,提出一種集成測試策略。具體如下:
[0010] 先約束再組合:在嵌入式系統(tǒng)中,若模塊與其他模塊之間具有數(shù)據(jù)交換,那么先對 具有數(shù)據(jù)交換關(guān)系的模塊進(jìn)行集成測試,否則將模塊與上層模塊進(jìn)行集成測試;
[0011] 先成對再成組:在功能分解樹中,先將處于同一層次的模塊分別與上層模塊進(jìn)行 集成測試,再將已測試完畢的模塊進(jìn)行集成,以保證模塊的充分性測試;
[0012] 由里到外:在嵌入式系統(tǒng)中,一個模塊是由多個內(nèi)部模塊組合而成,因此,從最里 面的模塊開始,逐步添加外層模塊,進(jìn)行集成測試;
[0013] 自底向上:由于功能分解樹具有良好的層次結(jié)構(gòu)關(guān)系,因此,從功能分解樹的葉子 節(jié)點(diǎn)開始,逐步添加上層模塊,進(jìn)行集成測試。
[0014] (2)分析待測嵌入式軟件系統(tǒng)的需求和設(shè)計(jì),繪制SysML模塊圖,建立一個基于元 數(shù)據(jù)交換的可擴(kuò)展標(biāo)記語言(XMI)文件。
[0015] (3)解析XMI文件,提取模塊圖中的模塊、關(guān)聯(lián)、依賴、交互等基本元素。
[0016] (4)對解析出SysML模塊圖進(jìn)行元素缺失、一致性檢測,保證SysML模塊圖的完整性 和一致性。
[0017] (5)將SysML模塊圖轉(zhuǎn)換成有向圖。
[0018] (6)在嵌入式系統(tǒng)開發(fā)中,設(shè)計(jì)人員會依據(jù)功能的組合關(guān)系將系統(tǒng)進(jìn)行逐層劃分, 將一個完整的系統(tǒng)通過邏輯上的功能分組劃分為若干個模塊。對于這些系統(tǒng)來說,功能分 解樹就是集成測試的依據(jù),因此提出了相關(guān)模塊分支覆蓋準(zhǔn)則。在系統(tǒng)中,模塊與模塊之間 不僅存在功能組合關(guān)系,還有可能存在數(shù)據(jù)交換的問題。為了使測試更加充分,針對這個問 題,提出了關(guān)鍵模塊覆蓋準(zhǔn)則。最后以測試覆蓋準(zhǔn)則為導(dǎo)向,遍歷有向圖,自動生成集成測 試序列集。兩個覆蓋準(zhǔn)則具體內(nèi)容如下:
[0019] 相關(guān)模塊分支覆蓋準(zhǔn)則:若集合t滿足相關(guān)模塊分支覆蓋準(zhǔn)則且t是一組分支覆蓋 的真值,t所包含的真值組合分別使得主要分支覆蓋B取真假各一次,且每個模塊覆蓋Μ取不 同的真值,那么,集合t滿足相關(guān)模塊分支覆蓋準(zhǔn)則。
[0020] 關(guān)鍵模塊覆蓋準(zhǔn)則:若存在集合t={A,B},當(dāng)且僅當(dāng)A為一個或若干個模塊,B為與 A相鄰的關(guān)鍵程度最高的模塊,則集合t滿足關(guān)鍵模塊覆蓋準(zhǔn)則。
[0021] 其中,主要分支覆蓋為在其他分支覆蓋的真值不變的情況下,其真值的變化會造 成模塊覆蓋真值的變化;所述的模塊覆蓋為當(dāng)前模塊被測情況,若當(dāng)前模塊所包含的模塊 都被測完,則真值為1,否則為〇;關(guān)鍵程度為在SysML內(nèi)部模塊圖中模塊的度。
[0022] (7)輸出分析報告和日志信息。
[0023]由上述技術(shù)方案可知,本發(fā)明提供了一種基于SysML模塊圖的集成測試序列生成 方法。該方法結(jié)合了模型驅(qū)動的工程技術(shù),通過對嵌入式系統(tǒng)進(jìn)行分析,自動生成覆蓋完整 的集成測試序列。針對模塊之間的功能組合關(guān)系和數(shù)據(jù)交換的問題,提出了兩種覆蓋準(zhǔn)則, 使得集成測試更加充分。測試過程中高度自動化,提高了軟件測試效率,具有覆蓋率高、響 應(yīng)快等特點(diǎn),適用于集成復(fù)雜度較大、各應(yīng)用系統(tǒng)間交聯(lián)關(guān)系較多的嵌入式系統(tǒng)。
【附圖說明】
[0024] 圖1為本發(fā)明的測試序列生成流程圖。
[0025] 圖2為模塊之間數(shù)據(jù)交換示意圖。
[0026]圖3為模塊之間組合關(guān)系示意圖。
【具體實(shí)施方式】
[0027]本發(fā)明為嵌入式軟件測試中一種基于SysML模塊圖的集成測試序列生成方法,圖1 是本發(fā)明的流程圖,其具體的實(shí)施方式如下:
[0028] S1、分析待測嵌入式軟件系統(tǒng)的需求和設(shè)計(jì),在模型驅(qū)動可視化開發(fā)軟件 Rhapsody中繪制SysML模塊圖,其中,使用模塊定義圖描述模塊間的功能組合關(guān)系,使用內(nèi) 部模