(57)【要約】  失敗したテストスクリプトについてのデバッグデータを、ユーザインタラクションなしで生成、収集、格納、およびロードするための方法およびシステムが開示されている。例示的な実施形態において、トレース・キャプチャ・コンポーネントは、自動的に、失敗したテストスクリプトを再実行し、テストスクリプトの再実行中、失敗したテストスクリプトに関連する実行コンテキスト情報およびソースコードファイルを収集することになる。実行コンテキスト情報および関連するソースコードは、データベースまたは別の共有記憶媒体に格納され、複数のユーザによる同時デバッギングを提供するために、複数のユーザによってアクセス可能である。収集された情報によって、元のマシンへのアクセスまたはアプリケーションの再実行を必要としないで失敗したテストスクリプトのデバッギングが可能になる。
2018532169.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェア・テストスクリプトを統合し、ユーザインタラクションを必要としないでデバッギングするための方法であって、
ソフトウェア・テストスクリプトを実行するステップと、
前記ソフトウェア・テストスクリプトの実行不成功に応答して、
前記テストスクリプトをユーザインタラクションなしで再実行するステップと、
前記テストスクリプトの実行のトレースおよび関連するソースコードデータを、ユーザインタラクションなしで収集するステップと、
前記テストスクリプトの実行の前記トレースおよび関連するソースコードデータを、ユーザインタラクションなしで格納するステップ、とを含む方法。
【請求項２】
実行不成功は、テストの失敗である、請求項１に記載の方法。
【請求項３】
実行不成功は、テストのタイムアウトである、請求項１に記載の方法。
【請求項４】
前記格納されたトレースおよび関連するソースコードデータをリモート開発環境上でデバッギングするためにロードするステップをさらに含む、請求項１に記載の方法。
【請求項５】
前記トレースおよび関連するソースコードデータをデータベースに格納およびデータベースからアクセスするステップをさらに含む、請求項１に記載の方法。
【請求項６】
前記トレースおよび関連するソースコードデータをローカル開発環境に格納およびローカル開発環境からアクセスするステップをさらに含む、請求項１に記載の方法。
【請求項７】
データベースに類似する記憶媒体によって、格納されたトレースおよび関連するソースコードデータへの同時アクセスを複数のユーザに提供するステップをさらに含む、請求項１に記載の方法。
【請求項８】
前記トレースおよび関連するソースコードデータをユーザに表示するステップをさらに含む、請求項１に記載の方法。
【請求項９】
前記トレースおよび関連するソースコードデータを統合開発環境（ＩＤＥ）において表示するステップをさらに含む、請求項８に記載の方法。
【請求項１０】
ソフトウェア・テストスクリプトを統合し、ユーザインタラクションを必要としないでデバッギングするためのトレース・キャプチャ・コンポーネントであって、
前記ソフトウェア・テストスクリプトのステータスを受け付けるための１つ以上の処理装置と、
前記１つ以上の処理装置によって実行されると、前記１つ以上の処理装置に、
ソフトウェア・テストスクリプトを実行するステップと、
前記ソフトウェア・テストスクリプトの実行不成功に応答して、
前記テストスクリプトをユーザインタラクションなしで再実行するステップと、
前記テストスクリプトの実行のトレースおよび関連するソースコードデータをユーザインタラクションなしで収集するステップと、
前記テストスクリプトの実行の前記トレースおよび関連するソースコードデータをユーザインタラクションなしで格納するステップとを実行させる命令を格納する１つ以上の記憶装置とを備える、トレース・キャプチャ・コンポーネント。
【請求項１１】
ステータスは、テストの失敗を表す、請求項１０に記載のトレース・キャプチャ・コンポーネント。
【請求項１２】
ステータスは、テストのタイムアウトを表す、請求項１０に記載のトレース・キャプチャ・コンポーネント。
【請求項１３】
格納されたトレースおよび関連するソースコードデータをリモート開発環境上でデバッギングするためにロードするステップをさらに含む、請求項１０に記載のトレース・キャプチャ・コンポーネント。
【請求項１４】
格納されたトレースおよび関連するソースコードデータをデータベースに格納およびデータベースからアクセスするステップをさらに含む、請求項１０に記載のトレース・キャプチャ・コンポーネント。
【請求項１５】
格納されたトレースおよび関連するソースコードデータをローカル開発環境に格納およびローカル開発環境からアクセスするステップをさらに含む、請求項１０に記載のトレース・キャプチャ・コンポーネント。
【請求項１６】
格納されたトレースおよび関連するソースコードデータへの同時アクセスを複数のユーザに提供するステップをさらに含む、請求項１０に記載のトレース・キャプチャ・コンポーネント。
【請求項１７】
前記トレースおよび関連するソースコードデータを統合開発環境（ＩＤＥ）において表示するステップをさらに含む、請求項１０に記載のトレース・キャプチャ・コンポーネント。
【発明の詳細な説明】
【背景技術】
【０００１】
背景
ソフトウェアがより高度になるにつれて、ソフトウェアを設計、開発、テスト、およびデバッグするためのツールもまた、進歩している。その結果、ソフトウェア開発者は、現在、チームで作業することが多くなり、コード中のエラー（共通して「バグ」と呼ぶ）を特定および解決するのを助けるデバッガおよびテストスクリプトなどの開発ツールに頼っている。
【０００２】
通常、統合開発環境ソリューション（ＩＤＥ）の一部であるデバッガは、ソースコードのエラーを特定および解決するために使用されるツールである。「実行トレーサ」はデバッガ内の共通コンポーネントであり、これによって、デバッガは、開発中のアプリケーションなど、別プロセスの実行を記録、監視、および、制御できるようになる。アプリケーションの実行をトレーシングしている間、アプリケーションが実行中であるので、デバッガは、アプリケーションの「実行コンテキスト情報」にアクセスすることができる。アプリケーションの実行コンテキスト情報は、実行パス、メソッド呼び出し履歴、コールスタック、およびローカル変数ならびにグローバル変数の値などの情報を含み得る。
【０００３】
一般的に、実行トレーシングは、「ブレークポイント」と共に使用される。トレースポイントとブレークポイントとは、ほとんど同義である。トレースポイントは、自動的に設定され、実行トレーサによって処理されることが主な違いである。対照的に、ブレークポイントは、ユーザがアプリケーションを再開するまで待機する。ブレークポイントは、コード中の特別なポイントであり、アプリケーションの実行中にブレークポイントに達すると、そのポイントでアプリケーションの実行が停止され、開発者には実行コンテキスト情報が提供される。実行が停止されている間、開発者は、実行コンテキスト情報を確認して、エラーの原因を断定することができる。デバッギングを続行するには、開発者は、アプリケーションの実行を再開し、別のブレークポイントにヒットするまたはアプリケーションが実行を完了するまで実行すればよい。
【０００４】
デバッギングの処理は、非常に退屈で、時間がかかり得、ブレークポイントを設定してアプリケーションを実行するというサイクルを何度も必要とする。テストが失敗したまたはアプリケーションがエラーをスローした場合、開発者がデバッギング処理に際して行う最初の工程として、エラーの原因である可能性があるコードの領域を特定し、それらのコード位置にブレークポイントを手動で設定し、デバッガを用いてアプリケーションを手動で再び開始し、その後、実行がブレークポイントに達するまで待機する。ブレークポイントに達すると、開発者は、そのポイントにおけるアプリケーションの実行コンテキスト情報を確認してアプリケーションの挙動を分析する。開発者がエラーの原因を断定できない場合、開発者は、アプリケーションの実行を再開し、次のブレークポイントに実行が達するまでまたは実行が完了するまでアプリケーションを実行する（または、必要に応じて、実行における次ステップに漸進的に進む）。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
エラーを解決できず、アプリケーションが途中で終了した場合、開発者は、デバッガを用いてアプリケーションを再び開始し、必要に応じて、手動でその他のブレークポイントを設定しなければならない。他の開発者がアプリケーションのデバッギングを手助けしたい場合、彼らは、ローカル開発マシンへのアクセスを共有して上述の工程を用いなければならない。または、彼らのマシンに開発環境（つまり、ソースコード、バイナリ、デバッガ）を複製しなければならない。これは、時間がかかり、大量のリソースを必要とするが、エラーが複製されることが必ずしも保証されるわけではない。
【０００６】
発明者が理解するように、必要なのは、アプリケーション・エラーまたは失敗したテストをデバッグするために必要なデバッグ情報を、手動によるアプリケーションの再実行またはローカル開発マシンへのアクセスを必要としないで生成、収集、格納、およびロードするための方法またはツールである。
【課題を解決するための手段】
【０００７】
概要
本明細書は、テストスクリプトを用いたソフトウェアのデバッギングに関する技術を説明し、具体的には、失敗したテストスクリプトについての実行コンテキスト情報を収集、格納、および共有するための方法およびシステムを説明する。
【０００８】
全体として、本明細書に記載の主題の一態様は、ユーザインタラクションを必要としないでソフトウェア・テストスクリプトを統合してデバッギングデータを収集および格納するための方法およびコンポーネントにおいて実施することができる。例示的なコンポーネントは、１つ以上の処理装置と、１つ以上の処理装置によって実行されると、１つ以上の処理装置に例示的な方法を実施させる命令を格納した１つ以上の記憶装置とを含む。例示的な方法は、ソフトウェア・テストスクリプトを実行するステップと、ソフトウェア・テストスクリプトの実行不成功に応答して、テストスクリプトをユーザインタラクションなしで再実行するステップと、テストスクリプトの実行のトレースおよび関連するソースコードデータをユーザインタラクションなしで収集するステップと、テストスクリプトのトレースおよび関連するソースコードデータをユーザインタラクションなしで格納するステップとを含んでもよい。
【０００９】
これらのおよびその他の実施形態は、必要に応じて、以下の特徴のうちの１つ以上を含み得る。実行不成功はテストの失敗を含み得ること。実行不成功はテストのタイムアウトを含み得ること。格納されたトレースおよび関連するソースコードデータをリモート開発環境上でデバッギングするためにロードするステップ。トレースおよび関連するソースコードデータをデータベースに格納およびデータベースからアクセスするステップ。トレースおよび関連するソースコードデータをローカル開発環境に格納およびローカル開発環境からアクセスするステップ。データベースに類似する記憶媒体によって、格納されたトレースおよび関連するソースコードデータへの同時アクセスを複数のユーザに提供するステップ。トレースおよび関連するソースコードデータをユーザに表示するステップ。トレースおよび関連するソースコードデータを統合開発環境（ＩＤＥ）において表示するステップ。
【００１０】
本発明の１つ以上の実施形態の詳細を、一例としての添付の図面および以下の説明において記載する。本発明のその他の特徴、態様、および利点は、本明細書、図面、および特許請求の範囲から明らかになるだろう。
【図面の簡単な説明】
【００１１】
【図１】ソースコードファイルと、バイナリファイルと、単体テストファイルと、デバッガと、本明細書に記載の方法を実行するトレース・キャプチャ・コンポーネントとが含まれているローカル開発環境を説明する図である。また、デバッグデータが含まれているデータベースのホストとして動作するサーバも図示されている。
【図２】３つのメソッドを宣言しているクラスのソースコードファイルの例を示す図である。
【図２Ａ】図２において宣言されたメソッドであるMethodAのソースコードの例を示す図である。
【図３Ａ】「SUCCESS（成功）」を返す、MethodAについての単体テストの実行例を示す図である。
【図３Ｂ】「FAIL（失敗）」を返す、MethodAについての単体テストの実行例を示す図である。
【図４】開発者が単体テストをデバッギングする従来方法のフロー図である。
【図５】ユーザインタラクションを必要としないで単体テストのデバッグデータを生成、収集、および格納するための例示的な方法のフロー図である。
【図６】複数のリモートユーザ／開発者がアクセス可能なデータベースに格納されたデバッグデータを説明する図である。
【図７】開発者が、単体テストをローカル開発環境へのアクセスまたはアプリケーションの再実行を必要としないでデバッギングする方法のフロー図である。
【図８】ローカル開発環境において単体テストをデバッギングしているＩＤＥのユーザーインターフェースのスクリーンショットである。
【図９】例示的なコンピューティングデバイスを説明するブロック図である。
【発明を実施するための形態】
【００１２】
詳細な説明
本明細書に記載の例示的な実施形態は、ローカル開発環境から、失敗したテストスクリプトについてのデバッグデータを、開発者がデバッギング処理をセットアップするまたは稼働中のデバッガ／デバッギング処理とやりとりする必要なく生成、収集、格納、およびロードするステップを含む。図１は、ローカル開発環境（１０５）と、データベース（１５５）とを示す。ローカル開発環境（１０５）には、ソースコードファイル（１１０）と、ソースコードファイル（１１０）に関連する実行可能バイナリ（１１５）と、バイナリ（１１５）に対して実行される単体テスト（１２０）と、実行トレースデータを生成するためのデバッガ（１２５）と、本明細書に記載の方法を実施するためのトレース・キャプチャ・コンポーネント（１３０）とが含まれ得る。本明細書に記載のローカル開発環境（１０５）は、一例にすぎず、本発明の範囲を限定するものとみなすべきではない。いくつかの実施形態において、開発環境（１０５）は、より高度であり得、ソースコードおよびバイナリが複数の場所に存在し、リモートライブラリおよびサービスへのアクセスを必要とする。また、開発マシンは、統合開発環境ソフトウェア（ＩＤＥ）を有し得る。
【００１３】
例示的な実施形態において、ＩＤＥは、統合ソフトウェアソリューションにおける、ソースコードファイルと、バイナリと、デバッガと、コンパイラと、プロファイラと、その他の開発コンポーネントとを管理し得る。この例示的な実施形態は、トレース・キャプチャ・コンポーネント（１３０）の機能を、これらのＩＤＥ構成要素と合わせて説明する。この例において、トレース・キャプチャ・コンポーネント（１３０）はスタンドアロン・コンポーネントとして示されているが、その他の例において、コンポーネント（１３０）は、デバッガ（１２５）に統合されてもよく、拡張としてＩＤＥに統合されてもよく、サービスとしてサーバ上に統合されてもよい。
【００１４】
また、図１は、失敗した単体テストについての関連する実行トレースおよびソースコードデータを含むデバッグデータ（１６０、１６５、１７０）を格納し得るデータベース（１５５）も示している。この例示的な実施形態において、一般的に、失敗したテストのみがデバッギングを必要とするため、失敗したテストのみが処理されてデータベース（１５５）に格納されているが、この方法は、失敗したテストにのみ限られず、成功した単体テストおよびアプリケーションテストを全体的に含むすべてのデバッギングに適用可能である。
【００１５】
図２は、３つのメソッド：MethodA（２０５）、MethodB（２１０）、およびMethodC（２１５）を宣言しているクラスのソースコードファイルの例である。図２Ａは、宣言されたメソッドのうちの１つであるMethodA（２０５）のソースコードの例である。MethodAは、２つの整数入力パラメータを有し、true（真）またはfalse（偽）のいずれかのブール値を返すことができる。MethodAは、第１パラメータｘが第２パラメータｙの値の半分である場合、trueを返すはずであり、そうでない場合、メソッドは、falseを返すはずである。このメソッドに関連する一連の単体テストがうまく構成されたものであると、次の両方の場合をテストすることになる。１）ｘの値がｙの値の半分である場合、２）ｘの値がｙの値の半分ではない場合。ここで、ソースコードは、間違ってtrueを常に返すため、バグが含まれている。そのため、このメソッドについての単体テストは、第１パラメータｘが第２パラメータｙの値の半分でない場合をテストし、（以下の図３Ｂにさらに示すように）ソースコードにバグ／エラーがあることを示す「FAIL（失敗）」を返すはずである。
【００１６】
図３Ａは、MethodAに関連する単体テストの実行例である。ソフトウェア・テストスクリプトであるMethodA_UnitTest1は、６および１２という入力パラメータを用いてMethodAを呼び出す。この例において、第１パラメータｘが第２パラメータｙの半分である場合にメソッドがtrueを返すかどうかをテストするので、単体テストは成功である。６という値は１２の半分であるため、テストは、戻り値がtrueであることを予想し、メソッドは、実際に、値trueを返す。したがって、テストを通過する。
【００１７】
図３Ｂは、別の単体テストの実行例である。MethodA_UnitTest2もMethodAを呼び出すが、１および１０という入力パラメータを用いる。１は１０という値の半分ではないため、単体テストは戻り値がfalseであることを予想するが、メソッドは、実際には、値trueを返す。したがって、単体テストは失敗し、アプリケーションにおける潜在的なバグについて知らせる。
【００１８】
単体テストは、アプリケーションを実行およびテストする１つの手段に過ぎない。本明細書における単体テストの使用は、一例にすぎず、本発明の範囲を限定するものとみなされるべきではない。たとえば、その他の種類のテストとして、全般的な（単体ではない）テストスクリプト、自動ＧＵＩテストツール、またはユーザ主導のテストなどがあり得る。また、１回につき１つのメソッドがテストされる本明細書に記載のメソッド集中型（method-focused-type）単体テストも、一例にすぎず、本発明の範囲を限定するものとみなされるべきではない。単体テストの構造および複雑性、または開発中のアプリケーションに関連するその他のテスト方針は、アプリケーションの開発および設計によって異なり得る。
【００１９】
図４は、単体テストをデバッギングするための従来方法のフロー図である。一般的に、コード変更があり、アプリケーションの関連するバイナリがリビルドされた場合、すべてのまたは一連の単体テストは自動的に走るまたは開発者によって呼び出される。ビルドの完全性を確認し、コード変更に起因する潜在的エラーを検出するために、この新しく生成されたビルドに対して単体テストが実行される。従来は、単体テストが失敗した場合、開発者は、実行コンテキスト情報を確認するために、ソースコードにブレークポイントを設定し、本明細書においてより詳細に記載するデバッガを用いてアプリケーションを再実行する手動プロセスを経る。
【００２０】
従来方法は、開始すると（４０５）、単体テストを実行する（４１０）。テストを通過すると（４１５、４１６）、つまり、バグが検出されなかった場合、開発者は、なにもしない（４２０）。テストに失敗すると（４１５、４１７）、開発者は、まず、単体テストおよび関連するエラーを確認して（４２５）、失敗の原因となっているソースコードの領域を断定する。次に、開発者は、コードのこれらの領域にブレークポイントを設定して（４３０）デバッガにアプリケーションの実行をこれらのポイントで停止するように指示する。次に、開発者は、アプリケーションの実行をトレースするために、デバッガを用いて単体テストを再び開始する（４３５）。アプリケーションの実行がブレークポイントに達すると（４４０、４４１）、デバッガは、そのポイントにおいてアプリケーションの実行を停止し、開発者にアプリケーションの実行コンテキスト情報を提供する。開発者は、情報を確認し（４４５）、バグを解決しようとする（４５０）。
【００２１】
開発者がバグを解決できる場合（４５０、４５１）、メソッドは完成し（４６０）、開発者は、必要なソースコード変更を実施することができる。しかしながら、開発者がバグを解決できない場合（４５０、４５２）、開発者は、アプリケーションの実行を再開する（４５５）。別のブレークポイントにヒットすると（４４０、４４１）、実行は再び停止され、開発者は、バグを解決しようとブレークポイントにおける実行コンテキスト情報を確認する工程（４４５）を繰り返す。実行は、ブレークポイントにヒットすることなく続行する場合がある（４４０、４４２）、つまり、実行が完了または途中で終了してバグがまだ存在する場合がある。
【００２２】
次に、開発者は、単体テストを確認する工程（４２５）に戻る。図に示すように、このプロセスは、開発者にとって非常に時間のかかる退屈なプロセスであり得、手動で、単体テストおよびソースコードファイルを確認し、ブレークポイントを設定し、アプリケーションを再実行するというサイクルを何度も必要とする可能性がある。また、開発者は、アプリケーションが存在するローカル開発マシンにアクセスし、デバッガを用いてアプリケーションを実行し、アプリケーションについての実行コンテキスト情報を確認するために関連するソースコードにブレークポイントを手動で設定する必要がある。
【００２３】
図５は、例示的な実施形態に係る、失敗した単体テストを実行した後にトレース・キャプチャ・コンポーネントによって生成される関係のあるデバッグデータをユーザインタラクションなしで生成、収集、および格納するための例示的な方法を示すフロー図である。この例示的な実施形態において、「失敗した単体テスト」は、予想した戻り値が実際の戻り値と一致しない場合を表すが、本発明の範囲を限定するものとみなされるべきではない。また、「Failed」は、コードが役に立たないまたは実行不可である場合も含む。
【００２４】
例示的な方法は、開始すると（５０５）、単体テストを実行する（５１０）。テストを通過した場合（５１５、５１６）、メソッドは、なにもしない場合がある（５２０）。テストに失敗すると（５１５、５１７）、ソフトウェア・テストスクリプトの実行が不成功であることを意味し、例示的な方法が、デバッガおよび有効化された実行トレーシングを用いて、ユーザインタラクションなしで単体テストを自動的に再実行し得る（５２５）。この再実行工程は、ソースコードの確認（４２５）および手動によるブレークポイントの設定（４３０）など、他のいくつかの前工程を伴って開発者がこの工程をおそらく複数回（４５０、４５２）は手動で（４３５）行う従来方法とは対照的である。この例示的な方法において、トレース・キャプチャ・コンポーネントは、単体テストの実行パスに関連するソースコードの行ごとに、トレースポイントをユーザインタラクションなしで自動的に設定し得（５３０）、ソースコードの行ごとに、実行コンテキスト情報を収集し得る（５３５）。また、トレース・キャプチャ・コンポーネントは、ソースコードファイルの場所、種類、およびサイズなど、特定の要因に基づいて、実行コンテキスト情報をユーザインタラクションなしで自動的に収集および格納するように構成／最適化され得る。これらは、トレース・キャプチャ・コンポーネント／方法の有効性および効率を向上させるためのいくつかの例示的な要因に過ぎず、本発明の範囲を限定するものとみなされるべきではない。ソフトウェア・テストスクリプトの実行は、テストが失敗した場合またはテストがタイムアウトした場合、不成功である。
【００２５】
対照的に、従来方法において、開発者は、関連するソースコードファイルを断定するために手動で単体テストを調べて（４２５）、これらのコード領域をトレースするために、関連するソースコードに手動でブレークポイントを設定し（４３０）、これらのポイントにおいて実行コンテキスト情報を確認する（４４５）。
【００２６】
例示的な方法において、収集された関係のあるトレースデータ（つまり、実行コンテキスト情報および関連するソースコード）は、その後、複数の開発者による確認のために、データベースまたはその他の記憶媒体に格納され（５４０）、データベースまたはその他の記憶媒体からアクセスされ得る。いくつかの例において、関係のあるトレースデータは、失敗した単体テストについてのみ格納されてもよい。複数のユーザは、格納されたトレースおよび関連するソースコードデータに同時アクセスできる。これによって例示的な方法は完了し（５４５）、ここで、いずれの開発者も、アプリケーションを再実行するまたはローカル開発マシンへアクセスする必要なく単体テストについての収集されたデバッグデータを使用して、エラーをデバッグできるようになる。これは、開発者がローカル開発マシンにアクセスしてアプリケーションを実行中にデバッグする従来方法との著しい違いである。
【００２７】
図６は、MethodA_UnitTest2（６１０）についてのデバッグデータが含まれているデータベース（６０５）の例である。図３Ｂの例および図５のフロー図に基づくと、これは、例示的な実施形態に記載の方法を適用した場合の結果であるはずである。図に示すように、元の開発者またはチームの他の開発者など、複数のユーザ（６１５、６２０、６２５）は、アプリケーションを再実行するまたはローカル開発環境にアクセスする必要なくデバッグデータ（単体テストについての収集された実行コンテキスト情報および関連するソースコード）にアクセスして自身のローカル・マシンに取り込むことができる（６３０）。
【００２８】
図７は、元のローカル開発環境へのアクセスまたはアプリケーションの再実行を必要としないで開発者が単体テストをデバッギングする方法のフロー図である。例示的な方法が開始すると（７０５）、開発者は、（図５に記載したように）収集および（図６に記載したように）格納され得た単体テストについてのデバッグデータをロードし得る（７１０）。そのデータを用いて、開発者は、統合開発環境ソフトウェア（ＩＤＥ）のようなユーザーインターフェースにおいて実行コンテキストおよび関連するソースコードを確認し、アプリケーションまたは単体テストを再実行することなく自身のローカル・マシン（つまり、元の開発マシンではない）からバグを解決し得る（７１５）。
【００２９】
図８は、新しい開発環境上のＩＤＥユーザーインターフェースのスクリーンショットの例であり、この場合、ローカル開発環境２とMethodA_UnitTest2_DebugDataについてのデバッグデータを示す。この例において、失敗した単体テストについてのデバッグデータが収集および格納され、ここで、元のローカル開発環境（１０５）とは異なる新しい開発環境であるローカル開発環境２（８００）にローカルにロードされている。この例示的なＵＩは、単体テストについての関連するソースコードファイル（８１５、８１６、８１７）の一覧を表示して開発者に選択させるＩＤＥソフトウェア（８０５）を示す。また、ユーザーインターフェースは、アプリケーションが実際にローカル・マシン上で実行中である場合と同じようにアプリケーションの実行トレースを見て回るための、「ステップバック」（８２０）、「ステップフォワード」（８２１）、「メソッドにステップイン」（８２２）、および「メソッドからステップアウト」（８２３）オプションなどのデバッギング能力を提供する。ここで、メソッドコールであるコードの行上に実行ポイント（８３５）がないため、「メソッドにステップイン」機能は無効化されている。トレース・キャプチャ・コンポーネントによって収集されたデバッグデータによって、元のローカル開発環境上でのデバッガと同様の機能が開発者に提供される。また、内部ウィンドウ（８２５）は、この場合は、行番号（８３０）とあわせてMethodAについての関係のあるソースコードも表示している。デバッギング処理における現在の実行ポイント（８３５）も、開発者のためにハイライトされている。そのポイント（８３５）における実行コンテキスト情報は、下のウィンドウ（８４５）に表示されている。ハイライトされた現在の実行ポイント（８３５）およびデバッギング情報（８４０〜８４５）は、開発者が「ステップ」（８２０〜８２３）を使用したりソースコードの異なる行（８３０）をクリックしたりすると更新される。また、開発者は、表示する実行コンテキスト情報の種類（８４０〜８４３）を選択することができ、ローカル変数情報（８４０）、コールスタックデータ（８４１）、メソッド履歴（８４２）、または変数履歴（８４３）などがある。このスクリーンショットにおいて、「ローカル」（８４０）が選択されているので、単体テストの実行中の実行ポイント（８３５）第８行目におけるローカル変数の値が表示されている（８４５）。ここで、開発者は、この場合、ローカル変数は正しくロードしているが、戻り値が誤りであることを断定できる。このように、バグを解決する。
【００３０】
図９は、コンピューティングデバイス（９００）上のアプリケーションを示すハイレベルブロック図である。基本的な構成（９０１）において、コンピューティングデバイス（９００）は、通常、１つ以上のプロセッサ（９１０）と、システムメモリ（９２０）と、メモリバス（９３０）とを備える。メモリバスは、プロセッサとシステムメモリとの間の通信を行うために使用される。また、構成は、上述の方法を実施するスタンドアロン・トレース・キャプチャ・コンポーネント（９２６）も含み得るまたはアプリケーション（９２２、９２３）に統合され得る。
【００３１】
異なる構成によっては、プロセッサ（９１０）は、マイクロプロセッサ（μＰ）、マイクロコントローラ（μＣ）、デジタル信号プロセッサ（ＤＳＰ）、またはそれらの任意の組み合わせであり得る。プロセッサ（９１０）は、Ｌ１キャッシュ（９１１）およびＬ２キャッシュ（９１２）など、１つ以上のレベルのキャッシュと、プロセッサコア（９１３）と、レジスタ（９１４）とを備え得る。プロセッサコア（９１３）は、算術論理演算装置（ＡＬＵ）、浮動小数点演算装置（ＦＰＵ）、デジタル信号処理コア（ＤＳＰコア）、またはそれらの任意の組み合わせを備え得る。メモリコントローラ（９１６）は、独立部品またはプロセッサ（９１０）の内部部品であり得る。
【００３２】
所望の構成によっては、システムメモリ（９２０）は、揮発性メモリ（ＲＡＭなど）、不揮発性メモリ（ＲＯＭ、フラッシュメモリ、など）、またはそれらの任意の組み合わせなど、任意の種類であり得るが、これらに限定されない。システムメモリ（９２０）は、通常、オペレーティングシステム（９２１）と、１つ以上のアプリケーション（９２２）と、プログラムデータ（９２４）とを備える。アプリケーション（９２２）は、トレース・キャプチャ・コンポーネント（９２６）、またはアプリケーションまたはテストの実行のデバッグデータを生成、収集、格納、およびロードするためシステムおよび方法（９２３）を含み得る。プログラムデータ（９２４）は、１つ以上の処理装置によって実行されると上述のメソッドおよびコンポーネント（９２３）についてのシステムおよび方法を実施する命令を格納するステップを含む。または、命令および方法の実装は、トレース・キャプチャ・コンポーネント（９２６）によって実行されてもよい。いくつかの実施形態において、アプリケーション（９２２）は、オペレーティングシステム（９２１）上でプログラムデータ（９２４）を用いて動作するように構成され得る。
【００３３】
コンピューティングデバイス（９００）は、基本的な構成（９０１）と必要な装置およびインターフェースとの間の通信を容易にするために、さらなる特徴または機能、およびさらなるインターフェースを有し得る。
【００３４】
システムメモリ（９２０）は、コンピュータ記憶媒体の一例である。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくはその他のメモリ・テクノロジー、ＣＤ−ＲＯＭ、デジタル多目的ディスク（ＤＶＤ）、もしくはその他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくはその他の磁気記憶装置、または所望の情報を格納するのに使用できてコンピューティングデバイス７００によって利用可能な任意のその他の媒体を含むが、これらに限定されない。このようなコンピュータ記憶媒体は、いずれもデバイス（９００）の一部であり得る。
【００３５】
コンピューティングデバイス（９００）は、携帯電話、スマートフォン、携帯情報端末（ＰＤＡ）、個人向けメディアプレーヤーデバイス、タブレットコンピュータ（タブレット）、無線ウェブウォッチデバイス、個人向けヘッドセット装置、特定用途装置、または上述の機能のいずれかを含むハイブリッド装置など、スモール・フォーム・ファクター・ポータブル（またはモバイル）電子機器の一部として実装することができる。コンピューティングデバイス（９００）は、ラップトップコンピュータおよび非ラップトップコンピュータ構成の両方を含むパーソナルコンピュータとして実装することもできる。
【００３６】
上述の詳細な説明では、デバイスおよび／または処理のさまざまな実施形態を、ブロック図、フロー図、および／または例を用いて説明した。このようなブロック図、フロー図、および／または例が１つ以上の機能および／または動作を含んでいる限り、このようなブロック図、フロー図、または例内の各機能および／または動作がさまざまなハードウェア、ソフトウェア、ファームウェア、またはそれらの実質的な任意の組み合わせによって、個々、および／またはまとめて実装され得ることが当業者に理解されるであろう。１つの実施形態において、本明細書に記載の主題のいくつかの部分は、特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ：ＦＰＧＡ）、デジタル信号プロセッサ（ＤＳＰ）、またはその他の統合形式で実装されてもよい。しかしながら、本明細書に開示の実施形態のいくつかの態様のすべてまたは一部は、１つ以上のコンピュータ上で走る１つ以上のコンピュータプログラムとして、１つ以上のプロセッサ上で走る１つ以上のプログラムとして、ファームウェアとして、またはそれらの実質的な任意の組み合わせとして、集積回路において同等に実装可能であること、およびソフトウェアおよび／またはファームウェア用に回路を設計するおよび／またはプログラムを書くことは、本開示に鑑みて、当業者の技能の範囲内であるだろうことが当業者にはわかるであろう。加えて、本明細書に記載の主題の機構は、さまざまな形式のプログラムプロダクトとして配布できること、および本明細書に記載の主題の例示的な実施形態は、実際に配布を行うために使用される特定の種類の非一時的な信号担持媒体に関係なく適用されることを、当業者は理解するであろう。たとえば、非一時的な信号担持媒体は、以下を含むが、これらに限定されない。フロッピー（登録商標）ディスク、ハードディスクドライブ、コンパクトディスク（Ｃｏｍｐａｃｔ  Ｄｉｓｃ：ＣＤ）、デジタルビデオディスク（Ｄｉｇｉｔａｌ  Ｖｉｄｅｏ  Ｄｉｓｋ：ＤＶＤ）、デジタルテープ、コンピュータメモリなどの記録可能型の媒体、およびデジタルおよび／またはアナログ通信媒体などの伝送媒体（たとえば、光ファイバケーブル、導波路、有線通信リンク、無線通信リンクなど）。
【００３７】
本明細書におけるすべての複数形および／または単数形の用語の使用について、当業者は、文脈および／または用途に対して適切に複数形から単数形および／または単数形から複数形に言い換えることができる。さまざまな単数形／複数形の置き換えは、明確にするために本明細書において明示されている場合がある。
【００３８】
このように、主題の具体的な実施形態を説明した。その他の実施形態は、以下の請求項の範囲に含まれる。場合によっては、請求項に記載の動作は、異なる順序で行うことができ、それでもなお所望の結果が得られる。加えて、添付の図面に示したプロセスは、所望の結果を得るために必ずしも順次または図示された特定の順序で行われなければならないわけではない。実装によっては、マルチタスクおよび並列処理は利点になり得る。
【００３９】
例示的な実施形態によると、失敗したテストスクリプトについてのデバッグデータを、ユーザインタラクションなしで生成、収集、格納、およびロードするための方法およびシステムが開示されている。例示的な実施形態において、トレース・キャプチャ・コンポーネントは、自動的に、失敗したテストスクリプトを再実行し、テストスクリプトの再実行中、失敗したテストスクリプトに関連する実行コンテキスト情報およびソースコードファイルを収集することになる。実行コンテキスト情報および関連するソースコードは、データベースまたは別の共有記憶媒体に格納され、複数のユーザによる同時デバッギングを提供するために、複数のユーザによってアクセス可能である。収集された情報によって、元のマシンへのアクセスまたはアプリケーションの再実行を必要としないで失敗したテストスクリプトのデバッギングが可能になる。
【００４０】
以下では、本開示に係るシステムおよび方法のさらなる例を説明する。
例１は、ソフトウェア・テストスクリプトを統合し、ユーザインタラクションを必要としないでデバッギングするための方法に関し、方法は、ソフトウェア・テストスクリプトを実行するステップと、ソフトウェア・テストスクリプトの実行不成功に応答して、テストスクリプトをユーザインタラクションなしで再実行するステップと、テストスクリプトの実行のトレースおよび関連するソースコードデータをユーザインタラクションなしで収集するステップと、テストスクリプトの実行のトレースおよび関連するソースコードデータをユーザインタラクションなしで格納するステップとを含む。
【００４１】
例１に基づく例２において、実行不成功は、テストの失敗である。
例１または例２に基づく例３において、実行不成功は、テストのタイムアウトである。
【００４２】
例１〜例３のうちの１つに基づく例４において、方法は、さらに、格納されたトレースおよび関連するソースコードデータをリモート開発環境上でデバッギングするためにロードするステップを含む。
【００４３】
例１〜例４のうちの１つに基づく例５において、方法は、さらに、トレースおよび関連するソースコードデータをデータベースに格納およびデータベースからアクセスするステップを含む。
【００４４】
例１〜例４のうちの１つに基づく例６において、方法は、さらに、トレースおよび関連するソースコードデータをローカル開発環境に格納およびローカル開発環境からアクセスするステップを含む。
【００４５】
例１〜例６のうちの１つに基づく例７において、方法は、さらに、データベースに類似する記憶媒体によって、格納されたトレースおよび関連するソースコードデータへの同時アクセスを複数のユーザに提供するステップを含む。
【００４６】
例１〜例７のうちの１つに基づく例８において、方法は、さらに、トレースおよび関連するソースコードデータをユーザに表示するステップを含む。
【００４７】
例１〜例８のうちの１つに基づく例９において、方法は、さらに、トレースおよび関連するソースコードデータを統合開発環境（ＩＤＥ）において表示するステップを含む。
【００４８】
例１０は、ソフトウェア・テストスクリプトを統合し、ユーザインタラクションを必要としないでデバッギングするためのトレース・キャプチャ・コンポーネントに関し、トレース・キャプチャ・コンポーネントは、ソフトウェア・テストスクリプトのステータスを受け付けるための１つ以上の処理装置と、１つ以上の処理装置によって実行されると、１つ以上の処理装置に、ソフトウェア・テストスクリプトを実行するステップと、ソフトウェア・テストスクリプトの実行不成功に応答して、テストスクリプトをユーザインタラクションなしで再実行するステップと、テストスクリプトの実行のトレースおよび関連するソースコードデータをユーザインタラクションなしで収集するステップと、テストスクリプトの実行のトレースおよび関連するソースコードデータをユーザインタラクションなしで格納するステップとを実行させる命令を格納する１つ以上の記憶装置とを備える。
【００４９】
例１０に基づく例１１において、ステータスは、テストの失敗を表す。
例１０または例１１に基づく例１２において、ステータスは、テストのタイムアウトを表す。
【００５０】
例１０〜例１２のうちの１つに基づく例１３において、トレース・キャプチャ・コンポーネントは、さらに、格納されたトレースおよび関連するソースコードデータをリモート開発環境上でデバッギングするためにロードするステップをさらに含む。
【００５１】
例１０〜例１３のうちの１つに基づく例１４において、トレース・キャプチャ・コンポーネントは、さらに、格納されたトレースおよび関連するソースコードデータをデータベースに格納およびデータベースからアクセスするステップを含む。
【００５２】
例１０〜例１３のうちの１つに基づく例１５において、トレース・キャプチャ・コンポーネントは、さらに、格納されたトレースおよび関連するソースコードデータをローカル開発環境に格納およびローカル開発環境からアクセスするステップを含む。
【００５３】
例１０〜例１５のうちの１つに基づく例１６において、トレース・キャプチャ・コンポーネントは、さらに、格納されたトレースおよび関連するソースコードデータへの同時アクセスを複数のユーザに提供するステップを含む。
【００５４】
例１０〜例１６のうちの１つに基づく例１７において、トレース・キャプチャ・コンポーネントは、さらに、トレースおよび関連するソースコードデータを統合開発環境（ＩＤＥ）において表示するステップを含む。
【図１】
2018532169.tif 000003
【図２】
2018532169.tif 000004
【図２Ａ】
2018532169.tif 000005
【図３Ａ】
2018532169.tif 000006
【図３Ｂ】
2018532169.tif 000007
【図４】
2018532169.tif 000008
【図５】
2018532169.tif 000009
【図６】
2018532169.tif 000010
【図７】
2018532169.tif 000011
【図８】
2018532169.tif 000012
【図９】
2018532169.tif 000013
【国際調査報告】
2018532169.tif 000014
2018532169.tif 000015
2018532169.tif 000016