Webアプリケーションテストのヒント

Webテストは、デスクトップアプリケーションのテストとは異なります。 Webアプリケーションのテストでは、通常、ブラウザー(クライアント)を使用して、HTTPまたはHTTPSを介してサーバーと通信することにより、WebサーバーからWebサイトを要求します。

テスターとして、Webテストに携わるときは、Webアプリケーションがどのように機能するかをよく理解するために、HTTPの基本に精通している必要があります。

Webテストでは、個々のコンポーネントと統合されたコンポーネントの機能テストとは別に、パフォーマンス、セキュリティ、クロスブラウザ、応答性など、デスクトップアプリケーションのテストでは必ずしも必要とされないテストタイプの一部が、Webアプリケーションのテストで非常に重要になります。これは、ウェブアプリケーションが多くのユーザーに公開されているため、パフォーマンスを考慮する必要があるためです。


さらに、WebアプリケーションはDDoやSQLインジェクションなどのセキュリティ攻撃の影響を受けやすく、Webサイトが標的にされている場合、ダウンタイムは非常にコストがかかる可能性があるため、セキュリティテストにも重点を置く必要があります。



Webサービスのテスト

より多くのウェブサイトがウェブサービスを使用して構築されています。これらは、テスターが本格的な統合Webアプリケーションではなく、分離されたコンポーネントでWebアプリケーションをテストする機会を提供します。


Webサービスを個別にテストする利点は次のとおりです。


  • ブラウザは関与していません -エンドポイントと送信するパラメータがわかっている限り、Webサービスと直接通信できます。


  • はるかに高速 -分離されたWebサービスを対象としているため、ロードする画像、JavaScript、またはCSSがないため、応答がはるかに速くなります。


  • より簡単なデバッグ -ウェブサービスをテストするときに問題が発生した場合、問題の原因を特定するのがはるかに簡単になるため、デバッグの手間が軽減されます。



  • より多くの制御 -Webサービスに送信するリクエストを直接制御できるため、Webサービスのエラーシナリオにあらゆる種類のデータを使用できます。

使用できます SopaUIツール Webサービスをテストします。



性能試験

Webアプリケーションは潜在的に多数の対象者に公開されるため、パフォーマンステストはWebテストで特に重要です。

Webアプリケーションをテストするときは、Webサイトが機能的に安定していることを確認するだけでなく、サーバーに大きな負荷がかかったときにアプリケーションがクラッシュしないことも確認する必要があります。


残念ながら、ほとんどの人はWebアプリケーションのパフォーマンステストを忘れているか、リリース直前にテストを延期しているため、手遅れになっています。パフォーマンスに影響を与える可能性のある設計またはコードに根本的な問題がある場合、手遅れになるまでそのことを知ることはできません。

最善のアプローチは、機能回帰テストと同じ頻度でパフォーマンスチェックを実行することです。これにより、コードベースの変更の一部としてパフォーマンスが低下していないことを確認できます。

Jmeter は、サイトのパフォーマンスをチェックするために使用できる、人気のあるオープンソースの負荷テストツールです。 CIサーバーに統合することもできます。



クロスブラウザWebテスト

ブラウザの数は異なるため、OperaとSafariを忘れないように、すべてのブラウザ(少なくとも主要なブラウザ、つまりGoogle Chrome、Mozilla Firefox、Microsoft Internet Explorer)でWebアプリケーションが期待どおりに機能することを確認する必要があります。


すべてのテストと同様に、アプリケーションがサポートするブラウザーとそのバージョンを把握し、それに応じてテストを計画する必要があります。

すべてのブラウザですべてをテストするには非常に時間がかかる可能性があるため、自動化されたツールを使用してさまざまなブラウザの機能を確認できます。

さらに、テスターがさまざまなブラウザーでテストを実行しやすくするオンラインのクロスブラウザーテストツールがあります。

個人的な経験から言えば、ブラウザ関連の問題の数は非常に少なく、ほとんどが非常に古いバージョンのブラウザに関連しているか、CSSが適切にレンダリングされないためレイアウトの問題が発生します。


したがって、すべてのブラウザですべてのテストケースを実行する必要はありません。これは、(自動化されている場合でも)非常に時間がかかり、ゲインがほとんどなく、何かが非常に低いレベルで機能しない可能性があるためです。

最善のアプローチは、1つの主要なブラウザーですべてのテストケースを実行してから、いくつかの最も重要なシナリオを選択して、残りのブラウザーで実行することです。



テスト自動化

Webアプリケーションを開発している企業の大多数は、頻繁にリリースされるアジャイル開発モデルで作業しているため、頻繁にテストする必要があります。ウェブテストでは、テスト自動化は繰り返しの作業の負担を取り除くため、大きなメリットがあります。

機能を検証するだけでなく、自動化されたスクリプトを使用して、Webテスト中に必要なテストデータを生成することもできます。

自動化が手動テストに役立つもう1つの方法は、次のようなツールです。 Selenium WebDriver 実際のブラウザページのスクリーンショットを撮ることができます。多数のページを視覚的に確認する必要がある場合。ローカライズされたテキストがさまざまなWebページでどのようにレンダリングされるかを知りたいので、ツールを使用してページを調べ、スクリーンショットを撮り、視覚的にすばやく確認できます。

詳細については、を参照してください。 テスト自動化のヒントとベストプラクティス



HTTPトラフィックの分析

多くの場合、ブラウザからダウンストリームサーバーへのHTTPトラフィックを分析する必要があります。 Webトラフィックを分析することで、各要求と応答の詳細を掘り下げることができます。

ウェブテストでは、HTTPトラフィックの分析は、ウェブページ上のGoogleアナリティクスタグやオムニチュアタグなどのサードパーティの追跡タグをテストするときに特に役立ちます。

タグが正しい値を保持していることを確認できるだけでなく、リクエストが適切なサードパーティシステムに送信され、有効な応答(通常は200 OK応答コード)を取得することを実際にテストできます。

HTTPトラフィックを視覚化して記録できるようにするには、プロキシとして機能し、クライアント(通常はブラウザ)とサーバー間の要求と応答をリッスンできる適切なツールを使用する必要があります。

HTTPトラフィックの分析に使用できる最も一般的なツールのいくつかを次に示します。

Wireshark ネットワークで起こっていることすべてを見たい場合。

フィドラー HTTP / sトラフィックのみを監視する場合。

ライブHTTPヘッダー Firefoxを使用していて、ヘッダーを表示するためだけに簡単なプラグインが必要な場合。

FireBug その情報も取得でき、開発中に1つのページで作業するときに優れたインターフェイスを提供します。 AJAXトランザクションを監視するために使用しました。



レスポンシブウェブサイトとモバイルテスト

より多くの人々が彼らの携帯電話からウェブサイトにアクセスしています。これは、Webテストがデスクトップ上のブラウザーに制限されなくなったことを意味します。デスクトップだけでなく、モバイルプラットフォームでもWebアプリケーションをテストする必要があります。

モバイルデバイス用のWebアプリケーションには、モバイルプラットフォーム用に意図的に開発されたものと、「応答性」のあるものの2種類があります。つまり、デスクトップおよびモバイルデバイス用に構築されたWebアプリケーションのバージョンは1つだけですが、アプリケーションはレンダリングされます。デバイスのサイズによって表示が異なります。

どちらのタイプも、モバイルデバイスやシミュレーターでのテストが必要です。

Webテストのその他の重要な要素

Webテスト中、および機能テスト中に、以下をチェックする必要がありますが、これらに限定されません。

  • Javascript
  • CSS
  • クッキー
  • アクセシビリティ
  • デッドリンク
  • UXとレイアウト
  • HTMLの有効性
  • セキュリティ
  • ブラウザの更新
  • ウィンドウのサイズ変更