• 軟件測試技術
  • 軟件測試博客
  • 軟件測試視頻
  • 開源軟件測試技術
  • 軟件測試論壇
  • 軟件測試沙龍
  • 軟件測試資料下載
  • 軟件測試雜志
  • 軟件測試人才招聘
    暫時沒有公告

字號: | 推薦給好友 上一篇 | 下一篇

用VS2005實現用戶界面自動化測試

發布: 2009-4-22 10:02 | 作者: 網絡轉載 | 來源: 測試時代采編 | 查看: 42次 | 進入軟件測試論壇討論

領測軟件測試網 Visual Studio 2005 新增的軟件測試功能使我們的開發工作更為快捷,代碼質量在一定程度上有所提高。想必大家對類的單元測試已經比較熟悉,這里我們來看看它提供的另一項更為有趣的測試——用戶界面自動化測試。事實上這個自動測試的本質仍是單元測試,單元測試的各種方法在用戶界面測試中仍然可用。 

  我們以一個簡單的 Windows Form 應用程序為例(在 Visual Studio 2005 Team System 下演示,其它版本亦可參考)。 ,這是一個一元二次方程的求解程序。

  在 Visual Studio 2005 中加載這個程序的工程,切換到待測試窗體(Form1)的源代碼視圖。添加一個用戶界面測試最簡單的方法是在事件函數聲明代碼上右擊鼠標,在快捷菜單中點擊“Create Unit Tests”。在彈出的對話框中點選待測試的函數(特別是事件函數),確定。當然,手工添加一個單元測試項目也是可以的,但通過快捷菜單自動生成的代碼中包含了一些測試輔助類和對象的聲明,使用起來更加方便。

  本例中,我們由 btnWorkOut_Click 創建單元測試,自動生成的代碼如下:

[DeploymentItem("XandY.exe")]
[TestMethod()]

public void btnWorkOut_ClickTest()
{
 Form1 target = new Form1();
 MyTestProject.XandY_Form1Accessor accessor = new MyTestProject.XandY_Form1Accessor(target);
 object sender = null; // TODO: Initialize to an appropriate value
 EventArgs e = null; // TODO: Initialize to an appropriate value
 accessor.btnWorkOut_Click(sender, e);
 Assert.Inconclusive("A method that does not return a value cannot be verified.");
}

  熟悉單元測試的朋友應該明白 [TestMethod()] 屬性的含義。在這個測試函數中,target 是待測試窗體的一個實例。sender 和 e 是各個事件函數必備的參數,一般情況下取 null 即可。最重要的是 accessor 對象,它是我們進行用戶界面自動化測試的“總代理”。通過它可以訪問到待測試窗體的各個方法、屬性和控件,并可調用控件已聲明的各個事件。由此,我們可以用 accessor 模擬使用者通過鍵盤、鼠標對用戶界面的各項操作,同時即時獲知程序中各個變量的狀態。有興趣的朋友可以讀讀 XandY_Form1Accessor 類的定義,了解這個“總代理”工作的奧秘。

  我們對測試代碼進行以下修改,以便對程序運行的正確性進行測試。

[DeploymentItem("XandY.exe")]
[TestMethod()]

public void btnWorkOut_ClickTest()
{
 Form1 target = new Form1();
 MyTestProject.XandY_Form1Accessor accessor = new MyTestProject.XandY_Form1Accessor(target);
 object sender = null; // TODO: Initialize to an appropriate value
 EventArgs e = null; // TODO: Initialize to an appropriate value
 target.Show();
 target.Refresh();
 System.Threading.Thread.Sleep(1000);
 accessor.textBox1.Text = "2";
 accessor.textBox2.Text = "4";
 accessor.textBox3.Text = "2";
 target.Refresh();
 System.Threading.Thread.Sleep(1000);
 accessor.btnWorkOut_Click(sender, e);
 target.Refresh();
 Assert.IsTrue(accessor.d >= 0);
 Assert.IsNotNull(accessor.xx);
 Assert.IsNotNull(accessor.xy);
 Console.WriteLine("X1 = " + accessor.textBox4.Text);
 Console.WriteLine("X2 = " + accessor.textBox5.Text);
 System.Threading.Thread.Sleep(1000);
 target.Close();
}

  以上代碼中,我們通過 target.Show() 呈現窗體,通過 target.Refresh() 可以即時地刷新窗體內容在屏幕的顯示,通過 System.Threading.Thread.Sleep(1000) 來延時。這幾段代碼都不是必需的,加入它們是為了便于程序反應和測試者觀察,我們也完全可以在不顯示用戶界面的情況下更快地運行自動測試。至于用 Assert 來監控變量狀態和用 Console 做輸出,用過單元測試的朋友都應該了解。

  此時,我們運行這個測試,就會在屏幕上先后看到窗體被加載,三個文本框被填入數據,計算結果出現在下面的文本框中,最后窗體被關閉。

  再來看看測試結果的輸出,符合我們的預期。


  Visual Studio 2005 的用戶界面自動化測試就是這么簡單。對于一般的測試,它使測試人員不必深究應用程序底層的實現。當然,對于本例這樣簡單的程序,我們用不著這么麻煩的測試,但是對于用戶界面更加復雜的程序,操作上存在更多的組合方式,手工測試的繁瑣程度以及查找問題的難度便大大上升了。使用 Visual Studio 2005 提供的自動化測試手段將在很大程度上減輕測試人員的負擔。有興趣的朋友甚至可以在這個基礎上進行二次開發,引入自動化測試腳本等專業測試方案,實現通用性更強的用戶界面自動化測試。

延伸閱讀

文章來源于領測軟件測試網 http://www.anti-gravitydesign.com/

TAG: 用戶界面 自動化


關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97