ユーザーインターフェイスのテスト
-
09-06-2019 - |
質問
私たちは、新しい/変更された GUI 機能を含む大規模なプロジェクトに取り組んでいます。私たちは過去に、新しい機能を追加するときに、関連するコードに新しい問題が発生することがよくあったことに気づきました。
技術者ではないユーザーにテストを実施してもらっていますが、部品の見落としやバグの見逃しがよくあります。
私の質問:WinForms プロジェクトの UI テストを組織するためのベスト プラクティスはありますか?それを自動化する方法はありますか?
ありがとう!
解決
ボタンなどをクリックしてくれる GUI テスト ツールもありますが、私の経験ではかなり脆弱です。
最善の方法は、UI レイヤーをできるだけ薄く保つことです。イベント ハンドラー クラスは、テストしやすい他のクラスを呼び出す 1 行または 2 行だけにするのが最適です。こうすることで、実際にボタンをクリックすることなく、単体テストでビジネス ロジックをテストできます。
他のヒント
次を使用して GUI テストを自動化できます。 白 フレームワーク。
また、TDD に優しい設計を使用することも検討してください。使用 MVP/MVC パターン。
Microsoft のパターン&プラクティス チームのドキュメントを読むことを強くお勧めします。
特に見てください 複合UIアプリケーションブロック そして 複合WPF.
これらのプロジェクトは、テスト駆動 UI を含む GUI アプリ開発のベスト プラクティスを提供するように特別に設計されています。
GUI レイヤーをできるだけ薄く保ちます。マイケル・フェザーの記事、 謙虚なダイアログボックス, 、古典です。Martin Fowler の作品もチェックしてください パッシブビュー. 。また、「自動ボタン クリッカー」は壊れやすく、コードの保守よりもテストの保守に多くの時間が費やされやすいとも聞いたことがあります。
誰かがこれが役に立つと思った場合:
GUIテストツール一覧 ウィキペディアで見つかりました。
以下の本はその入門書です。開発者の数だけ方法はあります。
http://pragprog.com/titles/idgtr/scripted-gui-testing-with-ruby
White のようなオープン ソース ソリューションから HP QuickTest Pro のような高価な商用ソリューションに至るまで、WinForms テストを自動化できるツールやライブラリが数多くあります。独自のオートメーション フレームワークを展開したい場合は、.NET に UIAutomation 名前空間もあります。しかし、自動化の実際のコストは、実装に必要な時間と専門的なスキルにあります。保守性も自動テスト設計の最も重要な側面の 1 つです。アプリケーションで自動化資産を最新の状態に保つために過剰なリソースを費やすことは望ましくありません。また、自動化の決定には、特定のアプリケーションや組織に特有の多くの要因が影響します。
最善の策は、このテーマについてさらに調査を行い、次のような専門のテスト サイトをチェックすることです。 http://www.sqaforums.com.
私は、さまざまなブラウザーで Web ページのレイアウトをテストする、手早くて汚い方法を見つけました。それは呼ばれています ブラウザショット.org. 。私たちのクライアントは現在 5 つのブラウザのサポートを必要としていますが、完全な回帰テストには約 1 週間かかります。このサービスでは、約 70 以上のブラウザとバージョンのスクリーンショットが配信されます。私はそれらを印刷し、ページを光にかざします。並んでいない場合は、レイアウトに問題があると考えられます。
私は組織化やベストプラクティスについてはあまり手助けできませんが、 NUnit 拡張機能はフォームのテストに利用できるようですが、 NUnitForms.
この製品と同様の試用版ダウンロードを使用しました (http://www.tethyssolutions.com/product.htm)とこの商品(http://www.mjtnet.com/macro_scheduler.htm)数年前、私はその結果に満足していました。これらはかなり安価なソリューションであり、マクロ レコーダー製品の一部は実際に自動テストに使用できます。
現在利用可能な新しい方法は、Ruby gem を介して Ruby を使用することです。 win32-autogui. 。これは、Windows GUI アプリをテストするためのフレームワークを提供します。Ruby ツールの RSpec や Cucumber と組み合わせると、非常に強力なテスト フレームワークになります。
UI テストを組織する方法は、テスト ケースをどのように設計するかによって異なります。
単体テスト レベルでの Windows フォーム アプリケーションの自動化には、NUnit などの TDD フレームワークを使用できます。または、NSpec などの BDD フレームワークを使用します。
機能テスト レベルでの Windows フォーム アプリケーションの自動化では、White、CodedUI、または直接使用することもできます。 Windows オートメーション API 3.0 (UI オートメーションと MSAA)。
上記で説明したものはすべてソリューションではなくテクノロジであるため、自動テストの作成を開始する前に、これらのテクノロジに基づいて基本的なテスト自動化/スクリプト フレームワークを構築することをお勧めします。