(57)【要約】ソフトウェアを双方向プロービングするための方法及びシステムが開示される。双方向プローブは、データを、被テストソフトウェアへ、また被テストソフトウェアから転送することが可能である。この、データの両方向転送は、ソフトウェア中の変数及び引数を監視するだけでなく、必要に応じて変更することを可能とする。テスト目的でテストベクトルを生成し、稼働中のソフトウェアへ挿入することができる。過去の反復からのデータを次の反復用入力として用いることで、回帰解析をより容易に行うことができる。【特許請求の範囲】
【請求項１】
複数のデータ変数及び関数引数を有するソフトウェアをテストする方法であって、
前記ソフトウェアを実行するステップと、
前記ソフトウェアが用いる前記変数又は引数の少なくとも１つに対するアドレス位置を特定するステップと、
データを監視するため、前記アドレス位置に格納される任意のデータをテストシステムへ出力するステップと、
前記アドレス位置に以前格納されていた任意のデータを置き換えるため、前記テストシステムからのデータを前記アドレス位置へ入力するステップとを有することを特徴とする方法。
【請求項２】
前記アドレス位置へ入力されるデータが、前記アドレス位置から出力されたデータの修正版であることを特徴とする請求項１記載の方法。
【請求項３】
前記アドレス位置へ入力されるデータが、前記アドレス位置から出力されたデータと同一であることを特徴とする請求項１記載の方法。
【請求項４】
前記アドレス位置へ入力されるデータが、過去の反復中に前記アドレス位置から出力されたデータに基づいて生成されたものであることを特徴とする請求項１記載の方法。
【請求項５】
前記アドレス位置へ入力されるデータが、過去の反復中に前記アドレス位置から出力されたデータに基づいて生成されたデータのテストベクトルを含むことを特徴とする請求項１記載の方法。
【請求項６】
前記アドレス位置が、コンピュータメモリ中の記憶位置を特定することを特徴とする請求項１記載の方法。
【請求項７】
前記アドレス位置が、ハードディスクドライブ中の記憶位置を特定することを特徴とする請求項１記載の方法。
【請求項８】
複数のデータ変数及び関数引数を有するソフトウェアをテストするための装置であって、
中央処理部と、
前記中央処理部に接続される記憶部とを有し、
前記記憶部が、
前記ソフトウェアを実行し、
前記ソフトウェアが用いる前記変数又は引数の少なくとも１つに対するアドレス位置を特定し、
データを監視するため、前記アドレス位置に格納される任意のデータを前記中央処理部へ出力し、
前記アドレス位置に以前格納されていた任意のデータを置き換えるため、前記中央処理部からのデータを前記アドレス位置へ入力する
ように前記中央処理部に対して命令するためのコンピュータ読み取り可能な命令を格納することを特徴とする装置。
【請求項９】
前記アドレス位置へ入力されるデータが、前記アドレス位置から出力されたデータの修正版であることを特徴とする請求項８記載の装置。
【請求項１０】
前記アドレス位置へ入力されるデータが、前記アドレス位置から出力されたデータと同一であることを特徴とする請求項８記載の装置。
【請求項１１】
前記アドレス位置へ入力されるデータが、過去の反復中に前記アドレス位置から出力されたデータに基づいて生成されたものであることを特徴とする請求項８記載の装置。
【請求項１２】
前記記憶領域へ入力されるデータが、過去の反復中に前記アドレス位置から出力されたデータに基づいて生成されたデータのテストベクトルを含むことを特徴とする請求項８記載の装置。
【請求項１３】
前記アドレス位置が、コンピュータメモリ中の記憶位置を特定することを特徴とする請求項８記載の装置。
【請求項１４】
前記アドレス位置が、ハードディスクドライブ中の記憶位置を特定することを特徴とする請求項８記載の装置。
【請求項１５】
複数のデータ変数及び関数引数を有するソフトウェアをテストするためのシステムであって、
１つ以上のプローブ命令を含んだ前記ソフトウェアを実行するように構成される被テスト装置と、
前記被テスト装置に接続され、前記被テスト装置を制御するテスタとを有し、
前記テスタが、プローブ命令が実行される際に前記被テスト装置を、
前記ソフトウェアが用いる前記変数又は引数の少なくとも１つに対するアドレス位置を特定し、
前記アドレス位置に格納される任意のデータを前記テスタに出力し、
前記テスタから受信したデータを前記アドレス位置に入力する
ように制御することを特徴とするシステム。。
【請求項１６】
前記アドレス位置へ入力されるデータが、前記アドレス位置から出力されたデータの修正版であることを特徴とする請求項１５記載のシステム。
【請求項１７】
前記アドレス位置へ入力されるデータが、前記アドレス位置から出力されたデータと同一であることを特徴とする請求項１５記載のシステム。
【請求項１８】
前記アドレス位置へ入力されるデータが、過去の反復中に前記アドレス位置から出力されたデータに基づいて生成されたものであることを特徴とする請求項１５記載のシステム。
【請求項１９】
前記記憶領域へ入力されるデータが、過去の反復中に前記アドレス位置から出力されたデータに基づいて生成されたデータのテストベクトルを含むことを特徴とする請求項１５記載のシステム。
【請求項２０】
前記アドレス位置が、コンピュータメモリ中の記憶位置を特定することを特徴とする請求項１５記載のシステム。
【請求項２１】
前記アドレス位置が、ハードディスクドライブ中の記憶位置を特定することを特徴とする請求項１５記載のシステム。
【請求項２２】
前記テスタ及び前記被テスト装置が、共通ユニット中に存在することを特徴とする請求項１５記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願への相互参照
本特許出願は、２００２年９月２３日に米国特許商標庁に出願された仮特許出願第60/412,834号、「双方向プロービング(Bidirectional Probing)」による優先権の利益を享受するとともに、当該仮出願の内容を参照により本明細書に組み入れる。
【０００２】
本発明はソフトウェアのテストに関し、特に、ソフトウェアの双方向プロービングのための方法に関する。
【背景技術】
【０００３】
ソフトウェア開発者の間で、最も重要な要求の１つは、ソフトウェアが信頼に足るべきものになることである。信頼性は、ソフトウェアが、特定の環境において特定の時間に渡って正常に動作する能力である。十分高いレベルの信頼性を確保するためには、ソフトウェアをリリース前に徹底的にテスト及びデバッグしなければならない。通常、ソフトウェアプログラムの全てをまとめて(as a whole)テストするとともに、ソフトウェアプログラムを形成する個々の機能コンポーネント（例えば関数の呼び出し、サブルーチン）のテストも行う。一般に、ソフトウェア及び／又はその１つ以上の機能要素に必要な変数についての一連の値を含むテストベクトルが生成される。この変数値は、ソフトウェアを実行しようとする利用状況及び環境の様々なタイプを表すように選択される。そして、このテストベクトルはソフトウェア及び／又はその１つ以上の機能要素に適用され、変数値が監視及び記録される。
【０００４】
良く行われるテストの一形式に、回帰解析(regression analysis)或いは検証テスト(verification testing)と呼ばれるものがある。回帰解析は既知の問題を解決するために改変されたソフトウェアの選択的な再テストを含んでいる。選択的な再テストは特定された問題が修正されたかどうか、また修正の結果、以前から動作している機能コンポーネントが機能しなくなっていないかを確かめるために行われる。この形式のテストは、基本的に、修正されたコードが指定された要求を依然として満たしていること、及び修正されていないコードがメンテナンス処理による影響を受けていないことを確かめるための品質制御の手法である。
【０００５】
ソフトウェアテスト一般、特に回帰解析において重要な機能は、テストベクトルから得られる変数値を監視する能力である。ソフトウェア及び／又はその機能要素の変数値監視の初期の試みとして、ソースコード自体にブレークポイントや他のトラップを手動で設定することが行われていた。最近では、テキサスインスツルメンツ社のCode Composer Studio（登録商標）やナショナルインスツルメンツ社のLabVIEW（登録商標）といったソフトウェア開発ツールが、被テストコードに挿入可能なプローブを含んでいる。ソフトウェアプローブは、被テストコード内の変数を、ソフトウェアの実行に伴ってリアルタイムで観察することを可能にする。しかし、これら後者の方法は、被テストコードから変数値を得ることに基づいている（例えば、だからそれら変数を解析可能である）。そして、ソフトウェア実行中に変数値を変更することを許可しない。つまり、現存するソフトウェアプローブは、一方通行又は単一指向性のプローブであり、データは被テストコードからテストシステムへという方向でのみ流れる。現存するソフトウェアプローブは、データがテストシステムから被テストコードへ流れるような、逆転されたデータ転送方向を許可しない。
【０００６】
従って、データが被テストコードに対して両方向に転送可能な方法でソフトウェアを調べる（プロービングする）ための方法の提供が望まれている。
【発明の開示】
【０００７】
簡単に言えば、本発明はソフトウェアの双方向プロービングを対象とする。本発明の双方向プローブは、データを、被テストソフトウェアへ、また被テストソフトウェアから転送することが可能である。この、データの両方向転送は、ソフトウェア中の変数を監視するだけでなく、必要に応じて変更することを可能とする。テストを目的としてテストベクトルを生成し、稼働中のソフトウェアへ挿入することができる。回帰解析は、過去の反復からのデータを次の反復用入力として用いることで、より容易になる。
【０００８】
一般的に述べて、本発明はその一実施形態において、複数のデータ変数及び関数引数を有するソフトウェアをテストする方法を対象とする。この方法はソフトウェアを実行するステップと、ソフトウェアによって用いられる少なくとも１つの変数又は引数についてのアドレス位置を特定するステップと、このアドレス位置に格納される全てのデータを、監視のためにテストシステムへ出力するステップとを含む。テストシステムからのデータは上述のアドレス位置へ入力され、それによって以前そこに格納されていたデータを置き換える。
【０００９】
一般的に述べて、本発明はその別の実施形態において、複数のデータ変数及び関数引数を有するソフトウェアをテストする装置を対象とする。この装置は中央処理部及び、中央処理部に接続される記憶部を含む。記憶部は中央処理部に、ソフトウェアを実行させ、ソフトウェアによって用いられる少なくとも１つの変数又は引数についてのアドレス位置を特定させ、このアドレス位置に格納される全てのデータを監視のためにテストシステムへ出力させ、中央処理部からのデータをアドレス位置に入力させて以前そこに格納されていたデータを置き換えるように命令するためのコンピュータ可読命令を格納する。
【００１０】
一般的に述べて、本発明はそのさらに別の実施形態において、複数のデータ変数及び関数引数を有するソフトウェアをテストするシステムを対象とする。システムは、１つ又はそれより多いプローブ命令を含むソフトウェアを実行するように構成された被テスト装置を含む。テスタは、プローブ命令が実行される際、被テスト装置を、ソフトウェアによって用いられる少なくとも１つの変数又は引数についてのアドレス位置を特定し、このアドレス位置に格納される全てのデータをテスタへ出力し、テスタから受信したデータをアドレス位置に入力するように制御するように構成される。
【００１１】
なお、本明細書において「含む／有する」という語が用いられる場合、説明された機能、整数、ステップ又は構成部品の存在を特定するものとして解釈されるが、他の機能、整数、ステップ、構成部品又はそのグループの１つ又はそれより多くの存在や付加を排除するものではない点に留意されたい。
【００１２】
本発明のより完全な理解は、添付図面とともに以下の詳細な説明を参照することによって得られるであろう。
【発明を実施するための最良の形態】
【００１３】
以下、同一又は類似要素に対する参照数字が繰り越される図面を参照して、本発明を詳細に説明する。
【００１４】
本発明の実施形態は、双方向プローブを用いてソフトウェアをテストするための方法及びシステムを提供する。本発明の双方向プローブは本質的にプログラムコードのいかなる位置にも挿入可能である。このプローブはデータをソフトウェアから取得するだけでなく、データをソフトウェアへ投入(inject)することを可能とする。具体的には、このプローブは、ソフトウェア中の変数の値の監視、変更及びソフトウェアへの挿入し戻しを、実行中に可能とする。そして、ソフトウェアは変更された値を用いて更に実行される。本発明の双方向プローブは、テキサスインスツルメンツ社のCode Composer Studio（登録商標）やナショナルインスツルメンツ社のLabVIEW（登録商標）といったソフトウェア開発ツールや、他の類似ソフトウェア開発環境の一機能又は一関数として実装されうる。
【００１５】
本発明の双方向ソフトウェアプロービング手法は、ハードウェア回路基板のテストに似たところがある。そのため、本発明をまずハードウェア回路基板用のテストシステムという観点から説明する。しかし、この説明は例示のみを目的としたものであって、本発明は実際にはソフトウェアのプロービングを対象としたものである。
【００１６】
図１は、本発明の双方向ソフトウェアプロービング手法を利用可能なソフトウェアテストツールに類似した、ハードウェアテストシステム１００を示す。ハードウェアテストシステム１００は、複数のハードウェアプローブ（そのうちの１つを１０４で示す）を介して被テスト装置（ＤＵＴ）１０２に接続される。各ハードウェアプローブ１０４は、そのプローブＩＤにより特定することができる。例えば、第１のプローブはＰＩＤ１、第２のプローブはＰＩＤ２、第３のプローブはＰＩＤ３、・・・である。複数のプローブ１０４は、一端をクロスサーキットボックス１０６の片側に接続される。また、他端は、波形発生器のようなファンクションジェネレータ１０８の１つ以上及び、オシロスコープ及び検波計のような測定ユニット１１０の１つ以上に接続される。クロスサーキットボックス１０６は、プローブ１０４を、テストシステム１００のファンクションジェネレータ１０８及び測定ユニット１１０に対して選択的に接続したり、接続解除したりすることを可能にする。システム１００内のコントローラ（明示せず）が、クロスサーキットボックス１０６の接続性を制御する制御信号を与える。
【００１７】
図に示すように、プローブ１０４はＤＵＴ１０２上の所定の関心位置において電気信号をプロービングできるよう、戦略的に配置される。例えば、第１のプローブＰＩＤ１は電気信号”ａ”をプロービングできるよう、Ｆｕｎｃ２の入力に配置されている。同様に、第２のプローブＰＩＤ２は電気信号”ｂ”をプロービングできるよう、Ｆｕｎｃ１の入力に配置されている。しかし、第５のプローブＰＩＤ５は電気信号”ｄ”をプロービングできるよう、Ｆｕｎｃ１の出力に配置されている。様々な関数（すなわち、Ｆｕｎｃ１−３）は、ＤＵＴによって実行可能ないかなる関数であっても良い（例えば、加算、減算、平均等）。いくつかの関数は、１つ以上の内部関数び／又はサブファンクションを有していても良く、それらをプロービングすることもできる。例えば、Ｆｕｎｃ３はサブファンクション”ｆ”を含んでおり、このサブファンクションをプロービングすることができる。同様にして、本発明の双方向プローブは、ソフトウェア中の、関心がある所定の変数をプロービングすることを可能とする。
【００１８】
各プローブ１０４とＤＵＴとの接続点は、点線による円１１２で示すように、通常のワイヤードペア(wired pair)接続に似ている。図に示すように、ワイヤードペア１１２の１つの結線１１４がＤＵＴ１０２からクロスサーキットボックス１０６へ延び、ワイヤードペア１１２の他の結線１１６がクロスサーキットボックス１０６からＤＵＴ１０２へ戻っている。同様に、各プローブ１０４からクロスサーキットボックス１０６への接点は、点線による円１１８に示すように、１組のスイッチに類似している。１２０で示す入力方向スイッチは、プローブ１０４の入来結線１１４を、テスタシステム１００（例えば測定ユニット）へ選択的に接続する。１２２で示す出力方向スイッチは、プローブ１０４の戻り結線１１６を、（例えば通常動作のために）入来結線１１４へ、又はテスタシステム１００へ（例えばファンクションジェネレータへ）、選択的に接続する。スイッチ動作の様々なモデルについて、以下一層詳細に説明する。
【００１９】
図２Ａ〜２Ｄに、複数のプローブをクロスサーキットボックスへ接続するスイッチの動作モデルを示す。これらの動作モデルは、本発明のソフトウェアプローブの機能を模式的に表している。図２Ａに示す第１の動作モードにおいて、入力スイッチ１２０及び出力スイッチ１２２はいずれもクロスサーキットボックス１０６から切り離され、代わりにスイッチ同士が接続されている。これは、通常動作モードであり、データはＤＵＴ１０２からテストシステム１００へも、テストシステム１００からＤＵＴ１０２へも流れない。図２Ｂに示す第２の動作モードにおいて、入力スイッチ１２０はＤＵＴ１０２をテストシステム１００へ接続するが、出力スイッチ１２２は依然として入力スイッチ１２０に接続されている（すなわち、テストシステムから切り離されている）。この動作モードは、モニタリングを目的として、ＤＵＴ１０２からデータを取得するために用いられる。図２Ｃに示す第３の動作モードでは、出力スイッチ１２２はテストシステム１００に接続されるが、入力スイッチ１２０はテストシステム１００から切り離されている。この動作モードは、テストを目的として、テストシステム１００からＤＵＴ１０２へデータを投入するために用いられる。図２Ｄに示す第４の動作モードでは、入力スイッチ１２０及び出力スイッチ１２２の両方がテストシステム１００に接続される。この動作モードは、モニタリングを目的としてＤＵＴ１０２からデータを得るため及び、テストを目的としてＤＵＴ１０２へデータを挿入するために用いられる。同様にして、本発明の双方向プローブは、被テストソフトウェアプログラムの変数及び引数からデータを取得するために、またこれら変数及び引数にデータを入力するために、及びその両方のために用いることができる。
【００２０】
本発明の実施形態に係る双方向ソフトウェアプローブ命令を含む典型的なプログラムコードブロックを、以下の例１に示す。例１に示すように、プログラムコードブロックは、双方向プローブの一般的な性質及び適用性を強調するため、特定のプログラミング言語ではなく、擬似コードで記述されている。この例において、Ｆｕｎｃ０は被テストコードであり、図１のＤＵＴ１０２と類似である。”プローブ”命令は図１のハードウェアプローブＰＩＤ１−５と類似しており、通常、プローブＩＤ及びプロービングする変数又は引数の指標(indication)を、引数として含んでいる。例えば、”probe(1,c)”は、第１のプローブＰＩＤ１を参照し、被テストコード中の変数”ｃ”に対応するアドレス位置に作用する。従って、プローブ命令”probe(1,c)”は、プログラムコードブロック中の変数”ｃ”の監視及び必要に応じた変更を可能とする。同様に、プローブ命令”probe(4,a)”は、プログラムコードブロック中の変数”ａ”の監視及び必要に応じた変更を可能とする。他のプローブ命令も同様である。
【００２１】
例１
func0(a, b, c)
{
probe(1, c)
probe(2, b)
probe(4, a)
d = func1(b)
probe(5, d)
probe(3, g)
e, f = func2(c, g)
probe(6, e)
h, g = func3(a, d, e, f)
probe(11, h)
return h
}
func3(a', b', c', d')
{
e' = f'(a', b', c', d')
probe(8, e')
return e'
}
【００２２】
ここで、Ｆｕｎｃ３が、変数”ａ”〜”ｄ”を入力とし、変数”ｅ”を出力とするサブファンクション”ｆ”を有し、変数”ａ”〜”ｄ”及び”ｅ”はＦｕｎｃ０の変数”ａ”〜”ｄ”及び”ｈ”に対応する点に留意されたい。本発明の双方向プローブ技術を用い、サブファンクションもまた調べることができる。
【００２３】
プローブ命令を被テストコードに付加することで、ソフトウェアは観測可能、即ちテスト可能になる。これら変数やデータが、プローブ命令中の変数によって示されるようなプローブのアドレス空間中にありさえすれば、任意形式の変数（例えば、自動（スタックに一時的に格納される）変数、グローバル変数、スタティック変数、等）又は任意の格納されたデータを調べることができる。本発明の双方向プローブを用いて、関数引数(function arguments)を調べることもできる。変数及び関数引数のプロービングは、ソフトウェアの機能性の更なるテストを可能にする。具体的には、ある関数の変数及び引数のプロービングは、得られるデータに基づいた更なるテスト及びテストベクトルの生成を可能にする。
【００２４】
以下の例２に、プローブ命令の典型的なＣコード版を、ソースコードブロック形式で示す。この例は、本発明の実施形態を用いる実際のソースコードブロックが、どのように見えるかを説明するためのものである。
【００２５】
例２
// b * b + aの算出
int func0(int a, int b)
{
int d; int e;    //値を変更可能とするため
probe(2, &b);    //変数への参照が必要
d = func1(b);    //これが
e = d + a;       //func 0の機能性
probe(7, &e);
return e;
}
int func1(int arg0)
{
int res;
res = arg0 * arg0;    //これがfunc 1の機能性
probe(8, &res);
return res;
}
【００２６】
本発明の双方向プロービング技術は、いかなるテストシステムにおいても実装することができる。図３は、双方向プロービング技術を実装するための典型的なテストシステム３００を示す図である。テストシステム３００はテスタ３０２と被テスト装置３０４とを含み、テスタ３０２及び被テスト装置３０４は互いに通信している。テスタ３０２は典型的なコンピュータであり、ＣＰＵ３０６、入力／出力インタフェースユニット３０８、記憶装置３１０を含む、多数の機能部品を有する。これら部品はコンピュータ技術における通常の知識を有する者にとってよく知られており、従ってここでは簡単にのみ説明する。ＣＰＵ３０６は、ＯＳ及びＯＳ上で稼働する任意のソフトウェアを含む、テスタ３０２上における全ソフトウェアの実行を担当する。インタフェースユニット３０８はテスタ３０２と被テスト装置３０４及び、テスタ３０２に接続される任意の入出力装置（例えばキーボード、マウス、ディスプレイ装置、プリンタ、等）とをインタフェースする。記憶装置３１０は、ＯＳ及びテスタ３０２上で稼働するソフトウェアの実行に必要とされるであろうソフトウェアプログラム及び／又はデータに対する一時記憶（例えばＲＡＭ）及び／又は長期記憶（例えばハードディスクドライブ）を提供する。
【００２７】
記憶装置３１０には、ソフトウェア開発ツール３１２を含む多数のソフトウェアアプリケーションが格納される。ソフトウェア開発ツール３１２は、テキサスインスツルメンツ社のCode Composer Studio（登録商標）やナショナルインスツルメンツ社のLabVIEW（登録商標）といった既存のソフトウェア開発ツールや、他の類似ソフトウェア開発ツールと同様にして動作し、また多数の同一機能を有する。しかし、本発明の実施形態によれば、ソフトウェア開発ツール３１２はプローブ制御及び解析モジュール３１４をさらに含んでいる。プローブ制御及び解析モジュール３１４は、ソフトウェア開発ツール３１２を用いてテスト中の任意のソフトウェアの双方向プロービングを制御すること及び、調べられたデータを解析することができる。具体的には、プローブ制御及び解析モジュール３１４は、被テストコードからデータを取得すること、被テストコードへデータを投入すること、またはその両方を、ユーザの決定に応じて可能とする。プローブ制御及び解析モジュール３１４はまた、ユーザが、得られたデータに基づいてテストベクトルを生成すること及び、このテストベクトルを被テストコードへ投入することを可能にする。これにより、被テストコードの動作及び信頼性を監視及びテストを、ユーザがより簡単に、かつ便利に行うことができる。
【００２８】
本実施形態では、双方向プローブ命令を含む被テストコードが、テスタ３０２と通信中の個別装置、すなわち被テスト装置３０４において実行される。被テスト装置３０４は、テスタ３０２と同様、ＣＰＵ３１６、入力／出力インタフェースユニット３１８及び記憶装置３２０を含む多数の機能部品を有する典型的なコンピュータである。被テスト装置３０４の部品はテスタ３０２の対応する部品と機能面で類似しているため、ここでの説明は省略する。要は、調査対象のソースコード及び双方向プローブ命令及び実装(implementation)を含む被テストコード３２２が、テスタ３０２とは別個に格納並びに実行されるということである。
【００２９】
しかしながら、一部の実施形態では、テスタ及び被テスト装置が、両方の機能を実行する１つの統合されたテストシステムとして実現される。図４は、そのようなテストシステム４００の例を示す。統合テストシステム４００はＣＰＵ４０２、入力／出力インタフェース４０４及び記憶装置４０６を含む多数の機能部品を有する。これらの部品は図３に関して説明された対応部品と類似であるが、記憶装置４０６がソフトウェア開発ツール４０８及び被テストコード４１０の両方を格納する点で異なる。そのため、テストシステム４００は、ソフトウェア開発ツール４０８と被テストコード４１０を同時に実行（すなわち、マルチタスク）するのに十分な記憶並びに処理能力を有することが好ましい。ソフトウェア開発ツール４０８は上述のソフトウェア開発ツール３１２と実質的に同一であり、プローブ制御及び解析モジュール（明示せず）を含んでいる。同様に、被テストコード４１０は上述の被テストコード３２２と実質的に同一であり、調査対象のソースコード及び、プローブ命令及び実装を含んでいる。
【００３０】
双方向プローブ命令の実行が、図５の、本発明の実施形態に係る代表的な方法５００に説明される。このような方法５００は、通常、被テストコードを実行している被テスト装置、又はマルチタスク環境にある統合テスタのいずれかに実装される。方法５００において、１つ以上のプローブ命令を含むソースコードブロックが、実行されるプロセス中に存在している。コード実行中の所定のポイント（ステップ５０１）で、複数のプローブ命令の１つに遭遇する。次のステップ（ステップ５０２）で、そのプローブがプローブモードに設定されているかどうかを判定する。この特定のモードは通常、予めプログラムされたコマンドとして、或いは手動により、さらにはそれらの組み合わせとして、ソフトウェア開発ツール３１２からテスタを介してユーザにより設定される。答えが「イエス」であれば、３番目のステップ５０３で、プローブ命令によって示されるメモリ又は記憶領域内のデータが、テストシステムへ転送される。このデータは必要に応じて監視及び解析することができる。もし「ノー」であれば、方法５００は４番目のステップ５０４へ進み、プローブが投入モードにセットされているかどうかを判定する。答えが「イエス」であれば、５番目のステップ５０５で、プローブ命令によって示されるメモリ又は記憶領域内のデータは、例えば単純なメモリコピーにより、テストシステムから受信した新しいデータによって変更及び／又は置換される。もし「ノー」であれば、方法５００は被テストコードの残りの実行を継続する。
【００３１】
ここで、上述した方法５００は、プローブ命令の単純化された実装を示している点に留意されたい。いくつかの実施形態では、プロービングモードの判定に加え、データのタイプやサイズが検証される。さらに、行列のようなもっと複雑な変数や、連続構造(continuous structure)に格納されていない変数でさえ調べることが可能である。このようにして、テスト中のソフトウェアから、多くの形式のデータを取得することのみならず、挿入することもできる。
【００３２】
本発明の特定の実施形態及び用途について、図示及び説明してきたが、本発明はここで開示した通りの構成及び組成に限定されるものではなく、特許請求の範囲に規定される本発明の範囲を逸脱することなく、上述の構成に変更及び変形を加えることができる。
【図面の簡単な説明】
【００３３】
【図１】本発明の実施形態に係る典型的なソフトウェアテスト環境を、ハードウェア構成になぞらえて示す図である。
【図２Ａ】、
【図２Ｂ】、
【図２Ｃ】、
【図２Ｄ】、  本発明の実施形態に係るソフトウェアプローブの典型的な動作モードを、ハードウェア構成になぞらえて示す図である。
【図３】本発明の実施形態に係る双方向ソフトウェアプローブを適用可能な典型的なシステムを示す図である。
【図４】本発明の実施形態に係る双方向ソフトウェアプローブを適用可能な別の典型的なシステムを示す図である。
【図５】本発明の実施形態に係る双方向ソフトウェアプローブを適用する典型的な方法を示す図である。
【図１】
2006500695.tif 000002
【図２Ａ】
2006500695.tif 000003
【図２Ｂ】
2006500695.tif 000004
【図２Ｃ】
2006500695.tif 000005
【図２Ｄ】
2006500695.tif 000006
【図３】
2006500695.tif 000007
【図４】
2006500695.tif 000008
【図５】
2006500695.tif 000009
【手続補正書】
【提出日】平成16年9月3日(2004.9.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のデータ変数及び関数引数を有するソフトウェアをテストする方法であって、
特定のデータ変数又は関数引数を参照するプローブ命令を、前記ソフトウェアのソースコードの所定位置へ挿入するステップと、
前記ソフトウェアを実行するステップとを有し、
前記プローブ命令が、前記参照された変数又は関数引数に格納される値を前記ソフトウェアの実行中に置き換え、前記値をテストシステムへ出力するように構成可能であることを特徴とする方法。
【請求項２】
前記アドレス位置へ入力されるデータが、前記アドレス位置から出力されたデータの修正版であることを特徴とする請求項１記載の方法。
【請求項３】
前記アドレス位置へ入力されるデータが、前記アドレス位置から出力されたデータと同一であることを特徴とする請求項１記載の方法。
【請求項４】
前記アドレス位置へ入力されるデータが、過去の反復中に前記アドレス位置から出力されたデータに基づいて生成されたものであることを特徴とする請求項１記載の方法。
【請求項５】
前記アドレス位置へ入力されるデータが、過去の反復中に前記アドレス位置から出力されたデータに基づいて生成されたデータのテストベクトルを含むことを特徴とする請求項１記載の方法。
【請求項６】
前記アドレス位置が、コンピュータメモリ中の記憶位置を特定することを特徴とする請求項１記載の方法。
【請求項７】
前記アドレス位置が、ハードディスクドライブ中の記憶位置を特定することを特徴とする請求項１記載の方法。
【請求項８】
複数のデータ変数及び関数引数を有するソフトウェアをテストするための装置であって、
中央処理部と、
前記中央処理部に接続される記憶部とを有し、
前記記憶部が、
特定のデータ変数又は関数引数を参照するプローブ命令であって、前記ソフトウェアのソースコードの所定位置に挿入されたプローブ命令を含む前記ソフトウェアを実行する、
ように前記中央処理部に対して命令するためのコンピュータ読み取り可能な命令を格納し、
前記プローブ命令が、前記参照された変数又は関数引数に格納される値を前記ソフトウェアの実行中に置き換え、前記値をテストシステムへ出力するように構成可能であることを特徴とする装置。
【請求項９】
前記アドレス位置へ入力されるデータが、前記アドレス位置から出力されたデータの修正版であることを特徴とする請求項８記載の装置。
【請求項１０】
前記アドレス位置へ入力されるデータが、前記アドレス位置から出力されたデータと同一であることを特徴とする請求項８記載の装置。
【請求項１１】
前記アドレス位置へ入力されるデータが、過去の反復中に前記アドレス位置から出力されたデータに基づいて生成されたものであることを特徴とする請求項８記載の装置。
【請求項１２】
前記記憶領域へ入力されるデータが、過去の反復中に前記アドレス位置から出力されたデータに基づいて生成されたデータのテストベクトルを含むことを特徴とする請求項８記載の装置。
【請求項１３】
前記アドレス位置が、コンピュータメモリ中の記憶位置を特定することを特徴とする請求項８記載の装置。
【請求項１４】
前記アドレス位置が、ハードディスクドライブ中の記憶位置を特定することを特徴とする請求項８記載の装置。
【請求項１５】
複数のデータ変数及び関数引数を有するソフトウェアをテストするためのシステムであって、
特定のデータ変数又は関数引数を参照する１つ以上のプローブ命令をソースコード中に含んだ前記ソフトウェアを実行するように構成される被テスト装置と、
前記被テスト装置に接続され、前記被テスト装置を制御するテスタとを有し、
前記テスタが、プローブ命令が実行される際に前記被テスト装置を、
前記１つ以上のプローブ命令の構成に応じて、前記参照された変数又は関数引数に格納される値を前記ソフトウェアの実行中に置き換え、前記値を前記テスタへ出力する
ように制御することを特徴とするシステム。。
【請求項１６】
前記アドレス位置へ入力されるデータが、前記アドレス位置から出力されたデータの修正版であることを特徴とする請求項１５記載のシステム。
【請求項１７】
前記アドレス位置へ入力されるデータが、前記アドレス位置から出力されたデータと同一であることを特徴とする請求項１５記載のシステム。
【請求項１８】
前記アドレス位置へ入力されるデータが、過去の反復中に前記アドレス位置から出力されたデータに基づいて生成されたものであることを特徴とする請求項１５記載のシステム。
【請求項１９】
前記記憶領域へ入力されるデータが、過去の反復中に前記アドレス位置から出力されたデータに基づいて生成されたデータのテストベクトルを含むことを特徴とする請求項１５記載のシステム。
【請求項２０】
前記アドレス位置が、コンピュータメモリ中の記憶位置を特定することを特徴とする請求項１５記載のシステム。
【請求項２１】
前記アドレス位置が、ハードディスクドライブ中の記憶位置を特定することを特徴とする請求項１５記載のシステム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００２
【補正方法】変更
【補正の内容】
【０００２】
ソフトウェア開発者の間で、最も重要な要求の１つは、ソフトウェアが信頼に足るべきものになることである。信頼性は、ソフトウェアが、特定の環境において特定の時間に渡って正常に動作する能力である。十分高いレベルの信頼性を確保するためには、ソフトウェアをリリース前に徹底的にテスト及びデバッグしなければならない。例えば、米国特許第５、５８１、６９５号には、ソフトウェアのデバッグ技術が開示されている。通常、ソフトウェアプログラムの全てをまとめて(as a whole)テストするとともに、ソフトウェアプログラムを形成する個々の機能コンポーネント（例えば関数の呼び出し、サブルーチン）のテストも行う。一般に、ソフトウェア及び／又はその１つ以上の機能要素に必要な変数についての一連の値を含むテストベクトルが生成される。この変数値は、ソフトウェアを実行しようとする利用状況及び環境の様々なタイプを表すように選択される。そして、このテストベクトルはソフトウェア及び／又はその１つ以上の機能要素に適用され、変数値が監視及び記録される。


【国際調査報告】
2006500695.tif 000010
2006500695.tif 000011