程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#借助Code UI Automation脫離VS黑盒自動化測試工具編寫

C#借助Code UI Automation脫離VS黑盒自動化測試工具編寫

編輯:C#入門知識

本文摘要:

1:測試要求

2:在VS中運行自動化測試

3:脫離VS進行自動化測試

 

在上一文中《C#借助API實現黑盒自動化測試工具的編寫》(http://www.cnblogs.com/luminji/archive/2010/11/03/1867730.html),我們使用WINDOWS API來實現自動化測試工具的編寫。但是,這種辦法在大型軟件測試的時候,需要很細致和繁雜的工作。在VS2010出來以後,我們不妨看看Code UI Automation這個好東西。關於Code UI Automation已經有人介紹過很多,本文要說明的重點如下:

1:使用Code UI Automation來錄制手工操作UI的動作,讓VS根據這些操作自動生成測試代碼;

2:新建WINFORM項目(也即黑盒工具),在這個WINFORM項目調用這些自動生成的代碼;

上文提到的1,之所以要讓VS自動生成代碼,是為了免去我們手動編寫測試代碼的繁雜工作。上文提到的2,是為了可以讓我們的測試工具脫離VS。

本文代碼下載:http://download.csdn.net/source/2839416

 

一:測試要求

測試的要求仍舊如下,假設存在這樣一個應用程序:

1:提供一個WINFORM窗體,上面存在一個TextBox,以及一個Button;

2:點擊Button,會彈出提示框,提示框內容為TextBox的值;

現在,測試要求如下:

1:在300台機器上運行上面的程序;

2:到這300台機器上去點擊這個Button,看看上文中的功能2有沒有實現;

 

二:在VS中運行自動化測試

為了說明這個例子,我們創建了解決方案WindowsFormsApplicationTest,該解決方案共分為三個項目:

  1. WindowsFormsToBeTest,被測試的應用程序;
  2. TestProject1,VS2010的測試項目(使用.NET FRAMEWORK4);
  3. WindowsFormsTester,要編寫的黑盒工具,也是一個WINFORM;

     

假設WindowsFormsToBeTest已經編寫完畢,運行之。現在使用TestProject1中的Code UI Automation(新建"編碼的UI測試")來錄制操作(操作過程為:在WindowsFormsToBeTest的文本框中輸入"ABC",點擊Button,彈出提示,點擊確定),然後生成代碼,如下圖:

\ \

找到生成的代碼中公開的測試方法:

[TestMethod]

public void CodedUITestMethod1()

{

this.UIMap.RecordedMethod1();

}

其實,通過查看this.UIMap.RecordedMethod1()這個方法,VS也是調用WINDOWS API來實現獲取各類控件的句柄。這個時候,如果我們在VS的測試列表編輯器中運行這個選中的測試CASE,

\

就會發現VS自動為我們復現了一個完整的錄制過程中的操作。如下:

\

 

三:脫離VS運行自動化測試

接下來的工作是需要在我們自己的應用程序WindowsFormsTester中運行這個測試。

3.1:首先,我們需要在WindowsFormsTester中引用這些DLL:

\

它們應該是在一個類似如下的文件夾下,D:Program FilesMicrosoft Visual Studio 10.0Common7IDEPrivateAssemblies。如果不引用這些文件,編譯會通過,但是運行時會報類似如下的錯誤:未能加載文件或程序集"Microsoft.VisualStudio.TestTools.UITest.Extension.IE.Communication.Interop, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"或它的某一個依賴項。系統找不到指定的文件。

3.2:在TestProject1中提供一個類來提供一個靜態方法,如下:

public class TestInit

{

public static void Init()

{

Playback.Initialize();

 

}

}

 

要注意,這點很重要,必須運行Playback.Initialize(),不然你自己的應用程序獲取的句柄全部都是無效的。

3.3:現在,可以在WindowsFormsTester調用TestProject1中的公開方法了,如下:

TestInit.Init();

CodedUITest1 c = new CodedUITest1();

c.CodedUITestMethod1();

 

這樣,我們便完成了一個脫離了VS的黑盒自動化測試工具WindowsFormsTester。

借助Code UI Automation的自動生成代碼,使我們繁雜而細致的測試代碼編寫工作交給VS的測試引擎去實現,我們可以更多的將細節放在測試的業務邏輯上,而不是努力地去獲取各種控件的句柄並操作他們。

特別感謝周京生http://hi.csdn.net/space-1424875.html提供的幫助。

    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved