VS2010測試功能之旅:編碼的UI測試(1)

 

前言

研究VS2010的自動化測試有一段時間了,在研究的過程中,發現網上的VS2010相關的測試資料十分稀少,這給學習帶來比較大的困難。幸運的是,自己因爲常用QuickTest Professional做自動化測試,並且對.Net代碼比較瞭解,使得在學習的過程中並不是特別困難,對UI CODED TEST也已經有一定了解。本着與大家交流,共同進步的想法,思考之後,決定寫這些隨筆,來對VS2010的測試功能做一些探索和總結。希望大家能夠多多指教!

  

自動化測試

自動化測試指軟件測試的自動化,軟件測試就是在預設條件下運行系統或應用程序,評估運行結果,預先條件應包括正常條件和異常條件。

自動化測試是把以人爲驅動的測試行爲轉化爲機器執行的一種過程。通常,在設計了測試用例並通過評審之後,由測試人員根據測試用例中描述的規程一步步執行測試,得到實際結果與期望結果的比較。在此過程中,爲了節省人力、時間或硬件資源,提高測試效率,便引入了自動化測試的概念。

VS2010編碼的UI測試,屬於自動化測試中的一種,它可測試應用程序的用戶界面是否功能正常。編碼的 UI測試對應用程序的用戶界面控件執行操作,並驗證是否以正確的值顯示了正確的控件。

 

一個簡單的示例

在上面對於自動化測試的介紹中已經提到,編碼的UI測試將對應用程序的用戶界面進行操作之後進行驗證,對於界面的操作,我們需要預先錄製或者直接編寫(日後會介紹直接編寫的方式),在這個簡單的實例中,我們將先使用錄製進行操作,錄製完畢之後,使用回放功能進行回放(類似於錄音機,錄製之後再播放)

 

一.新建測試項目

 

1.      首先打開VS2010,選擇測試à新建測試

 

 

2.      選擇編碼的UI測試,簡歷一個UI測試,名稱爲CodedUITest1.cs

 

 

 

3.      創建完成,我們可以看到創建之後,項目的目錄結構如下

 

下面做一個簡單的介紹

Solution Items:存放該解決方案中各個測試項目公用的設置

Local.testsetings文件和TraceAndTestImpact.testsettings是對解決方案中的測試進行整體上的設置,這個是建立測試解決方案的時候默認自動建立的兩項,一個用於運行,一個用於調試,當然這兩項是可以刪除的,testsettings類型文件可以通過右擊Solution Items的時候點擊添加新建項建立

TestProject1.vsmdi是用於對項目中創建的測試method進行組織和管理,讓其能組織成流程線,一個個進行測試

TestProject:我們剛纔建立的測試項目,可以看到剛纔建立的UI測試CodedUITest1.cs

 

二.錄製程序並回放

 

1.        假設我們現在有一個程序(這個示例程序在文章末尾有提供地址),現在我們需要對系統登錄的部分進行測試,正確的用戶名爲”Admin”,密碼爲”123456”

測試的內容是:

(1).輸入錯誤的用戶名或輸入錯誤的密碼,檢測系統是否提示“用戶或密碼錯誤”

(2).輸入正確的用戶名和正確的密碼,檢測系統是否提示“登錄成功”

程序的截圖如下所示:

 

 

2.        現在我們可以開始進行錄製,將剛纔的測試內容錄製成實際的操作

 

 

 

3.      點擊確定之後,可以看到屏幕的右下角彈出一個UI測試生成器,點擊錄製之後,就可以進行操作了

 

 

 

4.      之後首先輸入錯誤的用戶名和密碼,然後點擊登錄,之後彈出提示框“用戶名和密碼錯誤“

 

 

 

5.      這個時候我們可以在錄製面板點擊暫停錄製,然後點擊”生成代碼“,並將剛纔的操作放入方法InputErrorUidPwd中(至於生成後的代碼被放在了哪,現在可以先不用關心,最後我會進行說明)

 

 

 

6.      這個時候點擊錄製面板上的準星(這個時候準星已經Enable了),並一直按住鼠標不放,將鼠標拖到剛纔的彈出框上面的文字再鬆開,然後測試生成器的對象庫窗口會自動彈出,VS2010將捕獲彈出框上的label對象,如下圖所示:

 

 

7.      現在我們要進行第一個驗證,就是驗證這個彈出框用戶名或密碼錯誤!是否彈出來了,如果是,則測試通過,如果不是,則失敗,接着先前的步棸,首先要確認左邊的列表中“UI用戶名或者密碼錯誤Text“對象選中,之後選擇右邊的列表中的Exists屬性(該屬性表示label是否存在,存在則是True,不存在則是false),點擊添加斷言

 

 

    然後彈出爲Exists添加斷言的窗口,這裏我們需要選擇AreEqual,比較值是True,表示我們斷言用戶名或密碼錯誤這個label存在,如果運行測試的時候該label確實存在,則該測試步驟是通過的,否則就是失敗

    之後點擊錄製面板的生成代碼,爲剛纔添加的斷言生成方法AssertErrorWindow()(至於生成後的代碼被放在了哪,現在可以先不用關心,最後我會進行說明)

 

 

 

8.      然後我們繼續開始錄製,錄製開啓後,首先點擊“用戶名或密碼錯誤“彈出框的確定,然後用上面介紹的同樣的方法,輸入正確的用戶名和密碼,判斷彈出框是否爲登錄成功,分別添加InputRightUidPwd()操作方法和AssertRightWinow()斷言方法,最後便可以錄製結束

 

9.      之後我們可以點擊運行來進行測試

 

之後VS2010會自動操作剛纔演示的程序的登錄窗口,然後報告測試結果

 

 

三.如果現在程序發生異常

 

假設現在剛纔的示例程序,本來輸入錯誤的用戶名或密碼,應該彈出提示“用戶名或密碼錯誤”,現在因爲開發人員一時疏忽,不慎將提示改成了亂碼“咪asd阿什頓”,那麼是否剛纔錄製的測試能夠把這個測試出來呢?我們現在可以試試(這個錯誤的示例程序在文章最後也提供下載)

 

開始運行測試

 

最終不負我們所望,錯誤還是被測試出來了

 

 

 

四.錄製生成的代碼被放在了哪裏?

    首先我們再看看項目的文件結構

 

    可以發現剛纔錄製之後,VS2010自動生成了UIMap.uitest文件,我們自動生成的代碼就放在UIMap.Designer.cs

    進入去查看,可以看到剛纔錄製爲我們自動生成的四個方法InputErrorUidPwd()AssertErrorWinow()InputRightUidPwd()AssertRightWinow(),展開之後可以看到詳細操作

 

 

    而在CodeUITest1.cs文件中,也自動添加了幾句代碼,調用UIMap中錄製的測試操作

 

 

 

演示中提到的示例程序

說明:RightDemo.exe是演示中使用的沒有問題的程序,ErrorDemo.exe是演示中故意修改提示爲亂碼的那個示例程序

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章