李丹丹 劉曉燕 曹榮凱 嚴(yán)馨
摘? 要: 最近OMG推出的交互流建模語言(IFML),其強(qiáng)大的用戶界面建模功能現(xiàn)已逐漸應(yīng)用于RIA用戶界面模型驅(qū)動開發(fā)早期的建模階段。然而針對RIA用戶界面測試依舊停留在開發(fā)后期才能使用傳統(tǒng)技術(shù)進(jìn)行的問題,使得測試工作需要花費(fèi)大量的時間和成本。文章給出一種基于IFML元模型自動生成RIA用戶界面測試用例的方法。首先,通過Eclipse IFML編輯器建立RIA用戶界面的IFML元模型;然后,分別闡述了將IFML元模型轉(zhuǎn)換到測試用例、時間自動機(jī)的轉(zhuǎn)換規(guī)則,并通過轉(zhuǎn)換引擎生成對應(yīng)文件;其次,通過UPPAAL對生成的自動機(jī)導(dǎo)航模型進(jìn)行死鎖和可達(dá)性驗證;最后以實(shí)例進(jìn)行了方法驗證。
關(guān)鍵詞: RIA用戶界面測試; 用例自動生成; 交互流建模語言; 元模型建立; 轉(zhuǎn)換規(guī)則; 文件生成
中圖分類號: TN911.23?34; TP311? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識碼: A? ? ? ? ? ? ? ? ? ? ?文章編號: 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? 引? 言
近年來,軟件應(yīng)用市場對用戶界面的需求逐漸變得豐富且復(fù)雜,因此,傳統(tǒng)的基于Html的Web應(yīng)用程序的用戶界面越來越體現(xiàn)出它們的局限性,已不能滿足網(wǎng)絡(luò)瀏覽者更高的、全方位的體驗要求。而互聯(lián)網(wǎng)應(yīng)用程序(Rich Internet Application,RIA)[1]的出現(xiàn)解決了這個問題。RIA由于結(jié)合了桌面應(yīng)用程序良好的用戶交互體驗和Web應(yīng)用程序部署的靈活性,很快獲得了企業(yè)界的青睞。由于RIA用戶界面包含豐富的界面元素,使得界面體系結(jié)構(gòu)也因此變得復(fù)雜。隨著RIA的廣泛應(yīng)用,人們通過筆記本電腦、手機(jī)、臺式電腦、iPAD等各種設(shè)備訪問RIA,因此需要提供通用的用戶界面滿足不同的用戶需求,導(dǎo)致RIA用戶界面的開發(fā)和測試工作也逐漸變得復(fù)雜且耗時。模型驅(qū)動工程[2]是一種著名的軟件工程開發(fā)方法,簡化了開發(fā)過程,并提供早期設(shè)計驗證功能,廣泛應(yīng)用于嵌入式系統(tǒng)、信息系統(tǒng)等領(lǐng)域。為了降低RIA用戶界面開發(fā)和測試的難度,必須從模型驅(qū)動需求分析階段開始設(shè)計。事實(shí)上,已經(jīng)有一些針對應(yīng)用程序用戶界面開發(fā)早期的需求建模技術(shù),比如UML,WebML等,但它們對用戶界面內(nèi)容、用戶交互、控制行為等重要特征的描述還不夠完整和準(zhǔn)確。交互流建模語言(Interaction Flow Modeling Language,IFML)[3]的出現(xiàn)簡化了RIA用戶界面開發(fā)前期的建模設(shè)計工作。IFML是以圖形化的方式描述用戶界面需求,并且可以通過擴(kuò)展的方式描述更為復(fù)雜的大型應(yīng)用用戶界面,操作靈活度高[4]。IFML同時支持對任何類型的設(shè)備訪問RIA用戶界面進(jìn)行平臺無關(guān)的描述。然而,到目前為止,IFML還未提供用戶界面需求設(shè)計的驗證和測試功能,僅在開發(fā)后期對用戶界面的功能進(jìn)行測試,這顯著降低了軟件的開發(fā)效率和軟件質(zhì)量。因此,本文給出一種從IFML元模型自動生成測試用例的方法,這將在開發(fā)工作的初始階段執(zhí)行用戶界面的需求設(shè)計驗證,使得測試過程更加精確有效[5]。首先,通過Eclipse IFML編輯器建立RIA用戶界面的UML,IFML元模型;然后,分別闡述了將IFML元模型轉(zhuǎn)換到測試用例、時間自動機(jī)[6]的轉(zhuǎn)換規(guī)則,并通過轉(zhuǎn)換引擎生成對應(yīng)文件;其次,通過UPPAAL對生成的自動機(jī)導(dǎo)航模型進(jìn)行死鎖和可達(dá)性驗證;最后以實(shí)例進(jìn)行了方法驗證。結(jié)果表明,該方法在RIA用戶界面開發(fā)的需求分析階段便能夠提供測試用例,這有助于企業(yè)以相對較低的成本和時間開發(fā)高質(zhì)量的軟件產(chǎn)品[7]。
1? 交互流建模語言
交互流建模語言是OMG最近為用戶界面建模采用的新標(biāo)準(zhǔn),以圖形化的形式來表示軟件應(yīng)用用戶界面的內(nèi)容、用戶交互和控制行為,并且支持諸如桌面、網(wǎng)頁、移動等多種終端應(yīng)用。IFML元模型為IFML元素提供了語義和結(jié)構(gòu),其中,UML概要文件定義了使用UML表達(dá)IFML模型的語法。IFML元模型包含2個包:核心包和擴(kuò)展包。核心包包括IFML主要元素,擴(kuò)展包包含IFML擴(kuò)展元素。擴(kuò)展元素使得IFML能夠表達(dá)更為豐富的用戶界面元素,使建模工作更加具體[8]。由于IFML的龐大元素體系,本文只針對RIA用戶界面所需的IFML元素進(jìn)行介紹。
視圖容器(View Container)是IFML模型圖的基本界面元素,例如實(shí)際中的窗口、網(wǎng)頁等。視圖容器可以嵌套,子容器可以與父容器同時顯示,也可以使用XOR嵌套使它們互斥。在互斥的情況下,可以將子容器設(shè)置為Default,當(dāng)用戶訪問父容器時,仍然顯示子容器。容器設(shè)置為Landmark,表示容器可以被嵌套容器中的所有其他容器訪問。視圖容器可以包含一個或多個視圖組件(View Component),而視圖組件則包含要顯示的數(shù)據(jù)類型,比如IFML元模型擴(kuò)展包中的Form(表單)、List(列表)、Details(詳細(xì)信息)。視圖組件還包括Data Bingding(數(shù)據(jù)綁定),它引用域概念,精確地指定需要從域中提取哪些數(shù)據(jù)。Event(事件)表示視圖容器或視圖組件之間的交互,它導(dǎo)致源和目標(biāo)RIA用戶界面的轉(zhuǎn)換。有很多類型的事件,比如Submit(提交)、Select(選擇)、Add(添加)等。事件通過Navigation Flow(導(dǎo)航流)連接到目標(biāo)視圖組件或視圖容器。Parameter Binding Group(參數(shù)綁定組)與導(dǎo)航流相關(guān)聯(lián),表示視圖容器或視圖組件之間輸入輸出的依賴關(guān)系。
2? 研究方法概述
本節(jié)給出將IFML元模型轉(zhuǎn)換到測試用例以及時間自動機(jī)的轉(zhuǎn)換規(guī)則,并描述了使用測試用例生成器生成對應(yīng)的測試用例文檔以及時間自動機(jī)導(dǎo)航模型。
2.1? IFML到測試用例的轉(zhuǎn)換規(guī)則
視圖組件有3種擴(kuò)展類型,即Form,List,Details,它們能夠捕獲用戶界面的詳細(xì)信息。本節(jié)闡述了將這3種視圖組件轉(zhuǎn)換為測試用例的轉(zhuǎn)換規(guī)則。IFML模型的其他視圖組件無法捕獲用戶界面的詳細(xì)信息,因此,本節(jié)沒有對其他視圖組件進(jìn)行測試用例的轉(zhuǎn)換。
1) Form到測試用例的轉(zhuǎn)換規(guī)則:Form名稱映射到測試用例名稱;Form中的Simple Field和Selection Field映射到測試用例,分別檢查輸入值和選定值;Form上的Submit事件映射到測試用例的最終提交步驟。
2) List到測試用例的轉(zhuǎn)換規(guī)則:List名稱映射到測試用例名稱;List中的Data Binding映射到領(lǐng)域模型元素;Visualization Attribute映射到List中顯示的領(lǐng)域模型元素屬性。
3) Details到測試用例的轉(zhuǎn)換規(guī)則:Details名稱映射到測試用例名稱;Details中的Data Binding映射到領(lǐng)域模型元素;Visualization Attribute映射到Details中顯示的領(lǐng)域模型元素屬性。
2.2? IFML到時間自動機(jī)的轉(zhuǎn)換規(guī)則
導(dǎo)航測試對于分析應(yīng)用程序體系結(jié)構(gòu)和改進(jìn)用戶交互流起著關(guān)鍵的作用。本節(jié)給出將IFML模型轉(zhuǎn)換為時間自動機(jī)的轉(zhuǎn)換規(guī)則,通過轉(zhuǎn)換生成時間自動機(jī)導(dǎo)航模型。時間自動機(jī)模型由初始位置、邊、位置組成。初始位置表示時間自動機(jī)模型的初始狀態(tài),邊表示狀態(tài)的轉(zhuǎn)換,位置則表示轉(zhuǎn)換后的狀態(tài)`。
IFML元模型到時間自動機(jī)的轉(zhuǎn)換規(guī)則:Home? View Container表示IFML模型中的主頁,轉(zhuǎn)換到時間自動機(jī)模型的初始位置,表示系統(tǒng)的初始狀態(tài);IFML模型中的Navigation Flow轉(zhuǎn)換到時間自動機(jī)模型中的邊;除了Home View Container,其他的View Container轉(zhuǎn)換為時間自動機(jī)模型中的位置。
2.3? 測試用例生成器(MBUITC)
使用基于模型的用戶界面測試用例生成器(Model?based UI Test Case,MBUITC)[9]實(shí)現(xiàn)第2節(jié)所述的轉(zhuǎn)換規(guī)則并得到相應(yīng)的生成文件。MBUITC的功能包括3個部分:Eclipse IFML編輯器、轉(zhuǎn)換引擎、UPPAAL模型檢查器,如圖1所示。在Eclipse IFML編輯器中建立RIA用戶界面的UML,IFML元模型,通過轉(zhuǎn)換引擎導(dǎo)入UML,IFML元模型,生成完整的用戶界面測試用例的測試文檔(.txt)、包含導(dǎo)航模型代碼的文本文件(.xta)。盡管IFML編輯器只有在UML元模型的基礎(chǔ)上才能建立IFML元模型,但實(shí)際上只是IFML元模型的轉(zhuǎn)換,與UML元模型無關(guān)。擴(kuò)展名為.xta的文本文件作為模板導(dǎo)入UPPAAL模型檢查器用來驗證模型的死鎖和可達(dá)性。
UPPAAL由3個部分組成:編輯器、模擬器、驗證器[10],當(dāng).xta文本文件導(dǎo)入UPPAAL時,編輯器會首先根據(jù)模板文件生成自動機(jī)導(dǎo)航模型,然后導(dǎo)航模型通過模擬器檢查其語法,保證模型的正確性和完整性。最后,使用驗證器對模型進(jìn)行驗證,在驗證中應(yīng)考慮兩個方面的性質(zhì):可達(dá)性和死鎖。可達(dá)性是檢查查詢語句中提到的狀態(tài)是否可以從初始狀態(tài)通過至少一條路徑到達(dá),可達(dá)性確保RIA用戶界面是可訪問的,用于檢查導(dǎo)航模型可達(dá)性的查詢語句為:E<> Process.page,如果滿足條件,則意味著page可達(dá)。驗證導(dǎo)航模型是否發(fā)生死鎖,若滿足A[] not deadlock,則意味著模型無死鎖,當(dāng)導(dǎo)航模型中存在一個狀態(tài)而沒有下一個狀態(tài)時,會發(fā)生死鎖。
3? 實(shí)例驗證
為驗證本文給出方法的有效性,本節(jié)結(jié)合圖書管理應(yīng)用作為研究案例。該應(yīng)用實(shí)例包含5個主要用戶界面:主界面(Home)、圖書列表(BookList)、圖書詳細(xì)信息(BookDetails)、圖書添加頁面(AddBook)、圖書添加錯誤頁面(ErrorPage)。主界面包括最近出版的圖書列表,列表包含圖書名稱以及出版年份,通過列表選擇1本書,頁面將會跳轉(zhuǎn)到圖書詳細(xì)信息頁面。圖書詳細(xì)信息頁面包含書籍名稱、作者、出版年份、有關(guān)書籍描述。圖書列表頁面顯示一份書單,通過選擇一本圖書,頁面將跳轉(zhuǎn)到圖書詳細(xì)信息頁面。在圖書列表中通過點(diǎn)擊“添加圖書”按鈕,頁面將跳轉(zhuǎn)到圖書添加頁面。圖書添加頁面包含一個圖書添加表單,通過點(diǎn)擊“提交”按鈕,頁面將跳轉(zhuǎn)到圖書列表頁面,如果數(shù)據(jù)提交失敗,頁面將跳轉(zhuǎn)到圖書添加錯誤頁面。圖2和圖3分別是圖書管理應(yīng)用的領(lǐng)域模型和IFML模型。
通過MBUITC中Eclipse IFML編輯器建立圖書管理應(yīng)用實(shí)例的UML,IFML元模型(book.uml,book.core),打開轉(zhuǎn)換引擎,導(dǎo)入元模型進(jìn)行轉(zhuǎn)換。最終生成測試用例文檔,部分截圖如圖4所示,導(dǎo)航模型文件如圖5所示。
打開MBUITC中的UPPAAL模型檢查器,導(dǎo)入導(dǎo)航模型的.xta文件,編輯器中將生成自動機(jī)導(dǎo)航模型如圖6所示。通過驗證器的驗證輸出結(jié)果顯示,導(dǎo)航模型無死鎖并且Book Details滿足可達(dá)性,如圖7所示。
4? 結(jié)? 語
針對傳統(tǒng)RIA用戶界面測試過程中出現(xiàn)的低效、高成本等問題,文章給出了一種基于IFML元模型自動生成RIA用戶界面測試用例方法。首先,通過Eclipse IFML編輯器建立RIA用戶界面的IFML元模型;然后,分別闡述了將IFML元模型轉(zhuǎn)換到測試用例、時間自動機(jī)的轉(zhuǎn)換規(guī)則,并通過轉(zhuǎn)換引擎生成對應(yīng)文件;其次,通過UPPAAL對生成的自動機(jī)導(dǎo)航模型進(jìn)行死鎖和可達(dá)性驗證;最后以實(shí)例進(jìn)行了方法驗證。文章下一步工作將改進(jìn)和擴(kuò)展所提出的方法,以支持IFML其他重要結(jié)構(gòu),如模塊、動作、菜單、上下文和表達(dá)等。
參考文獻(xiàn)
[1] 康愷.面向RIA的Java Web組件封裝技術(shù)設(shè)計與實(shí)現(xiàn)[D].西安:長安大學(xué),2017.
[2] 劉撥杰.基于模型驅(qū)動的MapReduce大數(shù)據(jù)變換軟件開發(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] 黃青青.基于時間自動機(jī)理論的PLC程序設(shè)計方法及應(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級/ETCS?NTC級等級轉(zhuǎn)換形式化建模[D].成都:西南交通大學(xué),2017.