999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

實現基于Windows Mobile的智能終端中UI自動化測試

2007-12-31 00:00:00蘆東昕柳長安
計算機應用研究 2007年7期

摘要:分析了Windows Mobile中的軟件自動化測試框架及其層次關系,通過實例在Visual Studio 2005中實現了對目標設備UI的自動化測試。在產品開發實踐中表明,這種自動化測試具有測試效率高、可靠性好、易維護等優點,對于Windows Mobile設備中其他方面的自動化測試研究具有一定參考價值。

關鍵詞:Windows Mobile;軟件測試;自動化測試;用戶接口測試;測試用例

中圖分類號:TP309文獻標志碼:A

文章編號:1001-3695(2007)07-0165-03

Key words:Windows Mobile;software testing;automation testing;UI testing;test case

軟件測試是軟件工程過程的一個重要階段,是在軟件投入運行前,對軟件需求分析、設計和編碼各階段產品的最終檢查,是為了保證軟件開發產品的正確性、完全性和一致性,從而檢測軟件錯誤、修正軟件錯誤的過程[1]。在嵌入式智能終端中,有限的硬件資源對其軟件的功能性和穩定性方面提出了更高的要求。因此,需要對設備上的各種軟件進行全面測試。

Windows Mobile 是 Microsoft 用于 Pocket PC 和 Smartphone 的軟件平臺,面向個人移動電子消費市場,最新版本是Windows Mobile 2005,現在Windows Mobile的合作伙伴已擴展到全球48個國家的40家硬件廠商和68家移動運營商。對原始設備制造商(OEM)來講,Windows Mobile是一個集合,包括一組事先定制的Windows CE(微軟的通用嵌入式操作系統)組件、其他附加的與Windows Mobile相關的組件和OEM所必須遵守的產品功能性要求。OEM利用這些組件,并添加必要的設備驅動程序和其他應用,然后拷貝到設備的ROM中。在Windows Mobile的產品開發中,軟件測試大約占50%的開銷。針對如何在Windows Mobile中開發自動化測試以降低測試費用、提高測試質量和效率,本文分析了Windows Mobile中自動化測試框架及其內部各模塊的關系,并實現了對產品UI自動化測試的實例。

1Windows Mobile中的自動化測試框架

在Windows Mobile的智能終端上,采用Mobility Toolkit Development Kit工具包來對UI進行自動化測試[7]。Windows Mobile中自動化測試框架由.NET類庫組成。在實際中為實現不同的測試功能,測試框架采用分層結構。圖1描述了各類庫層次依賴關系。

虛線下的Logging 和Utils.NET可以被其他各模塊使用。

1.1Logging

Logging庫包含了與導出測試數據和測試結果管理相關的類。Logging是通用的,滿足了除.NET測試工具之外的如桌面測試工具可使用Logging。對于.NET自動化測試來說,Logging的主要接口是GlobalLogger和GlobalLogResultManager。 

MTK、UIAL、Area Libraries和Test components利用GlobalLogger在測試中自動向日志文件導出測試信息。此外,GlobalLogger還支持不同的測試信息導出等級。例如,對UIAL層的注釋是在調試等級,在調試過程GlobalLogger才記錄相關信息;而對測試等級下的測試信息則無此限制。GlobalLogResultManager主要用在Test Cases and Suites和Area Libraries兩層,當一次執行多個測試用例時可以用來跟蹤每個用例的測試結果。

1.2Utils.NET

Utils.NET代碼庫包含了可以被MTK、UIAL、Area Libraries和Tests使用的面向設備的代碼。.NET Framework為桌面工具提供了豐富的代碼庫,而.NET Compact Framework只包含了該代碼庫的一個子集。Utils.NET涵蓋了在.NET Compact Framework中所沒有但在測試目標設備要用到的代碼。

Utils.NET提供的代碼對于.NET自動化測試和.NET Compact Framework的使用者都是很有幫助的。此外,Utils.NET還為在目標設備與開發工作站之間共享代碼提供了方便。

1.3Device Automation ToolKit (DATK)

主要是C#類庫,其中的類映射了對目標設備上UI的控制。DATK中的有些類映射了目標設備上的編輯框、列表視圖和按鈕等。除了這些可以映射的控制類之外,還有Windows Finder類,該類在使用DATK中是很重要的。Windows Finder可以指定對設備進行控制的某些特征如類型、文本或進程等,并將該控制與DATK控制對象綁定。而利用DATK控制對象可以得到對目標設備控制的信息如類型、已選/未選狀態等,進一步利用DATK控制對象可以與目標設備控制的交互,這樣就實現了利用DATK對目標設備上UI的自動化測試。

DATK目前尚不依賴Logging或Utils.NET組件。

1.4Mobility ToolKit (MTK)

MTK是與DATK類庫中對MDPG部分的擴展。比如說,軟按鍵在Windows Mobile的設備上是很重要的組件,但Windows CE本身卻不支持,因此DATK中也不提供與軟按鍵對應的控制類,這在對Windows Mobile的設備測試時是很不方便的。基于此,在DATK中添加了針對Windows Mobile設備的控制類,形成了測試Windows Mobile設備的專用類庫即MTK。此外,MTK還提供了有助于自動化測試的其他類,如ApplicationManager可以映射為啟動Windows Mobile設備上的應用程序。

MTK包含了很多從DATK衍生而來的類,且依賴于Logging 和Utils.NET。

1.5UIAL 

DATK提供了大量的類來映射UI控件對目標設備的UI進行控制。實際中要映射到目標設備的UI控件還要使用DATK中的Windows Finder類來初始化DATK層的UI控件。提供給Windows Finder搜索條件如類名字、標題、控制ID號等,Windows Finder會根據給定條件找出所需的控制類。搜索條件對設備UI中設計與實現上的變化是很敏感的,這樣提供了一種抽象模式來保護UI測試自動化免受上述變化的影響。

UIAL在一個應用程序中封裝了各種形式的控件,這樣自動化測試開發者可直接用Windows Finder來獲取該控件。C#庫為目標設備上的具體控件和DATK控制對象提供了1∶1的映射。應用中,每個應用程序應該對應一個UIAL,且UIAL中具有相應的屬性與該應用程序中的控件對應。主要是對控件屬性進行標記,避免了UI中有控件變化時不必修改全部測試代碼,只需改動UIAL即可。UIAL依賴于DATK、MTK、Utils.NET和 Logging。且被Area Libraries所調用。

1.6Area Libraries

UIAL降低了在DATK中尋找控件的難度,但并未將這些控件與特定的應用場景綁定。Area Libraries可以在目標設備上將這些控件應用到特定的情境中。

Area Libraries的目的是使自動化測試腳本的編寫,像描述手動測試用例的步驟一樣直觀。這樣與手工測試相比,代碼就變得非常簡潔。例如測試Microsoft Word的用例中第一個步驟是打開Word,該步驟對應了在UI中的一組命令:點擊開始、選擇程序、點擊Word等。測試用例的Open Word步驟就可以在Area Library中直接執行,屏蔽了打開Word時的細節。此外,Area Library還自適應不同的產品(PocketPC或Smartphone)、使用的SKU等。Area Libraries依賴于UIAL、MTK、Utils.NET和Logging,且只為其上層的Tests層服務。

1.7Tests Cases and Suites

在.NET Automation Framework中,測試套件是從TestSuite類繼承來的一系列子類。測試用例是標記了屬性的C#方法,是根據屬性包含在相應的測試套件中,從功能上依賴于Area Libraries,包含了根據需求對該庫的一系列調用。這樣一系列的特定行為組成了測試用例要完成的測試動作。一般情況下,測試用例并不直接調用UIAL,除非對較特殊的設備應用程序進行測試。該層依賴于Area Libraries,少數情況下需要UIAL、MTK或DATK的支持。

2基于DATK開發UI自動化測試

利用DATK實現UI自動化測試關鍵在于創建抽象運行對話框和設計測試用例。

2.1開發環境搭建

(1)將Visual Studio 2005安裝文件中的MtkKit文件拷貝到C:\\MtkKit。

(2)安裝ActiveSync和Visual Studio 2005。

ActiveSync. ActiveSync是開發工作站與目標設備之間的同步軟件,利用ActiveSync可使兩者的數據保持實時更新。

Visual Studio 2005,微軟的最新系列的集成開發環境,其最新版本是Visual Studio 2005 Team Suite。

(3)將Windows Mobile上的設備連接到ActiveSync。

將模擬器與ActiveSync相連。在Visual Studio 2005的模擬器管理器中可以啟動模擬器。需要注意的是連接模式選擇DMA,且需要Cradle待連接的模擬器。

(4)將開發工作站上的c:\\mtkkit\\DeviceFiles\\文件拷貝到目標設備的\est目錄下。

2.2創建抽象運行對話框

當開發環境搭建好后,就可以開始實現UI自動化測試了。關鍵之一是要創建抽象運行對話框,當創建好之后需要編寫測試用例進行調用。

首先,在Visual Studio 2005的工程目錄下創建要建立的工程文件MyDemo,一般路徑為C:\\Documents and Settings\\XXX\\My Documents\\Visual Studio 2005\\Projects\\,將C:\\MtkKit\\TuxNetSkeleton下的內容拷貝到工程文件夾MyDemo下,需要注意的是,要將拷貝過來的與Windows Explorer相關的文件屬性清除只讀的限制。其次,把C:\\MtkKit\\Common文件夾及其內容拷貝到工程目錄下,同樣,對文件屬性清除只讀的限制。

在目標設備上激活shell32.exe,打開運行程序對話框。其次還需要生成RCML文件,在該文件中含有對話框的XML形式表示,采取這種形式有利于向對話框及其控件添加必要信息。生成RCML文件的具體步驟:在開發工作站上執行C:\\WINDOWS\\system32\\cmd.exe /k .\\Bin\\CommandWindow.bat,其快捷鍵為C:\\MtkKit\\CommandWindow.lnk。

在命令行窗口中鍵入rapistart \"\est\\RcmlSnap.exe\"命令,這實際上是在工作站上遠程執行了RCML Snap程序,該程序產生與shell32對話框相關的RCML文件。對話框如圖2所示。

大約一分鐘過后,目標設備上出現顯示了產生的RCML文件名字的對話框,可以點擊OK,如圖3所示。此時目標設備上屏幕的截圖也會以位圖的形式保存下來,這兩個文件默認情況在目標設備的根目錄下。之后需要將這兩個文件拷貝到工作站的工程文件夾下。在Visual Studio 2005下打開產生的RCML文件shell32.exeDialog.RCML和c:\\MtkKit\\RunDialogSample\\RunDialog.rcml文件,編輯shell32.exeDialog.RCML文件的標記屬性使之與RunDialog.rcml文件中的屬性匹配。

接下來需要從RCML文件中產生C#源文件。為此需要在圖2的命令行對話框中到MyDemo目錄下,運行rctocs -dll shell32.exe -rcml . -o c:\\Auto命令,該命令啟動了RCML文件中的RcToCs工具,RcToCs產生在工程中需要的一組C#源文件,同時創建c:\\Auto文件夾,自動將產生的兩個C#文件拷貝到該文件夾,因此還需要手動拷貝到工程文件MyDemo。C#源文件如圖4所示。

在Visual Studio 2005中打開c:\\mtkkit\\MyDemo\\TuxNetSkeleton.sln,且將C#源文件中的代碼添加到TuxNetSkeleton工程中。至此已經成功地創建了抽象運行對話框。

2.3設計測試用例

在編寫測試用例之前需要對有關文件及類進行重命名:將SkeletonTests.cs源文件改為RunDialogTests.cs;將TuxNetSkeletonTests類更名為RunDialogTests(同時對其構造函數更名)。接下來可以編寫測試用例了。

在RunDialogTests.cs文件的using區添加using Microsoft.MobileDevices.AbstractionLayer.Shell.PocketPC;//聲明測試用例針對PocketPC對RunDialogTests類添加啟動方法。實現代碼為

#region Utility Methods

/// 〈summary〉Launch the run dialog using Win+R 〈/summary〉

public void Launch()

{

Utils.GlobalLogger.AddComment(\"Launch the Run Dialog\");

//向XML測試結果中添加注釋

Datk.KeyBoard.SendKey(Datk.KeyBoard.Key.LWin, Datk.KeyBoard.EventFlags.KeyDown);

Datk.KeyBoard.SendKey(′R′);

Datk.KeyBoard.SendKey(Datk.KeyBoard.Key.LWin, Datk.KeyBoard.EventFlags.KeyUp);

}

#endregion

展開測試用例的功能區,添加實現該測試用例的功能性代碼:

/// 〈summary〉Use the Run dialog to launch iexplore.exe

/// 說明: 該測試用例只在Pocket PC phone上適用.〈/summary〉

///〈returns〉LogResult.Pass on success〈/returns〉

[TestCaseAttribute(\"RunDialog launching iexplore\", Type = TestType.Functional)]

//標記測試用例的屬性,以便Tux.NET可以識別該用例

[MobileDevicesDescriptor ( Product = Products.PocketPC ) ]

//測試用例針對PocketPC產品

public Log.LogResult LaunchIExplore()

{

RunDialog run = new RunDialog();

Launch(); //啟動一個運行對話框

Utils.GlobalLogger.AddComment(\"Select the edit control\");

//向XML測試結果中添加注釋

run.OpenTextBox.Click();

Utils.GlobalLogger.AddComment(\"Enter 'iexplore'\");

Datk.KeyBoard.SendString(\"iexplore\");

Utils.GlobalLogger.AddComment(\"Click Ok\");

run.OKButton.Click();

Utils.GlobalLogger.AddComment(\"Verify that iexplore is launched\");

Datk.WindowFinder iexploreFinder = new Datk.WindowFinder();

iexploreFinder.ProcessName = \"iexplore.exe\";

iexploreFinder.FindForm();

//如果iexplorer未找到,則拋出異常,并有效地記錄測試失敗

return Log.LogResult.Pass; //返回測試結果為Pass

}

至此已經完成對測試用例的設計。

2.4運行對Internet Explorer自動化測試

利用快捷鍵F5(Start with Debugging)運行該測試。可看到目標設備上鼠標自動啟動運行對話框,鍵入iexplorer.exe,點擊OK按鈕,之后Internet Explorer就被啟動了。該測試用例實現了對目標設備上瀏覽器的自動化測試。通過ActiveSync可以在目標設備的\est文件夾下查看測試日志文件Result.log。其中以XML形式記錄了測試過程中的詳細信息。

3結束語

Windows Mobile為嵌入式智能移動終端產品的開發提供了比較完整的解決方案,特別是在PocketPC和Smartphone領域正獲得越來越廣泛的應用。針對基于Windows Mobile上的設備,微軟提供了Logo Testing規范在一定程度上來保證OEM廠商的產品質量,實際上,廠家所發布的產品不僅要嚴格通過該規范,還需要就具體產品作出更有針對性的測試。本文就利用Tux.NET在Visual Studio 2005中實現了Windows Mobile上設備UI自動化測試,對實現其他應用程序UI自動化測試具有借鑒意義。在實際應用中,可以對一系列應用程序UI設計具體自動化測試,將之集成到Windows Mobile CE Test Kit中,實現自動執行對多個應用程序UI測試,從而在較大程度上提高了測試效率,有助于提高測試質量,縮短了產品開發周期。

參考文獻:

[1]陳浩,鄒北驥,江文,等.基于消息機制的自動化黑盒測試方法研究[J]. 計算機應用研究,2004,21(10):33-35,103.

[2]劉淵,王開云,范曉嵐,姜建國.內核網絡協議棧功能測試自動化的實現[J].計算機應用,2005,25(5):1052-1054.

[3]王軼辰,劉斌.嵌入式軟件仿真測試環境的軟件體系結構設計[J]. 計算機工程與應用,2005,41(16):97-99.

[4]王毅,蔡建平.基于API測試的分布式測試框架的研究與實現[J].計算機工程與設計,2004,25(8):1299-1301,1304.

[5]MOHAMOD A B.Using genetic algorithm to improve the performance of multi-host vulnerability checkers[J].IEEE,2001,23(17):368-376.

[6]WEYUKER E J.Experience with performance testing of software systems:issues,an approach, and case study[J].IEEE Transaction on Software Engineering,2000,26(12): 1147-1156.

[7]FEWSTER M,GRAHAM D.軟件測試自動化技術與實例詳解[M].舒智勇,等譯.北京:電子工業出版社,2000.

[8]ROBINSON S,et al.C#高級編程[M]. 李敏波,等譯.北京:清華大學出版社,2005:45-78,160-219.

注:“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”

主站蜘蛛池模板: 欧美日韩动态图| 亚洲美女一级毛片| 国产二级毛片| 亚洲欧美一区在线| 久久精品人妻中文视频| 91久久精品日日躁夜夜躁欧美| 亚洲天堂高清| 亚洲日韩精品综合在线一区二区| 欧美亚洲日韩中文| 亚洲欧洲一区二区三区| 色精品视频| 国产免费久久精品99re不卡| 青青热久麻豆精品视频在线观看| 超清无码一区二区三区| 久草青青在线视频| 人妻精品久久无码区| 亚洲一道AV无码午夜福利| 国产福利微拍精品一区二区| 国产无码在线调教| 久久国产精品无码hdav| 亚洲国产成熟视频在线多多| 欧美一区精品| 国产亚洲精品自在线| 久操线在视频在线观看| 精品亚洲欧美中文字幕在线看| 国产微拍一区二区三区四区| 国产一级二级三级毛片| 精品久久久久久中文字幕女| 一本大道无码日韩精品影视| 欧洲欧美人成免费全部视频| 日韩精品亚洲一区中文字幕| 黄色三级网站免费| 国产粉嫩粉嫩的18在线播放91| 无码在线激情片| 日韩最新中文字幕| 操国产美女| 伦伦影院精品一区| 亚洲精品在线观看91| 精品福利国产| 日韩欧美中文| 影音先锋丝袜制服| 亚洲区视频在线观看| 国产精品尤物在线| 日韩在线第三页| 亚洲中文字幕久久无码精品A| 国产精品吹潮在线观看中文| 免费一级全黄少妇性色生活片| 婷婷久久综合九色综合88| 四虎在线观看视频高清无码| 中文字幕中文字字幕码一二区| 青青草91视频| 国产最爽的乱婬视频国语对白| 久久这里只有精品23| 亚洲AⅤ波多系列中文字幕| 欧美、日韩、国产综合一区| 四虎永久在线精品国产免费| 午夜影院a级片| 亚洲综合片| 欧美区国产区| 国内精品九九久久久精品| 99在线视频免费| 三上悠亚一区二区| 谁有在线观看日韩亚洲最新视频| 欧美激情第一区| a色毛片免费视频| 在线视频亚洲色图| 日韩无码视频网站| 91视频99| 制服丝袜亚洲| 国产精品视频猛进猛出| 91久久天天躁狠狠躁夜夜| 亚洲综合色区在线播放2019| 日韩欧美在线观看| 欧美在线网| 午夜在线不卡| 婷婷六月色| 国产高清在线精品一区二区三区 | 凹凸国产熟女精品视频| 在线欧美日韩| 88av在线播放| 婷婷久久综合九色综合88| 97视频在线精品国自产拍|