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