"アプリケーションプログラムに含まれる複数の処理単位の各々をノードに対応させ、前記アプリケーションプログラムに対するテストケースの実行トレース情報に含まれる複数のイベントに基づいて、最上位ノードを出発点としてノードを追跡しながら、前記複数の処理単位の各々の呼出構造を、前記ノード間を結ぶツリー構造として記憶部に記憶するプログラムであって、前記実行トレース情報から、N番目のイベントを読み込み、前記N番目のイベントが処理単位の呼出開始イベントの場合には、現在追跡しているノードから、前記呼出開始イベントが示す処理単位に対応する子ノードに移動すべきことを決定し、前記N番目のイベントが処理単位の呼出終了イベントの場合には、現在追跡しているノードよりも最上位ノード側の親ノードに移動すべきことを決定することによって、ノードを追跡し、前記決定において前記子ノードに移動すべきことが決定された場合に、前記現在追跡しているノードの子ノードに前記呼出開始イベントが示す処理単位に対応するノードが既に存在するか否かを判定し、前記判定において存在しないと判定された場合には、移動すべき前記子ノードを前記記憶部に記憶された前記ツリー構造に追加記憶する、処理をコンピュータに実行させるプログラム。前記イベントには属性が含まれ、前記N番目のイベントに含まれる属性を抽出し、該抽出した属性を前記N番目のイベントに関連するノードに対応づけて前記記憶部に記憶する、処理を更にコンピュータに実行させる請求項1記載のプログラム。前記属性は、前記処理単位の引数、前記処理単位の戻り値、前記処理単位の実行回数、及び前記テストケースの識別情報のうち、いずれか1つを含む、請求項1又は2記載のプログラム。指定された属性に基づいて、ツリー構造に関連する情報を加工して出力する、処理を更にコンピュータに実行させる請求項1乃至3のうちいずれか1項記載のプログラム。前記加工して出力する処理は、第1のテストケースによって出力されたツリー構造と、第2のテストケースによって出力されたツリー構造との相違点を出力する、処理を更にコンピュータに実行させる請求項4記載のプログラム。前記加工して出力する処理は、第1のテストケースによって出力されたツリー構造と、第2のテストケースによって出力されたツリー構造とが一致するか否かを判断した結果を出力する、処理を更にコンピュータに実行させる請求項4又は5記載のプログラム。アプリケーションプログラムに含まれる複数の処理単位の各々をノードに対応させ、前記アプリケーションプログラムに対するテストケースの実行トレース情報に含まれる複数のイベントに基づいて、最上位ノードを出発点としてノードを追跡しながら、前記複数の処理単位の各々の呼出構造を、前記ノード間を結ぶツリー構造として記憶部に記憶する方法であって、前記実行トレース情報から、N番目のイベントを読み込み、前記N番目のイベントが処理単位の呼出開始イベントの場合には、現在追跡しているノードから、前記呼出開始イベントが示す処理単位に対応する子ノードに移動すべきことを決定し、前記N番目のイベントが処理単位の呼出終了イベントの場合には、現在追跡しているノードよりも最上位ノード側の親ノードに移動すべきことを決定することによって、ノードを追跡し、前記決定において前記子ノードに移動すべきことが決定された場合に、前記現在追跡しているノードの子ノードに前記呼出開始イベントが示す処理単位に対応するノードが既に存在するか否かを判定し、前記判定において存在しないと判定された場合には、移動すべき前記子ノードを前記記憶部に記憶された前記ツリー構造に追加記憶する、ことを特徴とする方法。アプリケーションプログラムに含まれる複数の処理単位の各々をノードに対応させ、前記アプリケーションプログラムに対するテストケースの実行トレース情報に含まれる複数のイベントに基づいて、最上位ノードを出発点としてノードを追跡しながら、前記複数の処理単位の各々の呼出構造を、前記ノード間を結ぶツリー構造として記憶部に記憶する装置であって、前記実行トレース情報から、N番目のイベントを読み込む、イベント読込部と、前記N番目のイベントが処理単位の呼出開始イベントの場合には、現在追跡しているノードから、前記呼出開始イベントが示す処理単位に対応する子ノードに移動すべきことを決定し、前記N番目のイベントが処理単位の呼出終了イベントの場合には、現在追跡しているノードよりも最上位ノード側の親ノードに移動すべきことを決定することによって、ノードを追跡する、ノード追跡部と、前記決定において前記子ノードに移動すべきことが決定された場合に、前記現在追跡しているノードの子ノードに前記呼出開始イベントが示す処理単位に対応するノードが既に存在するか否かを判定する、同一呼出構造存在判定部と、前記判定において存在しないと判定された場合には、移動すべき前記子ノードを前記記憶部に記憶された前記ツリー構造に追加記憶する、呼出構造ノード追加部と、を有することを特徴とする装置。本プログラム、装置及び方法は、上記実情に鑑みなされたもので、大容量のトレース情報に対して、呼出構造を保持しながら、トレース情報を集約することを目的の一つとしている。本プログラムの一観点によれば、アプリケーションプログラムに含まれる複数の処理単位の各々をノードに対応させ、前記アプリケーションプログラムに対するテストケースの実行トレース情報に含まれる複数のイベントに基づいて、最上位ノードを出発点としてノードを追跡しながら、前記複数の処理単位の各々の呼出構造を、前記ノード間を結ぶツリー構造として記憶部に記憶するプログラムであって、前記実行トレース情報から、N番目のイベントを読み込み、前記N番目のイベントが処理単位の呼出開始イベントの場合には、現在追跡しているノードから、前記呼出開始イベントが示す処理単位に対応する子ノードに移動すべきことを決定し、前記N番目のイベントが処理単位の呼出終了イベントの場合には、現在追跡しているノードよりも最上位ノード側の親ノードに移動すべきことを決定することによって、ノードを追跡し、前記決定において前記子ノードに移動すべきことが決定された場合に、前記現在追跡しているノードの子ノードに前記呼出開始イベントが示す処理単位に対応するノードが既に存在するか否かを判定し、前記判定において存在しないと判定された場合には、移動すべき前記子ノードを前記記憶部に記憶された前記ツリー構造に追加記憶する、処理をコンピュータに実行させるプログラムが提供される。本プログラムでは、アプリケーションプログラムが同一処理を複数回実行する場合に、呼び出し構造を保持しながら、その実行トレース情報を集約できるので、特に繰り返し処理が多い場合、少ない情報量で実行トレース情報を保持することが出来る。図1a及びbは、アプリケーションプログラムの実行トレース情報の例を示している。トレース情報には、説明の便宜上、行番号を付してある。各行番号に対応する1つのトレースデータは、1つのイベントを意味している。図1aは、テストケース名として、Test1が与えられた、トレース情報を示している。図1bは、同一のアプリケーションプログラムの実行トレース情報であるが、図1aのトレース情報とは別個に取得されたトレース情報であり、テストケース名としてTest2が与えられている。通常、アプリケーションプログラムの実行トレースデータは、アプリケーションプログラムの特定の機能に着目して、取得される。したがって、個々のトレース情報の名前として付与されたテストケース名は、特定の機能単位情報としての意味を持つ場合がある。なお、本発明はこの点に限定されるものではない。図1cは、トレース情報の記述形式を説明するための図である。>Aは、メソッドAの呼出開始を意味する。<Aは、メソッドAの呼出終了を意味する。また、arg1,arg2v1,v2において、arg1,arg2、は引数の型を示し、v1,v2は、それぞれ、引数の値を示す。また、returna3,v3において、a3は戻り値の型を示し、v3は戻り値を示す。図1aの例えば行番号1の>Aは、Aという名前のメソッドの呼出が開始されたことを意味する。例えば、メソッドAの例として、画面上のボタンを押すと特定の写真を画面に表示するメソッドを例に説明する。この場合には、>Aは、ボタンがマウスによりクリックされ、メソッドAが呼び出されたイベントを意味する。図1aの行番号2の>Bは、メソッドBが呼出開始されたことを意味する。そして、行番号11の>Aは、メソッドAの呼出が終了したイベントを示している。これは、例えばメソッドAにより、写真の表示が終了したイベントを意味する。また、図1bの行番号7は、>Darg1,arg2,v1,v2となっている。これは、メソッドDが呼出開始されたことを意味し、引数の型がそれぞれarg1,arg2である引数の値v1,v2が、その時に与えられたイベントを意味する。行番号8は、<Dreturna3,v3となっており、メソッドDの呼出終了を意味し、メソッドDの戻り値として、型a3の戻り値v3が返されたことを意味する。図1に示すように、本発明の一実施形態では、あるアプリケーションプログラムに対して、必要な入力データを用意し、そのアプリケーションプログラムを実行して得られる実行履歴であるトレース情報を取得する。ただし、図1に示されたトレース情報は、複雑であり、実際のトレース情報は膨大なものとなる。このため、一実施形態では、そのトレース情報に対して、呼出構造を作成する。この呼出構造を基に、ツリー構造を作成する。ツリー構造の例は、図2Bを用いて後述する。一実施形態におけるトレース情報は、1つの処理単位に対して、1つのイベント情報を取得できる形で記録されているものとする。例えば、1つのメソッド呼び出し、メソッド終了をそれぞれテキスト形式で、1行で記述されていて、トレース情報読込み時には、行単位でその情報を読み込む。このことで、一回の読込みで、対応する一つの処理単位の情報を取得する。なお、本発明は、上述の記載に限定されるものではなく、トレース情報の形式は、1つのイベントを順番に取得できるようなデータ形式であれば、どのようなものであってもよいことは言うまでもない。メソッドの呼出構造とは、メソッドの呼出開始後、そのメソッドが別のメソッドを呼び出した場合に、その呼び出し先のメソッドを子ノード、現在追跡中のノードに相当する呼出元のメソッドを親ノードとして構築することで作成する。呼び出し先の情報を読み込むとき、現在追跡中のノードを子ノードに移動する。呼び出しが終了したとき、再度呼び出し元メソッドのノードへ移動する。呼出構造の最上位のノードは、トレース情報の開始地点を示すものであり、最上位ノードと呼ぶ。また、現在追跡中のノードとは、ツリー構造上において、本実施形態が注目しているノードを意味する。この現在追跡中のノードは、トレース情報のイベントを一つ読み込む毎に、ツリー構造に沿って、最上位ノード側の親ノード、又は、最上位ノードと反対方向に位置する子ノードに、必要に応じて移動して行く。この移動の詳細は、以下の説明に示されている。呼出構造は、トレース情報の実行順にそのまま構造を作成するのではなく、同一構造である箇所については集約して作成する。呼出構造を集約して保持することで、メソッド間の関係を保ちながら、かつ、大容量のトレース情報を集約して保存することを実現している。呼出構造を集約するときに、処理単位の情報も合わせて取得する。これは、実行するアプリケーションプログラムのテストケースのトレース情報の処理単位の属性を構造上に記憶させておく。このことにより、属性の種類および値で検索を行うことを実現できる。例えば、処理単位に対して、実行回数を記録することで、繰り返し構造を集約した情報を記憶することを実現する。また、メソッドの引数値および戻り値を取得できる場合は、引数値、戻り値の情報を属性値として記録してもよい。呼出構造の作成は、予め取得したトレース情報に対して作成することも可能であるが、アプリケーションプログラムの実行時に同時に作成してもよい。従って、実行中に情報を集約しながら記録することができるので、ログ情報を集約して保存する方法としても利用できる。次に、本発明の一実施形態の各構成について記述する。図2Aは、本発明の一実施形態の機能構成を示す図である。最上位ノード取得部202では、過去にアプリケーションの呼出構造データがあった場合は、その情報を入力として、呼出構造作成時の最上位ノード204を取得して出力する。トレース情報の最初の入力であった場合、最上位ノード204を定義する。他のトレース情報に基づき、既に作成したアプリケーションの呼出構造データ224内に最上位ノードが存在したときには、そのノードを取得する。イベント読込部208では、リアルタイムに取得されるか、あるいはメモリに蓄積されたアプリケーションプログラムのトレース情報206から、1つのイベントを読み込む。ノード追跡部210は、トレース情報から読み込まれた1つのイベントのデータであるメソッドの呼出開始、又はメソッドの呼出終了を含む情報と、最上位ノードを入力とする。初期段階では、現在追跡中のノードを最上位ノードに設定する。読み込まれたイベントがメソッドの呼出開始イベントの場合には、現在追跡中のノードから、前記呼出開始イベントが示す処理単位に対応する子ノードに、現在追跡中のノードを移動すべきことを決定し、読み込まれたイベントがメソッドの呼出終了イベントの場合には、現在追跡中のノードよりも最上位ノード側の親ノードに、現在追跡中のノードを移動すべきことを決定する。メソッド呼出開始後、別のメソッドを呼び出した場合に呼び出し先メソッドである子ノードへ、現在追跡中のノードを移動し、そのノードを基点に次のトレース情報を読み込む。メソッドの呼出が終了したときは、呼出元ノードである親ノードへ、現在追跡中のノードを移動させる。同一呼出構造存在判定部214で、現時点までに作成した呼出構造と、現在追跡中のノード、および、トレース情報を取得し、現在追跡中のノードの子ノードに、トレース情報から取得したメソッドの呼出開始に対応するノードと同一のノードが存在するかどうかを判断し、その判断結果を出力する。呼出構造ノード追加部218では、現在追跡中のノード212と同一構造判定結果216を入力として、ノードの追加を行い、ノードを追加した呼出構造データを生成する。子ノードの追加は、親ノードの識別情報を基に子ノードの識別情報を追加する。例えば、各ノードにIDを付与し、子ノードに、固有のIDを設定する。このIDは、ノードのデータ構造へのポインタ情報として利用してもよい。この処理によって子ノードが追加される。呼出構造属性追加部222で、読み込まれたイベントに関連する処理単位に関係する情報であるテストケース名などの情報、呼び出された回数を、引数、戻り値などの情報を該当ノードの属性として追加して記憶する。複数の種類の属性があった場合には、その属性情報をそれぞれ追加する。これらの情報は、アプリケーションの呼出構造データ224として、記憶装置に記憶される。これは、データ加工部228によって、必要に応じて加工され、表示ユーザーインターフェース部226で、ツリー構造や、リスト構造として表示される。また、表示ユーザーインターフェース部226は、ユーザからの検索指示や、属性の特定などの入力を受け付け、データ加工部228に、適切なデータ加工を指示する。加工されたデータは表示ユーザーインターフェース部226に戻され、ユーザに表示してもよい。図2Bは、本発明の一実施形態におけるツリー構造を示す図である。図2Baは、アプリケーションプログラムの実行トレースデータをツリー表示した例をしめしている。ツリー構造は、ノードTop250、ノードA260、及びノードB270で構成されており、矢印で接続されている。ノードTop250は、ツリー構造の最上位ノードを示しており、ツリーの始まりを示すものである。ノードA260は、メソッドAが実行されたことを意味する。これは、ノードTop250直下に接続されているため、アプリケーションプログラムの実行トレースデータにおいて、メソッドAが最初に実行されたことが分かる。その下に続くノードB270は、メソッドBが実行されたことを意味する。したがって、このリスト構造の場合には、少なくともメソッドAの実行の次にメソッドBが実行されたことが視覚的に理解できる。図2Bbは、図2Baの各ノードの呼出構造データの内容を示したものである。呼出構造データ251は、ノードTop250に対応している。呼出構造データ261は、ノードB260に対応している。呼出構造データ271は、ノードC270に対応している。呼出構造データ251には、呼出構造データをユニークに特定するためのID251が付与されている。このIDは、ノードを特定するためのポインタ情報として利用してもよい。Name254は、ノード名であり、メソッド名と同じ名前を用いても良い。Child256は、存在する子ノードのIDが記述される。この場合、ノードTop250の子ノードは、ノードA260であるため、ノードA260のIDの値1が記述されている。子ノードが複数あれば、複数のエントリーが記述される。Test258は、属性値の例であり、用いられたトレース情報のトレース情報名が記述される、Countの項目は、ノードに対応するメソッドの実行回数を意味する。ノードTop250は、実際のメソッドには対応しないが、便宜上Countの値として1が記述されている。呼出構造データ261、及び呼出構造データ261についても、同様のデータ構造を有していることが分かる。図3に、一実施形態の全体処理フローを示す。まず、ステップ302で、過去に作成された最上位ノードがあれば、これを最上位ノードとして取得する。最上位ノードが存在しない場合には、上述のように最上位ノードが生成されるので、その最上位ノードを取得する。次に、ステップ304において、トレース情報から、1つのイベントを読み出す。読み出されたイベントは、ステップ306において、メソッドの呼出開始であるかがチェックされる。この結果がNOであれば、ステップ308において、イベントがメソッドの呼出終了かがチェックされる。この結果がNOであれば、ステップ304に戻る。次に、ステップ306の判断結果がYESメソッドの呼出開始である場合について説明する。メソッドの呼出開始であった場合、同一呼出構造存在判定部214で、現時点までに作成した呼出構造を取得し、現在追跡中のノードの子ノードの中に、メソッドに対応するノードと同一のノードが存在するかを判断するステップ312。子ノードに同一のものが存在した場合、同一と判断したノードを特定する。そして、ステップ118に進む。また、ステップ312において、同一の子ノードが存在しないと判断された場合には、ステップ314に移行する。ここでは、呼出構造のツリー構造に子ノードを追加する。そして、この追加された子ノードを現在追跡中のノードとする。ここで、ステップ316の処理を説明する。ステップ308において、メソッドが呼出終了である場合に、ステップ316が実行される。ここでは、メソッドの呼出終了であることを、記憶しておく。現在追跡中のノードの移動は行われない。この記憶した情報は、ステップ331において用いられる。この場合には、属性情報を記憶する一連の処理が終了した後に、ステップ332において、現在追跡中のノードを一つ上の階層に移す処理が行われる点に留意すべきである。ここで、ステップ118以下の処理について説明する。ステップ118において、イベントが示す属性値を取得する。属性値としては、たとえば、メソッドの引数、メソッドの戻り値、テストケース名、メソッドの実行回数、同じ引数が用いられた回数、同じ戻り値が戻された回数、引数や戻り値の型などが挙げられる。なお、属性値は、上述の例に限定されるものではない。たとえば、該当のノードに同一のテストケース名が既に属性として記録されている場合は、その情報を取得し、実行回数を1つ加算する。もし、該当のノードにテストケース名がなかった場合は、新たに属性情報として、テストケース名を追加し、実行回数を1回として設定する。なお、ステップ320乃至324は、引数を属性値として蓄積する場合の取り扱い手法の例を示している。また、ステップ320乃至330は、テストケースを属性値として蓄積する場合の取り扱い手法を示している。ステップ331及びステップ332については、既に説明したとおりステップ308において取得し、ステップ106で蓄積した情報に基づいて、現在追跡中のノードを一つ上の階層に移す取り扱い手法の例を示している。ステップ334において、全てのトレース情報のイベントを読み込んで処理したかがチェックされる。トレース情報の1つのイベントデータ単位の情報を取得した後、次のイベントを読み込む。次に、同一のアプリケーションプログラムの実行に係る別のテストケースに対するトレース情報を読み込んだときには、そのテストケース名を機能情報として保持しながら、既に作成された呼出構造データに追加する形でトレース情報の呼出構造を作成し、そのテストケース名を属性として保存する。このことで、異なるテストケースに対する情報を同じ呼出構造上に構築する。なお、必要に応じて、呼出構造データをテストケース名で検索することにより、特定のテストケースの呼出構造データに基づくツリー構造を抽出してもよい。また、例えば2つのテストケースを与えて、その呼出構造データの差分をツリー構造上にハイライト表示させてもよい。また、その他の属性データを検索キーとして使用し、呼出構造を抽出し、ツリー表示させても良い。また、表示は、ツリー構造の表示以外に、リスト形式の表示や、グラフ形式の表示など、用途に応じて、表示形式を変更しても良い。図4は、最上位ノード取得部の処理を示している。ステップ402において、現在保持している呼出構造を取得する。ステップ404で、呼出構造が存在するか否かがチェックされる。過去において、本実施形態を実行し、呼出構造データが存在する場合には、呼出構造を取得し、その中から最上位ノードを取得する。ステップ404において、過去に保持した呼出構造が存在しない場合には、最上位ノードを定義するステップ408。この最上位ノードを出発点として、ツリー構造の呼出構造が構築されることになる。図5は、同一呼出構造存在判定部の処理フローを示す。このフローは、図3におけるステップ310に対応する。まず、現在追跡中のノードを取得するステップ502。そして、現在追跡中のノードの子ノードを取得するステップ504。ステップ506において、調査する子ノードが存在しないかを判定する。存在しない場合には、ステップ512に進んで、呼出開始されたメソッドに対応するノードと同一のノードが子ノードに存在しないことを出力する。ステップ506で、調査する子ノードが存在する場合には、子ノードの1つに注目して、ステップ508に進む。ここで、呼出開始されたメソッドに対応するノードと同一のノードが子ノードに存在するかが、チェックされる。注目している子ノードが同一の子ノードであると特定し、これを出力する。ステップ508で、同一の子ノードが見つからない場合には、次の子ノードをチェックするためにステップ504に戻り、同様のチェックを繰り返す。ステップ506において、調査する全ての子ノードをチェックし終えた場合には、ステップ512に進んで、呼出開始されたメソッドに対応するノードと同一のノードが子ノードに存在しないことを出力する。プログラムを実行して得られたトレース情報から実際に呼出構造データを作成する一実施形態を説明する。トレース情報の例は、既に図1を用いて説明した。トレース情報には、メソッドの呼出開始、メソッドの呼出終了、および対応するメソッド名を含む情報が記述されている。一つのメソッド呼び出し、メソッド終了をそれぞれ、テキスト形式で、一行で記述し、トレース情報読込み時には、行単位でその情報を読み込む。このことで、一回の読込みで、対応する処理単位の一つのイベントの情報を取得する。図1に示した例では、二つのファイルがあり、それぞれ、Test1とTest2という名称のトレース情報が保存されている。トレース情報は、テストケース名が付与されている。Test1とTest2は、テストケース名の例である。各テストケースでは、A、B、C、Dというメソッド名が記述されている。確認したい機能をテストケースに対応付けて利用してもよい。また、アプリケーションプログラムが運用中の場合は、利用者の操作単位でトレース情報を取得して、そのトレース情報を利用してもよい。トレース情報の構成要素をイベントと呼ぶ。本実施形態では、1行のデータが1つのイベントに対応する。なお、本発明は、この実施形態に限定されない。図1aと図6とを参照する。トレース情報を一行ずつ読み込み、呼出構造を作成する。初めて読み込む情報であるため、最上位ノードとして、ノードTopを新たに定義し、現在追跡中のノードとしてノードTopを設定する。最上位ノード取得部202の出力結果として、図6に示すようにノードTop602を出力する。次に、図1に示したTest1のデータを読み込むと、行番号1は、Aというメソッド名の呼出開始であることが記述されている。同一呼出構造存在判定部214では、入力として受け取ったメソッドAに対して、現在追跡中のノードの子ノードとしてメソッドAに対応するものが存在するか否かを判断する。ここでは、ノードTop602しか存在しないため、同一呼出構造存在判定部214の出力として、ノードAと同一の子ノードは存在しないという判断結果を出力する。次に、Topの子ノードとしてノードA604を追加し、現在追跡中のノードをノードA604へ移動する。また、現在、ノードA604に対して、属性として、テストケース名、Test1を属性に定義し、初めての実行であるため、実行回数を1回と設定する。メソッドAでは、特に引数値、戻り値などの情報は保持していないため、その他の属性値は追加しない。ここで、トレース情報から読み込んだ1行に対する処理を終了し、トレース情報に次の行が存在する場合、次の行を読み込む。トレース情報Test1の次の行番号2を読み込むと、メソッドBの呼出開始であることが記述されている。現在追跡中のノードは、現在、ノードA604であり、ノードA604の子ノードとして、ノードBが存在するかどうかを同一呼出構造存在判定部214で判断し、その結果を取得する。ノードA604は一つも子ノードを持たないため、同一のノードは存在しないという結果が得られる。従って、ノードB606をノードA604の子ノードとして追加する。追加後、現在の追跡ノードをノードB606に設定する。ノードB606に対して、属性として、テストケース名、Test1を属性に定義し、初めての実行であるため、実行回数を1回と設定する。メソッドBでは、特に引数値、戻り値などの情報は保持していないため、その他の属性値は追加しない。以上でこの行に対する処理を終了し、次の行を読み込む。トレース情報Test1の次の行番号3を読み込むと、メソッドCの呼出開始であることが記述されている。現在追跡中のノードは、現在、ノードB606であり、ノードB606の子ノードとして、ノードCが存在するかどうかを同一呼出構造存在判定部214で判断し、その結果を取得する。ノードB606は一つも子ノードを持たないため、同一のノードは存在しないという結果が得られる。従って、ノードC608をノードB606の子ノードとして追加する。追加後、現在の追跡ノードをノードC608に設定する。ノードC608に対して、属性として、テストケース名、Test1を属性に定義し、初めての実行であるため、実行回数を1回と設定する。メソッドCでは、特に引数値、戻り値などの情報は保持していないため、その他の属性値は追加しない。以上でこの行に対する処理を終了し、次の行を読み込む。トレース情報Test1の次の行番号4を読み込むと、メソッドCの呼出終了であることが記述されている。現在追跡中のノードであるノードC608の親ノードであるBを現在追跡中のノードに変更する。トレース情報Test1の次の行番号5を読み込むと、Bの呼出終了であることが記述されている。現在追跡中のノードであるノードB606の親ノードであるノードA604を現在追跡中のノードに変更する。トレース情報Test1の次の行番号6を読み込むと、メソッドBの呼出開始であることが記述されている。現在追跡中のノードは、現在、ノードA606であり、ノードA606の子ノードとして、ノードBが存在するかどうかを同一呼出構造存在判定部214で判断し、その結果を取得する。ノードA604は一つの子ノードを持ち、かつそのノードは、ノードB606であるため、ここでは、同一呼出構造が存在すると判断し、その結果を出力する。従って、ノードA604の子ノードとして、新たなノードBを追加せず、同一と判断したノードB606を現在追跡中のノードとして設定する。Bに対して、属性として、テストケース名、Test1を設定するが、対象のノードB606には、Test1の属性が既に定義されている。今回は2回目の実行であるため、実行回数を1回から2回へと1を加算して設定する。メソッドBでは、特に引数値、戻り値などの情報は保持していないため、その他の属性値は追加しない。以上でこの行に対する処理を終了し、次の行を読み込む。トレース情報Test1の次の行番号7を読み込むと、メソッドCの呼出開始であることが記述されている。現在追跡中のノードは、現在、ノードB606であり、ノードB606の子ノードとして、ノードCが存在するかどうかを同一呼出構造存在判定部214で判断し、その結果を取得する。ノードB606は一つの子ノードを持ち、かつそのノードは、ノードC608であるため、ここでは、同一呼出構造が存在すると判断し、その結果を出力する。従って、ノードB606の子ノードとして、新たなノードCを追加せず、同一と判断したノードC608を現在追跡中のノードとして設定する。ノードC608に対して、属性として、テストケース名、Test1を設定するが、対象のCには、Test1の属性が既に定義されている。今回は2回目の実行であるため、実行回数を1回から2回へと1を加算して設定する。メソッドCでは、特に引数値、戻り値などの情報は保持していないため、その他の属性値は追加しない。以上でこの行に対する処理を終了し、次の行を読み込む。トレース情報Test1の次の行番号8を読み込むと、メソッドCの呼出終了であることが記述されている。現在追跡中のノードであるノードC608の親ノードであるノードB606を現在追跡中のノードに変更する。トレース情報Test1の次の行番号9を読み込むと、メソッドBの呼出終了であることが記述されている。現在追跡中のノードであるノードB606の親ノードであるノードA604を現在追跡中のノードに変更する。トレース情報Test1の次の行番号10を読み込むと、メソッドBの呼出開始であることが記述されている。現在追跡中のノードは、現在、ノードA604であり、ノードA604の子ノードとして、ノードBが存在するかどうかを同一呼出構造存在判定部214で判断し、その結果を取得する。ノードA604は一つの子ノードを持ち、かつそのノードは、ノードB606であるため、ここでは、同一呼出構造が存在すると判断し、その結果を出力する。従って、ノードA604の子ノードとして、新たなノードBを追加せず、同一と判断したノードB606を現在追跡中のノードとして設定する。ノードB606に対して、属性として、テストケース名、Test1を設定するが、対象のノードB606には、Test1の属性が既に定義されている。今回は3回目の実行であるため、実行回数を2回から3回へと1を加算して設定する。メソッドBでは、特に引数値、戻り値などの情報は保持していないため、その他の属性値は追加しない。以上でこの行に対する処理を終了し、次の行を読み込む。トレース情報Test1の次の行番号11を読み込むと、メソッドAの呼出開始であることが記述されている。現在追跡中のノードは、現在、ノードB606であり、ノードB606の子ノードとして、ノードAが存在するかどうかを同一呼出構造存在判定部214で判断し、その結果を取得する。ノードB606は一つの子ノードを持つが、その子ノードは、ノードC608であるため、ノードAを子ノードには持たない。従って、ノードAをノードB606の子ノードとして定義し、現在追跡中のノードをノードB606から新たに追加した子ノードであるノードA610に設定する。属性として、テストケース名、Test1を属性に定義し、初めてのノードの追加であるため、実行回数を1回と設定する。メソッドAでは、特に引数値、戻り値などの情報は保持していないため、その他の属性値は追加しない。ここで、トレース情報から読み込んだ一行に対する処理を終了し、トレース情報に次の行が存在する場合、次の行を読み込む。トレース情報Test1の次の行番号12を読み込むと、メソッドBの呼出開始であることが記述されている。現在追跡中のノードは、現在、ノードA610であり、ノードA610の子ノードとして、ノードBが存在するかどうかを同一呼出構造存在判定部214で判断し、その結果を取得する。ノードA610は一つも子ノードを持たないため、同一のノードは存在しないと言う結果が得られる。従って、ノードBをノードA610の子ノードとして追加する。追加後、現在の追跡ノードをノードB612に設定する。メソッドBに対して、属性として、テストケース名、Test1を属性に定義し、初めての実行であるため、実行回数を1回と設定する。メソッドBでは、特に引数値、戻り値などの情報は保持していないため、その他の属性値は追加しない。以上でこの行に対する処理を終了し、次の行を読み込む。トレース情報Test1の次の行番号13を読み込むと、メソッドBの呼出終了であることが記述されている。現在追跡中のノードであるノードB612の親ノードであるノードA610を現在追跡中のノードに変更する。トレース情報Test1の次の行番号14を読み込むと、ノードAの呼出終了であることが記述されている。現在追跡中のノードであるノードA610の親ノードであるノードB606を現在追跡中のノードに変更する。トレース情報Test1の次の行番号15を読み込むと、メソッドBの呼出終了であることが記述されている。現在追跡中のノードであるノードB606の親ノードであるノードA604を現在追跡中のノードに変更する。トレース情報Test1の次の行番号16を読み込むと、メソッドAの呼出終了であることが記述されている。現在追跡中のノードであるノードA604の親ノードであるノードTop602を現在追跡中のノードに変更する。トレース情報Test1に対するデータは全て読み込み、次のデータがないため、Test1の呼出構造を作成した。現時点までに作成した呼出構造のツリー構造イメージ図を図6に示す。また、このイメージ図に相当する実際のデータ例を図7に示す。図7で示すデータ形式では、項目としてノードのID、ノード名メソッド名、子ノード情報と、機能単位情報テストケース情報の4種類を持ってもよい。図7における呼出構造データ702、704、706、708、710、712は、それぞれ、図6のツリー構造におけるノード602、604、606、608、610、612のデータの内容を示している。図7に示したそれぞれの呼出構造のノードのデータ構造の例を図8bに示す。各ノードは、メソッドに対して作成するため、そのノードの識別子としてのID、ノード名、子ノード情報の配列、機能単位情報であるテストケースの配列を持つ。子ノードへのアクセスは、IDを通じてアクセスするため、その情報の一覧をChild配列で保持する。テストケース情報については、テストケース名とそのテストケースに対応する実行回数を組み合わせて保持してもよい。このことで、テストケースに対する実行回数を保持する。図7には例として配列として記述したが、リスト構造として、動的に数を増やすことが出来る形にしてもよい。図8bにおける、データ項目802乃至808については、図2Bで説明した。これに加えて、Argstype,value810は、引数を属性として記憶する領域を示す。引数の型typeと、値valueを対にして記憶しておく。また、Returntype,valueは、戻り値を属性として記憶しておく領域を示す。戻り値の型typeと、値valueを対にして記憶しておく。次に、図1で示したトレース情報Test2に対しても、同様に呼出構造を作成する。ここで、Test1に対して作成している呼出構造の上に、Test2の構造を作成する。Test2のトレース情報のイベントを一行ずつ読み込み、呼出構造を作成する。この場合、呼出構造は既にTest1に対して作成しているため、最上位ノードとして、Test1で作成したノードTop602を取得して、現在追跡中のノードとしてノードTop602を設定する。最上位ノード取得部の出力結果として、ノードTop602が出力される。図9と図1bを参照する。Test2のデータを読み込む処理について説明する。図1bの行番号1は、Aというメソッド名の呼出開始であることが記述されている。同一呼出構造存在判定部214では、入力として受け取ったメソッドAに対応するノードAが、現在追跡中のノードTop602の子ノードとして存在するか否かを判断する。既に、ノードTop602は一つの子ノードを持ち、かつそのノードは、ノードA604であるため、ここでは、同一呼出構造が存在すると判断し、その結果を出力する。従って、ノードTop602の子ノードとして、新たなノードAを追加せず、同一と判断したノードA604を現在追跡中のノードとして設定する。現在追跡中のノードをノードA604へ移動する。また、現在、ノードA604に対して、属性として、テストケース名Test2を属性として追加し、Test2としては、初めての実行であるため、Test2に対する実行回数を1回と設定する。メソッドAでは、特に引数値、戻り値などの情報は保持していないため、その他の属性値は追加しない。ここで、トレース情報から読み込んだ行番号1に対する処理を終了し、トレース情報に次の行が存在する場合、次の行を読み込む。トレース情報Test2の行番号2を読み込むと、メソッドBの呼出開始であることが記述されている。現在追跡中のノードは、ノードA604であり、ノードA602の子ノードとして、ノードBが存在するかどうかを同一呼出構造存在判定部214で判断し、その結果を取得する。ノードA604は一つの子ノードを持ち、かつそのノードは、ノードB606であるため、ここでは、同一呼出構造が存在すると判断し、その結果を出力する。従って、ノードA604の子ノードとして、新たなノードBを追加せず、同一と判断したノードB606を現在追跡中のノードとして設定する。ノードB606に対して、属性として、テストケース名Test2としては、初めての実行であるため、Test2に対する実行回数を1回と設定する。メソッドBでは、特に引数値、戻り値などの情報は保持していないため、その他の属性値は追加しない。ここで、トレース情報から読み込んだ一行に対する処理を終了し、トレース情報に次の行が存在する場合、次の行を読み込む。トレース情報Test2の次の行番号3を読み込むと、メソッドCの呼出開始であることが記述されている。現在追跡中のノードは、現在、ノードB606であり、ノードB606の子ノードとして、ノードCが存在するかどうかを同一呼出構造存在判定部214で判断し、その結果を取得する。ノードB606は一つの子ノードを持ち、かつそのノードは、ノードC608であるため、ここでは、同一呼出構造が存在すると判断し、その結果を出力する。従って、ノードB606の子ノードとして、新たなノードCを追加せず、同一と判断したノードC608を現在追跡中のノードとして設定する。ノードC608に対して、属性として、テストケース名、Test2を設定するが、対象のノードC608には、Test2としては、初めての実行であるため、Test2に対する実行回数を1回と設定する。メソッドCでは、特に引数値、戻り値などの情報は保持していないため、その他の属性値は追加しない。ここで、トレース情報から読み込んだ一行に対する処理を終了し、トレース情報に次の行が存在する場合、次の行を読み込む。トレース情報Test2の次の行番号4を読み込むと、メソッドCの呼出終了であることが記述されている。現在追跡中のノードであるノードC608の親ノードであるノードB606を現在追跡中のノードに変更する。トレース情報Test2の次の行番号5を読み込むと、メソッドBの呼出終了であることが記述されている。現在追跡中のノードであるノードB606の親ノードであるノードA604を現在追跡中のノードに変更する。トレース情報Test2の次の行番号6を読み込むと、メソッドBの呼出開始であることが記述されている。現在追跡中のノードは、ノードA604であり、ノードA604の子ノードとして、ノードBが存在するかどうかを同一呼出構造存在判定部で判断し、その結果を取得する。ノードA604は一つの子ノードを持ち、かつそのノードは、ノードB606であるため、ここでは、同一呼出構造が存在すると判断し、その結果を出力する。従って、ノードA604の子ノードとして、新たなノードBを追加せず、同一と判断したノードB606を現在追跡中のノードとして設定する。ノードB606に対して、属性として、テストケース名、Test2を設定するが、対象のノードB606には、Test2の属性が既に定義されている。今回は2回目の実行であるため、実行回数を1回から2回へと1を加算して設定する。メソッドBでは、特に引数値、戻り値などの情報は保持していないため、その他の属性値は追加しない。以上でこの行に対する処理を終了し、次の行を読み込む。トレース情報Test2の次の行番号7を読み込むと、メソッドDの呼出開始であることが記述されている。現在追跡中のノードは、現在、ノードB606であり、ノードB606の子ノードとして、ノードDが存在するかどうかを同一呼出構造存在判定部214で判断し、その結果を取得する。ノードB606は二つの子ノードを持つが、いずれもノードDではないため、ここでは、同一呼出構造が存在しないと判断し、その結果を出力する。従って、ノードB606の子ノードとして、新たなノードDを追加し、ノードD902を現在追跡中のノードとして設定する。ノードD902に対して、属性として、テストケース名、Test2を設定するが、初めての実行であるため、Test2に対する実行回数を1回と設定する。メソッドDでは、引数値として、arg1、arg2の2つの型情報、値としてそれぞれ、v1、v2を属性として取得し、保存する。トレース情報Test2の次の行番号8を読み込むと、メソッドDの呼出終了であることが記述されている。そして、戻り値の型情報として、a3、戻り値として、v3が記述されている。このように、メソッドの呼出終了のイベントに、何らかの記録すべき属性が存在する場合には、現在追跡中のノードを親ノードに変更する前に、これらの属性を保存する。属性の保存が完了した後に、現在追跡中のノードであるノードD902の親ノードであるノードB606を現在追跡中のノードに変更する。したがって、メソッド呼出終了の場合には、メソッド呼出開始の場合と比較して、次のノード親ノードに移行するタイミングが異なる点に留意する必要がある。この点は、図3のステップ316、331及び332に関連して、既に説明した。ここで、トレース情報から読み込んだ一行に対する処理を終了し、トレース情報に次の行が存在する場合、次の行を読み込む。トレース情報Test2の次の行番号9を読み込むと、メソッドBの呼出終了であることが記述されている。現在追跡中のノードであるノードB606の親ノードであるノードA604を現在追跡中のノードに変更する。トレース情報Test2の次の行番号10を読み込むと、メソッドAの呼出終了であることが記述されている。現在追跡中のノードであるノードA604の親ノードであるノードTop602を現在追跡中のノードに変更する。以上により、Test1とTest2の二つのテストケースに対する呼出構造が作成された。作成された呼出構造のツリー構造イメージを図9に示す。また、作成された呼出構造データの例を図10に示す。図10において、例えば、呼出構造1020は、図9におけるノードD902のデータの内容を示している。ここでは、引数及び戻り値が、それぞれArgs1022、Return1024として、属性として記憶されていることが分かる。その他の項目については、他の図で既に説明しているので、説明は省略する。図11bに、呼出構造データのデータ構造の例を示す。図8bに示した場合に加えて、引数値、戻り値がある。属性情報を記録する場合、引数の値に応じて、一組として管理する数が変わるので、可変長のデータ構造として管理してもよい。個々の引数に関しては、引数の型情報と値を一組として保持してもよい。戻り値も、型情報と値を組み合わせとして保持してもよい。単純にトレース情報を記録する場合には、同じ処理を複数回動作させると、その実行した回数分だけ、トレース情報量が比例して増加することとなる。これに対して、実施形態で示した構成では、同一呼び出しに対して重複を避けたツリー構造を作成し、各ノード上の属性値を更新すればよいため、少ない情報量で、トレース情報を記録することができる。従って、特に繰り返し処理が多い場合、大量のトレースを行っても、少ない情報量で記録することが出来る。図12に、比較の一例を示す。図12aは、ノードの集約を行わない場合のツリー構造を示している。図12bは、上述の一実施形態によってノードの集約を行った場合のツリー構造を示す。この比較でノード数は、8個から6個に減っているが、個々のノード間の関係や情報量は、同じである。現実のトレース情報においては、トレース情報量が膨大になるため、本実施形態の情報集約の効果は非常に大きくなる。例えば、プログラムの変更時などで、広い範囲のトレース情報を比較しなければならないときに、プログラムの変更前後のトレース情報の比較を容易に行うことができる。また、従来の実行履歴情報として利用するカバレッジ情報と違い、呼出構造を保持することで、あるメソッドを呼出している呼び出し元や、そのメソッドが呼ぶ、呼び出し先の情報を追跡することが可能であるため、メソッド間の関係を容易に把握することが出来る。さらに属性値に、実行回数を保持することで、呼出構造の中で頻繁に実行される箇所と、そうでない箇所が容易に特定出来る。また、データの値に依存して、繰り返し処理やジャンプ先が動的に変更されるようなプログラムに対しても、その動作の挙動を的確に把握することができる。このような動的な変更を行うプログラムは、ソースの記述から、その挙動を把握することは非常に困難である。テストケース名を保持していることで、テストケース別にその呼出関係の調査を行うことにも利用できる。また、その他の属性で呼出構造を検索することで、その属性の観点から、呼出関係を把握することも容易に行える。また、一実施形態では、イベントを読み込む毎に、メソッドの呼出構造の情報を作成しているため、予め呼出構造のパターンを定義しておく必要がない。したがって、種々のプログラムに対して、柔軟に対応することができる。図13は、複数のテストケースによって作成された呼出構造から、特定のテストケースの呼出構造を抽出してツリー構造として表示する例を示している。図13aは、Test1及びTest2の両者を用いて集約されたツリー構造である。図13bは、この呼出構造のデータに対し、Test1を検索キーとして検索し、ツリー構造を構築した例を示している。この実施形態により、特定のテストケースの観点から、アプリケーションプログラムの呼出構造を容易に把握できる。図14は、複数のテストケースの呼出構造の差分を抽出して強調表示する例を示している。図14aは、Test1及びTest2の両者を用いて集約されたツリー構造である。図14bは、Test1及びTest2の両者の呼出構造の差分がハイライト表示されることを示している。すなわち、ノードA1402及びノードB1406は、Test1のみに存在するノードを示している。そして、ノードD1406は、Test2にのみに存在するノードを示している。その他の、ハイライト表示されていないノードは、Test1及びTest2の両者に共通するノードを示している。このような差分を表示する実施形態により、たとえばアプリケーションプログラムの変更前Test1と変更後Test2のプログラム実行動作の相違点を視覚的に容易に把握することができる。また、各ノードの呼出構造のリスト表示不図示を参照すれば、その相違の詳細を把握することもできる。図15は、一実施形態のハードウエア構成を示している。ハードウエアには、CPU1502、メモリ1504、動的メモリ1506、媒体を読み書きするドライブ1508、通信インターフェース1510、表示装置1513等に画像信号を送るビデオインターフェース1512、I/Oインターフェース1514、I/Oとしてのキーボード1516、マウス1518、プリンタ1520が含まれる。また、プログラムに係る本発明は、機械読み取り可能な記録媒体に格納されてもよい。機械読み取り可能な記録媒体には、磁気記録媒体、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録媒体には、HDD、フレキシブルディスクFD、磁気テープMTなどがある。光ディスクには、DVDDigitalVersatileDisc、DVD-RAM、CD-ROMCompactDisc-ReadOnlyMemory、CD-RRecordable/RWReWritableなどがある。また、光磁気記録媒体には、MOMagneto-Opticaldiskなどがある。なお、上述の実施形態では、実行トレース情報において、メソッドの実行順序は、ツリー構造をたどることを前提としている。したがって、例えば、複数のスレッドが同時に動作するプログラムのトレースを対象とする場合には、特定のスレッドIDに注目して、実行トレースを取ればよい。あるいは、実行トレース情報から特定のスレッドIDを抽出して、上述の実施形態を実施すればよい。なお、プログラム及び方法の発明の各ステップは、矛盾のないかぎり、順番を入れ替えて実施しても良い。そして、請求項に係る発明において、このように順番を入れ替えた発明も、当然にその請求項に係る発明の技術的範囲に属することは言うまでもない。以上の複数の実施形態に関し、更に以下の付記を開示する。付記1アプリケーションプログラムに含まれる複数の処理単位の各々をノードに対応させ、前記アプリケーションプログラムに対するテストケースの実行トレース情報に含まれる複数のイベントに基づいて、最上位ノードを出発点としてノードを追跡しながら、前記複数の処理単位の各々の呼出構造を、前記ノード間を結ぶツリー構造として記憶部に記憶するプログラムであって、前記実行トレース情報から、N番目のイベントを読み込み、前記N番目のイベントが処理単位の呼出開始イベントの場合には、現在追跡しているノードから、前記呼出開始イベントが示す処理単位に対応する子ノードに移動すべきことを決定し、前記N番目のイベントが処理単位の呼出終了イベントの場合には、現在追跡しているノードよりも最上位ノード側の親ノードに移動すべきことを決定することによって、ノードを追跡し、前記決定において前記子ノードに移動すべきことが決定された場合に、前記現在追跡しているノードの子ノードに前記呼出開始イベントが示す処理単位に対応するノードが既に存在するか否かを判定し、前記判定において存在しないと判定された場合には、移動すべき前記子ノードを前記記憶部に記憶された前記ツリー構造に追加記憶する、処理をコンピュータに実行させるプログラム。付記2前記イベントには属性が含まれ、前記N番目のイベントに含まれる属性を抽出し、該抽出した属性を前記N番目のイベントに関連するノードに対応づけて前記記憶部に記憶する、処理を更にコンピュータに実行させる付記1記載のプログラム。付記3前記属性は、前記処理単位の引数、前記処理単位の戻り値、前記処理単位の実行回数、及び前記テストケースの識別情報のうち、いずれか1つを含む、付記1又は2記載のプログラム。付記4指定された属性に基づいて、ツリー構造に関連する情報を加工して出力する、処理を更にコンピュータに実行させる付記1乃至3のうちいずれか1項記載のプログラム。付記5前記加工して出力する処理は、第1のテストケースによって出力されたツリー構造と、第2のテストケースによって出力されたツリー構造との相違点を出力する、処理を更にコンピュータに実行させる付記4記載のプログラム。付記6前記加工して出力する処理は、第1のテストケースによって出力されたツリー構造と、第2のテストケースによって出力されたツリー構造とが一致するか否かを判断した結果を出力する、処理を更にコンピュータに実行させる付記4又は5記載のプログラム。付記7アプリケーションプログラムに含まれる複数の処理単位の各々をノードに対応させ、前記アプリケーションプログラムに対するテストケースの実行トレース情報に含まれる複数のイベントに基づいて、最上位ノードを出発点としてノードを追跡しながら、前記複数の処理単位の各々の呼出構造を、前記ノード間を結ぶツリー構造として記憶部に記憶する方法であって、前記実行トレース情報から、N番目のイベントを読み込み、前記N番目のイベントが処理単位の呼出開始イベントの場合には、現在追跡しているノードから、前記呼出開始イベントが示す処理単位に対応する子ノードに移動すべきことを決定し、前記N番目のイベントが処理単位の呼出終了イベントの場合には、現在追跡しているノードよりも最上位ノード側の親ノードに移動すべきことを決定することによって、ノードを追跡し、前記決定において前記子ノードに移動すべきことが決定された場合に、前記現在追跡しているノードの子ノードに前記呼出開始イベントが示す処理単位に対応するノードが既に存在するか否かを判定し、前記判定において存在しないと判定された場合には、移動すべき前記子ノードを前記記憶部に記憶された前記ツリー構造に追加記憶する、ことを特徴とする方法。付記8前記イベントには属性が含まれ、前記N番目のイベントに含まれる属性を抽出し、該抽出した属性を前記N番目のイベントに関連するノードに対応づけて前記記憶部に記憶する、ことを特徴とする付記7記載の方法。付記9前記属性は、前記処理単位の引数、前記処理単位の戻り値、前記処理単位の実行回数、及び前記テストケースの識別情報のうち、いずれか1つを含む、ことを特徴とする付記7又は8記載の方法。付記10指定された属性に基づいて、ツリー構造に関連する情報を加工して出力する、ことを特徴とする付記7乃至9のうちいずれか1項記載の方法。付記11前記加工して出力する処理は、第1のテストケースによって出力されたツリー構造と、第2のテストケースによって出力されたツリー構造との相違点を出力する、ことを特徴とする付記10記載の方法。付記12前記加工して出力する処理は、第1のテストケースによって出力されたツリー構造と、第2のテストケースによって出力されたツリー構造とが一致するか否かを判断した結果を出力する、ことを特徴とする付記10又は11記載の方法。付記13アプリケーションプログラムに含まれる複数の処理単位の各々をノードに対応させ、前記アプリケーションプログラムに対するテストケースの実行トレース情報に含まれる複数のイベントに基づいて、最上位ノードを出発点としてノードを追跡しながら、前記複数の処理単位の各々の呼出構造を、前記ノード間を結ぶツリー構造として記憶部に記憶する装置であって、前記実行トレース情報から、N番目のイベントを読み込む、イベント読込部と、前記N番目のイベントが処理単位の呼出開始イベントの場合には、現在追跡しているノードから、前記呼出開始イベントが示す処理単位に対応する子ノードに移動すべきことを決定し、前記N番目のイベントが処理単位の呼出終了イベントの場合には、現在追跡しているノードよりも最上位ノード側の親ノードに移動すべきことを決定することによって、ノードを追跡する、ノード追跡部と、前記決定において前記子ノードに移動すべきことが決定された場合に、前記現在追跡しているノードの子ノードに前記呼出開始イベントが示す処理単位に対応するノードが既に存在するか否かを判定する、同一呼出構造存在判定部と、前記判定において存在しないと判定された場合には、移動すべき前記子ノードを前記記憶部に記憶された前記ツリー構造に追加記憶する、呼出構造ノード追加部と、を有することを特徴とする装置。付記14前記イベントには属性が含まれ、前記N番目のイベントに含まれる属性を抽出し、該抽出した属性を前記N番目のイベントに関連するノードに対応づけて前記記憶部に記憶する、呼出構造属性追加部、を更に有することを特徴とする付記13記載の装置。付記15前記属性は、前記処理単位の引数、前記処理単位の戻り値、前記処理単位の実行回数、及び前記テストケースの識別情報のうち、いずれか1つを含む、付記13又は14記載の装置。付記16指定された属性に基づいて、ツリー構造に関連する情報を加工して出力する、データ加工部、を更に有する付記13乃至15のうちいずれか1項記載の装置。付記17前記データ加工部は、第1のテストケースによって出力されたツリー構造と、第2のテストケースによって出力されたツリー構造との相違点を出力する、付記16記載の装置。付記18前記データ加工部は、第1のテストケースによって出力されたツリー構造と、第2のテストケースによって出力されたツリー構造とが一致するか否かを判断した結果を出力する、付記16又は17記載の装置。"