Web UI の単体テストには何を使用しますか?[閉まっている]
-
08-06-2019 - |
質問
現在勤めている会社が利用しています セレン ユーザー インターフェイスの結合テスト用。Web UI の単体テストに何を使用していますか?また、それがどの程度効果的であると感じていますか?
解決
私たちは職場で Watin を使用しており、.net ショップなので、このソリューションは非常に理にかなっています。実際、私たちは Watir (元の Ruby 実装) から始めて、その後切り替えました。これまでのところ、それは私たちにとって非常に良い解決策でした
他のヒント
私は Selenium の大ファンです。一部のコメントで述べられているように、「Web UI の単体テスト」という表現は正確ではありません。ただし、UI 上でこの種の受け入れテストや健全性テストを実行するには、Selenium が非常に便利であると思います。
始めるための良い方法は、開発の一部として Selenium IDE を使用することです。つまり、開発中に IDE を開いて、開発時間を短縮するためにテストを作成するだけです。(作業中の内容をテストできる段階まで手動で UI を操作する必要はなく、ボタンを押すだけで、Selenium IDE が自動的にテストを実行します。大幅な時間の節約になります!)
私の主要なユースケース シナリオのほとんどには、それらをバックアップするための Selenium RC テストがあります。これらを xUnit フレームワークに沿った単体テストと考えることはできませんが、非常に特殊な機能を対象としたテストです。これらは (特に、ログインやテスト ケースの設定などの一般的なメソッドを実装する場合に) すばやく作成でき、すぐに実行でき、非常に緊密なフィードバック ループを提供します。そういう意味で、Selenium RC テストは非常に優れています。 似ている 単体テストに。
他のことと同様、テスト ツール (Selenium など) を適切に学習することに努力すれば、その努力は必ず報われると思います。あなたの会社ではすでに Selenium を使用して UI テストを行っているとおっしゃっていました。これは素晴らしい。それに取り組んでください。Selenium が使いにくい、またはわかりにくいと感じる場合は、そのまま使用してください。API を少し学べば、学習曲線はそれほど急ではありません。
Web アプリに取り組んでいる場合、それをバックアップする Selenium RC テストなしで大量のコードを作成することはほとんどありません。それが私にとって Selenium の効果的な効果です。:) (それがあなたの質問の答えになることを願っています..)
まあ、アプリケーションを適切に設計していれば、とにかく UI 内に大量のロジックが存在することはありません。実際に実行される作業を UI とは別のユニットに分離し、それらをテストする方がはるかに合理的です。
これを行うと、UI 内のコードはバックエンドを呼び出すコードだけになるため、バックエンドをテストするだけで十分です。
私は過去に (仕事で) NUnit ASP を使用したことがあります。UI の単体テストにこだわるのであれば、NUnit ASP 以外のものを使用することを強くお勧めします。これは作業が面倒で、UI をわずかに変更しただけでも (テストの対象が実際には変更されていなくても) テストが無効になる (修正が必要になる) 傾向があります。
QuickTestProを使用しています。これまでのところ有効ですが、ブラウザの選択は限られています。最も優れている点は、ブラウザのアクティビティを記録し、それをスクリプト可能な一連のステップに変換できる機能です。優れた .Net アドインもあるので、テストのさまざまな段階で実行する必要がある検証コードがある場合は、アセンブリにメソッドを記述して、スクリプトからそれらを呼び出すことができます。
Visual Studio 2008 Tester Edition を使用します。
長所:ユーザーインタラクションを捉えるのが非常に上手い
Ajax呼び出しをキャプチャします
ユーザー入力をデータベース、XML、または CSV ファイルにマッピングするのは非常に簡単です。
キャプチャされたテストは C# に変換してより詳細に制御できます
同じテストを負荷テストとコード カバレッジに使用できます。
短所:
VS2008 Tester Edition は通常の Developer Edition とは別の SKU であるため、追加コストがかかります
あなたは Microsoft に対してアレルギーがあるかもしれません ;-)
私たちはプロジェクトでこれを非常に効果的に使用していますが、テストを最新の状態に保つには多大な労力がかかり、画面を変更するたびにテストを再記録する必要がある場合があります。
私たちは、1 回のテストで 10 分間のクリックを記録するのではなく、テストを短くシャープにし、1 つのことを実行して終了する傾向があります。
いくつかの標準的な UI テスト タイプがあります。
メニューテスト: 特定のユーザー (またはユーザー タイプ/ロール) としてログインし、必要なメニュー項目がすべて利用可能であることを確認します。
検証テスト: ページを開いてデータを入力せずに「保存」をクリックし、すべての検証警告が表示されることを確認します。必須フィールドに一度に 1 つずつ入力し、警告メッセージが所定のタイミングで消えることを確認します。
検索テスト: データベースまたはデータ ファイルのデータを使用して検索し、検索によって正しいデータが返されることを確認します。
データ入力テスト: データ ファイルから新しいレコードを作成し、データベースをクリーンアップしてテストを複数回実行できるようにします。
UI テストは非常に時間がかかりますが、新しいバージョンをリリースする前に数百のテストに合格したときに得られる快適な感覚は貴重です。
私たちが使用してきました JSunit しばらく単体テストを行うために...あなたが話しているのと同じ種類のテストではないかもしれませんが、JavaScript が期待どおりに動作することを確認するのに最適です。
ブラウザで実行すると、リモートで多数のプラットフォーム上の多数のブラウザに対して自動的に実行されるように Ant ビルドに設定できます (そのため、コードがクロスブラウザであることを確認できるだけでなく、ロジックが正しいことも確認できます) )。
Selenium に代わるものではないと思いますが、Selenium を十分に補完します。
私たちは Selenium Core を使用していますが、より優れており管理が容易な Selenium RC に段階的に切り替えています。継続的インテグレーション サーバーでテストを実行するために、多くのカスタム コードを作成しました。その一部はより高速に実行するために並列スイートで実行されます。
あなたが気づくことの 1 つは、Selenium はテストごとにブラウザを再起動するようです (これを行わないように設定することもできますが、その際にメモリの問題が発生しました)。Firefox では遅いかもしれませんが、IE ではそれほど悪くはありません (ビル ゲイツの OS 統合に感謝したことがありました)。
使ったことがある ワティア, 、これはかなり良いです。これは Ruby であり、対話性、利用可能な要素、ソース コードの解析をテストできるため、気に入りました。しばらく使っていませんでしたが、少しは良くなったと思います。
おそらく Firefox と Safari に移植される予定ですが、それはしばらく前から行われています。
チェックアウト Canoo Webテスト. 。これはオープンソースであり、ANT フレームワークに基づいて構築されています。
私はソフトウェア QA に関する大学院コースでこれを使って作業しましたが、かなり強力なテスト ツールであるようです。
セレングリッド 複数のマシンで Web テストを並行して実行できるため、Web テスト プロセスが高速化されます。
私が主に使用するのは キュービックテスト, 、これはテストをグラフィカルに定義できる Eclipse プラグインです。watir や Selenium を含むいくつかのライブラリを通じてテストをエクスポート/実行できます。ただし、ほとんどの人は Selenium ランナーだけを使用しています。
完全な開示:私は開発者の一人なので、偏見を持っています:)
ここで詳しく見てみましょう: cubictest.openqa.org
-エルレンド
Selenium は単体テストではなく、統合テスト用です。これは微妙ですが重要な違いです。私がよく目にする使用法は、ビルドの健全性チェックです。つまり、ログインするテスト、(たとえば) ストーリーを送信する、コメントを作成するなどのテストがあります。
サイトが壊れていることをユーザーに発見させるのではなく、展開前にシステム全体が連携して動作しているかどうかをテストするという考え方です。
私たちが現在使用しているのは、 シルク4J - Web UI をテストするための Java 中心のアプローチ。Flash、Flex、AIR、Silver Light、Win32、HTML、およびその他のいくつかのアプリケーションをテストできます。
Silk4J は Win32 アプリを制御できるため、ブラウザ ダイアログを直接制御できます。これは Selenium が制御できるものよりも一歩進んでおり、特にダウンロード プロンプトに役立ちます。
モリブデン Selenium 上に構築されており、いくつかの追加機能があります。