web-dev-qa-db-ja.com

ハンドコーディングコード化されたUIテスト

こんにちは私は、コード化されたUIテスト(CUIT)を使用してアプリケーションをテストすることを検討しています。録音オプションを試しましたが、これは十分な柔軟性がありません。別のサイズの画面で使用すると壊れます。

テストを手作業でコーディングできることは知っていますが、基本的なテストの書き方の良い例は見つかりません。ここにはCUITeを使用する例がありますが、これらの投稿は2011年のものであり、MicrosoftからCUITへの新しいアップグレードとの関連性がわかりません。

これらのテストは、Visual Studio 2012 Ultimateのビルド環境と統合する必要があるため、Seleniumを使用していません。

コードサンプルまたは優れたチュートリアルへのリンクをいただければ幸いですが、特にCUITのハンドコーディングを開始する方法の例を探しています。

10
Jeff Finn

CodePlexのCodeFirstコード化UIテストAPIプロジェクト( http://codeduicodefirst.codeplex.com/ )には、ダウンロード可能なプロジェクトデモ(アプリケーションとテスト)が含まれています。これは、記録/再生に依存せずにCUITテストを構築するために設計されています。

コードのみで作業する場合に必要な最大のことは、CUITレコーディングが作成する自動生成されたオブジェクトマップへの依存を回避する方法です。 Code-Firstプロジェクトは、個々のページオブジェクトにマップされたクラスを使用してこれを回避します。正しく覚えていれば、デスクトップアプリケーションで動作するようにプロジェクトコードを拡張する必要があります。

(私はこのプロジェクトとはまったく関係がありません。これは、私が見つけたCUITe以外の唯一のハンドコーディングリソースであり、最後に見たCUITeはしばらく更新されていません)。

6
Kate Paulk

多くの開発者はこれを知っていませんが、CodedUIを使用してCodeFirstテストを作成することは可能です。それは支持されていません、それは悪いimoです。録音オプションは壊れやすいものだと思います。マウス座標を使用するため、UIが変更されたときにテストを再作成する必要があります...

保守可能な方法は、 ページオブジェクトパターン (Seleniumなどの他の一般的なツールでも使用されます)を使用することです。これにより、UIが抽象化され、柔軟性と強い型付けが可能になります。

あなたは簡単で読みやすく、そして何よりも保守可能なコードを手に入れます:

var storeHyperlink = new HtmlHyperlink(_browserWindow);
storeHyperlink.SearchProperties[HtmlHyperlink.PropertyNames.Id] = "StoreLink";
Mouse.Click(storeHyperlink);

続きを読む

2
Jowen

誰かがまだコード化されたUIテストを手作業でコーディングするのに最適な方法を探しているかどうかはわかりませんが、記録と再生のルートに行くimoは後でがっかりするでしょう!最良の方法は、対話する個々のオブジェクトを定義し、ビジネスロジックを処理するためのページオブジェクトを持つ自動化フレームワークを作成することです。 Webアプリケーションをテストしている場合は、汎用UITestControlsまたはHtmlControlsを使用してオブジェクトを定義できます。例えば:

public static UITestControl EditBox_Password
{
    get
    {
        if ( mEditBox_Password == null ||   ! mEditBox_Password.Exists )
        {
            mEditBox_Password = new UITestControl (browserWindow );
            mEditBox_Password.TechnologyName = "Web";
            mEditBox_Password.SearchProperties.Add (UITestControl.PropertyNames.ControlType , "Edit");
            mEditBox_Password.SearchProperties.Add ( UITestControl.PropertyNames.Name , "TxtPassword");
        }
        return mEditBox_Password ;
    }
}

Windowsベースのアプリケーションをテストしている場合は、WinControlsまたはWpfControlsを使用してオブジェクトを定義できます。

最近、Amazon(Hand Coding Coded UI)で、フレームワークのセットアップ方法と保守が容易なコードの作成方法を明確に定義した本を購入しました。書店で購入できるかどうかはわかりませんが、ご覧になりたい場合は、Amazonのリンクをご覧ください。

https://www.Amazon.com/dp/1547000856/ref=sr_1_1?s=books&ie=UTF8&qid=1496767488&sr=1-1&keywords=1547000856

お役に立てば幸いです。

更新:グーグルで検索すると、本の割引コードが http://www.arkenstone-ltd.com/testing-with-coded-ui/ にあります。

1
Garry

これは、CodeFirstのコード化されたUIテストを実行する方法を示すビデオです。

コード化されたUIテスト-DeepDive-Episode3-HandCoding

1
bitbonk