(57)【要約】【課題】  ソフトウェア構成要素における無効なコールシーケンスの自動判定を行う。【解決手段】  潜在的なオペレーションセット１１４は、自動的に生成される。パラメータジェネレータは、結果として例外が投入される見込みが高くなる可能性のある、対象のパラメータ値を供給することができる。いくつかのコールシーケンスは、オペレーションセット１１４中のオペレーションをシーケンス中のステップとして使用して、自動的に構築される。次に、各コールシーケンスは、オブジェクト１０５の新しいインスタンスを使用して実行される。例外が投入されると、例外が適切であるかどうかを評価する際に役立つ情報を含むレポートが発行される。この情報は、例外のタイプならびに例外の投入を発生させた無効なコールシーケンスを含むことができる。無効なコールシーケンスは、試験者が例外の根本的原因および適切さを評価するのを助けるために、最小化することもできる。【選択図】  図１
2004318887.tif 000002
【特許請求の範囲】
【請求項１】
オブジェクトを実行することのできるコンピューティングシステムにおいて、例外を発生させる１つまたは複数のコールシーケンスを識別するために、オブジェクトをテストするための方法であって、
各オペレーションが前記オブジェクトのメソッドならびに前記オブジェクトに附随したゼロまたはそれ以上のパラメータを含む、前記オブジェクトによって実行可能なオペレーションのセットを自動的に生成するステップと、
自動的に、前記オペレーションのセットからオペレーションのコールシーケンスを構築するステップと、
自動的に、前記オブジェクトを使用してオペレーションの前記コールシーケンスを実行するステップと、
自動的に、前記コールシーケンスを実行した結果として、例外が投入されたことを識別するステップと、
前記例外を発生させた前記コールシーケンスおよび前記例外の発生を報告するステップと
を備えることを特徴とする方法。
【請求項２】
前記コールシーケンスは現在のコールシーケンスであって、前記コールシーケンスを構築するステップは、
前記例外も発生させた以前のコールシーケンスから１つまたは複数のオペレーションを除去するステップを含む
ことを特徴とする請求項１に記載の方法。
【請求項３】
前記例外の発生を報告するステップは、
前記以前のコールシーケンスも同様に報告するステップをさらに含む
ことを特徴とする請求項２に記載の方法。
【請求項４】
前記現在のコールシーケンスから１つまたは複数のオペレーションが除去される、１つまたは複数の減じられたコールシーケンスについて、前記構築するステップ、前記実行するステップ、および前記識別するステップを反復するステップをさらに備え、前記１つまたは複数の減じられたコールシーケンスのそれぞれについて、例外が発生したか否かを識別する前記識別するステップは、前記例外が発生しなかったことを識別するステップを含む
ことを特徴とする請求項２に記載の方法。
【請求項５】
前記オペレーションのセットから構築された複数のコールシーケンスのそれぞれについて、自動的に前記構築するステップ、前記実行するステップ、前記識別するステップ、および前記報告するステップを反復するステップをさらに備える
ことを特徴とする請求項１に記載の方法。
【請求項６】
複数のコールシーケンスのそれぞれについて、自動的に前記生成するステップ、前記構築するステップ、前記実行するステップ、前記識別するステップ、および前記報告するステップを反復するステップをさらに備える
ことを特徴とする請求項１に記載の方法。
【請求項７】
予測される１つまたは複数の例外のセットを識別するステップ
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項８】
前記報告するステップは、
投入された前記例外が前記１つまたは複数の予測される例外のセットのうちの１つであったか否かを報告するステップをさらに含む
ことを特徴とする請求項７に記載の方法。
【請求項９】
前記１つまたは複数の例外のセットを識別するステップは、
テストを行って前記オブジェクトに関する文書またはソースコードを検査することによって、前記１つまたは複数の例外のセットを手操作で識別するステップを含む
ことを特徴とする請求項７に記載の方法。
【請求項１０】
前記１つまたは複数の例外のセットを識別するステップは、
前記オブジェクトの構造を検査するためのソフトウェアプログラムを使用して、前記１つまたは複数の例外のセットを自動的に識別するステップを含む
ことを特徴とする請求項７に記載の方法。
【請求項１１】
前記オブジェクトの構造を検査するためのソフトウェアプログラムを使用して、前記１つまたは複数の例外のセットを自動的に識別するステップは、
前記オブジェクトのソースコードを自動的に検査するステップを含む
ことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記オブジェクトの構造を検査するためのソフトウェアプログラムを使用して、前記１つまたは複数の例外のセットを自動的に識別する前記ステップは、
前記オブジェクトのマシン読取り可能命令を自動的に検査するステップを含む
ことを特徴とする請求項１０に記載の方法。
【請求項１３】
前記オブジェクトは複数の附随するメソッドを有し、前記オペレーションのセットは前記附随するメソッドのうちの複数に関係する
ことを特徴とする請求項１に記載の方法。
【請求項１４】
前記オブジェクトによって実行可能なオペレーションのセットを自動的に生成するステップは、前記複数の附随するメソッドのうちの少なくともそれぞれについて、
前記附随するメソッドで使用するために、１つまたは複数のパラメータの１つまたは複数のセットのうちの１つのセットを生成するステップと、
前記附随するメソッドを前記附随するメソッドの１つまたは複数のパラメータの各セットと組み合わせた結果として生じるオペレーションを、前記オペレーションのセットに含めるステップと
を実行することを含む
ことを特徴とする請求項１に記載の方法。
【請求項１５】
前記１つまたは複数のパラメータのセットは、結果として投入された例外となるはずであるパラメータを含む
ことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記オブジェクトは単一の附随するメソッドを有し、前記オペレーションのセットは前記単一のメソッドに関係する
ことを特徴とする請求項１に記載の方法。
【請求項１７】
オブジェクトを実行することのできるコンピューティングシステムにおいて使用するためのコンピュータプログラム製品であって、前記コンピュータプログラム製品は、例外を発生させる１つまたは複数のコールシーケンスを識別するために前記オブジェクトをテストするための方法を実施するためのものであり、前記コンピュータプログラム製品は、プロセッサによって実行された場合、
各オペレーションが前記オブジェクトのメソッドならびに前記オブジェクトに附随したゼロまたはそれ以上のパラメータを含む、前記オブジェクトによって実行可能なオペレーションのセットを生成するステップと、
前記オペレーションのセットからオペレーションのコールシーケンスを構築するステップと、
前記オブジェクトを使用してオペレーションの前記コールシーケンスを実行するステップと、
前記コールシーケンスを実行した結果として、例外が投入されたことを識別するステップと、
前記例外を発生させた前記コールシーケンスおよび前記例外の発生を報告するステップと
を前記コンピューティングシステムに実行させる、コンピュータ実行可能命令を有する１つまたは複数のコンピュータ読取り可能な記録媒体を含む
ことを特徴とするコンピュータプログラム製品。
【請求項１８】
前記１つまたは複数のコンピュータ読取り可能な記録媒体は物理媒体である
ことを特徴とする請求項１７に記載のコンピュータプログラム製品。
【請求項１９】
前記物理媒体は不揮発性記憶媒体である
ことを特徴とする請求項１８に記載のコンピュータプログラム製品。
【請求項２０】
前記物理媒体は不揮発性システムメモリである
ことを特徴とする請求項１８に記載のコンピュータプログラム製品。
【請求項２１】
前記コールシーケンスは現在のコールシーケンスであって、前記１つまたは複数のコンピュータ読取り可能な記録媒体は、プロセッサによって実行された場合、
前記例外も発生させた以前のコールシーケンスから１つまたは複数のオペレーションを除去するステップ
を前記コンピューティングシステムに実行させる、コンピュータ実行可能命令をさらに有する
ことを特徴とする請求項１７に記載のコンピュータプログラム製品。
【請求項２２】
前記１つまたは複数のコンピュータ読取り可能な記録媒体は、プロセッサによって実行された場合、
前記現在のコールシーケンスから１つまたは複数のオペレーションが除去される、１つまたは複数の減じられたコールシーケンスについて、前記構築するステップ、前記実行するステップ、および前記識別するステップを反復するステップ
を前記コンピューティングシステムに実行させる、コンピュータ実行可能命令をさらに有する
ことを特徴とする請求項２１に記載のコンピュータプログラム製品。
【請求項２３】
前記１つまたは複数のコンピュータ読取り可能な記録媒体は、プロセッサによって実行された場合、
前記オペレーションのセットから構築された複数のコールシーケンスのそれぞれについて、前記構築するステップ、前記実行するステップ、前記識別するステップ、および前記報告するステップを反復するステップ
を前記コンピューティングシステムに実行させる、コンピュータ実行可能命令をさらに有する
ことを特徴とする請求項１７に記載のコンピュータプログラム製品。
【請求項２４】
前記１つまたは複数のコンピュータ読取り可能な記録媒体は、プロセッサによって実行された場合、
予測される１つまたは複数の例外のセットを識別するステップ
を前記コンピューティングシステムに実行させる、コンピュータ実行可能命令をさらに有する
ことを特徴とする請求項１７に記載のコンピュータプログラム製品。
【請求項２５】
前記１つまたは複数のコンピュータ読取り可能な記録媒体は、プロセッサによって実行された場合、
前記附随するメソッドで使用するために、１つまたは複数のパラメータの１つまたは複数のセットのうちの１つのセットを生成するステップと、
前記附随するメソッドを前記附随するメソッドの１つまたは複数のパラメータの各セットと組み合わせた結果として生じるオペレーションを、前記オペレーションのセットに含めるステップと
を前記コンピューティングシステムに実行させる、コンピュータ実行可能命令をさらに有する
ことを特徴とする請求項１７に記載のコンピュータプログラム製品。
【請求項２６】
オブジェクトを実行することのできるコンピューティングシステムにおいて、例外を発生させる１つまたは複数のコールシーケンスを識別するために、オブジェクトをテストするための方法であって、
例外を発生させる無効なコールシーケンスを自動的に識別するためのステップと、
前記例外を発生させた前記無効なコールシーケンスおよび前記例外の発生を報告するステップと
を備えることを特徴とする方法。
【請求項２７】
前記例外を発生させる無効なコールシーケンスを自動的に識別するためのステップは、
各オペレーションが前記オブジェクトのメソッドならびに前記オブジェクトに附随したゼロまたはそれ以上のパラメータを含む、前記オブジェクトによって実行可能なオペレーションのセットを自動的に生成するステップと、
自動的に、前記オペレーションのセットからオペレーションのコールシーケンスを構築するステップと、
自動的に、前記オブジェクトを使用してオペレーションの前記コールシーケンスを実行するステップと、
自動的に、前記コールシーケンスを実行した結果として、例外が投入されたことを識別するステップとを含む
ことを特徴とする請求項２６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オブジェクトをテストするための方法に関する。より具体的に言えば、本発明は、ソフトウェア開発技術に関連し、結果的に投入された例外（thrown exception）になるコールシーケンス（call sequence）を識別する、オブジェクトをテストするメカニズムに係る、オブジェクトをテストするための方法に関する。
【背景技術】
【０００２】
コンピュータは、仕事や遊びの方法に大きな変革をもたらした。ソフトウェアアプリケーションの実行に応答して、汎用コンピューティングシステムが実施することのできる、多種多様な機能およびアプリケーションがある。ただし、コンピューティングシステムの実用性および機能性は、実際にプロセッサによって実行されるバイナリ命令にコンパイルまたは解釈された、ソースコードの適切なコーディングに依拠している。コーディングエラーがあると、予想された機能から結果的に逸脱することが多い。
【０００３】
現在、ソフトウェアアプリケーションが市場に出荷される前後に、多くのソフトウェアプログラムでの予期せぬ機能逸脱（ｄｅｖｉａｔｉｏｎ）の数を減らすために、並々ならぬ努力が払われている。ただし、ソフトウェアプログラマおよび設計者の創造性により、ソフトウェアアプリケーションはますます複雑かつ強力になってきている。ソフトウェアアプリケーションの複雑さが増加するにつれて、ソフトウェアアプリケーションを生成するためのソースコードの行数も増やす必要がある。
【０００４】
より組織化された方法でソースコードを設計する方法の１つが、オブジェクト指向プログラミングを使用して、メモリ内にランタイムオブジェクトを生成させることである。これらのオブジェクトには、附随したメソッド（ｍｅｔｈｏｄ）がある。たとえば、「Ｆｉｌｅ」と呼ばれる特定クラスのオブジェクトは、ファイル上でオペレーション可能な、附随したいくつかのメソッドを有することが可能である。たとえば、クラス「Ｆｉｌｅ」のオブジェクトに適切なオペレーションは、ファイルのオープン、読取り、書込み、クローズ、またはステータスチェックである。これらのメソッドは、それぞれ、附随したゼロまたはそれ以上の許可パラメータを有することができる。たとえば、「読取り」メソッドは、ファイルの何バイトを読み取るか、かつ／または、どこから読取りを開始するかなどを表すための、パラメータを含むことができる。特定のパラメータを備えたメソッドは、「オペレーション」と呼ばれることが多い。同様に、ゼロパラメータを有するメソッドは、たとえパラメータがなくとも、「オペレーション」と呼ばれることも多い。オブジェクトは、附随したデータを有することも多い。上記で紹介したファイルオブジェクトの例では、ファイルそれ自体（および「メタデータ」と呼ばれることの多い何らかの潜在的な関連データ）が、オブジェクトデータであってよい。
【０００５】
オブジェクト指向プログラミングによって、プログラミングタスクに有意な構造が与えられたが、少なくとも初期バージョンのソースコードに、人間のエラーが導入されることになるのは避けられないであろう。ソフトウェアアプリケーションの性能逸脱を減らすために、通常は、ソフトウェアアプリケーションをテストして、性能逸脱を識別する。具体的に言えば、オブジェクト指向プログラミングを使用して、個々のオブジェクトの正しいオペレーションをテストすることもできる。
【０００６】
たとえオブジェクトの通常の正しいオペレーション中であっても、オブジェクトは対処不能な状況に遭遇する可能性がある。オペレーションの特定のシーケンス（「コールシーケンス」とも呼ばれる）が、こうした状況を生じさせる可能性がある。たとえば、ファイルオブジェクトが構築された後、次のコールシーケンス、即ち、擬似コードｏｐｅｎ（ｆｉｌｅｎａｍｅ），ｃｌｏｓｅ（ｆｉｌｅｎａｍｅ），ｗｒｉｔｅ（ｆｉｌｅｎａｍｅ），．．．で表された順序で、コールシーケンスを呼び出すものとする。ファイルに書き込むためにはファイルをオープンする必要があるが、ファイルは前のオペレーションでクローズされたばかりであるため、このファイルオブジェクトは書き込みオペレーションを実施することができない。オブジェクトがコールシーケンスのオペレーションを実施できないようなコールシーケンスのことを、本明細書では「無効なコールシーケンス」と呼ぶ。
【０００７】
無効なコールシーケンスによってこうしたエラーが生じた場合、オブジェクトは「例外を投入する」。これは、オブジェクトが、エラーが発生したことをルーチン環境に通知し、今後の参照のために例外が表示および／または通知されることを意味する。典型的には検出されるエラーによって、例外も異なる。特定の例外タイプが、オブジェクトの特定の１つまたは複数のメソッドに対応する場合がある。
【０００８】
たとえば、ファイルオブジェクトのオープンメソッドは、ファイルが見つからなかったためにオープンできないことを記述する、「ファイルが見つからない」例外を有する場合がある。ファイルオブジェクトの読取り（または書込み）メソッドは、ファイルはオープンされたが、読取り（または書込み）オペレーションに関する何かが失敗したことを示す、「ファイル読取り」（または「ファイル書込み」）エラーを有する場合がある。ファイルオブジェクトの読取り（または書込み）メソッドは、ファイルがクローズされたために読み取る（または書き込む）ことができないことを示す、「ファイルがすでにクローズした」エラーを有する場合もある。ファイルオブジェクトのクローズメソッドは、ファイルがすでにクローズしたために再度クローズできないことを示す、「ファイルがすでにクローズした」エラーを有する場合がある。ファイルオブジェクトのステータスチェックメソッドは、ファイルがオープンしていないためにファイルのステータスにアクセスできないことを示す、「ファイルがオープンしていない」例外を有する場合がある。
【０００９】
正しい例外の投入により、プログラマは、なぜ正しいオペレーションが得られなかったかを判定することができる。適切な時点で例外が投入されないと、オブジェクトは、１つまたは複数の他のオペレーションに関するオペレーションを続行した後に、最初の問題をあまり表していない予期せぬ例外を投入することになる可能性がある。したがって、オブジェクトは、対応する検出エラーに応答して、正しい例外を投入することが重要である。ソフトウェアアプリケーションのテストに関する一態様は、オブジェクトが無効なコールシーケンスに応答して、正しい例外を投入することを保証することである。
【００１０】
これを実行する１つの従来の方法は、人間の試験者に手動で無効なコールシーケンスを生成させ、再度オブジェクトに対してコールシーケンスを実行させ、正しい例外が投入されたことを検証させ、他の無効なコールシーケンスに対してそのプロセスを反復させることである。これは、試験者が潜在的な無効なコールシーケンスを考え出す想像力および努力に依拠しているため、かなり時間がかかる可能性がある。さらに、試験者の優れた努力にもかかわらず、試験者が考え出す無効なコールシーケンスのセットが不完全である可能性もある。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
したがって、より自動化された方法で無効なコールシーケンスを検出する、オブジェクトをテストするためのメカニズムが有利であろう。
【００１２】
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、ソフトウェア構成要素における無効なコールシーケンスの自動判定ができる、オブジェクトをテストするための方法を提供することにある。
【課題を解決するための手段】
【００１３】
当分野の従来の状況に伴う前述の問題は、例外を発生させる１つまたは複数のコールシーケンスを識別するためにオブジェクトを自動的にテストするためのメカニズムを対象とする、本発明の原理によって克服される。オブジェクトが実行することのできる可能なオペレーションのセットが生成される。それぞれのオブジェクトが、１つまたは複数のメソッドを含む。各メソッドは、附随したゼロまたはそれ以上のパラメータタイプを含む。メソッドがゼロパラメータを含む場合、そのメソッドは、オブジェクトによって実行可能なオペレーションのセットに直接含まれることが可能である。メソッドが１つまたは複数のパラメータタイプを含む場合、各パラメータタイプに対応する対象の（interesting）パラメータのセットが生成される。生成されたパラメータは、メソッドの適切なパラメータタイプの代理をするために使用され、それにより、オブジェクトによって実行可能なさらに他のオペレーションを生成する。
【００１４】
所与のパラメータタイプに対して生成されるパラメータは、例外を投入するよう促すように設計される。たとえば、メソッドが、読み取るバイト数を表す整数である、附随したパラメータタイプで「読み取る」ものであるとする。負数の情報を読み取ることは論理的に意味を成さないため、例外の投入を生じさせることから、整数のマイナス１（すなわち「−１」）を対象のパラメータとして使用することができる。
【００１５】
この可能なオペレーションのプールを使用して、コールシーケンスが自動的に構築される。次にコールシーケンスが、オブジェクトを使用して実行される。例外が投入されると、例外が正しいか否かを評価する際に役立つ情報を指定するレポートを発行することができる。情報には、例外のタイプならびに例外の投入を生じさせたコールシーケンスが含まれる場合がある。
【００１６】
任意選択として、１つまたは複数のオペレーションをコールシーケンスから除去すること、およびその後、同じ例外が投入されるか否かを判定することによって、コールシーケンスを最小にすることができる。その場合、最小化されたコールシーケンスをレポートすることもできる。結果として例外を投入することになるコールシーケンスを最小化することによって、試験者は、投入された例外の根本的原因をより直感的に評価することができる。
【００１７】
このプロセスは、おそらく試験者が最終レポートを見るだけで、自動的に発生する。したがって、メソッドは、人間が無効なコールシーケンスを生成するために必要なかなりの時間および努力に依拠せず、試験者の時間は、無効なコールシーケンスを生成および実行することではなく、投入された例外の適切さを評価することに、より好適に焦点を絞ることができる。
【００１８】
本発明の追加の特徴および利点については以下の説明で示し、一部は、説明から明らかになるか、または本発明を実施することによって習得できるであろう。本発明の特徴および利点は、添付の特許請求の範囲で具体的に指摘された手段および組合せを使って、実現および取得することができる。本発明のこれらおよび他の特徴は、以下の説明および添付の特許請求の範囲から、より完全に明らかになるか、または以下に述べる本発明の実施によって習得することができる。
【００１９】
本発明の上記および他の利点および特徴が取得可能な方法を説明するために、上記で簡単に述べた本発明について、添付の図面に示された特定の実施形態を参照しながら、より具体的に説明する。これらの図面は、本発明の典型的な実施形態を示しただけであって、その範囲を限定するものとみなされるものでないことを理解した上で、添付の図面を使用し、追加の特異性および詳細と共に、本発明について記述および説明する。
【発明の効果】
【００２０】
本発明によれば、ソフトウェア構成要素における無効なコールシーケンスの自動判定ができる。
【発明を実施するための最良の形態】
【００２１】
以下、図面を参照して本発明を適用できる実施形態を詳細に説明する。本発明は、例外を発生させる１つまたは複数のコールシーケンスを識別するために、オブジェクトをテストするための方法、システム、およびコンピュータプログラム製品に及ぶ。オブジェクトによって実行可能なオペレーションセットは、メソッドおよびメソッドの関連するパラメータタイプによって生成される。パラメータジェネレータは、例外の投入を生じさせる可能性がより高い特定のパラメータタイプに、対象のパラメータ値を供給することができる。オペレーションセット中のオペレーションをシーケンス中のステップとして使用し、いくつかのコールシーケンスが自動的に構築される。次に、オブジェクトの新しいインスタンスを使用して、各コールシーケンスが実行される。例外が投入されると、例外が適切であるかどうかを評価する際に役立つ情報を含むレポートが発行される。この情報には、例外タイプならびに例外投入を生じさせたコールシーケンスが含まれる場合がある。
【００２２】
本発明の実施形態は、以下でより詳細に論じるように、様々なコンピュータのハードウェアおよびソフトウェアを含む、特定用途向けまたは汎用のコンピュータを含むことができる。具体的に言えば、本発明の範囲内の実施形態は、その上に格納したコンピュータ実行可能命令またはデータ構造を運びまたは有する、コンピュータ読取り可能な記録媒体を含む。こうしたコンピュータ読取り可能な記録媒体は、汎用または特定用途向けのコンピュータがアクセス可能な、任意の使用可能な記録媒体であってよい。たとえば、こうしたコンピュータ読取り可能な記録媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（electrically erasable programmable read-only memory）、光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイスなどの、ＣＤ−ＲＯＭまたは他の物理記憶媒体、あるいは、コンピュータ実行可能命令またはデータ構造の形の所望のプログラムコード手段を実行または格納するために使用可能であり、汎用または特定用途向けのコンピュータがアクセス可能な、任意の他の媒体が含まれるが、これらに限定されるものではない。情報が、ネットワークまたは他の通信接続（ハードワイヤード、ワイヤレス、あるいは、ハードワイヤードまたはワイヤレスの組合せのいずれか）を介して、コンピュータに転送または提供される場合、コンピュータは、その接続をコンピュータ読取り可能な記録媒体として適切にみなす。したがって、任意のこうした接続は、適切にコンピュータ読取り可能な記録媒体と呼ばれる。上記の組合せは、コンピュータ読取り可能な記録媒体の範囲内にも含まれるはずである。たとえば、コンピュータ実行可能命令には、汎用コンピュータ、特定用途向けコンピュータ、またはＧＰＵ（Graphics Processing Unit）などの特定用途向け処理デバイスに、一定の機能または機能グループを実行させる、命令およびデータが含まれる。
【００２３】
必須ではないが、本発明は、ネットワーク環境でコンピュータによって実行される、プログラムモジュールなどの一般的なコンピュータ実行可能命令の状況で説明される。一般に、プログラムモジュールには、特定のタスクを実行するか、または特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などが含まれる。
【００２４】
図１は、コンピューティングシステム１００、および本発明の原理に従ってオブジェクトの自動化されたテストを行うために協働して相互作用する、関連するモジュールおよびデータ構造を示す概略図である。コンピューティングシステムは、ソフトウェアオブジェクトに対してオペレーションを実行できる、任意のコンピューティングシステムであってよい。こうしたコンピューティングシステムの一例については、図４に関して以下で例示および説明する。ただし、当業者であれば、この説明を再検討した後に、任意のコンピューティングシステムが、好ましいソフトウェアおよび／またはハードウェアを使用して本発明の機能を実施できることを理解されよう。
【００２５】
コンピューティングシステム１００は、無効なコールシーケンスを自動的に識別するために、オブジェクト１０５をテストしている。前述のように、オブジェクト上で実行された無効なコールシーケンスは、オブジェクトに例外を投入させる。次に試験者は、無効なコールシーケンスを生成すること、およびそれらの無効なコールシーケンスをオブジェクト上で実行することについて苦慮しなければならないのではなく、適切な例外が投入されたか否かに自分の注意を集中させることができる。
【００２６】
オブジェクト１０５は、このオブジェクトがテストされるアイテムであることを表すために、輪郭がより太い線で示されている。コンピューティングシステム１００内の他の四角い要素（たとえば、オペレーション生成モジュール１０１、パラメータ生成モジュール１０２、コールシーケンス生成モジュール１０３、実行モジュール１０４、および最小化モジュール１０６）は、オブジェクト１０５のテストを容易にする、実行可能モジュールを表す。スクロール状の要素（たとえば、メソッド１１１、オペレーションセット１１４、およびコールシーケンス１１５）は、オブジェクト１０５のテストを容易にするデータを表す。オブジェクト指向プログラミングの分野で、従来から知られているように、オブジェクト１０５は、１つまたは複数のメソッド、およびオプションでデータも含む。たとえば、オブジェクト１０５は、メソッド１１１およびデータ１１６を含む。
【００２７】
これら様々な構成要素の協働相互作用について、本発明の原理に従って無効なコールシーケンスを識別するためにオブジェクトをテストするための方法２００を示す流れ図である、図２を参照しながらさらに説明する。したがって、図２を頻繁に参照しながら、図１について説明する。
【００２８】
方法２００には、オブジェクトに関する１つまたは複数の予測される例外セットを識別する、オプションの動作（ａｃｔ）（動作２０１）が含まれる。動作２０１は、動作のオプションの性質を強調するために、破線の四角を使用して示されている。たとえば、オブジェクト１０５がファイルである上記の例の場合、予測される例外には「ファイルが見つからない」、「ファイル読取り」、「ファイル書込み」、「ファイルがすでにクローズした」、および「ファイルがオープンしていない」という例外が含まれる。これらの例外は、単に、オブジェクトに関連付けられた例外に関するソースを信用することによって識別することができる。たとえば、マニュアル、白書、または他の文書が、例外を識別することができる。例外は、テストを行ってオブジェクトに関するソースコードを検査することにより、手動で識別することもできる。オブジェクトに関する例外は、オブジェクトに関するソースコード、中間形式コード、および２進命令のいずれかを検査するソフトウェアを使用して、自動的に識別することもできる。例外を識別するために２進命令の構造を検査するための方法は、「Non-Invasive Rule-Based Binary Analysis of Software Assemblies」と題する米国特許出願第１０／４１３２５４号に記載されている。
【００２９】
方法２００は、例外を引き起こす無効なコールシーケンスを自動的に識別するための、機能的な結果指向のステップ（ステップ２０２）も含む。このステップは、この結果を実施するための任意の対応する動作を含むこともできる。ただし、図２の例示された実施形態では、ステップには対応する動作２０３、２０４、２０５、および２０６が含まれる。
【００３０】
具体的に言えば、オブジェクトによって実行できる、可能なオペレーションのセットまたはプールが生成される（動作２０３）。図１を参照すると、これは、オペレーション生成モジュール１０１によって実施可能である。オペレーション生成モジュール１０１によって生成されるオペレーションは、テスト用オブジェクトによって提供されるメソッドに大きく依存する。したがって、オペレーション生成モジュール１０１は、オブジェクト１０５のメソッド１１１を入力として受け取る。オブジェクトによって、１つまたは複数のメソッドを提供することができる。ただし、図１に示された特定の例では、メソッド１１１は、メソッド１１１Ａ、１１１Ｂ、１１１Ｃ、縦の省略符号１１１Ｄによって表された数ある中で潜在的にある他のメソッドを含む。
【００３１】
どんなパラメータも必要としない任意のメソッドの場合、メソッドは可能なオペレーションのセット１１４中に直接含まれる場合がある。ただし、ほとんどのメソッドは、１つまたは複数のパラメータを必要とし、各パラメータは特定のパラメータタイプを有する。たとえば、パラメータタイプには、プログラミングおよびテストの分野の技術者であれば周知であるような、整数、浮動小数点数、配列、文字列、ブール値などが含まれる。任意の所与のパラメータタイプの場合、パラメータ生成モジュールは、ランダムに選択されたそのタイプのパラメータよりも例外を発生させる見込みの高い、対象のパラメータを生成する。
【００３２】
たとえば、整数パラメータタイプの場合、値−１、＋１、０、および＋２０，０００，０００，０００が、例外を発生させる見込が高い。たとえば、ファイルオブジェクトの読取りメソッドは、読み取るバイト数を表すための整数パラメータタイプを有することができる。負数の１バイトの情報を読み取ることは、論理的に意味を成さないため、整数値「−１」は例外を発生させるはずである。ゼロバイトの情報を読み取ることは、無用な動作となるため、整数値「０」は最も例外を発生させる見込が高い。「＋２０，０００，０００，０００」は、この値がファイルサイズよりも大きいと想定すると、例外を発生させるはずである。整数値「＋１」（または、さらに詳しく言えば任意の他の正の整数値）は、ファイルが読取りオペレーション時にクローズされている場合、例外を発生させる可能性がある。
【００３３】
図３は、パラメータ値を生成するための方法３００を示す図である。パラメータタイプが、方法３００への入力として提供される（動作３０１）。その後、最初の対象のパラメータが生成される。たとえば、整数パラメータタイプの場合、「−１」、「＋１」、「０」、および「＋２０，０００，０００，０００」が対象の整数値タイプである。最初に生成された値は、次に、結果的に同じパラメータタイプを有するパラメータのリストを生じさせるためのオペレーションによってパラメータを変更することのできる、モディファイア（変更子；ｍｏｄｉｆｉｅｒ）に提供される（動作３０３）。たとえば、整数パラメータタイプに好適なオペレーションは、加法「＋」、減法「−」、除法「／」、および乗法を含むことができる。たとえば、加法演算は結果として、−２（−１＋−１から）、０（−１＋＋１から）、−１（−１＋０から）、１９，９９９，９９９，９９９（−１＋２０，０００，０００，０００から）、＋２（＋１＋＋１から）、＋１（＋１＋０から）、２０，０００，０００，００１（１＋２０，０００，０００，０００から）、０（０＋０から）、＋２０，０００，０００，０００（０＋２０，０００，０００，０００から）、および４０，０００，０００，０００（２０，０００，０００，０００＋２０，０００，０００，０００から）の値を生じさせることができる。次に、重複が除去される（動作３０４）。動作３０２、３０３、および３０４は、１回のみ実行可能であるか、または矢印３０６によって表されるように、「対象の」パラメータ値を形成する（動作３０５）ために反復可能である。
【００３４】
最初にパラメータ値を生成する動作３０２およびパラメータ値を変更する動作３０３は、どのようなパラメータタイプであるかに大きく依存する。対象のパラメータ値は、何が例外を生成する可能性があるかに関する経験を有するものによって判定することができる。たとえば、文字列タイプの場合、１つのパラメータが任意の文字列（たとえば「ｆｏｏ」）であり、他の文字列がかなり長い文字列、さらに他の制御文字という場合がある。特定の次元を有する配列タイプの場合、指定された次元よりも小さい配列を再帰的に生成し、特定の次元と同じサイズの配列を生成し、さらに、指定された次元よりも大きい配列を生成することができる。ブール値の場合はさらにわかりやすく、対象のブール値は単に「真」または「偽」であってよい。浮動小数点値の場合、１Ｅ１０００は、オブジェクトオペレーションがそれに対して実行されると、算術（またはオーバフロー／アンダフロー）例外を生成するはずである。１Ｅ−１０００は同じことを実行しないはずである。１Ｅ−１０００は、その浮動小数点がオブジェクト内で分母として扱われた場合に、同じことを実行する可能性がある。
【００３５】
値は、結果的に同じパラメータタイプの値を生じさせるオペレーションを実行することによって、変更可能である。たとえば、文字列の場合、オペレーションはすべての大文字を小文字にし、および他のオペレーションは反対のことを実行することができる。さらに文字列は、文字列「ａｂｃ」を受け取ったオペレーションが文字列「ａ」、「ａｂ」、および「ａｂｃ」を提供する、「すべての部分列（ｓｕｂｓｅｑｕｅｎｃｅｓ）を獲得」オペレーションを有することもできる。配列の場合、加法、減法、クロス乗積、ドット積がオペレーションであってよく、浮動小数点値の場合、加法、減法、除法、および乗法がオペレーションであってよい。
【００３６】
例外をより生成しやすいパラメータの生成プロセスは、かなり主観的である。こうしたパラメータを生成するためのどんな方法も、本発明の原理の範囲に入り、たとえ力ずくのランダム生成でも十分である。ただし、結果的に例外を投入することになりやすいパラメータを選択すると、生成される無効なコールシーケンスの割合を上げることによって、効率が上がる。
【００３７】
再度図１を参照すると、パラメータ生成は、オペレーション生成モジュール１０１がパラメータタイプ１１２をパラメータ生成モジュール１０２に供給すること、およびパラメータ生成モジュール１０２が、パラメータタイプ１１２に対応する特定の対象のパラメータ１１３をオペレーション生成モジュール１０１に戻すことによって、表されている。次にオペレーション生成モジュール１０１は、特定のパラメータタイプがメソッド内にある場所に、その特定のパラメータタイプの特定の値を置く。これは、オペレーションを生成するために、メソッド内の各パラメータについて実行される。次にそのオペレーションは、オブジェクト１０５が実行できる可能なオペレーションのプール１１４に含められる。
【００３８】
図１を参照すると、オペレーションセット１１４は、一例として、メソッド１１１Ａ内にあるパラメータ１１３Ａを含むオペレーション１１４Ａと、メソッド１１１Ｂ内にあるパラメータ１１３Ｂを含むオペレーション１１４Ｂと、メソッド１１１Ｃ内にあるパラメータ１１３Ｃを含むオペレーション１１４Ｃと、メソッド１１１Ａ内にあるパラメータ１１３Ｄを含むオペレーション１１４Ｄと、メソッド１１１Ｂ内にあるパラメータ１１３Ｅを含むオペレーション１１４Ｅと、メソッド１１１Ｃ内にあるパラメータ１１３Ｆを含むオペレーション１１４Ｆと、潜在的に縦の省略符号１１４Ｇによって表された多くのその他とを含む。オペレーションセットには、３つの異なるメソッド１１１Ａ、１１１Ｂ、および１１１Ｃに関連付けられたオペレーションが含まれる。ただし、本発明の原理は、単一のメソッドを有するオブジェクトにも好適である。その場合の相違点は、オペレーションセットが、潜在的に異なるパラメータを備えた単一メソッドのオペレーションを含むことである。
【００３９】
オペレーションセット１１４が、コールシーケンス生成モジュール１０３に提供され、これによって方法２００は、オペレーションのセットからオペレーションのコールシーケンスを自動的に構築する動作（動作２０４）に進むことができる。所与の長さのコールシーケンスを生成するためのストラテジには、完全ストラテジ、ランダムストラテジ、およびペア（ｐａｉｒｗｉｓｅ）ストラテジの、少なくとも３つの異なるストラテジがある。
【００４０】
完全ストラテジは、その所与の長さを有するオペレーションシーケンスのあらゆる可能な順列に対応し、オペレーションセットに属するオペレーションから導出可能なコールシーケンスがある、十分なコールシーケンスを生成することに関係する。この完全ストラテジは、短いコールシーケンスおよび小さなオペレーションセットを引き出すのに効果的である。ただし、長いコールシーケンスおよび／または大きなオペレーションセットの場合、完全ストラテジは指数関数的に処理が集中してしまう。
【００４１】
ランダムストラテジは、オペレーションセットからランダムにオペレーションを選択することによって、限られた数のコールシーケンスを構築することに関係する。これにより、あらゆる可能なコールシーケンスをテストすることについて苦慮する必要なしに、コールシーケンスをテストすることができる。ただし、この利点は、このストラテジの欠点でもある。具体的に言えば、すべてのコールシーケンスがテストされるわけではないため、いくつかの例外が見逃される可能性がある。
【００４２】
他のストラテジは、コールシーケンスのペアテストに関係する。具体的に言えば、所与の隣接するオペレーションペアを有するコールシーケンスがいったん生成されると、その同じ隣接するオペレーションペアを有するコールシーケンスは生成されない。同じ技法を、３つ、４つなどの、隣接するペアに適用することができる。この理論の背後にある一般的な考え方は、概して、同じ隣接するペアオペレーションを有するコールシーケンスは、他のコールシーケンスよりも同じ例外を生成する可能性が高いため、テストしてもあまり有益ではないという考え方である。こうしたペアテストを実行するための方法については、「Automatic Identification of Input Values that Expose Output Failures in a Software Object」と題する米国特許出願第１０／３８５２５５号に記載されている。
【００４３】
図１を参照すると、生成されたコールシーケンスは、たとえば、コールシーケンス１１５Ａ、１１５Ｂ、１１５Ｃ、１１５Ｄ、１１５Ｅ、および１１５Ｆを含む、コールシーケンス１１５で表される。コールシーケンス１１５Ｆは、３オペレーション長さであるコールシーケンスの特定の例を示すために展開されている。コールシーケンス１１５Ｆ内のオペレーションには、オペレーション１１４Ｅ、１１４Ｂ、および１１４Ｆが含まれる。
【００４４】
生成された各コールシーケンスに対して、次に方法２００は、オブジェクトを使用してオペレーションのコールシーケンスを実行する（動作２０５）。これは、実行モジュール１０４が、コールシーケンスを受け取り、コールシーケンスをオブジェクト１０５で実行し、その後いずれかの例外を検出することによって実施可能である。コールシーケンスによっては、例外を発生させない場合もある。ただし、無効なコールシーケンスの場合、方法２００は、コールシーケンスを実行した結果として例外が投入されたことを自動的に識別する動作（動作２０６）を含む。たとえば実行モジュール１０４は、オブジェクト１０５から例外を受け取る。この受取りは、直接、または実行時環境の他の構成要素を解して間接的に、実行可能である。
【００４５】
オプションとして、コールシーケンスは、同じ例外を生じる結果となる長さの短いコールシーケンスを識別するために、最小化モジュール１０６を使用して最小化される。これは、コールシーケンス内の順次依存性を維持しながら、コールシーケンス内であらゆるオペレーションサブセットをテストすることによって実施可能である。これによって、コールシーケンス長さが長い場合、処理集中タスクを証明することができる。他のオプションは、サイズが減じられたコールシーケンスのうちのいずれかがまた、例外を生成したかどうかを判定するために、例外を生成した元のコールシーケンスから１つのオペレーションを除去することである。生成していない場合、例外を生成した元のコールシーケンスは、すでに最小化されているとみなされる。そうでない場合、減じられるときにどのオペレーションが除去されるかに関係なく例外を発生させないコールシーケンスがわかるまで、また例外を生成した１つまたは複数のサイズが減じられたコールシーケンスは、サイズが減じられたコールシーケンスのツリーを下がっていくというように、同様に１つずつ減じられていく。
【００４６】
次に、方法２００には、例外の発生および例外を発生させたコールシーケンスを報告する動作（動作２０７）が含まれる。コールシーケンスが最小化される場合、報告されるのは最小化されたコールシーケンスであるか、または、例外を生成した元のコールシーケンスならびに最小化されたコール例外の両方が報告される。予測された例外が動作２０１で識別された場合、例外が識別された例外のうちの１つであったかどうかも報告される。
【００４７】
オペレーションセット中のオペレーション数を減らすために、所与のメソッドに関して予測されるすべての例外が、１つまたは複数のコールシーケンスを使用して検出されると、そのメソッドに基づくオペレーションは、潜在的に任意の他のコールシーケンスから除外される。たとえ例外が検出された後であっても、まだメソッドの報告準備が整っていない（おそらく、メソッドが報告前にコールシーケンスを最小化するものである場合など）場合、プロセスは、他のコールシーケンスがまだ構築されていなければこれを構築し、そのコールシーケンスを実行する動作に戻る。さらに、例外およびコールシーケンスを報告した後であっても、プロセスを繰り返すことができる。オプションで、そのメソッドに関連付けられた例外がすべて検出されたために、特定の関連するメソッドを有するオペレーションが除去される場合のように、オブジェクトによって実行可能なオペレーションのセットを再構築することによって、プロセスを繰り返すことができる。
【００４８】
以上、オブジェクトが不適切な例外を生成したことを試験者が識別するのを助けるために、無効なコールシーケンスが自動的に識別される方法を実施するための、方法、システム、およびコンピュータプログラム製品について説明してきた。当業者であれば、本発明が、パーソナルコンピュータ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースのまたはプログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなどを含む、多くのタイプのコンピュータシステム構成を備えたネットワークコンピューティング環境で実施可能であることも理解されよう。本発明は、（ハードワイヤードリンク、ワイヤレスリンク、あるいはハードワイヤードまたはワイヤレスリンクの組合せのいずれかによって）通信ネットワークを介してリンクされたローカルおよびリモートの処理デバイスによってタスクが実行される、分散コンピューティング環境でも実施可能である。分散コンピューティング環境では、プログラムモジュールは、ローカルおよびリモートのどちらのメモリ記憶デバイスにも配置することができる。
【００４９】
図４および以下の解説は、本発明のある種の要素を実施するのに好適なコンピューティング環境について、簡単かつ概括的に説明することを意図するものである。ただし、本発明は、必ずしも任意の特定のコンピュータ化されたシステムに限定されるものではなく、多様なコンピュータ化されたシステムで実施可能であることを強調したい。
【００５０】
一実施形態によれば、本発明には、コンピューティングデバイスによって実行可能なプログラムモジュールなどのコンピュータ実行可能命令を格納する、１つまたは複数のコンピュータ読取り可能な記録媒体が含まれる。通常、プログラムモジュールには、特定のタスクを実行するかまたは特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などが含まれる。コンピュータ実行可能命令、関連するデータ構造、およびプログラムモジュールは、本明細書に開示された方法のステップを実行するためのプログラムコード手段の例を表す。こうした実行可能命令または関連するデータ構造の特定のシーケンスは、こうしたステップに記載された機能を実施するための、対応する動作の例を表す。
【００５１】
当業者であれば、本発明が、個々のコンピューティングデバイスに加えて、パーソナルコンピュータ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースのまたはプログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、その構成要素などを含む、多くのタイプのコンピュータシステム構成を備えた、ネットワークコンピューティング環境で実施可能であることを理解されよう。本発明は、（ハードワイヤードリンク、ワイヤレスリンク、あるいはハードワイヤードまたはワイヤレスリンクの組合せのいずれかによって）通信ネットワークを介してリンクされたローカルおよびリモートの処理デバイスによってタスクが実行される、分散コンピューティング環境でも実施可能である。分散コンピューティング環境では、プログラムモジュールは、ローカルおよびリモートのどちらのメモリ記憶デバイスにも配置することができる。
【００５２】
具体的に図４を参照すると、本発明のある種の要素を実施するためのシステム例には、プロセッサ４２１、コンピュータ読取り可能な記録媒体を含むシステムメモリ４２２、および、システムメモリ４２２を含む様々なシステム構成要素をプロセッサ４２１に結合するシステムバス４２３を含む、従来のコンピュータ４２０の形の汎用コンピューティングシステムが含まれる。システムバス４２３は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのいずれかを使用するローカルバスを含む、いくつかのタイプのバス構造のうちのいずれかであってよい。システムメモリは、読取り専用メモリ（ＲＯＭ）４２４およびランダムアクセスメモリ（ＲＡＭ）４２５を含む。起動時などの、コンピュータ４２０内の要素間での情報転送を助ける基本ルーチンを含む、ＢＩＯＳ（Basic Input/Output System）４２６は、ＲＯＭ  ４２４に格納することができる。
【００５３】
コンピュータ４２０は、磁気ハードディスク４３９からの読取りおよびこれへの書込みのための磁気ハードディスクドライブ４２７、リムーバブル磁気ディスク４２９からの読取りおよびこれへの書込みのための磁気ディスクドライブ４２８、および、ＣＤ（compact disk）−ＲＯＭまたは他の光媒体などのリムーバブル光ディスク４３１からの読取りまたはこれへの書込みのための光ディスクドライブ４３０も含むことができる。磁気ハードディスクドライブ４２７、磁気ディスクドライブ４２８、および光ディスクドライブ４３０は、それぞれハードディスクドライブインタフェース４３２、磁気ディスクドライブインタフェース４３３、および光ドライブインタフェース４３４によって、システムバス４２３に接続される。ドライブおよびそれらに関連付けられたコンピュータ読取り可能な記録媒体は、コンピュータ実行可能命令、データ構造、プログラムモジュール、および他のデータの不揮発性ストレージを、コンピュータ４２０に提供する。これらの記憶媒体は、前述のように、補正係数をガンマ値に関連付けるデータ構造を格納するためにも使用可能である。本明細書に記載された例示的環境は、磁気ハードディスク４３９、リムーバブル磁気ディスク４２９、およびリムーバブル光ディスク４３１を使用しているが、データを格納するために、磁気カセット、フラッシュメモリカード、ＤＶＤ（digital versatile disk）、ベルヌイカートリッジ、ＲＡＭ、ＲＯＭなどを含む、他のタイプのコンピュータ読取り可能な記録媒体を使用することができる。
【００５４】
１つまたは複数のプログラムモジュールを含むプログラムコード手段を、ハードディスク４３９、磁気ディスク４２９、光ディスク４３１、ＲＯＭ  ４２４、あるいは、オペレーティングシステム４３５、１つまたは複数のアプリケーションプログラム４３６、他のプログラムモジュール４３７、およびプログラムデータ４３８を含む、ＲＡＭ  ４２５上に格納することができる。オペレーション生成モジュール１０１、パラメータ生成モジュール１０２、コールシーケンス生成モジュール１０３、実行モジュール１０４、および最小化モジュール１０６は、他のプログラムモジュール４３７の例を表す。さらに、メソッド１１１、オペレーションセット１１４、およびコールシーケンス１１５は、プログラムデータ４３８の例を表す。
【００５５】
ユーザは、キーボード４４０、ポインティングデバイス４４２、または、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送用パラボラアンテナ、スキャナなどの他の入力デバイス（図示せず）を介して、コンピュータ４２０にコマンドおよび情報を入力することができる。これらおよび他の入力デバイスは、システムバス４２３に結合されたシリアルポートインタフェース４４６を介して、プロセッサ４２１に接続されることが多い。あるいは、入力デバイスは、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）などの他のインタフェースによって接続することができる。モニタ４４７または他のディスプレイデバイスも、ビデオアダプタ４４８などのインタフェースを介してシステムバス４２３に接続される。この状況では、ビデオアダプタ４４８は、前述のようにＧＰＵを含むものとみなされる。パーソナルコンピュータは、典型的には、モニタに加え、スピーカおよびプリンタなどの他の周辺出力デバイス（図示せず）を含む。
【００５６】
コンピュータ４２０は、リモートコンピュータ４４９ａおよび４４９ｂなどの１つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境で動作可能である。リモートコンピュータ４４９ａおよび４４９ｂは、それぞれ、他のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の共通ネットワークノードであってよく、図４には、メモリ記憶デバイス４５０ａおよび４５０ｂならびにそれらの関連するアプリケーションプログラム４３６ａおよび４３６ｂのみが示されているが、通常は、コンピュータ４２０に関して上記で述べた多くのまたはすべての要素を含む。図４に示された論理接続には、例として示されたローカルエリアネットワーク（ＬＡＮ）４５１およびワイドエリアネットワーク（ＷＡＮ）４５２が含まれるが、これらに限定されるものではない。こうしたネットワーキング環境は、オフィス規模または企業規模のネットワーク、イントラネット、およびインターネットで普及している。
【００５７】
ＬＡＮネットワーキング環境で使用される場合、コンピュータ４２０は、ネットワークインタフェースまたはアダプタ４５３を介してローカルネットワーク４５１に接続される。ＷＡＮネットワーキング環境で使用される場合、コンピュータ４２０にはモデム４５４、ワイヤレスリンク、または、インターネットなどのワイドエリアネットワーク４５２を介して通信を確立するための他の手段が含まれる。モデム４５４は内蔵または外付けであってよく、シリアルポートインタフェース４４６を介してシステムバス４２３に接続される。ネットワーク化された環境では、コンピュータ４２０関して示されたプログラムモジュールはまたはその一部は、リモートメモリ記憶デバイスに格納することができる。図示されたネットワーク接続は例示的なものであって、ワイドエリアネットワーク４５２を介して通信を確立するその他の手段が使用可能であることを理解されよう。
【００５８】
本発明は、その趣旨または不可欠な特徴を逸脱することのない他の特定の形で実施することができる。記載された実施形態は、すべての点で例示的なものに過ぎず、限定的なものではないとみなされる。したがって本発明の範囲は、前述の説明ではなく添付の特許請求の範囲によって示される。特許請求の範囲の意味または同等の範囲内でのすべての変更は、その範囲に包含されるものである。
【図面の簡単な説明】
【００５９】
【図１】本発明を適用できる実施形態のオブジェクトのテストを実行する、コンピューティングシステムならびに関連するモジュールおよびデータ構造を示す概略図である。
【図２】本発明を適用できる実施形態のオブジェクトをテストするための方法を示す流れ図である。
【図３】本発明を適用できる実施形態のパラメータを自動的に生成するための方法を示す図である。
【図４】本発明を適用できる実施形態の好適なコンピューティングシステムを示す、より詳細な概略図である。
【符号の説明】
【００６０】
１００  コンピューティングシステム
１０１  オペレーション生成モジュール
１０２  パラメータ生成モジュール
１０３  コールシーケンス生成モジュール
１０４  実行モジュール
１０５  オブジェクト
１０６  最小化モジュール
１１１  メソッド
１１２  パラメータタイプ
１１３  パラメータ
１１４  オペレーションセット
１１５  コールシーケンス
１１５Ｆ  コールシーケンス
１１６  データ
【図１】
2004318887.tif 000003
【図２】
2004318887.tif 000004
【図３】
2004318887.tif 000005
【図４】
2004318887.tif 000006