most popular test automation frameworks with pros
最後のいくつかのSeleniumチュートリアルでは、一般的かつ一般的に使用されるさまざまなものについて説明しました WebDriverのコマンド 、 Webテーブル、フレームなどのWeb要素の処理 そして 例外の処理 Seleniumスクリプトで。
同様の状況が発生したときにいつでもこれらのコマンドを効果的に使用できるように、サンプルのコードスニペットと例を使用してこれらの各コマンドについて説明しました。前のチュートリアルで説明したコマンドの中で、最も重要なものはほとんどありません。
Seleniumシリーズを進めるにつれ、焦点を次の方向に集中させます。 自動化フレームワークの作成 次のいくつかの今後のチュートリアルで。また、自動化フレームワークのさまざまな側面、自動化フレームワークの種類、フレームワークを使用する利点、および自動化フレームワークを構成する基本コンポーネントについても説明します。
学習内容:
- フレームワークとは何ですか?
- テスト自動化フレームワーク
- テスト自動化フレームワークの種類
- #1)モジュールベースのテストフレームワーク
- #2)ライブラリアーキテクチャテストフレームワーク
- #3)データ駆動型テストフレームワーク
- #4)キーワード駆動型テストフレームワーク
- #5)ハイブリッドテストフレームワーク
- #6)ビヘイビア駆動開発フレームワーク
- 結論
- 推奨読書
フレームワークとは何ですか?
フレームワークは、フレームワークによって提供される足場の利点を活用するために、全体として組み込むか従うことができる、設定されたプロトコル、ルール、標準、およびガイドラインの組み合わせと見なされます。
実際のシナリオを考えてみましょう。
私たちはエレベーターやエレベーターをよく使います。システムからの最大の利益と長期のサービスを活用するために従うべき、そして注意を払うべきエレベータ内で言及されているいくつかのガイドラインがあります。
マージソートアルゴリズムc ++
したがって、ユーザーは次のガイドラインに気付いたかもしれません。
- エレベータの最大容量を確認し、最大容量に達した場合はエレベータに乗らないでください。
- 緊急時やトラブルが発生した場合は、アラームボタンを押してください。
- 乗客がエレベータに入る前にエレベータを降りて、ドアから離れるようにします。
- 建物内で火災が発生した場合、または偶発的な状況が発生した場合は、エレベーターの使用を避けてください。
- エレベーター内で遊んだりジャンプしたりしないでください。
- エレベーター内で喫煙しないでください。
- ドアが開かない場合、またはエレベーターがまったく機能しない場合は、助け/支援を求めてください。ドアを無理に開けようとしないでください。
さらに多くのルールまたはガイドラインのセットが存在する可能性があります。したがって、これらのガイドラインに従うと、システムはより有益で、アクセスしやすく、スケーラブルになり、ユーザーにとって問題が少なくなります。
さて、「テスト自動化フレームワーク」について話しているので、それらに焦点を移しましょう。
テスト自動化フレームワーク
「テスト自動化フレームワーク」は、自動化テストスクリプトの実行環境を提供するために配置された足場です。このフレームワークは、自動化テストスクリプトを効率的に開発、実行、およびレポートするのに役立つさまざまな利点をユーザーに提供します。これは、テストを自動化するために特別に作成されたシステムのようなものです。
非常に単純な言語では、フレームワークは、さまざまなガイドライン、コーディング標準、概念、プロセス、プラクティス、プロジェクト階層、モジュール性、レポートメカニズム、テストデータインジェクションなどを柱の自動化テストに建設的にブレンドしたものと言えます。したがって、ユーザーはアプリケーションを自動化しながらこれらのガイドラインに従って、さまざまな生産的な結果を利用できます。
利点は、スクリプトの容易さ、スケーラビリティ、モジュール性、理解可能性、プロセス定義、再利用性、コスト、メンテナンスなど、さまざまな形である可能性があります。したがって、これらの利点を得るには、開発者は次の1つ以上を使用することをお勧めします。テスト自動化フレームワーク。
さらに、同じアプリケーションのさまざまなモジュールで作業する開発者が多数いる場合や、各開発者が自動化へのアプローチを実装する状況を回避したい場合は、単一の標準テスト自動化フレームワークが必要になります。
注意 :テストフレームワークは常にアプリケーションに依存しないことに注意してください。つまり、テスト対象のアプリケーションの複雑さ(テクノロジスタック、アーキテクチャなど)に関係なく、任意のアプリケーションで使用できます。 フレームワークはスケーラブルで保守可能でなければなりません。
テスト自動化フレームワークの利点
- コードの再利用性
- 最大カバレッジ
- 回復シナリオ
- 低コストのメンテナンス
- 最小限の手動介入
- 簡単なレポート
テスト自動化フレームワークの種類
自動化フレームワークとは何かについての基本的な考え方がわかったので、このセクションでは、市場で入手可能なさまざまなタイプのテスト自動化フレームワークについて説明します。また、長所と短所、およびユーザビリティの推奨事項に光を当ててみます。
現在、さまざまな自動化フレームワークが利用可能です。これらのフレームワークは、再利用性、メンテナンスの容易さなどの自動化を行うためのさまざまな主要な要素へのサポートに基づいて、互いに異なる場合があります。
最も一般的に使用されているいくつかのテスト自動化フレームワークについて説明します。
- モジュールベースのテストフレームワーク
- ライブラリアーキテクチャテストフレームワーク
- データ駆動型テストフレームワーク
- キーワード駆動型テストフレームワーク
- ハイブリッドテストフレームワーク
- ビヘイビア駆動開発フレームワーク
(画像をクリックすると拡大表示されます)
それぞれについて詳しく説明しましょう。
しかしその前に、このフレームワークを持っているにもかかわらず、ユーザーは常に自分のプロジェクトのニーズに最適な独自のフレームワークを構築および設計するために活用されていることにも言及したいと思います。
#1)モジュールベースのテストフレームワーク
モジュールベースのテストフレームワークは、一般的に知られているOOPの概念の1つである抽象化に基づいています。フレームワークは、「テスト対象アプリケーション」全体をいくつかの論理モジュールと分離モジュールに分割します。モジュールごとに、個別の独立したテストスクリプトを作成します。したがって、これらのテストスクリプトをまとめると、複数のモジュールを表すより大きなテストスクリプトが作成されます。
これらのモジュールは、アプリケーションのセクションで行われた変更がこのモジュールに影響を与えないように、抽象化レイヤーによって分離されています。
長所:
- フレームワークは、より簡単で費用効果の高いメンテナンスにつながる高レベルのモジュール化を導入します。
- フレームワークはかなりスケーラブルです
- 変更がアプリケーションの一部に実装されている場合は、アプリケーションのその部分を表すテストスクリプトのみを修正して、他のすべての部分をそのままにしておく必要があります。
短所:
- モジュールごとに個別にテストスクリプトを実装する一方で、テストデータ(テストを実行するためのデータ)をテストスクリプトに埋め込みます。したがって、異なるテストデータのセットでテストすることになっている場合は常に、テストスクリプトで操作を行う必要があります。
#2)ライブラリアーキテクチャテストフレームワーク
ライブラリアーキテクチャテストフレームワークは、基本的かつ基本的にモジュールベースのテストフレームワークに基づいて構築されており、いくつかの追加の利点があります。テスト対象のアプリケーションをテストスクリプトに分割する代わりに、アプリケーションを関数に分離します。または、アプリケーションの他の部分でも一般的な関数を使用できます。したがって、テスト対象のアプリケーションの共通関数で構成される共通ライブラリを作成します。したがって、これらのライブラリは、必要に応じていつでもテストスクリプトから呼び出すことができます。
フレームワークの背後にある基本的な基本は、一般的な手順を決定し、それらをライブラリの下の関数にグループ化し、必要に応じてテストスクリプトでそれらの関数を呼び出すことです。
例 :ログイン手順を組み合わせて関数にし、ライブラリに保存することができます。したがって、アプリケーションへのログインに必要なすべてのテストスクリプトは、コードを最初から書き直す代わりに、その関数を呼び出すことができます。
長所:
- モジュールベースのフレームワークと同様に、このフレームワークも高レベルのモジュール化を導入しているため、メンテナンスとスケーラビリティも簡単でコスト効率に優れています。
- フレームワーク全体のさまざまなテストスクリプトで効率的に使用できる共通の関数を作成します。したがって、フレームワークは高度な再利用性をもたらします。
短所:
- モジュールベースのフレームワークと同様に、テストデータはテストスクリプトに格納されるため、テストデータを変更するには、テストスクリプトも変更する必要があります。
- ライブラリの導入により、フレームワークは少し複雑になります。
#3)データ駆動型テストフレームワーク
アプリケーションを自動化またはテストしているときに、異なる入力データのセットを使用して同じ機能を複数回テストする必要がある場合があります。したがって、このような場合、テストデータをテストスクリプトに埋め込むことはできません。したがって、テストデータをテストスクリプトの外部の外部データベースに保持することをお勧めします。
データ駆動型テストフレームワークは、ユーザーがテストスクリプトロジックとテストデータを相互に分離するのに役立ちます。これにより、ユーザーはテストデータを外部データベースに保存できます。外部データベースには、プロパティファイル、xmlファイル、Excelファイル、テキストファイル、CSVファイル、ODBCリポジトリなどがあります。データは通常、「キーと値」のペアで保存されます。したがって、キーを使用して、テストスクリプト内のデータにアクセスしてデータを入力できます。
注意 :外部ファイルに保存されているテストデータは、入力値の行列だけでなく、期待値の行列にも属することができます。
Android携帯電話に最適なスパイウェア
例:
例を使って上記のメカニズムを理解しましょう。
「Gmail–ログイン」機能について考えてみましょう。
ステップ1: 最初のそして最も重要なステップは、テストデータ(入力データと期待されるデータ)を保存する外部ファイルを作成することです。たとえば、Excelシートについて考えてみましょう。
ステップ2: 次のステップは、テストデータを自動化テストスクリプトに入力することです。この目的のために、いくつかのAPIを使用してテストデータを読み取ることができます。
public void readTD(String TestData, String testcase) throws Exception { TestData=readConfigData(configFileName,'TestData',driver); testcase=readConfigData(configFileName,'testcase',driver); FileInputStream td_filepath = new FileInputStream(TestData); Workbook td_work =Workbook.getWorkbook(td_filepath); Sheet td_sheet = td_work.getSheet(0); if(counter==0) { for (int i = 1,j = 1; i <= td_sheet.getRows()-1; i++){ if(td_sheet.getCell(0,i).getContents().equalsIgnoreCase(testcase)){ startrow = i; arrayList.add(td_sheet.getCell(j,i).getContents()); testdata_value.add(td_sheet.getCell(j+1,i).getContents());}} for (int j = 0, k = startrow +1; k <= td_sheet.getRows()-1; k++){ if (td_sheet.getCell(j,k).getContents()==''){ arrayList.add(td_sheet.getCell(j+1,k).getContents()); testdata_value.add(td_sheet.getCell(j+2,k).getContents());}} } counter++; }
上記の方法はテストデータの読み取りに役立ち、以下のテスト手順はユーザーがGUIにテストデータを入力するのに役立ちます。
element.sendKeys(obj_value.get(obj_index));
長所:
- このフレームワークの最も重要な機能は、テストシナリオのすべての可能な組み合わせをカバーするために必要なスクリプトの総数を大幅に削減することです。したがって、シナリオの完全なセットをテストするために必要なコードの量は少なくなります。
- テストデータマトリックスを変更しても、テストスクリプトコードが妨げられることはありません。
- 柔軟性と保守性が向上します
- テストデータ値を変更して、単一のテストシナリオを実行できます。
短所:
- プロセスは複雑であり、テストデータソースと読み取りメカニズムを考え出すために追加の努力が必要です。
- テストスクリプトの開発に使用されているプログラミング言語に習熟している必要があります。
#4)キーワード駆動型テストフレームワーク
キーワード駆動型テストフレームワークは、スクリプトからテストデータを分離するだけでなく、テストスクリプトに属する特定のコードセットを外部データファイルに保持するという意味で、データ駆動型テストフレームワークの拡張機能です。
これらのコードセットはキーワードと呼ばれるため、フレームワークはそのように名付けられています。キーワードは、アプリケーションで実行する必要のあるアクションについて自己誘導します。
キーワードとテストデータは表形式のような構造で保存されるため、テーブル駆動型フレームワークとしても一般的に見なされています。キーワードとテストデータは、使用されている自動化ツールに依存しないエンティティであることに注意してください。
例キーワード駆動テストフレームワークのテストケース
上記の例では、ログイン、クリック、リンクの確認などのキーワードがコード内で定義されています。
アプリケーションの性質に応じて、キーワードを導き出すことができます。また、すべてのキーワードを1つのテストケースで複数回再利用できます。ロケーター列には、画面上のWeb要素または提供する必要のあるテストデータを識別するために使用されるロケーター値が含まれます。
必要なすべてのキーワードが設計され、フレームワークのベースコードに配置されます。
長所:
- データ駆動型テストによって提供される利点に加えて、キーワード駆動型フレームワークでは、データ駆動型テストとは異なり、ユーザーがスクリプトの知識を持っている必要はありません。
- 1つのキーワードを複数のテストスクリプトで使用できます。
短所:
- ユーザーは、フレームワークによって提供される利点を効率的に活用できるように、キーワード作成メカニズムに精通している必要があります。
- フレームワークは成長するにつれて徐々に複雑になり、多くの新しいキーワードが導入されます。
#5)ハイブリッドテストフレームワーク
名前が示すように、ハイブリッドテストフレームワークは、上記の複数のフレームワークを組み合わせたものです。このような設定の最も良い点は、関連するあらゆる種類のフレームワークの利点を活用できることです。
例ハイブリッドフレームワーク
テストシートには、キーワードとデータの両方が含まれます。
上記の例では、キーワード列には特定のテストケースで使用されるすべての必須キーワードが含まれ、データ列はテストシナリオで必要なすべてのデータを駆動します。ステップに入力が必要ない場合は、空のままにしておくことができます。
#6)ビヘイビア駆動開発フレームワーク
ビヘイビア駆動開発フレームワークを使用すると、ビジネスアナリスト、開発者、テスターなどが読みやすく理解しやすい形式で機能検証を自動化できます。このようなフレームワークでは、必ずしもユーザーがプログラミング言語に精通している必要はありません。キュウリ、JbehaveなどのBDDに使用できるさまざまなツールがあります。BDDフレームワークの詳細については、キュウリのチュートリアルで後述します。また、Cucumberでテストケースを作成するためのGherkin言語の詳細についても説明しました。
自動化テストフレームワークのコンポーネント
上記のフレームワークの図解は自明ですが、それでもいくつかの点を強調しておきます。
- オブジェクトリポジトリ :ORとしてのオブジェクトリポジトリの頭字語は、Web要素に関連付けられたロケータータイプのセットで構成されます。
- テストデータ: シナリオがテストされる入力データであり、実際の結果と比較される期待値である可能性があります。
- 構成ファイル/定数/環境設定 :ファイルには、アプリケーションのURL、ブラウザ固有の情報などに関する情報が格納されます。これは通常、フレームワーク全体で静的なままの情報です。
- ジェネリックス/プログラムロジック/リーダー :これらは、フレームワーク全体で一般的に使用できる関数を格納するクラスです。
- ビルドツールと継続的インテグレーション :これらは、テストレポート、電子メール通知、およびログ情報を生成するフレームワークの機能を支援するツールです。
結論
上に示したフレームワークは、テスト仲間が使用する最も一般的なフレームワークです。その場所には他にもさまざまなフレームワークがあります。それ以降のすべてのチュートリアルでは、 データ駆動型テストフレームワーク 。
このチュートリアルでは、自動化フレームワークの基本について説明しました。また、市場で入手可能なフレームワークの種類についても説明しました。
次のチュートリアル#21 :次のチュートリアルでは、簡単に説明します サンプルフレームワーク、テストデータを保存するMS Excel、優れた操作などを紹介します。
それまでは、自動化フレームワークについてお気軽にお問い合わせください。
推奨読書
- Selenium自動化プロジェクトのテスト見積もりに影響を与える7つの要因– Seleniumチュートリアル#32
- Selenium WebDriverの概要– Seleniumチュートリアル#8
- 効率的なSeleniumスクリプティングとトラブルシューティングシナリオ– Seleniumチュートリアル#27
- ログを使用したSeleniumスクリプトのデバッグ(Log4jチュートリアル)– Seleniumチュートリアル#26
- 30以上の最高のSeleniumチュートリアル:実際の例でSeleniumを学ぶ
- 初心者向けの詳細なEclipseチュートリアル
- Seleniumスクリプトを構築するためにChromeおよびIEブラウザーで要素を見つける方法– Seleniumチュートリアル#7
- Cucumber Seleniumチュートリアル:Cucumber Java SeleniumWebDriverの統合