(57)【要約】【課題】オペレーティング・システムのタイプに依存することなくプログラムで動的なエラーが発生した場合のエラー処理のテストを行うことができるプログラムのテスト方法を提供する。【解決手段】テスト制御プログラム６６がプログラム６０からｍａｌｌｏｃ関数が呼び出される回数を上限とした呼出回数を、システム関数ラッパ６８に指定してプログラム６０を呼び出し、プログラム６０がｍａｌｌｏｃ関数の代わりにシステム関数ラッパ６８を呼び出し、システム関数ラッパ６８が呼び出された回数をカウントし、カウントされたカウント値が指定された呼出回数以外の場合にｍａｌｌｏｃ関数を呼び出し、カウント値が指定された呼出回数の場合にエラーの発生を示す情報をプログラム６０に送る。【選択図】図２
2007133590.tif 000002
【特許請求の範囲】
【請求項１】
所定の処理が実行される処理ルーチンを１回以上呼び出すと共に、当該処理ルーチンでエラーが発生した場合のエラー処理の処理手順が記述され、かつコンピュータに予め定められた処理を実行させるプログラムの前記エラー処理のテストを行うエラー処理テスト方法であって、
前記エラー処理のテスト動作を制御するテスト制御プログラムにより前記プログラムから前記処理ルーチンが呼び出される回数を上限とした呼出回数を、前記処理ルーチンをラッピングした処理ルーチンラッパに指定して前記プログラムを呼び出す工程と、
前記プログラムにより前記処理ルーチンに代えて前記処理ルーチンラッパを呼び出す工程と、
前記処理ルーチンラッパにより前記プログラムから呼び出された回数をカウントし、カウント値が指定された前記呼出回数以外の場合に前記処理ルーチンを呼び出し、前記カウント値が指定された前記呼出回数と等しい場合にエラーの発生を示す情報を前記プログラムに送る工程と、
を含むエラー処理テスト方法。
【請求項２】
前記処理ルーチンを、前記コンピュータに備えられた、ワークエリアとして機能するメモリの記憶領域を確保する記憶領域確保処理を行なうものとした
請求項１記載のエラー処理テスト方法。
【請求項３】
前記処理ルーチンを、前記コンピュータに備えられた、ワークエリアとして機能するメモリの記憶領域を確保する記憶領域確保処理と、当該記憶領域確保処理によって確保された記憶領域を開放する記憶領域開放処理とを行なうものとし、
前記処理ルーチンラッパを、前記処理ルーチンにより確保された前記メモリの記憶領域のアドレスを示す情報を記憶するものとする
請求項１記載のエラー処理テスト方法。
【請求項４】
前記処理ルーチンを、前記コンピュータに備えられた、電子化ファイルを記憶するための記憶装置に電子化ファイルを書き込む書込処理、及び前記記憶装置に記憶された電子化ファイルを読み込む読込処理の少なくとも一方の処理を行うものとした
請求項１記載のエラー処理テスト方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、エラー処理テスト方法に係り、特に、所定の処理が実行される処理ルーチンを１回以上呼び出すと共に、当該処理ルーチンでエラーが発生した場合のエラー処理の処理手順が記述され、かつコンピュータに予め定められた処理を実行させるプログラムの前記エラー処理のテストを行うエラー処理テスト方法に関する。
【背景技術】
【０００２】
従来、コンピュータでは、プログラムの実行が指示されると、ＣＰＵ（中央処理装置）により当該プログラムがメモリ上にロードされ、その後、オペレーティング・システムからプログラムの実行開始ルーチン(例えば、Ｃ言語ではＭａｉｎ関数)が呼びだされてプログラムの処理が開始される。
【０００３】
ところで、プログラムの処理の実行中に発生するエラーは、ロジックの誤りによる静的なエラーと、メモリや外部記憶装置などの領域不足あるいは通信経路遮断などによる動的なエラーとに大別できる。
【０００４】
一般に前者の静的なエラーは再現させることが容易であるため、デバッグにより修正することが容易である。
【０００５】
一方、後者の動的なエラーはエラー発生時の条件を再現することが困難であるため、デバッグが困難である場合が多く、例えば、プログラム実行時にメモリの記憶領域を動的に確保するようなプログラムでは、同時に実行されている他のプログラムによる記憶領域の使用状況によって、記憶領域の不足がいつ発生するかが一義的には決定できず、テスト自体を系統的に行なうことが困難であった。このため、動的なエラーが発生した場合は、プログラムが異常終了したり、異常動作を起こしたりする場合があった。
【０００６】
そこで、特許文献１には、オペレーティング・システムのシステム関数に、テスト対象とするプログラムから予め指定された回数だけ呼び出された場合にエラーを発生させるコードを追加しておき、エラーを発生させる回数を１から順に指定してプログラムの実行を繰り返すことにより、プログラムからシステム関数が呼び出される全ての部分のエラー処理をテストする方法が提案されている。
【特許文献１】特開２０００−１８１７４９公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、システム関数はオペレーティング・システムのタイプに依存して異なっており、例えば、Ｗｉｎｄｏｗｓ（登録商標）とＵＮＩＸ（登録商標）ではシステム関数のコードの種類や、システム関数が記憶されている記憶領域も異なっている。このため、特許文献１の技術を用いた場合、オペレーティング・システムのタイプ毎にシステム関数にエラーを発生させるコードを追加するプログラムを個別に作成する必要がある、という問題点があった。
【０００８】
本発明は上記問題点を解決するためになされたものであり、オペレーティング・システムのタイプに依存することなくプログラムで動的なエラーが発生した場合のエラー処理のテストを行うことができるエラー処理テスト方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、請求項１に記載の発明は、所定の処理が実行される処理ルーチンを１回以上呼び出すと共に、当該処理ルーチンでエラーが発生した場合のエラー処理の処理手順が記述され、かつコンピュータに予め定められた処理を実行させるプログラムの前記エラー処理のテストを行うエラー処理テスト方法であって、前記エラー処理のテスト動作を制御するテスト制御プログラムにより前記プログラムから前記処理ルーチンが呼び出される回数を上限とした呼出回数を、前記処理ルーチンをラッピングした処理ルーチンラッパに指定して前記プログラムを呼び出す工程と、前記プログラムにより前記処理ルーチンに代えて前記処理ルーチンラッパを呼び出す工程と、前記処理ルーチンラッパにより前記プログラムから呼び出された回数をカウントし、カウント値が指定された前記呼出回数以外の場合に前記処理ルーチンを呼び出し、前記カウント値が指定された前記呼出回数と等しい場合にエラーの発生を示す情報を前記プログラムに送る工程と、を含んでいる。
【００１０】
請求項１記載の発明によれば、エラー処理のテスト動作を制御するテスト制御プログラムにより、プログラムから処理ルーチンが呼び出される回数を上限とした呼出回数が、処理ルーチンをラッピングした処理ルーチンラッパに指定されてプログラムが呼び出され、プログラムにより、処理ルーチンに代えて処理ルーチンラッパが呼び出される。
【００１１】
そして、本発明では、処理ルーチンラッパにより、プログラムから呼び出された回数がカウントされ、カウント値が指定された呼出回数以外の場合に処理ルーチンが呼び出され、カウント値が指定された呼出回数と等しい場合にエラーの発生を示す情報がプログラムに送られる。
【００１２】
このように、請求項１記載の発明によれば、テスト制御プログラムがプログラムから処理ルーチンが呼び出される回数を上限とした呼出回数を、処理ルーチンをラッピングした処理ルーチンラッパに指定してプログラムを呼び出し、プログラムが処理ルーチンに代えて処理ルーチンラッパを呼び出し、処理ルーチンラッパがプログラムから呼び出された回数をカウントし、カウント値が指定された呼出回数以外の場合に処理ルーチンを呼び出しているので、オペレーティングシステムのタイプに関わらず、メインプログラムから処理ルーチンラッパを介して処理ルーチンが呼び出される。また、処理ルーチンラッパは、カウント値が指定された呼出回数と等しい場合にエラーの発生を示す情報をプログラムに送っているので、オペレーティング・システムのタイプに依存することなくプログラムで動的なエラーが発生した場合のエラー処理のテストを行うことができる。
【００１３】
また、請求項１記載の発明は、請求項２記載の発明のように、前記処理ルーチンを、前記コンピュータに備えられた、ワークエリアとして機能するメモリの記憶領域を確保する記憶領域確保処理を行なうものとしてもよい。
【００１４】
また、請求項１記載の発明は、請求項３記載の発明のように、前記処理ルーチンを、前記コンピュータに備えられた、ワークエリアとして機能するメモリの記憶領域を確保する記憶領域確保処理と、当該記憶領域確保処理によって確保された記憶領域を開放する記憶領域開放処理とを行なうものとし、前記処理ルーチンラッパを、前記処理ルーチンにより確保された前記メモリの記憶領域のアドレスを示す情報を記憶するものとしてもよい。
【００１５】
さらに、請求項１記載の発明は、請求項４記載の発明のように、前記処理ルーチンを、前記コンピュータに備えられた、電子化ファイルを記憶するための記憶装置に電子化ファイルを書き込む書込処理、及び前記記憶装置に記憶された電子化ファイルを読み込む読込処理の少なくとも一方の処理を行うものとしてもよい。
【発明の効果】
【００１６】
以上説明したように、本発明によれば、テスト制御プログラムがプログラムから処理ルーチンが呼び出される回数を上限とした呼出回数を、処理ルーチンをラッピングした処理ルーチンラッパに指定してプログラムを呼び出し、プログラムが処理ルーチンに代えて処理ルーチンラッパを呼び出し、処理ルーチンラッパがプログラムから呼び出された回数をカウントし、カウント値が指定された呼出回数以外の場合に処理ルーチンを呼び出し、カウント値が指定された呼出回数と等しい場合にエラーの発生を示す情報をプログラムに送っているので、オペレーティング・システムのタイプに依存することなくプログラムで動的なエラーが発生した場合のエラー処理のテストを行うことができる、という優れた効果を有する。
【発明を実施するための最良の形態】
【００１７】
以下、図面を参照して、本発明の実施の形態について詳細に説明する。なお、以下では、本発明をパーソナル・コンピュータ（以下「ＰＣ」という。）で実行されるプログラムのエラー処理のテストに適用した場合について説明する。
【００１８】
［第１の実施の形態］
図１には、本実施の形態に係るＰＣ１０の電気的な構成が示されている。
【００１９】
ＰＣ１０は、ＰＣ１０全体の動作を司るＣＰＵ４０と、ＰＣ１０の電源がオンされた際に起動されるブートプログラム等が予め記憶されたＲＯＭ４２と、上記ブートプログラムにより起動されて装置全体の動作を制御するオペレーティング・システム（以下、「ＯＳ」という。）や各種プログラムが記憶されたハードディスク・ドライブ（以下、「ＨＤＤ」という。）４６と、各種プログラムの実行時におけるワークエリア等として用いられるＲＡＭ４４と、マウスやキーボード等のユーザからの操作情報が入力される操作入力部４８と、ディスプレイ１２に対する各種情報の表示を制御するディスプレイドライバ５０と、コネクタ５２Ａ及び不図示のネットワークを介して接続された不図示の外部装置との間で各種データの送受信を行うネットワークＩ／Ｆ（インタフェース）部５２と、を備えている。
【００２０】
ＣＰＵ４０、ＲＯＭ４２、ＲＡＭ４４、ＨＤＤ４６、操作入力部４８、ディスプレイドライバ５０及びネットワークＩ／Ｆ部５２は、システムバスＢＵＳを介して相互に接続されている。従って、ＣＰＵ４０は、ＲＯＭ４２、ＲＡＭ４４、ＨＤＤ４６へのアクセス、マウスやキーボードに対するユーザの操作による指示内容の把握、ディスプレイドライバ５０を介したディスプレイ１２への各種情報の表示、及びネットワークＩ／Ｆ部５２を制御してコネクタ５２Ａ及びネットワークを介して接続された外部装置との間の各種データの送受信、を各々行うことができる。
【００２１】
ＰＣ１０は、各種のプログラム言語を用いて開発されたプログラムが実行可能とされており、ＯＳには、例えば、ＡＰＩ（Application Program Interface）等のシステム関数が予め用意されている。プログラムの開発者は、例えば、ＲＡＭ４４やＨＤＤ４６の記憶領域の制御や、ディスプレイ１２への描画の制御を行う場合に、プログラムからＯＳに用意されたシステム関数を呼び出して制御を依頼するようにプログラミングすることにより、各種の制御を行う制御ルーチンを個別に開発する必要がなくなるため、ソフトウェアの生産性が向上している。
【００２２】
ところで、システム関数は、プログラムから呼び出された場合に、同時に実行されている他のプログラムやＰＣ１０の動作状態等によって動的なエラーが発生する場合がある。
【００２３】
そこで、本実施の形態では、システム関数をラッピングするシステム関数ラッパ、及びエラー処理のテスト動作を制御するテスト制御プログラムを作成し、システム関数ラッパ及びテスト制御プログラムを用いてプログラムからシステム関数を呼び出す部分のエラー処理のテストを実施する。
【００２４】
図２には、Ｃ言語により作成されたプログラム、システム関数ラッパ、及びテスト制御プログラムの一例が模式的に示されている。
【００２５】
図２（Ａ）に示されるように、本実施の形態に係るプログラム６０は、ＲＡＭ４４の記憶領域を確保する場合にシステム関数６２としてｍａｌｌｏｃ関数を呼び出している。なお、同図に示されるプログラム６０では、ｍａｌｌｏｃ関数を呼び出すコードが１箇所のみ示されて他の部分のコードが省略されているが、省略した部分にもｍａｌｌｏｃ関数を呼び出すコードが含まれている。
【００２６】
また、本実施の形態では、図２（Ｂ）に示すように、テスト制御プログラム６６と、ｍａｌｌｏｃ関数をラッピングしたシステム関数ラッパ６８（ここでは、ｔｅｓｔ＿ｍａｌｌｏｃ関数）と、が予め作成されている。
【００２７】
テスト制御プログラム６６は、プログラム６０のソースファイル（ここでは、ｍａｉｎ．ｃ）を取り込むと共に、プログラム６０内のＭａｉｎ関数の呼び出しをｔｅｓｔ＿Ｍａｉｎ関数の呼び出しに置き換え、ｍａｌｌｏｃ関数の呼び出しをｔｅｓｔ＿ｍａｌｌｏｃ関数の呼び出しに置き換えるマクロ６４が定義されている。
【００２８】
また、図２（Ｂ）に示されるシステム関数ラッパ６８では、ｍａｌｌｏｃ関数を呼び出すコードのみ示されて他の部分のコードが省略されているが、省略した部分にプログラム６０から呼び出された回数をカウントすると共に、後述するエラーチェックフラグＦの判定を行なうコードが含まれている。
【００２９】
このテスト制御プログラム６６のソースファイル（ここでは、ｔｅｓｔｍａｉｎ．ｃ）をコンパイルすると、マクロ６４によるプリプロセットが行われてプログラム６０内の「Ｍａｉｎ」が「ｔｅｓｔ＿Ｍａｉｎ」に置き換えられ、「ｍａｌｌｏｃ」が「ｔｅｓｔ＿ｍａｌｌｏｃ」に置き換えられる。よって、プログラム６０は、ＲＡＭ４４の記憶領域を確保する場合にｔｅｓｔ＿ｍａｌｌｏｃ関数を呼び出すことになる。なお、このように本実施の形態では、テスト制御プログラム６６にマクロ６４を定義して呼び出す関数名を置き換える場合について説明するが、プログラム６０をコンパイルしたオブジェクトファイルを共有ライブラリ化（例えば、ＤＬＬ（Dynamic Link Library））し、テスト制御プログラム６６から当該共有ライブラリを動的にロードし、そのエントリポイントを取得して呼び出す方法をとることもできる。
【００３０】
図３には、本実施の形態に係る各プログラム及び各関数の関連状態を示すブロック図が示されている。
【００３１】
上述したように、テスト制御プログラム６６には、上述したようにマクロ６４が定義されているため、テスト制御プログラム６６がｔｅｓｔ＿Ｍａｉｎ関数を呼び出すと、プログラム６０の処理が実行される。
【００３２】
プログラム６０は、マクロ６４によってｍａｌｌｏｃ関数の呼び出しがｔｅｓｔ＿ｍａｌｌｏｃ関数の呼び出しに置換されており、ＲＡＭ４４の記憶領域を確保する場合にｔｅｓｔ＿ｍａｌｌｏｃ関数を呼び出す。
【００３３】
ｔｅｓｔ＿ｍａｌｌｏｃ関数には、プログラム６０から呼び出された回数を管理するコードが記述された呼び出し回数管理部７０が設けられている。ｔｅｓｔ＿ｍａｌｌｏｃ関数は、プログラム６０から呼び出された回数が予め指定された呼出回数以外の場合にｍａｌｌｏｃ関数を呼び出し、プログラム６０から呼び出された回数が予め指定された呼出回数と等しい場合にエラーの発生を示す情報がプログラム６０に送られる。
【００３４】
次に、図４を参照して、第１の実施の形態に係るテスト制御プログラム６６を実行する際のＰＣ１０の作用を説明する。なお、図４は、テスト制御プログラム６６の処理の流れを示すフローチャートであり、当該テスト制御プログラム６６はＨＤＤ４６の所定領域に予め記憶されている。
【００３５】
同図のステップ１００では、呼び出し回数カウンタ変数ｎの値をゼロに初期化すると共に、エラーチェックフラグＦに偽（false）を設定する。
【００３６】
次のステップ１０２では、ｔｅｓｔ＿Ｍａｉｎ関数の呼び出しを行なう。これにより、プログラム６０が実行される。プログラム６０は、ＲＡＭ４４の記憶領域を確保する場合にシステム関数ラッパ６８を呼び出しており、プログラム６０からシステム関数ラッパ６８が呼び出される毎に以下のシステム関数ラッパ６８の処理が実行される。
【００３７】
ここで、図５を参照して、第１の実施の形態に係るシステム関数ラッパ６８を実行する際のＰＣ１０の作用を説明する。なお、図５は、システム関数ラッパ６８の処理の流れを示すフローチャートであり、当該システム関数ラッパ６８はＨＤＤ４６の所定領域に予め記憶されている。
【００３８】
同図のステップ１５０では、呼び出し回数カウンタ変数ｎの値をインクリメントする。次のステップ１５２では、エラーチェックフラグＦに偽が設定されているか否かを判定し、肯定判定となった場合はステップ１５６へ移行し、否定判定となった場合はステップ１５４へ移行する。なお、上記テスト制御プログラム（図４参照。）のステップ１０２によって実行されたプログラム６０からシステム関数ラッパ６８が呼び出された場合は、エラーチェックフラグＦに偽が設定されているため、本ステップ１５２が肯定判定となる。
【００３９】
ステップ１５４では、後述するテストループカウンタ変数ｉの値と呼び出し回数カウンタ変数ｎの値が等しいか否かを判定し、肯定判定となった場合はステップ１５８へ移行し、否定判定となった場合はステップ１５６へ移行する。
【００４０】
ステップ１５６では、ｍａｌｌｏｃ関数を呼び出してＲＡＭ４４の記憶領域の確保を行い、ｍａｌｌｏｃ関数の処理が終了すると当該ｍａｌｌｏｃ関数の復帰情報を呼び出し元へ送って、本システム関数ラッパ６８の処理は終了となる。
【００４１】
一方、ステップ１５８では、エラーが発生したことを示すエラー情報を復帰情報として呼び出し元へ送って、本システム関数ラッパ６８の処理は終了となる。
【００４２】
プログラム６０は、システム関数ラッパ６８から復帰情報としてエラー情報が返された場合、エラー処理を実行する。
【００４３】
テスト制御プログラム（図４参照。）は、上記ステップ１０２によって実行されたプログラム６０の処理が終了となるとステップ１０４へ移行し、後述するステップ１１０によって実行されたプログラム６０の処理が終了となるとステップ１１２へ移行する。
【００４４】
ステップ１０４では、エラーチェックフラグＦに真（True）を設定すると共に、呼び出し回数カウンタ変数ｎに保持されているプログラム６０からｔｅｓｔ＿ｍａｌｌｏｃ関数が呼び出された回数を総呼び出し回数変数ＣＯＵＮＴに記憶させる。また、テストループカウンタ変数ｉの値を１に初期化する。
【００４５】
次のステップ１０６では、テストループカウンタ変数ｉの値が総呼び出し回数変数ＣＯＵＮＴ以下であるか否かを判定し、肯定判定となった場合はステップ１０８へ移行し、否定判定となった場合は本テスト制御プログラム６６の処理は終了となる。
【００４６】
次のステップ１０８では、呼び出し回数カウンタ変数ｎの値をゼロに初期化し、次のステップ１１０では、ｔｅｓｔ＿Ｍａｉｎ関数の呼び出しを行なう。これにより、プログラム６０が実行される。プログラム６０は、ＲＡＭ４４の記憶領域を確保する場合にシステム関数ラッパ６８を呼び出しており、プログラム６０からシステム関数ラッパ６８が呼び出される毎に上述したシステム関数ラッパ６８の処理（図５参照）が実行される。本ステップ１１０からプログラム６０の呼び出しを行なった場合、エラーチェックフラグＦに真が設定されているため、上述したシステム関数ラッパ処理では、ステップ１５２の判定が否定判定となり、テストループカウンタ変数ｉの値と呼び出し回数カウンタ変数ｎの値が等しい場合にエラー情報がプログラム６０に送られてプログラム６０でエラー処理が行われる。
【００４７】
次のステップ１１２では、テストループカウンタ変数ｉの値をインクリメントして再度ステップ１０６へ移行する。
【００４８】
このように、テスト制御プログラム６６では、テストループカウンタ変数ｉにプログラム６０からシステム関数６２が呼び出される回数を上限とした呼出回数を指定してプログラム６０を呼び出している。システム関数ラッパ６８は、エラーチェックフラグＦが真の場合、プログラム６０から呼び出された回数とテストループカウンタ変数ｉの値が等しい場合にエラー情報をプログラム６０に送る。よって、上述したステップ１０６〜ステップ１１２のループが繰り返されてテストループカウンタ変数ｉの値がインクリメントされることにより、プログラム６０からシステム関数ラッパ６８を呼び出す部分のエラー処理のテストを全て実施することができる。
【００４９】
このように、第１の実施の形態によれば、所定の処理が実行される処理ルーチン（ここでは、ｍａｌｌｏｃ関数）を１回以上呼び出すと共に、当該処理ルーチンでエラーが発生した場合のエラー処理の処理手順が記述され、かつコンピュータ（ここでは、ＰＣ１０）に予め定められた処理を実行させるプログラム（ここでは、プログラム６０）のエラー処理のテストを行うエラー処理テスト方法であって、エラー処理のテスト動作を制御するテスト制御プログラム（ここでは、テスト制御プログラム６６）がプログラムから処理ルーチンが呼び出される回数を上限とした呼出回数を、処理ルーチンをラッピングした処理ルーチンラッパ（ここでは、システム関数ラッパ６８）に指定してプログラムを呼び出し（ここでは、テスト制御プログラム６６のステップ１０６の処理、及びステップ１１０の処理）、プログラムが処理ルーチンに代えて処理ルーチンラッパを呼び出し、処理ルーチンラッパがプログラムから呼び出された回数をカウントし（システム関数ラッパ６８のステップ１５０の処理）、カウント値が指定された呼出回数以外の場合に処理ルーチンを呼び出し（システム関数ラッパ６８のステップ１５６の処理）、カウント値が指定された呼出回数と等しい場合にエラーの発生を示す情報をプログラムに送っている（システム関数ラッパ６８のステップ１５８の処理）ので、オペレーティング・システムのタイプに依存することなくプログラムで動的なエラーが発生した場合のエラー処理のテストを行うことができる。
【００５０】
また、第１の実施の形態よれば、処理ルーチンを、コンピュータに備えられた、ワークエリアとして機能するメモリ（ここでは、ＲＡＭ４４）の記憶領域を確保する記憶領域確保処理を行なうものとしているので、記憶領域の確保で動的なエラーが発生した場合のエラー処理をテストすることができる。
【００５１】
［第２の実施の形態］
第２の実施の形態では、プログラム６０にエラーが発生した場合にメモリリークが発生していないかをテストする形態例について説明する。
【００５２】
第２の実施の形態に係るＰＣ１０の構成は、上記第１の実施の形態に係るＰＣ１０（図１）と同一であるので、ここでの詳細な説明は省略する。
【００５３】
本実施の形態では、ＲＡＭ４４の記憶領域を確保するシステム関数であるｍａｌｌｏｃ関数をラッピングしたシステム関数ラッパ６８に加えて、ｍａｌｌｏｃ関数により確保された記憶領域を解放するシステム関数であるｆｒｅｅ関数をラッピングしたシステム関数ラッパ６９が作成されている。
【００５４】
また、本実施の形態に係るプログラム６０には、Ｍａｉｎ関数の呼び出しをｔｅｓｔ＿Ｍａｉｎ関数の呼び出しに置き換え、ｍａｌｌｏｃ関数の呼び出しをｔｅｓｔ＿ｍａｌｌｏｃ関数の呼び出しに置き換え、ｆｒｅｅ関数の呼び出しをｔｅｓｔ＿ｆｒｅｅ関数の呼び出しに置き換えるマクロ６４が定義されている。
【００５５】
図６には、本実施の形態に係る各プログラム及び各関数の関連状態を示すブロック図が示されている。
【００５６】
プログラム６０は、マクロ６４によってｍａｌｌｏｃ関数の呼び出しがｔｅｓｔ＿ｍａｌｌｏｃ関数（システム関数ラッパ６８）の呼び出しに置換され、ｆｒｅｅ関数の呼び出しがｔｅｓｔ＿ｆｒｅｅ関数（システム関数ラッパ６９）の呼び出しに置換されており、ＲＡＭ４４の記憶領域を確保する場合にｔｅｓｔ＿ｍａｌｌｏｃ関数を介してｍａｌｌｏｃ関数を呼び出し、確保した記憶領域を開放する場合にｔｅｓｔ＿ｆｒｅｅ関数を介してｆｒｅｅ関数を呼び出す。
【００５７】
また、ｔｅｓｔ＿ｍａｌｌｏｃ関数は、ｍａｌｌｏｃ関数を呼び出して確保した記憶領域のメモリアドレスをメモリアドレス管理部７２に記憶させており、システム関数ラッパ６９は、ｆｒｅｅ関数を呼び出して開放したメモリアドレスをメモリアドレス管理部７２から消去している。
【００５８】
次に、図７を参照して、第２の実施の形態に係るテスト制御プログラム６６を実行する際のＰＣ１０の作用を説明する。なお、図７は、テスト制御プログラム６６の処理の流れを示すフローチャートであり、当該テスト制御プログラム６６はＨＤＤ４６の所定領域に予め記憶されている。また、同図における図４と同一の処理については図４と同一符号を付して、その説明を省略する。
【００５９】
本実施の形態に係るプログラム６０は、テスト制御プログラム６６のステップ１０２においてｔｅｓｔ＿Ｍａｉｎ関数が呼び出されることにより実行され、ＲＡＭ４４の記憶領域を確保する場合にシステム関数ラッパ６８を呼び出し、確保した記憶領域を開放する場合にシステム関数ラッパ６９を呼び出す。
【００６０】
システム関数ラッパ６８は、プログラム６０より呼び出されると、ｍａｌｌｏｃ関数の呼び出しを行なって記憶領域を確保し、確保された記憶領域のメモリアドレスをメモリアドレス管理部７２に記憶させる。
【００６１】
一方、システム関数ラッパ６９は、プログラム６０より呼び出されると、ｆｒｅｅ関数を呼び出して指定された記憶領域の開放を行ない、メモリアドレス管理部７２に記憶されている開放した記憶領域のメモリアドレスを消去する。
【００６２】
よって、メモリアドレス管理部７２には、プログラム６０の実行中に確保されている記憶領域のメモリアドレスが記憶されている。
【００６３】
テスト制御プログラム６６のステップ１１１では、メモリアドレス管理部７２を検索し、解放されずに残っている記憶領域があるか否かをチェックし、記憶領域があればメモリリークが発生している呼び出し回数として、テストループカウンタｉの値をＨＤＤ５６に記憶させる。
【００６４】
開発者は、本テスト制御プログラムの終了後、ＨＤＤ５６に記憶されているメモリリークが発生している呼び出し回数を読み出すことにより、エラーが発生した場合にメモリリークが発生しているか否かを知ることができる。
【００６５】
このように、第２の実施の形態によれば、処理ルーチンを、コンピュータに備えられた、ワークエリアとして機能するメモリの記憶領域を確保する記憶領域確保処理と、当該記憶領域確保処理によって確保された記憶領域を開放する記憶領域開放処理とを行なうものとし、処理ルーチンラッパを、処理ルーチンにより確保されたメモリの記憶領域のアドレスを示す情報を記憶するものとしているので、エラーが発生してプログラム６０が終了した場合に開放されていない記憶領域があるか否かを判定することができる。
【００６６】
［第３の実施の形態］
第３の実施の形態では、ＨＤＤ４６にデータを電子化ファイルとして書き込む際、又はＨＤＤ４６に記憶された電子化ファイルを読み込み際に動的なエラーが発生した場合をテストする形態例について説明する。
【００６７】
第３の実施の形態に係るＰＣ１０の構成は、上記第１の実施の形態に係るＰＣ１０（図１）と同一であるので、ここでの詳細な説明は省略する。
【００６８】
プログラム６０では、データを電子化ファイルとしてＨＤＤ４６に書き込む場合があるが、ＨＤＤ４６の記憶領域の残容量不足で書き込みが失敗する場合ある。このＨＤＤ４６の残容量は、時々刻々と変化しているため、残容量不足による書き込みエラーを意図的に発生させることが困難であるため、テスト自体を系統的に行なうことが困難であった。
【００６９】
また、プログラム６０は、ＨＤＤ４６に記憶された電子化ファイルを読み込む場合があるが、電子化ファイルのデータが途中で途切れて全てのデータを正常に読み込めない場合がある。
【００７０】
そこで、本実施の形態では、ＨＤＤ４６に電子化ファイルを書き込む書込ルーチン及びＨＤＤ４６から電子化ファイルを読み込む読込ルーチンをそれぞれラッピングしたシステム関数ラッパを作成する。なお、本実施の形態では、書込ルーチン及び読込ルーチンをそれぞれラッピングしたシステム関数ラッパを作成しているが、何れか一方ルーチンのみシステム関数ラッパを作成するものとしてもよい。
【００７１】
これにより、ＨＤＤ４６に電子化ファイルを書き込む場合、及びＨＤＤ４６から電子化ファイルを読み込む場合の全てのケースでエラーをテストすることが可能である。
【００７２】
なお、呼び出し回数だけでなく、例えば、ｎ回目の電子化ファイルの読み込みで読み込むデータ量を記憶しておき、データ量がＸバイトであれば、そのｎ回の読み込み時に読み込まれるデータを０バイトからＸ−１バイトまで変化させてエラー処理をテストすることも可能である。このようにすることにより、電子化ファイルの読み込みエラーに対する安定度をより向上させることができる。
【００７３】
このように、第３の実施の形態によれば、処理ルーチンを、コンピュータに備えられた、電子化ファイルを記憶するための記憶装置（ここでは、ＨＤＤ４６）に電子化ファイルを書き込む書込処理を行うものか又は記憶装置に記憶された電子化ファイルを読み込む読込処理を行うものかの少なくとも一方としているので、記憶装置に電子化ファイルを書き込む場合や、記憶装置から電子化ファイルを読み込む場合に動的なエラーが発生した場合のエラー処理をテストすることができる。
【００７４】
なお、第１及び第２の実施の形態では、ＲＡＭ４４の記憶領域の確保に関する処理を行うシステム関数のエラー処理のテストを実施し、第３の実施の形態では、電子化ファイルの書込み及び読み込みに関する処理を行うシステム関数のエラー処理のテストを実施する場合について説明したが、本実施の形態はこれに限定されるものではなく、他のシステム関数のエラー処理のテストに適用できることは言うまでもない。
【００７５】
また、第１〜３の実施の形態では、システム関数をラッピングするシステム関数ラッパを作成した場合について説明したが、本発明はこれに限定されるものではなく、例えば、開発者により開発された処理ルーチンをラッピングするルーチンラッパを作成し、プログラム６０から処理ルーチンを呼び出す部分のエラー処理のテストを実施するものとしてもよい。
【００７６】
さらに、本実施の形態で説明したＰＣ１０の構成（図１参照。）は、一例であり、本発明の主旨を逸脱しない範囲内において適宜変更可能であることは言うまでもない。
【００７７】
また、第１〜第３実施の形態で説明したテスト制御プログラム（図４、図７参照。）、システム関数ラッパ（図５参照。）も一例であり、本発明の主旨を逸脱しない範囲内において適宜変更可能であることは言うまでもない。
【００７８】
さらに、第１実施の形態で説明したプログラム、システム関数ラッパ、及びテスト制御プログラム（図２参照。）も一例であり、開発において用いられるコンピュータ言語や処理に応じて本発明の主旨を逸脱しない範囲内において適宜変更可能であることは言うまでもない。
【図面の簡単な説明】
【００７９】
【図１】実施の形態に係るＰＣの要部構成を示すブロック図である。
【図２】第１の実施の形態に係るプログラム、システム関数ラッパ、及びテスト制御プログラムの一例を示す模式図である。
【図３】第１の実施の形態に係る各プログラム及び各関数の関連状態を示すブロック図である。
【図４】第１の実施の形態に係るテスト制御プログラムの処理の流れを示すフローチャートである。
【図５】第１の実施の形態に係るシステム関数ラッパの処理の流れを示すフローチャートである。
【図６】第２の実施の形態に係る各プログラム及び各関数の関連状態を示すブロック図である。
【図７】第２の実施の形態に係るテスト制御プログラムの処理の流れを示すフローチャートである。
【符号の説明】
【００８０】
１０  ＰＣ
４４  ＲＡＭ
６０  プログラム
６２  システム関数
６６  テスト制御プログラム
６８  システム関数ラッパ
６９  システム関数ラッパ
７０  回数管理部
７２   メモリアドレス管理部
【図１】
2007133590.tif 000003
【図２】
2007133590.tif 000004
【図３】
2007133590.tif 000005
【図４】
2007133590.tif 000006
【図５】
2007133590.tif 000007
【図６】
2007133590.tif 000008
【図７】
2007133590.tif 000009