質問

そうですね、何か足りないかもしれませんが、Seleniumの要点は実際にはわかりません。コードを使用してブラウザを開き、コードを使用してボタンをクリックし、コードを使用してテキストをチェックするポイントは何ですか?私はウェブサイトを読んで、理論的にはあなたのウェブアプリケーションを自動的に単体テストするのがどのように良いかを見ますが、最終的にはクリックして動きを視覚的に確認するのではなく、このコードを書くのに時間がかかりません

わかりません...

役に立ちましたか?

解決

「ユニット」に機能テストを記述できます。テストフレームワーク(問題は後者の命名です)。

ブラウザを介してアプリケーションをテストする場合、通常は完全に統合されたシステムをテストします。変更をコミットする前に既に変更をテストする必要があることを考えて(煙テスト)、何度も何度も手動でテストする必要はありません。

本当に素晴らしいことは、煙テストを自動化でき、QAがそれらを強化できることです。作業の重複を減らし、チーム全体を近づけるため、非常に効果的です。

Psは学習曲線があるため、初めて使用する練習として、通常は最初に時間がかかります。また、ページオブジェクトパターンを確認することをお勧めします。これは、テストの維持に役立ちますきれいに。

更新1:テストではページ上でJavaScriptも実行されるため、非常に動的なページのテストに役立ちます。また、異なるブラウザで実行できるため、クロスブラウザの問題を確認できます(少なくとも機能面では、ビジュアルを確認する必要があるため)。

また、テストの対象となるページの量が増えると、完全な相互作用のサイクルでテストをすばやく作成できることに注意してください。 Page Objectパターンを使用すると、次のようになります。

   LastPage aPage = somePage
      .SomeAction()
      .AnotherActionWithParams("somevalue")
      //... other actions
      .AnotherOneThatKeepsYouOnthePage(); 
  // add some asserts using methods that give you info
  // on LastPage (or that check the info is there).
  // you can of course break the statements to add additional 
  // asserts on the multi-steps story.

これについては徐々に進むことを理解することが重要です。すでに構築されているシステムの場合、作業中の機能/変更のテストを追加します。途中でさらにカバレッジを追加します。代わりにマニュアルを使用すると、通常、テストで見逃したものが隠されるため、すべてのページに影響する変更を行い、サブセットをチェックする場合(時間が許せないため)、実際にテストしたものとQAが機能するものがわかりますそこに(できればさらにテストを追加することによって)。

他のヒント

これは、一般に単体テストについて言われている一般的なことです。 "テストのために2倍のコードを書く必要がありますか?"ここでも同じ原則が適用されます。ペイオフは、コードを変更し、あなたが何も壊していないことを知る能力です。

同じテストを何度も繰り返すことができるため。

アプリケーションが50ページ以上であっても、頻繁にビルドを行い、X個の主要なブラウザーに対してテストする必要がある場合、それは非常に理にかなっています。

50個のページがあり、すべてに10個のリンクがあり、一部にはフォームを通過する必要があるマルチステージフォームがあり、約100種類の情報を入力して、すべてのクレジットカード番号で適切に機能することを確認するとします、すべての国のすべての住所など。

手動でテストすることは事実上不可能です。人為的エラーが発生しやすくなり、テストが正しく行われたことを保証できなくなります。

さらに、多くの開発者がすべて非接続の分散した方法で同じサイトで作業している(たとえば、飛行機でラップトップからサイトで作業している)現代の開発モデルに従う場合、ヒューマンテスター1人の開発者が何か新しいことを試みるたびに再テストする忍耐力はありません。

適切なサイズのWebサイトで、テストを自動化する必要があります。

ポイントは、あらゆる種類の自動テストの場合と同じです:コードの作成には、「クリックして動作を視覚的に確認する」よりも時間がかかり、10倍、さらには50倍もかかる場合があります。

しかし、自明ではないアプリケーションは最終的に50回をはるかに超えてテストする必要があり、手動テストは省略されるか、プレッシャーの下でひどく行われる可能性が高い面倒な作業であり、バグは直前(または後)まで発見されないままになります重要な期限。これにより、ストレスの多い終夜のコーディングセッションが発生したり、契約上のペナルティによる金銭的損失が発生したりします。

Selenium(Watirなどの同様のツールと一緒に)を使用すると、コンピューターが得意とする方法でWebアプリのユーザーインターフェイスに対してテストを実行できます。 (テストに直接関係しない奇妙なことが間違っていることに気付くなど、人間がはるかに優れている他のUIテストピースがたくさんあることに注意してください。)

Webrat および機械化。これらのほとんどには、JavaScriptを多用するUIとやり取りする方法がありません。 Seleniumでは、ここである程度説明します。

Seleniumは、Webアプリケーションをテストするために行う手動のクリックと入力をすべて記録し、再実行します。繰り返します。

長期にわたる自分自身の研究により、私はより少ないテストを行い、いくつかのテストをスキップするか、それらを忘れ始める傾向があることが示されました。

Seleniumは代わりに各テストを実行して実行します。期待した結果が返されない場合は、通知できます。

これらのすべてのテストを記録するには、初期費用がかかります。ユニットテストのようにお勧めします-まだ持っていない場合は、コードの最も複雑な部分、更新された部分、または最新の部分で使用を開始します。

また、これらのテストをJUnitクラスとして保存すると、余暇に、自動ビルドの一部として、またはJMeterを使用した貧乏人の負荷テストで再実行できます。

過去の仕事では、Webアプリの単体テストに使用していました。 Webアプリの外観が変更された場合、テストを書き換える必要はありません。記録と再生のタイプのテストはすべてやり直す必要があります。

なぜセレンが必要なのですか?テスターは人間だからです。彼らは毎日家に帰り、週末に仕事をしたり、病気にかかったり、祝日を過ごしたり、時々休暇をとったりすることができません。 p>

テスターを取り除く必要があると言っているわけではありませんが、自動UIテストツールはシステムテスターを補完します。

ポイントは、手動で時間のかかるテストの前にあったものを自動化する機能です。はい、テストの作成には時間がかかりますが、一度作成すれば、チームが望む頻度で実行できます。実行されるたびに、Webアプリケーションの動作に一貫性があることを確認しています。 Seleniumは完璧な製品ではありませんが、ブラウザとの現実的なユーザーインタラクションの自動化には非常に優れています。

Seleniumのアプローチが気に入らない場合は、 HtmlUnit を試してみてください。既存の単体テストに簡単に統合できます。

(多くのGWTプロジェクトのように)リッチなWebインターフェイスを備えたアプリケーションの場合、Selenium / Windmill / WebDriver / etcは受け入れテストを作成する方法です。 GWT / GXTの場合、最終的なユーザーインターフェイスコードはJavaScriptであるため、通常のjunitテストケースを使用して受け入れテストを作成することは基本的に問題になりません。 Seleniumを使用すると、実際のユーザーアクションと期待される結果に一致するテストシナリオを作成できます。

Seleniumでの経験に基づいて、アプリケーションロジックとユーザーインターフェイスのバグを明らかにすることができます(テストケースが適切に記述されている場合)。 AJAXフロントエンドに対処するには、追加の努力が必要ですが、それでも実行可能です。

これを使用して複数ページのフォームをテストします。これにより、同じものを何度も入力する負担が軽減されます。また、特定の要素が存在するかどうかを確認できることは素晴らしいことです。繰り返しになりますが、例としてフォームを使用すると、最終的なセレンテストでは、「ご注文ありがとうございます...」などの発言があるかどうかを確認できます。注文プロセスの最後に表示されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top