JP2006285962A - ターゲットとされるバリアント入力を使用して、データフォーマットをテストするためのシステムおよび方法 - Google Patents

ターゲットとされるバリアント入力を使用して、データフォーマットをテストするためのシステムおよび方法 Download PDF

Info

Publication number
JP2006285962A
JP2006285962A JP2006047522A JP2006047522A JP2006285962A JP 2006285962 A JP2006285962 A JP 2006285962A JP 2006047522 A JP2006047522 A JP 2006047522A JP 2006047522 A JP2006047522 A JP 2006047522A JP 2006285962 A JP2006285962 A JP 2006285962A
Authority
JP
Japan
Prior art keywords
data format
value
data
token
definition
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.)
Pending
Application number
JP2006047522A
Other languages
English (en)
Inventor
Brad Sarsfield
サースフィールド ブラッド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006285962A publication Critical patent/JP2006285962A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10DSTRINGED MUSICAL INSTRUMENTS; WIND MUSICAL INSTRUMENTS; ACCORDIONS OR CONCERTINAS; PERCUSSION MUSICAL INSTRUMENTS; AEOLIAN HARPS; SINGING-FLAME MUSICAL INSTRUMENTS; MUSICAL INSTRUMENTS NOT OTHERWISE PROVIDED FOR
    • G10D13/00Percussion musical instruments; Details or accessories therefor
    • G10D13/01General design of percussion musical instruments
    • G10D13/02Drums; Tambourines with drumheads
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F16ENGINEERING ELEMENTS AND UNITS; GENERAL MEASURES FOR PRODUCING AND MAINTAINING EFFECTIVE FUNCTIONING OF MACHINES OR INSTALLATIONS; THERMAL INSULATION IN GENERAL
    • F16LPIPES; JOINTS OR FITTINGS FOR PIPES; SUPPORTS FOR PIPES, CABLES OR PROTECTIVE TUBING; MEANS FOR THERMAL INSULATION IN GENERAL
    • F16L19/00Joints in which sealing surfaces are pressed together by means of a member, e.g. a swivel nut, screwed on or into one of the joint parts
    • F16L19/06Joints in which sealing surfaces are pressed together by means of a member, e.g. a swivel nut, screwed on or into one of the joint parts in which radial clamping is obtained by wedging action on non-deformed pipe ends
    • F16L19/061Joints in which sealing surfaces are pressed together by means of a member, e.g. a swivel nut, screwed on or into one of the joint parts in which radial clamping is obtained by wedging action on non-deformed pipe ends a pressure ring being arranged between the clamping ring and the threaded member or the connecting member
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Mechanical Engineering (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Devices For Executing Special Programs (AREA)
  • Computer And Data Communications (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Emergency Protection Circuit Devices (AREA)

Abstract

【課題】ターゲットとされるバリアント入力を使用して、データフォーマットをテストすること。
【解決手段】データフォーマット定義における1つまたは複数の選択されたノードの値は、バリアントプレースホルダに置換されうる(210〜214)。実行時に、入力トークンストリームがデータフォーマット定義から生成されるとき、各バリアントプレースホルダは、ランダム値に置き換えられ、それにより、ターゲットとされるバリアント入力がもたらされる(216,218)。
【選択図】図2

Description

本発明は、データフォーマット開発の分野に関し、より詳細には、セキュリティ問題および他の欠陥からの保護のためにデータフォーマットをテストすることに関する。
従来のコンピュータネットワークでは、多数の異なるコンピューティングデバイスの間で、大量のデータが、コンパイルされ格納され転送される。データのコンパイル、格納、および転送をより安全で効率的にするために、多数の異なるデータフォーマットが開発されている。データフォーマットの1つのタイプは、ファイルフォーマットであり、これは、ファイル内のデータがどのように編成されているかを記述するフォーマットである。例えば、ワードプロセッサがファイルを保存するとき、ワードプロセッサは、そのファイルのテキストに追加してフォーマット情報を保存する。このフォーマット情報は、通常、特定のデータフォーマットのルールに従うトークンとして分割するまたは構文解析することができる、キャラクタ、命令、および/または他の情報の集合体である。
他のデータフォーマットのタイプは、プロトコルである。プロトコルは、2つのデバイス間でデータを伝送するためのフォーマットである。プロトコルは、例えば、使用されるエラーチェックのタイプ、データ圧縮方法、送信側デバイスがメッセージの送信を終了したことをどのように送信側デバイスが示すか、並びに、受信側デバイスがメッセージを受信したことをどのように受信側デバイスが示すかなどのプロパティを記述する。開放型システム間相互接続(「OSI」)は、プロトコルを7階層で実装するためのネットワークフレームワークを定義するモデルである。一般に、制御は、あるステーションにおけるアプリケーション層から開始し、ある層から次の層へと渡されて最下層にまで進み、チャネルを介して次のステーションに進み、階層を逆向きに登る。この階層は、アプリケーション層、プレゼンテーション層、セッション層、トランスポート層、ネットワーク層、データリンク層、および物理層を含む。
アプリケーション層プロトコルは、アプリケーションのクライアント側とサーバ側の間で情報を転送するために用いられるプロトコルである。一般に、アプリケーション層プロトコルは、交換されるメッセージのタイプ、様々なメッセージタイプの構文、並びに、いつどのようにアプリケーションがメッセージを送りまたメッセージに応答するかを決定するためのルールを定義する。交換されるデータのタイプに応じて、幾つかの異なるアプリケーション層プロトコルを用いることができる。例えば、HTTP(ハイパーテキスト転送プロトコル)は、ウェブページコンテンツを転送するために用いられ、FTP(ファイル転送プロトコル)は、インターネットを介してファイルを転送するために用いられ、SMTP(簡易メール転送プロトコル)は、電子メールを転送するために用いられる。
データフォーマット、特にアプリケーション層プロトコルに関連するセキュリティ欠陥は、かなり以前から産業規模の問題となっている。このようなセキュリティ欠陥は、それだけに限定されないが蔓延し損害を与える幾つかのコンピュータウィルスを含めて、幾つかの非常に深刻な問題をもたらす。このようなセキュリティ欠陥に関連する金銭的損害は、定量化することが往々にして難しいが、驚異的なものとなる可能性がある。データフォーマットは、通常、かなりドキュメント化されかつ理解されるが、それにもかかわらず、幾つかの基本的なデータフォーマットの実装の問題が存在している。1つの一般的問題は、データフォーマットを記述する仕様とデータフォーマットの実際の実装との間に不一致または違いがあることである。もう1つの一般的問題は、データフォーマットの実際の構文解析において欠陥があるときに発生する。それらの問題の多くは、それら自体をセキュリティの脆弱性の形で顕在化する。したがって、それらの欠陥の可能性を減らすために、データフォーマットの実装に先立ってデータフォーマットに対して広範囲のテストを実施することが望ましい。
1つのあり得るデータフォーマットテスト技法は、データフォーマットに関連した潜在的な欠陥を試行し予測し、これらの潜在的欠陥を明らかにするテストデータフォーマットを作成することである。これは、理論的には賢明な手法に思われるが、起こり得る広範囲の問題を前もって予測し、それらの問題を明らかにするテストデータフォーマットを生成することを試行することは、膨大な量の時間および労力を要する。この問題についてのより実現可能な従来の手法は、完全にランダムなデータを形成し、そのデータをデータフォーマットパーサ(data format parser)に渡すことを含む。ランダムデータは予測可能でないため、実際の欠陥が何であるかを試行し予測する必要なしに、ランダムデータは、将来のデータフォーマットの欠陥の予測不可能な性質についての合理的推定を可能にする。完全にランダムなデータの使用は、いくらか有効な技法であるが、ランダムデータの内在的な変動により、幾つかの欠点が生じる。特に、何らかの比較的複雑なデータフォーマットの場合、完全にランダムなデータは、通常、データフォーマットが最初の少数の構文解析ルーチンを超えてテストされることを可能にするために十分なほど綿密にはデータフォーマットに準拠しない。したがって、この技法は、しばしば、データフォーマットのより複雑な態様をテストすることができない。
上記およびその他の欠点のため、当技術分野において改良されたデータフォーマットテスト技法の必要がある。
本発明は、ターゲットとされるバリアント入力を使用してデータフォーマットをテストするためのシステムおよび方法を対象とする。本発明の一態様によれば、データフォーマットは、例えばバッカスナウア記法(Backus Naur Form)のような文脈自由文法(context free grammar)を使用して定義することができる。その結果もたされるデータフォーマットの定義は、幾つかの異なるトークン定義を含むことができる。次いで、この文脈自由文法を、例えばXML(拡張マークアップ言語)などの言語で書かれた人間に可読のデータフォーマット定義に変換することができる。文脈自由データフォーマット定義における各トークンは、人間可読データフォーマット定義におけるノードとなることができる。次いで、データフォーマット定義における1つまたは複数の選択されたノードの値は、バリアントプレースホルダ(variant placeholder)に置換することができる。選択されるノードは、データフォーマット仕様におけるパラメータに基づいて選ぶことができる。実行時に、入力トークンストリームがデータフォーマット定義から生成されるとき、各バリアントプレースホルダはランダム値に置き換えられ、それにより、ターゲットとされるバリアント入力がもたらされる。新しい入力トークンストリームは繰り返し生成することができ、それぞれの新しいストリームは、各バリアントプレースホルダごとの新しいランダム値を含む。もたらされた各入力ストリームは、テストのためにデータフォーマットパーサに送ることができる。
本発明の追加の特徴および利点は、図面を参照して進められる以下の例示的実施形態の詳細な説明から明らかにされる。
例示的実施形態は、図面を参照して以下の詳細な説明を読むとより良く理解されよう。
本発明の主題は、法的要件を満たす特定性を伴って記述される。しかし、その記述自体は、この特許の範囲を限定することを意図していない。むしろ、請求項の主題は、現在または将来の他の技術と関連して、この文書に記述されるものと同様の様々な動作または要素を含むように、他の方法で実施することもできることを企図している。
本発明によるデータフォーマットをテストするための例示的システムが、図1に示されている。前述のように、データフォーマットは、例えば、ファイルフォーマット、プロトコル、または他の任意のタイプのデータフォーマットであって良い。一般に、このシステムは、ターゲットとされるバリアントテストデータフォーマット105を生成するための1つ以上の開発コンピュータ100を含む。テストデータフォーマット105は、入力を構文解析しテストするデータフォーマットパーサ107に入力として提示される。開発コンピュータ100または他のアクセス可能なコンピュータは、データフォーマット仕様102が生成されることを可能にする、テキストエディタインターフェース101を設けることができる。このデータフォーマット仕様は、データフォーマットおよび他の同様の特徴の望ましいプロパティを記述するドキュメントである。テキストエディタインターフェース101はまた、データフォーマット定義104が生成されることを可能にする。データフォーマット定義104は、データフォーマット内のトークンの値を定義するドキュメントであり、トークンの順序を設定し、データフォーマットに関する他の情報も含むことができる。データフォーマット定義104は、データフォーマット仕様102内の情報に基づいて生成することができる。それが完了した後、データフォーマット定義104は、テストデータフォーマットジェネレータ(test data format generator)103に使用可能にされ、テストデータフォーマットジェネレータは、その中の情報を使用して、ターゲットとされるバリアントテストデータフォーマット105を生成する。テストデータフォーマット生成プロセスについては、後で図2を参照して詳細に説明する。
上述のように、データフォーマット仕様102は、データフォーマットの望ましいプロパティを記述する。詳細には、データフォーマットは、例えば、固定長プロパティ、長さプレフィックス付きプロパティ(length prefix property)、オフセットプロパティなど幾つかの設定プロパティを有することができる。固定長プロパティは、予め選択された固定長を有し、したがって、1つのデータトークンのみを含む。一方、長さプレフィックス付きプロパティは、1つのデータトークンと1つの先行の長さトークンの両方を含む。データトークンの長さは、長さトークンの値によって決定される。オフセットプロパティは、幾つかの長さトークン、幾つかのオフセットトークン、および1つのデータトークンを含む。データトークンは、幾つかのデータセットを含み、それぞれが、1つの対応するデータトークンと1つの対応するオフセットトークンを伴う。各データセットの長さは、それに対応する長さトークンの値によって決定され、データトークン内の各データセットの位置は、それに対応するオフセットトークンによって決定される。これら3つの設定プロパティの例は以下で与えられる。
本発明によるターゲットとされるバリアントテストデータフォーマット105を生成するための例示的方法のフローチャートが図2に示されている。動作(act)210で、データフォーマット定義104がテストフォーマットジェネレータ103によって受け取られる。データフォーマット定義104は、例えばバッカスナウア記法(BNF)のような文脈自由文法でデータフォーマットを定義する。2つの異なる例示的データフォーマットに対する2つの例示的文脈自由データフォーマット定義が図3aおよび3bに示されている。第1のデータフォーマット(「P1」)は固定長データと長さプレフィックス付きデータの両方を含み、第2のデータフォーマット(「P2」)はオフセットデータを含む。
次に、図3aを参照すると、P1データフォーマット定義の第1行は、P1が、3つのトークン、すなわち、「Type」、次いで「Length」、次いで「Data」を含むことを示している。「Type」トークンは、固定長データを指定し、「Length」トークンは、長さプレフィックス付きデータの長さを指定し、「Data」トークンは、長さプレフィックス付きデータに対するデータを指定する。図3aにおける残りの行は、トークンの値を定義する。詳細には、「Type」トークンおよび「Length」トークンはそれそれ、1バイトのデータを含み、「Data」トークンは、「Length」トークンによって決定される可変バイト数のデータを含む。
次に、図3bを参照すると、P2データフォーマット定義の第1行は、P2が、3つのトークン、すなわち、「Offset Length 1」、次いで「Offset Length 2」、次いで「Data」を含むことを示している。2つの各「Offset Length」トークンは、「Offset」トークンおよび「Length」トークンを含む。「Offset」トークンは、「Data」トークン内の対応するデータセットの位置を指定し、「Length」トークンは、「Data」トークン内の対応するデータセットの長さを指定する。図3bにおける残りの行は、トークンの値を定義する。詳細には、「Offset」トークンおよび「Length」トークンはそれぞれ、1バイトのデータを含み、「Data」トークンは、「Length」トークンの併せた値によって決定される可変バイト数のデータを含む。
図2に戻ると、動作212で、文脈自由データフォーマット定義は、人間可読形式に変換される。人間可読データフォーマット定義は、例えばXML(拡張マークアップ言語)などの言語で定義することができる。文脈自由データフォーマット定義における各トークンは、人間可読データフォーマット定義におけるノードとなることができる。その結果もたらされる人間可読定義におけるリーフノードは、一連の1または複数バイトに対応する。人間可読データフォーマット定義は、そのスキーマ内でトークンの値を設定することができる、直感的で理解しやすいスキーマを提供する。しかし、データフォーマット定義を人間可読形式に変換することは、すべての事例で必ずしも必要なく、動作212は、任意選択の動作であることに留意されたい。データフォーマットP1およびP2についての例示的人間可読データフォーマット定義はそれぞれ、図4aおよび図4bに示されている。これらの例示的人間可読データフォーマット定義は、XMLで定義される。
次に図4aを参照すると、「Type」トークンの値が4に設定され、「Length」トークンの値が3に設定され、「Data」トークンは、バイナリ値「CC」をそれぞれ有する3バイトを含む。「Length」トークンが3の値を有するため、「Data」トークンが3バイトを含むことは理解されよう。図4に示される定義によるデータフォーマットP1に対する結果のトークンストリームは、P1{04 03 CC CC CC}のようになる。
次に、図4bを参照すると、「Offset Length 1」では、「Offset」トークンの値は0に設定され、「Length」トークンの値は1に設定される。「Offset Length 2」では、「Offset」トークンの値は1に設定され、「Length」トークンの値は3に設定される。「Data」トークンは、2つのデータセットを含む。第1のセットのデータは、「Offset Length 1」に対応し、バイナリ値「AA」を有する第1のデータバイトを含む。第2のセットのデータは、「Offset Length 2」に対応し、バイナリ値「BB」をそれぞれ有する第2から第4のデータバイトを含む。第1のデータセットは、ゼロのオフセットを有するため、「Data」トークンにおける第1のバイトから開始し、第2のデータセットは、1のオフセットを有するため、「Data」トークンにおける第2のバイトから開始することは理解されよう。図4bに示される定義による、データフォーマットP1に対する結果のトークンストリームは、P2{00 01 01 03 AA BB BB BB}のようになる。
図2に戻ると、動作214で、1つまたは複数の選択されたトークンの値は、バリアントプレースホルダに置換される。前述のように、この置換は、データフォーマット定義104の人間可読形式において、より直感的に行うことができる。しかし、この置換は、人間可読データフォーマット定義から行われる必要は必ずしもなく、例えば、文脈自由データフォーマット定義の範囲から行うことができる。それぞれ、P1およびP2に関する幾つかの例示的バリアント置換を伴うデータフォーマット定義が、図5aおよび図5bに示されている。図5aでは、「Length」トークンの値が、バリアントプレースホルダに置換されており、図5bでは、「Offset Length 2」に対する「Length」トークンの値が、バリアントプレースホルダに置換されている。図5aに示される定義によるデータフォーマットP1についての結果のトークンストリームは、P1{04 XX CC CC CC}となり、図5bによるP2についての結果は、P2{00 01 01 XX AA BB BB BB}となり、「XX」は、バリアントプレースホルダを表している。データフォーマット内の2つ以上のトークンを、バリアントプレースホルダに置き換えることができる。
図2に戻ると、動作216で、入力テストデータフォーマット105が生成される。入力テストデータフォーマット105は、各トークンがそれに対応するデータフォーマット定義からの値を有し、バリアントホルダがランダム値に置き換えられる、トークンストリームである。動作218で、入力テストデータフォーマット105は、データフォーマットパーサ107に提示される。入力テストデータフォーマット105の生成は、新しい各入力ストリームが各バリアントプレースホルダに対するランダム値を含んで、(図2における破線のループで示されるように)何回も繰り返すことができる。新しい入力ストリームは、データフォーマットにおける1つまたは複数の欠陥が検出されるまで、繰り返し生成されてデータフォーマットパーサ107に提示しても良い。データフォーマットは、欠陥が検出されたとき、欠陥を改善するために必要に応じてデータフォーマットを変更することによってデバッグすることができる。もちろん、与えられたセットのバリアント置換について、欠陥が検出されないこともある。これは、選択されたバリアントトークンについて欠陥が存在しないと結論付けるために十分なランダム値のサンプリングが存在していると確信されるまで、入力ストリームを繰り返し生成することによって決定することができる。この結論に達すると、バリアントトークンに対する実際の定数値を返すことができ、データフォーマットにおける1つまたは複数の他のトークンを、バリアントトークンとして選択することができる。
バリアント置換のために選択されるトークンは、データフォーマット仕様102における情報、およびデータフォーマットの他の特性に基づいて決定することができる。例えば、データフォーマットP2を参照すると、「Offset length 1」はユーザ名に対応し、「Offset length 2」はパスワードに対応することができる。したがって、図5bの例のように、「Offset Length 2」の「Length」トークンは、データフォーマットP2が可変の長さのパスワードを伴ってどのように振る舞うかをテストするために、バリアントプレースホルダに置換される。このシナリオでは、「Offset Length 2」の「Length」トークンを限界点までテストすることができ、その間、データフォーマットP2における他のトークンは、一定のままである。
完全なランダム入力ではないターゲットとされるバリアント入力の利点の幾つかは、この例から容易に明らかとなる。具体的には、「Offset Length 2」の「Offset」トークンに対するデータフォーマットP2の変動(variation)をターゲットとすることなしに、このトークンが実際にテストされることは決してない可能性が十分にある。これを理解するために、データフォーマットP2におけるすべてのトークンが、割り当てられたランダム値である場合に、何が起きるかを例として考える。ここで、例示のため、バリアント入力ストリームが生成されるとき、「Offset Length 1」に、0のオフセットと3の長さが割り当てられ、「Offset Length 2」に、2のオフセットが割り当てられることを想定する。このシナリオでは、「Offset Length 1」の長さが「Offset Length 2」のオフセットより大きいため、エラーが検出されることになる。したがって、このエラーのため、テストは、「Offset Length 2」の「Offset」トークンにまで進行しない。これは、比較的単純な例であるが、多くのデータフォーマットは、これよりかなり複雑であり、より多数のトークンが関与し、したがって、データフォーマットのすべての部分がテストされない可能性が増大する。
上述の文脈自由文法データフォーマット定義に加えて、言語ベースの定義でデータフォーマットを定義することも可能である。このような言語ベースのデータフォーマット定義は、関数型プログラミングと同様にすることも、例えばスタックベースの(stack based)言語定義とすることもできる。データフォーマットP1に対する例示的な言語ベースの定義を下記に示す。
AddByte (0x04)
AddRandomByte ()AddByte (0xCC)
AddByte (0xCC)
AddByte (0xCC)
この例示的な言語ベースの定義は、トークンごとの対応する値を単純に列挙し、また、「AddRandomByte」コマンドで表されるバリアントを含む。もちろん、この定義は、図3aに示されるデータフォーマットP1についてのバッカスナウア記法データフォーマット定義の「Length」トークンと「Data」トークンのようなトークン間の関係を示していない。しかし、この言語ベースの定義は、やはり上述のターゲットとされるバリアント入力と関連する利点をもたらす。
完全にランダムな値以外に、バリアントは、「スマート」値と置き換えることもできる。これらのスマート値は、テストされるトークンストリーム内の各トークンごとに周知の境界を使用可能にする。スマート値は、ヌル値(00)、適正値(N)、中間値(N/2)、最大値、適正値(correct value)より大きい所定の幅の値の範囲内の値(N+X)、および、適正値より小さい所定の幅の値の範囲内の値(N−X)などの値を含むことができる。例えば、「06」の適正値を有する長さプレフィックス付きトークンに対して、使用可能なスマート値(smart value)は、ヌル値(00)、適正値(06)、中間値(03)、適正値より1大きい値(07)、および適正値より1小さい値(05)を含むことができる。これらのスマート値は、これらのスマート値が置換される特定のトークンに応じて、異なる属性をテストすることができる。例えば、長さプレフィックス付きトークンについて、スマート値(N−X)および(N+X)は、対応するデータセットの長さを単に調節する。しかし、オフセットトークンについては、(N−X)のスマート値は、対応するデータセットの位置を、先行データセット内のある場所になるように調節し、(N+X)のスマート値は、対応するデータセットの位置を、後続データセット内のある場所になるように調節する。
したがって、上記で図1〜5の例示的システムおよび方法を参照して説明したように、本発明は、テストデータフォーマットを生成するためのシステムおよび方法を提供する。以上から明らかなように、本発明の様々なシステム、方法、および態様のすべてまたは部分は、ハードウェア、ソフトウェア、または両方の組合せで実施することができる。ソフトウェアで実施されるとき、本発明の方法および装置、あるいはそれらの幾つかの態様または部分は、プログラムコード(すなわち、命令)の形態で実施することができる。このプログラムコードは、限定としてではなく、フロッピー(登録商標)ディスケット、CD−ROM、CD−RW、DVD−ROM、DVD−RAM、磁気テープ、フラッシュメモリ、ハードディスクドライブ、または他の任意のマシン可読記憶媒体が含まれる、磁気的、電気的、または光学的記憶媒体などのコンピュータ可読媒体に格納することができ、プログラムコードがコンピュータやサーバなどのマシンにロードされ実行されるとき、そのマシンは、本発明を実施するための装置となる。プログラムコードが実行されるコンピュータは、一般に、プロセッサ、プロセッサで読取り可能な(揮発性および不揮発性メモリ、および/または記憶素子を含む)記憶媒体、少なくとも1つの入力装置、および少なくとも1つの出力装置を含む。プログラムコードは、高水準手続き型またはオブジェクト指向のプログラミング言語で実装することができる。あるいは、プログラムコードは、アセンブリ言語または機械語で実装することができる。いずれにせよ、言語は、コンパイル言語またはインタプリタ言語であって良い。
本発明は、電気配線、電気ケーブル、光ファイバ、LAN、WAN、インターネット、またはイントラネットを含むネットワーク、あるいは他の伝送形態など何らかの伝送媒体を介して伝送される、プログラムコードの形態で実施することもでき、プログラムコードは、コンピュータなどのマシンによって、受け取られロードされ実行されるとき、このマシンは、本発明を実施するための装置となる。
汎用プロセッサで実装されるとき、プログラムコードは、プロセッサと結合して、特定の論理回路と同じように動作する固有の装置を実現する。
さらに、本発明は、コンピュータネットワークの部分として、または分散コンピューティング環境において配置される、任意のコンピュータあるいは他のクライアントデバイスまたはサーバデバイスと連結して実装することができる。これに関連して、本発明は、本発明に関連して使用することができる、幾つかのメモリまたは記憶装置、および、幾つかの記憶装置または記憶ボリュームにわたって生じる幾つかのアプリケーションおよびプロセスを有する、任意のコンピュータシステムまたは環境に関する。本発明は、リモートまたはローカルストレージを有するネットワーク環境または分散コンピューティング環境に配置される、サーバコンピュータおよびクライアントコンピュータを有する環境に適用することができる。本発明はまた、リモートまたはローカルのサービスに関連して情報を生成し送受信するためのプログラミング言語機能、解釈、および実行機能を有する、スタンドアロンコンピューティングデバイスにも適用することもできる。
分散コンピューティングは、コンピューティングデバイスおよびシステム間の交換によってコンピュータリソースおよびサービスの共用を容易にする。これらのリソースおよびサービスには、情報の交換、キャッシュストレージ、およびファイル用ディスクストレージが含まれるがそれだけに限定されない。分散コンピューティングは、ネットワーク接続を利用し、企業全体が利益を得るように、クライアントがそれらの集合的な能力を活用することを可能にする。これに関連して、様々なデバイスが、本発明に関連して実施される処理に関与するアプリケーション、オブジェクト、またはリソースを有することがある。
図6は、例示的なネットワーク化または分散されたコンピューティング環境の概略図を示す。分散コンピューティング環境は、コンピューティングオブジェクト10a、10bなど、並びに、コンピューティングオブジェクトまたはデバイス110a、110b、100cなどを含む。これらのオブジェクトは、プログラム、メソッド、データストア、プログラマブルロジックなどを含むことができる。オブジェクトは、PDA、テレビ、MP3プレイヤ、パーソナルコンピュータなどの同じまたは異なるデバイスの部分を含むことができる。各オブジェクトは、通信ネットワーク14によって他のオブジェクトと通信することができる。このネットワークは、それ自体が、図6のシステムにサービスを提供する他のコンピューティングオブジェクトおよびコンピューティングデバイスを含むことができ、またそれ自体が、複数の相互接続されたネットワークを表すことがある。本発明の態様によれば、各オブジェクト10a、10bなど、または110a、110b、110cなどは、本発明を実装するために用いられるプロセスの使用を要求するための、APIを利用することができるアプリケーション、あるいは他のオブジェクト、ソフトウェア、ファームウェア、および/またはハードウェアを含むことができる。
110cなどのオブジェクトは、他のコンピューティングデバイス10a、10bなど、または110a、110bなどでホストすることもできることは理解されよう。したがって、図示の物理環境は、接続されたデバイスとしてコンピュータを示しているが、このような図は例に過ぎず、代わりに、物理環境は、PDA、テレビ、MP3プレイヤなどの種々のデジタルデバイス、並びに、インターフェース、COMオブジェクトなどのソフトウェアオブジェクトを含むものとして図示または記述することもできる。
分散コンピューティング環境をサポートする様々なシステム、コンポーネント、およびネットワーク構成が存在する。例えば、コンピューティングシステムは、有線または無線システムによって、ローカルネットワークまたは広く分散されたネットワークによって一緒に接続することができる。現在、ネットワークの多くは、広く分散されたコンピューティングのためのインフラストラクチャを提供し多くの異なるネットワークを包含する、インターネットに結合されている。任意のインフラストラクチャを、本発明から生じる例示的通信に使用しても良い。
インターネットは、一般に、コンピュータネットワーキングの技術分野で周知のTCP/IPプロトコルスイートを利用するネットワークおよびゲートウェイの集合を意味する。TCP/IPは、「Transmission Control Protocol/Internet Protocol(伝送制御プロトコル/インターネットプロトコル)」の頭字語である。インターネットは、ユーザがネットワークを介して情報と対話し情報を共有することを可能にする、ネットワークプロトコルを実行しているコンピュータによって相互接続された、地理的に分散されたリモートコンピュータネットワークのシステムとして説明することができる。このような広範囲の情報の共有のため、インターネットなどのリモートネットワークは、基本的には制限なしに、専用化されたオペレーションまたはサービスを実行するためのソフトウェアアプリケーションを開発者が設計することができる、オープンシステムにおしなべてこれまで進化してきた。
したがって、ネットワークインフラストラクチャは、クライアント/サーバ、ピアツーピア、またはハイブリッドアーキテクチャなどのネットワークトポロジのホストを可能にする。「クライアント」は、それが関係付けられていない他のクラスまたはグループのサービスを使用するクラスまたはグループのメンバである。したがって、コンピューティングにおいて、クライアントは、他のプログラムによって提供されたサービスを要求する、プロセス、すなわち大まかには1組の命令またはタスクである。クライアントプロセスは、他のプログラムまたはサービス自体の作業の詳細を「知る」必要なく、要求されたサービスを利用する。クライアント/サーバアーキテクチャ、特にネットワークシステムにおいては、通常、クライアントは、他のコンピュータ例えばサーバによって提供された共有ネットワークリソースにアクセスするコンピュータである。図6の例では、コンピュータ110a、110bなどは、クライアントと考えることができ、コンピュータ10a、10bなどは、サーバと考えることができるが、環境に応じて、どのコンピュータも、クライアント、サーバ、またはこの両方と見なすことができる。これらの任意のコンピューティングデバイスは、本発明に関連する方法でデータを処理することができる。
サーバは、通常、インターネットなどのリモートまたはローカルネットワークを介してアクセス可能なリモートコンピュータシステムである。クライアントプロセスは、第1のコンピュータシステムでアクティブになることができ、サーバプロセスは、第2のコンピュータシステムでアクティブになることができ、これらは、通信媒体を介して互いに通信することができ、したがって、分散機能を提供し、複数のクライアントがサーバの情報収集機能を利用することが可能になる。本発明に従って利用される任意のソフトウェアオブジェクトは、複数のコンピューティングデバイスにわたって分散することができる。
(複数の)クライアントと(複数の)サーバは、プロトコル層によって提供される機能を利用して互いに通信することができる。例えば、HTTP(ハイパーテキスト転送プロトコル)は、ワールドワイドウェブ(WWW)または「Web」と関連して使用される一般的プロトコルである。通常、IP(インターネットプロトコル)アドレスなどのコンピュータネットワークアドレス、またはURL(ユニフォームリソースロケータ(Universal Resource Locator))など他の参照を使用して、サーバまたはクライアントのコンピュータを互いに識別することができる。ネットワークアドレスは、URLアドレスと呼ぶことができる。通信は、任意の使用可能な通信媒体を介して提供することができる。
このように、図6は、本発明を使用することができるネットワーク/バスを介してクライアントコンピュータと通信するサーバを有する例示的ネットワーク環境または分散環境を示す。ネットワーク/バス14は、ポータブルコンピュータ、ハンドヘルドコンピュータ、シンクライアント(thin client)、ネットワーク家電(networked appliance)、またはVCR、TV、オーブン、照明、ヒータなど他の装置などのような、本発明による幾つかのクライアントまたはリモートコンピューティングデバイス110a、110b、110c、110d、110eなどを有するLAN、WAN、イントラネット、インターネット、またはある種の他のネットワーク媒体とすることができる。したがって、ターゲットとされるバリアント入力を使用してプロトコルをテストする際に関連することが望ましい、任意のコンピューティングデバイスに、本発明は適用されうることが企図される。
通信ネットワーク/バス14がインターネットであるネットワーク環境では、例えば、サーバ10a、10bなどは、クライアント110a、110b、110c、110d、110eなどが、HTTPなど既知の幾つかのプロトコルを介して通信するサーバであって良い。サーバ10a、10bなどは、分散コンピューティング環境の特徴により、クライアント110a、110b、110c、110d、110eなどとして機能することもできる。
通信は、必要に応じて有線または無線とすることができる。クライアントデバイス110a、110b、110c、110d、110eなどは、通信ネットワーク/バス14を介して通信してもそうでなくてもよく、それと関連する独立した通信を有しても良い。例えば、TVまたはVCRの場合、その制御のネットワーク化された態様が存在してもしなくても良い。各クライアントコンピュータ110a、110b、110c、110d、110eなど、および各サーバコンピュータ10a、10bなどは、様々なアプリケーションプログラムモジュールまたはオブジェクト135を備えることができ、また、ファイルまたはデータストリームを分散して格納することができるあるいはファイルまたはデータストリームの部分をダウンロード、送信、または移行することができる、様々なタイプの記憶素子または記憶オブジェクトに対する接続またはアクセスを備えることができる。任意のコンピュータ10a、10b、110a、110bなどは、本発明に従って処理されるデータを格納するためのデータベース、メモリ、または他の記憶素子20の維持および更新を担うことができる。したがって、本発明は、コンピュータネットワーク/バス14にアクセスし対話することができるクライアントコンピュータ110a、110bなどと、クライアントコンピュータ110a、110bなど、および他の同様のデバイスと対話することができるサーバコンピュータ10a、10bなどと、データベース20とを有するコンピュータネットワーク環境で利用することができる。
図7および以下の議論は、本発明が関連して実装されうる適切なコンピューティングデバイスの簡潔な一般的説明を与えることを意図している。例えば、図6に示される任意のクライアントおよびサーバのコンピュータまたはデバイスは、この形を取ることができる。しかし、ハンドヘルドデバイス、ポータブルデバイス、および他のコンピューティングデバイス、並びにすべての種類のコンピューティングオブジェクト、すなわち、コンピューティング環境における場所であって、その場所からデータの生成、処理、受信、および/または送信を行うことができる任意の場所が、本発明に関連して使用するために企図されることは理解されよう。下記では汎用コンピュータが説明されているが、これは一例に過ぎず、本発明は、ネットワーク/バス相互運用性および相互作用を有するシンクライアントによって実装することもできる。したがって、本発明は、ごくわずかまたは最小限のクライアントリソースが実装されているネットワーク化されたホストサービスの環境、例えば、クライアントデバイスが、単に、機器内に配置される1つのオブジェクトのようなネットワーク/バスへのインターフェースの役割をするネットワーク環境で実装することができる。基本的には、データを格納する、データをその場所から取り出す、または他のコンピュータにデータを送信することができる任意の場所が、本発明の望ましいまたは適切な動作環境である。
必須ではないが、本発明は、デバイスまたはオブジェクトに関するサービスの開発者によって使用するためのオペレーティングシステムを介して実装される、および/または、本発明に従って動作するアプリケーションまたはサーバソフトウェア内に含まれることができる。ソフトウェアは、クライアント、ワークステーション、サーバ、または他のデバイスなどの1つ以上のコンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的コンテキストで説明することができる。一般に、プログラムモジュールには、特定のタスクを実行しまたは特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造などが含まれる。通常、プログラムモジュールの機能は、様々な実施形態で、必要に応じて結合または分散することができる。さらに、本発明は、他のコンピュータシステム構成およびプロトコルで実施することもできる。本発明と共に使用するのに適切でありうる他の周知のコンピューティングシステム、環境、および/または構成には、以下に限定されないが、パーソナルコンピュータ(PC)、ATM、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラム可能家庭用電化製品、ネットワークPC、器具、照明、環境制御要素、ミニコンピュータ、およびメインフレームコンピュータなどが含まれる。
したがって、図7は、本発明を実装することができる適切なコンピューティングシステム環境700の例を示すが、上記より明らかなように、コンピューティングシステム環境700は、適切なコンピューティング環境の一例に過ぎず、本発明の使用または機能の範囲についてどんな限定も示唆するものではない。コンピューティング環境700は、例示的動作環境700に示されるコンポーネントの任意の1つまたは組合せに関係する、どのような依存性も要件も有するものと解釈されるべきではない。
図7を参照すると、本発明を実装するための例示的システムは汎用コンピューティングデバイスをコンピュータ110の形態で含んでいる。コンピュータ110のコンポーネントは、以下に限定されないが、処理装置120、システムメモリ130、およびシステムメモリを含めた様々なシステムコンポーネントを処理装置120に結合するシステムバス121を含ものであって良い。システムバス121は、様々なバスアーキテクチャのうち任意のアーキテクチャを使用した、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含めて、幾つかのタイプのうち任意のバス構造とすることができる。このようなアーキテクチャには、限定ではなく例として挙げると、ISA(業界標準アーキテクチャ)バス、MCA(マイクロチャネルアーキテクチャ)バス、EISA(拡張ISA)バス、VESA(ビデオ電子規格協会)ローカルバス、および、(メザニン(Mezzanine)バスとしても知られる)PCI(周辺コンポーネント相互接続)バスが含まれる。
コンピュータ110は、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体はコンピュータ110がアクセスすることができる任意の利用可能な媒体とすることができ、それには、揮発性と不揮発性の両方の媒体、および、リムーバブルと非リムーバブルの両方の媒体が含まれる。限定ではなく例として挙げると、コンピュータ可読媒体にはコンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納するための任意の方法または技術で実装される、揮発性と不揮発性の両方の媒体、および、リムーバブルと非リムーバブルの両方の媒体が含まれる。コンピュータ記憶媒体には、以下に限定されないが、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CDROM、DVD(デジタル多用途ディスク)または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ディスク記憶装置、あるいは、所望の情報を格納するために使用することができコンピュータ110によってアクセスすることができる他の任意の媒体が含まれる。通信媒体は、通常、搬送波または他の移送メカニズムなどの変調されたデータ信号として、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを具体化し、また任意の情報送達媒体を含む。用語「変調されたデータ信号」は、信号として情報を符号化するようにセットまたは変更された1つまたは複数の信号特性を有する信号を意味する。限定ではなく例として挙げると、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体、並びに、音響、RF、赤外線、および他の無線媒体などの無線媒体が含まれる。上記の媒体の任意の組合せも、コンピュータ可読媒体の範囲に含まれることになる。
システムメモリ130は、コンピュータ記憶媒体を、ROM(読取り専用メモリ)131およびRAM(ランダムアクセスメモリ)132などの揮発性および/または不揮発性のメモリの形態で含む。始動時などにコンピュータ110内の要素間で情報を転送する助けとなる基本ルーチンを含むBIOS(基本入出力システム)133は、通常、ROM131に格納されている。RAM132は、通常、処理装置120により即座にアクセス可能および/または現在処理中である、データおよび/またはプログラムモジュールを含む。図7は、限定ではなく例として、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137を示す。
コンピュータ110は、他のリムーバブル/非リムーバブル、および揮発性/不揮発性のコンピュータ記憶媒体を含むこともできる。単に例として示すが、図7では、非リムーバブルで不揮発性の磁気媒体から読み取りまたはそれに書き込むハードディスクドライブ141、リムーバブルで不揮発性の磁気ディスク152から読み取りまたはそれに書き込む磁気ディスクドライブ151、および、CD−RW、DVD−RW、または他の光媒体などのリムーバブルで不揮発性の光ディスク156から読み取りまたはそれに書き込む光ディスクドライブ155が示されている。例示的動作環境において使用することができる他のリムーバブル/非リムーバブルで揮発性/不揮発性のコンピュータ記憶媒体には、これだけに限定されないが、磁気テープカセット、フラッシュメモリカード、DVD、デジタルビデオテープ、半導体RAM、および半導体ROMなどが含まれる。ハードディスクドライブ141は、通常、インターフェース140などの非リムーバブルメモリインターフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は、通常、インターフェース150などのリムーバブルメモリインターフェースによってシステムバス121に接続される。
前述の図7に示すドライブおよび関連するコンピュータ記憶媒体は、コンピュータ110のためのコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータのストレージを提供する。図7では例えば、ハードディスク141が、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147を格納するものとして図示した。これらのコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137と同じにすることも異なるようにすることもできることに留意されたい。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147には、これらが少なくとも互いに異なるコピーであることを示すために、ここでは異なる番号で示した。ユーザは、キーボード162などの入力装置、並びにマウス、トラックボール、またはタッチパッドなどのポインティングデバイス161を介して、コマンドおよび情報をコンピュータ110に入力することができる。他の入力装置(図示せず)は、マイク、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナなどを含むのであって良い。上記およびその他の入力装置は、しばしば、システムバス121に結合されたユーザ入力インターフェース160を介して処理装置120に接続されるが、パラレルポート、ゲームポート、またはUSB(ユニバーサルシリアルバス)など他のインターフェースおよびバス構造によって接続されても良い。グラフィックインターフェース182をシステムバス121に接続することもできる。1つ以上のGPU(グラフィック処理装置)184は、グラフィックインターフェース182と通信することができる。モニタ191または他のタイプの表示装置も、ビデオインターフェース190などのインターフェースを介してシステムバス121に接続され、ビデオインターフェース190は、ビデオメモリ186と通信することができる。コンピュータはまた、モニタ191に加え、スピーカ197およびプリンタ196など他の出力周辺装置を含むこともでき、これらは、出力周辺装置インターフェース195を介して接続することができる。
コンピュータ110は、リモートコンピュータ180など1つ以上のリモートコンピュータへの論理接続を使用するネットワーク化された環境で動作することもできる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の共通ネットワークノードとすることができ、図7にはメモリ記憶装置181のみが示されているが、通常、コンピュータ110に関係する上述の要素の多くまたは全部を含む。図7に示す論理接続は、LAN(ローカルエリアネットワーク)171、およびWAN(広域ネットワーク)173を含むが、他のネットワーク/バスを含むこともできる。このようなネットワーク環境は、家庭、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的である。
LANネットワーク環境で使用する場合、コンピュータ110は、ネットワークインターフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーク環境で使用する場合、コンピュータ110は、通常、モデム172、または、インターネットなどのWAN173を介して通信を確立する他の手段を含む。モデム172は、内蔵モデムでも外部のモデルでもよく、ユーザ入力インターフェース160または他の適切なメカニズムを介してシステムバス121に接続することができる。ネットワーク環境では、コンピュータ110に関係して示されたプログラムモジュールまたはその部分をリモートメモリ記憶装置に格納することができる。図7では、限定ではなく例として、メモリ装置181に常駐するリモートアプリケーションプログラム185を示している。ここに示したネットワーク接続は例示であり、コンピュータ間で通信リンクを確立する他の手段を使用することもできることが理解されよう。
結語
以上のように、ターゲットとされるバリアント入力を用いてプロトコルをテストするためのシステムおよび方法が開示された。本発明は、様々な図の好ましい実施形態に関連して説明されているが、本発明から逸脱することなく、本発明と同じ機能を実施するために、他の同様の実施形態を使用することも、上記実施形態に修正および追加を行うこともできることを理解されたい。したがって、本発明は、どの単一の実施形態にも限定されるべきでなく、特許請求の範囲による広さおよび範囲において解釈されるべきである。
本発明によるデータフォーマットをテストするための例示的システムを示す図である。 本発明によるデータフォーマットをテストするための例示的方法を示すフローチャートである。 本発明による例示的データフォーマット定義を示す図である。 本発明による例示的データフォーマット定義を示す図である。 本発明による例示的な人間可読データフォーマット定義を示す図である。 本発明による例示的な人間可読データフォーマット定義を示す図である。 本発明による例示的なバリアント人間可読データフォーマット定義を示す図である。 本発明による例示的なバリアント人間可読データフォーマット定義を示す図である。 本発明を実装することができる様々なコンピューティングデバイスを有する例示的ネットワーク環境を示すブロック図である。 本発明を実装することができる例示的コンピューティングデバイスを示すブロック図である。
符号の説明
10a,10b サーバオブジェクト
14 通信ネットワーク/バス
20 データベース
100 開発コンピュータ
101 エディタインターフェース
102 データフォーマット仕様
103 テストデータフォーマットジェネレータ
104 データフォーマット定義
105 テストデータフォーマット
107 データフォーマットパーサ
110a,110b コンピューティングデバイス
110c,110d オブジェクト
110e コンピューティングデバイス

Claims (20)

  1. データフォーマットをテストするための方法であって、
    データフォーマット内の複数のトークンを定義するデータフォーマット定義を受け取るステップであって、各トークンは対応する値を有し、該トークンの少なくとも1つに対応する値がバリアントに置換されるステップと、
    前記データフォーマット定義に従ってトークンストリームを生成し、それによって、該ストリームにおける少なくとも1つのトークンが、それに対応する値を有し、前記置換された少なくとも1つのバリアントがランダム値に置き換えられるステップと
    を含むことを特徴とする方法。
  2. プロトコルを定義するデータフォーマット定義を受け取るステップを含むことを特徴とする請求項1の方法。
  3. ファイルフォーマットを定義するデータフォーマット定義を受け取るステップを含むことを特徴とする請求項1の方法。
  4. 言語ベースのフォーマットで前記データフォーマットを定義するデータフォーマット定義を受け取るステップをさらに含むことを特徴とする請求項1の方法。
  5. 文脈自由文法で前記データフォーマットを定義するデータフォーマット定義を受け取るステップをさらに含むことを特徴とする請求項1の方法。
  6. バッカスナウア記法文脈自由文法で前記データフォーマットを定義するデータフォーマット定義を受け取るステップを含むことを特徴とする請求項5の方法。
  7. 前記文脈自由文法で定義された前記データフォーマット定義を拡張マークアップ言語データフォーマット定義に変換するステップをさらに含むことを特徴とする請求項5の方法。
  8. 固定長データプロパティ、長さプレフィックス付きプロパティ、およびデータオフセットプロパティのうち少なくとも1つに従って前記データフォーマットを定義するデータフォーマット定義を受け取るステップを含むことを特徴とする請求項1の方法。
  9. 前記バリアントの少なくとも1つを、ヌル値、中間値、最大値、適正値、該適正値より大きい所定の幅の値の範囲内の値、および該適正値より小さい所定の幅の値の範囲内の値のうち少なくとも1つを含む1組のスマート値から選択されたランダム値に置き換えるステップをさらに含むことを特徴とする請求項1の方法。
  10. 請求項1の各ステップを実施するためのコンピュータ実行可能命令を有することを特徴とするコンピュータ可読媒体。
  11. データフォーマットをテストするためのシステムであって、
    データフォーマット内の複数のトークンを定義するデータフォーマット定義であって、各トークンは対応する値を有し、該トークンの少なくとも1つに対応する値がバリアントに置換されるデータフォーマット定義と、
    該データフォーマット定義を受け取り、かつ該データフォーマット定義に従ってトークンストリームを生成し、それによって、該ストリームにおける少なくとも1つのトークンが、それに対応する値を有し、前記置換された少なくとも1つのバリアントがランダム値に置き換えられるテストデータフォーマットジェネレータと
    を備えることを特徴とするシステム。
  12. 前記データフォーマットはファイルフォーマットであることを特徴とする請求項11のシステム。
  13. 前記データフォーマットはプロトコルであることを特徴とする請求項11のシステム。
  14. 前記データフォーマット定義はz言語ベースのフォーマットで前記データフォーマットを定義することを特徴とする請求項11のシステム。
  15. 前記データフォーマット定義は、文脈自由文法で前記データフォーマットを定義することを特徴とする請求項11のシステム。
  16. 前記文脈自由文法はバッカスナウア記法であることを特徴とする請求項15のシステム。
  17. 前記データフォーマット定義は人間可読データフォーマット定義に変換されることを特徴とする請求項15のシステム。
  18. 変換された前記データフォーマット定義は、拡張マークアップ言語で前記データフォーマットを定義することを特徴とする請求項17のシステム。
  19. 前記データフォーマットは、固定長データプロパティ、長さプレフィックス付きプロパティ、およびデータオフセットプティのうち少なくとも1つを含むことを特徴とする請求項11のシステム。
  20. 前記ランダム値は、ヌル値、中間値、最大値、適正値、該適正値より大きい所定の幅の値の範囲内の値、および該適正値より小さい所定の幅の値の範囲内の値のうち少なくとも1つを含む1組のスマート値から選択されることを特徴とする請求項11のシステム。
JP2006047522A 2005-02-25 2006-02-23 ターゲットとされるバリアント入力を使用して、データフォーマットをテストするためのシステムおよび方法 Pending JP2006285962A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/066,018 US20060193342A1 (en) 2005-02-25 2005-02-25 System and method for testing a protocol using targeted variant input

Publications (1)

Publication Number Publication Date
JP2006285962A true JP2006285962A (ja) 2006-10-19

Family

ID=36693576

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006047522A Pending JP2006285962A (ja) 2005-02-25 2006-02-23 ターゲットとされるバリアント入力を使用して、データフォーマットをテストするためのシステムおよび方法

Country Status (9)

Country Link
US (1) US20060193342A1 (ja)
EP (1) EP1696339A2 (ja)
JP (1) JP2006285962A (ja)
KR (1) KR20060094851A (ja)
CN (1) CN1825852A (ja)
AU (1) AU2005242122A1 (ja)
BR (1) BRPI0600049A (ja)
CA (1) CA2533825A1 (ja)
RU (1) RU2006101971A (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080080505A1 (en) * 2006-09-29 2008-04-03 Munoz Robert J Methods and Apparatus for Performing Packet Processing Operations in a Network
US9367432B2 (en) * 2010-12-24 2016-06-14 Tata Consultancy Services Limited Testing system
US20140006555A1 (en) * 2012-06-28 2014-01-02 Arynga Inc. Remote transfer of electronic images to a vehicle
CN104050161B (zh) * 2013-03-11 2017-05-17 Sap欧洲公司 应用和数据服务器的动态桥接
CN105656716B (zh) * 2015-12-30 2020-09-22 航天恒星科技有限公司 一种协议模块性能测试方法及系统
CN110832509B (zh) * 2017-04-12 2023-11-03 渊慧科技有限公司 使用神经网络的黑盒优化
CN109347763B (zh) * 2018-09-11 2021-11-05 北京邮电大学 一种基于数据队列长度的数据调度方法、装置及系统
CN114756474B (zh) * 2022-04-27 2023-07-21 苏州睿芯集成电路科技有限公司 一种cpu验证中随机向量的生成方法、装置以及电子设备

Also Published As

Publication number Publication date
AU2005242122A1 (en) 2006-09-14
CN1825852A (zh) 2006-08-30
RU2006101971A (ru) 2007-08-10
US20060193342A1 (en) 2006-08-31
KR20060094851A (ko) 2006-08-30
BRPI0600049A (pt) 2006-10-24
EP1696339A2 (en) 2006-08-30
CA2533825A1 (en) 2006-08-25

Similar Documents

Publication Publication Date Title
Subramanian et al. Hands-On RESTful API Design Patterns and Best Practices: Design, develop, and deploy highly adaptable, scalable, and secure RESTful web APIs
US6996833B1 (en) Protocol agnostic request response pattern
Caballero et al. Automatic protocol reverse-engineering: Message format extraction and field semantics inference
JP2006285962A (ja) ターゲットとされるバリアント入力を使用して、データフォーマットをテストするためのシステムおよび方法
KR101037263B1 (ko) 세션 기술 메시지 확장
US20130080505A1 (en) Web API Framework
US9069791B2 (en) Database virtualization
CN102624695A (zh) 第三方发起远程方之间的通信
RU2662405C2 (ru) Автоматическое формирование сертификационных документов
CN110348225A (zh) 针对应用程序接口的安全漏洞确定方法和装置
US20080114799A1 (en) System and Method for Utilizing XML Documents to Transfer Programmatic Requests in a Service Oriented Architecture
Sommer et al. Spicy: a unified deep packet inspection framework for safely dissecting all your data
Thompson et al. Ndn-cnl: A hierarchical namespace api for named data networking
US11552868B1 (en) Collect and forward
US20040073893A1 (en) System and method for sensing types of local variables
US9398041B2 (en) Identifying stored vulnerabilities in a web service
Sarker et al. Learning Python Network Programming
Jackson Building Microservices with Go
Senagi et al. A review of SOAP performance optimization techniques to improve communication in web services in loosely coupled systems
Käbisch et al. XML-based Web service generation for microcontroller-based sensor actor networks
MXPA06000968A (en) System and method for testing data format using targeted variant input
Nordahl et al. A lightweight data interchange format for Internet of Things in the PalCom middleware framework
Leggieri et al. Interoperability of two RESTful protocols: HTTP and CoAP
Chanda Network Programming with Rust: Build fast and resilient network servers and clients by leveraging Rust's memory-safety and concurrency features
EP4145317A1 (en) Specifying and testing open communication protocols

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110819

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120127