張小艷,文 輝
(西安科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,陜西 西安 710054)
基于ASL的模型驅(qū)動架構(gòu)測試方法*
張小艷,文 輝
(西安科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,陜西 西安 710054)
針對模型驅(qū)動架構(gòu)(MDA)下的軟件開發(fā)方法中測試啟動比較晚、難以發(fā)現(xiàn)隱藏在模型中的缺陷及UML模型描述缺乏精確語義等問題,提出了基于ASL的模型測試方法:從UML模型出發(fā),將動作規(guī)約語言(ASL)運(yùn)用于平臺無關(guān)模型(PIM)上建立測試模型。給出了ASL語句在MDA過程中的工作原理、平臺無關(guān)模型的建立過程、測試用例建立的步驟、測試執(zhí)行的實(shí)施過程,最后結(jié)合實(shí)例,在UML圖的基礎(chǔ)上運(yùn)用ASL對測試環(huán)境進(jìn)行構(gòu)建,并創(chuàng)建了系統(tǒng)的測試用例,對模型及業(yè)務(wù)邏輯進(jìn)行了測試。實(shí)驗(yàn)結(jié)果表明,提出的基于ASL的模型測試方法既能利用模型驅(qū)動對復(fù)雜的測試用例進(jìn)行簡化和抽象,又能在軟件生存期早期揭示軟件的缺陷,防止缺陷隨著軟件開發(fā)過程的進(jìn)行而被放大。
模型驅(qū)動架構(gòu);動作規(guī)約語言;平臺無關(guān)模型;測試用例
模型驅(qū)動架構(gòu)MDA(Model Driven Architecture)是一種對業(yè)務(wù)邏輯建立抽象模型,然后由抽象模型自動產(chǎn)生最終完備的應(yīng)用程序的方法。MDA軟件開發(fā)方法已經(jīng)成為提高軟件質(zhì)量和開發(fā)效率的一種新的軟件開發(fā)范型[1]。基于 MDA的測試是在業(yè)務(wù)邏輯建模時開始軟件測試工作,即在開發(fā)早期用UML圖結(jié)合業(yè)務(wù)邏輯的形式建立測試模型、執(zhí)行測試用例并且反饋測試結(jié)果。
在MDA中,平臺無關(guān)模型PIM(Platform Independent Model)隱藏實(shí)現(xiàn)細(xì)節(jié)以獲取系統(tǒng)的業(yè)務(wù)級視圖,這種系統(tǒng)抽象級別的提升帶來了一些測試上的問題,例如,(1)測試啟動比較晚,在系統(tǒng)完成后才啟動;(2)難以發(fā)現(xiàn)隱藏在模型中的缺陷[2]。
UML為MDA模型提供了可視化的表示和基礎(chǔ)的語義,但大部分的動作或方法還沒有精確的語義定義,所以其相關(guān)應(yīng)用(如基于模型的測試用例)無法得以精確地描述。
本文引入動作規(guī)約語言ASL(Action Specification Language)對業(yè)務(wù)模型中的動作進(jìn)行清晰、精確且抽象的描述,建立系統(tǒng)測試用例,并且無歧義地執(zhí)行測試來監(jiān)視測試結(jié)果,實(shí)現(xiàn)單元測試和回歸測試的平臺無關(guān)化。
MDA中,模型可分為平臺無關(guān)模型PIM、平臺相關(guān)模型PSM(Platform Specific Model)兩種[3]。PIM是一個系統(tǒng)的形式化規(guī)范,它與具體的技術(shù)細(xì)節(jié)無關(guān);PSM是基于某一具體目標(biāo)平臺的形式化規(guī)范。PIM與PSM一般都使用UML創(chuàng)建,但UML是一種半形式化的語言,其模型描述缺乏精確語義,所以,在目前的軟件開發(fā)過程中,很難利用工具去驗(yàn)證和分析UML模型的正確性。ASL的出現(xiàn)彌補(bǔ)了這一缺陷,ASL是一個與實(shí)現(xiàn)語言無關(guān)的動作語言,通過編譯器編譯后可直接執(zhí)行,因此可以用ASL編寫基于模型的測試用例。它是一種符合UML動作語義標(biāo)準(zhǔn)的語言,提供了操縱模型元素的能力,為部分UML模型增加了可執(zhí)行行為的定義,并且又不偏向于任何實(shí)現(xiàn)技術(shù)[4]。
ASL語句在MDA過程中的工作原理如圖1所示,ASL語句段總是與常規(guī)UML模型元素關(guān)聯(lián)。各抽象層之間的行為是相互映射的,PIM層中的每一句ASL語句都可以在PSM層和代碼層中找到相應(yīng)的實(shí)現(xiàn)。
PIM對應(yīng)分析模型,它處于中間抽象層次,關(guān)注系統(tǒng)的整個架構(gòu)實(shí)現(xiàn),與平臺無關(guān)。建立PIM的目的是為了理解問題域,獲取和表達(dá)所有業(yè)務(wù)需求,并且包含了對系統(tǒng)的所有規(guī)約[5]。作為測試對象,平臺無關(guān)模型主要包含域模型圖、用例圖、順序圖、類圖、協(xié)作圖、狀態(tài)機(jī)圖等。基于ASL的模型測試技術(shù)主要以類圖和狀態(tài)圖為基礎(chǔ),加入ASL語句對模型中的動作進(jìn)行擴(kuò)展。圖2給出了ASL協(xié)助建立模型的示例。

Figure 1 Work principle of ASL圖1 ASL工作原理圖

Figure 2 ASL assist in the establishment of model圖2 ASL協(xié)助建立模型
其建立步驟如下:
步驟1域模型的建立。在域模型中,將系統(tǒng)按主題劃分為不同的域,每一個域表示系統(tǒng)中的一個獨(dú)立的主題事務(wù)。
步驟2建立域中的類圖。類圖是平臺獨(dú)立模型的靜態(tài)視點(diǎn),由類名、屬性和方法組成,并且類之間存在關(guān)聯(lián)關(guān)系。其中,方法用來表示通過帶參數(shù)的接口來調(diào)用的動作,在方法中可以進(jìn)行業(yè)務(wù)邏輯的處理和數(shù)據(jù)的計(jì)算。但是,類圖僅是結(jié)構(gòu)化的聲明,每個類方法的行為都由詳細(xì)的ASL描述。圖2中,通過ASL描述后,Traffic Light類的Display Traffic_Light方法在模型層具有了可執(zhí)行能力。
步驟3針對動態(tài)類創(chuàng)建狀態(tài)圖。每個類最多有一個狀態(tài)機(jī),該狀態(tài)機(jī)描述了所有該類對應(yīng)對象的行為。每個狀態(tài)有且只有一個相關(guān)聯(lián)的動作,該動作在對象進(jìn)入這個狀態(tài)的時候執(zhí)行。每個轉(zhuǎn)換上都附有一個信號,該信號導(dǎo)致了轉(zhuǎn)換的發(fā)生[6]。狀態(tài)圖建模過程從識別代表常規(guī)行為的狀態(tài)開始,ASL用來描述狀態(tài)中的動作以及那些能觸發(fā)狀態(tài)轉(zhuǎn)移的信號。如圖2所示,ASL將系統(tǒng)的動態(tài)行為在狀態(tài)圖中展現(xiàn)出來,是對靜態(tài)模型的補(bǔ)充,也是基于ASL模型測試的重要組成部分。
使用ASL建立測試用例的過程:首先在測試初始化片段中詳述測試環(huán)境和初始條件;然后以一個或多個片段的方式描述PIM中的每個測試用例。
2.3.1 初始化片段的創(chuàng)建
初始化片段由ASL語句段組成,主要用來構(gòu)建測試用例執(zhí)行環(huán)境,包括測試用例所基于的場景、提供給待測試系統(tǒng)的輸入以及期望的輸出(稱之為測試預(yù)期)。初始化片段分布在獨(dú)立的可執(zhí)行文件中,可以單獨(dú)執(zhí)行。創(chuàng)建初始化片段步驟如下:

2.3.2 測試用例的建立
根據(jù)測試目的的不同將測試分為兩類:一類是模型語義的測試;一類是場景的模擬,即驗(yàn)證需求規(guī)格是否在平臺無關(guān)層正確建模。
模型語義的測試是指對模型元素中對象、屬性、關(guān)系及約束的測試,包括對象唯一性驗(yàn)證、對象關(guān)聯(lián)的導(dǎo)航與驗(yàn)證、方法的調(diào)用、類型一致性檢驗(yàn)等。


(4)ASL是強(qiáng)類型語言,因此模型編譯器可以檢查屬性和本地變量的類型是否一致,這樣在一定程度上確保了類型信息的準(zhǔn)確性。
在PIM中,ASL已經(jīng)將系統(tǒng)的動態(tài)特性完全描述出來,針對特定的業(yè)務(wù)需求,可以通過描繪事件觸發(fā)時的場景來測試系統(tǒng),稱之為場景模擬測試法[7]。從需求規(guī)格說明出發(fā),描述系統(tǒng)用例場景和場景中的動作,把狀態(tài)遷移(測試路徑)的測試與類模型的測試組合起來。以信號序列激發(fā)場景模擬測試,通過檢查對象在接收信號后是否轉(zhuǎn)移到預(yù)期狀態(tài),以及對對象的數(shù)據(jù)成員值的變化情況進(jìn)行跟蹤來驗(yàn)證狀態(tài)本身或者轉(zhuǎn)換是否正確[7]。主要方式有以下幾種:

以上兩類測試構(gòu)成了基于ASL的測試用例。模型語義測試對模型細(xì)節(jié)部分進(jìn)行測試,而場景測試則是在需求規(guī)格的視角下將應(yīng)用場景描述出來,是從全局來測試系統(tǒng)。在場景模擬過程中也穿插著對模型語義的測試,實(shí)現(xiàn)對系統(tǒng)模型的全面測試。
基于ASL的測試執(zhí)行過程分為四步:
步驟1將模型、測試規(guī)則等導(dǎo)入,利用模型分析和驗(yàn)證器完成語法分析和驗(yàn)證,保證模型的完整性及語法的正確性。
步驟2執(zhí)行初始化片段,建立測試所需的執(zhí)行環(huán)境和初始化狀態(tài)。
步驟3 為了調(diào)試而交互地執(zhí)行測試用例,或者為了回歸測試而以批處理的方式執(zhí)行測試用例。
步驟4 根據(jù)測試結(jié)果反復(fù)精化模型,直到對于每個測試用例都產(chǎn)生了期望的結(jié)果,并且驗(yàn)證了業(yè)務(wù)需求的正確性。
圖3展示了測試執(zhí)行過程。

Figure 3 Process of test execution圖3 測試執(zhí)行過程
目前,支持ASL語言編譯的工具為Kennedy Carter公司的iUML,它通過可執(zhí)行UML實(shí)現(xiàn)MDA過程,而對平臺無關(guān)模型的測試支持不足,基于ASL的模型測試技術(shù)彌補(bǔ)了iUML工具在測試方面的缺陷。
以煤質(zhì)預(yù)測預(yù)報(bào)系統(tǒng)為例,簡要說明在MDA架構(gòu)中運(yùn)用ASL完成模型測試。煤質(zhì)預(yù)測預(yù)報(bào)系統(tǒng)簡要過程是:運(yùn)用煤礦煤質(zhì)計(jì)劃數(shù)據(jù)、生產(chǎn)過程煤質(zhì)數(shù)據(jù)、煤層煤樣數(shù)據(jù),通過煤質(zhì)預(yù)測模型給出下月或下一年度的煤質(zhì)數(shù)據(jù)[8]。
測試初始化環(huán)境控制著測試初始狀態(tài)以及所有測試預(yù)期,它是否模擬了真實(shí)環(huán)境將決定測試結(jié)果的真實(shí)性和正確性[9]。下面根據(jù)煤質(zhì)實(shí)際生產(chǎn)數(shù)據(jù)來建立業(yè)務(wù)對象并初始化數(shù)據(jù):


運(yùn)用ASL中關(guān)聯(lián)漫游、調(diào)用方法、發(fā)送信號等關(guān)鍵特征對煤質(zhì)預(yù)測過程進(jìn)行測試。部分測試片段如下:

在測試用例中,通過find-only操作,確保模型中只提供了唯一的有效句柄,判斷actual不為UNDEFINED則向類對應(yīng)狀態(tài)機(jī)發(fā)送信號PT1:Request_Data(),激發(fā)狀態(tài)跳轉(zhuǎn)并執(zhí)行入口動作。入口動作中通過關(guān)聯(lián)漫游導(dǎo)航對象關(guān)系,驗(yàn)證對象屬性值并進(jìn)行業(yè)務(wù)的處理。若測試用例執(zhí)行過程中報(bào)錯或者被測系統(tǒng)的行為與模型期望不一致,針對錯誤類型修改模型或者調(diào)整測試用例,直到模型反映出系統(tǒng)的預(yù)期行為。
本文針對模型驅(qū)動架構(gòu)(MDA)下的軟件開發(fā)方法中測試啟動比較晚、難以發(fā)現(xiàn)隱藏在模型中的缺陷及UML模型描述缺乏精確語義等問題,提出了基于ASL的模型測試方法。在模型驅(qū)動的基礎(chǔ)上使用ASL進(jìn)行模型測試建模,即在模型上下文中為處理行為和產(chǎn)生的結(jié)果提供無歧義的、精確的且易讀的定義。針對模型語義以及需求規(guī)格中的場景設(shè)計(jì)測試用例,完成對模型的測試。這樣既能利用模型驅(qū)動對復(fù)雜的測試用例進(jìn)行一種簡化和抽象,也賦予了開發(fā)者建立和集成真正的可復(fù)用測試組件的能力。
[1] Liu Jing,He Ji-feng,Miao Huai-kou.A strategy for model construction and integration in MDA[J].Journal of Software,2006,17(6):1411-1422.(in Chinese)
[2] OMG.Model driven architecture[EB/OL].[2012-08-20].http://www.omg.org/mda/.
[3] Wang Lin-zhang,Li Xuan-dong,Zheng Guo-liang.Research on model-driven software testing[J].Computer Science,2005,32(10):230-235.(in Chinese)
[4] Liu Yang,Li Ya-fen,Wang Pu.Automatic generation framework of model-driven test cases[J].Computer Engineering,2011,37(1):39-40.(in Chinese)
[5] Chris R,Paul F,John W,et al.Driven architecture with executable UML[M].Zhao Jian-hua,Zhang-Tian,Translation.Beijing:China Machine Press,2006.(in Chinese)
[6] Yang Jing,Gu Chun-hua.Automatic test case generation method based on UML state diagram[J].Journal of East China U-niversity of Science and Technology,2011,37(3):346-351.(in Chinese)
[7] Stefan B.Model driven test case construction[C]∥Proc of the 6th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering,2007:587-590.
[8] Wu Xue-tao.Forecast in coal quality management[J].Energy Technology and Management,2011(2):156-157.(in Chinese)
[9] Xu Hong-zhe,Chen Jian-ming.The auto-testing technology of UML[M].Xi’an Jiaotong University Press,2006.(in Chinese)
附中文參考文獻(xiàn):
[1] 劉靜,何積豐,繆淮扣.模型驅(qū)動架構(gòu)中模型構(gòu)造與集成策略[J].軟件學(xué)報(bào),2006,17(6):1411-1422.
[3] 王林章,李宣東,鄭國梁.模型驅(qū)動的軟件測試研究[J].計(jì)算機(jī)科學(xué),2005,32(10):230-235.
[4] 劉揚(yáng),李亞芬,王普.模型驅(qū)動的測試用例自動生成框架[J].計(jì)算機(jī)工程,2011,37(1):39-40.
[5] Chris R,Paul F,John W,等.MDA與可執(zhí)行 UML[M].趙建華,張?zhí)欤g.北京:機(jī)械工業(yè)出版社,2006.
[6] 楊晶,顧春華.基于UML狀態(tài)圖的測試用例自動生成方法[J].華東理工大學(xué)學(xué)報(bào),2011,37(3):346-351.
[8] 吳雪濤.預(yù)測預(yù)報(bào)在煤質(zhì)管理中的應(yīng)用[J].能源技術(shù)與管理,2011(2):156-157.
[9] 徐宏喆,陳建明.UML自動化測試技術(shù)[M].西安:西安交通大學(xué)出版社,2006.
Testing method for model driven architecture based on ASL
ZHANG Xiao-yan,WEN Hui
(College of Computer Science and Technology,Xi’an University of Science and Technology,Xi’an 710054,China)
Aiming at the issues of late test start-up in software development methods with model driven architecture(MDA),difficulty in finding the flaws hidden in models,deficient precise semantemes in UML model description and others,proposes a model test method based on ASL:Starting from the UML model,Action Specification Language(ASL)is applied to platform independent model(PIM)in order to build a test model.Narrates the operation mode of ASL sentences in MDA process,creating process of PIM,steps for building test cases,implementation of tests,and finally applies ASL to build test environment on the basis of UML diagrams by combining examples and creates systematical test cases to test the model and business logic.Experimental results show that the proposed model test method based on ASL can not only simplify and abstract the complicated test cases by using model driven,but also disclose the flaws in the earlier part of software life cycle,preventing the flaws from being amplified as the software development process continues.
model driven architecture;action specification language;platform independent model;test case
TP311.5
A
10.3969/j.issn.1007-130X.2014.04.016
2012-09-11;
2012-12-19
通訊地址:710054陜西省西安市西安科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院
Address:College of Computer Science and Technology,Xi’an University of Science and Technology,Xi’an 710054,Shaanxi,P.R.
China
1007-130X(2014)04-0662-05
張小艷(1967-),女,陜西西安人,教授,研究方向?yàn)榫W(wǎng)絡(luò)集成與數(shù)據(jù)技術(shù)、知識工程與智能系統(tǒng)。E-mail:xust_software@163.com
ZHANG Xiao-yan,born in 1967,professor,her research interests include network integration and data technology,knowledge engineering and intelligent systems.
文輝(1987-),男,湖南株洲人,碩士生,研究方向?yàn)槟P万?qū)動架構(gòu)和基于模型的測試。E-mail:284860391@qq.com
WEN Hui,born in 1987,MS candidate,his research interests include modeldriven architecture,and model-based testing.