李丹丹 劉曉燕 曹榮凱 嚴馨



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