(57)【特許請求の範囲】
【請求項１】
試験ツールが、ソフトウェアプログラムに対応したユーザ製品コード及びユーザ試験コードを含むユーザーリポジトリをクローン生成するステップと、 前記試験ツールが、前記ユーザーリポジトリの前記クローン生成に基づいて、前記ユーザ製品コードに基づいたツール製品コードを含み且つ前記ユーザ試験コードに基づいたツール試験コードを含むように、ツールリポジトリを生成するステップと、 前記試験ツールが、前記ユーザーリポジトリの変化について前記ユーザーリポジトリを監視するステップと、 前記試験ツールが、前記ユーザーリポジトリの監視に基づいて、前記ユーザーリポジトリの変化を検出するステップであって、前記ユーザーリポジトリの前記変化は、前記ユーザ製品コードの対応する変更された部分を伴う前記ユーザ製品コードの変化を含む、ステップと、 前記試験ツールが、前記ユーザーリポジトリの前記変化の検出に応答して、前記変更された部分により前記ツールリポジトリに含まれる前記ツール製品コードを更新するステップと、 前記試験ツールが、前記変更された部分により前記ツール製品コードを更新することに応答して、前記変更された部分に基づいて前記ツール試験コード用の試験更新コードを生成するステップであって、前記試験更新コードの生成は、前記変更された部分に対する試験更新コードの生成を含む、ステップと、 前記試験ツールが、前記ユーザーリポジトリが前記試験更新コードを前記ユーザーリポジトリに追加するように要求するプル要求を、前記ユーザーリポジトリへ伝達するステップと、 前記試験ツールが、前記ユーザーリポジトリが前記プル要求を受け取ることに応答して、且つ、前記ユーザーリポジトリにおける前記試験更新コードを取り出すことの決定に応答して、前記ユーザーリポジトリからプルコマンドを受け取るステップと、 前記試験ツールが、前記プルコマンドに応答して、前記試験更新コードを前記ユーザーリポジトリへ伝達するステップと、を有する方法。
【請求項２】
前記変更された部分は、前記ユーザ製品コードに対する１つ又は複数の追加及び前記ユーザ製品コードからの削除を含む前記ユーザ製品コードの一部分を含む請求項１に記載の方法。
【請求項３】
前記試験更新コードを生成するステップは、分岐メカニズムに基づいて試験の品質又は試験時間が異なる複数の試験コードバージョンを生成するステップを含む請求項１に記載の方法。
【請求項４】
前記試験ツールが、前記試験更新コードが前記変更された部分に対応している通知を生成するステップであって、前記通知は前記変更された部分を識別することを促進するステップを更に有する請求項１に記載の方法。
【請求項５】
前記ユーザーリポジトリの前記変化を検出するステップは、前記試験ツールが、前記ユーザ製品コードが変更されているという通知を、前記ユーザーリポジトリから受け取るステップを含む請求項１に記載の方法。
【請求項６】
システムが動作を実行するようにするべく構成されたコンピュータ実行可能命令を含むコンピュータ可読ストレージ媒体であって、  前記動作は、 試験ツールが、ソフトウェアプログラムに対応したユーザ製品コード及びユーザ試験コードを含むユーザーリポジトリをクローン生成するステップと、 前記試験ツールが、前記ユーザーリポジトリの前記クローン生成に基づいて、前記ユーザ製品コードに基づいたツール製品コードを含み且つ前記ユーザ試験コードに基づいたツール試験コードを含むように、ツールリポジトリを生成するステップと、 前記試験ツールが、前記ユーザーリポジトリの変化について前記ユーザーリポジトリを監視するステップと、 前記試験ツールが、前記ユーザーリポジトリの監視に基づいて、前記ユーザーリポジトリの変化を検出するステップであって、前記ユーザーリポジトリの前記変化は、前記ユーザ製品コードの対応する変更された部分を伴う前記ユーザ製品コードの変化を含む、ステップと、 前記試験ツールが、前記ユーザーリポジトリの前記変化の検出に応答して、前記変更された部分により前記ツールリポジトリに含まれる前記ツール製品コードを更新するステップと、 前記試験ツールが、前記変更された部分により前記ツール製品コードを更新することに応答して、前記変更された部分に基づいて前記ツール試験コード用の試験更新コードを生成するステップであって、前記試験更新コードの生成は、前記変更された部分に対する試験更新コードの生成を含む、ステップと、 前記試験ツールが、前記ユーザーリポジトリが前記試験更新コードを前記ユーザーリポジトリに追加するように要求するプル要求を、前記ユーザーリポジトリへ伝達するステップと、 前記試験ツールが、前記ユーザーリポジトリが前記プル要求を受け取ることに応答して、且つ、前記ユーザーリポジトリにおける前記試験更新コードを取り出すことの決定に応答して、前記ユーザーリポジトリからプルコマンドを受け取るステップと、 前記試験ツールが、前記プルコマンドに応答して、前記試験更新コードを前記ユーザーリポジトリへ伝達するステップと、を有する、コンピュータ可読ストレージ媒体。
【請求項７】
前記変更された部分は、前記ユーザ製品コードに対する１つ又は複数の追加及び前記ユーザ製品コードからの削除を含む前記ユーザ製品コードの一部分を含む請求項６に記載のコンピュータ可読ストレージ媒体。
【請求項８】
前記試験更新コードを生成するステップは、分岐メカニズムに基づいて試験の品質又は試験時間が異なる複数の試験コードバージョンを生成するステップを含む請求項６に記載のコンピュータ可読ストレージ媒体。
【請求項９】
前記動作は、前記試験ツールが、前記試験更新コードが前記変更された部分に対応している通知を生成するステップであって、前記通知は前記変更された部分を識別することを促進するステップを更に有する請求項６に記載のコンピュータ可読ストレージ媒体。
【請求項１０】
前記動作は、前記ユーザーリポジトリの前記変化を検出するステップは、前記試験ツールが、前記ユーザ製品コードが変更されているという通知を、前記ユーザーリポジトリから受け取るステップを含む請求項６に記載のコンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に開示されている実施形態は、ソフトウェア試験コードの生成方法及びコンピュータ可読ストレージ媒体に関する。
【背景技術】
【０００２】
ソフトウェアの有効性の確認又は検証などのソフトウェアの試験は、情報技術（Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ：ＩＴ）組織及びソフトウェア開発者の間において一般的な活動である。例えば、ソフトウェアが、１つ又は複数のクライアントコンピュータシステムにおいて稼働するデスクトップアプリケーションであるのか、モバイル装置上において稼働するモバイル装置アプリケーションであるのか、或いは、１つ又は複数のサーバーコンピュータシステムにおいて稼働するウェブアプリケーションであるのかを問わず、ソフトウェアの品質の検証は、多くの場合に重要である。ソフトウェアにおけるいくつかのタイプの誤りは、ユーザーに煩わしさ又は不便をもたらすのみであるが、その他のタイプの誤りは、データ損失及び経済的損失などのその他の問題をもたらす潜在性を有している。ソフトウェアを試験するべく、しばしば、試験コードが使用されており、この場合には、試験コードは、ソフトウェアが意図したとおりに振る舞うかどうかを判定するべく、入力及び条件をソフトウェアに提供しうる。
【０００３】
本明細書において特許請求されている主題は、任意の欠点を解決したり、或いは、上述のものなどの環境においてのみ稼働する実施形態に限定されるものではない。むしろ、この背景の節は、本明細書において記述されているいくつかの実施形態が実施されうる１つの例示用の技術領域を示すべく提供されるものに過ぎない。
【発明の概要】
【課題を解決するための手段】
【０００４】
一実施形態の一態様によれば、方法は、製品コード及び試験コードを含むユーザーリポジトリの変化を検出するステップを含んでもよい。製品コード（ｐｒｏｄｕｃｔ  ｃｏｄｅ）及び試験コード（ｔｅｓｔ  ｃｏｄｅ）は、ソフトウェアプログラムに対応していてもよい。ユーザーリポジトリの変化は、製品コードの対応する変更された部分を伴う製品コードの変化を含みうる。又、方法は、試験ツール（ｔｅｓｔ  ｔｏｏｌ）により、試験コード用の試験更新コード（ｔｅｓｔ  ｃｏｄｅ  ｕｐｄａｔｅ）を生成するステップを含んでもよい。試験更新コードは、ユーザーリポジトリの変化の検出に基づいて、且つ、製品コードの変更された部分に基づいて、生成されてもよい。方法は、ユーザーリポジトリが試験更新コードをユーザーによって管理されたリポジトリに追加するように要求するプル要求（ｐｕｌｌ  ｒｅｑｕｅｓｔ）を伝達するステップを更に含んでもよい。
【０００５】
実施形態の目的及び利点は、少なくとも、請求項において具体的に指摘されている要素、特徴、及び組合せにより、実現及び達成されることになる。上述の概略的な説明と以下の詳細な説明は、いずれも、例示及び説明を目的としており、且つ、特許請求されている本発明の限定を目的としたものではないことを理解されたい。
【０００６】
添付図面を使用し、例示用の実施形態について更なる具体性及び詳細を伴って記述及び説明することとする。
【図面の簡単な説明】
【０００７】
【図１Ａ】ソフトウェアプログラムの試験コードを生成するように構成された例示用のシステムを表す図である。
【図１Ｂ】試験コードを生成するように構成された試験ツールを含みうる例示用の電子装置を示す。
【図２】ユーザーリポジトリの製品コードと関連する試験コードを更新するように構成されうる例示用のシステムの図である。
【図３】試験ツールをユーザーリポジトリとインターフェイスさせるべく実行されうる例示用の通信プロセスを示す。
【発明を実施するための形態】
【０００８】
本明細書において記述されているいくつかの実施形態は、ローカル開発環境、クラウドに基づいた開発環境、又はこれらの任意の組合せにおいてソフトウェアプログラムの試験コードを生成する方法及びシステムに関する。以下において詳述するように、試験ツールは、ソフトウェアプログラムに対応した製品コード及び試験コードを含みうるソフトウェア開発者のユーザーリポジトリに対して通信自在に結合されてもよい。本明細書において記述されている試験ツールによって実行される動作は、ソフトウェア開発者用の開発者ツールの有用性を改善しうる開発者ツール（例えば、試験ツール）とソフトウェア開発者の間のインターフェイスを提供してもよい。
【０００９】
具体的には、試験ツールは、ユーザーリポジトリの変化についてユーザーリポジトリを監視するように構成されてもよい。例えば、試験ツールは、製品コードの変化についてユーザーリポジトリを監視するように構成されてもよい。
【００１０】
いくつかの実施形態においては、ユーザーリポジトリの変化は、ソフトウェアプログラムに対応した製品コードの変化を含んでもよい。製品コードの変化は、「変更された部分」と呼称されてもよく、且つ、製品コードに対する任意の適用可能な変更を含みうる製品コードの任意の部分を含んでもよい。例えば、変更された部分は、製品コードの新たに追加された部分、最近の削除を伴う製品コードの部分（例えば、機能）、或いは、これらの任意の組合せを含んでもよい。これに加えて、又はこの代わりに、変更された部分は、その行の変化を有してはいないが製品コードの変化によって影響を受けているであろう製品コードの任意の部分を含んでもよい。
【００１１】
試験ツールは、変更された部分に基づいてソフトウェアプログラムの試験コード用の試験更新コードを生成しうる開発者ツールとして構成されてもよい。試験更新コードは、変更された部分について生成された試験コードを含んでもよい。いくつかの実施形態においては、試験ツールは、製品コードの全体ではなく、製品コードの変更された部分を含む製品コードの一部分について試験更新コードを生成するように構成されてもよい。
【００１２】
いくつかの実施形態においては、ユーザーリポジトリは、第１エンティティ（例えば、ソフトウェア開発者）によって管理されてもよく、且つ、試験ツールは、第２エンティティ（例えば、ツールサービスエンティティ）によって管理されてもよい。更には、いくつかの実施形態においては、第１エンティティは、ユーザーリポジトリに追加されてもよいもの又はそうではないものを判定してもよい。従って、いくつかの実施形態においては、試験ツールは、試験更新コードがユーザーリポジトリに追加されるように要求しうるプル要求を生成及び伝達するように構成されてもよい。
【００１３】
いくつかの実施形態においては、プル要求は、ユーザーリポジトリに伝達されてもよく、且つ、試験更新コードの生成を通知してもよい。ユーザーリポジトリの管理者は、試験更新コードを追加するかどうかを判定してもよい。試験更新コードをユーザーリポジトリに追加するという判定が下された際には、管理者は、試験ツールに伝達されうるプルコマンドを介してユーザーリポジトリが試験更新コードをプルするように制御してもよい。次いで、試験ツールは、試験更新コードがユーザーリポジトリに追加されうるように、プルコマンドに応答して試験更新コードをユーザーリポジトリに伝達してもよい。試験ツールによるユーザーリポジトリに対する通信の参照は、ユーザーリポジトリの管理者のアカウントと関連する１つ又は複数の電子装置（例えば、サーバー、パーソナルコンピュータ、モバイル装置など）に対する通信及び／又はユーザーリポジトリにアクセスしうる１つ又は複数の電子装置に対する通信を含んでもよい。従って、ユーザーリポジトリに対する通信の参照は、試験ツールによるユーザーリポジトリに対する直接的なアクセスに限定されるものではない。
【００１４】
添付図面を参照し、本開示の実施形態について説明する。
【００１５】
図１Ａは、本明細書において記述されている少なくとも１つの実施形態に従って構成されたソフトウェアプログラムの試験コードを生成するように構成された例示用のシステムを表す図である。システム１００は、ソフトウェアプログラムの製品コード１０４に基づいて試験コード１０８を生成するように構成された試験ツール１０６を含んでもよい。
【００１６】
製品コード１０４は、例えば、処理装置による実行のためのライブラリ、アプリケーション、スクリプト、或いは、その他のロジック又は命令などの電子データを含んでもよい。いくつかの実施形態においては、製品コード１０４は、ソフトウェアの完全なインスタンスを含んでもよい。これらの又はその他の実施形態においては、製品コード１０４は、ソフトウェアの一部分を含んでもよい。製品コード１０４は、イベント駆動型のソフトウェアアプリケーションに使用されうる任意の適切なタイプのコンピュータ言語において記述されてもよい。
【００１７】
試験ツール１０６は、製品コード１０４を受け取ると共に製品コード１０４用の試験コード１０８を生成するように構成されてもよい。製品コード１０４と同様に、試験コード１０８も、例えば、処理装置による実行のためのライブラリ、アプリケーション、スクリプト、或いは、その他のロジック又は命令などの電子データを含んでもよい。更には、試験コード１０８は、製品コード１０４の１つ又は複数の部分の試験ベンチを形成しうる入力、ライブラリ、アプリケーション、スクリプト、或いは、その他のロジック又は命令を含んでもよい。試験ベンチは、製品コード１０４の機能を試験しうる一連の命令、入力、又は動作を含んでもよい。従って、試験コード１０８は、製品コード１０４に伴うバグ又はその他の問題の識別を支援することにより、製品コード１０４の改善を支援しうる。
【００１８】
上述及び後述のように、いくつかの実施形態においては、製品コード１０４は、ソフトウェアプログラムと関連するユーザーリポジトリに含まれうるソフトウェアプログラムの製品コードの変更された部分を含んでもよい。これらの又はその他の実施形態においては、試験コード１０８は、ソフトウェアプログラムの試験コード用の試験更新コードを含んでもよく、こちらも、ユーザーリポジトリに含まれてもよい。
【００１９】
図１Ｂは、本明細書において記述されている少なくともいくつかの実施形態による試験ツール１０６を含みうる例示用の電子装置１０２を示している。電子装置１０２は、試験ツール１０６を使用して製品コード１０４を試験するように構成された任意の適切なシステム、装置、又は装置を含んでもよい。電子装置１０２は、メモリ１１２に対して通信自在に結合されたプロセッサ１１０を含んでもよい。いくつかの実施形態においては、試験ツール１０６は、プロセッサ１１０による実行のためにメモリ１１２内に存在しているロジック又は命令として実施されてもよい。
【００２０】
プロセッサ１１０は、様々なコンピュータハードウェア又はソフトウェアモジュールを含む任意の適切な特殊目的又は汎用コンピュータ、演算エンティティ、又は処理装置を含んでもよく、且つ、任意の適用可能なコンピュータ可読ストレージ媒体上において保存された命令を実行するように構成されてもよい。例えば、プロセッサ１１０は、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ：ＤＳＰ）、アプリケーション固有の集積回路（Ａｐｐｌｉｃａｔｉｏｎ−Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：ＡＳＩＣ）、フィールドプログラム可能なゲートアレイ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ：ＦＰＧＡ）、又はプログラム命令を解釈及び／又は実行すると共に／又はデータを処理するように構成された任意のその他のデジタル又はアナログ回路を含んでもよい。図１Ｂには、単一のプロセッサとして示されているが、プロセッサ１１０は、任意の数の動作を個々に又は集合的に実行するように構成された任意の数のプロセッサを含みうることを理解されたい。更には、プロセッサのうちの１つ又は複数は、異なる電子装置上において存在してもよい。いくつかの実施形態においては、プロセッサ１１０は、プログラム命令を解釈及び／又は実行してもよく、且つ／又は、メモリ１１２内において保存されているデータを処理してもよい。
【００２１】
メモリ１１２は、コンピュータ実行可能命令又はデータ構造をその上において保存された状態で担持又は保有するためのコンピュータ可読ストレージ媒体を含んでもよい。このようなコンピュータ可読ストレージ媒体は、プロセッサ１１０などの汎用又は特殊目的コンピュータによってアクセスされうる任意の入手可能な媒体であってもよい。限定ではなく、一例として、このようなコンピュータ可読ストレージ媒体は、ランダムアクセスメモリ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：ＲＡＭ）、読み出し専用メモリ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ：ＲＯＭ）、電気的に消去可能なプログラム可能な読み出し専用メモリ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ：ＥＥＰＲＯＭ）、コンパクトディスク（登録商標）読み出し専用メモリ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ：ＣＤ−ＲＯＭ）、又はその他の光ディスクストレージ、磁気ディスクストレージ、或いは、その他の磁気ストレージ装置を含む有体の又は一時的ではないコンピュータ可読ストレージ媒体、フラッシュメモリ装置（例えば、半導体メモリ装置）、或いは、コンピュータ実行可能命令又はデータ構造の形態において望ましいプログラムコードを担持又は保存するべく使用されうると共に汎用又は特殊目的コンピュータによってアクセスされうる任意のその他のストレージ媒体を含んでもよい。又、上述のものの組合せも、コンピュータ可読ストレージ媒体の範囲に含まれうる。コンピュータ実行可能命令は、例えば、プロセッサ１１０が特定の機能又は機能のグループを実行するようにするべく構成された命令及びデータを含んでもよい。
【００２２】
試験ツール１０６は、プロセッサ１１０が試験ツール１０６との関係において記述されている動作を実行するようにするべく構成された命令及びデータを含んでもよい。従って、いくつかの実施形態においては、電子装置１０２は、図１Ｂに示されているように、試験ツール１０６をメモリ１１２内において内蔵してもよい。
【００２３】
図２は、本明細書において記述されている少なくとも１つの実施形態によるユーザーリポジトリの製品コードと関連する試験コードを更新するように構成されうる例示用のシステム２００の図である。システム２００は、クラウドに基づいた開発者環境として構成されてもよく、且つ、ユーザーリポジトリ２１４と、試験ツール２０６と、ツールリポジトリ２１６と、ネットワーク２１８と、を含んでもよい。
【００２４】
ユーザーリポジトリ２１４は、ソフトウェアプログラムに対応しうるユーザー製品コード２０４及びユーザー試験コード２０８を管理するように構成されてもよい。コードとの関係における「管理」という用語の使用は、コードとの関係において実行されうる保存、維持、更新、削除、又はこれらの任意の組合せと関連する動作を参照してもよく、且つ、これらを含んでもよい。更には、ユーザーリポジトリ２１４は、ユーザー製品コード２０４及びユーザー試験コード２０８に対応しうるソフトウェアプログラムを開発しうる１つ又は複数の開発者によって管理されてもよい。
【００２５】
ユーザー製品コード２０４は、図１Ａとの関係において説明した製品コード１０４に類似したものであってもよい。同様に、ユーザー試験コード２０８は、図１Ａとの関係において説明した試験コード１０８に類似したものであってもよい。「ユーザー」という用語は、ユーザー製品コード２０４及びユーザー試験コード２０８がユーザーリポジトリ２１４によって管理されうることを通知するべく、ユーザー製品コード２０４及びユーザー試験コード２０８との関係において使用されている。更には、本開示においては、「ユーザーコード」という用語は、ユーザー製品コード２０４、ユーザー試験コード２０８、又はこれらの任意の組合せを包括的に表記しうる。
【００２６】
又、いくつかの例においては、本開示におけるユーザーリポジトリ２１４に対する参照は、ユーザーリポジトリ２１４によって管理されうるユーザーコードを参照してもよい。例えば、ユーザーリポジトリ２１４を監視するステップに対する参照は、ユーザーリポジトリ２１４によって管理されうるユーザーコードを監視するステップを参照してもよい。同様に、ユーザーリポジトリ２１４の変化に対する参照は、ユーザーリポジトリ２１４によって管理されるユーザーコードの変化を参照してもよい。更には、ユーザーリポジトリをクローン生成する又は複写するステップに対する参照は、ユーザーリポジトリ２１４によって管理されるユーザーコードをクローン生成又は複写するステップを参照してもよい。
【００２７】
ユーザーリポジトリ２１４は、ユーザー製品コード２０４及びユーザー試験コード２０８を管理するように構成された任意の適切な機器、システム、又は装置を含んでもよい。例えば、ユーザーリポジトリ２１４は、図１Ｂとの関係において上述したプロセッサ１１０及びメモリ１１２などの関連するプロセッサ又はメモリを有する１つ又は複数の電子装置（例えば、サーバー）を含んでもよい。
【００２８】
ツールリポジトリ２１６は、ツール製品コード２０５及びツール試験コード２０９を管理するように構成されてもよい。いくつかの実施形態においては、ツール製品コード２０５は、ユーザー製品コード２０４に基づいたものであってもよく、且つ、ツール試験コード２０９は、ユーザー試験コード２０８に基づいたものであってもよい。例えば、いくつかの実施形態においては、ユーザー製品コード２０４は、ツール製品コード２０５がユーザー製品コード２０４の複写を含みうるように、ツール製品コード２０５を生成するべく、クローン生成されてもよい。同様に、これらの又はその他の実施形態においては、ユーザー試験コード２０８も、ツール試験コード２０９がユーザー試験コード２０８の複写を含みうるように、ツール試験コード２０９を生成するべく、クローン生成されてもよい。以下において詳述されるように、いくつかの実施形態においては、試験ツール２０６は、ユーザー製品コード２０４のクローン生成、ユーザー試験コード２０８のクローン生成、又はこれらの任意の組合せと関連する動作を実行するように構成されてもよい。
【００２９】
「ツール」という用語は、ツール製品コード２０５及びツール試験コード２０９がツールリポジトリ２１６及び関連する開発者ツール（例えば、試験ツール２０６）によって管理されうることを通知するべく、ツール製品コード２０５及びツール試験コード２０９との関係において使用されている。更には、本開示においては、「ツールコード」という用語は、ツール製品コード２０５、ツール試験コード２０９、又はこれらの任意の組合せを包括的に表記しうる。更には、いくつかの例においては、本開示におけるツールリポジトリ２１６に対する参照は、ユーザーリポジトリ２１４に対する参照が、ユーザーリポジトリ２１４によって管理されうるユーザーコードを参照しうる方式と同様に、ツールリポジトリ２１６によって管理されうるツールコードを参照しうる。
【００３０】
ツールリポジトリ２１６は、ツール製品コード２０５及びツール試験コード２０９のうちの１つ又は複数を管理するように構成された任意の適切な機器、システム、又は装置を含んでもよい。例えば、ツールリポジトリ２１６は、図１Ｂとの関係において上述したプロセッサ１１０及びメモリ１１２などの関連するプロセッサ又はメモリを有する１つ又は複数の電子装置（例えば、サーバー）を含んでもよい。
【００３１】
ネットワーク２１８は、オーディオ、ビデオ、信号、データ、メッセージ、又はこれらの任意の組合せを送信する能力を有する任意の相互接続システムを含んでもよい。例えば、ネットワーク２１８は、公衆交換電話網（Ｐｕｂｌｉｃ  Ｓｗｉｔｃｈｅｄ  Ｔｅｌｅｐｈｏｎｅ  Ｎｅｔｗｏｒｋ：ＰＳＴＮ）、パブリック又はプライベートデータネットワーク、ローカルエリアネットワーク（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ：ＬＡＮ）、メトロポリタンエリアネットワーク（Ｍｅｔｒｏｐｏｌｉｔａｎ  Ａｒｅａ  Ｎｅｔｗｏｒｋ：ＭＡＮ）、ワイドエリアネットワーク（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ：ＷＡＮ）、セルラーネットワーク、インターネットなどのローカル、リジョナル、又はグローバル通信又はコンピュータネットワーク、有線又は無線ネットワーク、企業内イントラネット、その他の適切な通信リンク、又はこれらの任意の組合せのすべて又は一部分を含んでもよい。図示の例においては、試験ツール２０６、ユーザーリポジトリ２１４、及びツールリポジトリ２１６は、ネットワーク２１８を介して個々に通信自在に結合されているものとして示されている。但し、本開示は、このような実施形態に限定されるものではない。例えば、いくつかの実施形態においては、試験ツール２０６は、ネットワーク２１８を介してユーザーリポジトリ２１４に対して一緒に通信自在に結合されうるように、ツールリポジトリ２１６に含まれてもよい。これに加えて、又はこの代わりに、ツールリポジトリ２１６は、試験ツール２０６とユーザーリポジトリ２１４の間の通信自在の結合を介してユーザーリポジトリ２１４に対して通信自在に結合されてもよい。
【００３２】
試験ツール２０６は、図１Ａ及び図１Ｂとの関係において説明した試験ツール１０６に類似したものであってもよい。いくつかの実施形態においては、試験ツール２０６は、ユーザーリポジトリ２１４及びツールリポジトリ２１６との関係において１つ又は複数の動作を実行するように構成されてもよい。これらの動作は、ユーザーコードの複写を試験コードとして維持しうるように、試験ツール２０６がユーザーコード用の更新を生成しうると共にツールリポジトリ２１６を管理しうるようなものであってもよい。従って、試験ツール２０６とユーザーリポジトリ２１４の間において実行される動作は、ユーザーコードと関連するソフトウェアプログラムの開発者と開発者ツール（例えば、試験ツール２０６）の間のインターフェイスを提供してもよい。
【００３３】
図３は、本明細書において記述されている少なくとも１つの実施形態による試験ツール２０６をユーザーリポジトリ２１４とインターフェイスさせるべく実行されうる例示用の通信プロセス３００（「プロセス３００」）を示している。プロセス３００の動作は、特定の順序及び方式によって記述されているが、プロセス３００の動作のうちの１つ又は複数は、明示的に記述されているものとは異なる順序において実行されてもよい。更には、１つ又は複数の動作が同時に実行されてもよい。更には、動作のうちの１つ又は複数は、明示的に記述されてはいない更なる動作を含んでもよく、或いは、１つ又は複数の記述されている動作が省略されたものであってもよい。
【００３４】
プロセス３００の動作３０２において、試験ツール２０６は、ユーザーリポジトリ２１４を「クローン生成」してもよい（「フォーク（ｆｏｒｋ）」とも呼称される）。具体的には、試験ツール２０６は、ユーザーリポジトリ２１４によって管理されているユーザーコード（例えば、ユーザー製品コード２０４、ユーザー試験コード２０８、又はこれらの任意の組合せ）を複写してもよい。動作３０２において、試験ツール２０６は、複写されたユーザーコードが、ツールリポジトリによって管理されうるツールコードとして、ツールリポジトリ２１６内において保存されるように、制御してもよい。
【００３５】
動作３０４において、試験ツール２０６は、ユーザーコードの変化についてユーザーリポジトリ２１４を監視してもよい。例えば、いくつかの実施形態においては、試験ツール２０６は、ユーザー製品コード２０４の変化についてユーザー製品コード２０４を監視してもよい。
【００３６】
動作３０６において、変化をユーザーリポジトリ２１４に対してコミットしてもよい。例えば、動作３０６において、ユーザー製品コード２０４を更新又は変更してもよい。従って、動作３０６の後に、ユーザー製品コード２０４は、変更された部分を含んでもよい。いくつかの実施形態においては、ユーザーリポジトリ２１４の管理者（例えば、ソフトウェア開発者）が、変化をユーザーリポジトリ２１４に対してコミットしてもよい。
【００３７】
動作３０８において、ユーザーリポジトリ２１４の監視に基づいて、試験ツール２０６は、ユーザーリポジトリ２１４の変化（例えば、ユーザー製品コード２０４の変化）を検出してもよい。いくつかの実施形態においては、試験ツール２０６は、ユーザー製品コード２０４に対して変更が加えられたことを通知する通知をユーザーリポジトリ２１４から受け取ってもよい。これに加えて、又はこの代わりに、通知は、ユーザー製品コード２０４におけるユーザー製品コード２０４の変更された部分の場所を通知してもよい。これらの及びその他の実施形態においては、ユーザーリポジトリ２１４は、変更された部分によって更新されてもよく、且つ、更新を一般的に公開してもよい。従って、いくつかの実施形態においては、試験ツール２０６は、更新の公開を検出するように構成されてもよく、且つ、従って、更新及び対応する変更された部分を検出してもよい。以上の内容は、試験ツール２０６が、動作３０６において入力されうるユーザーコードの変更を検出しうる方法の例に過ぎない。
【００３８】
動作３１０において、試験ツール２０６は、ユーザーコードの変化の検出に応答して、ユーザーリポジトリ２１４から変更された部分をプル（ｐｕｌｌ：取り出す）してもよい。いくつかの実施形態においては、試験ツール２０６は、変更された部分をツールリポジトリ２１６に伝達してもよい。具体的には、試験ツール２０６は、ツール製品コード２０５がユーザー製品コード２０４の変化に応答して更新されうるように、変更された部分がツールリポジトリ２１６のツール製品コード２０５に追加されるように制御してもよい。
【００３９】
動作３１２において、試験ツール２０６は、変更された部分に基づいて試験更新コードを生成してもよい。いくつかの実施形態においては、試験ツール２０６は、試験更新コードがツールリポジトリ２１６のツール試験コード２０９に追加されるように制御するべく、構成されてもよい。
【００４０】
いくつかの実施形態においては、試験ツール２０６は、試験更新コードを生成するべく、変更された部分用の試験コードを生成してもよい。更には、試験更新コードは、試験更新コードが、原則的に、対応するソフトウェアプログラムと関連した製品コードの全体（例えば、ユーザー製品コード２０４及び／又はツール製品コード２０５）ではなく、変更された部分について生成されうるように、対応するソフトウェアプログラムと関連する試験コードのサブセット（例えば、ユーザー試験コード２０８及び／又はツール試験コード２０９）として生成されてもよい。対照的に、製品コードが更新された際に試験コードを生成しうるその他のツールに基づいた技法は、製品コードの変更された部分のみではなく、製品コード全体用の新しい試験コードを生成してもよい。このようなその他の技法によれば、製品コードの変化に起因して、いずれの変更が試験コードに対して実施されたのかの判定が困難になる場合がある。
【００４１】
従って、変更された部分用の試験更新コードは、変更された部分について生成される試験更新コードに基づいて変更された部分に対応していると識別可能であることにより、その他の技法との比較において、変更された部分のデバッグ及び改善を促進しうる。いくつかの実施形態においては、試験ツール２０６は、試験更新コードが変更された部分に対応しているという通知を生成するように構成されてもよい。この結果、変更された部分に対応しているとの試験更新コードの識別が更に促進されることになり、これによっても、その他の技法との比較において、変更された部分のデバッグが更に促進されうる。
【００４２】
試験コードのいくつかのバージョンは、高品質評価（「高品質試験コード」）を有してもよく、この場合には、高品質試験コードは、関連する製品コードの相対的に安定した試験を提供しうる。但し、高品質試験コードを有する関連する製品コードの試験と関連する試験時間は、相対的に低速になりうる。これに加えて、又はこの代わりに、試験コードの「品質」が低下するのに伴って、対応する試験時間も低下し、この結果、試験の速度が増大しうる。従って、いくつかの実施形態においては、試験ツール２０６は、動作３１２において試験更新コードの複数のバージョンを生成するように構成されてもよい。試験更新コードの異なるバージョンは、試験更新コードの特定のバージョンが、品質及び／又はターゲット試験時間のターゲットとされる程度に応じて選択されうるように、異なる品質評価を有してもよい。これらの及びその他の実施形態においては、試験更新コードのそれぞれのバージョンは、ツール試験コード２０９に追加されてもよい。更には、試験更新コードに対する一般的な参照は、適宜、試験更新コードの異なるバージョンを参照しうる。
【００４３】
いくつかの実施形態においては、試験更新コードの異なるバージョンは、バージョン制御システム内の分岐メカニズムに基づいて生成されてもよい。分岐メカニズムは、試験更新コードのうちの１つ又は複数の試験更新コードの選択を許容するべく、試験更新コードのそれぞれのバージョンを維持しつつ、試験更新コードの複数のバージョンの生成を許容しうる任意の適切なメカニズムを含んでもよい。
【００４４】
動作３１４において、試験ツール２０６は、ユーザーリポジトリ２１４に伝達されうるプル要求を生成してもよい。いくつかの実施形態においては、試験ツール２０６は、動作３１２における試験更新コードの生成に応答して、プル要求を生成するように構成されてもよい。プル要求は、変更された部分について試験更新コードが生成されたことをユーザーリポジトリ２１４に通知してもよい。上述のように、試験ツール２０６によるユーザーリポジトリ２１４に対する通信の参照は、ユーザーリポジトリ２１４の管理者のアカウントと関連する１つ又は複数の電子装置（例えば、サーバー、パーソナルコンピュータ、モバイル装置など）に対する通信及び／又はユーザーリポジトリ２１４にアクセスしうる１つ又は複数の電子装置に対する通信を含んでもよい。
【００４５】
動作３１６において、ユーザーリポジトリ２１４は、試験更新コードをユーザー試験コード２０８に追加するべく試験更新コードをプルするかどうかを判定してもよい。これに加えて、又はこの代わりに、ユーザーリポジトリ２１４は、ユーザー試験コード２０８に追加するべき試験更新コードのバージョンを判定してもよい。又、動作３１６との関連において、ユーザーリポジトリ２１４によって実行されうる動作又はアクションの参照は、ユーザーリポジトリ２１４の管理者によって実行されうる動作又はアクションを参照してもよい。例えば、いくつかの実施形態においては、動作３１６における判定は、ユーザーリポジトリ２１４の管理者によって実施されてもよい。これに加えて、又はこの代わりに、判定は、ユーザーリポジトリ２１４の自動化されたシステムによって実施されてもよい。
【００４６】
いくつかの実施形態においては、ユーザーリポジトリ２１４（例えば、ユーザーリポジトリ２１４の管理者）は、ユーザーリポジトリ２１４（ユーザーリポジトリ２１４の管理者）がツールリポジトリ２１６のツールコードを観察可能であってもよいという点において、ツールリポジトリ２１６に対するアクセスを有してもよい。従って、いくつかの実施形態においては、動作３１６において、ユーザーリポジトリ２１４（例えば、ユーザーリポジトリ２１４の管理者）は、ユーザー試験コード２０８と共に試験更新コードを含むかどうかを判定するべく、ツール試験コード２０９の一部分として保存されうる試験更新コード及びその異なるバージョンを観察してもよい。更には、いくつかの実施形態においては、試験更新コード及びその異なるバージョンは、上述のように、試験更新コードが変更された部分に対応しているというユーザーリポジトリ２１４による識別を促進するべく、変更された部分に対応しているものとして通知されてもよい。従って、特に、試験更新コードが対応しうる製品コードの部分（例えば、更新された部分）をユーザーリポジトリ２１４について識別することにより、製品コードと、特に更新された部分のデバッグを促進してもよい。
【００４７】
動作３１８において、ユーザー試験コード２０８と共に試験更新コードを含むとユーザーリポジトリ２１４が判定した際に、ユーザーリポジトリ２１４は、試験更新コードをプルしてもよい。いくつかの実施形態においては、ユーザーリポジトリ２１４は、試験ツール２０６に伝達されうるプルコマンドを生成してもよい。この結果、試験ツール２０６は、ツールリポジトリ２１６から試験更新コードをプルしてもよく、且つ、試験更新コードをユーザーリポジトリ２１４に伝達してもよい。相応して、ユーザーリポジトリ２１４は、試験更新コードをユーザー試験コード２０８に追加してもよい。いくつかの実施形態においては、ユーザーリポジトリ２１４は、試験更新コードの１つ又は複数のバージョンをプルコマンド内において通知してもよい。
【００４８】
いくつかの実施形態においては、ユーザーリポジトリ２１４は、ユーザーリポジトリがツールリポジトリ２１６から試験更新コードをプルできるようにするべく、ツールリポジトリ２１６に対する直接的なアクセスを有してもよい。これらの実施形態のいくつかにおいては、試験ツール２０６は、ユーザーリポジトリ２１４が「プルコマンド」を介してツールリポジトリ２１６から試験更新コードを直接的にプルできるようにするルーチン又は命令をツールリポジトリ２１６内において含んでもよい。これに加えて、又はこの代わりに、試験ツール２０６は、試験ツール２０６が、直接的なアクセスを許容するルーチン又は命令よりも、ユーザーリポジトリ２１４によるツールリポジトリ２１６に対するアクセスを制御及び／又は制限しうるという点において、ユーザーリポジトリ２１４とツールリポジトリ２１６の間の門番として機能してもよい。
【００４９】
従って、プロセス３００は、ユーザーリポジトリ２１４の対応するソフトウェアプログラムの開発の際に、試験ツール２０６とユーザーリポジトリ２１４の間のインターフェイスを提供してもよい。当業者は、プロセス３００の場合には、プロセス及び方法において実行される動作は、異なる順序において実装されうることを理解するであろう。更には、概説されているステップ及び動作は、例として提供されたものに過ぎず、且つ、ステップ及び動作のうちのいくつかは、開示されている実施形態の本質を逸脱することなしに、任意選択であってもよく、更に少ない数のステップ又は動作に組み合わせられてもよく、或いは、更なるステップに拡張されてもよい。
【００５０】
更には、いくつかの実施形態においては、システム２００は、複数の試験ツールを含んでもよく、この場合に、それぞれの試験ツールは、その独自のツールリポジトリを管理してもよい。このような例においては、それぞれの試験ツールは、プロセス３００との関係において記述されている動作を実行してもよく、且つ、ユーザーリポジトリ２１４は、異なる試験ツールによって生成されうるいずれの試験更新コードをユーザーリポジトリ２１４内にプルするのかを決定してもよい。これらの又はその他の実施形態においては、異なる試験ツールは、試験コードの異なるタイプを生成するように構成されてもよい。これに加えて、又はこの代わりに、異なる試験ツールは、製品コードの異なるタイプ又は部分について試験コードを生成するように構成されてもよい。
【００５１】
上述のように、本明細書において記述されている実施形態は、更に詳細に後述されるように、様々なコンピュータハードウェア又はソフトウェアモジュールを含む特殊目的又は汎用コンピュータ（例えば、図１Ｂのプロセッサ１１０）の使用を含んでもよい。更には、上述のように、本明細書において記述されている実施形態は、コンピュータ実行可能命令又はデータ構造をその上部に保存された状態で担持又は保有するためのコンピュータ可読媒体（例えば、図１Ｂのメモリ１１２）を使用することにより、実装されてもよい。
【００５２】
本明細書において使用されている「モジュール」又は「コンポーネント」という用語は、モジュール又はコンポーネント並びに／或いは演算システムの汎用ハードウェア（例えば、コンピュータ可読媒体や処理装置など）上において保存及び／又はこれによって実行されうるソフトウェアオブジェクト又はソフトウェアルーチンの動作を実行するように構成された特定のハードウェア実装形態を意味しうる。いくつかの実施形態においては、本明細書において記述されている異なるコンポーネント、モジュール、エンジン、及びサービスは、演算システム上において（例えば、別個のスレッドとして）稼働するオブジェクト又はプロセスとして実装されてもよい。本明細書において記述されているシステム及び方法のいくつかは、一般に、（汎用ハードウェアによって保存及び／又は実行される）ソフトウェアとして実装されるものと記述されているが、特定のハードウェア実装形態又はソフトウェアと特定のハードウェアの組合せ実装形態も、可能であり、且つ、想定される。この説明においては、「演算エンティティ」は、本明細書において先程定義されている任意の演算システムであってもよく、或いは、演算システム上において稼働する任意のモジュール又はモジュールの組合せであってもよい。
【００５３】
本明細書において、且つ、特に、添付の請求項（例えば、添付の請求項の本文）において、使用されている用語は、一般に、「開放型」の用語であるものと解釈されたい（例えば、「含む（ｉｎｃｌｕｄｉｎｇ）」という用語は、「限定を伴うことなしに含む」として解釈さるべきであり、「有する」という用語は、「少なくとも有する」として解釈されるべきであり、「含む（ｉｎｃｌｕｄｅｓ）」という用語は、「限定を伴うことなしに含む」として解釈されるべきであり、以下同様である）。
【００５４】
更には、特定の数の導入された請求項記述（ｃｌａｉｍ  ｒｅｃｉｔａｔｉｏｎ）が意図されている場合に、このような意図は、請求項において明示的に記述されることになり、且つ、このような記述が存在していない場合には、このような意図は存在していない。例えば、理解を支援するべく、添付の請求項は、請求項記述を導入するべく、「少なくとも１つの」及び「１つ又は複数の」という導入用のフレーズの使用を含みうる。但し、このようなフレーズの使用は、不定冠詞「ａ」又は「ａｎ」による請求項記述の導入が、同一の請求項が「１つ又は複数の」又は「少なくとも１つの」という導入用のフレーズ及び「ａ」又は「ａｎ」などの不定冠詞を含む際にも、このような導入された請求項記述を含む任意の特定の請求項をこのような記述を１つしか含まない実施形態に制限することを意味するものと解釈されるべきではなく（例えば、「ａ」及び／又は「ａｎ」は、「少なくとも１つの」又は「１つ又は複数の」を意味するべく解釈されるべきである）、同一の内容は、請求項記述を導入するべく使用されている定冠詞の使用に対しても当て嵌まる。
【００５５】
更には、特定の数の導入された請求項記述が明示的に記述されている場合にも、当業者は、このような記述は、少なくとも記述されている数を意味するものと解釈するべきであることを認識するであろう（例えば、その他の修飾子を有していない「２つの記述」というむき出しの記述は、少なくとも２つの記述又は２つ以上の記述を意味している）。更には、「Ａ、Ｂ、及びＣのうちの少なくとも１つなど」又は「Ａ、Ｂ、及びＣのうちの１つ又は複数など」に類似した表記法が使用されている例においては、一般に、このような構文は、Ａのみ、Ｂのみ、Ｃのみ、一緒にＡ及びＢ、一緒にＡ及びＣ、一緒にＢ及びＣ、或いは、一緒にＡ、Ｂ、及びＣなどを含むものと解釈されたい。
【００５６】
更には、２つ以上の代替用語を提示している任意の離接的用語又はフレーズは、説明、請求項、又は図面内のいずれであっても、用語のうちの１つ、用語のいずれか、又は両方の用語を含む可能性を想定しているものと理解するべきである。例えば、フレーズ「Ａ又はＢ」は、「Ａ」又は「Ｂ］或いは「Ａ及びＢ」の可能性を含むものと理解するべきである。
【００５７】
本明細書において記述されているすべての例及び条件に関する言語は、本発明と、当技術分野の発展に対して本発明者によって寄与される概念と、を理解する際に読者を支援するための教育的目的を意図しており、且つ、このような具体的に記述されている例及び条件に対する限定を伴わないものと解釈することを要する。本開示の実施形態について詳細に説明したが、これらに対しては、本開示の精神及び範囲を逸脱することなしに、様々な変更、置換、及び変形が実施されうることを理解されたい。
【図１Ａ】
0006536326.tif 000002
【図１Ｂ】
0006536326.tif 000003
【図２】
0006536326.tif 000004
【図３】
0006536326.tif 000005