李丹丹 劉曉燕 曹榮凱 嚴(yán)馨
摘? 要: 最近OMG推出的交互流建模語(yǔ)言(IFML),其強(qiáng)大的用戶(hù)界面建模功能現(xiàn)已逐漸應(yīng)用于RIA用戶(hù)界面模型驅(qū)動(dòng)開(kāi)發(fā)早期的建模階段。然而針對(duì)RIA用戶(hù)界面測(cè)試依舊停留在開(kāi)發(fā)后期才能使用傳統(tǒng)技術(shù)進(jìn)行的問(wèn)題,使得測(cè)試工作需要花費(fèi)大量的時(shí)間和成本。文章給出一種基于IFML元模型自動(dòng)生成RIA用戶(hù)界面測(cè)試用例的方法。首先,通過(guò)Eclipse IFML編輯器建立RIA用戶(hù)界面的IFML元模型;然后,分別闡述了將IFML元模型轉(zhuǎn)換到測(cè)試用例、時(shí)間自動(dòng)機(jī)的轉(zhuǎn)換規(guī)則,并通過(guò)轉(zhuǎn)換引擎生成對(duì)應(yīng)文件;其次,通過(guò)UPPAAL對(duì)生成的自動(dòng)機(jī)導(dǎo)航模型進(jìn)行死鎖和可達(dá)性驗(yàn)證;最后以實(shí)例進(jìn)行了方法驗(yàn)證。
關(guān)鍵詞: RIA用戶(hù)界面測(cè)試; 用例自動(dòng)生成; 交互流建模語(yǔ)言; 元模型建立; 轉(zhuǎn)換規(guī)則; 文件生成
中圖分類(lèi)號(hào): TN911.23?34; TP311? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼: A? ? ? ? ? ? ? ? ? ? ?文章編號(hào): 1004?373X(2020)18?0043?04
Abstract: In allusion to the IFML (interactive flow modeling language) is rolled out by OMG, its powerful user interface modeling capabilities. are increasingly used in the early modeling phase of RIA (rich internet application) user interface model?driven development? As the traditional techniques are still applied into the later stage of development for the testing of the RIA user interface, which makes the testing work take a lot of time and cost, a method of RIA user interface test case′s automatic generation based on IFML meta?model is provided. The IFML meta?model of the RIA user interface is built with the Eclipse IFML editor. The conversion rules of converting the IFML meta?model to the test case and the timed automata are elaborated respectively, and the corresponding files are generated by the conversion engine. The deadlock and reachability of the generated automaton navigation model are verified by UPPAAL. The method is verified by an example.
Keywords: RIA user interface test; case automatic generation; interactive flow modeling language;? meta?model building; conversion rule; file generation
0? 引? 言
近年來(lái),軟件應(yīng)用市場(chǎng)對(duì)用戶(hù)界面的需求逐漸變得豐富且復(fù)雜,因此,傳統(tǒng)的基于Html的Web應(yīng)用程序的用戶(hù)界面越來(lái)越體現(xiàn)出它們的局限性,已不能滿(mǎn)足網(wǎng)絡(luò)瀏覽者更高的、全方位的體驗(yàn)要求。而互聯(lián)網(wǎng)應(yīng)用程序(Rich Internet Application,RIA)[1]的出現(xiàn)解決了這個(gè)問(wèn)題。RIA由于結(jié)合了桌面應(yīng)用程序良好的用戶(hù)交互體驗(yàn)和Web應(yīng)用程序部署的靈活性,很快獲得了企業(yè)界的青睞。由于RIA用戶(hù)界面包含豐富的界面元素,使得界面體系結(jié)構(gòu)也因此變得復(fù)雜。隨著RIA的廣泛應(yīng)用,人們通過(guò)筆記本電腦、手機(jī)、臺(tái)式電腦、iPAD等各種設(shè)備訪問(wèn)RIA,因此需要提供通用的用戶(hù)界面滿(mǎn)足不同的用戶(hù)需求,導(dǎo)致RIA用戶(hù)界面的開(kāi)發(fā)和測(cè)試工作也逐漸變得復(fù)雜且耗時(shí)。模型驅(qū)動(dòng)工程[2]是一種著名的軟件工程開(kāi)發(fā)方法,簡(jiǎn)化了開(kāi)發(fā)過(guò)程,并提供早期設(shè)計(jì)驗(yàn)證功能,廣泛應(yīng)用于嵌入式系統(tǒng)、信息系統(tǒng)等領(lǐng)域。為了降低RIA用戶(hù)界面開(kāi)發(fā)和測(cè)試的難度,必須從模型驅(qū)動(dòng)需求分析階段開(kāi)始設(shè)計(jì)。事實(shí)上,已經(jīng)有一些針對(duì)應(yīng)用程序用戶(hù)界面開(kāi)發(fā)早期的需求建模技術(shù),比如UML,WebML等,但它們對(duì)用戶(hù)界面內(nèi)容、用戶(hù)交互、控制行為等重要特征的描述還不夠完整和準(zhǔn)確。交互流建模語(yǔ)言(Interaction Flow Modeling Language,IFML)[3]的出現(xiàn)簡(jiǎn)化了RIA用戶(hù)界面開(kāi)發(fā)前期的建模設(shè)計(jì)工作。IFML是以圖形化的方式描述用戶(hù)界面需求,并且可以通過(guò)擴(kuò)展的方式描述更為復(fù)雜的大型應(yīng)用用戶(hù)界面,操作靈活度高[4]。IFML同時(shí)支持對(duì)任何類(lèi)型的設(shè)備訪問(wèn)RIA用戶(hù)界面進(jìn)行平臺(tái)無(wú)關(guān)的描述。然而,到目前為止,IFML還未提供用戶(hù)界面需求設(shè)計(jì)的驗(yàn)證和測(cè)試功能,僅在開(kāi)發(fā)后期對(duì)用戶(hù)界面的功能進(jìn)行測(cè)試,這顯著降低了軟件的開(kāi)發(fā)效率和軟件質(zhì)量。因此,本文給出一種從IFML元模型自動(dòng)生成測(cè)試用例的方法,這將在開(kāi)發(fā)工作的初始階段執(zhí)行用戶(hù)界面的需求設(shè)計(jì)驗(yàn)證,使得測(cè)試過(guò)程更加精確有效[5]。首先,通過(guò)Eclipse IFML編輯器建立RIA用戶(hù)界面的UML,IFML元模型;然后,分別闡述了將IFML元模型轉(zhuǎn)換到測(cè)試用例、時(shí)間自動(dòng)機(jī)[6]的轉(zhuǎn)換規(guī)則,并通過(guò)轉(zhuǎn)換引擎生成對(duì)應(yīng)文件;其次,通過(guò)UPPAAL對(duì)生成的自動(dòng)機(jī)導(dǎo)航模型進(jìn)行死鎖和可達(dá)性驗(yàn)證;最后以實(shí)例進(jìn)行了方法驗(yàn)證。結(jié)果表明,該方法在RIA用戶(hù)界面開(kāi)發(fā)的需求分析階段便能夠提供測(cè)試用例,這有助于企業(yè)以相對(duì)較低的成本和時(shí)間開(kāi)發(fā)高質(zhì)量的軟件產(chǎn)品[7]。
1? 交互流建模語(yǔ)言
交互流建模語(yǔ)言是OMG最近為用戶(hù)界面建模采用的新標(biāo)準(zhǔn),以圖形化的形式來(lái)表示軟件應(yīng)用用戶(hù)界面的內(nèi)容、用戶(hù)交互和控制行為,并且支持諸如桌面、網(wǎng)頁(yè)、移動(dòng)等多種終端應(yīng)用。IFML元模型為IFML元素提供了語(yǔ)義和結(jié)構(gòu),其中,UML概要文件定義了使用UML表達(dá)IFML模型的語(yǔ)法。IFML元模型包含2個(gè)包:核心包和擴(kuò)展包。核心包包括IFML主要元素,擴(kuò)展包包含IFML擴(kuò)展元素。擴(kuò)展元素使得IFML能夠表達(dá)更為豐富的用戶(hù)界面元素,使建模工作更加具體[8]。由于IFML的龐大元素體系,本文只針對(duì)RIA用戶(hù)界面所需的IFML元素進(jìn)行介紹。
視圖容器(View Container)是IFML模型圖的基本界面元素,例如實(shí)際中的窗口、網(wǎng)頁(yè)等。視圖容器可以嵌套,子容器可以與父容器同時(shí)顯示,也可以使用XOR嵌套使它們互斥。在互斥的情況下,可以將子容器設(shè)置為Default,當(dāng)用戶(hù)訪問(wèn)父容器時(shí),仍然顯示子容器。容器設(shè)置為L(zhǎng)andmark,表示容器可以被嵌套容器中的所有其他容器訪問(wèn)。視圖容器可以包含一個(gè)或多個(gè)視圖組件(View Component),而視圖組件則包含要顯示的數(shù)據(jù)類(lèi)型,比如IFML元模型擴(kuò)展包中的Form(表單)、List(列表)、Details(詳細(xì)信息)。視圖組件還包括Data Bingding(數(shù)據(jù)綁定),它引用域概念,精確地指定需要從域中提取哪些數(shù)據(jù)。Event(事件)表示視圖容器或視圖組件之間的交互,它導(dǎo)致源和目標(biāo)RIA用戶(hù)界面的轉(zhuǎn)換。有很多類(lèi)型的事件,比如Submit(提交)、Select(選擇)、Add(添加)等。事件通過(guò)Navigation Flow(導(dǎo)航流)連接到目標(biāo)視圖組件或視圖容器。Parameter Binding Group(參數(shù)綁定組)與導(dǎo)航流相關(guān)聯(lián),表示視圖容器或視圖組件之間輸入輸出的依賴(lài)關(guān)系。
2? 研究方法概述
本節(jié)給出將IFML元模型轉(zhuǎn)換到測(cè)試用例以及時(shí)間自動(dòng)機(jī)的轉(zhuǎn)換規(guī)則,并描述了使用測(cè)試用例生成器生成對(duì)應(yīng)的測(cè)試用例文檔以及時(shí)間自動(dòng)機(jī)導(dǎo)航模型。
2.1? IFML到測(cè)試用例的轉(zhuǎn)換規(guī)則
視圖組件有3種擴(kuò)展類(lèi)型,即Form,List,Details,它們能夠捕獲用戶(hù)界面的詳細(xì)信息。本節(jié)闡述了將這3種視圖組件轉(zhuǎn)換為測(cè)試用例的轉(zhuǎn)換規(guī)則。IFML模型的其他視圖組件無(wú)法捕獲用戶(hù)界面的詳細(xì)信息,因此,本節(jié)沒(méi)有對(duì)其他視圖組件進(jìn)行測(cè)試用例的轉(zhuǎn)換。
1) Form到測(cè)試用例的轉(zhuǎn)換規(guī)則:Form名稱(chēng)映射到測(cè)試用例名稱(chēng);Form中的Simple Field和Selection Field映射到測(cè)試用例,分別檢查輸入值和選定值;Form上的Submit事件映射到測(cè)試用例的最終提交步驟。
2) List到測(cè)試用例的轉(zhuǎn)換規(guī)則:List名稱(chēng)映射到測(cè)試用例名稱(chēng);List中的Data Binding映射到領(lǐng)域模型元素;Visualization Attribute映射到List中顯示的領(lǐng)域模型元素屬性。
3) Details到測(cè)試用例的轉(zhuǎn)換規(guī)則:Details名稱(chēng)映射到測(cè)試用例名稱(chēng);Details中的Data Binding映射到領(lǐng)域模型元素;Visualization Attribute映射到Details中顯示的領(lǐng)域模型元素屬性。
2.2? IFML到時(shí)間自動(dòng)機(jī)的轉(zhuǎn)換規(guī)則
導(dǎo)航測(cè)試對(duì)于分析應(yīng)用程序體系結(jié)構(gòu)和改進(jìn)用戶(hù)交互流起著關(guān)鍵的作用。本節(jié)給出將IFML模型轉(zhuǎn)換為時(shí)間自動(dòng)機(jī)的轉(zhuǎn)換規(guī)則,通過(guò)轉(zhuǎn)換生成時(shí)間自動(dòng)機(jī)導(dǎo)航模型。時(shí)間自動(dòng)機(jī)模型由初始位置、邊、位置組成。初始位置表示時(shí)間自動(dòng)機(jī)模型的初始狀態(tài),邊表示狀態(tài)的轉(zhuǎn)換,位置則表示轉(zhuǎn)換后的狀態(tài)`。
IFML元模型到時(shí)間自動(dòng)機(jī)的轉(zhuǎn)換規(guī)則:Home? View Container表示IFML模型中的主頁(yè),轉(zhuǎn)換到時(shí)間自動(dòng)機(jī)模型的初始位置,表示系統(tǒng)的初始狀態(tài);IFML模型中的Navigation Flow轉(zhuǎn)換到時(shí)間自動(dòng)機(jī)模型中的邊;除了Home View Container,其他的View Container轉(zhuǎn)換為時(shí)間自動(dòng)機(jī)模型中的位置。
2.3? 測(cè)試用例生成器(MBUITC)
使用基于模型的用戶(hù)界面測(cè)試用例生成器(Model?based UI Test Case,MBUITC)[9]實(shí)現(xiàn)第2節(jié)所述的轉(zhuǎn)換規(guī)則并得到相應(yīng)的生成文件。MBUITC的功能包括3個(gè)部分:Eclipse IFML編輯器、轉(zhuǎn)換引擎、UPPAAL模型檢查器,如圖1所示。在Eclipse IFML編輯器中建立RIA用戶(hù)界面的UML,IFML元模型,通過(guò)轉(zhuǎn)換引擎導(dǎo)入U(xiǎn)ML,IFML元模型,生成完整的用戶(hù)界面測(cè)試用例的測(cè)試文檔(.txt)、包含導(dǎo)航模型代碼的文本文件(.xta)。盡管IFML編輯器只有在UML元模型的基礎(chǔ)上才能建立IFML元模型,但實(shí)際上只是IFML元模型的轉(zhuǎn)換,與UML元模型無(wú)關(guān)。擴(kuò)展名為.xta的文本文件作為模板導(dǎo)入U(xiǎn)PPAAL模型檢查器用來(lái)驗(yàn)證模型的死鎖和可達(dá)性。
UPPAAL由3個(gè)部分組成:編輯器、模擬器、驗(yàn)證器[10],當(dāng).xta文本文件導(dǎo)入U(xiǎn)PPAAL時(shí),編輯器會(huì)首先根據(jù)模板文件生成自動(dòng)機(jī)導(dǎo)航模型,然后導(dǎo)航模型通過(guò)模擬器檢查其語(yǔ)法,保證模型的正確性和完整性。最后,使用驗(yàn)證器對(duì)模型進(jìn)行驗(yàn)證,在驗(yàn)證中應(yīng)考慮兩個(gè)方面的性質(zhì):可達(dá)性和死鎖??蛇_(dá)性是檢查查詢(xún)語(yǔ)句中提到的狀態(tài)是否可以從初始狀態(tài)通過(guò)至少一條路徑到達(dá),可達(dá)性確保RIA用戶(hù)界面是可訪問(wèn)的,用于檢查導(dǎo)航模型可達(dá)性的查詢(xún)語(yǔ)句為:E<> Process.page,如果滿(mǎn)足條件,則意味著page可達(dá)。驗(yàn)證導(dǎo)航模型是否發(fā)生死鎖,若滿(mǎn)足A[] not deadlock,則意味著模型無(wú)死鎖,當(dāng)導(dǎo)航模型中存在一個(gè)狀態(tài)而沒(méi)有下一個(gè)狀態(tài)時(shí),會(huì)發(fā)生死鎖。
3? 實(shí)例驗(yàn)證
為驗(yàn)證本文給出方法的有效性,本節(jié)結(jié)合圖書(shū)管理應(yīng)用作為研究案例。該應(yīng)用實(shí)例包含5個(gè)主要用戶(hù)界面:主界面(Home)、圖書(shū)列表(BookList)、圖書(shū)詳細(xì)信息(BookDetails)、圖書(shū)添加頁(yè)面(AddBook)、圖書(shū)添加錯(cuò)誤頁(yè)面(ErrorPage)。主界面包括最近出版的圖書(shū)列表,列表包含圖書(shū)名稱(chēng)以及出版年份,通過(guò)列表選擇1本書(shū),頁(yè)面將會(huì)跳轉(zhuǎn)到圖書(shū)詳細(xì)信息頁(yè)面。圖書(shū)詳細(xì)信息頁(yè)面包含書(shū)籍名稱(chēng)、作者、出版年份、有關(guān)書(shū)籍描述。圖書(shū)列表頁(yè)面顯示一份書(shū)單,通過(guò)選擇一本圖書(shū),頁(yè)面將跳轉(zhuǎn)到圖書(shū)詳細(xì)信息頁(yè)面。在圖書(shū)列表中通過(guò)點(diǎn)擊“添加圖書(shū)”按鈕,頁(yè)面將跳轉(zhuǎn)到圖書(shū)添加頁(yè)面。圖書(shū)添加頁(yè)面包含一個(gè)圖書(shū)添加表單,通過(guò)點(diǎn)擊“提交”按鈕,頁(yè)面將跳轉(zhuǎn)到圖書(shū)列表頁(yè)面,如果數(shù)據(jù)提交失敗,頁(yè)面將跳轉(zhuǎn)到圖書(shū)添加錯(cuò)誤頁(yè)面。圖2和圖3分別是圖書(shū)管理應(yīng)用的領(lǐng)域模型和IFML模型。
通過(guò)MBUITC中Eclipse IFML編輯器建立圖書(shū)管理應(yīng)用實(shí)例的UML,IFML元模型(book.uml,book.core),打開(kāi)轉(zhuǎn)換引擎,導(dǎo)入元模型進(jìn)行轉(zhuǎn)換。最終生成測(cè)試用例文檔,部分截圖如圖4所示,導(dǎo)航模型文件如圖5所示。
打開(kāi)MBUITC中的UPPAAL模型檢查器,導(dǎo)入導(dǎo)航模型的.xta文件,編輯器中將生成自動(dòng)機(jī)導(dǎo)航模型如圖6所示。通過(guò)驗(yàn)證器的驗(yàn)證輸出結(jié)果顯示,導(dǎo)航模型無(wú)死鎖并且Book Details滿(mǎn)足可達(dá)性,如圖7所示。
4? 結(jié)? 語(yǔ)
針對(duì)傳統(tǒng)RIA用戶(hù)界面測(cè)試過(guò)程中出現(xiàn)的低效、高成本等問(wèn)題,文章給出了一種基于IFML元模型自動(dòng)生成RIA用戶(hù)界面測(cè)試用例方法。首先,通過(guò)Eclipse IFML編輯器建立RIA用戶(hù)界面的IFML元模型;然后,分別闡述了將IFML元模型轉(zhuǎn)換到測(cè)試用例、時(shí)間自動(dòng)機(jī)的轉(zhuǎn)換規(guī)則,并通過(guò)轉(zhuǎn)換引擎生成對(duì)應(yīng)文件;其次,通過(guò)UPPAAL對(duì)生成的自動(dòng)機(jī)導(dǎo)航模型進(jìn)行死鎖和可達(dá)性驗(yàn)證;最后以實(shí)例進(jìn)行了方法驗(yàn)證。文章下一步工作將改進(jìn)和擴(kuò)展所提出的方法,以支持IFML其他重要結(jié)構(gòu),如模塊、動(dòng)作、菜單、上下文和表達(dá)等。
參考文獻(xiàn)
[1] 康愷.面向RIA的Java Web組件封裝技術(shù)設(shè)計(jì)與實(shí)現(xiàn)[D].西安:長(zhǎng)安大學(xué),2017.
[2] 劉撥杰.基于模型驅(qū)動(dòng)的MapReduce大數(shù)據(jù)變換軟件開(kāi)發(fā)方法研究[D].南京:南京大學(xué),2018.
[3] MISRA H. Interaction flow modeling language: model?driven UI engineering of web and mobile apps with IFML [J]. Computing reviews, 2016, 57(8): 477?477.
[4] MARCO Brambilla, ANDREA Mauri, ERIC Umuhoza. Extending the interaction flow modeling language (IFML) for model driven development of mobile applications front end [J]. Mobile web information systems, 2014, 8640: 176?191.
[5] FRAJT?K K, BURES M, JELINEK I. Transformation of IFML schemas to automated tests [C]// Conference on Research in Adaptive & Convergent Systems. New York: ACM, 2015: 509?511.
[6] 黃青青.基于時(shí)間自動(dòng)機(jī)理論的PLC程序設(shè)計(jì)方法及應(yīng)用[D].武漢:華中科技大學(xué),2018.
[7] SUHAG V, BHATIA R. Model based test cases generation for web applications [J]. International journal of computer applications, 2014, 92(3): 23?31.
[8] NAZIHA Laaz, SAMIR Mbarki. Combining ontologies and IFML models regarding the GUIs of rich internet applications [C]// International Conference on Artificial Intelligence: Methodology. Varna: Springer, 2016: 226?236.
[9] Anon. MBUITC [EB/OL]. [2019?07?14]. https://ceme.nust.edu.pk/ISEGROUP/MBUITC/index.html.
[10] 吳丹.基于UPPAAL的ETCS?1級(jí)/ETCS?NTC級(jí)等級(jí)轉(zhuǎn)換形式化建模[D].成都:西南交通大學(xué),2017.