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

實現(xiàn)基于Windows Mobile的智能終端中UI自動化測試

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

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

關(guān)鍵詞:Windows Mobile;軟件測試;自動化測試;用戶接口測試;測試用例

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

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

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

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

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

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

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

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

1.1Logging

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

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

1.2Utils.NET

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

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

1.3Device Automation ToolKit (DATK)

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

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

1.4Mobility ToolKit (MTK)

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

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

1.5UIAL 

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

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

1.6Area Libraries

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

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

1.7Tests Cases and Suites

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

2基于DATK開發(fā)UI自動化測試

利用DATK實現(xiàn)UI自動化測試關(guān)鍵在于創(chuàng)建抽象運行對話框和設(shè)計測試用例。

2.1開發(fā)環(huán)境搭建

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

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

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

Visual Studio 2005,微軟的最新系列的集成開發(fā)環(huán)境,其最新版本是Visual Studio 2005 Team Suite。

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

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

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

2.2創(chuàng)建抽象運行對話框

當開發(fā)環(huán)境搭建好后,就可以開始實現(xiàn)UI自動化測試了。關(guān)鍵之一是要創(chuàng)建抽象運行對話框,當創(chuàng)建好之后需要編寫測試用例進行調(diào)用。

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

在目標設(shè)備上激活shell32.exe,打開運行程序?qū)υ捒颉F浯芜€需要生成RCML文件,在該文件中含有對話框的XML形式表示,采取這種形式有利于向?qū)υ捒蚣捌淇丶砑颖匾畔ⅰI蒖CML文件的具體步驟:在開發(fā)工作站上執(zhí)行C:\\WINDOWS\\system32\\cmd.exe /k .\\Bin\\CommandWindow.bat,其快捷鍵為C:\\MtkKit\\CommandWindow.lnk。

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

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

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

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

2.3設(shè)計測試用例

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

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

#region Utility Methods

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

public void Launch()

{

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

//向XML測試結(jié)果中添加注釋

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

展開測試用例的功能區(qū),添加實現(xiàn)該測試用例的功能性代碼:

/// 〈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產(chǎn)品

public Log.LogResult LaunchIExplore()

{

RunDialog run = new RunDialog();

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

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

//向XML測試結(jié)果中添加注釋

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; //返回測試結(jié)果為Pass

}

至此已經(jīng)完成對測試用例的設(shè)計。

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

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

3結(jié)束語

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

參考文獻:

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

[2]劉淵,王開云,范曉嵐,姜建國.內(nèi)核網(wǎng)絡(luò)協(xié)議棧功能測試自動化的實現(xiàn)[J].計算機應(yīng)用,2005,25(5):1052-1054.

[3]王軼辰,劉斌.嵌入式軟件仿真測試環(huán)境的軟件體系結(jié)構(gòu)設(shè)計[J]. 計算機工程與應(yīng)用,2005,41(16):97-99.

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

[5]MOHAMOD A B.Using genetic algorithm to improve the performance of multi-h(huán)ost 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.軟件測試自動化技術(shù)與實例詳解[M].舒智勇,等譯.北京:電子工業(yè)出版社,2000.

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

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

主站蜘蛛池模板: 成人免费黄色小视频| 99视频在线观看免费| 国产中文一区a级毛片视频| a级毛片视频免费观看| 又黄又爽视频好爽视频| 成年人福利视频| 国产精品自在在线午夜| 2021天堂在线亚洲精品专区 | 亚洲中文在线看视频一区| 中文字幕亚洲综久久2021| 日本免费新一区视频| 毛片在线播放网址| 中国毛片网| 欧美无遮挡国产欧美另类| 免费啪啪网址| 巨熟乳波霸若妻中文观看免费| 国产精品xxx| 国产99在线| 国产自产视频一区二区三区| 九九精品在线观看| 久久精品无码专区免费| 久久男人视频| 免费无码又爽又刺激高| 国产女人爽到高潮的免费视频 | 麻豆国产精品视频| 国产一区二区免费播放| 国产正在播放| 精品无码人妻一区二区| 国产一级做美女做受视频| 99999久久久久久亚洲| 亚洲成a∧人片在线观看无码| 亚洲最大情网站在线观看| 国产激情无码一区二区APP| 男人天堂亚洲天堂| 手机永久AV在线播放| 国内老司机精品视频在线播出| 亚洲天堂视频网站| 中文字幕精品一区二区三区视频 | 亚洲人在线| 国产AV毛片| 欧美黄网在线| 97国产精品视频自在拍| 久久黄色免费电影| 99热免费在线| 亚洲第一区在线| 香蕉eeww99国产精选播放| 被公侵犯人妻少妇一区二区三区| 久久熟女AV| 欧美日韩精品在线播放| 色欲色欲久久综合网| 欧美久久网| 最新亚洲人成无码网站欣赏网| 国产特级毛片| 丁香综合在线| 99人妻碰碰碰久久久久禁片| 成人免费网站久久久| 婷婷六月综合网| 99这里只有精品在线| 亚洲水蜜桃久久综合网站| 亚洲国产天堂久久综合226114 | 中文字幕 91| 精品综合久久久久久97超人该 | 国产内射在线观看| 免费国产黄线在线观看| 91香蕉视频下载网站| 人人看人人鲁狠狠高清| 日本一区二区三区精品AⅤ| 91免费观看视频| 亚洲网综合| 99这里只有精品免费视频| 她的性爱视频| 国产成人精品一区二区三区| 成人综合久久综合| 久久黄色影院| 欧美一区二区三区不卡免费| 五月婷婷丁香综合| 国产欧美高清| 中文无码精品A∨在线观看不卡| igao国产精品| 91色爱欧美精品www| 毛片免费在线视频| 毛片网站在线看|