JP2009509258A - ソフトウェアのテスト及び監視のためのデータの注入及び抽出に対する動的プローブの方法及びシステム - Google Patents

ソフトウェアのテスト及び監視のためのデータの注入及び抽出に対する動的プローブの方法及びシステム Download PDF

Info

Publication number
JP2009509258A
JP2009509258A JP2008531706A JP2008531706A JP2009509258A JP 2009509258 A JP2009509258 A JP 2009509258A JP 2008531706 A JP2008531706 A JP 2008531706A JP 2008531706 A JP2008531706 A JP 2008531706A JP 2009509258 A JP2009509258 A JP 2009509258A
Authority
JP
Japan
Prior art keywords
software
probe
software modules
data
modules
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2008531706A
Other languages
English (en)
Inventor
ベンクトション,ヨナス
ルーセンベリ,ミハエル
Original Assignee
テレフオンアクチーボラゲット エル エム エリクソン(パブル)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by テレフオンアクチーボラゲット エル エム エリクソン(パブル) filed Critical テレフオンアクチーボラゲット エル エム エリクソン(パブル)
Publication of JP2009509258A publication Critical patent/JP2009509258A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

ソフトウェアの動的プロービングのための方法及びシステムが開示される。動的プローブは、ランタイム中に、テスト中のソフトウェアへ挿入される(またはそこから取り除かれる)ことが可能である。ユーザが、新しいプローブを挿入するためにソフトウェアを再コンパイルするのではなく、必要に応じてプローブを挿入すること及び取り出すことを、そのプローブのこの動的な挿入(及び取り出し)は可能とする。また、必要である場合のみプローブを追加することと、もはや使用されていないプローブを取り除くこととをユーザにとって可能とすることによって、プローブのその動的な挿入(及び取り出し)はメモリの空きを節約する。
【選択図】図3

Description

この発明はソフトウェアのテストに関し、特に、ソフトウェアの動的プロービングに関する。
ソフトウェア開発者の間で最も重要な要求の1つは、ソフトウェアが信頼性をもつということである。信頼性とは、特定の環境において特定の時間、不具合なしで動作するというソフトウェアの能力のことを言う。十分高レベルな信頼性を保証するためには、ソフトウェアはリリース前に徹底的にテストされ、デバグされなければならない。ソフトウェアプログラムを構成する機能コンポーネント(例えば機能コールやサブルーチン)が個別にテストされるとともに、通常、全ソフトウェアプログラムは全体としてまとめてテストされる。典型的に、テストベクトルが生成され、それは、ソフトウェア及び/または1つまたはそれ以上の機能コンポーネントによって要求される変数となる一連の値を含む。変数値は選択されると、ソフトウェアが実行されようとする様々な種類の使用条件及び環境を示す。テストベクトルは、その後ソフトウェア及び/または1つまたはそれ以上の機能コンポーネントへ適用され、変数値は観測され記録される。
しばしば行われるある種のテストは回帰分析と呼ばれ、または時に検証テストとも呼ばれる。回帰分析はソフトウェアの選択的な再テストに関し、その選択的な再テストとは、周知の問題を解決するために修正されてきたものである。確認された問題が解決されていることと、その修復の結果としてそれ以前に動作した他の機能コンポーネントが1つも故障していないことを保証するために、その選択的な再テストは行われる。この種のテストは基本的に品質制御測定であり、修正された符号が依然としてその特定の要求に応じることと、修正されていない符号は修復活動の影響を受けないこととを保証する。
回帰分析と一般的なソフトウェアテストとの重要な特徴が、テストベクトルから得られる変数値を観測する能力である。ソフトウェア及び/またはその機能コンポーネントの変数値を観測する初期の試みは、ソース符号自体においてブレークポイント及び他のトラップを手動設定することに関した。さらに最近では、Texas Instruments製Code Composer StudioTM及びNational Instruments製LabVIEWTMのようなソフトウェア開発ツールが、テスト中の符号に挿入可能であるソフトウェアプローブを含む。ソフトウェアが実行されている間リアルタイムで、テスト中の符号内の変数が観測されることを、そのソフトウェアプローブは可能にする。しかし、このような後者の解決法は、テスト中の符号から変数値を取り出すことにのみ基づく(例えばそれらはそのようにして分析される場合がある)。それらは、ソフトウェアの実行中に変数値を変化させない。言い換えると、これらの既存のソフトウェアプローブは、片道のみすなわち一方向プローブであり、データには、テスト中の符号からテストシステムへと流れることのみ許される。データ送信方向が反転し、データがテストシステムからテスト中の符号へ流れることを、それらは許可しない。
他のプローブは双方向性をもち、そのプローブは、データがテスト中の符号からテストシステムへ流れること及びその逆流を可能とする。双方向プローブの例は、2003年5月1日出願の米国特許出願公開第10/428733、発明の名称「BI‐DIRECTIONAL PROBING OF SOFTWARE(ソフトウェアの双方向プロービング)」において見出されることが可能であり、これは参考文献としてここに組み込まれる。
既存の解決法において、一方向及び双方向プローブの両方は、静的モードにおいて動作し、そのことは、テスト中のソフトウェアのコンパイルタイム中にプローブが決定される必要があることを意味する。もしプローブがコンパイルタイム中に導入されなければ、プローブを導入する唯一の方法は、望ましくはないが、テスト中のソフトウェアを再構築することである。また、たとえプローブがアクティブでない間であっても、それはなお少量のメモリを消費し、その少量のメモリも、システム全体となるとかなり大量のメモリになる。
従って、コンパイルタイム中ではなくランタイム中に、テスト中のソフトウェアにインストール可能であるプローブであって、そのプローブは必要に応じて導入され除外されることが可能であり、インストールされたプローブのみがメモリを消費する、そのようなプローブが必要なのである。
複数のソフトウェアモジュールを内に有するソフトウェアをテストする方法が提供される。その方法は、ソフトウェアを実行することと、ソフトウェアによって使用される複数のソフトウェアモジュールを含むことと、その複数のソフトウェアモジュールの内で、互いに直接リンクする2つを識別することとを含む。ソフトウェア実行中に、その2つの識別されたソフトウェアモジュールの間へ、プローブが挿入される。そのプローブは、その2つの識別されたソフトウェアモジュールの間で交換されているデータをテストシステムへ出力し、それによってソフトウェアからデータを抽出する。
本発明の他の実施形態に従って、ソフトウェアをテストするためのシステムが提供される。そのシステムは、テスト中のソフトウェアと、複数のソフトウェアモジュールを内に有するソフトウェアとを含む。少なくとも1つのアプリケーションがそのテスト中のソフトウェアに結合される。テスタユニットがその少なくとも1つのアプリケーションを制御し、そのテスタユニットは、テスト中のソフトウェアに使用されるどんなソフトウェアモジュールをも含むそのテスト中のソフトウェアを、その少なくとも1つのアプリケーションに実行させるよう構成される。また、テスト中のソフトウェアによって使用され、直接互いと通信中である2つのソフトウェアモジュールを識別することと、テスト中のソフトウェアが実行されている間に、その2つの識別されたソフトウェアモジュールの間にプローブを挿入することと、その2つの識別されたソフトウェアモジュールの間で交換されているデータをそのプローブによって出力し、それによってテスト中のソフトウェアからデータを抽出することとを行うようにも、そのテスタユニットは構成される。
なお本実験の別の実施形態に従って、複数のソフトウェアモジュールを内に有するソフトウェアをテストするための方法が提供される。その方法は、そのソフトウェア実行中にそのソフトウェアのためのプローブを要求することと、そのプローブに対するハンドルをコンポーネントマネージャから取得することとを含む。テストされる複数のソフトウェアモジュールの内2つが識別され、その識別された2つのソフトウェアモジュールは互いに直接リンクされている。プローブのハンドルは、その識別された2つのソフトウェアモジュールの間に挿入される。
本発明の別の実施形態に従って、複数のデータ変数及び関数独立変数を内に有するソフトウェアをテストするための装置が提供される。その装置は、中央処理装置と、その中央処理装置に接続される記憶装置とを含む。その中央処理装置を命令し、ソフトウェアの実行と、そのソフトウェアによって使用される少なくとも1つの変数または独立関数に対するアドレスロケーションの識別とを行うためのコンピュータ読み取り可能命令を、その記憶装置は記憶する。その中央処理装置を命令し、プローブをそのアドレスロケーションへ動的に挿入させ、アドレスロケーションに記憶されるどんなデータをもその中央処理装置へ出力させて、それによってそのデータを監視するためのコンピュータ読み取り可能命令を、その記憶装置はまた記憶する。
なお本発明の別の実施形態に従って、テスト中のデバイスが提供される。そのテスト中のデバイスは、リンクしてソフトウェア連鎖をなす複数のソフトウェアモジュールと、そのソフトウェアモジュールに結合され、そのソフトウェアモジュールを管理するコンポーネントマネージャとを含む。そのソフトウェアモジュールは、使用中に分離及び再編成されるよう適応され、プローブはソフトウェア動作中にその複数のソフトウェアモジュールの内の2つの間に挿入可能である。
本発明の別の実施形態に従って、複数のソフトウェアモジュールを内に有するソフトウェアをテストする方法が提供される。その方法は、ソフトウェアプローブを作成することと、プローブ識別子を受信することとを含み、そのプローブ識別子はそのソフトウェアプローブを識別する。その複数のソフトウェアモジュール内にそのソフトウェアプローブを挿入するまたはそこから取り除くよう、テスタは命令される。また、そのソフトウェアプローブが挿入されていること、または取り出されていることの確認が受信される。
なお別の実施形態に従って、複数のソフトウェアモジュールを内に有するソフトウェアをテストする方法が提供される。その方法は、プローブに対するハンドルを取得することと、プローブ識別子をプローブデータベースに入れることとを含む。そのプローブ識別子はパーソナルコンピュータへ返される。その複数のソフトウェアモジュール内へのプローブ挿入または取り出し命令が受信され、その複数のソフトウェアモジュールは再配列される。その複数のソフトウェアモジュール内のそのプローブの状態が確認され、そのプローブの配置を確認するメッセージが、パーソナルコンピュータへ送信される。
添付の図と併せて、以下の詳細な説明を参照することによって、この発明のより良い理解を得ることが可能である。
上で言及したように、既存の一方向及び双方向プローブは柔軟性に欠け、テスト中のソフトウェア(software under test:SUT)のコンパイルタイム中にプローブが決定される必要がある。さもなければ、プローブを導入する唯一の方法は、SUT全体を再構築することである。また、たとえアクティブにされていないとしても、各プローブは少量のメモリを消費し、従って、多くのプローブが使用される必要がある場合を想定すると、それはかなりの量になる可能性がある。
この発明の実施形態は、動的プローブを使用してソフトウェアをテストするための方法及びシステムを提供する。この発明の動的プローブは、ソフトウェアのコンパイル中に挿入される必要はなく、代わりにソフトウェアのランタイム中に挿入されることが可能である。ランタイム中にプローブをSUTへ導入することは、いくつかの利点があり、その利点としては、実際に必要とされるプローブのみにその挿入を制限し、それによって貴重なメモリ及びCPUサイクルの使用を減らすことが含まれる。さらに、通信の連鎖(communication chain:COM chain)があるSUT内のどこにでも、プローブを導入することが本質的に可能である。このように動的プローブは、SUTのテスト及びデバグの両方における柔軟性を大きく改善する。さらに、そのプローブは双方向性をもち、そのことは、データがSUTからテストシステムへ流れること及びその逆流の両方を、それが可能とすることを意味する。
好ましい実施形態において、プローブされているソフトウェアはまた動的であり、それはランタイム中に、すでに存在する他のソフトウェアモジュールにリンクされる場合もある。その動的なリンクは、ランタイム中にソフトウェアモジュールの連鎖全体が一緒にリンクされるまたは「構築される(built)」ことを可能とする。
プラットフォーム内部では、リンキング機構が、ソフトウェアモジュールのリンクを行うために使用される。他の同様なリンキング機構は、例えばマイクロソフト(Microsoft)COM及び他社に属する(proprietary)COMシステムを含む。これらのリンキング機構は、実際のリンクを行うのにある種の制御ソフトウェアを使用する一方で、リンクされる特定のソフトウェアモジュール及びそれらがリンクする順番は、プラットフォームの最上部で動作するカスタマーアプリケーションによって支配される。ソフトウェアモジュールが連鎖する方法をユーザが変更したい場合、彼または彼女は、プラットフォームより上にあるアプリケーションを介して、変更しなければならない。従って、制御ソフトウェアは、プラットフォームを経由してカスタマーアプリケーションへ、その機能をエクスポートしなければならない。
この発明の実施形態に従って、データストリームで動作するソフトウェアモジュールの連鎖は「ばらばらにされ(broken up)」、動的テスト及び検証プラットフォーム(test and verification platform:TVP)プローブがそれらの間に導入されることが可能である。ここで使用されるように、「リンク(link)」及び「連鎖(chain)」という用語は、ソフトウェアモジュールがデータを交換する、またさもなければ互いに通信する能力のことを言う。動的プローブを作成するために、パーソナルコンピュータ(personal computer:PC)上のカスタマーアプリケーションは、TVPデータベースを用いてその動的プローブを作成し、そのTVPデータベースは固有のIDを返す。その後TVPデータベースはコンポーネントマネージャに、動的プローブに対するハンドルまたはリンクを要求する。その後、動的プローブが望ましい場所で連鎖の一部となるように、ソフトウェアモジュール連鎖を再配列するように制御ソフトウェアに命令するよう、カスタマーPCアプリケーションはTVPに命令する。ひとたび配置されると、その動的プローブはテストシステムによって、上で言及した静的プローブと同じ方法で対処される。その後、テストシステムのユーザは、新しい動的プローブにデータを注入する、またはそこからプローブデータを抽出することが可能である。もし動的プローブが取り除かれることになれば、上述の手順を逆に行う。
いくつかの実施形態において、ソフトウェアモジュールは、動的プローブにとって既知のインターフェースをもつ場合がある。従って、以下でさらに説明するように、このようなソフトウェアモジュールの間に動的プローブを導入するために、動的プローブのインターフェースは汎用インターフェースとなるよう設計されるのが好ましい。データの解釈はその後、PC上で動作しているカスタマーアプリケーションに委ねられる。
まずは図1aを参照すると、本発明の動的プロービング技術が使用可能であるソフトウェアテストシステム100が示されている。ソフトウェアテストシステム100は、少なくとも1つのソフトウェア動的プローブ104を介してSUT102に接続されている。例えばPID1、PID2、PID3等、その固有のIDによって、その少なくとも1つのソフトウェア動的プローブ104は識別されることが可能である。プローブIDの生成については、図2に関連して以下でより詳細に説明することにする。
動的プローブ104は、テスト及び検査プラットフォーム(TVP)106(他社に属する(proprietary)TVP、または当業者に既知の標準的なTVPである場合がある)に接続される。言い換えると、限定はされないが、デバグマルチプレクサ(debug mux:デバグmux)108のような他のテストモジュールに、TVP106は結合される。デバグmux108はPC110から全部の通信を受信し、TVP106へその通信を送信する。PC110は全部のテストを制御する。
SUT102は多くの個別のソフトウェアモジュールを含み、ソフトウェアモジュール102a、102b、102c、102dの4つが図1に示されている。限定はされないが、エンコーダ、イコライザ、汎用フィルタ、そしてその類似のもののような複数のデータ変数及び関数独立変数を、これらのソフトウェアモジュール102a、102b、102c、102dは含む。ソフトウェアモジュール102a、102b、102c、102dは互いに動的にリンク可能でなければならない。言い換えると、ソフトウェアモジュール102a、102b、102c、102dはコンパイルタイム中に操作されることが可能である。このことは、ソフトウェアモジュール102a、102b、102c、102dの連鎖がランタイム中にばらばらにされることを可能にする。
動的プローブ104は、これらのソフトウェアモジュール102a、102b、102c、102dのどの間にでも動的に配置可能である。動的プローブ104を動的に配置するということは、ソフトウェア102のコンパイルタイム中ではなくランタイム中に、ソフトウェアモジュール102a、102b、102c、102dの間へ、動的プローブ104が挿入可能であることを意味する。動的プローブ104はまたランタイム中に取り除かれることが可能である。ランタイム中の動的プローブ104の配置及び取り除きを可能にすることによって、余分なプローブが必要なくなり、メモリの空きが節約される。
いくつかの実施形態において、動的プローブ104は、複数のパラメータをもつインターフェースを用いて、ソフトウェアモジュールの間に挿入されることが可能である。これらのモジュールに対し、動的プローブ104は汎用インターフェースをもつのが好ましい。汎用インターフェースとは、2つのパラメータ、すなわちデータの長さ及びデータに対するポインタのみを必要とするものである。ビットレートやサンプリング周波数のような他のパラメータがデータ内に隠されている場合がある。そのプローブは、これらの他の、より具体的なパラメータをもつ必要がない。
汎用インターフェースは、とりわけ、データがソフトウェアモジュール102a、102b、102c、102dから抽出される、またはそれらへ注入されることを可能にするよう設計されるのが好ましい。ソフトウェアモジュール102a、102b、102c、102dから抽出されるプローブIDとデータに対するポインタとを、汎用インターフェースは含むのがまた好ましい。プローブ104の作成及び削除を容易にする方法を、汎用インターフェースは含むのがさらに好ましい。
ここで図1bを参照すると、ソフトウェア102a及び102bの間に挿入される動的プローブ104の説明図が提供されている。示されるとおり、そのプローブ104は、2つのソフトウェアモジュール102a及び102bの間に挿入され、TVP106と通信する。図1aと併せて上で説明したように、TVP106はまたデバグMUX108に結合される。デバグMUX108はまたPC110に結合される。
図1cは、プローブ104が取り除かれた状況の、ソフトウェアモジュール102a、102bを示している。示されるとおり、ソフトウェアモジュール102a、102bは互いに結合される。
ここで図2を参照して、この発明のある実施形態に従って、動的プローブを登録するための方法を説明することにする。示されるとおり、PC110はTVP106を用いてプローブを作成する(ステップ202)。TVP106はその後、コンポーネントマネージャ118と通信して、プローブインターフェースに対するハンドルを取得する(ステップ204)。コンポーネントマネージャ118はその後、TVP106へそのハンドルを送信し(ステップ206)、そのTVP106はその後、TVPプローブ104をデータベースに入れる(ステップ207)。その後ステップ208において、TVP106はPC110へプローブIDを返す。
その後ステップ210において、プローブがソフトウェア連鎖へ挿入されるかまたはそこから取り除かれるかということに関する命令を、PC110はTVP106へ送信する。TVP106はその後、その命令を制御ソフトウェア116へ転送し、制御ソフトウェアはソフトウェア連鎖を再配列する(ステップ212)。制御ソフトウェア116はステップ214において、プローブがソフトウェア連鎖内にある(または取り除かれている)ことを確認する。その後ステップ216において、TVP106は、プローブの配置(または取り除き)に関してPC110と通信する。
本発明の動的プロービング技術はどんなテストシステムでも実施可能である。図3は、その動的プロービング技術を実施するためのテストシステム300の一例を示す。テストシステム300は、互いに通信しているテスタ302及びテスト中のデバイス304を含む。テスタ302は、多くの機能コンポーネントをもつ典型的なコンピュータであり、その機能コンポーネントには、CPU306と、入力/出力(I/O)インターフェースユニット308と、記憶装置310とが含まれる。これらのコンポーネントはコンピュータ技術分野の一般的な技術者には良く知られており、ゆえにここでは簡単に説明するだけにする。CPU306はテスタ302上での全部のソフトウェアプログラムの実行を対処し、そのプログラムには、オペレーティングシステムや、その上で動作するどんなソフトウェアでも含まれる。インターフェースユニット308はテスタ302をテスト中のデバイス304へインターフェースする役割を担い、また、それに接続されているどんな入力/出力デバイス(例えばキーボード、マウス、ディスプレイユニット、プリンタ等)に対しても同様である。テスタ302上で動作するオペレーションシステム及びソフトウェアの実行に必要となる場合があるどんなソフトウェアプログラム及び/またはデータに対してでも、一時記憶装置(例えばRAM)及び/または長期記憶装置(例えばハードドライブ)を、記憶装置310は提供する。
記憶装置310には、ソフトウェア開発ツール312を含む多くのソフトウェアアプリケーションが記憶される。ソフトウェア開発ツール312は、既存のソフトウェア開発ツールと同じ方法で動作し、多くの同じ特徴をもち、その既存のツールとしては、Texas Instruments製Code Composer StudioTM及びNational Instruments製LabVIEWTM、または他の同様のソフトウェア開発ツールがある。しかし、この発明の実施形態に従って、ソフトウェア開発ツール312は、テスト及び検査プラットフォーム(TVP)314をさらに含む。TVP314は、ソフトウェア開発ツール312を使用して、テスト中のどんなソフトウェアの双方向プロービングでも制御することが可能であり、プローブ中のデータを分析可能である。具体的には、ユーザによって決められたとおりに、データを、テスト中の符号から獲得する、またはテスト中の符号へ注入する、またはその両方を行うことをTVP314はまた可能にする。取得されたデータに基づいて、ユーザがテストベクトルを生成することと、ユーザがテスト中の符号へテストベクトルを注入し返すこととを、プローブ制御及び分析モジュール314はまた可能にする。このことは、テスト中の符号の動作及び信頼性をユーザが監視及びテストすることより簡単に、より使いやすくする。
本実施形態において、動的プローブ命令を含むテスト中の符号は、別々のユニット、すなわちテスタ302と通信しているテスト中のデバイス304、で実行される。テスト中のデバイス304は、テスタ302と同様に、多くの機能コンポーネントをもつ典型的なコンピュータであり、その機能コンポーネントには、CPU316と、入力/出力インターフェースユニット318と、記憶装置320とが含まれる。テスト中のデバイス304のコンポーネントは、テスタ302におけるその対応部分と同様の機能をもち、従ってここでは説明しないことにする。主要な点は、プローブされたソース符号と動的プローブ命令とを含むテスト中の符号322が、テスタ302とは別に記憶され、実行されるということである(プローブ命令の例としての、上のソース符号のブロックの一例を見よ)。
上で説明した方法は、プローブがリアルタイムで挿入されることを可能にし、そのことは、必要なときにプローブを挿入するという柔軟性を、テストを行う者に与える。また、プローブは取り除き可能であるため、アクティブでないプローブを取り除くことによって、または要求されるテストをプローブが実行してしまった後、メモリは節約される。
含む/含んでいる(comprises/comprising)という用語がこの明細書において使用されるときには、それは、述べられた特徴、整数、ステップ、またはコンポーネントの存在を特定するためにとられるが、1つまたはそれ以上の他の特徴、整数、ステップ、コンポーネント、またはそれらの組み合わせの存在または追加を除外していないということが強調されるべきである。
本発明の具体的な実施形態及び応用が説明され、記述されてきたが、この発明は、ここで開示された精密な構造及び組成に限定されず、また、添付の特許請求の範囲の中で定義されるこの発明の範囲を逸脱することなく、修正及び変更が前述のものについて行われることが可能であることが了解されるであろう。
図1aは、この発明の実施形態に従った、ソフトウェアテスティング環境の一例を示す。 図1bは、図1aのソフトウェアモジュールの間に挿入される動的プローブの図を示す。 図1cは、動的プローブが間に挿入されていない図1aのソフトウェアモジュールの図を示す。 図2は、この発明の実施形態に従って、動的ソフトウェアプローブを実施する方法を示す。 図3は、この発明の実施形態に従った双方向ソフトウェアプローブが実施可能であるシステムの一例を示す。

Claims (25)

  1. 複数のソフトウェアモジュールを内に有するソフトウェアをテストする方法であって、
    前記ソフトウェアによって使用される前記複数のソフトウェアモジュールを含む前記ソフトウェアを実行することと、
    前記複数のソフトウェアモジュールの内、互いに直接リンクする2つを識別することと、
    前記ソフトウェアが実行されている間に、前記2つの識別されたソフトウェアモジュールの間にプローブを挿入することと、
    前記2つの識別されたソフトウェアモジュールの間で交換されているデータを、前記プローブによってテストシステムへ出力し、それによって前記ソフトウェアからデータを抽出することと
    を含む方法。
  2. 前記ソフトウェアが実行されている間に、前記2つの識別されたソフトウェアモジュールの間の前記プローブを取り除くことをさらに含む、請求項1による方法。
  3. 前記プローブは固有のプローブ識別子を含む、請求項1による方法。
  4. 前記固有のプローブ識別子は、前記ソフトウェアのテストの前に前記プローブへ割り当てられ、プローブデータベースに記憶される、請求項3による方法。
  5. 前記固有のプローブ識別子は前記ソフトウェアのテスト中に作成される、請求項3による方法。
  6. 前記固有のプローブ識別子はプローブデータベースに記憶される、請求項3による方法。
  7. 前記プローブによって、前記2つの識別されたソフトウェアモジュールの間で交換されるデータを、前記テストシステムからのデータと置き換えて、それによって前記ソフトウェアへデータを注入することさらに含む、請求項1による方法。
  8. 前記プローブは、前記プローブがデータの長さ及び前記データに対するポインタのみを使用して、ソフトウェアモジュールから前記データを抽出することと、ソフトウェアモジュールへ前記データを注入することとを可能にする汎用インターフェースを含む、請求項1による方法。
  9. 前記ソフトウェアが実行されている間に、前記複数のソフトウェアモジュールをともにリンクすることをさらに含む、請求項1による方法。
  10. ソフトウェアをテストするためのシステムであって、
    テスト中のソフトウェアと、前記ソフトウェアは複数のソフトウェアモジュールを内に有することと、
    前記テスト中のソフトウェアに結合される少なくとも1つのアプリケーションと、
    前記少なくとも1つのアプリケーションを制御するテスタユニットと、前記テスタユニットは、
    前記少なくとも1つのアプリケーションに、
    前記テスト中のソフトウェアによって使用されるいずれかのソフトウェアモジュールを含む前記テスト中のソフトウェアを実行させ、
    前記テスト中のソフトウェアによって使用される前記ソフトウェアモジュールの内、互いに直接通信している2つを識別させ、
    前記テスト中のソフトウェアが実行されている間に、前記2つの識別されたソフトウェアモジュールの間にプローブを挿入させ、
    前記プローブによって、前記2つの識別されたソフトウェアモジュールの間で交換されているデータを出力し、それによって前記テスト中のソフトウェアからデータを抽出させる
    ように構成されることと
    を含む、前記システム。
  11. 前記テスタは、さらに、前記テスト中のソフトウェアが実行されている間に、前記2つの識別されたソフトウェアモジュールの間から前記プローブを、前記少なくとも1つのアプリケーションに取り除かせるように構成される、請求項10によるシステム。
  12. 前記テスタは、さらに、前記プローブによって、前記2つの識別されたソフトウェアモジュールの間で交換されているデータを、前記少なくとも1つのアプリケーションに配置させ、それによって前記テスト中のソフトウェアへデータを注入させるように構成される、請求項10によるシステム。
  13. 前記テスタユニットは、前記少なくとも1つのアプリケーションを制御するためのテスト及び検証プラットフォームを含む、請求項10によるシステム。
  14. 前記少なくとも1つのアプリケーションはPC上で動作する、請求項10によるシステム。
  15. 複数のソフトウェアモジュールを内に有するソフトウェアをテストする方法であって、
    前記ソフトウェアが実行されている間に、前記ソフトウェアのためのプローブを要求することと、
    前記プローブに対するハンドルをコンポーネントマネージャから取得することと、
    テストされる前記複数のソフトウェアモジュールの内2つを識別することと、前記2つの識別されたソフトウェアは互いに直接リンクすることと、
    前記2つの識別されたソフトウェアモジュールの間に前記プローブの前記ハンドルを挿入することと
    を含む方法。
  16. 前記プローブによって前記ソフトウェアから抽出されるデータを監視することをさらに含む、請求項15による方法。
  17. 前記ソフトウェアが実行されている間に、前記2つの識別されたソフトウェアモジュールの間から、前記プローブの前記ハンドルを取り除くことをさらに含む、請求項15による方法。
  18. 前記ソフトウェアが実行されている間に、プローブデータベースへの前記プローブの登録を取り消すことをさらに含む、請求項15による方法。
  19. 前記2つのソフトウェアモジュールは、前記ソフトウェアが実行されている間、一緒にリンクされている、請求項15による方法。
  20. 複数のデータ変数及び関数独立変数を内に有するソフトウェアをテストするための装置であって、
    中央処理装置と、
    前記中央処理装置に接続される記憶装置と、前記記憶装置は、
    前記中央処理装置に、
    前記ソフトウェアを実行させ、
    前記ソフトウェアによって使用される少なくとも1つの前記変数または独立変数に対するアドレスロケーションを識別させ、
    前記アドレスロケーションにプローブを動的に挿入させ、
    前記アドレスロケーションに記憶されるいずれかのデータを、前記中央処理装置へ出力し、それによって前記データを監視させる
    命令をするためのコンピュータ読み取り可能命令を記憶することと
    を含む装置。
  21. 前記記憶装置は、前記中央処理装置に、前記中央処理装置から前記アドレスロケーションへデータを入力し、それによって前記アドレスロケーションに以前記憶されたいずれかのデータを再配置するよう命令するためのコンピュータ読み取り可能命令をさらに記憶する、請求項20の装置。
  22. リンクしてソフトウェア連鎖をなす複数のソフトウェアモジュールと、
    前記ソフトウェアモジュールに結合され、前記ソフトウェアモジュールを管理するためのコンポーネントマネージャと
    を含む、テスト中のデバイスであって、
    その場合、前記ソフトウェアモジュールは、前記ソフトウェアの動作中に前記複数のソフトウェアモジュールの内2つの間にプローブが挿入されることが可能であるように、使用中に分離され、再編成されるように適応される。
  23. 前記プローブはまた、前記ソフトウェアの動作中に、前記複数のソフトウェアモジュールの内2つの間から取り除かれることが可能である、請求項22のテスト中のデバイス。
  24. 複数のソフトウェアモジュールを内に有するソフトウェアをテストする方法であって、
    ソフトウェアプローブを作成することと、
    プローブ識別子を受信することと、前記プローブ識別子は、前記ソフトウェアプローブを識別することと、
    前記ソフトウェアプローブを前記複数のソフトウェアモジュールに挿入する、または前記複数のソフトウェアモジュール内の前記ソフトウェアプローブを取り除くよう、テスタを命令することと、
    前記ソフトウェアプローブは挿入されているまたは取り除かれているという確認を受信することと
    を含む方法。
  25. 複数のソフトウェアモジュールを内に有するソフトウェアをテストする方法であって、
    プローブに対するハンドルを取得することと、
    プローブ識別子をプローブデータベースに入れることと、
    前記プローブ識別子をパーソナルコンピュータへ返すことと、
    前記プローブを前記複数のソフトウェアモジュールに挿入する、または前記複数のソフトウェアモジュール内の前記プローブを取り除く命令を受信することと、
    前記複数のソフトウェアモジュールを再配列することと、
    前記複数のソフトウェアモジュール内の前記プローブの状態を確認することと、
    前記パーソナルコンピュータへの前記プローブの配置を確認するメッセージを送信することと
    を含む方法。
JP2008531706A 2005-09-23 2006-09-22 ソフトウェアのテスト及び監視のためのデータの注入及び抽出に対する動的プローブの方法及びシステム Withdrawn JP2009509258A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/234,846 US20070074175A1 (en) 2005-09-23 2005-09-23 Method and system for dynamic probes for injection and extraction of data for test and monitoring of software
PCT/EP2006/066620 WO2007039486A2 (en) 2005-09-23 2006-09-22 Method and system for dynamic probes for injection and extraction of data for test and monitoring of software

Publications (1)

Publication Number Publication Date
JP2009509258A true JP2009509258A (ja) 2009-03-05

Family

ID=37864004

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008531706A Withdrawn JP2009509258A (ja) 2005-09-23 2006-09-22 ソフトウェアのテスト及び監視のためのデータの注入及び抽出に対する動的プローブの方法及びシステム

Country Status (11)

Country Link
US (1) US20070074175A1 (ja)
EP (1) EP1934750A2 (ja)
JP (1) JP2009509258A (ja)
KR (1) KR20080048035A (ja)
CN (1) CN101268448A (ja)
BR (1) BRPI0616112A2 (ja)
CA (1) CA2623832A1 (ja)
RU (1) RU2008115930A (ja)
TW (1) TW200741450A (ja)
WO (1) WO2007039486A2 (ja)
ZA (1) ZA200802491B (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014506370A (ja) * 2011-01-07 2014-03-13 アビニシオ テクノロジー エルエルシー フロー分析計装
JP2022037061A (ja) * 2014-11-05 2022-03-08 アビニシオ テクノロジー エルエルシー アプリケーション・テスト
US11347484B2 (en) 2016-06-03 2022-05-31 Ab Initio Technology Llc Format-specific data processing operations

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8484623B2 (en) * 2008-03-26 2013-07-09 Avaya, Inc. Efficient program instrumentation
US8291399B2 (en) * 2008-03-26 2012-10-16 Avaya Inc. Off-line program analysis and run-time instrumentation
US8739145B2 (en) * 2008-03-26 2014-05-27 Avaya Inc. Super nested block method to minimize coverage testing overhead
US8752007B2 (en) * 2008-03-26 2014-06-10 Avaya Inc. Automatic generation of run-time instrumenter
KR101013516B1 (ko) * 2008-07-25 2011-02-10 (주)인터넷커머스코리아 윈도우 응용 프로그램의 자동 테스트를 위한 이벤트 기록및 재생 방법, 및 이벤트 기록 및 재생 프로그램을 기록한컴퓨터로 판독 가능한 기록매체
US9645912B2 (en) * 2008-12-01 2017-05-09 Microsoft Technology Licensing, Llc In-place function modification
EP2587379B1 (en) * 2010-06-28 2023-05-10 Hyundai Motor Company System test apparatus
US8719789B2 (en) * 2011-03-07 2014-05-06 International Business Machines Corporation Measuring coupling between coverage tasks and use thereof
US8719799B2 (en) * 2011-03-07 2014-05-06 International Business Machines Corporation Measuring coupling between coverage tasks and use thereof
EP2687989B1 (en) * 2011-03-15 2022-05-11 Hyundai Motor Company Communication test device and method
EP2709016B1 (en) * 2011-05-09 2019-03-13 Hyundai Motor Company Exception handling test device and method thereof
US20140372989A1 (en) * 2012-01-31 2014-12-18 Inbar Shani Identification of a failed code change
KR101438979B1 (ko) * 2012-12-31 2014-09-11 현대자동차주식회사 소프트웨어 검사 방법 및 시스템
CN103984632B (zh) * 2014-05-29 2016-08-24 东南大学 一种基于错误传播分析的sdc脆弱指令识别方法
US10255166B2 (en) * 2015-03-05 2019-04-09 Fujitsu Limited Determination of valid input sequences for an unknown binary program
EP3497574A4 (en) 2016-08-09 2020-05-13 Sealights Technologies Ltd. SYSTEM AND METHOD FOR THE CONTINUOUS EXAMINATION AND PROVISION OF SOFTWARE
TWI655535B (zh) * 2017-11-15 2019-04-01 兆豐國際商業銀行股份有限公司 程式異動管理系統及程式異動管理方法
CN107992408B (zh) * 2017-11-16 2019-06-07 广东马上到网络科技有限公司 一种软件探测器的软件探测方法
US11086759B2 (en) 2018-09-27 2021-08-10 SeaLights Technologies LTD System and method for probe injection for code coverage
US11573885B1 (en) 2019-09-26 2023-02-07 SeaLights Technologies LTD System and method for test selection according to test impact analytics
CN114780958B (zh) * 2022-04-14 2023-03-24 深圳开源互联网安全技术有限公司 一种埋点自动插桩方法、装置及计算机可读存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4802165A (en) * 1986-10-08 1989-01-31 Enteleki, Inc. Method and apparatus of debugging computer programs
US6351843B1 (en) * 1998-08-31 2002-02-26 International Business Machines Corporation Dynamically inserting a function into an application executable at runtime
US8020148B2 (en) * 2002-09-23 2011-09-13 Telefonaktiebolaget L M Ericsson (Publ) Bi-directional probing and testing of software
US20040154001A1 (en) * 2003-02-05 2004-08-05 Haghighat Mohammad R. Profile-guided regression testing

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014506370A (ja) * 2011-01-07 2014-03-13 アビニシオ テクノロジー エルエルシー フロー分析計装
JP2022037061A (ja) * 2014-11-05 2022-03-08 アビニシオ テクノロジー エルエルシー アプリケーション・テスト
JP7076208B2 (ja) 2014-11-05 2022-05-27 アビニシオ テクノロジー エルエルシー アプリケーション・テスト
US11347484B2 (en) 2016-06-03 2022-05-31 Ab Initio Technology Llc Format-specific data processing operations

Also Published As

Publication number Publication date
ZA200802491B (en) 2009-09-30
WO2007039486A2 (en) 2007-04-12
CN101268448A (zh) 2008-09-17
KR20080048035A (ko) 2008-05-30
TW200741450A (en) 2007-11-01
WO2007039486A3 (en) 2007-07-26
CA2623832A1 (en) 2007-04-12
BRPI0616112A2 (pt) 2012-12-18
RU2008115930A (ru) 2009-10-27
EP1934750A2 (en) 2008-06-25
US20070074175A1 (en) 2007-03-29

Similar Documents

Publication Publication Date Title
JP2009509258A (ja) ソフトウェアのテスト及び監視のためのデータの注入及び抽出に対する動的プローブの方法及びシステム
US20110271256A1 (en) Bi-directional probing of software
US6249882B1 (en) Methods and systems for automated software testing
CN101617296B (zh) 用于测试和监测软件的动态探测认证方法及系统
US20050028146A1 (en) Systems and methods for software and firmware testing using checkpoint signatures
KR20100121226A (ko) 오류 주입을 이용한 소프트웨어 신뢰성 테스트 시스템 및 방법
Chen An empirical study on leveraging logs for debugging production failures
Brörkens et al. Dynamic event generation for runtime checking using the JDI
US7451358B2 (en) Test executive system with automatic expression logging and parameter logging
Ahmadi et al. mCUTE: a model-level concolic unit testing engine for UML state machines
Madiraju et al. Paraµ--A Partial and Higher-Order Mutation Tool with Concurrency Operators
US20060074625A1 (en) Program development suport device, program execution device, compile method and debug method
KR101648307B1 (ko) 임베디드 소프트웨어 단위 테스트를 위한 로그 기반 테스팅 장치 및 그 방법
Metsa et al. Testing non-functional requirements with aspects: An industrial case study
Ribeiro Rocha et al. A strategy to improve component testability without source code
Bangare et al. Automated testing in development phase
Santhanam Automating software module testing for FAA certification
Doyle et al. IBIS: an Interactive Bytecode Inspection System, using symbolic execution and constraint logic programming
Wambugu et al. Automatic Debugging Approaches: A literature Review.
CN110362463A (zh) 一种自动挑选测试用例进行回归测试的方法和装置
Gustafsson et al. Fuzz testing for design assurance levels
Rose Getting the Most Out of an Automated Test Tool
Whittaker et al. Black Box Debugging: It’s all about what takes place at the boundary of an application.
Hiller A tool for examining the behavior of faults and errors in software
Alessandro et al. A new methodology and tool set to execute software test on real-time safety-critical systems

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20091201