(57)【要約】ソフトウェアの動的プロービングのための方法及びシステムが開示される。動的プローブは、ランタイム中に、テスト中のソフトウェアへ挿入される（またはそこから取り除かれる）ことが可能である。ユーザが、新しいプローブを挿入するためにソフトウェアを再コンパイルするのではなく、必要に応じてプローブを挿入すること及び取り出すことを、そのプローブのこの動的な挿入（及び取り出し）は可能とする。また、必要である場合のみプローブを追加することと、もはや使用されていないプローブを取り除くこととをユーザにとって可能とすることによって、プローブのその動的な挿入（及び取り出し）はメモリの空きを節約する。【選択図】図３
2009509258.tif 000002
【特許請求の範囲】
【請求項１】
複数のソフトウェアモジュールを内に有するソフトウェアをテストする方法であって、
前記ソフトウェアによって使用される前記複数のソフトウェアモジュールを含む前記ソフトウェアを実行することと、
前記複数のソフトウェアモジュールの内、互いに直接リンクする２つを識別することと、
前記ソフトウェアが実行されている間に、前記２つの識別されたソフトウェアモジュールの間にプローブを挿入することと、
前記２つの識別されたソフトウェアモジュールの間で交換されているデータを、前記プローブによってテストシステムへ出力し、それによって前記ソフトウェアからデータを抽出することと
を含む方法。
【請求項２】
前記ソフトウェアが実行されている間に、前記２つの識別されたソフトウェアモジュールの間の前記プローブを取り除くことをさらに含む、請求項１による方法。
【請求項３】
前記プローブは固有のプローブ識別子を含む、請求項１による方法。
【請求項４】
前記固有のプローブ識別子は、前記ソフトウェアのテストの前に前記プローブへ割り当てられ、プローブデータベースに記憶される、請求項３による方法。
【請求項５】
前記固有のプローブ識別子は前記ソフトウェアのテスト中に作成される、請求項３による方法。
【請求項６】
前記固有のプローブ識別子はプローブデータベースに記憶される、請求項３による方法。
【請求項７】
前記プローブによって、前記２つの識別されたソフトウェアモジュールの間で交換されるデータを、前記テストシステムからのデータと置き換えて、それによって前記ソフトウェアへデータを注入することさらに含む、請求項１による方法。
【請求項８】
前記プローブは、前記プローブがデータの長さ及び前記データに対するポインタのみを使用して、ソフトウェアモジュールから前記データを抽出することと、ソフトウェアモジュールへ前記データを注入することとを可能にする汎用インターフェースを含む、請求項１による方法。
【請求項９】
前記ソフトウェアが実行されている間に、前記複数のソフトウェアモジュールをともにリンクすることをさらに含む、請求項１による方法。
【請求項１０】
ソフトウェアをテストするためのシステムであって、
テスト中のソフトウェアと、前記ソフトウェアは複数のソフトウェアモジュールを内に有することと、
前記テスト中のソフトウェアに結合される少なくとも１つのアプリケーションと、
前記少なくとも１つのアプリケーションを制御するテスタユニットと、前記テスタユニットは、
前記少なくとも１つのアプリケーションに、
前記テスト中のソフトウェアによって使用されるいずれかのソフトウェアモジュールを含む前記テスト中のソフトウェアを実行させ、
前記テスト中のソフトウェアによって使用される前記ソフトウェアモジュールの内、互いに直接通信している２つを識別させ、
前記テスト中のソフトウェアが実行されている間に、前記２つの識別されたソフトウェアモジュールの間にプローブを挿入させ、
前記プローブによって、前記２つの識別されたソフトウェアモジュールの間で交換されているデータを出力し、それによって前記テスト中のソフトウェアからデータを抽出させる
ように構成されることと
を含む、前記システム。
【請求項１１】
前記テスタは、さらに、前記テスト中のソフトウェアが実行されている間に、前記２つの識別されたソフトウェアモジュールの間から前記プローブを、前記少なくとも１つのアプリケーションに取り除かせるように構成される、請求項１０によるシステム。
【請求項１２】
前記テスタは、さらに、前記プローブによって、前記２つの識別されたソフトウェアモジュールの間で交換されているデータを、前記少なくとも１つのアプリケーションに配置させ、それによって前記テスト中のソフトウェアへデータを注入させるように構成される、請求項１０によるシステム。
【請求項１３】
前記テスタユニットは、前記少なくとも１つのアプリケーションを制御するためのテスト及び検証プラットフォームを含む、請求項１０によるシステム。
【請求項１４】
前記少なくとも１つのアプリケーションはＰＣ上で動作する、請求項１０によるシステム。
【請求項１５】
複数のソフトウェアモジュールを内に有するソフトウェアをテストする方法であって、
前記ソフトウェアが実行されている間に、前記ソフトウェアのためのプローブを要求することと、
前記プローブに対するハンドルをコンポーネントマネージャから取得することと、
テストされる前記複数のソフトウェアモジュールの内２つを識別することと、前記２つの識別されたソフトウェアは互いに直接リンクすることと、
前記２つの識別されたソフトウェアモジュールの間に前記プローブの前記ハンドルを挿入することと
を含む方法。
【請求項１６】
前記プローブによって前記ソフトウェアから抽出されるデータを監視することをさらに含む、請求項１５による方法。
【請求項１７】
前記ソフトウェアが実行されている間に、前記２つの識別されたソフトウェアモジュールの間から、前記プローブの前記ハンドルを取り除くことをさらに含む、請求項１５による方法。
【請求項１８】
前記ソフトウェアが実行されている間に、プローブデータベースへの前記プローブの登録を取り消すことをさらに含む、請求項１５による方法。
【請求項１９】
前記２つのソフトウェアモジュールは、前記ソフトウェアが実行されている間、一緒にリンクされている、請求項１５による方法。
【請求項２０】
複数のデータ変数及び関数独立変数を内に有するソフトウェアをテストするための装置であって、
中央処理装置と、
前記中央処理装置に接続される記憶装置と、前記記憶装置は、
前記中央処理装置に、
前記ソフトウェアを実行させ、
前記ソフトウェアによって使用される少なくとも１つの前記変数または独立変数に対するアドレスロケーションを識別させ、
前記アドレスロケーションにプローブを動的に挿入させ、
前記アドレスロケーションに記憶されるいずれかのデータを、前記中央処理装置へ出力し、それによって前記データを監視させる
命令をするためのコンピュータ読み取り可能命令を記憶することと
を含む装置。
【請求項２１】
前記記憶装置は、前記中央処理装置に、前記中央処理装置から前記アドレスロケーションへデータを入力し、それによって前記アドレスロケーションに以前記憶されたいずれかのデータを再配置するよう命令するためのコンピュータ読み取り可能命令をさらに記憶する、請求項２０の装置。
【請求項２２】
リンクしてソフトウェア連鎖をなす複数のソフトウェアモジュールと、
前記ソフトウェアモジュールに結合され、前記ソフトウェアモジュールを管理するためのコンポーネントマネージャと
を含む、テスト中のデバイスであって、
その場合、前記ソフトウェアモジュールは、前記ソフトウェアの動作中に前記複数のソフトウェアモジュールの内２つの間にプローブが挿入されることが可能であるように、使用中に分離され、再編成されるように適応される。
【請求項２３】
前記プローブはまた、前記ソフトウェアの動作中に、前記複数のソフトウェアモジュールの内２つの間から取り除かれることが可能である、請求項２２のテスト中のデバイス。
【請求項２４】
複数のソフトウェアモジュールを内に有するソフトウェアをテストする方法であって、
ソフトウェアプローブを作成することと、
プローブ識別子を受信することと、前記プローブ識別子は、前記ソフトウェアプローブを識別することと、
前記ソフトウェアプローブを前記複数のソフトウェアモジュールに挿入する、または前記複数のソフトウェアモジュール内の前記ソフトウェアプローブを取り除くよう、テスタを命令することと、
前記ソフトウェアプローブは挿入されているまたは取り除かれているという確認を受信することと
を含む方法。
【請求項２５】
複数のソフトウェアモジュールを内に有するソフトウェアをテストする方法であって、
プローブに対するハンドルを取得することと、
プローブ識別子をプローブデータベースに入れることと、
前記プローブ識別子をパーソナルコンピュータへ返すことと、
前記プローブを前記複数のソフトウェアモジュールに挿入する、または前記複数のソフトウェアモジュール内の前記プローブを取り除く命令を受信することと、
前記複数のソフトウェアモジュールを再配列することと、
前記複数のソフトウェアモジュール内の前記プローブの状態を確認することと、
前記パーソナルコンピュータへの前記プローブの配置を確認するメッセージを送信することと
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はソフトウェアのテストに関し、特に、ソフトウェアの動的プロービングに関する。
【背景技術】
【０００２】
ソフトウェア開発者の間で最も重要な要求の１つは、ソフトウェアが信頼性をもつということである。信頼性とは、特定の環境において特定の時間、不具合なしで動作するというソフトウェアの能力のことを言う。十分高レベルな信頼性を保証するためには、ソフトウェアはリリース前に徹底的にテストされ、デバグされなければならない。ソフトウェアプログラムを構成する機能コンポーネント（例えば機能コールやサブルーチン）が個別にテストされるとともに、通常、全ソフトウェアプログラムは全体としてまとめてテストされる。典型的に、テストベクトルが生成され、それは、ソフトウェア及び／または１つまたはそれ以上の機能コンポーネントによって要求される変数となる一連の値を含む。変数値は選択されると、ソフトウェアが実行されようとする様々な種類の使用条件及び環境を示す。テストベクトルは、その後ソフトウェア及び／または１つまたはそれ以上の機能コンポーネントへ適用され、変数値は観測され記録される。
【０００３】
しばしば行われるある種のテストは回帰分析と呼ばれ、または時に検証テストとも呼ばれる。回帰分析はソフトウェアの選択的な再テストに関し、その選択的な再テストとは、周知の問題を解決するために修正されてきたものである。確認された問題が解決されていることと、その修復の結果としてそれ以前に動作した他の機能コンポーネントが１つも故障していないことを保証するために、その選択的な再テストは行われる。この種のテストは基本的に品質制御測定であり、修正された符号が依然としてその特定の要求に応じることと、修正されていない符号は修復活動の影響を受けないこととを保証する。
【０００４】
回帰分析と一般的なソフトウェアテストとの重要な特徴が、テストベクトルから得られる変数値を観測する能力である。ソフトウェア及び／またはその機能コンポーネントの変数値を観測する初期の試みは、ソース符号自体においてブレークポイント及び他のトラップを手動設定することに関した。さらに最近では、Ｔｅｘａｓ  Ｉｎｓｔｒｕｍｅｎｔｓ製Ｃｏｄｅ  Ｃｏｍｐｏｓｅｒ  ＳｔｕｄｉｏＴＭ及びＮａｔｉｏｎａｌ  Ｉｎｓｔｒｕｍｅｎｔｓ製ＬａｂＶＩＥＷＴＭのようなソフトウェア開発ツールが、テスト中の符号に挿入可能であるソフトウェアプローブを含む。ソフトウェアが実行されている間リアルタイムで、テスト中の符号内の変数が観測されることを、そのソフトウェアプローブは可能にする。しかし、このような後者の解決法は、テスト中の符号から変数値を取り出すことにのみ基づく（例えばそれらはそのようにして分析される場合がある）。それらは、ソフトウェアの実行中に変数値を変化させない。言い換えると、これらの既存のソフトウェアプローブは、片道のみすなわち一方向プローブであり、データには、テスト中の符号からテストシステムへと流れることのみ許される。データ送信方向が反転し、データがテストシステムからテスト中の符号へ流れることを、それらは許可しない。
【０００５】
他のプローブは双方向性をもち、そのプローブは、データがテスト中の符号からテストシステムへ流れること及びその逆流を可能とする。双方向プローブの例は、２００３年５月１日出願の米国特許出願公開第１０／４２８７３３、発明の名称「ＢＩ‐ＤＩＲＥＣＴＩＯＮＡＬ  ＰＲＯＢＩＮＧ  ＯＦ  ＳＯＦＴＷＡＲＥ(ソフトウェアの双方向プロービング)」において見出されることが可能であり、これは参考文献としてここに組み込まれる。
【０００６】
既存の解決法において、一方向及び双方向プローブの両方は、静的モードにおいて動作し、そのことは、テスト中のソフトウェアのコンパイルタイム中にプローブが決定される必要があることを意味する。もしプローブがコンパイルタイム中に導入されなければ、プローブを導入する唯一の方法は、望ましくはないが、テスト中のソフトウェアを再構築することである。また、たとえプローブがアクティブでない間であっても、それはなお少量のメモリを消費し、その少量のメモリも、システム全体となるとかなり大量のメモリになる。
【０００７】
従って、コンパイルタイム中ではなくランタイム中に、テスト中のソフトウェアにインストール可能であるプローブであって、そのプローブは必要に応じて導入され除外されることが可能であり、インストールされたプローブのみがメモリを消費する、そのようなプローブが必要なのである。
【発明の開示】
【０００８】
複数のソフトウェアモジュールを内に有するソフトウェアをテストする方法が提供される。その方法は、ソフトウェアを実行することと、ソフトウェアによって使用される複数のソフトウェアモジュールを含むことと、その複数のソフトウェアモジュールの内で、互いに直接リンクする２つを識別することとを含む。ソフトウェア実行中に、その２つの識別されたソフトウェアモジュールの間へ、プローブが挿入される。そのプローブは、その２つの識別されたソフトウェアモジュールの間で交換されているデータをテストシステムへ出力し、それによってソフトウェアからデータを抽出する。
【０００９】
本発明の他の実施形態に従って、ソフトウェアをテストするためのシステムが提供される。そのシステムは、テスト中のソフトウェアと、複数のソフトウェアモジュールを内に有するソフトウェアとを含む。少なくとも１つのアプリケーションがそのテスト中のソフトウェアに結合される。テスタユニットがその少なくとも１つのアプリケーションを制御し、そのテスタユニットは、テスト中のソフトウェアに使用されるどんなソフトウェアモジュールをも含むそのテスト中のソフトウェアを、その少なくとも１つのアプリケーションに実行させるよう構成される。また、テスト中のソフトウェアによって使用され、直接互いと通信中である２つのソフトウェアモジュールを識別することと、テスト中のソフトウェアが実行されている間に、その２つの識別されたソフトウェアモジュールの間にプローブを挿入することと、その２つの識別されたソフトウェアモジュールの間で交換されているデータをそのプローブによって出力し、それによってテスト中のソフトウェアからデータを抽出することとを行うようにも、そのテスタユニットは構成される。
【００１０】
なお本実験の別の実施形態に従って、複数のソフトウェアモジュールを内に有するソフトウェアをテストするための方法が提供される。その方法は、そのソフトウェア実行中にそのソフトウェアのためのプローブを要求することと、そのプローブに対するハンドルをコンポーネントマネージャから取得することとを含む。テストされる複数のソフトウェアモジュールの内２つが識別され、その識別された２つのソフトウェアモジュールは互いに直接リンクされている。プローブのハンドルは、その識別された２つのソフトウェアモジュールの間に挿入される。
【００１１】
本発明の別の実施形態に従って、複数のデータ変数及び関数独立変数を内に有するソフトウェアをテストするための装置が提供される。その装置は、中央処理装置と、その中央処理装置に接続される記憶装置とを含む。その中央処理装置を命令し、ソフトウェアの実行と、そのソフトウェアによって使用される少なくとも１つの変数または独立関数に対するアドレスロケーションの識別とを行うためのコンピュータ読み取り可能命令を、その記憶装置は記憶する。その中央処理装置を命令し、プローブをそのアドレスロケーションへ動的に挿入させ、アドレスロケーションに記憶されるどんなデータをもその中央処理装置へ出力させて、それによってそのデータを監視するためのコンピュータ読み取り可能命令を、その記憶装置はまた記憶する。
【００１２】
なお本発明の別の実施形態に従って、テスト中のデバイスが提供される。そのテスト中のデバイスは、リンクしてソフトウェア連鎖をなす複数のソフトウェアモジュールと、そのソフトウェアモジュールに結合され、そのソフトウェアモジュールを管理するコンポーネントマネージャとを含む。そのソフトウェアモジュールは、使用中に分離及び再編成されるよう適応され、プローブはソフトウェア動作中にその複数のソフトウェアモジュールの内の２つの間に挿入可能である。
【００１３】
本発明の別の実施形態に従って、複数のソフトウェアモジュールを内に有するソフトウェアをテストする方法が提供される。その方法は、ソフトウェアプローブを作成することと、プローブ識別子を受信することとを含み、そのプローブ識別子はそのソフトウェアプローブを識別する。その複数のソフトウェアモジュール内にそのソフトウェアプローブを挿入するまたはそこから取り除くよう、テスタは命令される。また、そのソフトウェアプローブが挿入されていること、または取り出されていることの確認が受信される。
【００１４】
なお別の実施形態に従って、複数のソフトウェアモジュールを内に有するソフトウェアをテストする方法が提供される。その方法は、プローブに対するハンドルを取得することと、プローブ識別子をプローブデータベースに入れることとを含む。そのプローブ識別子はパーソナルコンピュータへ返される。その複数のソフトウェアモジュール内へのプローブ挿入または取り出し命令が受信され、その複数のソフトウェアモジュールは再配列される。その複数のソフトウェアモジュール内のそのプローブの状態が確認され、そのプローブの配置を確認するメッセージが、パーソナルコンピュータへ送信される。
【発明を実施するための最良の形態】
【００１５】
添付の図と併せて、以下の詳細な説明を参照することによって、この発明のより良い理解を得ることが可能である。
【００１６】
上で言及したように、既存の一方向及び双方向プローブは柔軟性に欠け、テスト中のソフトウェア（ｓｏｆｔｗａｒｅ  ｕｎｄｅｒ  ｔｅｓｔ：ＳＵＴ）のコンパイルタイム中にプローブが決定される必要がある。さもなければ、プローブを導入する唯一の方法は、ＳＵＴ全体を再構築することである。また、たとえアクティブにされていないとしても、各プローブは少量のメモリを消費し、従って、多くのプローブが使用される必要がある場合を想定すると、それはかなりの量になる可能性がある。
【００１７】
この発明の実施形態は、動的プローブを使用してソフトウェアをテストするための方法及びシステムを提供する。この発明の動的プローブは、ソフトウェアのコンパイル中に挿入される必要はなく、代わりにソフトウェアのランタイム中に挿入されることが可能である。ランタイム中にプローブをＳＵＴへ導入することは、いくつかの利点があり、その利点としては、実際に必要とされるプローブのみにその挿入を制限し、それによって貴重なメモリ及びＣＰＵサイクルの使用を減らすことが含まれる。さらに、通信の連鎖（ｃｏｍｍｕｎｉｃａｔｉｏｎ  ｃｈａｉｎ：ＣＯＭ  ｃｈａｉｎ）があるＳＵＴ内のどこにでも、プローブを導入することが本質的に可能である。このように動的プローブは、ＳＵＴのテスト及びデバグの両方における柔軟性を大きく改善する。さらに、そのプローブは双方向性をもち、そのことは、データがＳＵＴからテストシステムへ流れること及びその逆流の両方を、それが可能とすることを意味する。
【００１８】
好ましい実施形態において、プローブされているソフトウェアはまた動的であり、それはランタイム中に、すでに存在する他のソフトウェアモジュールにリンクされる場合もある。その動的なリンクは、ランタイム中にソフトウェアモジュールの連鎖全体が一緒にリンクされるまたは「構築される（ｂｕｉｌｔ）」ことを可能とする。
【００１９】
プラットフォーム内部では、リンキング機構が、ソフトウェアモジュールのリンクを行うために使用される。他の同様なリンキング機構は、例えばマイクロソフト（Ｍｉｃｒｏｓｏｆｔ）ＣＯＭ及び他社に属する（ｐｒｏｐｒｉｅｔａｒｙ）ＣＯＭシステムを含む。これらのリンキング機構は、実際のリンクを行うのにある種の制御ソフトウェアを使用する一方で、リンクされる特定のソフトウェアモジュール及びそれらがリンクする順番は、プラットフォームの最上部で動作するカスタマーアプリケーションによって支配される。ソフトウェアモジュールが連鎖する方法をユーザが変更したい場合、彼または彼女は、プラットフォームより上にあるアプリケーションを介して、変更しなければならない。従って、制御ソフトウェアは、プラットフォームを経由してカスタマーアプリケーションへ、その機能をエクスポートしなければならない。
【００２０】
この発明の実施形態に従って、データストリームで動作するソフトウェアモジュールの連鎖は「ばらばらにされ（ｂｒｏｋｅｎ  ｕｐ）」、動的テスト及び検証プラットフォーム（ｔｅｓｔ  ａｎｄ  ｖｅｒｉｆｉｃａｔｉｏｎ  ｐｌａｔｆｏｒｍ：ＴＶＰ）プローブがそれらの間に導入されることが可能である。ここで使用されるように、「リンク（ｌｉｎｋ）」及び「連鎖（ｃｈａｉｎ）」という用語は、ソフトウェアモジュールがデータを交換する、またさもなければ互いに通信する能力のことを言う。動的プローブを作成するために、パーソナルコンピュータ（ｐｅｒｓｏｎａｌ  ｃｏｍｐｕｔｅｒ：ＰＣ）上のカスタマーアプリケーションは、ＴＶＰデータベースを用いてその動的プローブを作成し、そのＴＶＰデータベースは固有のＩＤを返す。その後ＴＶＰデータベースはコンポーネントマネージャに、動的プローブに対するハンドルまたはリンクを要求する。その後、動的プローブが望ましい場所で連鎖の一部となるように、ソフトウェアモジュール連鎖を再配列するように制御ソフトウェアに命令するよう、カスタマーＰＣアプリケーションはＴＶＰに命令する。ひとたび配置されると、その動的プローブはテストシステムによって、上で言及した静的プローブと同じ方法で対処される。その後、テストシステムのユーザは、新しい動的プローブにデータを注入する、またはそこからプローブデータを抽出することが可能である。もし動的プローブが取り除かれることになれば、上述の手順を逆に行う。
【００２１】
いくつかの実施形態において、ソフトウェアモジュールは、動的プローブにとって既知のインターフェースをもつ場合がある。従って、以下でさらに説明するように、このようなソフトウェアモジュールの間に動的プローブを導入するために、動的プローブのインターフェースは汎用インターフェースとなるよう設計されるのが好ましい。データの解釈はその後、ＰＣ上で動作しているカスタマーアプリケーションに委ねられる。
【００２２】
まずは図１ａを参照すると、本発明の動的プロービング技術が使用可能であるソフトウェアテストシステム１００が示されている。ソフトウェアテストシステム１００は、少なくとも１つのソフトウェア動的プローブ１０４を介してＳＵＴ１０２に接続されている。例えばＰＩＤ１、ＰＩＤ２、ＰＩＤ３等、その固有のＩＤによって、その少なくとも１つのソフトウェア動的プローブ１０４は識別されることが可能である。プローブＩＤの生成については、図２に関連して以下でより詳細に説明することにする。
【００２３】
動的プローブ１０４は、テスト及び検査プラットフォーム（ＴＶＰ）１０６（他社に属する（ｐｒｏｐｒｉｅｔａｒｙ）ＴＶＰ、または当業者に既知の標準的なＴＶＰである場合がある）に接続される。言い換えると、限定はされないが、デバグマルチプレクサ（ｄｅｂｕｇ  ｍｕｘ：デバグｍｕｘ）１０８のような他のテストモジュールに、ＴＶＰ１０６は結合される。デバグｍｕｘ１０８はＰＣ１１０から全部の通信を受信し、ＴＶＰ１０６へその通信を送信する。ＰＣ１１０は全部のテストを制御する。
【００２４】
ＳＵＴ１０２は多くの個別のソフトウェアモジュールを含み、ソフトウェアモジュール１０２ａ、１０２ｂ、１０２ｃ、１０２ｄの４つが図１に示されている。限定はされないが、エンコーダ、イコライザ、汎用フィルタ、そしてその類似のもののような複数のデータ変数及び関数独立変数を、これらのソフトウェアモジュール１０２ａ、１０２ｂ、１０２ｃ、１０２ｄは含む。ソフトウェアモジュール１０２ａ、１０２ｂ、１０２ｃ、１０２ｄは互いに動的にリンク可能でなければならない。言い換えると、ソフトウェアモジュール１０２ａ、１０２ｂ、１０２ｃ、１０２ｄはコンパイルタイム中に操作されることが可能である。このことは、ソフトウェアモジュール１０２ａ、１０２ｂ、１０２ｃ、１０２ｄの連鎖がランタイム中にばらばらにされることを可能にする。
【００２５】
動的プローブ１０４は、これらのソフトウェアモジュール１０２ａ、１０２ｂ、１０２ｃ、１０２ｄのどの間にでも動的に配置可能である。動的プローブ１０４を動的に配置するということは、ソフトウェア１０２のコンパイルタイム中ではなくランタイム中に、ソフトウェアモジュール１０２ａ、１０２ｂ、１０２ｃ、１０２ｄの間へ、動的プローブ１０４が挿入可能であることを意味する。動的プローブ１０４はまたランタイム中に取り除かれることが可能である。ランタイム中の動的プローブ１０４の配置及び取り除きを可能にすることによって、余分なプローブが必要なくなり、メモリの空きが節約される。
【００２６】
いくつかの実施形態において、動的プローブ１０４は、複数のパラメータをもつインターフェースを用いて、ソフトウェアモジュールの間に挿入されることが可能である。これらのモジュールに対し、動的プローブ１０４は汎用インターフェースをもつのが好ましい。汎用インターフェースとは、２つのパラメータ、すなわちデータの長さ及びデータに対するポインタのみを必要とするものである。ビットレートやサンプリング周波数のような他のパラメータがデータ内に隠されている場合がある。そのプローブは、これらの他の、より具体的なパラメータをもつ必要がない。
【００２７】
汎用インターフェースは、とりわけ、データがソフトウェアモジュール１０２ａ、１０２ｂ、１０２ｃ、１０２ｄから抽出される、またはそれらへ注入されることを可能にするよう設計されるのが好ましい。ソフトウェアモジュール１０２ａ、１０２ｂ、１０２ｃ、１０２ｄから抽出されるプローブＩＤとデータに対するポインタとを、汎用インターフェースは含むのがまた好ましい。プローブ１０４の作成及び削除を容易にする方法を、汎用インターフェースは含むのがさらに好ましい。
【００２８】
ここで図１ｂを参照すると、ソフトウェア１０２ａ及び１０２ｂの間に挿入される動的プローブ１０４の説明図が提供されている。示されるとおり、そのプローブ１０４は、２つのソフトウェアモジュール１０２ａ及び１０２ｂの間に挿入され、ＴＶＰ１０６と通信する。図１ａと併せて上で説明したように、ＴＶＰ１０６はまたデバグＭＵＸ１０８に結合される。デバグＭＵＸ１０８はまたＰＣ１１０に結合される。
【００２９】
図１ｃは、プローブ１０４が取り除かれた状況の、ソフトウェアモジュール１０２ａ、１０２ｂを示している。示されるとおり、ソフトウェアモジュール１０２ａ、１０２ｂは互いに結合される。
【００３０】
ここで図２を参照して、この発明のある実施形態に従って、動的プローブを登録するための方法を説明することにする。示されるとおり、ＰＣ１１０はＴＶＰ１０６を用いてプローブを作成する（ステップ２０２）。ＴＶＰ１０６はその後、コンポーネントマネージャ１１８と通信して、プローブインターフェースに対するハンドルを取得する（ステップ２０４）。コンポーネントマネージャ１１８はその後、ＴＶＰ１０６へそのハンドルを送信し（ステップ２０６）、そのＴＶＰ１０６はその後、ＴＶＰプローブ１０４をデータベースに入れる（ステップ２０７）。その後ステップ２０８において、ＴＶＰ１０６はＰＣ１１０へプローブＩＤを返す。
【００３１】
その後ステップ２１０において、プローブがソフトウェア連鎖へ挿入されるかまたはそこから取り除かれるかということに関する命令を、ＰＣ１１０はＴＶＰ１０６へ送信する。ＴＶＰ１０６はその後、その命令を制御ソフトウェア１１６へ転送し、制御ソフトウェアはソフトウェア連鎖を再配列する（ステップ２１２）。制御ソフトウェア１１６はステップ２１４において、プローブがソフトウェア連鎖内にある（または取り除かれている）ことを確認する。その後ステップ２１６において、ＴＶＰ１０６は、プローブの配置（または取り除き）に関してＰＣ１１０と通信する。
【００３２】
本発明の動的プロービング技術はどんなテストシステムでも実施可能である。図３は、その動的プロービング技術を実施するためのテストシステム３００の一例を示す。テストシステム３００は、互いに通信しているテスタ３０２及びテスト中のデバイス３０４を含む。テスタ３０２は、多くの機能コンポーネントをもつ典型的なコンピュータであり、その機能コンポーネントには、ＣＰＵ３０６と、入力／出力（Ｉ／Ｏ）インターフェースユニット３０８と、記憶装置３１０とが含まれる。これらのコンポーネントはコンピュータ技術分野の一般的な技術者には良く知られており、ゆえにここでは簡単に説明するだけにする。ＣＰＵ３０６はテスタ３０２上での全部のソフトウェアプログラムの実行を対処し、そのプログラムには、オペレーティングシステムや、その上で動作するどんなソフトウェアでも含まれる。インターフェースユニット３０８はテスタ３０２をテスト中のデバイス３０４へインターフェースする役割を担い、また、それに接続されているどんな入力／出力デバイス（例えばキーボード、マウス、ディスプレイユニット、プリンタ等）に対しても同様である。テスタ３０２上で動作するオペレーションシステム及びソフトウェアの実行に必要となる場合があるどんなソフトウェアプログラム及び／またはデータに対してでも、一時記憶装置（例えばＲＡＭ）及び／または長期記憶装置（例えばハードドライブ）を、記憶装置３１０は提供する。
【００３３】
記憶装置３１０には、ソフトウェア開発ツール３１２を含む多くのソフトウェアアプリケーションが記憶される。ソフトウェア開発ツール３１２は、既存のソフトウェア開発ツールと同じ方法で動作し、多くの同じ特徴をもち、その既存のツールとしては、Ｔｅｘａｓ  Ｉｎｓｔｒｕｍｅｎｔｓ製Ｃｏｄｅ  Ｃｏｍｐｏｓｅｒ  ＳｔｕｄｉｏＴＭ及びＮａｔｉｏｎａｌ  Ｉｎｓｔｒｕｍｅｎｔｓ製ＬａｂＶＩＥＷＴＭ、または他の同様のソフトウェア開発ツールがある。しかし、この発明の実施形態に従って、ソフトウェア開発ツール３１２は、テスト及び検査プラットフォーム（ＴＶＰ）３１４をさらに含む。ＴＶＰ３１４は、ソフトウェア開発ツール３１２を使用して、テスト中のどんなソフトウェアの双方向プロービングでも制御することが可能であり、プローブ中のデータを分析可能である。具体的には、ユーザによって決められたとおりに、データを、テスト中の符号から獲得する、またはテスト中の符号へ注入する、またはその両方を行うことをＴＶＰ３１４はまた可能にする。取得されたデータに基づいて、ユーザがテストベクトルを生成することと、ユーザがテスト中の符号へテストベクトルを注入し返すこととを、プローブ制御及び分析モジュール３１４はまた可能にする。このことは、テスト中の符号の動作及び信頼性をユーザが監視及びテストすることより簡単に、より使いやすくする。
【００３４】
本実施形態において、動的プローブ命令を含むテスト中の符号は、別々のユニット、すなわちテスタ３０２と通信しているテスト中のデバイス３０４、で実行される。テスト中のデバイス３０４は、テスタ３０２と同様に、多くの機能コンポーネントをもつ典型的なコンピュータであり、その機能コンポーネントには、ＣＰＵ３１６と、入力／出力インターフェースユニット３１８と、記憶装置３２０とが含まれる。テスト中のデバイス３０４のコンポーネントは、テスタ３０２におけるその対応部分と同様の機能をもち、従ってここでは説明しないことにする。主要な点は、プローブされたソース符号と動的プローブ命令とを含むテスト中の符号３２２が、テスタ３０２とは別に記憶され、実行されるということである（プローブ命令の例としての、上のソース符号のブロックの一例を見よ）。
【００３５】
上で説明した方法は、プローブがリアルタイムで挿入されることを可能にし、そのことは、必要なときにプローブを挿入するという柔軟性を、テストを行う者に与える。また、プローブは取り除き可能であるため、アクティブでないプローブを取り除くことによって、または要求されるテストをプローブが実行してしまった後、メモリは節約される。
【００３６】
含む／含んでいる（ｃｏｍｐｒｉｓｅｓ／ｃｏｍｐｒｉｓｉｎｇ）という用語がこの明細書において使用されるときには、それは、述べられた特徴、整数、ステップ、またはコンポーネントの存在を特定するためにとられるが、１つまたはそれ以上の他の特徴、整数、ステップ、コンポーネント、またはそれらの組み合わせの存在または追加を除外していないということが強調されるべきである。
【００３７】
本発明の具体的な実施形態及び応用が説明され、記述されてきたが、この発明は、ここで開示された精密な構造及び組成に限定されず、また、添付の特許請求の範囲の中で定義されるこの発明の範囲を逸脱することなく、修正及び変更が前述のものについて行われることが可能であることが了解されるであろう。
【図面の簡単な説明】
【００３８】
【図１ａ】図１ａは、この発明の実施形態に従った、ソフトウェアテスティング環境の一例を示す。
【図１ｂ】図１ｂは、図１ａのソフトウェアモジュールの間に挿入される動的プローブの図を示す。
【図１ｃ】図１ｃは、動的プローブが間に挿入されていない図１ａのソフトウェアモジュールの図を示す。
【図２】図２は、この発明の実施形態に従って、動的ソフトウェアプローブを実施する方法を示す。
【図３】図３は、この発明の実施形態に従った双方向ソフトウェアプローブが実施可能であるシステムの一例を示す。
【図１ａ】
2009509258.tif 000003
【図１ｂ】
2009509258.tif 000004
【図１ｃ】
2009509258.tif 000005
【図２】
2009509258.tif 000006
【図３】
2009509258.tif 000007
2009509258.tif 000008
【手続補正書】
【提出日】平成19年8月21日(2007.8.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のソフトウェアモジュールを内に有するソフトウェアをテストする方法であって、
前記ソフトウェアによって使用される前記複数のソフトウェアモジュールを含む前記ソフトウェアを実行することと、
前記複数のソフトウェアモジュールの内、互いに直接リンクする２つを識別することと、
動的テスト及び検査プラットフォーム（ＴＶＰ）データベースを使用して、動的プローブを作成することと、
前記ソフトウェアが実行されている間に、前記２つの識別されたソフトウェアモジュールの間に前記動的プローブを挿入することと、
前記２つの識別されたソフトウェアモジュールの間で交換されているデータを、前記動的プローブによって前記ＴＶＰへ出力し、それによって前記ソフトウェアからデータを抽出することと
を含む方法。
【請求項２】
前記ソフトウェアが実行されている間に、前記２つの識別されたソフトウェアモジュールの間の前記動的プローブを取り除くことをさらに含む、請求項１による方法。
【請求項３】
前記動的プローブは固有のプローブ識別子を含む、請求項１による方法。
【請求項４】
前記固有のプローブ識別子は、前記ソフトウェアのテストの前に前記動的プローブへ割り当てられ、前記動的ＴＶＰデータベースに記憶される、請求項３による方法。
【請求項５】
前記固有のプローブ識別子は前記ソフトウェアのテスト中に作成される、請求項３による方法。
【請求項６】
前記固有のプローブ識別子は前記動的ＴＶＰデータベースに記憶される、請求項３による方法。
【請求項７】
前記動的プローブによって、前記２つの識別されたソフトウェアモジュールの間で交換されるデータを、前記動的ＴＶＰからのデータと置き換えて、それによって前記ソフトウェアへデータを注入することさらに含む、請求項１による方法。
【請求項８】
前記動的プローブは、前記動的プローブがデータの長さ及び前記データに対するポインタのみを使用して、ソフトウェアモジュールから前記データを抽出することと、ソフトウェアモジュールへ前記データを注入することとを可能にする汎用インターフェースを含む、請求項１による方法。
【請求項９】
前記ソフトウェアが実行されている間に、前記複数のソフトウェアモジュールをともにリンクすることをさらに含む、請求項１による方法。
【請求項１０】
ソフトウェアをテストするためのシステムであって、
テスト中のソフトウェアと、前記ソフトウェアは複数のソフトウェアモジュールを内に有することと、
前記テスト中のソフトウェアに結合される少なくとも１つのアプリケーションと、
前記少なくとも１つのアプリケーションを制御する動的テスト及び検査プラットフォーム（ＴＶＰ）と、前記動的ＴＶＰは、
前記少なくとも１つのアプリケーションに、
前記テスト中のソフトウェアによって使用されるいずれかのソフトウェアモジュールを含む前記テスト中のソフトウェアを実行させ、
前記テスト中のソフトウェアによって使用される前記ソフトウェアモジュールの内、互いに直接通信している２つを識別させ、
前記テスト中のソフトウェアが実行されている間に、前記２つの識別されたソフトウェアモジュールの間に動的プローブを挿入させ、
前記動的プローブによって、前記２つの識別されたソフトウェアモジュールの間で交換されているデータを出力し、それによって前記テスト中のソフトウェアからデータを抽出させる
ように構成されることと
を含む、前記システム。
【請求項１１】
前記動的ＴＶＰは、さらに、前記テスト中のソフトウェアが実行されている間に、前記２つの識別されたソフトウェアモジュールの間から前記動的プローブを、前記少なくとも１つのアプリケーションに取り除かせるように構成される、請求項１０によるシステム。
【請求項１２】
前記動的ＴＶＰは、さらに、前記動的プローブによって、前記２つの識別されたソフトウェアモジュールの間で交換されているデータを、前記少なくとも１つのアプリケーションに配置させ、それによって前記テスト中のソフトウェアへデータを注入させるように構成される、請求項１０によるシステム。
【請求項１３】
前記動的ＴＶＰユニットは、前記少なくとも１つのアプリケーションを制御するためのテスト及び検証プラットフォームを含む、請求項１０によるシステム。
【請求項１４】
前記少なくとも１つのアプリケーションはＰＣ上で動作する、請求項１０によるシステム。
【請求項１５】
複数のソフトウェアモジュールを内に有するソフトウェアをテストする方法であって、
前記ソフトウェアが実行されている間に、前記ソフトウェアのためのプローブを要求することと、
前記プローブに対するハンドルをコンポーネントマネージャから取得することと、その場合、前記コンポーネントマネージャは、前記ソフトウェアモジュールに結合されて、前記ソフトウェアモジュールを管理するよう適応されることと、
テストされる前記複数のソフトウェアモジュールの内２つを識別することと、前記２つの識別されたソフトウェアは互いに直接リンクすることと、
前記２つの識別されたソフトウェアモジュールの間に前記プローブの前記ハンドルを挿入することと
を含む方法。
【請求項１６】
前記動的プローブによって前記ソフトウェアから抽出されるデータを監視することをさらに含む、請求項１５による方法。
【請求項１７】
前記ソフトウェアが実行されている間に、前記２つの識別されたソフトウェアモジュールの間から、前記動的プローブの前記ハンドルを取り除くことをさらに含む、請求項１５による方法。
【請求項１８】
前記ソフトウェアが実行されている間に、動的ＴＶＰデータベースへの前記動的プローブの登録を取り消すことをさらに含む、請求項１５による方法。
【請求項１９】
前記２つのソフトウェアモジュールは、前記ソフトウェアが実行されている間、一緒にリンクされる、請求項１５による方法。
【請求項２０】
複数のデータ変数及び関数独立変数を内に有するソフトウェアをテストするための装置であって、
中央処理装置と、
前記中央処理装置に接続される記憶装置と、前記記憶装置は、
前記中央処理装置に、
前記ソフトウェアを実行させ、
前記ソフトウェアによって使用される少なくとも１つの前記変数または独立変数に対するアドレスロケーションを識別させ、
動的テスト及び検査プラットフォーム（ＴＶＰ）データベースによって、動的プローブを作成させ、
前記アドレスロケーションに前記動的プローブを動的に挿入させ、
前記アドレスロケーションに記憶されるいずれかのデータを、前記中央処理装置へ出力し、それによって前記データを監視させる
命令をするためのコンピュータ読み取り可能命令を記憶することと
を含む前記装置。
【請求項２１】
前記記憶装置は、前記中央処理装置に、前記中央処理装置から前記アドレスロケーションへデータを入力し、それによって前記アドレスロケーションに以前記憶されたいずれかのデータを再配置するよう命令するためのコンピュータ読み取り可能命令をさらに記憶する、請求項２０の装置。
【請求項２２】
リンクしてソフトウェア連鎖をなす複数のソフトウェアモジュールと、
前記ソフトウェアモジュールに結合され、前記ソフトウェアモジュールを管理するためのコンポーネントマネージャと、
動的プローブを作成するよう適応される動的テスト及び検査プラットフォーム（ＴＶＰ）データベースと
を含む、テスト中のデバイスであって、
その場合、前記ソフトウェアモジュールは、前記ソフトウェアの動作中に前記複数のソフトウェアモジュールの内２つの間に動的プローブが挿入されることが可能であるように、使用中に分離され、再編成されるように適応される。
【請求項２３】
前記動的プローブはまた、前記ソフトウェアの動作中に、前記複数のソフトウェアモジュールの内２つの間から取り除かれることが可能である、請求項２２のテスト中のデバイス。
【請求項２４】
複数のソフトウェアモジュールを内に有するソフトウェアをテストする方法であって、
動的テスト及び検査プラットフォーム（ＴＶＰ）データベースによって、動的プローブを作成することと、
プローブ識別子を受信することと、前記プローブ識別子は、前記動的プローブを識別することと、
前記動的プローブを前記複数のソフトウェアモジュールに挿入する、または前記複数のソフトウェアモジュール内の前記動的プローブを取り除くよう、前記ＴＶＰを命令することと、
前記動的プローブは挿入されているまたは取り除かれているという確認を受信することと
を含む方法。
【請求項２５】
複数のソフトウェアモジュールを内に有するソフトウェアをテストする方法であって、
動的テスト及び検査プラットフォーム（ＴＶＰ）データベースによって、動的プローブを作成することと、
動的プローブに対するハンドルを取得することと、
プローブ識別子を前記ＴＶＰデータベースに入れることと、
前記プローブ識別子をパーソナルコンピュータへ返すことと、
前記プローブを前記複数のソフトウェアモジュールに挿入する、または前記複数のソフトウェアモジュール内の前記動的プローブを取り除く命令を受信することと、
前記複数のソフトウェアモジュールを再配列することと、
前記複数のソフトウェアモジュール内の前記動的プローブの状態を確認することと、
前記パーソナルコンピュータへの前記動的プローブの配置を確認するメッセージを送信することと
を含む方法。
【国際調査報告】
2009509258.tif 000009
2009509258.tif 000010
2009509258.tif 000011