摘要:從控件的信息入手,研究了界面的控件間功能交互關系,提出了基于交互圖的GUI測試方法,并開發了一個基于交互圖的GUI測試工具GUITester。它能自動生成交互圖和測試用例,大大提高了GUI軟件測試的效率和覆蓋率。
關鍵詞:軟件測試; 圖形用戶界面; 交互圖; 測試用例
中圖分類號:TP311文獻標志碼:A
文章編號:1001-3695(2007)11-0232-04
0引言
軟件測試是軟件質量保證的有效途徑之一。隨著圖形化界面的軟件大量出現,圖形用戶界面(GUI)已經成為用戶和軟件交互的主要方式。GUI軟件通過消息機制與底層代碼進行交互,給軟件開發和使用帶來很大的方便。然而,由于GUI控件本身擁有大量的屬性和狀態,復雜的圖形輸入/輸出界面和事件驅動,使得GUI測試成為一個技術難點。自20世紀90年代末,已有許多組織和科研機構對GUI的自動化測試作了深入研究,取得了很大成就[1~10]。目前,已有許多公司成功地開發了一系列的GUI自動測試化工具,主要是基于Microsoft的Windows系統消息管理機制上研制出來的。通常它們對被測功能進行錄制并產生類C語言的腳本;然后對腳本進行修改并插入檢查點;最后對腳本進行回放達到自動化測試的目的。但是,它們缺乏對關聯控件的交互性和充分性的深入研究。
本文從控件屬性出發,對被測試軟件的控件進行抓取和編排,再按照軟件實現的具體功能建立相關控件的交互圖。用戶可以基于交互圖生成測試用例,進而開發出能為GUI軟件的測試人員提供較好交互性的測試工具GUITester。
GUITester是在Windows 2000系統下使用VC++ 6.0開發的,目前適用于C/C++/Java/Delphi開發的GUI軟件系統測試。該工具可以捕獲和識別被測軟件系統的各種控件并保存控件屬性,用戶可以基于保存的控件信息和軟件功能,生成功能測試交互圖,為GUI軟件測試提供幫助。
1GUI控件屬性的定義和提取
控件是GUI軟件和用戶交互的接口,它使用戶能更容易地掌握軟件的基本功能。當軟件在完成某項功能時,通常是由很多控件組成一個控件操作序列。
控件的表示方法必須滿足許多條件:a)控件的表示方法必須是高度抽象,以便更好地進行跨平臺測試;b)控件的表示方法必須具備強大的描述能力,以便表示不同類型的被測控件;c)具有良好的交互性,為其他控件提供接口。
為了使控件能更好地被測試工具所識別和接收,必須定制一個GUI控件屬性描述規范。當前還沒有一個標準的測試軟件腳本規范,大都是采用類C語言的腳本語言。本文認為每個控件實際上都是在實現一個特定的小功能,一個或多個小功能有效地組合在一起就能實現一個完整的大功能。
6結束語
基于交互圖的軟件測試方法大大提高了GUI軟件測試的效率和覆蓋率。交互圖可以清晰地表達控件間的交互關系。基于交互圖,測試用例的生成可以實現半自動化。然而,功能交互圖還是以功能規格說明書為標準,測試用例和測試數據的充分性及可靠性依賴于交互圖設計。
GUITester本身具有良好的交互能力和測試用例的生成準則,即帶環有向交互圖的去環算法。測試人員可以對已生成的交互圖進行再次修正,并重新生成測試用例。但是,它缺乏測試數據生成的深入研究,這是將來需要進一步改進的地方。
參考文獻:
[1]MYERS B A. User interface software tools[J]. ACM Transactions on Computer-Human Interaction, 1995,2(1):64-103.
[2]MEMON A M, POLLACK M E, SOFFA M L. Using a goal-driven approach to generate test cases for GUIs[C]//Proc of International Conference on Software Engineering.Los Angeles, California: ACM Press,1999:257-266.
[3]MEMON A M, BANERJEE I, HASHMI N, et al. DART: a framework for regression testing “nightly/daily builds” of GUI applications[C]//Proc of the 19th IEEE International Conference on Software Maintenance(ICSM’03). Amsterdam: [s.n.], 2003:410-419.
[4]DABCZI T, KOLLR I, SIMON G, et al. How to test graphical user interfaces[J]. IEEE Instrumentation and Measurement Magazing, 2003,6(3):27-33.
[5]WHITE L, ALMEZEN H, ALZEIDI N. User-based testing of GUI sequences and their interactions[C]//Proc of the 12th International Symposium on Software Reliability Engineering(ISSRE’01).San Jose:[s.n.], 2001:54-63.
[6]WHITE L, ALMEZEN H. Generating test cases for GUI responsibilities using complete interaction sequences[C]//Proc of the 11th International Symposium on Software Reliability Engineering. San Jose:[s.n.], 2000:110-121.
[7]YANG F D. Design and implementation of automated testing tool for GUI[J]. Journal of the Academy of Equipment Command Technology, 2003,14(3):77-80.
[8]STOCKS P, CARRINGTON D. A framework forspecification-based testing[J]. IEEE Transactions on Software Engineering, 1996,22(11):777-793.
[9]YIP S W L, ROBSON D J. Graphical user interfaces validation: a problem analysis and a strategy to solution[C]//Proc of International Conference on System Sciences(HICSS24). 1991:91-100.
[10]RUMBAUGH J, JACOBSON I, BOOCH G. The unified modeling language reference manual[M].2nd ed. Boston, MA: Addison Wesley, 2004.
“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”