(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-07-19
(45)【発行日】2023-07-27
(54)【発明の名称】カスタマイズ可能な企業自動化テストフレームワーク
(51)【国際特許分類】
G06F 11/36 20060101AFI20230720BHJP
G06F 8/30 20180101ALI20230720BHJP
【FI】
G06F11/36 188
G06F8/30
(21)【出願番号】P 2021507779
(86)(22)【出願日】2019-05-24
(86)【国際出願番号】 US2019033883
(87)【国際公開番号】W WO2020204971
(87)【国際公開日】2020-10-08
【審査請求日】2022-05-11
(32)【優先日】2019-04-05
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ミトラ,サウラブ
【審査官】今城 朋彬
(56)【参考文献】
【文献】米国特許出願公開第2010/0100872(US,A1)
【文献】米国特許出願公開第2018/0089066(US,A1)
【文献】米国特許第07272822(US,B1)
【文献】特開2014-186617(JP,A)
【文献】特開2007-334837(JP,A)
【文献】特開2002-014845(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
G06F 8/30
(57)【特許請求の範囲】
【請求項1】
カスタマイズ可能な企業自動化テストフレームワークを実現するための方法であって、
企業ウェブサイトの自動化されたテストのためのワークフロー定義、ページ構造定義、および関数定義を受け取ることを含み、前記ワークフロー定義は、一連のステップを含む1つ以上のテストケースのための1つ以上のワークフローを定義し、前記ページ構造定義は、前記企業ウェブサイトの複数のウェブページを含むウェブ要素を定義し、前記関数定義は、前記1つ以上のワークフローのステップによって参照される企業ウェブサイト固有の関数を定義し、前記方法はさらに、
ハイブリッドスクリプトパーサが、前記ワークフロー定義、前記ページ構造定義、および前記関数定義を解析して、前記自動化されたテストのためのハイブリッドスクリプトを生成することと、
自動化ツールパーサが、前記ハイブリッドスクリプトを解析して、自動化ツールのための出力を生成することと、
前記自動化ツールパーサからの前記出力に基づいて、前記自動化ツールによって実行されることにより、前記自動化されたテストについての結果を生成するランタイムスクリプトを生成することとを含み、前記自動化ツールは、前記企業ウェブサイトの前記複数のウェブページ上で前記1つ以上のワークフローの前記ステップを実現して、前記自動化されたテストについての前記結果を生成する、方法。
【請求項2】
前記ワークフローの1つ以上の選択をユーザから受信することをさらに含み、前記ハイブリッドスクリプトパーサは、前記ワークフローの前記選択に基づいて前記ハイブリッドスクリプトを生成する、請求項1に記載の方法。
【請求項3】
前記ワークフロー定義、前記ページ構造定義、および前記関数定義は、各々、マークアップ言語文書を含む、請求項1または2に記載の方法。
【請求項4】
前記マークアップ言語文書は、拡張マークアップ言語(XML)文書である、請求項3に記載の方法。
【請求項5】
前記企業ウェブサイト固有の関数のうちの第1の関数によって使用される入力データをユーザから受信するステップをさらに含み、前記自動化ツールが前記1つ以上のワークフローの前記ステップを実現するとき、前記ステップのうちの少なくとも1つを実現することは、前記第1
の関数を呼び出すことと、前記入力データを使用して前記自動化されたテストについての結果を生成することとを含む、請求項1~4のいずれか1項に記載の方法。
【請求項6】
前記ハイブリッドスクリプトパーサによって生成される前記ハイブリッドスクリプトは、前記第1
の関数および前記入力データを使用して前記1つのステップを実現する、請求項5に記載の方法。
【請求項7】
前記ワークフロー定義によって構成される、前記選択されたワークフローに対するユーザインターフェイスを表示することをさらに含み、複数のインターフェイス要素が、前記選択されたワークフローに対するステップに基づいて、前記構成されたユーザインターフェイスに動的に表示される、請求項2に記載の方法。
【請求項8】
前記ユーザインターフェイス上に表示される前記1つのステップのためのユーザインターフェイス要素が、前記ユーザから前記
企業ウェブサイト固有の関数のうちの第1の関数によって使用される入力データを受信するように構成される、請求項7に記載の方法。
【請求項9】
前記ユーザインターフェイスは、前記ワークフロー定義のために、非同期JavaScriptおよびXML(AJAX:Asynchronous JavaScript and XML)呼び出しに基づいて構成される、請求項7または8に記載の方法。
【請求項10】
前記ハイブリッドスクリプトは、複数の自動化ツールパーサによって解析されることによって出力を生成するように構成され、各自動化ツールパーサは、異なる自動化ツールに関連付けられ、各自動化ツールパーサからの出力に基づくランタイムスクリプトは、異なる自動化ツールによって使用されることによって前記自動化されたテストについての前記結果を生成するように構成される、請求項1~9のいずれか1項に記載の方法。
【請求項11】
前記1つ以上のワークフローの前記ステップは、異なる企業ウェブサイト間で共有されるデフォルト関数と、前記関数定義において定義される前記企業ウェブサイト固有の関数であって、前記関数定義に関連付けられる前記企業ウェブサイトに固有の、前記企業ウェブサイト固有の関数とを含む、請求項1~10のいずれか1項に記載の方法。
【請求項12】
前記ハイブリッドスクリプトは、異なる企業ウェブサイト間で共有されるデフォルト関数と、前記関数定義において定義される前記企業ウェブサイト固有の関数であって、前記関数定義に関連付けられる前記企業ウェブサイトに固有の、前記企業ウェブサイト固有の関数とを含む、請求項1~10のいずれか1項に記載の方法。
【請求項13】
ユーザからユーザインターフェイスを介して前記ハイブリッドスクリプトへの編集を受信することをさらに含み、
前記自動化ツールパーサによる前記解析は、前記編集されたハイブリッドスクリプトを解析して出力を生成することを含み、
前記自動化ツールパーサからの前記出力に基づいて前記ランタイムスクリプト
を生成することは、前記自動化ツールによって実行されることにより前記自動化されたテストについての結果を生成する前記ランタイムスクリプトを生成することを含み、前記自動化ツールは、前記ハイブリッドスクリプトに対する前記編集に基づいて前記企業ウェブサイトの前記複数のウェブページ上で前記1つ以上のワークフローの前記ステップを実現して、前記自動化されたテストについての前記結果を生成する、請求項1~12のいずれか1項に記載の方法。
【請求項14】
前記編集されたハイブリッドスクリプトは、前記企業ウェブサイトに対するカスタマイズされた自動化されたテストをもたらす、請求項13に記載の方法。
【請求項15】
カスタマイズ可能な企業自動化テストフレームワークを実現するためのシステムであって、
プロセッサと、
前記プロセッサによる実行のための命令を記憶するメモリとを備え、前記命令は、前記プロセッサを、
企業ウェブサイトの自動化されたテストのためのワークフロー定義、ページ構造定義、および関数定義を受け取るように構成し、前記ワークフロー定義は、一連のステップを含む1つ以上のテストケースのための1つ以上のワークフローを定義し、前記ページ構造定義は、前記企業ウェブサイトの複数のウェブページを含むウェブ要素を定義し、前記関数定義は、前記1つ以上のワークフローのステップによって参照される企業ウェブサイト固有の関数を定義し、前記命令は、さらに、前記プロセッサを、
ハイブリッドスクリプトパーサによって、前記ワークフロー定義、前記ページ構造定義、および前記関数定義を解析して、前記自動化されたテストのためのハイブリッドスクリプトを生成し、
自動化ツールパーサによって、前記ハイブリッドスクリプトを解析して、自動化ツールのための出力を生成し、
前記自動化ツールパーサからの前記出力に基づいて、前記自動化ツールによって実行されることにより、前記自動化されたテストについての結果を生成するランタイムスクリプトを生成するように構成し、前記自動化ツールは、前記企業ウェブサイトの前記複数のウェブページ上で前記1つ以上のワークフローの前記ステップを実現して、前記自動化されたテストについての前記結果を生成する、システム。
【請求項16】
プロセッサによって実行されると前記プロセッサにカスタマイズ可能な企業自動化テストフレームワークを実現させるコンピュータプログラムであって、前記コンピュータプログラムは、実行されると、前記プロセッサに、
企業ウェブサイトの自動化されたテストのためのワークフロー定義、ページ構造定義、および関数定義を受け取らせ、前記ワークフロー定義は、一連のステップを含む1つ以上のテストケースのための1つ以上のワークフローを定義し、前記ページ構造定義は、前記企業ウェブサイトの複数のウェブページを含むウェブ要素を定義し、前記関数定義は、前記1つ以上のワークフローのステップによって参照される企業ウェブサイト固有の関数を定義し、前記コンピュータプログラムは、さらに、実行されると、前記プロセッサに、
ハイブリッドスクリプトパーサによって、前記ワークフロー定義、前記ページ構造定義、および前記関数定義を解析させて、前記自動化されたテストのためのハイブリッドスクリプトを生成させ、
自動化ツールパーサによって、前記ハイブリッドスクリプトを解析させて、自動化ツールのための出力を生成させ、
前記自動化ツールパーサからの前記出力に基づいて、前記自動化ツールによって実行されることにより、前記自動化されたテストについての結果を生成するランタイムスクリプトを生成させ、前記自動化ツールは、前記企業ウェブサイトの前記複数のウェブページ上で前記1つ以上のワークフローの前記ステップを実現して、前記自動化されたテストについての前記結果を生成する、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の参照
本出願は、2019年4月5日に提出された米国特許出願16/376,484に対する優先権を主張し、その開示をここに引用により援用する。
【0002】
分野
本開示の実施形態は、概して、カスタマイズ可能な企業ウェブアプリケーション自動化テストフレームワークに関する。
【背景技術】
【0003】
背景
企業実体のウェブプレゼンスはますます重要になっている。たとえば、電子商取引は年々指数関数的に成長しており、他の企業活動はますますオンラインで動いている。さらに、ウェブ技術が進展するにつれて、ウェブアプリケーションおよびウェブサイトは複雑な機能性を得ている。これらの傾向は、企業システムクライアント、顧客、および/またはユーザの期待を変えた。たとえば、決してシームレスではないオンライン取引、統合、および/またはワークフローは、ユーザビリティ上の問題に対して不満を引き起こし得る。その結果、企業ウェブプレゼンスは、新しい機能またはコンテンツでしばしば変更または更新され得るが、その上に、ユーザビリティが維持または向上されることが期待される。したがって、カスタマイズ可能であり、かつ努力効率を達成するウェブプレゼンスのテストを自動化することができるフレームワークは、企業ウェブサイトまたはウェブアプリケーションを大幅に改善することができる。
【発明の概要】
【課題を解決するための手段】
【0004】
概要
本開示の実施形態は、概して、関連技術上で実質的に改善されるカスタマイズ可能な企業自動化テストフレームワークを実現するためのシステムおよび方法を対象とする。企業ウェブサイトの自動化されたテストのためのワークフロー定義、ページ構造定義、および関数定義を受け取ることができ、ワークフロー定義は、一連のステップを含む1つ以上のテストケースのための1つ以上のワークフローを定義し、ページ構造定義は、企業ウェブサイトの複数のウェブページを含むウェブ要素を定義し、関数定義は、1つ以上のワークフローのステップによって参照される企業ウェブサイト固有の関数を定義する。ハイブリッドスクリプトパーサは、ワークフロー定義、ページ構造定義、および関数定義を解析して、自動化されたテストのためのハイブリッドスクリプトを生成することができる。自動化ツールパーサは、ハイブリッドスクリプトを解析して、自動化ツールのための出力を生成することができる。自動化ツールパーサからの出力に基づいて、自動化ツールによって実行され、自動化されたテストについての結果を生成するランタイムスクリプトを生成することができ、自動化ツールは、企業ウェブサイトの複数のウェブページ上で1つ以上のワークフローのステップを実現して、自動化されたテストについての結果を生成する。
【0005】
実施形態の特徴および利点は、以下の説明に記載されるか、または以下の説明から明らかになるか、または本開示の実施によって知ることができる。
【0006】
図面の簡単な説明
さらなる実施形態、詳細、利点、および修正が、添付の図面と併せて解釈されるべき好ましい実施形態の以下の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【0007】
【
図1】例示的な実施形態によるカスタマイズ可能な企業自動化テストフレームワークを実現するためのシステムを示す。
【
図2】例示的な実施形態による、システムに作動的に結合されるコンピューティングデバイスのブロック図を示す。
【
図3】例示的な実施形態によるカスタマイズ可能な企業自動化テストフレームワークを実現するための別のシステムを示す。
【
図4A】例示的な実施形態による企業ウェブアプリケーションのバージョンを示す。
【
図4B】例示的な実施形態による企業ウェブアプリケーションのバージョンを示す。
【
図5A】例示的な実施形態による企業ウェブアプリケーションのバージョンを示す。
【
図5B】例示的な実施形態による企業ウェブアプリケーションのバージョンを示す。
【
図6A】例示的な実施形態による例示的なワークフロー定義を示す。
【
図6B】例示的な実施形態による、航空便を検索するための例示的なワークフローを示す。
【
図6C】例示的な実施形態による例示的なページ構造定義を示す。
【
図6D】例示的な実施形態による例示的な関数定義を示す。
【
図7A】例示的実施の形態による、カスタマイズされた自動化されたテストのためのハイブリッドスクリプト生成を構成するためのユーザインターフェイスを示す。
【
図7B】例示的実施の形態による、カスタマイズされた自動化されたテストのためのハイブリッドスクリプト生成を構成するためのユーザインターフェイスを示す。
【
図7C】例示的実施の形態による、カスタマイズされた自動化されたテストのためのハイブリッドスクリプト生成を構成するためのユーザインターフェイスを示す。
【
図7D】例示的実施の形態による、カスタマイズされた自動化されたテストのためのハイブリッドスクリプト生成を構成するためのユーザインターフェイスを示す。
【
図8】一実施形態による生成されたハイブリッドスクリプトを示す。
【
図9A】例示的な実施形態による例示的な実現例のフレーム構成を示す。
【
図9B】例示的な実施形態による例示的な実現例のフレーム特性を示す。
【
図9C】例示的な実施形態による例示的なスイートファイルおよびスイート結果を示す。
【
図9D】例示的な実施形態による例示的なカスタマイズされた自動化されたテスト結果を示す。
【
図10A】例示的な実施形態によるスイートレベル結果ウェブページを示す。
【
図10B】例示的な実施形態による詳細なテストレベル結果ウェブページを示す。
【
図10C】例示的な実施形態によるフェイルステータスを有する例示的なテスト結果を示す。
【
図11A】例示的な実施形態による、別のカスタマイズされた自動化されたテストのためのハイブリッドスクリプト生成を構成するためのユーザインターフェイスを示す。
【
図11B】例示的な実施形態による、別のカスタマイズされた自動化されたテストのためのハイブリッドスクリプト生成を構成するためのユーザインターフェイスを示す。
【
図11C】例示的な実施形態による、別のカスタマイズされた自動化されたテストのためのハイブリッドスクリプト生成を構成するためのユーザインターフェイスを示す。
【
図11D】例示的な実施形態による、別のカスタマイズされた自動化されたテストのためのハイブリッドスクリプト生成を構成するためのユーザインターフェイスを示す。
【
図12】例示的な実施形態によるカスタマイズ可能な企業自動化テストフレームワークを実施するためのフロー図を示す。
【発明を実施するための形態】
【0008】
詳細な説明:
実施形態は、カスタマイズ可能な企業自動化テストフレームワークを実現する。たとえば、企業は、ウェブアプリケーションまたはウェブサイトのようなウェブプレゼンスを有する場合がある。ウェブアプリケーションまたはウェブサイト機能の様々な部分が予想通りに機能することを確実にするためにウェブプレゼンスを時々テストすることは、有益であり得る。たとえば、ウェブプレゼンスは、変更が実施されるとき(たとえば、更新、パッチなど)、または任意の他の好適な時間にテストすることができる。
【0009】
そのようなテストは、手動で行う場合、時間がかかり、費用がかかり得る。したがって、自動化ツールを使用することにより、テストの効率を向上させることができる。しかしながら、このような自動化ツールも構成を必要とし、それ自体が過度に時間を費やす可能性がある。たとえば、ウェブプレゼンスの異なるバージョンは、カスタマイズされたテストを要求する場合があり、またはテストが、様々な理由のために、異なるバージョンにカスタマイズされる場合がある。そのようなカスタマイズされたテストを実行するために自動化ツールを構成することは、手動の努力の重複をもたらし得る。
【0010】
実施形態は、ウェブプレゼンス(たとえばウェブアプリケーションまたはウェブサイト)に対して自動化されたテストを実行する効率および柔軟性を改善するカスタマイズ可能な企業自動化テストフレームワークを実現する。たとえば、企業ウェブサイトのための定義を用いてハイブリッドスクリプトを生成することができ、ハイブリッドスクリプトを解析することによりランタイムスクリプトを生成することができ、ランタイムスクリプトを自動化ツールによって用いて、企業ウェブサイト上で、自動化されたテストを実施することができる。
【0011】
いくつかの実施形態では、定義は、ワークフロー定義、ページ構造定義、および関数定義を含むことができる。たとえば、ワークフロー定義は、テストのために実行されるべき一連のステップを含むワークフローを定義することができる。ページ構造定義は、企業ウェブサイトのウェブページのためのウェブ要素を定義することができる。関数定義は、企業ウェブサイトテストを実行するために使用される企業ウェブサイト固有の関数(たとえば、ワークフローのステップによって呼び出される関数)を定義することができる。いくつかの実施形態では、これらの定義は、マークアップ言語文書(たとえば拡張マークアップ言語(「XML(extensible markup language)」)文書)に格納される。
【0012】
実施形態は、(たとえばハイブリッドスクリプトパーサを使用して)定義を解析して、企業ウェブサイトテストのためのハイブリッドスクリプトを生成することができる。ハイブリッドスクリプトは、自動化されたテストのカスタマイズされたバージョン(たとえば、受信された定義に基づいてカスタマイズされる)を表すことができる。いくつかの実施形態では、ハイブリッドスクリプトは、次いで、自動化ツールパーサによって解析されることができる。たとえば、ハイブリッドスクリプトは、任意の数の自動化ツール(たとえば、当業者に利用可能なウェブプレゼンステスト自動化ツール)と協働するように構成することができる。所与の自動化ツールパーサは、特定の自動化ツールによって使用可能な出力を生成するように構成することができる。したがって、ハイブリッドスクリプトは、異なる自動化ツールパーサと組み合わせることができ、これらの様々な組み合わせを使用して、様々な異なる自動化ツールで、カスタマイズされたテストを実現することができる。
【0013】
一部の実施形態では、自動化ツールパーサの出力を用いて、ランタイムスクリプト(たとえば、カスタマイズされたテストを実施するよう自動化ツールパーサに関連付けられる自動化ツールによって使用される)を生成することができる。たとえば、ランタイムスクリプトは、自動化ツール(たとえばクラウドベースの自動化ツール)によって受信されることができ、次いで、自動化ツールは、企業ウェブサイト上でランタイムスクリプトにおいて表されるカスタマイズされたテストを実現する。この実現例はテスト結果を生成し、それらは、ユーザインターフェイスにおいて受信および/または表示することができる。たとえば、テスト結果は、ワークフロー定義において定義されたワークフローおよび/またはこれらのワークフローのうちの1つの個々のステップについてのステータス(たとえば、パス、フェイル、スキップ)を含むことができる。
【0014】
本開示の実施形態は、多くの状況において有益であり得る。たとえば、企業パッケージウェブアプリケーションの場合、製品は多くの場合、(たとえば顧客要求ごとに実現される)多数のカスタマイゼーションで企業顧客に配送される。さらに、企業ウェブプレゼンスは、多くの変形を有し得、したがって、1つの企業ウェブサイトまたはウェブアプリケーションは、別の企業ウェブサイトまたはウェブアプリケーションに類似しているが、カスタマイゼーションの結果としての差を含み得る。
【0015】
たとえば、カスタマイゼーションは、以下のうちの1つ以上を含むことができる。すなわち、(1)ブランディングを反映するテーマ、色、フォント、スタイルシート;(2)機能にアクセスするためのナビゲーションは様々であり得て、結果として、ナビゲーションは、機能にアクセスするために、より多くの、または異なるウェブページ/画面を横断することを含み得る;(3)ウェブページ/画面上で見える要素は、数および/または順序が変わる可能性がある(たとえば、地理的制約のため、いくつかの実現例では、いくつかのフィールドが必須であるかもしれず、いくつかの他の実現例では、それらのフィールドはアプリケーションに現れないかもしれない);(4)要素タイプは、実現例に依って変化するかもしれない(たとえば、一変形例では、要素タイプは、自由に編集可能なフィールドに対応するかもしれず、別の変形例では、単一の選択コンボリスト、ラジオボタン、または何らかの他の要素であるかもしれない);(5)一般に、2つの変形は、視覚的には同様の数のフィールド/要素を有し得るが、機能性は、カスタマイゼーションのため、それら2つの間でわずかに異なり得る。多くの他の状況は、様々な実施形態で記載されるように、カスタマイズ可能な自動化されたウェブテストを効率的に実行するフレームワークから同様に利益を得ることができる。
【0016】
実施形態は、従来のテスト自動化フレームワークに鑑み、利益を提供する。たとえば、多くの場合、グラフィカルユーザインターフェイス(「GUI(graphical user interface)」)ベースのウェブ自動化スクリプトは、以下の機能を有する:
・所望のウェブページ/セクションへのブラウザベースのナビゲーション;
・アクションを実行する必要がある要素を識別する(たとえば、アクションは、スクリプトがウェブ要素上で実行することを意図する動作とすることができる);および
・スクリプトが意図されることを確実に行うよう、チェックをアサートする。
【0017】
多くの自動化スクリプトでは、上述の3つのパラメータがしばしば考慮されるが、スクリプトは、パラメータのうちの1つ以上が変化すると失敗する可能性がある。たとえば、従来の実現例では、自動化スクリプト(コード)は、ウェブページ/フレームを横断し、ウェブページ内の要素上でアクションを実行し、アサートし、最終的に報告するために書かれることが多い。これは、(たとえば、ユーザインターフェイスまたは機能上のカスタマイゼーションなしに)バニラベースの実現のために機能することができるが、ユーザインターフェイスおよび/または機能性が実現例ごとに変化する変形例では、これらの従来のスクリプトは、スケーラブルではないので、失敗することが多い。
【0018】
別の課題は、これらの自動化スクリプトが基本的な自動化ツールに強く結合されることが多く、いくつかの実現例では、(たとえば、異なる顧客によって、または製品開発組織、実施組織、および顧客間で)異なる自動化ツールが使用されるときにスクリプトを再利用することはできないことである。しかしながら、多くの場合、顧客自動化ツールは異なり、顧客にわたって使用される標準化された自動化ツールは存在しない。そのようなツールの多様性により、(たとえば、すべての顧客によって使用される)各すべての自動化ツールを使用して企業パッケージウェブアプリケーションまたはウェブサイトのカスタマイズされた実現を証明することは過度に負担となるか、または少なくとも不必要な労力を必要とするであろう。
【0019】
実施形態は、基本的な自動化ツールと緊密に統合されないフレームワークトポロジを実現する。たとえば、基本的な自動化ツールは、実行に使用されるが、緩く結合された自動化ツール固有のフレームワークパーサを、異なる自動化ツールと緩く結合されたものに置き換えることによって交換することができる。異なる顧客が異なる市販またはオープンソースの自動化ツールを使用する場合、従来の自動化スクリプトは使用不能となる。
【0020】
実施形態は、以下の設計原理のうちの1つ以上を通じて既存の問題を軽減するカスタマイズ可能なフレームワーク設計トポロジを実現する。
【0021】
・フレームワークは、たとえば、開示されたハイブリッドスクリプトコンセプトおよびランタイムスクリプトの組み合わせに基づいて、異なる基本的な自動化ツール(市販またはオープンソースのいずれか)で実現することができる。
【0022】
・生成されたハイブリッドスクリプトは、スクリプト内でハードコード化されるナビゲーション/アサーション/アクション情報を含まない。たとえば、これらは、(たとえば外部定義に基づいて)生成することができ、実行直前になど修正することができる。
【0023】
・論理機能フローは、データ形式(たとえばワークフロー定義)で公開することができる。たとえば、論理ワークフローはXML形式で定義することができ、機能ステップの順序付けは、任意のテキストエディタにおいて容易に修正することができ、それは、次いで、スクリプトの、カスタマイズされたバージョンをもたらすことができる。
【0024】
・アクション/ナビゲーション/アサーションを実行することができる要素(たとえばウェブ要素)は、別のデータ構造(たとえばページ構造定義)で公開することができる。これらの要素は、ページおよびセクションにカテゴリ化することができる。
【0025】
・フレームワークのウェブインターフェイスコンポーネントは、これらのファイル(たとえばXMLファイル)を読み出し、実現に固有のスクリプトのためのカスタマイズされたステップを選択するオプションをユーザに提供することができる。さらに、ウェブインターフェイスの実施形態は、ユーザがテストウェアデータ(たとえば入力データ)を入力し、カスタマイズされたインプリメンテーションを生成することを可能にする。
【0026】
・アクション/アサーション/ナビゲーションは、ハイブリッド関数として公開することができる。たとえば、従来のコードを使用するのではなく、関数が動作する要素およびデータへの参照を(たとえばマークアップ言語文書において)定義することができる。これらの関数は、ファイル(たとえば関数定義)において定義することができる。いくつかの実施形態では、ランタイム関数は、自動化ツール固有であり得て、これらのハイブリッド関数に基づいて生成され得る。
【0027】
・企業パッケージウェブアプリケーションまたはウェブサイトの実現の変形は、テストをカスタマイズするよう、データファイルのそれら自体のコピーを有することができる(たとえば、ワークフロー定義、ページ構造定義、および関数定義)。
【0028】
・ハイブリッドスクリプトジェネレータは、これらのファイルならびにウェブインターフェイスから入力されるステップおよびテストデータを読んで、ハイブリッドスクリプトを生成することができる。
【0029】
・ハイブリッドスクリプトは、データ修正のための実行、ステップ順序変更、ステップ実行の有効化/無効化などの前に、これらのスクリプトの容易かつ迅速な修正を可能にするテキストフォーマットとすることができる。
【0030】
・フレームワークのためのレポートエンジンは、スイートおよびテストレベル結果ファイル(たとえばXMLファイル)を生成することができる。いくつかの実施形態では、ウェブダッシュボードは、XMLを(たとえばHTMLに)変換し、それをウェブレポートインターフェイス内に表示することができる。
【0031】
これらの特徴の1つ以上に基づいて、カスタマイズ可能なフレームワークの実施形態は、以下の改善を提供する。ハイブリッドスクリプトおよび自動化ツール固有のパーサに鑑み、実施形態は、複数の基本的な自動化ツール(たとえば市販またはオープンソースの)とともに機能することができる。たとえば、いくつかの実現例は、基本的な自動化ツールとの容易な結合のために、ハイブリッドおよびランタイムの2つのスクリプト層を利用する。さらに、生成されたハイブリッドスクリプトは、それを生成したコードを共有する必要なしに、顧客と共有することができる。
【0032】
いくつかの実施形態では、ハイブリッドスクリプト層はテキストベースであり、様々なユーザ(たとえばコーディング経験のないユーザ)がそれを修正することができる。多くの場合、ハイブリッドスクリプトは、ランタイム関数を生成する前に生成することができる。いくつかの実施形態では、ウェブページ要素、機能ワークフロー、および関数は、メタデータフォーマットとして(たとえばマークアップ言語ファイルのようなデータファイルにおいて)定義することができ、より容易な管理およびロバストなスクリプトをもたらす。たとえば、要素プロパティまたは文書オブジェクトモデル(「DOM(document object model)」)の変更の場合、コード変更を行う必要はない(たとえば、定義ファイル、またはいくつかの実施形態ではXMLファイルを修正するだけで十分であろう)。異なるシナリオをいくつかの必須および任意選択のフィールド有効化/無効化でテストするのに、コード修正は必要ではなく、生成されたハイブリッドスクリプトの修正で十分であろう。
【0033】
いくつかの実施形態では、カスタマイズされたウェブページ内のウェブ要素の視覚的順序が変わる場合、機能ワークフロー(たとえばワークフローXMLファイル)の順序付けを変更することで十分であろう。いくつかの実施形態では、フレームワークは、どのようなアクションが選択されるかに応じて、事前要件アクティビティを自動的に実行するよう、微調整され得る。これは、(たとえば関数ライブラリXMLにおいて)parent_page属性およびdependent_action属性を介して達成することができる。
【0034】
いくつかの実施形態では、実行されるべき機能はカスタマイズされるが、異なるカスタマイズされたテスト(たとえば企業ウェブサイトの異なるバージョンにカスタマイズされたテスト)に対する関数名は、ハイブリッドスクリプトにおいては同じままであり得る。この場合、ランタイムスクリプトレベルにおいて、カスタマイゼーションを実現することができる。そのような実現形態では、ハイブリッドスクリプトは可読性を維持し、その管理は単純化される。
【0035】
次に、本開示の実施形態を詳細に参照し、その例を添付の図面に示す。以下の詳細な説明では、本開示を完全に理解するために、多数の具体的な詳細が記載される。しかしながら、本開示は、これらの具体的な詳細がなくても実施され得ることが、当業者には明白であろう。他の例では、周知の方法、手順、構成要素、および回路は、実施形態の態様を不必要に不明瞭にしないように、詳細には説明していない。可能な限り、同様の参照番号は同様の要素に使用される。
【0036】
図1は、例示的な実施形態によるカスタマイズ可能な企業自動化テストフレームワークを実現するためのシステムを示す。システム100は、インプリメンテーション固有の定義102と、パーサおよびスクリプトジェネレータ104と、自動化ツール106とを含む。いくつかの実施形態では、インプリメンテーション固有の定義102は、自動化ツール106によって実現されるべきカスタマイズされたテストのための定義、たとえば、テストのためのステップを含むワークフローのための定義、カスタマイズされたテストが実行されるべきウェブページ(たとえば企業ウェブサイトまたはウェブアプリケーションのウェブページ)のためのページ構造のための定義、およびワークフローのステップによって呼び出される関数のための定義を提供することができる。
【0037】
いくつかの実施形態では、パーサおよびスクリプトジェネレータ104は、インプリメンテーション固有の定義102を解析して、ハイブリッドスクリプトを生成することができる。次いで、ハイブリッドスクリプトを使用して、自動化ツール106がカスタマイズされたテストを実現するのに使用するランタイムスクリプトを生成することができる。様々な実施形態において、所与のテストは、インプリメンテーション固有の定義102に基づいてカスタマイズすることができる。たとえば、所与の定義のセットを使用して、カスタマイズされたテストの性能を構成するハイブリッドスクリプトを生成することができる。この定義のセットが変化する(たとえばユーザによって編集される)と、生成されるハイブリッドスクリプトも変化し得、したがって、異なるカスタマイズされたテストが自動化ツール106によって実現される。いくつかの実施形態では、ユーザインターフェイスを用いて、インプリメンテーション固有の定義102で定義されたワークフロー/ステップへの受信された編集および/または生成されたハイブリッドスクリプトへの編集に基づいて、テストの実現をカスタマイズすることもできる。
【0038】
図2は、実施形態によるコンピュータサーバ/システム200のブロック図である。システム200のすべてまたは一部を用いて、
図1に示される要素のいずれかを実現してもよい。
図2に示されるように、システム200は、プロセッサ222およびメモリ214などのシステム200の様々なコンポーネント間で情報を通信するように構成されたバスデバイス212および/または他の通信機構を含み得る。さらに、通信デバイス220は、ネットワーク(図示せず)を介してプロセッサ222から別のデバイスに送信されるべきデータをエンコードし、プロセッサ222のためにネットワークを介して別のシステムから受信されたデータをデコードすることによって、プロセッサ222と他のデバイスとの間の接続性を可能にし得る。
【0039】
たとえば、通信デバイス220は、ワイヤレスネットワーク通信を提供するように構成されたネットワークインターフェイスカードを含み得る。赤外線、無線、Bluetooth(登録商標)、Wi-Fi、および/またはセルラー通信を含む様々なワイヤレス通信技術が使用され得る。代替的に、通信デバイス220は、イーサネット(登録商標)接続などの有線ネットワーク接続を提供するように構成され得る。
【0040】
プロセッサ222は、システム200の計算および制御機能を実行するよう、1つ以上の汎用または専用プロセッサを含み得る。プロセッサ222は、マイクロプロセシングデバイスなどの単一の集積回路を含むことができ、またはプロセッサ222の機能を達成するよう協働して動作する複数の集積回路デバイスおよび/もしくは回路基板を含むことができる。さらに、プロセッサ222は、メモリ214内に格納された、オペレーティングシステム215、テストフレームワーク216、および他のアプリケーション218などのコンピュータプログラムを実行することができる。
【0041】
システム200は、プロセッサ222による実行のための情報および命令を記憶するためのメモリ214を含み得る。メモリ214は、データを取り出し、提示し、修正し、記憶するための様々なコンポーネントを含み得る。たとえば、メモリ214は、プロセッサ222によって実行されると機能を提供するソフトウェアモジュールを記憶し得る。モジュールは、システム200のためのオペレーティングシステム機能を提供するオペレーティングシステム215を含み得る。モジュールは、オペレーティングシステム215、本明細書に開示されるカスタマイズされた自動化されたテストおよび他の機能性を実現するように構成されたテストフレームワーク216、ならびに他のアプリケーションモジュール218を含み得る。オペレーティングシステム215は、システム200のためのオペレーティングシステム機能を提供する。いくつかの例では、テストフレームワーク216は、メモリ内構成として実現され得る。いくつかの実現形態では、システム200がテストフレームワーク216の機能を実行すると、それは、本明細書に開示される機能を実行する非従来型の専用コンピュータシステムを実現する。
【0042】
非一時的メモリ214は、プロセッサ222によってアクセスされ得る様々なコンピュータ可読媒体を含み得る。たとえば、メモリ214は、ランダムアクセスメモリ(「RAM(random access memory)」)、ダイナミックRAM(「DRAM(dynamic RAM)」)、スタティックRAM(「SRAM(static RAM)」)、リードオンリーメモリ(「ROM(read only memory)」)、フラッシュメモリ、キャッシュメモリ、および/または任意の他の種類の非一時的コンピュータ可読媒体の任意の組み合わせを含み得る。プロセッサ222は、バス212を介して、液晶ディスプレイ(「LCD(Liquid Crystal Display)」)などのディスプレイ224にさらに結合される。キーボード226およびコンピュータマウスなどのカーソル制御デバイス228が、さらに、通信デバイス212に結合されて、ユーザがシステム200とインターフェイス接続できるようにする。
【0043】
いくつかの実施形態では、システム200は、より大きなシステムの一部とすることができる。したがって、システム200は、付加的な機能性を含むよう、1つ以上の付加的な機能性モジュール218を含むことができる。他のアプリケーションモジュール218は、たとえば、Oracle(登録商標) Cloud Infrastructure, Oracle(登録商標) Cloud Platform, Oracle(登録商標) Cloud Applicationsの様々なモジュールを含み得る。システム200のテストフレームワーク216、他のアプリケーションモジュール218、および任意の他の好適なコンポーネントは、の様々なJava(登録商標)モジュールおよび/またはMySQLのモジュール、ならびに他の好適なフレームワーク/サービスを含み得る。
【0044】
データベース217は、モジュール216および218のための中央集中型ストレージを提供し、たとえば、テストフレームワーク216のためのデータまたは他のデータソースを記憶するために、バス212に結合される。データベース217は、論理的に関連したレコードまたはファイルの統合された集合にデータを記憶することができる。データベース217は、運用データベース、分析データベース、データウェアハウス、分散型データベース、エンドユーザデータベース、外部データベース、ナビゲーションデータベース、メモリ内データベース、文書指向データベース、リアルタイムデータベース、リレーショナルデータベース、オブジェクト指向データベース、非相関データベース、NoSQLデータベース、Hadoop(登録商標)分散型ファイルシステム(「HFDS(Hadoop distributed file system)」)、または当技術分野で公知の任意の他のデータベースとすることができる。
【0045】
単一のシステムとして示されているが、システム200の機能は、分散型システムとして実現されてもよい。たとえば、メモリ214およびプロセッサ222は、集合的にシステム200を表す複数の異なるコンピュータにわたって分散され得る。一実施形態では、システム200は、デバイス(たとえば、スマートフォン、タブレット、コンピュータなど)の一部であり得る。一実施形態では、システム200は、デバイスから分離されてもよく、ここに開示される機能をデバイスのために遠隔で提供してもよい。さらに、システム200の1つ以上のコンポーネントは含まれなくてもよい。たとえば、ユーザまたは顧客デバイスとしての機能のために、システム200は、プロセッサ、メモリ、およびディスプレイを含むスマートフォンまたは他のワイヤレスデバイスであってよく、
図2に示される他のコンポーネントのうちの1つ以上を含まず、アンテナ、トランシーバ、または任意の他の好適なワイヤレスデバイスコンポーネントなど、
図2には示されない追加のコンポーネントを含む。さらに、本明細書に開示される機能を実行するように実現される場合、システム200は、カスタマイズされ自動化されたテスト機能を提供するように特別に適合された専用コンピュータである。
【0046】
図3は、例示的な実施形態によるカスタマイズ可能な企業自動化テストフレームワークを実現するための別のシステムを示す。
図3に示すシステムは、ワークフロー定義302、ページ構造定義304、インプリメンテーション関数ライブラリ306、インプリメンテーションフレームワークプロパティ308、インプリメンテーションフレームワーク構成310、フレームワークモジュール312、自動化ツール314、フレームワークインターフェイス316、パーサ318、レポートエンジン320、実行エンジン322、ハイブリッドスクリプトパーサ324、自動化ツール固有パーサ326、ランタイムスクリプトジェネレータ328、外部テストデータ330、共通関数ライブラリ332、インプリメンテーションスイートファイル334、ウェブ自動化ツール336、テスト実行モジュール338、スイート結果340、およびテスト結果342を含む。いくつかの実施形態では、
図3に示すシステムのコンポーネントを使用して、企業ウェブアプリケーション(たとえば企業ウェブサイト)および/または企業ウェブアプリケーションの異なるバージョンに対してカスタマイズされた自動化されたテストを実現することができる。
【0047】
たとえば、
図4A、
図4B、
図5A、および
図5Bは、企業ウェブアプリケーションのバージョンを示す。
図4Aのユーザインターフェイス402は、航空便を予約するために使用される第1の航空会社ウェブアプリケーションのためのランディングページを示し、
図5Aのユーザインターフェイス502は、航空便を予約するために使用される第2の航空会社ウェブアプリケーションのためのランディングページを示す。たとえば、ユーザーインターフェイス402および502は、図示されたウェブ要素に入力されたパラメータを使用して航空便を検索するために使用され得る。同様に、
図4Bのユーザインターフェイス406は、第1の航空会社ウェブアプリケーションのための航空便結果ページを示し、
図5Bのユーザインターフェイス506は、第2の航空会社ウェブアプリケーションのための航空便結果ページを示す。
【0048】
いくつかの実施形態では、第1の航空会社ウェブアプリケーションおよび第2の航空会社ウェブアプリケーションは、共通の航空会社ウェブアプリケーションの異なる変形であり得る。たとえば、ウェブアプリケーションプロバイダ/ホストは、カスタマイズすることができる共通の航空会社ウェブアプリケーションを維持することができ、第1および第2の航空会社ウェブアプリケーションは、この共通の航空会社ウェブアプリケーションの、異なるカスタマイズされたバージョンとすることができる。しかしながら、これは単なる例であり、第1の航空会社ウェブアプリケーションおよび第2の航空会社ウェブアプリケーションは、この共通性を共有しなくてもよい(たとえば、共通のウェブアプリケーションを共有しなくてもよい)。実施形態は、フレームワークが、これら2つのカスタマイズされた企業アプリケーションに対して、カスタマイズされた自動化されたテストを効率的に実現できる方法を示す。
【0049】
図4Aのユーザインターフェイス402は、デフォルトで「航空便」タブが有効化される例示的なランディングページを示す。この例では、片道/往復を選択するラジオボタンがあり、デフォルトではそれは片道に設定され、6つのフィールド、すなわち、出発地(「FROM」)、到着地(「TO」)、ウェブ要素404到着日、乗客、および通貨がある。この例では、「乗客」フィールドはデフォルトで「大人1人」に設定され、「通貨」フィールドはデフォルトで「INR」に設定される。検索アイコンがクリックされると、企業ウェブアプリケーションは、マッチする基準に基づいて航空便を検索する。
図4Bのユーザインターフェイス406において、ユーザは、航空便名および航空便クラスを選択し、「継続」をクリックして乗客詳細ページに到達することができる。
【0050】
図5Aのユーザインターフェイス502は、デフォルトで「航空便を予約」が表示されるランディングページを示す。この例では、(
図4Aのユーザインターフェイス402に示される2つのラジオボタンの代わりに)3つのラジオボタンである片道/往復/複数都市があり、片道がデフォルトで設定される。
図4Aのユーザーインターフェイス402と同様に、ユーザーインターフェイス502は、6つのフィールド、すなわち、出発都市、到着都市、乗客、出発日および通貨を有する。しかしながら、いくつかの変更(たとえばカスタマイゼーション変更)があり、それは、1つのインプリメンテーションのために書かれた典型的な自動化スクリプトが他のインプリメンテーションのために成功裏に実行されることを可能にしないであろう(そして、場合によっては、その変形のためのスクリプトは白紙の状態から書かれるであろう)。たとえば、
図4Aのユーザインターフェイス402を
図5Aのユーザインターフェイス502と比較すると、以下の変形が見られる:
・「乗客」フィールドは、「出発日」フィールドの前に表示される。
【0051】
・データが1つのフィールドに入力された瞬間に、自動的に次のフィールドの内容が下に示されるように表示される。
【0052】
・ウェブ要素の種類の差がある(たとえば、ユーザインターフェイス402の乗客フィールドは、単純な単一の選択ドロップダウンであるが、ユーザインターフェイス502では、それはウィジェット504によって示されるように、複雑なウィジェットである)。
【0053】
・要素の内部DOMプロパティも異なり得る。たとえば、ユーザインターフェイス402の場合、ウェブ要素は、「id」属性を使用して識別され得る。一方、ユーザインターフェイス502の場合、ウェブ要素の多くは、「xpath」属性を使用して識別することができる。
【0054】
図4Bのユーザインターフェイス406と同様に、
図5Bのユーザインターフェイス506においては、ユーザは、「航空便」名および「航空便」クラスを選択し、「継続」をクリックして乗客詳細ページに到達することができる。実施形態は、
図3に示すシステムの要素を使用して、ウェブアプリケーションのこれらの変形に対して、カスタマイズされた自動化テストを実施する。
【0055】
いくつかの実施形態では、ワークフロー定義302は、企業ウェブアプリケーションについてテストケース/ワークフローを共に生成する一連のステップであり得る、1つ以上のワークフローを定義する。
図6Aは、例示的なワークフロー定義602を示す。
【0056】
いくつかの実施形態では、企業ウェブアプリケーションの各カスタマイズされたバージョンは、ワークフロー定義602のそれ自体のバージョンを有するであろう(定義のいくつかを共有してもよい)。このファイル(たとえば、メタデータ、マークアップ言語、および/またはXMLファイル)は、テストケースに対する機能ワークフローの詳細を、各ワークフローに関与するステップと共に定義する。
【0057】
いくつかの実施形態では、ワークフロー定義602内の各ステップタグは、「action_method」と名付けられた属性を有し、それは、ステップを実行するために呼び出される関数の相対名を列挙する。関数がとる詳細な引数は、本明細書でさらに開示されるように、インプリメンテーションに固有の関数定義に列挙することができる。「action_on_elem」属性は、アクションが実行されるべきウェブ要素を指す別の属性である。この例では、ウェブ要素は、用語体系において、<page>.<section>.<element name>として列挙されている。
【0058】
いくつかの実施形態では、ウェブ要素に関する詳細は、本明細書に開示されるように、インプリメンテーションに固有のページ構造定義において見出すことができる。「desc」属性は、ステップの記述を列挙することができ、それは、ウェブインターフェイスで表示することができる(たとえばハイブリッドスクリプトを作成するための使用)。ワークフロー定義602において列挙される機能は、本明細書に開示されるように、ユーザがハイブリッドスクリプトを作成するために選択することができるステップとして、フレームワークウェブインターフェイスに表示され得る。
【0059】
図6Bは、航空便を検索するための例示的なワークフロー604を示す。たとえば、ワークフロー604は、
図6Aのワークフロー定義602の一部、すなわち、「Search One Way Flight for One Passenger Without Selecting any addon(アドオンを選択せずに1人の乗客のための片道航空便を検索)」ワークフローとすることができる。この例では、7つのステップが列挙されている:
ステップ1:旅行タイプのオプション「片道または往復(one way or round trip)」を選択する
ステップ2:飛行出発(「From」)地を選択/入力する
ステップ3:飛行到着(「To」)地を選択/入力する
ステップ4:ウェブカレンダーから出発日を選択する
ステップ5:搭乗乗客数を選択する
ステップ6:航空券を購入するために使用される通貨を選択する
ステップ7:航空便検索ボタンをクリックして、これらのパラメータに基づく利用可能な航空便のリストを得る。
【0060】
図6Cは、ページ構造定義606(たとえば
図3のページ構造定義304)を示す。ページ構造定義606(たとえば、メタデータ、マークアップ言語、および/またはXMLファイル)は、(たとえば、カスタマイズされた自動化されたテストがナビゲーション、アクション、およびアサーションを行う)カスタマイズされた企業ウェブアプリケーション上のウェブ要素を定義することができる。この例では、要素は、ウェブページおよびセクションを使用して構造化される。
【0061】
いくつかの実施形態では、各変形(たとえば、カスタマイズされたインプリメンテーション)は、ページ構造定義606のそれ自体のバージョンを含むことができる。ウェブ要素は、一意的であり得る「名称」属性を有することができ、それは、いくつかの例では、ワークフロー定義ファイルおよび/または関数定義ファイルによって参照され得る。例示の「locator_type」属性は、ウェブ要素をページ内で一意に識別できる、ウェブ要素のDOMプロパティを定義することができる。例示の「locator_value」属性は、「locator_type」属性の値を列挙することができる。
【0062】
自動化されたカスタマイズされたテストを実現する際に参照されるウェブ要素について、ハイブリッドスクリプトジェネレータは、ページ構造定義606を参照して、ウェブ要素の詳細を得ることができる。次いで、これは、識別の目的のために、基本的な自動化ツールに渡され得る。いくつかの実施形態では、新しい自動化ツール(たとえば、要素を識別するためにDOMの一意のプロパティを探すもの)が想定される場合、このプロパティを属性としてページ構造定義606に追加することができ、対応する値を提供することができる。
【0063】
図6Dは、例示的な関数定義610(たとえば
図3の関数定義306)を示す。関数定義610(たとえば、メタデータ、マークアップ言語、および/またはXMLファイル)は、(たとえば、テストの実行におけるワークフローステップによって呼び出される)自動化されたテストのカスタマイズされたバージョンを実現するために使用されるインプリメンテーション固有の関数を定義することができる。たとえば、アクション、ナビゲーション、およびアサーションを関数に変換することができ、その詳細を関数定義610に定義することができる。たとえば、関数612は、関数select_depart_dateを定義する。
【0064】
いくつかの実施形態では、関数はまた、識別、追加、および/または修正のために、ページおよびセクションに構造化され得る。この例では、関数タグは、関数の名称とすることができる「desc_name」属性を有することができる。例示の「type」属性は、関数のタイプ、ナビゲーション/アサーションなどを識別することができる。例示の「signature」属性は、関数が受け入れる引数を指定することができる。たとえば、関数定義608における「ナビゲーション」関数に対するシグネチャ「select_depart_date」を考える。
signature="select_depart_date('ps:landing_page.default.depart','ps:landing_page.default.depart_calendar_month_label','ps:landing_page.default.depart_calendar_year_label','ps:landing_page.default.depart_calendar_table','ps:landing_page.default.depart_calendar_next_month','data_user_form:fw:search_one_way_flight.deptart_date')
【0065】
この例では、最初の引数は、'ps:landing_page.default.depart'である。ここで、「ps」は「ページ構造」を表すことができ、「ps:landing_page.default.depart」は、ウェブ要素の一意の識別子とすることができる。ウェブ要素landing_page.default.depart'の詳細は、ページ構造定義(たとえば
図6Cのページ構造定義606)から得ることができ、それは以下のようになるであろう:
<element elem_name="depart" locator_type="id"
locator_value="ctl00_mainContent_view_date1" img=""
visible_label="DEPART DATE" type="static"
action_supported="click,calendar_select()"
default_visibility="true"></element>
【0066】
この例では、引数'data_user_form: fw:search_one_way_flight.deptart_date' は、2つの部分を有している。第1の部分「data_user_form」は、この関数がフレームワークウェブページから(たとえば本明細書で開示するように、ウィジェット「Create Automated Test(自動化されたテストを作成)」から)テストデータを受け入れることを示すことができる。この例では、第2の部分「fw:search_one_way_flight.deptart_date」において、「fw」はワークフロー定義(たとえば
図6Aのワークフロー定義602)を指し、その後のストリングは、(
図6Aのワークフロー定義602に示されるように)ワークフロー定義における関数名「search_one_way_flight」の下で見出されるようなウェブ要素「depart_date」の名称を示すことができる。
【0067】
フレームワークの実施形態は、開示された定義(たとえば、ワークフロー定義、ページ構造定義、および関数定義)に基づいてハイブリッドスクリプトを構成するために使用することができる、フォーム、ウェブページ、ウェブサイト、ウェブアプリケーション、ダッシュボード、または
図3のフレームワークインターフェイス316などの任意の他の好適なウェブエンティティを含む。
図7A、
図7B、
図7C、および
図7Dは、カスタマイズされた自動化されたテストのためのハイブリッドスクリプト生成を構成するためのユーザインターフェイスを示す。ユーザインターフェイス702は、ワークフローを選択するために使用されるウェブ要素704と、選択されたワークフローのステップをウェブ要素として表示することができるウェブ要素706と、選択されたワークフローのためのテスト出発日を入力するための編集可能フィールドとすることができるウェブ要素708とを含むことができる。
【0068】
実施形態は、カスタマイズされた自動化されたテスト定義およびユーザインターフェイスを通じて受信された入力に従ってハイブリッドスクリプトを構成および作成するためのウェブインターフェイスとしてのユーザインターフェイス702を含む。いくつかの実施形態では、カスタマイズされた自動化されたテスト名、URL、およびハイブリッドスクリプトパスが、インターフェイスを生成するために提供され得る。
【0069】
図7Bは、ワークフロー定義(たとえば
図6Aのワークフロー定義602)からのワークフローによってポピュレートされるドロップダウンメニューとして示されているウェブ要素704を示す。たとえば、ウェブフレームワークは、自動的に、対応するワークフロー定義を取り出し、ファイルを解析して、ワークフローを「ビジネス使用例」ドロップダウンにおいてオプションとして列挙することができる。ワークフローを選択した後、(ワークフロー定義で定義される)ステップをユーザインターフェイス702に表示することができる。いくつかの実施形態では、ウェブインターフェイスは、選択されたワークフローの関連するステップを検索/表示するためにAJAX呼び出しを実行することができる。たとえば、
図7Aに戻ると、ウェブ要素706は、選択されたワークフローのステップ(たとえば、Search One Way Flight for One Passenger Without Selecting any addon(アドオンを選択せずに1人の乗客のための片道航空便を検索))を、別個のウェブ要素として表示する。
【0070】
いくつかの実施形態では、ステップは、ワークフロー定義によって表される順序で表示することができ、フィールドのいくつかは、フィールドに対応するステップが入力を受信するステップである場合に編集可能である。ユーザインターフェイス702のユーザによって入力データが提供されないステップについては、編集不可能なウェブ要素が表示される。ユーザが入力データを入力することが予想されるステップについては、ウェブ要素708のような編集可能なウェブ要素が表示される。たとえば、「action_method」関数が「data_user_form」で始まる引数を有するステップが入力/表示されるとき、ハイブリッドスクリプトに対するユーザ入力を捕捉するために、ユーザインターフェイス702において編集ボックスを動的にレンダリングすることができる。
【0071】
たとえば、インターフェイス702は、選択されたワークフローステップに対応する7つの例示的なフィールドを示す。これらの7つは、
図7Cのウェブ要素706によって表示される。これらの7つのフィールドのうち、「Click on One Way(片道をクリック)」および「Click on Search(検索をクリック)」は、読み出し専用として示されている。残りの5つのフィールド、つまり「From(出発地)」、「To(到着地)」、「Departure Date(出発日)」、「Number of Passengers(乗客数)」、および「Currency(通貨)」は、ユーザがデータを入力することを可能にする。これらのフィールドには、「MUMBAI」、「DELHI」、「29-September-2018」、および「INR」という値が入力される。この例では、乗客フィールドに値は入力されず、なぜならば、テストされている対応する企業ウェブアプリケーションはデフォルトの乗客を自動的に1として選択するからである。
【0072】
一実施形態では、ハイブリッドスクリプトの生成のためにワークフローのステップを構成することは、ハイブリッドスクリプト生成のステップと見なすことができる。第1の選択されたワークフローが構成されると、ユーザインターフェイス702の「ステップ追加」ボタンを使用して、別のワークフローを(たとえば、
図7Bに示すようなドロップダウンメニューから)選択することができる。
図7Dは、第2の選択されたワークフロー、すなわち「Select a Flight based on Flight Number and Class(航空便名およびクラスに基づいて航空便を選択する)」、のためのステップを示す。
【0073】
図7Dのウェブ要素710は、4つのフィールド(たとえば、
図6Aのワークフロー定義602において選択されたワークフローのために定義される4つのステップに対応する)を示す。この例では、最初の2つのフィールドは、航空便名および航空便クラスを入力するために使用することができ、残りの2つのフィールドは編集可能ではない。
図7A、
図7B、
図7C、および
図7Dに示す上述の一連のアクションを使用して、ハイブリッドスクリプト生成コンポーネントのために、(たとえば、2つの選択されたワークフロー、およびそれらワークフローのステップに従って対応する入力情報に対応する)2つのスクリプトステップを作成することができる。
【0074】
いくつかの実施形態では、インターフェイス702を使用してハイブリッドスクリプトを構成した後、ハイブリッドスクリプトをウェブフレームワークによって生成することができる。
図8は、一実施形態による生成されたハイブリッドスクリプトを示す。たとえば、ユーザインターフェイス802は、ユーザインターフェイス702を使用して構成されるカスタマイズ可能な自動化されたテスト(たとえば、選択されたワークフローおよびそれらワークフローの構成されたステップ)の表現を含むことができるハイブリッドスクリプト804を表示する。
【0075】
いくつかの実施形態では、ハイブリッドスクリプトジェネレータ/パーサ(たとえば
図3のハイブリッドスクリプトパーサ324)は、関連する定義(たとえば、
図6Aのワークフロー定義602、
図6Cのページ構造定義606、および
図6Dの関数定義610)を解析して、ハイブリッドスクリプトコンテンツを生成することができる。たとえば、ハイブリッドスクリプトパーサ324は、インプリメンテーション固有の定義ファイルを解析し、ハイブリッドスクリプト(たとえば、ウェブインターフェイスからユーザによって選択されたデータおよびフレームワーク構成に基づく)を生成する役割を果たし得る。ハイブリッドスクリプトは、企業パッケージウェブアプリケーションのカスタマイズされたインプリメンテーションに固有のものとして生成される。
【0076】
いくつかの実施形態では、ハイブリッドスクリプトパーサは、一意のパーサアルゴリズム(たとえばJAVA(登録商標)を使用して開発される)とすることができる。たとえば、ハイブリッドスクリプトパーサは、インプリメンテーションに固有のハイブリッドスクリプトを生成することができる。いくつかの実施形態では、ハイブリッドスクリプトパーサは、定義ファイル(たとえば、
図6Aのワークフロー定義602、
図6Cのページ構造定義606、および
図6Dの関数定義610)を解析することができる。これらの定義は、フレームワークがインプリメンテーションの包括的なビューを展開するために相互参照され得るように設計され得る。たとえば、相互参照は、タグおよび属性(たとえばマークアップ定義ファイルの)を使用して達成され得る。
【0077】
いくつかの実施形態では、ハイブリッドスクリプト生成は、(たとえば
図7A、
図7B、
図7C、および
図7Dに示されるように)ウェブインターフェイスを使用して実行される。たとえば、ユーザが(たとえば
図7Bの要素704を使用して)ワークフローを選択すると、ハイブリッドスクリプトパーサを開始することができる。ハイブリッドスクリプトパーサは、ワークフロー定義を解析して、選択されたワークフローのステップを検索することができる。ステップで遭遇する要素の詳細を得るために、それは、ページ構造定義を解析することができる。次いで、アクション(たとえば定義内のaction_method)のために、パーサは、関数定義を参照して、詳細な関数呼び出しを得ることができる。
【0078】
図8に示す例において、「EXEC_LINE」というプレフィックスは、スクリプトを実現する間に行が実行されるかどうかを示す。デフォルトでは、ハイブリッドスクリプトコンテンツにおける行は、「TRUE」に設定することができる。「FALSE」に設定されている場合、対応する行は、実行時にスキップされる。
【0079】
ハイブリッドスクリプト804は、標準的なメソッドであり、(たとえば文言「default_」で開始する)インプリメンテーションにわたって使用することができるメソッド呼び出しを含む。たとえば、複数のカスタマイゼーション/インプリメンテーションにわたって機能することができる共通のライブラリ(たとえば共通関数ライブラリ332)を維持することができる。たとえば、これらの一般的なメソッドは、関数定義(たとえば
図6Dの関数定義610)で定義される特定のメソッドと異なり得る。いくつかの実施形態では、関数定義は別個のものであり、個別のカスタマイゼーションが、カスタマイズされるメソッド/関数を含むように、維持される。
【0080】
たとえば、ハイブリッドスクリプト804において、行806は、関数定義において、このハイブリッドスクリプト/カスタマイズされた自動化されたテストに関連付けられる特定のカスタマイゼーションのために定義された特定の関数である関数「select depart date(出発日選択)」を含む。ハイブリッドスクリプト804は、異なる企業ウェブアプリケーション/カスタマイゼーションについて異なり得る関数「select_preferred_flight(好ましい航空便を選択)」も含む。たとえば、
図4Aおよび
図5Aは、異なる企業ウェブアプリケーションを示し、したがって、各々は、ハイブリッドスクリプト(および後続のランタイムスクリプト)を生成するべく解析される定義のそれ自体のセットを有し得る。したがって、これらの2つのインプリメンテーションは、あるハイブリッドスクリプトにおいて同じメソッド名を使用し得るが、実行時においては、インプリメンテーション/カスタマイゼーションに対応する関数ライブラリからの「select_preferred_flight」メソッドが使用されることになる。
【0081】
いくつかの実施形態においては、'data_user_form'を含む関数呼び出しにおけるパラメータについては、フレームワークは、(たとえば
図7Aの要素706および708のような)ウェブインターフェイスフォームからのユーザ入力データを期待する。いくつかの実施形態では、この解析機能は、ウェブインターフェイスにおいて入力される様々なワークフローステップのためにハイブリッドスクリプトパーサによって繰り返されることができる。次いで、ハイブリッドスクリプトパーサは、カスタムテキストベースの用語体系(たとえば
図8のハイブリッドスクリプト804によって例示される)を生成することができる。
【0082】
一部の実施形態では、ユーザが手動でデータを入力することが予想されるフォームの場合、このデータは、外部のテストデータレポジトリ(たとえば
図3の外部のテストデータ330)から取得することができる。この場合、データを入力する代わりに、‘db:<sql_file_name>’のような用語体系を入力することができ、ハイブリッドスクリプトパーサはそれを解釈することができる。たとえば、ハイブリッドスクリプトパーサは、データベースに対するクエリ(たとえばSQLクエリ)を実行することを決定することができ、結果セットは、使用されるべきデータ(たとえばフォーム値)とすることができる。同様の構成が、他のフォーマット(たとえば、Excelワークシートなどのワークシート、XMLフォーマットなど)からデータを取り出すためにも可能である。
【0083】
いくつかの実施形態では、各インプリメンテーション/カスタマイゼーションに対して、インプリメンテーション固有のフレームワーク構成ファイル(たとえば
図3のインプリメンテーションフレームワーク構成310)がある。
図9Aは、例示的なインプリメンテーションフレームワーク構成902を示す。たとえば、インプリメンテーションフレームワーク構成902は、実行されるべきスイート、使用されるべき自動化ツールの詳細等を含むことができる。表示されるように、図示された例における自動化ツール(たとえば
図3の自動化ツール314)はSeleniumであるが、フレームワークは基本的な自動化ツールと緩く統合されるので、任意のオープンソース、市販、または任意の他の好適な自動化ツールを定義することができる。例示の「suite_to_exec」タグは、インプリメンテーションに固有の、実行するべきスイートの詳細を有する。
【0084】
いくつかの実施形態では、各インプリメンテーション/カスタマイゼーションに対して、インプリメンテーション固有のフレームワークパラメータファイル(たとえば
図3のインプリメンテーションフレームワークプロパティ308)がある。
図9Bは、例示的なインプリメンテーションフレームワークプロパティ904を示す。たとえば、インプリメンテーションフレームワークプロパティ904は、定義/カスタマイゼーションがサポートするであろうインプリメンテーションに関する詳細を含むことができる。フレームワークは、インプリメンテーションに固有の詳細について、このファイルを参照することが可能である。たとえば、
図4Aおよび
図5Aに示す企業ウェブアプリケーションは、両方ともインプリメンテーションフレームワークプロパティ904に列挙されている。
図9Cは、例示的なインプリメンテーションスイートファイル334を示す。インプリメンテーションスイートファイル334は、実行されるべきハイブリッドスクリプトの詳細を含むことができる。複数のスクリプトをこのファイルに列挙することができる。
【0085】
再び
図3を参照すると、生成されたハイブリッドスクリプトは、次いで、(たとえば、自動化ツール固有パーサ326およびランタイムスクリプトジェネレータ328によって、)ランタイムスクリプトを生成するよう処理され得る。たとえば、自動化ツール固有パーサ326は、自動化ツール固有ネイティブメソッドおよびハイブリッドスクリプトを解析して、ランタイムスクリプトジェネレータによって使用されるべき中間フォーマットを生成する。ランタイムスクリプトジェネレータ328は、(自動化ツール固有パーサ326によって渡される)中間フォーマットを、関数ライブラリに定義されるカスタムビジネス固有自動化メソッドと共に取り、特定の自動化ツールを使用して実行することができるランタイムスクリプトを生成する。
【0086】
幾つかの実施形態では、自動化ツール固有パーサ326は、関数定義(たとえば
図6Dの関数定義610)とともに動作して、中間ランタイムスクリプトフォーマットを創出する。たとえば、ハイブリッドスクリプトは、「default_click」のようなメソッド名を有することができ、フレームワークは、プレフィックス「default」が、任意の自動化ツールの標準的なネイティブクリックメソッドがこのアクションのために使用されるべきであることを示す旨を理解することができる。次いで、自動化ツール固有パーサ326は、このdefault_clickメソッドをツール固有クリックフォーマットに変換することができる。自動化ツールがSeleniumである例では、ハイブリッドスクリプト行:
“default_click(id:ct100_mainContent_rbtnl_Trip_0”は、Selenium固有のコード“driver.findElement(By.id(“ct100_mainContent_rbtnl_Trip_0”)).click();”に変換することができる。
【0087】
いくつかの実施形態では、メソッドがネイティブなメソッドでない場合、フレームワークは、関数定義を参照して、メソッドが宣言されるかどうかを判断することができ、それをランタイム実行のために使用する。この情報を使用して、自動化ツール固有パーサ326は、特定のツールを使用して実行されるべき、プログラミング言語(たとえば自動化ツールがサポートする言語)に固有の構造化されたスクリプトを生成することができる。いくつかの実施形態では、ランタイムスクリプトジェネレータは、スクリプトが実行される前に、スクリプト上における最後のレベルのカスタマイゼーションおよび最後のレベルのエンフォースメントを可能にする。
【0088】
再び
図3を参照すると、いくつかの実施形態では、自動化ツール314および実行エンジン322は、(たとえば、ウェブ自動化ツール336およびテスト実行モジュール338を使用して、)生成されたランタイムスクリプトを通信および実行して、カスタマイズされた自動化されたテストの実行から結果を生成する。結果は、スイート結果、個々のワークフロー結果、および/またはワークフロー結果内の個々のステップを含むことができ、結果は、関連するステータス(たとえば、Pass, Fail, Skipなど)を示すことができる。いくつかの実施形態では、結果は、ウェブフォーマット(たとえばHTML)で処理およびレンダリングすることができるファイル(たとえばマークアップ言語および/またはXMLファイル)として(たとえば自動化ツールから)生成することができる。
【0089】
たとえば、
図9Cは、例示的なスイート結果906(たとえば
図3のスイート結果340)を示す。スイート結果906は、スイートレベルでの実行ステータスを示す。たとえば、スイート実行ステータスは、スイート内のすべてのテストが合格であった場合には「PASS」である。実施形態は、より粒状のレベルでの結果(たとえばテスト結果342)も含む。
【0090】
たとえば、
図9Dは、例示的なテスト結果908を示す。テスト結果908は、(たとえばワークフローの)各ステップおよびイベントレベル(たとえばステップ内のサブステップ)における実行ステータスを示す。たとえば、イベントは、関数ライブラリコードレベルで指定することができる。いくつかの実施形態では、ステップにおけるすべてのイベントが合格すると、ステップ実行ステータスは「PASS」にセットされる。幾つかの実施形態では、テスト実行ステータスは、すべてのステップ実行ステータス(スキップされたステップを除く)が「PASS」にセットされる場合、「PASS」にセットされる。
【0091】
いくつかの実施形態では、フレームワークウェブレポートエンジン(たとえば
図3のレポートエンジン320)は、スイート結果およびテスト結果を解析し、それらをHTMLフォーマットで表示する。いくつかの実施形態では、フレームワークウェブ層は、Linux(登録商標)プラットフォームで実現され得、テスト実行は、Windowsプラットフォームで生じ得る。ここで、スイート結果ファイルおよびテスト結果ファイルは、Windowsで生成することができ、次いで、(たとえば、フレームワークウェブインターフェイス「Upload Report(レポートをアップロード)」を使用して)Linuxにアップロードすることができる。たとえば、レポートがアップロードされると、「View Report(レポートを閲覧)」をクリックすることによって結果を閲覧することができる。一部の実施形態では、「Enter Results File Path(結果ファイルパスを入力)」フィールドにおいて、レポートがアップロードされるLinuxフォルダが指定される。レポートエンジンは、フォルダを確認し、結果ファイル(たとえばXMLファイル)を識別することができる。
【0092】
図10Aは、スイートレベル結果ウェブページを示す。ユーザインターフェイス1002は、スイート結果1004(たとえば表示されたテストに対する合格)を示す。図示したラジオボタンは、結果をさらに探索するために選択することができる。
図10Bは、詳細なテストレベル結果ウェブページを示す。ユーザインターフェイス1006は、(たとえば、テストに使用されたワークフローについて)関連するステップに対する結果を表示するウェブ要素1008を含み、これらのステップのうちの1つ以上は、ウェブ要素1010が選択されたステップ内でイベントレベル実行ステータスを示すように選択され得る。
【0093】
図10Cは、不合格ステータスを有するテスト結果の例を示す。ユーザインターフェイス1012は、(たとえば、ステップ8のselect preferred flight(好ましい航空便を選択)において)失敗したステータスを有する複数のステップを含むウェブ要素1014を含む。さらに、ログファイルは、失敗が発生した理由をさらに示すことができる。たとえば、時間通りのページのレンダリングの失敗に起因して、当該失敗がそのステップおよび後続のステップの失敗という結果を生じさせる。
【0094】
いくつかの実施形態では、フレームワークは、どのようなアクションが選択されるかに依って、事前要件アクティビティを自動的に実行するように構成することができる。これは、(たとえば関数ライブラリXMLにおける)parent_page属性およびdependent_action属性を介して達成することができる。たとえば、(たとえば、ハイブリッドスクリプトを生成するために使用される)ウェブインターフェイスから、航空便を検索するステップ詳細を追加する代わりに、ユーザが検索結果から航空便を選択するためのステップ詳細を追加する場合、ハイブリッドスクリプトにおいては、以下の例示的な行を生成することができる:
“EXEC_LINE=TRUE##select_preferred_flight(id:availabilityTable0,xpath:ControlGroupSelectView_AvailabilityInputSelectionView_RadioButtonMkt1Fare,DA 158,DAMAX)”
この行を解析するとき、フレームワークは、関数ライブラリ定義を参照することができ、そこにおいて、select_preferred_flightに対する従属アクションが(
図6Dに示されるように)「fw:search_one_way_flight」であることを見出すことができる。いくつかの実施形態では、フレームワークは、何らかの前提条件アクションが実行されるべきであることを認識し、そのために、フレームワークは、(
図6Bに示されるように、)機能ワークフロー定義を参照することができる。たとえば、ワークフロー定義は、search_one_way_flight(片道航空便を検索)ワークフローのステップを含むことができ、これらは、「select_preferred_flight」アクションを呼び出す前の定義に含まれるデフォルトデータとともに実行され得る。
【0095】
【0096】
これらのカスタマイズされたテストの実施形態は、たとえば、フレームワークの改善された設計のため、同様であり得る。しかしながら、各カスタマイズされた自動化されたテストは、定義(たとえば、ワークフロー定義、ページ構造定義、および関数定義)のそれ自体のセットを有することができる。これらの定義に存在するカスタマイゼーションは、ハイブリッドスクリプト、関数ライブラリ、および最終的には所与のインプリメンテーションにカスタマイズされるランタイムスクリプトを生成することができる。
【0097】
たとえば、
図11Aは、カスタマイズされた自動化されたテストに固有のインプリメンテーション名、URL、およびスクリプトパスを指定するのに使用することができるユーザインターフェイス1102を示す。
図11Bのユーザインターフェイス1104は、選択されたワークフローのステップ、すなわち、「Search One Way Flight for One Passenger Without Selecting any addon(アドオンを選択せずに1人の乗客のための片道航空便を検索)」(たとえば、先の企業ウェブアプリケーションに対するカスタマイズされたテストを参照して論じられたワークフローと同様のワークフロー)を示す。
【0098】
しかしながら、ウェブ要素1106は、現在のワークフローのためのステップを示し、この企業ウェブアプリケーションのための定義(たとえばワークフロー定義)に基づいて、乗客数が入力される。実際、ステップは、ワークフロー定義の差に基づいて、この同様のワークフローの以前のインプリメンテーションとは異なるように見えるかもしれない。
図11Cは、ユーザ構成から生じるハイブリッドスクリプト1108および1010を示す。
【0099】
いくつかの実施形態では、たとえば、生成されたランタイムスクリプトを調整し、自動化されたテストの性能を変更するために、生成されたハイブリッドスクリプトに対して編集を行うことができる。一例では、行1(デフォルトとして、ラジオボタン選択はOne Way(片道)である)および行6(通貨もまたデフォルトでINRに設定される)をスキップすることができる。これらの2つのステップをスキップするために、ハイブリッドスクリプト1108に示すように、EXEC_LINEフラグを「FALSE」にセットすることができる。
【0100】
いくつかの実施形態では、デフォルト設定に基づいて、次の日の航空便利用可能性を確認するテストのシナリオが要求され得る。この場合、ハイブリッドスクリプトは、ハイブリッドスクリプト1110によって示されるように、ステップ5についてEXEC_LINE=FALSEをセットするように修正することができる。
図11Dは、この修正のテストレベルの結果を示す。ユーザインターフェイス1112に表示されたレポートから明らかなように、テストは合格であり、EXEC_LINEがFALSEにセットされたので、ステップ5およびステップ6はスキップされる。
【0101】
図12は、例示的な実施形態によるカスタマイズ可能な企業自動化テストフレームワークを実施するためのフロー図を示す。一実施形態では、
図12の機能は、メモリまたは他のコンピュータ可読もしくは有形媒体に格納されプロセッサによって実行されるソフトウェアによって実現される。他の実施形態では、各機能は、(たとえば、特定用途向け集積回路(「ASIC(application specific integrated circuit)」)、プログラム可能ゲートアレイ(「PGA(programmable gate array)」)、フィールドプログラム可能ゲートアレイ(「FPGA(field programmable gate array)」)などの使用を介して)ハードウェアによって、またはハードウェアとソフトウェアとの任意の組み合わせによって、実行され得る。実施形態では、
図12の機能は、
図2のシステム200の1つ以上の要素によって実行することができる。
【0102】
1202において、企業ウェブサイトの自動化されたテストのためのワークフロー定義、ページ構造定義、および関数定義を受信する。たとえば、ワークフロー定義は、一連のステップを含む1つ以上のテストケースのための1つ以上のワークフローを定義することができ、ページ構造定義は、企業ウェブサイトの複数のウェブページを含むウェブ要素を定義することができ、関数定義は、1つ以上のワークフローのステップによって参照される企業ウェブサイト固有の関数を定義することができる。たとえば、ワークフロー定義、ページ構造定義、および関数定義は、XML文書などのマークアップ言語文書とすることができる。一実施形態では、1つ以上のワークフローのステップは、異なる企業ウェブサイト間で共有されるデフォルト関数と、関数定義において定義される企業ウェブサイト固有の関数であって、関数定義に関連付けられる企業ウェブサイトに固有の、企業ウェブサイト固有の関数とを含む。
【0103】
1204において、定義に基づいてユーザインターフェイスを表示することができる。たとえば、ハイブリッドスクリプトの生成を構成するためのユーザインターフェイスを表示することができる。いくつかの実施形態では、企業ウェブサイトのために、カスタマイズされた自動化されたテストが生成され得るように、1つ以上のワークフローが選択され得る。
【0104】
1206において、ユーザから、ユーザインターフェイスを介して、カスタマイズされた自動化されたテストのために、入力を受信することができる。一実施形態では、ユーザは、テストのために1つ以上のワークフローを選択することができる。1つ以上のワークフローのためのステップは、ステップに対応するフィールドにおいて入力値を受け取ることなどによって構成することができ、それらの値はテストの実行において使用される。
【0105】
一実施形態では、ワークフロー定義によって構成される、選択されたワークフローに対するユーザインターフェイスを表示することができ、複数のインターフェイス要素を、選択されたワークフローに対するステップに基づいて、構成されたユーザインターフェイスに動的に表示することができる。たとえば、企業ウェブサイト固有の関数のうちの1つの関数によって使用される入力データをユーザから受信することができ、自動化ツールが1つ以上のワークフローのステップを実施するとき、ステップのうちの少なくとも1つを実施することは、当該1つの企業ウェブサイト固有の関数を呼び出すことと、入力データを使用して、自動化されたテストについての結果を生成することとを含む。一実施形態では、ユーザインターフェイス上に表示される1つのステップのためのユーザインターフェイス要素が、ユーザから入力データを受信するように構成される。一実施形態では、ユーザインターフェイスは、ワークフロー定義のために、非同期JavaScriptおよびXML(AJAX)呼び出しに基づいて構成される。
【0106】
1208において、ハイブリッドスクリプトパーサは、ワークフロー定義、ページ構造定義、および関数定義を解析して、自動化されたテストのためのハイブリッドスクリプトを生成する。たとえば、ハイブリッドスクリプトは、ユーザインターフェイスを介して受信されたワークフロー選択および入力に基づいて生成することができる。一実施形態では、ハイブリッドスクリプトパーサによって生成されるハイブリッドスクリプトは、企業ウェブサイト固有の関数の1つおよび入力データを使用して1つのステップを実現する。
【0107】
一実施形態では、ハイブリッドスクリプトは、複数の自動化ツールパーサによって解析されることによって出力を生成するように構成され、各自動化ツールパーサは、異なる自動化ツールに関連付けられ、各自動化ツールパーサからの出力に基づくランタイムスクリプトは、異なる自動化ツールによって使用されることによって、自動化されたテストについての結果を生成するように構成される。
【0108】
一実施形態では、1つ以上のワークフローのステップは、異なる企業ウェブサイト間で共有されるデフォルト関数と、関数定義において定義される企業ウェブサイト固有の関数であって、関数定義に関連付けられる企業ウェブサイトに固有の、企業ウェブサイト固有の関数とを含む。この例では、ハイブリッドスクリプトは、異なる企業ウェブサイト間で共有されるデフォルト関数と、関数定義において定義される企業ウェブサイト固有の関数であって、関数定義に関連付けられる企業ウェブサイトに固有の、企業ウェブサイト固有の関数とを含み得る。
【0109】
1210において、生成されたハイブリッドスクリプトに対する編集を受信することができる。たとえば、ランタイムスクリプトおよび最終的には自動化されたテストの性能を変更する編集が、ハイブリッドスクリプトのために、ユーザインターフェイスを介して受信され得る。編集は、ワークフローの1つ以上のステップをスキップすることを示す、フラグへの編集を含むことができる。
【0110】
1212において、自動化ツールパーサは、ハイブリッドスクリプトを解析して、自動化ツールのための出力を生成することができる。一実施形態では、自動化ツールパーサによる解析は、編集されたハイブリッドスクリプトを解析して出力を生成することを含み得る。
【0111】
1214において、自動化ツールパーサからの出力に基づいて、自動化ツールによって実行されることにより、自動化されたテストの結果を生成するランタイムスクリプトを生成することができる。たとえば、自動化ツールは、企業ウェブサイトの複数のウェブページ上で1つ以上のワークフローのステップを実施して、自動化されたテストについての結果を生成することができる。
【0112】
一実施形態では、自動化ツールパーサからの出力に基づいてランタイムスクリプト生成することは、自動化ツールによって実行されることにより、自動化されたテストについての結果を生成するランタイムスクリプトを生成することを含み得、自動化ツールは、ハイブリッドスクリプトに対する編集に基づいて企業ウェブサイトの複数のウェブページ上で1つ以上のワークフローのステップを実現して、自動化されたテストについての結果を生成することができる。たとえば、編集されたハイブリッドスクリプトは、企業ウェブサイトのためのカスタマイズされた自動化されたテストをもたらすことができる。
【0113】
実施形態は、ウェブプレゼンス(たとえばウェブアプリケーションまたはウェブサイト)に対して自動化されたテストを実行する効率および柔軟性を改善するカスタマイズ可能な企業自動化テストフレームワークを実現する。たとえば、企業ウェブサイトのための定義を用いてハイブリッドスクリプトを生成することができ、ハイブリッドスクリプトを解析することによりランタイムスクリプトを生成することができ、ランタイムスクリプトを自動化ツールによって用いて、企業ウェブサイト上で、自動化されたテストを実施することができる。
【0114】
いくつかの実施形態では、定義は、ワークフロー定義、ページ構造定義、および関数定義を含むことができる。たとえば、ワークフロー定義は、テストのために実行されるべき一連のステップを含むワークフローを定義することができる。ページ構造定義は、企業ウェブサイトのウェブページのためのウェブ要素を定義することができる。関数定義は、企業ウェブサイトテストを実行するために使用される企業ウェブサイト固有の関数(たとえば、ワークフローのステップによって呼び出される関数)を定義することができる。いくつかの実施形態では、これらの定義は、マークアップ言語文書(たとえばXML文書)に格納される。
【0115】
実施形態は、(たとえばハイブリッドスクリプトパーサを使用して)定義を解析して、企業ウェブサイトテストのためのハイブリッドスクリプトを生成することができる。ハイブリッドスクリプトは、自動化されたテストのカスタマイズされたバージョン(たとえば、受信された定義に基づいてカスタマイズされる)を表すことができる。いくつかの実施形態では、ハイブリッドスクリプトは、次いで、自動化ツールパーサによって解析されることができる。たとえば、ハイブリッドスクリプトは、任意の数の自動化ツール(たとえば、当業者に利用可能なウェブプレゼンステスト自動化ツール)と協働するように構成することができる。所与の自動化ツールパーサは、特定の自動化ツールによって使用可能な出力を生成するように構成することができる。したがって、ハイブリッドスクリプトは、異なる自動化ツールパーサと組み合わせることができ、これらの様々な組み合わせを使用して、様々な異なる自動化ツールで、カスタマイズされたテストを実現することができる。
【0116】
一部の実施形態では、自動化ツールパーサの出力を用いて、ランタイムスクリプト(たとえば、カスタマイズされたテストを実施するよう自動化ツールパーサに関連付けられる自動化ツールによって使用される)を生成することができる。たとえば、ランタイムスクリプトは、自動化ツール(たとえばクラウドベースの自動化ツール)によって受信されることができ、次いで、自動化ツールは、企業ウェブサイト上でランタイムスクリプトにおいて表されるカスタマイズされたテストを実現する。この実現例はテスト結果を生成し、それらは、ユーザインターフェイスにおいて受信および/または表示することができる。たとえば、テスト結果は、ワークフロー定義において定義されたワークフローおよび/またはこれらのワークフローのうちの1つの個々のステップについてのステータス(たとえば、パス、フェイル、スキップ)を含むことができる。
【0117】
本明細書全体にわたって記載される本開示の特徴、構造、または特性は、1つ以上の実施形態において任意の好適な態様で組み合わせることができる。たとえば、本明細書全体を通して、「一実施形態」、「いくつかの実施形態」、「ある特定の実施形態」、「特定の実施形態」、または他の同様の文言の使用は、実施形態に関連して説明される特定の特徴、構造、または特性が、本開示の少なくとも1つの実施形態に含まれ得るという事実を指す。したがって、本明細書全体を通して、「一実施形態」、「いくつかの実施形態」、「ある特定の実施形態」、「特定の実施形態」または他の同様の文言の出現は、必ずしもすべてが実施形態の同じグループを指す必要はなく、記載された特徴、構造、または特性は、1つ以上の実施形態において任意の好適な方法で組み合わせられてもよい。
【0118】
当業者は、上記で論じた実施形態が、異なる順序のステップで、および/または開示されるものとは異なる構成の要素で実施され得ることを容易に理解するであろう。したがって、本開示は概説した実施形態を考慮するが、本開示の精神および範囲にとどまりながら、特定の修正、変形、および代替構成が明らかであることが当業者には明白であろう。したがって、本開示の範囲を判断するためには、特許請求の範囲を参照するべきである。