35

Web テスト自動化フレームワークを開発するベスト プラクティスについてのコメントを知りたい

  1. 私は基本的にいくつかのブログを読み、最終的に書籍「Selenium 1.0 Testing Tools: Beginner's Guide」に記載されている David Burns のアプローチに納得ました。

  2. 特定のページのすべてのメソッドとベリファイアを個別のクラス ファイルに保持することで、ページが洗練され、保守しやすくなります。

  3. デザインパターンを使って自動化フレームワークを設計するメリットを知りたい。どちらが最善のアプローチであるか、私は完全には確信していません。あなたの提案を追加してください。長所と短所をリストアップできる各アプローチかもしれません

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

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

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

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

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

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

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

  11. フレームワークhttp://www.w3qa.eu/framework.htmlを使用しようとした人はいますか。同じことに関するコメント/フィードバックがあれば提供してください

4

5 に答える 5

40

デビッド・バーンズは賢い男です。彼の本は、Selenium とテストの自動化の基礎を学びたい人にとって、良い出発点となります。もちろん、彼の (そして私の、そして他のみんなの) アドバイスは鵜呑みにしてはいけません。多くの専門家と多くの反対意見があります。何が最適かを判断する必要があります。

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

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

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

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

youtube TestNG

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

幸運を!

于 2011-03-20T03:09:37.423 に答える
18

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

  • PageObjects パターンを使用する
  • 流暢に話せる
    • this、varargs、generics、
    • モデルと jodatime を再利用する
  • 堅牢でポータブルであること
    • 好ましいセレクタ順序: id > name > css > xpath
    • Thread.sleep を避け、Wait または FluentWait を優先する
    • 相対 URL を使用する
    • 特定のドライバーの実装に依存しない
    • データセットを作成する
  • 新しいツールを知る
    • 最新の状態に保つ (バージョンと使用パターン)
    • トラブルシューティング
      • jre 1.6
      • IE(ズーム、プロテクトモード設定)
      • Firefox/firebug スタートページ
    • fileupload、datepicker、ajaxtables などの UI コンポーネントの処理方法
    • セレンが仕事に適したツールではない場合を検出する
    • セレンをハックすることを恐れないでください
于 2012-08-22T19:43:45.247 に答える
7

私は 5 つの異なるアプリケーション (WinRunner、LoadRunner、QuickTest Professional、TestComplete、Selenium WebDriver) の下でコード テスト フレームワークを作成しました。

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

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

于 2012-12-13T17:26:30.413 に答える
4

自動化テストを行っている場合は、次のことを確認してください。

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

ありがとう。

于 2012-03-13T11:27:44.437 に答える
3

おい。
本当にロジックを分離したい場合は、最終的には、単体テストを記述するだけでなく、アプリのテスト自動化フレームワークを構築してから、この新しい API を使用する単体テストを記述します。ほとんどのプログラマーは、それはもはや単体テストではないと言うかもしれません...そしておそらくそうではありません。しかし、それは重要ではありません。まだまだ綺麗にできます。以下にリンクを示します。アプリケーション全体 (GUI レベル) で動作する機能テストの作成について話していますが、同じアプローチを適用して目標を達成できると思います。簡単に言えば、3 層テストの作成方法を示しているため、実装からロジックを分離できます。

于 2011-05-16T09:33:34.373 に答える