NUnit(Selenium Grid)テストを並行して実行するにはどうすればよいですか?
-
03-07-2019 - |
質問
私の現在のプロジェクトでは、ユニットテストおよびSeleniumで記述されたUATの駆動にNUnitを使用しています。開発者は通常、VS.Net 2003でReSharperのテストランナーを使用してテストを実行し、ビルドボックスはNAntを介してそれらを開始します。
Selenium Grid / RCを活用して、より高速に実行できるように、UATテストを並行して実行したいと思います。
これをどのように達成できるかについて、何か考えたことはありますか?および/または重複テストを自動的に作成せずに複数のブラウザ環境に対してSeleniumテストをテストするためのベストプラクティス?
ありがとう。
解決
このテーマについては、それほど多くの作業は行われていません。本当に関連するものは見つかりませんでした。
しかし、あなたの主張はよく理解されています。現在、ほとんどのマシンには、強力な1コアCPUと比較して、より多くのコアがあり、あまり強力ではありません。
だから、Microsoftブログで何かを見つけました。この技術はPUnitと呼ばれ、特にマルチスレッド環境のテスト用に作られています。
私が見つけることができるようにあなたが要求したものにできるだけ近い:)
適切なブログ投稿にアクセスできます: http://blogs.microsoft.co.il/blogs/eyal/archive/2008/07/09/punit-parallel-unit-testing-in-making.aspx
更新:リンクはもう有効ではありません。 CodePlexのプロジェクトは削除されました。
Update2:これはNUnit 2.5のロードマップ上にあります。 参照
他のヒント
私はこれら両方の問題に自分で苦労しました。最終的に、並列で複数のテストを実行できるカスタムNunitテストランナーを開発しました。これをnunitのTaumuon.Rakija拡張と組み合わせることで、テストを実行するブラウザに応じてテストを動的に作成できました。
私は今、parrallelで望んでいるのと同じ数のオペレーティングシステムで、多くのブラウザタイプに対してテストスイートを起動できる立場にあります。
残念ながら、これらの問題を解決する良い方法はまだないようですので、特定の環境では自分で解決する必要があるでしょう。
NUnitバージョン3は、テストの並行実行をサポートします。これは、Selenium Gridでうまく機能します。
クラスへの属性の追加: [Parallelizable(ParallelScope.Self)]
は、他のテストクラスと並行してテストを実行します。
• ParallelScope.Noneは、テストを並行して実行できないことを示します 他のテストで。
• ParallelScope.Selfは、テストが それ自体は他のテストと並行して実行できます。
• ParallelScope.Childrenは、テストの子孫が 互いに並行して実行されます。
• ParallelScope.Fixturesは、フィクスチャが並行して実行できることを示します 互いに。
Igor Brejcには、MbUnitを使用したテストの並列実行に関するブログ投稿があります。
ただし、「Seleniumを受け入れテストに統合すると」と言うので、彼は実験中のように見えますが、他の投稿は見つからないため、Seleniumテストを並行して正常に実行したかどうかはわかりません。
http://igorbrejc.net/development/continuous -integration / gallio-running-tests-in-parallel
Task Parallel LibraryとDynamicObjectクラスを使用して、複数のブラウザーで同じテストを並列化できます。私の記事 Seleniumを並列実行詳細については、.NET単体テストツールをご覧ください。