ホワイト-アプリケーションの機能テストの自動化

アプリケーションの機能テストを自動化するための多くのツールがあります。 一方では、汎用商用パッケージ、実際の自動化モンスター-HP QuickTest Pro、SilkTest、TestComplete。 一方、機能のないツールに特化または「貧弱」-Selenium(Webアプリケーション)、pyWinAuto、Win32 :: GuiTestなど しかし、私の意見では、無料ツールの真の宝石はCodeplex White Frameworkです。



少し前までは、.netアプリケーションを自動化するのに時間がかかりました。 職場では、QuickTest Proがメインの自動化ツールとして採用されましたが、この特定のプロジェクトでは非常に高価でした。プロジェクトは非常に小さく、自動化の対象となる操作はわずかでした。 私は無料の代替品を探して起きました。



最初は、パール大麦Win32 :: GuiTestでテストされます。 彼はこのタスクに対処しましたが、スクリプトコードは非常にずさんであることが判明しました。後で維持するのは非常に難しいでしょう。 そして、ここでサイトcodeplex'aはホワイトが発見されました

それは非常にシンプルで便利であることが判明したため、使用することにしました。 このフレームワークは、Win32、WinForms、WPF(Silverlight)、SWTのほとんどの標準コントロールをサポートしています。 catの下には、Windows XP Calculatorの簡単な自動化の例があります。



私たちは何をしますか:

計算機に2つの数値10と59を追加し、結果が69であることを確認します。

必要なもの:

1.サンプルを作成するためのVisual C#Express

2.ウィンドウとコントロールのパラメーターを決定するUISpy。 Windows 7 SDKに含まれています

3.実際に白いフレームワーク

4. NUnit 。 独自のUIやエラー/成功レポートメカニズムを作成しないように使用すると便利です。



行こう%)



Visual C#ExpressでタイプクラスライブラリのCalcAutoTestsプロジェクトを作成します。

アセンブリリンクを追加する

1. Nunit.Framework

2. White.Core

3. White.Nunit



NUnitは、テストの記述を容易にするクラスとメソッドの属性を導入します。この例では、それらの一部のみを使用します-

1. TestFixture-クラスを一連のテストとして指定します。

2. TestFixtuteSetUp-テストの前に実行されるメソッドを示します。

3. TestFixtureTearDown-テストの完了後に実行されるメソッドを示します。

4.テスト-テスト方法



Whiteは、いくつかのパラメーター(コントロールを銘刻文字(ウィンドウタイトル)、AutomationID)で識別できます。コントロールのリソース識別子、コントロールのタイプ、インデックスで識別できます。 識別は、1つまたは複数の論理条件「AND」で実行できます。 このタスクでは、数字ボタン、「+」および「=」ボタンは碑文で識別でき、結果表示フィールドはAutomationIDで識別できます。 このフィールドを識別するには、UISpyが必要です。



画像



最後に、準備が完了したら、テストセットコードを記述します。



using System;<br> using System.Diagnostics;<br> using NUnit.Framework;<br> using Core;<br> using Core.UIItems.Finders;<br> using Core.WindowsAPI;<br> using Core.Factory;<br> using Core.UIItems;<br> using Core.UIItems.WindowItems;<br><br><br> namespace CalcAutoTests<br>{<br> [TestFixture]<br> public class CalcTestSet<br> {<br> private Application application;<br> private Window mainform;<br> private Button[] btnDigits;<br> [TestFixtureSetUp]<br> public void CalcStartup() <br> {<br> // <br> var psi = new ProcessStartInfo();<br> psi.WorkingDirectory = @"C:\Windows\"; <br> psi.FileName = @"calc.exe"; <br> // <br> application = Application.Launch(psi);<br> // . <br> // Windows "" <br> mainform = application.GetWindow( "Calculator" ,InitializeOption.NoCache);<br> // "read only", <br> // " " <br> btnDigits = new Button[10];<br> for ( int i = 0; i < 10; i++)<br> btnDigits[i] = mainform.Get<Button>(i.ToString());<br> }<br> [TestFixtureTearDown]<br> public void CalcShutdown() <br> {<br> // <br> application.Kill();<br> }<br> [Test]<br> public void testAddition()<br> {<br> int a = 10, b = 59;<br> // + = <br> var btnAdd = mainform.Get<Button>( "+" );<br> var btnExec = mainform.Get<Button>( "=" );<br> // AutomationID, UISpy <br> var tbResult = mainform.Get<TextBox>( "403" );<br> // 10 <br> btnDigits[1].Click(); //"1" <br> btnDigits[0].Click(); //"0" <br> btnAdd.Click(); // "+" <br> // 59 <br> btnDigits[5].Click(); // "5" <br> btnDigits[9].Click(); // "9" <br> btnExec.Click(); // "=" <br> var result = tbResult.Text; // <br> int ires = int .Parse(result,System.Globalization.NumberStyles.Float);<br> // ? <br> Assert.AreEqual(a + b, ires);<br> }<br> }<br><br>} <br><br> * This source code was highlighted with Source Code Highlighter .







プロジェクトをまとめる。



NUnitがデフォルトのディレクトリにインストールされている場合、アセンブリの結果があるディレクトリに移動し、次の行を使用してテストを実行します。



「C:\ Program Files \ NUnit 2.5.2 \ bin \ net-2.0 \ nunit-console.exe」CalcAutoTests.dll



電卓自体が%ボタンを押す方法をお楽しみください)



この基本的な合成テストでは、Whiteの機能の10分の1は明らかになりませんでしたが、高価な市販のツールを使用してアプリケーションを自動化する必要がないことを示したと思います。 レコーダーが存在しない可能性のある無料の代替手段を常に見つけることができます(ホワイトは理論的にはそれを持っていることを知っていますが、QTPレコーダーと比較することはできません)、高度なレポートツール(簡単に作成できます)、産業用テストサポートシステムとの統合。 しかし、これには否定できない利点が1つあります。ライセンスのコストは、小規模なプロジェクトにとって非常に重要です。



All Articles