web-dev-qa-db-ja.com

Selenium Web Test Automation Frameworkベストプラクティス

Webテスト自動化フレームワークを開発するベストプラクティスに関するコメントをお聞きしたい

  1. 私は基本的にいくつかのブログを読んで、最終的に本にリストされているデビッド・バーンズのアプローチに納得しました- 「(Selenium 1.0 Testing Tools:Beginner's Guide」 in 第7章

  2. すべてのメソッドを保持し、特定のページの検証者を別のクラスファイルに保存することで、洗練された保守可能な状態になります。

  3. 設計パターンを使用して自動化フレームワークを設計する利点を知りたいです。私はどちらが最善のアプローチであるかを完全には確信していません。提案を追加してください。賛否両論をリストできる各アプローチかもしれません

  4. すべてのステップをデータベーステーブルに保存し、ステップをフェッチして実行するとよいでしょうか?この場合、いずれかのテストが失敗した場合、これはテーブルで更新され、失敗したテストのみを選択的に実行できます。

  5. また、レポートはテーブルを選択的にクエリすることで実行でき、ジョブを介してそれらのテーブルからデータをクリーンアップできます。テスト出力ファイルからの結果/解析結果の保持も問題ありません。

  6. 関連する投稿でこの質問に既に回答している場合は、リンクを投稿してください。この質問を投稿する前に、いくつかの投稿を確認しました。

  7. Webサイトでは、Webサイトとのユーザーインタラクションはイベント駆動型です。ユーザーがサイトと対話できる方法は、A-> B-> CまたはA-> C-> Bの複数の組み合わせです。可能なすべての組み合わせを行うと、最大のカバレッジが提供されます。可能なすべての状態をカバーするモデルベースのテスト自動化

  8. 考えられるすべての状態の機能回帰をシミュレートする自動化スイートは、すべてのユーザーシナリオをシミュレートします。

  9. 上記の質問に対するベストプラクティス/提案を共有してください。上記のすべての実装データプロバイダーについて、XMLでデータを渡すことで、テストデータ管理に関して活用できます。

  10. モデルベースのテスト自動化スイートを開発するために考慮すべき設計アプローチ。

  11. 誰もがフレームワークを使用してみました http://www.w3qa.eu/framework.html 。同じに関するコメント/フィードバックを提供してください

33
Siva

デビッドバーンズは賢い人です。彼の本は、Seleniumとテスト自動化の基本を学びたい人にとって良い出発点です。もちろん、彼の(そして私のもの、そして他のすべての人の)アドバイスを一粒の塩と一緒に取ります。多くの専門家と反対意見がたくさんあります。あなたに最適なものを見つけ出す必要があります。

はい。 「すべてのメソッド、特定のページの検証者を別のクラスに保持する」ことは間違いなく良い考えです。これを「アクションと意図を分離する」または「ドメイン言語でプログラミングする」と言い換えることができます。どちらにしても、低レベルのSeleneseでテストを書くことは避けたいと思います。これを行う1つの方法は、ページオブジェクトテストデザインパターンを使用することです。 Seleniumや他のSeleniumの専門家への貢献者の多くは、ページオブジェクトの使用を提唱しています。これは、テストコードをより堅牢で読みやすく、再利用可能にする良い方法です。

他の設計パターンを知ることも有用であり、テストフレームワークでそれらを使用することはおそらく良い考えです。残念ながら、単一の「最良の」アプローチはありません。適切なテストコードを実現するには、おそらく複数のパターンとアプローチの組み合わせを使用する必要があります。私は、小さなものから始めて、いくつかのテストを書き、コードの匂いに気付き、リファクタリングすることをお勧めします。テストフレームワークが成長します。すべてを前もって設計する必要はありません。機敏に。反復的な増分アプローチを使用します。 (Selenium IDEを使用しないでください)

youtube-自動化されたテストパターンとSeleniumについてSimon Stewartが話します

データベーステーブルにテストステップを配置するよりも、JunitやTestNGなどのテストツールを使用してテストを整理することをお勧めします。 TestNGには、失敗したテストを選択的に再実行する機能が組み込まれています。また、非常に優れたレポート機能も備えています。ここで車輪を再発明しないでください。 TestNGやJunitなどのテストフレームワークを学びます。

youtube TestNG

ああ男...私は今2つ以上のリンクを投稿することはできません...ああまあ...私はYouTubeでGTACのビデオ、viddlerのsaucelabsのビデオ、サイモンスチュワーツのブログ、TestNGのドキュメント、ページオブジェクトの例を探すことをお勧めしますまた、Brett Pettichordによる「自動化の成功のための7つのステップ」という論文があります。

幸運を!

39
Sam Backus

http://mestachs.wordpress.com/2012/08/13/Selenium-best-practices/

  • PageObjectsパターンを使用する
  • に堪能である
    • これ、可変引数、ジェネリック、
    • モデルとjodatimeを再利用する
  • 堅牢でポータブルであること
    • 優先セレクターの順序:id> name> css> xpath
    • Thread.sleepを避けるWaitまたはFluentWait
    • 相対URLを使用する
    • 特定のドライバーの実装に依存しないでください
    • データセットを作成する
  • 新しいツールを知っている
    • 最新の状態に保つ(バージョンと使用パターン)
    • トラブルシューティング
      • jre 1.6
      • IE(ズーム、保護モードの設定)
      • Firefox/firebugスタートページ
    • Fileupload、datepicker、ajaxtablesなどのUIコンポーネントを扱う方法...
    • Seleniumが仕事に適したツールではないことを検出する
    • セレンをハックすることを恐れないでください
18
mestachs

5つの異なるアプリケーション(WinRunner、LoadRunner、QuickTest Professional、TestComplete、Selenium WebDriver)でコードテストフレームワークを作成しましたが、次のような多くのことがうまく機能していることがわかりました。

  1. テストスイートが迅速で意味のあるものであれば、フレームワークは必要ありません。私の最初のテストはほとんどフレームワークがありませんでした。
  2. より複雑なアプリケーションに入ると、オブジェクトリポジトリ(GUIアプリケーションの場合)およびページオブジェクト(Selenium WebDriverの場合)によって作業がより効果的になります。
  3. 私は、テストプロセスを支援し、ツールのエッジを滑らかにするために、ツールに取り組むことに時間を費やす傾向があります。

TestNG、WebDriver、およびSpringを使用して、現在のテストフレームワークを構築します。このフレームワークのセグメントを独自のOSSライブラリのセットに引き出して、他の人がそれらを再利用できるようにします。現在、カスタム要素タイプを挿入でき、フォーム作業を行うためにいくつかの基本タイプを追加しています。それは本当に大雑把で、単独のフレームワークではありません。独自のフレームワークに統合する必要がありますが、依存関係を最小限に抑えようとしています。

7
Elijah Sarver

あなたが自動化テストを行っている場合、私の友人は、次のことについて確認してください。

  1. テストケースを明確に記述します。
  2. JUnitの専門知識があることを確認してください。
  3. プロジェクトおよびテスト環境のビジネス/機能要件を必ず確認してください。

ありがとう。

4
Sudhir

やあ.
。ほとんどのプログラマーは、それがもう単体テストではないと言うかもしれません...そしてそうでないかもしれません。しかし、それは重要ではありません。それでもうまくできます。以下はリンクです。彼らはアプリケーション全体(GUIレベル)で動作する機能テストの作成について話していますが、目標を達成するために同じアプローチを適用できると思います。 3層テストの書き方を示しているので、実装か​​らロジックを分離します。

4
yoosiba