(57)【要約】      （修正有）【課題】アプリケーションを様々な動作環境において複数のテストケースを用いてテストするための低コスト、高スループットの自動マルチスレッド・テスティングプラットフォームを提供する。【解決手段】クラウド接続された自動テスティング（ＣＣＡＴ）は、クラウド・インフラストラクチャ上にホストされ、ＣＣＡＴへの入力は、スプレッドシートにおけるキーワード・エントリのような、人が読むことができるフォーマットに基づく。ＣＣＡＴは、それによって、テスタがＰｙｔｈｏｎのように高度に専門化されて用いるのが難しいコーディング言語を理解する必要性を低減する。【選択図】図１
2018139106.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
アプリケーションに係わる複数の独立したテストケースを備えるテストスイートを受信するステップと、
前記テストスイートから前記複数のテストケースに関するテストデータを識別するステップと、
前記テストスイートから前記複数のテストケースの各々に関して行われることになるテストステップを識別するステップと、
前記テストスイートから前記独立したテストケースを実行するための複数の異なる動作環境を識別するステップと、
前記複数の異なる動作環境のうちの１つにおける前記複数のテストケースのうちの１つの組み合わせごとに、
リモートテストドライバを備える独立したテストスレッドをインスタンス化するステップと、
前記独立したテストスレッドに関するスレッド固有のテストデータセットを作成するために前記独立したテストケースのうちの前記１つに関して前記テストスイートから前記識別されたテストデータおよび前記識別されたテストステップを前記リモートテストドライバ中へコピーするステップと、
前記スレッド固有のテストデータセットおよび前記リモートテストドライバに基づいて前記テストスレッドを実行することによって前記複数のテストケースを前記複数の異なる動作環境の各々に対して独立に実行するステップと
を備える、方法。
【請求項２】
前記アプリケーションは、ウェブサイトであり、前記テストスイートは、テスト記述子のセットを備える、請求項１に記載の方法。
【請求項３】
記述子の前記セットは、テストマスタドキュメントおよび前記複数のテストケースのうちの１つに各々が対応する複数のテストスクリプト記述子を備える、請求項２に記載の方法。
【請求項４】
各テストスクリプト記述子は、前記各テストスクリプト記述子に対応するテストケースに関するテストステップを指定するテストステップ・エントリを備える、請求項３に記載の方法。
【請求項５】
各テストステップ・エントリは、テストアクションを指定する予め定義されたキーワードを備える、請求項４に記載の方法。
【請求項６】
前記テストステップ・エントリのうちの少なくとも１つのテストステップ・エントリは、前記少なくとも１つのテストステップ・エントリに関するテストデータを指定するデータ項目をさらに備える、請求項４に記載の方法。
【請求項７】
前記テストステップ・エントリのうちの少なくとも１つのテストステップ・エントリは、前記少なくとも１つのテストステップ・エントリに関して期待されるテスト出力を指定するデータ項目をさらに備える、請求項４に記載の方法。
【請求項８】
各テストステップ・エントリは、前記各テストステップ・エントリが行われることになるかどうかを示すテスト実行インジケータをさらに備える、請求項４に記載の方法。
【請求項９】
前記テストマスタドキュメントは、各テストケースが実行されることになる動作環境を指定し、各動作環境は、少なくとも１つのタイプのウェブブラウザを備える、請求項３に記載の方法。
【請求項１０】
各リモートテストドライバは、予め決定されたテスティンググリッド環境における独立したテスティンググリッド・ウェブドライバを備える、請求項２に記載の方法。
【請求項１１】
クラウドベースのプラットフォームであって、
通信インターフェース、
メモリ、ならび
前記メモリおよび前記通信インターフェースと通信を行う回路素子を備え、前記回路素子は、
前記通信インターフェースを介して、アプリケーションに係わる複数の独立したテストケースを備えるテストスイートを受信し、
前記テストスイートから前記複数のテストケースに関するテストデータを識別し、
前記テストスイートから前記複数のテストケースの各々に関して行われることになるテストステップを識別し、
前記テストスイートから前記独立したテストケースを実行するための複数の異なる動作環境を識別し、
前記複数の異なる動作環境のうちの１つにおける前記複数のテストケースのうちの１つの組み合わせごとに、
リモートテストドライバを備える独立したテストスレッドをインスタンス化し、
前記独立したテストスレッドに関するスレッド固有のテストデータセットを作成するために前記独立したテストケースのうちの前記１つに関して前記テストスイートから前記識別されたテストデータおよび前記識別されたテストステップを前記リモートテストドライバ中へコピーして、
前記スレッド固有のテストデータセットおよび前記リモートテストドライバに基づいて前記テストスレッドを実行することによって前記複数のテストケースを前記複数の異なる動作環境の各々に対して独立に実行する
ように構成された
クラウドベースのプラットフォーム。
【請求項１２】
前記アプリケーションは、ウェブサイトであり、前記テストスイートは、テスト記述子のセットを備える、請求項１１に記載のクラウドベースのプラットフォーム。
【請求項１３】
記述子の前記セットは、テストマスタドキュメントおよび前記複数のテストケースのうちの１つに各々が対応する複数のテストスクリプト記述子を備える、請求項１２に記載のクラウドベースのプラットフォーム。
【請求項１４】
各テストスクリプト記述子は、前記各テストスクリプト記述子に対応するテストケースに関するテストステップを指定するテストステップ・エントリを備える、請求項１３に記載のクラウドベースのプラットフォーム。
【請求項１５】
各テストステップ・エントリは、テストアクションを指定する予め定義されたキーワードを備える、請求項１４に記載のクラウドベースのプラットフォーム。
【請求項１６】
前記テストステップ・エントリのうちの少なくとも１つのテストステップ・エントリは、前記少なくとも１つのテストステップ・エントリに関するテストデータを指定するデータ項目をさらに備える、請求項１４に記載のクラウドベースのプラットフォーム。
【請求項１７】
前記テストステップ・エントリのうちの少なくとも１つのテストステップ・エントリは、前記少なくとも１つのテストステップ・エントリに関して期待されるテスト出力を指定するデータ項目をさらに備える、請求項１４に記載のクラウドベースのプラットフォーム。
【請求項１８】
各テストステップ・エントリは、前記各テストステップ・エントリが行われることになるかどうかを示すテスト実行インジケータをさらに備える、請求項１４に記載のクラウドベースのプラットフォーム。
【請求項１９】
前記テストマスタドキュメントは、各テストケースが実行されることになる動作環境を指定し、各動作環境は、少なくとも１つのタイプのウェブブラウザを備える、請求項１３に記載のクラウドベースのプラットフォーム。
【請求項２０】
方法であって、
ウェブサイトをテストするためのテストアクションのセットのテストアクションに各々が対応するキーワードのセットを予め定義するステップと、
テストマスタドキュメントおよび、各々が前記ウェブサイトに係わる複数の独立したテストケースのうちの１つに関する、複数のテストスクリプト記述子を備えるテストスイートを受信するステップであって、各テストスクリプト記述子が予め定義された文法規則に従って配置されたキーワードの前記セットの複数のキーワードを備える、前記受信するステップと、
前記テストスイートから前記複数のテストケースに関するテストデータを識別するステップと、
前記テストスクリプト記述子から前記複数のキーワードおよびテストステップが行われることになるかどうかを示す前記テストスクリプト記述子におけるインジケータ・フィールドに従って前記複数のテストケースに関して行われることになるテストステップを識別するステップと、
前記テストマスタドキュメントから前記独立したテストケースを実行するための複数の異なる動作環境を識別するステップであって、各動作環境が少なくとも１つのタイプのウェブブラウザを備える、前記動作環境を識別するステップと、
前記複数の異なる動作環境のうちの１つにおける前記複数のテストケースのうちの１つの組み合わせごとに、
リモートテストドライバを備える独立したテストスレッドをインスタンス化するステップと、
前記独立したテストスレッドに関するスレッド固有のテストデータセットを作成するために前記独立したテストケースのうちの前記１つに関して前記テストスイートから前記識別されたテストデータおよび前記識別されたテストステップを前記リモートテストドライバ中へコピーするステップと、
前記スレッド固有のテストデータセットおよび前記リモートテストドライバに基づいて前記テストスレッドを実行することによって前記複数のテストケースを前記複数の異なる動作環境の各々に対して独立に実行するステップと
を備える、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、アプリケーションの自動テスティングに関する。
【背景技術】
【０００２】
コンピュータハードウェアおよびソフトウェア・ケイパビリティの爆発的な発展は、日々の生活のほぼあらゆる側面に影響を与える高度な処理システムの実装に繋がった。より最近の開発は、これらのシステムが仮想化された形態をとり、世界中のどこでもコンピューティング・インフラストラクチャ上にホストされることを可能にした。これらのコンピュータハードウェアおよびソフトウェア・システムを効率的にテストすることが重要な技術的課題である。
【発明の概要】
【課題を解決するための手段】
【０００３】
本開示の一態様によれば、方法は、アプリケーションに係わる複数の独立したテストケースを備えるテストスイートを受信するステップと、テストスイートから複数のテストケースに関するテストデータを識別するステップと、テストスイートから複数のテストケースの各々に関して行われることになるテストステップを識別するステップと、テストスイートから独立したテストケースを実行するための複数の異なる動作環境を識別するステップとを備えてよい。方法は、複数の異なる動作環境のうちの１つにおける複数のテストケースのうちの１つの組み合わせごとに、リモートテストドライバを備える独立したテストスレッドをインスタンス化するステップと、独立したテストスレッドに関するスレッド固有のテストデータセットを作成するために独立したテストケースのうちの１つに関してテストスイートから識別されたテストデータおよび識別されたテストステップをリモートテストドライバ中へコピーするステップとをさらに備えてよい。方法は、スレッド固有のテストデータセットおよびリモートテストドライバに基づいてテストスレッドを実行することによって複数のテストケースを複数の異なる動作環境の各々に対して独立に実行するステップをさらに備えてよい。
【０００４】
本開示の別の態様によれば、クラウドベースのプラットフォームは、通信インターフェース、メモリ、ならびにメモリおよび通信インターフェースと通信を行う回路素子を備えてよい。回路素子は、通信インターフェースを介して、アプリケーションに係わる複数の独立したテストケースを備えるテストスイートを受信し、テストスイートから複数のテストケースに関するテストデータを識別し、テストスイートから複数のテストケースの各々に関して行われることになるテストステップを識別して、テストスイートから独立したテストケースを実行するための複数の異なる動作環境を識別するように構成されてよい。回路素子は、複数の異なる動作環境のうちの１つにおける複数のテストケースのうちの１つの組み合わせごとに、リモートテストドライバを備える独立したテストスレッドをインスタンス化し、独立したテストスレッドに関するスレッド固有のテストデータセットを作成するために独立したテストケースのうちの１つに関してテストスイートから識別されたテストデータおよび識別されたテストステップをリモートテストドライバ中へコピーするようにさらに構成されてよい。回路素子は、スレッド固有のテストデータセットおよびリモートテストドライバに基づいてテストスレッドを実行することによって複数のテストケースを複数の異なる動作環境の各々に対して独立に実行するようにさらに構成されてよい。
【０００５】
本開示の別の態様によれば、方法は、ウェブサイトをテストするためのテストアクションのセットのうちのテストアクションに各々が対応するキーワードのセットを予め定義するステップと、テストマスタドキュメントおよび、各々がそのウェブサイトに係わる複数の独立したテストケースのうちの１つに関する、複数のテストスクリプト記述子を備えるテストスイートを受信するステップであって、各テストスクリプト記述子が予め定義された文法規則に従って配置されたキーワードのセットの複数のキーワードを備える、受信するステップと、テストスイートから複数のテストケースに関するテストデータを識別するステップと、テストスクリプト記述子から複数のキーワードおよびテストステップが行われることになるかどうかを示すテストスクリプト記述子中のインジケータ・フィールドに従って複数のテストケースに関して行われることになるテストステップを識別するステップと、テストマスタドキュメントから独立したテストケースを実行するための複数の異なる動作環境を識別するステップであって、各動作環境が少なくとも１つのタイプのウェブブラウザを備える、動作環境を識別するステップとを備えてよい。方法は、複数の異なる動作環境のうちの１つにおける複数のテストケースのうちの１つの組み合わせごとに、リモートテストドライバを備える独立したテストスレッドをインスタンス化するステップと、独立したテストスレッドに関するスレッド固有のテストデータセットを作成するために独立したテストケースのうちの１つに関してテストスイートから識別されたテストデータおよび識別されたテストステップをリモートテストドライバ中へコピーするステップとをさらに備えてよい。方法は、スレッド固有のテストデータセットおよびリモートテストドライバに基づいてテストスレッドを実行することによって複数のテストケースを複数の異なる動作環境の各々に対して独立に実行するステップをさらに備えてよい。
【図面の簡単な説明】
【０００６】
【図１】クラウド接続された自動テスティングシステムを示す図である。
【図２】代わりのクラウド接続された自動テスティングシステムを示す図である。
【図３】クラウド接続された自動テスティングシステムにおいて用いられてよい例示的な処理回路素子を示す図である。
【図４Ａ】クラウド接続された自動テスティングシステムのコードパイプラインのための例示的な論理フロー図である。
【図４Ｂ】クラウド接続された自動テスティングシステムのコードパイプラインのための例示的な論理フロー図である。
【図５】複数の動作環境において複数のテストケースを行うマルチスレッド実装を示す図である。
【図６】複数の動作環境において複数のテストケースを行う代わりのマルチスレッド実装を示す図である。
【図７】複数の動作環境において複数のテストケースを行う別の代わりのマルチスレッド実装を示す図である。
【図８】クラウド・インフラストラクチャの複数の動作環境において複数のテストケースを行う具体的なマルチスレッド実装を示す図である。
【図９】テストケースに関するスプレッドシート・フォーマットでの例示的なキーワード・ベースの入力テストスクリプトを示す図である。
【図１０】期待されるテスト出力を含むテストケースに関するスプレッドシート・フォーマットでの例示的なキーワード・ベースの入力テストスクリプトを示す図である。
【図１１】複数の動作環境において複数のテストケースを行うための命令を指定するスプレッドシート・フォーマットでのテストマスタを示す図である。
【図１２】クラウド接続された自動テスティングシステムを用いた、独立したスレッドとしてのテストケースおよび動作環境の各組み合わせの実行を示す図である。
【図１３】スレッドの重複を有するマルチスレッド・テスティングの実装を示す図である。
【図１４】２つのテストケースに関して３つの動作環境における実際のテスティングを図１２および図１３の実装の間で比較して示し、図１３の実装におけるスレッド重複の不測の効果を示す図である。
【図１５】テストの音声および他のリモート・アクティブ化のための構成要素およびインターフェースをさらに含む、ＡＷＳ環境内に実装されたクラウド接続された自動テスティングシステムを示す図である。
【発明を実施するための形態】
【０００７】
ソフトウェア・アプリケーションの展開の成功は、それらのリリース前の包括的なテスティングに決定的に依存する。アプリケーションは、独立したテストケースの包括的なセットを用いて十分にテストされる必要がある内部機能を含むことがあり、各テストケースは、アプリケーションの複数の側面または機能の１つ以上を検証するように設計されうる。加えて、アプリケーションは、プラットフォームに依存しうるソフトウェアスタックおよびライブラリのレイヤに基づいて開発されることがあるため、アプリケーションのテスティングは、アプリケーションの多種多様なユーザロケーションに位置しうる多種多様な動作環境において行う必要がありうる。そのように、アプリケーションの完全なテスティングは、複数の動作環境において多数の独立した各々のテストケースを実行することを伴い、リソース集約的で、エラーを生じやすく、時間がかかることになりかねない。
【０００８】
例えば、アプリケーションは、テスティングの観点からは複雑な関連ウェブページのコレクションを含むウェブサイトであってもよい。具体的には、ウェブサイトは、少なくとも１つのウェブサーバ上にホストされるが、多くの異なるタイプのユーザによって多くの異なるユーザデバイス上で多くの異なるタイプのウェブブラウザを用いてアクセスされ、見られてよい。ウェブページは、ウェブページがアクセスされるときに、ウェブブラウザがユーザに表示するものを指してもよく、または代わりにウェブページと関連付けられて、ウェブサーバからダウンロードされ、かつウェブブラウザによってインタープリットされるファイルのセットを指してもよい。これらのファイルは、典型的に、ハイパーテキストマークアップ言語（ＨＴＭＬ：Ｈｙｐｅｒ  Ｔｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）または他の同等のマークアップ言語であってよい。ＨＴＭＬファイルは、手作業で書かれてもよく、またはウェブサーバによって動的に生成されてもよい。各ＨＴＭＬファイルは、固有のユニフォームリソースロケータ（ＵＲＬ：Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）によって識別されてよい。ウェブページは、テキスト、アニメーション、ビデオ、オーディオ、および他のアプリケーションなどのコンテンツが埋め込まれてよい。ウェブページは、ユーザ入力のための要素、例えば、テキストを入力するためのボックス、およびユーザ選択を入力するためのラジオ・ボタンまたはドロップダウンメニューなどをさらに含んでよい。これらのユーザ入力は、さらなる処理のためにウェブサーバへ提出されてよい。例えば、これらのユーザ入力に基づいて動的ＨＴＭＬファイルがウェブサーバによって生成されてよい。ウェブページは、ユーザが同じウェブサイト内の様々なウェブページ間またはウェブサイト間を横断することを可能にする、他のウェブページへのハイパーリンク（ＵＲＬ）をさらに含んでよい。ＨＴＭＬファイルは、ＪａｖａＳｃｒｉｐｔのような言語で書かれた、例えばアプレットの形態の１つ以上の非ＨＴＭＬ要素をカプセル化してよい。表示されるウェブページの部分を作り出すために、これらの埋め込まれた非ＨＴＭＬ要素がウェブブラウザにおける対応するエンジンによって実行されてよい。
【０００９】
上記のようなウェブサイトおよびウェブページの複雑さに加えて、各ユーザは、異なるウェブブラウザ、例えば、Ｆｉｒｅｆｏｘ、Ｇｏｏｇｌｅ  Ｃｈｒｏｍｅ、Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ／Ｍｉｃｒｏｓｏｆｔ  Ｅｄｇｅ、Ｏｐｅｒａ、およびＳａｆａｒｉのうちの１つ以上を彼／彼女のデバイス上にインストールすることを選んでよい。これらのウェブブラウザの各々は、さらに、以下には限定されないが、様々なバージョンのＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ、Ａｐｐｌｅオペレーティングシステム、およびＬｉｎｕｓベースのオペレーティングシステムを含む（潜在的に仮想化された）異なるオペレーティングシステムで実行してよい。加えて、これらのウェブブラウザは、様々な物理的形態（携帯電話、タブレット、パーソナルコンピュータなど）および表示特性のユーザデバイスに対して異なるケイパビリティのセットを含んでよい。ブラウザのタイプ、ブラウザが実行されるオペレーティングシステム、およびユーザデバイスの物理的形態の組合せは、ウェブサイトおよびウェブページに関してテストされることが必要な多くの可能な数の動作環境を生じさせる。
【００１０】
以下の開示は、クラウドで実行する複数の並列テストスレッドを用いて、複雑なアプリケーションに係わる複数のテストケースを複数の動作環境において実施するための方法、装置、およびシステムを提供する。ウェブサイトおよびウェブページをテストするための具体的な実装が本開示の様々な他のアプリケーション・テスティングの文脈への一般的な適用性を失うことなく例として記載される。
【００１１】
図１は、ウェブサイトまたはウェブページ（以下では一般にウェブページと呼ばれる）の自動テスティングをクラウドに実装するための例示的なシステム１００を示す。システム１００は、１０２＿１、１０２＿２、および１０２＿Ｍを含むテスタ（代わりにクライアントと呼ばれる）１０２からのテストタスクを処理して、処理したテストタスクをクラウド１１２内のテストハーネス１１４に実装するためにクラウド接続された自動テスティング（ＣＣＡＴ：Ｃｌｏｕｄ  Ｃｏｎｎｅｃｔｅｄ  Ａｕｔｏｍａｔｅｄ  Ｔｅｓｔｉｎｇ）サーバ１０８を含む。ＣＣＡＴサーバ１０８は、単一のロケーションに集中してもよく、または複数の地理的ロケーションにわたって分散されてもよい。クライアント１０２は、通信ネットワーク１１０を介してＣＣＡＴサーバ１０８と通信してよい。同様に、ＣＣＡＴサーバ１０８は、通信ネットワーク１１０を介してテストハーネス１１４と通信してよい。通信ネットワーク１１０は、例えば、インターネット・プロトコル（ＩＰ）に基づいてもよく、有線または無線アクセスネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、および他のコンピュータネットワークの組み合わせを含んでもよい。
【００１２】
テスタは、ＣＣＡＴサーバによる自動実行のためにテストを提出できるリモート端末デバイスであってよい。テストは、遠隔的にテストされることになるウェブサイトのプロバイダのＱＡ（品質保証：Ｑｕａｌｉｔｙ  Ａｓｓｕｒａｎｃｅ）人員によって、いずれかのテスタを介して提出されてよい。テスタは、代わりにテスタデバイスと呼ばれてもよく、以下には限定されないが、携帯電話、タブレット、ラップトップコンピュータ、パーソナルコンピュータ、および携帯情報端末（ＰＤＡ：Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）を含むいずれかの適切な電子デバイスであってよい。ＱＡ人員は、ウェブサイトのデベロッパおよびプログラマとは異なってよい。以下に記載されるようなシステム１００に基づくウェブページ・テスティングの特定の実装では、ＱＡは、ウェブページのコーディングについて技術的に高度である必要はない。さらにまた、ＣＣＡＴサーバ１０８は、テスタから遠隔的にどこからでもアクセスされてよい。例えば、ＣＣＡＴサーバは、ウェブサイトをホストするウェブサーバを含んでもよい。そのように、テスタ１０２は、ＣＣＡＴサーバと通信するためのウェブブラウザを含み、テスタのいずれかのロケーションからＣＣＡＴウェブサーバによりホストされたウェブページに遠隔的にアクセスすることによってテスタタスクを提出してよい。代わりに、テスタ１０２は、ＣＣＡＴサーバに遠隔的にアクセスするための専用テスタソフトウェアがテスタデバイス上に局所的にインストールされてもよい。システム１００では、クラウド１１４およびＣＣＡＴサーバ１０８が別個の独立したサービスプロバイダによって操作されてよい。
【００１３】
テスタから提出されたテストケースと関連付けられるテストステップおよびテストデータは、１２０＿１、１２０＿２、および１２０＿Ｍなど、テストスクリプト１２０として予め定義されたフォーマットで指定されてよい。ＣＣＡＴサーバ１０８は、これらのフォーマットされたテストスクリプトを受信して、それらを、その例示的な実装が以下により詳細に記載される、コードパイプライン１３０を介してテストコード１４０へ処理する。処理されたテストコード１４０は、クラウドへ送られて、テストハーネス１１４によって実行されてよい。テスト結果１５０は、次にＣＣＡＴサーバを介した通信によってテスタ１２０へ戻されてよい。
【００１４】
図２は、ウェブページのクラウド接続された自動テスティングを実装するための代わりのシステム２００を示す。システム２００は、ＣＣＡＴサーバの機能がクラウド内に実装されてよいことを除いてシステム１００と同様である。そのように、ＣＣＡＴサービスプロバイダは、それ自体のサーバを維持して操作することが必要でなくてよい。むしろ、ＣＣＡＴサービスプロバイダは、コードパイプライン１３０を含めて、ＣＣＡＴ機能を実装するために、１つ以上のクラウドサービスプロバイダからクラウド１１２内のハードウェアおよび／またはプラットフォームを活用してよい。
【００１５】
図１および２のシステム２００とは別の代わりのシステムでは、テストスクリプト１２０＿１、１０２＿２、および１０２＿Ｍは、クラウド１１２内のデポジトリに記憶されてよい。テストスクリプトをクラウドデポジトリ中へ提出するために、リモートテスタデバイス１０２が用いられてよい。例えば、ＣＣＡＴウェブサーバにアクセスしているウェブブラウザを介して、クラウドデポジトリ内に記憶されたテストまたは一群のテストに関して自動プロセスを開始するための命令を通信するために、リモートテスタデバイス１０２がさらに用いられてよい。
【００１６】
ＣＣＡＴサーバ、ウェブサーバ、およびクラウド内に構成されたサーバを含めて、サーバ、ならびにテスタデバイスは、例えば、図３に示されるように、各々が処理回路素子３０１として実装されてよい。処理回路素子３０１は、通信インターフェース３０２、システムリソース３０４、入力／出力（Ｉ／Ｏ）インターフェース３０６、および局所的またはリモート表示のためのマシンインターフェイス３１０を生成する表示回路素子３０８を含んでよい。マシンインターフェイス３１０およびＩ／Ｏインターフェース３０６は、ＧＵＩ、タッチセンシティブ表示、音声または顔認識入力、ボタン、スイッチ、スピーカおよび他のユーザインターフェース要素を含んでよい。Ｉ／Ｏインターフェース３０６は、磁気または光媒体インターフェース（例えば、ＣＤＲＯＭもしくはＤＶＤドライブ）、シリアルおよびパラレルバスインターフェース、ならびにキーボードおよびマウスインターフェースをさらに含んでよい。
【００１７】
通信インターフェース３０２は、無線送信機および受信機（「トランシーバ」）３１２ならびにトランシーバ３１２の送信／受信回路素子が用いる任意のアンテナ３１４を含んでよい。トランシーバ３１２およびアンテナ３１４は、Ｗｉ−Ｆｉネットワーク通信を、例として、ＩＥＥＥ８０２．１１の任意のバージョン下、例えば、８０２．１１ｎまたは８０２．１１ａｃでサポートしてよい。通信インターフェース３０２は、有線トランシーバ３１６も含んでよい。有線トランシーバ３１６は、広範囲にわたる通信プロトコルのいずれか、例えば、任意のタイプのイーサーネット、データオーバーケーブルサービスインターフェイス仕様（ＤＯＣＳＩＳ：ｄａｔａ  ｏｖｅｒ  ｃａｂｌｅ  ｓｅｒｖｉｃｅ  ｉｎｔｅｒｆａｃｅ  ｓｐｅｃｉｆｉｃｔｉｏｎ）、デジタル加入者回線（ＤＳＬ：ｄｉｇｉｔａｌ  ｓｕｂｓｃｒｉｂｅｒ  ｌｉｎｅ）、同期型光ネットワーク（ＳＯＮＥＴ：ｓｙｎｃｈｒｏｎｏｕｓ  ｏｐｔｉｃａｌ  ｎｅｔｗｏｒｋ）、または他プロトコルのための物理層インターフェースを提供してよい。
【００１８】
処理回路素子３０１は、通信ネットワーク１１０を介してテスタ１０２と通信を行ってよい。処理回路素子３０１は、直接にあるいは通信ネットワーク１１０を介して、さらに記憶装置３１８と通信を行ってよい。記憶装置３１８は、以下には限定されないが、磁気または光ディスク、固体媒体、および磁気テープを含めて、任意のタイプの記憶媒体を備えてよい。記憶装置３１８は、集中してもよく、または代わりに分散記憶ネットワークとして編成されてもよい。
【００１９】
図３に示されるように、処理回路素子３０１のシステムリソース３０４は、ハードウェア、ソフトウェア、ファームウェア、または他の回路素子およびリソースを任意の組み合わせで含んでよい。システムリソース３０４は、例えば、命令プロセッサ３２０を含んでもよい。システムリソース３０４は、さらにメモリ３３０を含んでよい。システムリソース３０４は、例えば、固体メモリ、ランダムアクセスメモリ、個別アナログおよびデジタル回路、ならびに他の回路素子と組み合わせた、１つ以上のシステムオンチップ（ＳｏＣ：ｓｙｓｔｅｍ  ｏｎ  ａ  ｃｈｉｐ）、特定用途向け集積回路（ＡＳＩＣ：ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）、マイクロプロセッサとして実装されてよい。システムリソース３０４は、処理回路素子３０１における任意の所望の機能性の実装のための基本的なプラットフォームを提供する。メモリ３３０は、例えば、ＣＣＡＴサーバ、テストハーネス・サーバ、またはテスタデバイスの所望の機能性を実施するためにプロセッサ３２０が実行しうる命令を記憶する。
【００２０】
図４Ａは、ＣＣＡＴサーバ１０８の例示なコードパイプライン１３０を図示する。特に、ＣＣＡＴサーバは、例えば、テスタ１０２によって提出されたテストスクリプト１２０をテストコード１４０へトランスコードするためにＣＣＡＴエンジン４１４を実行する。ＣＣＡＴエンジン４１４は、必要なだけ頻繁にアップデートされ、再コンパイルされてよい。例えば、ＣＣＡＴエンジン４１４は、すべてのテストスクリプトが提出されるたびに、リアルタイムでコンパイルされ、再生されてもよい。ＣＣＡＴエンジンに関するソースコードは、ソースコード・サーバ４１０内に記憶されてよい。ソースコード・コンパイラ４１２は、いつでも修正またはアップデートされてよいＣＣＡＴソースコードをコンパイルするために用いられてよい。コンパイルされたＣＣＡＴエンジンは、テストスクリプト１２０をテスタ１０２から通信ネットワーク１１０を介して入力として取得して、そのテストスクリプトを、図１または図２のクラウドベースのテストハーネス１１４によってインタープリットされ、実行されてよいテストコード１４０へトランスコードする。例として、クラウドベースのテストハーネスは、クラウド内に構成され、Ｓｅｌｅｎｉｕｍ（登録商標）グリッドのような、テストハブおよびテストノードを含むテストグリッドであってよい。
【００２１】
図４Ｂは、コードパイプライン１３０の代わりの実装を図示する。図４Ｂのコードパイプライン１３０では、ＣＣＡＴエンジン４１４およびソースコード・コンパイラ４１２は、ＣＣＡＴエンジンのソースコードおよびテスタ１０２からの入力テストスクリプト１２０を単一ステップでテストコード１４０へ処理する、継続的インテグレーション・コンパイラ４１２／４１４へ組み合わされてよい。そのように、テスタによってテストが提出されるたびに、継続的にアップデートされたＣＣＡＴエンジンのソースコードが利用されてよい。
【００２２】
コードパイプライン１３０は、テストスクリプト１２０を、各々がテストハーネス１１４によって独立したスレッドとして実行されることになる複数のテストケースのテストコード１４０へ、トランスコードするように具体的に構成されてよい。そのうえ、コードパイプラインは、異なる動作環境に対して各テストケースが並列に実行されうるようにテストコード１４０を生成してよい。例えば、図５に示されるように、テストスクリプト１２０は、Ｎ個のテストケースのうちの独立したテストケースに各々が対応する、複数のテストスレッド５０２、５０４、および５０６として実行するようにトランスコードされてよい。テストケースは、例えば、データ依存性をそれらが有さない、すなわち、１つのテストケースの実行が他のいずれかのテストケースのステータスまたは出力に依存しないときには、独立している。テストスクリプト１２０において指定されたそのテストステップおよびテストデータを含む、各テストケースは、それぞれ５１０、５２０、５３０、および５１２、５２２、５３２で示される、動作環境１および動作環境２の両方において実行してよい。記載を簡潔にするために、ここでは２つの非限定の動作環境が参照される。先に考察されたように、多くの動作環境をウェブブラウザの異なるバージョン、オペレーティングシステム、およびユーザデバイスの組み合わせとしてテストする必要がありうる。
【００２３】
図５に関して先に記載されたことの代わりに、テストコード１４０は、各動作環境における各テストケースが独立したスレッドとしてテストハーネス１１４によって実行されうるようにコードパイプラインによって生成されてもよい。このことが図６中の６１０、６１２、６２０、６２２、６３０、および６３２で示される。具体的には、テストを各々Ｎ個のテストケースのうちの１つに関する図５におけるＮ個のスレッドとして実行するのではなく、Ｎ×Ｋ個の独立したスレッドとしてテストが実行されてよく、ここでＫは、テストされる動作環境の数を示す。
【００２４】
コードパイプライン１３０によって生成されたテストコードは、Ｓｅｌｅｎｉｕｍ（登録商標）グリッドのような、テスティンググリッドを介してテストインスタンスをインスタンス化してよい。テストコードは、従って、テスティンググリッド中に、Ｓｅｌｅｎｉｕｍ（登録商標）リモートウェブドライバオブジェクトのような、テストオブジェクトを起動するようにフォーマットされた、テストステップおよびテストデータのコレクションを含んでよい。テスティンググリッドは、テストハブ、およびクラウド１１２内に予め作成された１つ以上のテストノードを含む。テストハブおよびテストノードの各々は、例として、ＩＰアドレスおよび／またはポート番号によって識別されてもよい。図５に対応して、各々複数の動作環境のうちの１つに対するテスティンググリッド・ウェブドライバ中にテストオブジェクトを作成するために、テストケースごとのテストスレッドが独立にインスタンス化されてよい。例えば、図５中の（テストケース１に関する）テストスレッド５０２に対して、動作環境１および２は、それぞれＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ２００６におけるＧｏｏｇｌｅ  Ｃｈｒｏｍｅの最新バージョンおよびＭＡＣ  ＯＳＸ  ｖ．１０．７におけるＳａｆａｒｉ６．１．６であってよい。それに対応して、コードパイプラインによって生成されるテストコードは、テストケース１に関する独立したスレッドを作成するためのコマンドを含んでよい。そのスレッド内に、コードパイプラインによって生成されるテストコードは、テストケース１と関連付けられたテストステップおよびテストデータを、やはり、適切なテスティンググリッド関数呼び出しを介して実行するために、ＣｈｒｏｍｅおよびＳａｆａｒｉウェブドライバオブジェクト（または適切なＣｈｒｏｍｅもしくはＳａｆａｒｉケイパビリティのウェブドライバ）を作成するための適切なテスティンググリッド・オブジェクトへの関数呼び出しをさらに含んでよい。上記の実装は、図５のテストケース２およびテストケースＮのような、他のテストケースに関するテストスレッドに等しく適用される。
【００２５】
代わりに、図６に対応して、コードパイプラインによって生成されるテストコードは、テストケースおよび動作環境の組み合わせごとに１つのテストスレッドを作成するように構成されてもよい。そのように、テストケースごとのテストステップおよびテストデータが、実際、様々な動作環境に対して独立したテストスレッド中へコピーされる。具体的にはテストスレッドに関して、テストされることになる動作環境に対応するテスティンググリッド・ウェブドライバが作成される。独立したスレッド中に作成されたテスティンググリッド・ウェブドライバにおける様々な動作環境に対して、テストケースのテストステップおよびテストデータが並列に実行される。
【００２６】
別の実装では、図７に示されるように、テストコード１４０は、テストハブおよび少なくとも１つのテストノードを有するテスティンググリッドを各々がインスタンス化する、７０２、７０４および７０６のような「Ｌ」個の独立したテストスレッドを作成するためにコードパイプラインによって生成されてもよい。具体的には、テストスレッド７０２、７０４、および７０６は、対応するテストケースのテストステップを実行するためのテストハブおよびテストノードの対７１０／７１２、７２０／７２２、および７３０／７３２をそれぞれスポーンしてよい。例えば、各テストスレッド７０２、７０４、または７０６が１つのテストケースに対応してよく、そのように、テストハブ／テストノードの対応する対における各テストスレッドによって様々な動作環境に対して様々なテスティンググリッド・ウェブドライバがインスタンス化されてよい。代わりに、各テストスレッド７０２、７０４、または７０６がテストケースおよびテスト環境の１つの組み合わせに対応してもよく、それに応じて、テストハブおよびテストノードの各対において１つの適切なテスティンググリッド・ウェブドライバがインスタンス化されてもよい。
【００２７】
図８は、ＣＣＡＴコードパイプラインおよび仮想的な伸縮性テストクラウド８０２内に実装されたテスティンググリッドの形態のテストハーネスを用いた、図２のテストシステム２００の具体例８００を図示する。テストスクリプト１２０は、コードパイプライン１３０へ入力される。例として、コードパイプライン１３０は、ＣＣＡＴエンジンに関するソースコードをソースコードデポジトリから引き出し、ＣＣＡＴソースコードを上記の継続的インテグレーションのやり方でコンパイルして、入力テストスクリプトをテスティンググリッド８１２に適したテストコードへトランスコードするために、クラウド内の自動化サーバ８０４、ソースコードデポジトリ８０６およびビルドツール８０８を利用してよい。具体的には、テストクラウド８０２は、例えば、Ａｍａｚｏｎ  Ｗｅｂ  Ｓｅｒｖｉｃｅ（ＡＷＳ）であってよく、自動化サーバ８０４は、Ｊｅｎｋｉｎｓ（登録商標）を介して自動化サービスを提供してよく、ソースコードデポジトリ８０６は、ＧｉｔＨｕｂ（登録商標）を介して提供されてよく、ビルドツール８０８は、Ｇｒａｄｌｅ（登録商標）を介して提供されてよい。コードパイプライン１３０によって生成されたテストコードは、上記のように、リモートウェブドライバを含む複数のテストスレッドをテスティンググリッド８１２内にインスタンス化してよい。テスティンググリッドは、例えば、Ｓｅｌｅｎｉｕｍ（登録商標）に基づいてもよい。様々な動作環境における様々なテストケースに関するテスト結果を含む、テストの出力は、スプレッドシート８２０およびスクリーンショット画像８３０のような、様々なフォーマットで、クラウド内の記憶装置８１０に記憶されてよい。仮想的な伸縮性テストクラウド８０２内にコードパイプライン１３０、テストハーネス８１２、およびテスト結果の記憶装置８１０を実装する際には、例えば、伸縮性およびセキュリティを強化するために他の適切なクラウドサービスツール８１６が関与してよい。例えば、Ａｍａｚｏｎ  Ｗｅｂ  Ｓｅｒｖｉｃｅについては、ＶＰＣ（登録商標）、ＥＣ２（登録商標）、ＡＭＩ（登録商標）、およびＩＡＭ（登録商標）などの構成要素が必要に応じて起動されてよい。クラウドおよびクラウドツールは、操作人員８５５によって管理されてよい。
【００２８】
図８の実装では、テストスクリプトの開発およびテスト出力分析は、８７０で示されるような、ＱＡ人員によって行われてよい。コード開発者８８０は、ＣＣＡＴコードおよびテスティンググリッド８１２に関して生成されるテストコードを含めて、コアコードのビルドおよび維持に関与してよい。
【００２９】
図８の実装は、従って、８６０で示されるように、自動コードパイプラインを用いてＣＣＡＴコードをビルドする継続的インテグレーションを提供する。加えて、８６２で示されるように、図８の実装は、自動テストハーネスとしてＳｅｌｅｎｉｕｍ（登録商標）グリッドのようなテスティンググリッドを利用する。さらにまた、この実装は、８６４で示されるように、ウェブサイトの分散開発およびテスティングを提供する。最後に、８６６で示されるように、コードビルドおよびテスティングの全体が、仮想化されたテスティングのために最適化されたクラウド内に実装される。
【００３０】
テストスクリプト１２０に関する文法規則は、コンピュータコードを記述する専門語を避けるように設計されてよい。そのように、すべての専門語がＣＣＡＴエンジンに組み込まれてよく、図８のＱＡ人員８１８が特定のコーディング技能を保有する必要はない。具体的には、テストケースに関するテストステップおよびテストデータが、人々が読み書きしやすいテストスクリプト記述子中に指定されてよい。例えば、テストケースの各々に関するテストステップおよびテストデータを含むテストスクリプトが、テストスクリプト記述子として、テストスプレッドシート８４０の形式か、またはＪＳＯＮ（Ｊａｖａｓｃｒｉｐｔオブジェクト表記：Ｊａｖａｓｃｒｉｐｔ  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ）のような軽量データ交換フォーマット８５０で記述されてよい。テストスプレッドシート・フォーマットにおける例示的なテストスクリプトのコレクションが図９の１０００で示される。各スプレッドシートが、例えば、１つのテストケースに対応してよい。テストスプレッドシートの各行は、例えば、複数の列を含むテストステップに関する１つのエントリに対応する。
【００３１】
さらにまた、専門外のテスタによるテストステップの容易な構築のために、テストスクリプトに関して有意な意味のあるキーワードが開発されてよい。図９に示されるテストスクリプトでは、例えば、キーワード９０２のセットが「ｏｐｅｎＵＲＬ」、「Ｗａｉｔ」、「Ｃｌｉｃｋ」などを含む。
これらのキーワードは、様々なプログラミング構成要素の文法的な厳密さなしに専門外の人によって容易に理解される文字通りの意味を持ってよい。これらのキーワードは、例えば、ウェブページを開くおよびボタンをクリックするなど、テストステップにおけるアクションを表してもよい。これらのキーワードは、アクションの間にある時間待機するなど、テストステップのタイミングを制御するためにも用いられてよい。
【００３２】
キーワードは、さらに、１つ以上のテストデータまたはパラメータと関連付けられてよい。これらのパラメータは、図９の９０４のように、スプレッドシートにおける１つ以上の別個の列として指定されてよい。例えば、キーワード「ｏｐｅｎＵＲＬ」は、９０８で示されるように、テストされることになるウェブページのＵＲＬを表すテストデータと関連付けられてよい。別の例では、キーワード「ｗａｉｔ」は、９１０で示されるように、アクションの間に待機するための時間量（例えば、秒単位）を表す数と関連付けられてよい。さらに別の例では、キーワード「ｃｌｉｃｋ」は、９１２で示されるように、クリックされることになるウェブページ中のボタンまたは他の対象の名（または識別子）を示すパラメータと関連付けられてよい。
【００３３】
図９において「ＲｕｎＭｏｄｅ」列とラベル付けされた列９０６で示されるように、テストコードをビルドするときに特定の行におけるテストステップがコードパイプラインによって無視されるべきかどうかを示す追加の列が、テストスクリプトスプレッドシートに含められてよい。テストスクリプトスプレッドシートにこの列を含める利点は、あるテストステップを除くかまたは含めるようにテストケースが便利に修正されてよいことである。テストステップが望ましいかまたは必要であれば、列「ＲｕｎＭｏｄｅ」の下で対応する行が「Ｙｅｓ」とフラグ付けされてよい。さらなるテストラウンドにおいてテストステップが不必要になれば、対応する行のＲｕｎＭｏｄｅフラグが単に「Ｙｅｓ」から「Ｎｏ」へ修正されてよい。例えば、図９のステップ９２０がもはや必要ではないとある時点で決定されることがある。これらのテストステップを削除する代わりに、テスタがこれらのステップのＲｕｎＭｏｄｅインジケータを単に「Ｎｏ」に修正してもよい。これらのテストステップがやはり再び必要ならば、それらのＲｕｎＭｏｄｅインジケータが単に「Ｙｅｓ」に戻るように修正される。
【００３４】
上記のテストスクリプトおよびテストスクリプト記述子は、テスト結果を生成するのに役立ちうる追加の情報を含んでよい。例えば、図１０に示されるテストスクリプト記述子のためのスプレッドシート１０００は、１００８、１０１０、および１０１２のような追加の列を含む。これらの列がテストステップに関して期待される出力を示してよい。ＦｉｒｅＦｏｘ（ＦＦ）、Ｃｈｒｏｍｅ、およびＩｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ（ＩＥ）のような、様々な動作環境に対して具体的に期待されるテストステップのテスト出力は、異なる動作環境間で期待される出力が異なりうるので、１００８、１０１０、および１０１２として別々に指定されてよい。この情報は、ＣＣＡＴシステムが図８のより理解しやすいテスト結果８２０を構築するために有用でありうる。例えば、ＣＣＡＴエンジンは、テストから返されたテキストを期待されるテキストと比較して、テストから生成された実際のテキストを返すのではなく、むしろテスタへの合否インジケータを生成するように構成されてもよい。
【００３５】
テストスクリプトのテストスプレッドシートなど、複数のテストスクリプト記述子が先に詳細に記載されたように構築されてよく、各テストスクリプト記述子が１つの独立したテストケースに対応してもよい。各テストケースが行われることになる様々な動作環境を指定するために、テストマスタドキュメントと呼ばれる、１つの追加のテストドキュメントがテスタによってさらに構築されて、ＣＣＡＴコードパイプラインによってトランスコードされてよい。例示的なテストマスタドキュメントは、図１１に示されるような、スプレッドシート１１００であってよい。テストマスタスプレッドシート１１００の各行は、テストケースおよび動作環境の対に対応する。例えば、「Ｔｅｓｔ−Ｃａｓｅ」とラベル付けされたテストマスタスプレッドシート１１００の列１１０２は、例えば、テストケースに対応するスプレッドシートのような、テストスクリプト記述子に関する識別子またはファイル名を用いて、テストケースを指定する。図１１では、例として、９つの異なるテストケースが関与する。
【００３６】
図１１におけるテストマスタスプレッドシートの「Ｂｒｏｗｓｅｒ」列１１０４は、テストケースをテストするための様々なブラウザを指定する。図１１の例は、テストされることになるウェブブラウザの一般的なカテゴリによって動作環境を指定するに過ぎないが、これらのカテゴリは、より小さい粒度のレベルに精緻化されてよいことが理解される。例えば、「ｃｈｒｏｍｅ」のカテゴリは、様々なオペレーティングシステムにおいて実行する様々なバージョンのｃｈｒｏｍｅにさらに精緻化されてよい。代わりに、これらの詳細なバージョンまたはオペレーティングシステム情報が図１１のスプレッドシートの追加の列で指定されてもよい。
【００３７】
図１１におけるテストマスタスプレッドシートの「ＲｕｎＭｏｄｅ」列１１０６は、特定のテストケースおよびウェブブラウザの組み合わせ（またはテストケースおよび動作環境の組み合わせ）が行われることになるかどうかを指定する。例えば、図１１のテストマスタは、各々がＦｉｒｅｆｏｘ、Ｃｈｒｏｍｅ、およびＩｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒの３つのすべての主要ウェブブラウザにおける、９つのテストケースのうちの７つを伴って２０個のテストが行われることになることを指定する。図１１のテストマスタスプレッドシートは、このように、任意のテストの組み合わせを指定する便利な仕方を提供する。
【００３８】
テストケースに関するテストスクリプトおよびテストされることになる動作環境は、集合的にテストスイートと呼ばれる。上記の（テストスクリプトスプレッドシート、例えば、図９のような）フォーマットされたテストスクリプト記述子および（図１１のテストマスタスプレッドシートのような）テストマスタドキュメントは、集合的にテスト記述子と呼ばれる。テストスイートは、図５〜７に記載されるような複数のテストスレッドを作成し、随意的に図８に記載されるようなテスティンググリッドおよびウェブドライバを起動するために、図１、２、および８のコードパイプライン１３０へ入力されてよい。図１２は、ＣＣＡＴシステムによって独立したＣＣＡＴテストドライバオブジェクト１２０１〜１２０６の形態で作成された、３つの異なるブラウザ（Ｃｈｒｏｍｅ、Ｉｎｔｅｒｎｅｔ  ＥｘｐｌｏｒｅｒおよびＦｉｒｅｆｏｘ）における２つのテストケースに関する６つのスレッドをさらに示す。各ＣＣＡＴテストドライバオブジェクトは、図１２１１〜１２１６に示されるように、適切なブラウザ・ケイパビリティをもつリモートウェブドライバ（例えば、Ｓｅｌｅｎｉｕｍウェブドライバオブジェクト）をさらに含む。これらのリモートウェブドライバは、リソースを共有しない。その代わりに、ＣＣＡＴテストドライバオブジェクト１２０１〜１２０６の各々は、１２２１〜１２２６で示されるように、それ自体のテストステップおよびテストデータを有することによってその自律性を維持する。
【００３９】
比較して、図１３は、１つのブラウザ・ケイパビリティに各々が対応する３つのスレッド１３０１〜１３０３において２つのテストケース１３２１〜１３２２および３つの異なるブラウザを実行するための代わりの実装を示す。例えば、テスティンググリッドにおける異なるリモートウェブドライバオブジェクト１３１１〜１３１６が適切なケイパビリティを用いてインスタンス化されてよい。各スレッド内の共通データリソースの共有のゆえに、各スレッド内の２つのテストケースの間にスレッドの重複があり、意図されない不測の結果に繋がることがある。
【００４０】
２つの例示的なテストケースを実行するための図１４にこれが示される。両方のテストケースに関して、最初に同じウェブページが開かれる。このウェブページは、入力ボックス「Ｕｓｅｒ  Ｎａｍｅ」を含む。第１のテストケースは、ユーザ名として「ＸＹＺ」を入力するステップを含む。第２のテストケースは、ユーザ名として「ａｂｃ」を入力するステップを含む。図１２の６つのスレッドのＣＣＡＴテストドライバオブジェクトの実装では、同じブラウザ・ケイパビリティのリモートウェブドライバが別個のスレッドにおいて独立に起動され、従って、図１４の１４０１で示されるように、各リモートウェブドライバがウェブブラウザの１つのインスタンスを実行して、ユーザ名が各ウェブブラウザへ正しく入力される。しかしながら、図１３の３つのスレッドの実装では、図１４における１４０２の１４１１および１４１４、１４１２および１４１５、１４１３および１４１６の間のスレッドの重複に起因して、テスティンググリッドが２つのテストケース間を区別できないことがある。結果として、図１４における１４０２の１４１１〜１４１３で示されるように、テストケース１のためのユーザ名（「ＸＹＺ」）およびテストケース２のためのユーザ名（「ａｂｃ」）がいずれも同じウェブブラウザへ不用意に入力されることがある。
【００４１】
図１５は、上記のように、クラウド１５０３においてマルチスレッド・テスティングをアクティブ化するために音声コマンドまたはシングルクリックを用いることをさらに図示する。例えば、コードパイプライン１３０からイベント駆動型コンピューティングサーバ１５２０を介してマルチスレッド・テストコードをビルドして、実行するための音声コマンド１５１０を入力するために、対応する音声処理サーバ１５０２と通信を行う音声入力／出力回路素子１５０１が利用されてよい。代わりに、テストコードのビルドおよび実行は、ＩｏＴ（インターネットオブシングス：Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ）サーバ１５３２およびイベント駆動型コンピューティングサーバ１５２０と通信を行うＩｏＴシングルクリックデバイス１５３０によってアクティブ化されてもよい。音声処理サーバ１５０２は、音声入力／出力回路素子１５０１からのテスト結果問い合わせ１５４０入力を処理して、テスト結果を音声へ、かつ音声入力／出力回路素子１５０１による発声を音声１５５０へ変換するためにさらに用いられてよい。代わりに、テスト結果は、ウェブ接続されたＬＥＤインジケータ１５８０をトリガするためのＩＦＴＴＴまたはＩＦ１５７０のようなコンディショナルウェブサービス（ｃｏｎｄｉｔｉｏｎａｌ  ｗｅｂ  ｓｅｒｖｉｃｅ）のために予め定義された信号１５６０へ変換されてもよい。例として、クラウドは、Ａｍａｚｏｎ  Ｗｅｂ  Ｓｅｒｖｉｃｅ（ＡＷＳ）であってよく、音声入力／出力回路１５０１は、Ａｍａｚｏｎ  Ｅｃｈｏデバイスであってよく、音声処理サーバ１５０２は、Ａｍａｚｏｎ  Ａｌｅｘａサーバであってよく、ＩｏＴシングルクリックデバイス１５３０は、ＡＷＳ  ＩｏＴシングルクリックデバイスであってよく、ＩｏＴサーバ１５３２は、ＡＷＳ  ＩｏＴサーバであってよく、ウェブ接続されたＬＥＤインジケータ１５８０は、スマートＬＥＤのＰｈｉｌｌｉｐヒュー・ラインであってよい。
【００４２】
図１５の実装およびその変形を用いて、テストケースが設計され、クラウド内にテストデポジトリとして記憶されてよい。クラウドサービス、例えば、イベント駆動型コンピューティングサービス、コンディショナルウェブサービス、クラウドコードパイプラインサービスおよびクラウド記憶がアプリケーションの包括的かつ効率的なテスティングのために一体的に起動される。具体的には、コードビルド、複数の動作環境における一群のテストのマルチスレッド実行、テスト結果の処理、ならびに音声および／または視覚インジケータを介したテスト結果のフィードバックの自動プロセスを開始するための、音声アクティブ化またはＩｏＴ駆動インターフェースのインテグレーションは、分散され、自動化されたテストを任意の組み合わせでどこからでも実施するための便利なプラットフォームを専門外のＱＡ人員に提供する。
【００４３】
様々な実装が先に具体的に記載された。しかしながら、多くの他の実装も可能である。さらにまた、記載された方法、デバイス、処理、フレームワーク、回路素子および上記の論理回路は、多くの異なる仕方ならびにハードウェアおよびソフトウェアの多くの異なる組み合わせで実装されてよい。例えば、実装のすべてまたは部分は、中央処理装置（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、マイクロコントローラ、もしくはマイクロプロセッサのような、命令プロセッサ；または特定用途向け集積回路（ＡＳＩＣ：Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、プログラマブル論理デバイス（ＰＬＤ：Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）、もしくはフィールドプログラマブルゲートアレイ（ＦＰＧＡ：Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）；またはアナログ回路部品、デジタル回路部品もしくは両方を含めて、個別論理または他の回路部品を含む回路素子；あるいはそれらの任意の組み合わせであってよい。回路素子は、相互接続された個別ハードウェア部品を含んでもよく、または単一の集積回路ダイ上に組み合わされても、複数の集積回路ダイ間に分散されてもよく、あるいは例えば、共通パッケージ内の複数の集積回路ダイのマルチチップモジュール（ＭＣＭ：Ｍｕｌｔｉｐｌｅ  Ｃｈｉｐ  Ｍｏｄｕｌｅ）内に実装されてもよい。
【００４４】
それに応じて、回路素子は、実行のための命令を記憶するか、またはそれにアクセスしてもよく、あるいはその機能性をハードウェアのみに実装してもよい。一時的信号以外の命令は、フラッシュメモリ、ランダムアクセスメモリ（ＲＡＭ：Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、リードオンリメモリ（ＲＯＭ：Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、消去可能なプログラマブルリードオンリメモリ（ＥＰＲＯＭ：Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）のような、有形記憶媒体内に；またはコンパクトディスク・リードオンリメモリ（ＣＤＲＯＭ：Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ハードディスクドライブ（ＨＤＤ：Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、もしくは他の磁気または光ディスクのような、磁気または光ディスク上に、あるいは別の機械可読媒体内またはその上に記憶されてもよい。コンピュータプログラム製品のような製品は、記憶媒体および媒体内またはその上に記憶された命令を含んでよく、命令は、デバイスにおける回路素子によって実行されたときに、先に記載されるかまたは図面に示されたいずれかの処理をデバイスに実装させてよい。
【００４５】
これらの実装は、分散されてもよい。例として、回路素子は、複数のプロセッサおよびメモリなど、複数の個別システム部品を含んでもよく、複数の分散された処理システムに及んでもよい。パラメータ、データベース、および他のデータ構造は、別々に記憶されて制御されてもよく、単一のメモリまたはデータベース中へ組み込まれてもよく、多くの異なる仕方で論理的かつ物理的に編成されてもよく、多くの異なる仕方で実装されてもよい。実装例は、リンクされたリスト、プログラム変数、ハッシュテーブル、アレイ、レコード（例えば、データベースレコード）、オブジェクト、ならびに暗黙的な記憶メカニズムを含む。命令は、単一のプログラムの部分（例えば、サブルーチンまたは他のコードセクション）を形成してもよく、複数の別個のプログラムを形成してもよく、複数のメモリおよびプロセッサにわたって分散されてもよく、多くの異なる仕方で実装されてもよい。実装例は、スタンドアローン・プログラム、およびライブラリの一部として、例えば、ダイナミックリンクライブラリ（ＤＬＬ：Ｄｙｎａｍｉｃ  Ｌｉｎｋ  Ｌｉｂｒａｒｙ）のような共有ライブラリを含む。ライブラリは、例えば、共有データと、回路素子によって実行されたときに、上述されるかまたは図面に示されたいずれかの処理を行う命令を含む１つ以上の共有プログラムとを含んでよい。
【００４６】
本明細書に記載される原理は、多くの異なる形態で具現されてよい。示される構成要素のすべてが必要とされないこともあるが、しかし、いくつかの実装は、追加の構成要素を含みうる。本明細書に提示される特許請求の範囲の趣旨または範囲から逸脱することなく、構成要素の配置およびタイプにおける変形が行われてもよい。追加的、異なる、またはより少ない構成要素が提供されてもよい。
【図１】
2018139106.tif 000003
【図２】
2018139106.tif 000004
【図３】
2018139106.tif 000005
【図４Ａ】
2018139106.tif 000006
【図４Ｂ】
2018139106.tif 000007
【図５】
2018139106.tif 000008
【図６】
2018139106.tif 000009
【図７】
2018139106.tif 000010
【図８】
2018139106.tif 000011
【図９】
2018139106.tif 000012
【図１０】
2018139106.tif 000013
【図１１】
2018139106.tif 000014
【図１２】
2018139106.tif 000015
【図１３】
2018139106.tif 000016
【図１４】
2018139106.tif 000017
【図１５】
2018139106.tif 000018
【外国語明細書】
2018139106000001.pdf
2018139106000002.pdf
2018139106000003.pdf
2018139106000004.pdf