



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、微軟Visual Studio 2010中UI 自動測試技術(shù)探討唐明 1 楊永剛 2( 1. 西安培華學院,陜西西安710125;2. 西安交通大學城市學院,陜西西安 710018)摘 要 本文探討了微軟Visual Studio 2010 中新增的UI 自動測試技術(shù)的原理和使用方法。關(guān)鍵字Visual Studio 2010; UI 自動測試;CodedUI Test1 引言Visual Studio 是微軟公司著名的開發(fā)工具,在最新的2010版中對測試部分做了很大的加強,加入了很多新的測試方法,本文將著重介紹一下其新加入的UI自動測試(CodedUI test)功能。傳統(tǒng)的測試過程主要由功
2、能測試和程序結(jié)構(gòu)測試組成,也就是常說的黑盒測試和白盒測試,他們一般所占的比重大致為80%和 20%,而黑盒測試主要由手工來做。由此可見,提高黑盒測試自動化,可以極大的提高測試效率。UI 的自動測試不是一個新概念,目前已經(jīng)有很多相關(guān)的產(chǎn)品上市,強大的如QTP( Quick Test Professional)等,較差的如“按鍵精靈”之類的工具。但是 QTP 等工具的價格不是一般中小型軟件公司所能承受的,而“按鍵精靈”類的工具主要不是面向 UI 自動測試研發(fā)的,功能上較差。Visual Studio 2010 中 UI 自動測試功能的推出,給我們提供了一個新的思路,主要優(yōu)勢在于:( 1)跟 Vis
3、ual Studio 無縫集成,可以直接在Visual Studio 中調(diào)用,同時可以在Visual Studio 2010 TeamFoundation 的實驗室中心集成,實現(xiàn)在虛擬機中自動部署并執(zhí)行測試。( 2)和微軟Windows 平臺的兼容性好。因為二者都是微軟自家的產(chǎn)品,自然提供了非常良好的兼容性。( 3)使用方便,入門容易。同時支持腳本的自動錄制和手工編寫。腳本支持C#、 VB 、 VC+ 等多種語言,測試人員可以自行選擇自己熟悉的語言。當然如果測試人員不懂編程也沒問題,自動錄制腳本時可以不寫一行代碼。( 4)價格適中,適合中小企業(yè)使用。這里需要指出的是:只有Premium 和 U
4、ltimate 版才包含UI 自動測試功能,Professional 版是不帶此功能的。根據(jù)微軟在線商店的信息Premium 版(含 MSDN )每個授權(quán)售價2 千多美元,Ultimate 版(含 MSDN )每個授權(quán)售價3 千多美元,比起QTP 之類工具動輒幾十萬上百萬美元的售價,微軟的價格還是非常實惠的。3 VS2010 中 UI 自動測試技術(shù)入門下面我們通過一個例子,逐步為讀者講解一下,如何在VS2010 中建立一個UI 自動測試的工程。UI 自動測試可以支持Web 瀏覽器、Window From 、 WPF 的程序,不過不支持Silverlight 程序。為了簡單起見,我們選擇了Win
5、dows 自帶的計算器工具作為測試對象,主要測試一下計算器的加法功能。這里需要稍微提一下, VS2010 的 UI 自動測試并不需要被測試程序提供源代碼。步驟一:創(chuàng)建一個測試工程打開VS2010,通過菜單的文件-新建-項目新建一個測試項目,命名為TestProject (也可以隨意命 名),這里為了方便講解,我們選擇了一個C#的測試項目模板。(VB、VC+語言也是支持的)工程建立好以后,我們在解決方案資源管理器中的TestProject節(jié)點上(注意不是解決方案節(jié)點)點擊右鍵,選擇添加f編碼的UI測試,來建立一個新的 UI測試項。之后彈出了一個對話框,標題為“為編碼的 UI測試生成代碼”,這里有
6、2個選項,一個選項是“錄制操 作、編輯UI映射或添加斷言”,另一個選項是“使用現(xiàn)有的操作錄制”,因為我們是新建測試項,所以選擇 第一項。此時,在屏幕的右下角彈出了腳本錄制的工具框,如圖 1所示。一二-F -螞的U二測一生成器 ? W圖1腳本錄制工具框步驟二:錄制測試腳本(1)點擊腳本錄制的工具框的第一個按鈕(紅色的) ,開始錄制。此后,我們在操作系統(tǒng)范圍內(nèi)的核心 操作都將被記錄。(2)從開始菜單中啟動 Windows的計算器工具。(3)點擊計算器上的數(shù)字鍵1。(4)點擊計算器上的加法鍵。(5)點擊計算器上的數(shù)字鍵2。(6)點擊計算器上的等號鍵。(7)點擊腳本錄制的工具框的第一個按鈕,停止錄制。
7、(8)通過腳本錄制工具框的第二個按鈕,可以查看我們操作的記錄,對于沒有意義的操作記錄,可以 在這里刪除。確認無誤后繼續(xù)操作。(9)點擊腳本錄制的工具框的第四個按鈕,生成代碼,函數(shù)命名為 RecordedMethodl (也可任意命名)。 步驟三:增加斷言(1)增加斷言的目的其實就是做出一個對我們操作結(jié)果的判定。將腳本錄制工具框的第三個按鈕拖拽 到計算器的結(jié)果框上,這時會有一個藍色的方框?qū)⒔Y(jié)果框括起來。(2)之后會彈出對話框提示 UI的控件屬性,選擇Text屬性后點擊鼠標右鍵,選擇添加斷言。比較運算符選:擇AreEqual,比較值設置為3.。(3)點擊腳本錄制的工具框的第四個按鈕,生成的函數(shù)命名
8、為AssertMethod1 (也可任意命名)。(4)點擊腳本錄制的工具框的關(guān)閉按鈕,回到VS2010的主畫面中。步驟四:啟動測試在VS2010的主畫面中按F5鍵啟動程序調(diào)試,VS2010的測試工程也可以當作是普通的程序工程一樣調(diào) 試運行的,可以看到剛才我們錄制的操作流程被回放了一遍,最后在屏幕下方的測試結(jié)果選項卡中,顯示測試已經(jīng)通過了。細心的讀者可以試驗一下,操作流程回放的過程,并不是照搬錄制的過程,比如鼠標的移動軌跡就不是 按照錄制時的軌跡。這說明錄制過程只記錄了核心的有效操作數(shù)據(jù),回放時可以節(jié)省測試的運行時間。步驟五:修改測試項上面我們看到了一個已通過的測試,那么未通過的測試是什么狀況吶
9、。讓我們做一點修改。比如這里我 們期望,剛才的“ 1+2”的操作,最后得出的結(jié)果為“ 4”,而不是返回的“ 3”。這樣按照剛才的測試,就是 未通過的。在解決方案資源管理器中的UIMap.uitest節(jié)點上點擊右鍵,選擇使用編碼的UI測試生成器進行編輯, 來進行修改。將腳本錄制工具框的第三個按鈕拖拽到計算器的結(jié)果框上,之后會彈出對話框提示UI的控件屬性,選擇Text的右鍵菜單,選擇添加斷言。比較運算符選擇AreEqual,比較值設置為4.。點擊腳本錄制的工 具框的第四個按鈕,生成代碼命名為 AssertMethod1 ,單擊替換并生成按鈕,覆蓋了原來的測試方法。這樣我們就修改了剛才的斷言。關(guān)閉腳
10、本錄制工具框,回到VS2010的主畫面中。按F5運行測試。這次測試沒有通過,運行后停到了出錯的測試項上,并提示了錯誤的內(nèi)容。3原理分析VS2010中UI自動測試的擴展框架如圖 2所示。其中,處于底層的是網(wǎng)絡插件模塊和富客戶端插件模塊,是技術(shù)抽象層指令的具體執(zhí)行者。他們主要通 過Windows API、鉤子函數(shù)等技術(shù)手段,融合進需要測試的程序中,然后模擬出用戶的操作。技術(shù)抽象層模塊,主要用于從不同的技術(shù)和計算機語言中,例如Web瀏覽器、MFC、Window From、WPF等,抽象出相通的操作概念,然后再交付底層執(zhí)行。錄制記錄模塊,錄制了操作的過程,并通過過濾/聚合的規(guī)則提取并化簡核心操作。我們
11、可以注意到,在錄制腳本的過程中,不是每個操作的細節(jié)都被完整的記錄下來的,比如鼠標的軌跡就沒有被記錄,因為我 們關(guān)注的只是鼠標點擊的動作。播放模塊,可以回放測試腳本。位于頂層的是測試運行模塊和CodedUI Test模塊,提供腳本錄制和測試的用戶交互界面,生成并解釋用戶可以理解的用高級語言編寫的測試腳本。4提高前面講述了如何通過工具錄制一個測試腳本,但是錄制的腳本想修改的話,是非常麻煩的,需要重新錄 制一遍,而且自動生成的代碼非常多,想要修改時很難找到地方。其實,測試腳本是支持手工編寫的,并 且手工編寫的腳本要比錄制的簡潔許多,而且更容易維護。下面我們介紹一下手工編寫測試腳本的步驟, 還是以計算
12、器為例。界面架構(gòu)圖2界面架構(gòu)示意圖步驟一:創(chuàng)建一個測試工程同錄制腳本的過程一樣,新建一個測試工程并添加編碼的UI 測試 ,不過在選擇“為編碼的 UI 測試生成代碼”時,應該選擇取消。步驟二:編寫腳本(在 CodedUITest1.cs文件中編輯)( 1)因為使用了類庫,所以首先要聲明該類庫的引用using Microsoft.VisualStudio.TestTools.UITesting.Win Controls ;( 2)在用腳本打開計算器工具(可以直接在CodedUITestMethod1 方法中編寫)ApplicationUnderTestapp= ApplicationUnderTe
13、st.Launch ( Environment.GetFolderPath( Environment.SpecialFolder. Windows ) + "system32calc.exe" ) ;( 3)找到控件上的文字為“1”的按鈕,并模擬點擊事件。這里注意,我們找的是控件上的文字,而不是控件的位置,控件上的文字一般是不會經(jīng)常修改的,而且文字相同的情況也不是很多。WinButton button1 = new WinButton ( app) ;button1.SearchPropertiesWinButton.PropertyNames.Name = "1
14、" ;Mouse.Click ( button1 ) ;( 4)找到上面文字為“+”的按鈕,并模擬點擊事件WinButton button2 = new WinButton ( app) ;button2.SearchPropertiesWinButton.PropertyNames.Name = "+" ;Mouse.Click ( button2) ;( 5)找到上面文字為“2”的按鈕,并模擬點擊事件WinButton button3 = new WinButton ( app) ;button3.SearchPropertiesWinButton.Prope
15、rtyNames.Name = "2" ;Mouse.Click ( button3) ;( 6)找到上面文字為“=”的按鈕,并模擬點擊事件WinButton button4 = new WinButton ( app) ;button4.SearchPropertiesWinButton.PropertyNames.Name = "=" ;Mouse.Click ( button4) ;( 7)因為計算器中,顯示結(jié)果的控件為Id 等于 403 的窗口控件,并內(nèi)嵌了一個Edit 控件。所以編寫如下代碼來獲得該Edit 控件的 Text 屬性,并判斷是否與
16、期望值相等。WinWindow window = new WinWindow ( app) ;window.SearchPropertiesWinWindow.PropertyNames.ControlId = "403" ;WinEdit result = new WinEdit ( window ) ;Assert.AreEqual( "3. ", result.Text) ;( 8)最后關(guān)閉計算器app.Close();步驟三:啟動測試同前面介紹的錄制腳本一樣,按F5 鍵啟動測試。我們看到計算器被打開,并且有模擬的鼠標操作,最后測試通過。5 結(jié)束語
17、上面介紹了Visual Studio 2010 中的 UI 自動測試功能。在實際應用過程中,自動測試技術(shù)不僅僅可以改善傳統(tǒng)的黑盒測試方法,還可以為許多最新的軟件開發(fā)理論如測試驅(qū)動開發(fā)、敏捷開發(fā)等等的提供非常有效的支持。測試驅(qū)動開發(fā)是一種新式的開發(fā)方法。它要求在編寫程序功能代碼之前先編寫測試代碼,之后通過測試來推動整個開發(fā)的進行。目的是使代碼簡潔可用并且提高質(zhì)量,并加速整個開發(fā)過程。敏捷開發(fā)提倡的是不斷的迭代開發(fā)與分期交付并歡迎需求的變更。從上面的概念就可以看出,沒有一個強大而高效的測試支持,這些新理論是無法很好的實施的。參考文獻1 高陽,蔣建華,毛志勇,段君毅著.構(gòu)筑敏捷的開發(fā)團隊.微軟Visual Studio 2010 實戰(zhàn)兵法2 黃偉榮的博客文章.手工制Coded UI Test( Visual Studio 2010 新的 UI 自動化測試).http
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO 10713:2025 EN Jewellery and precious metals - Gold alloy coatings
- T-ZHAQ 8-2024 小葉牛大力種植技術(shù)規(guī)程
- 二零二五年度應屆大學生人力資源實習合同
- 二零二五年度股票投資風險控制與合規(guī)監(jiān)督協(xié)議
- 二零二五年度個人債權(quán)轉(zhuǎn)讓協(xié)議書(關(guān)于專利權(quán)轉(zhuǎn)讓)
- 高管二零二五年度勞動合同及離職交接程序
- 二零二五年度路橋工程土地征用與拆遷合同
- 美容院合伙人投資回報與風險控制協(xié)議書(2025年度)
- 2025年度金融借款合同違約起訴流程及費用結(jié)算合同
- 2025年度餐飲企業(yè)跨界合作合伙經(jīng)營合同
- 六年級心理健康ppt名師優(yōu)質(zhì)課獲獎市賽課一等獎課件
- 四川輕化工大學
- 六西格瑪質(zhì)量管理在口腔科器械管理中的作用
- 高中心理健康教育-認識自我悅納自我教學課件設計
- 素材合集-扁平化圖標素材(彩色)
- (全)電梯安全風險管控清單
- 中國思想史 馬工程329P
- 《網(wǎng)店美工》教案-商品詳情頁設計
- 原始狩獵圖哀郢楚商
- 新版冀教版(冀人版)科學五年級下冊全冊教案
- 烏茲別克斯坦
評論
0/150
提交評論