(57)【要約】【課題】ターゲットとされるバリアント入力を使用して、データフォーマットをテストすること。【解決手段】データフォーマット定義における１つまたは複数の選択されたノードの値は、バリアントプレースホルダに置換されうる（２１０〜２１４）。実行時に、入力トークンストリームがデータフォーマット定義から生成されるとき、各バリアントプレースホルダは、ランダム値に置き換えられ、それにより、ターゲットとされるバリアント入力がもたらされる（２１６，２１８）。【選択図】図２
2006285962.tif 000002
【特許請求の範囲】
【請求項１】
データフォーマットをテストするための方法であって、
データフォーマット内の複数のトークンを定義するデータフォーマット定義を受け取るステップであって、各トークンは対応する値を有し、該トークンの少なくとも１つに対応する値がバリアントに置換されるステップと、
前記データフォーマット定義に従ってトークンストリームを生成し、それによって、該ストリームにおける少なくとも１つのトークンが、それに対応する値を有し、前記置換された少なくとも１つのバリアントがランダム値に置き換えられるステップと
を含むことを特徴とする方法。
【請求項２】
プロトコルを定義するデータフォーマット定義を受け取るステップを含むことを特徴とする請求項１の方法。
【請求項３】
ファイルフォーマットを定義するデータフォーマット定義を受け取るステップを含むことを特徴とする請求項１の方法。
【請求項４】
言語ベースのフォーマットで前記データフォーマットを定義するデータフォーマット定義を受け取るステップをさらに含むことを特徴とする請求項１の方法。
【請求項５】
文脈自由文法で前記データフォーマットを定義するデータフォーマット定義を受け取るステップをさらに含むことを特徴とする請求項１の方法。
【請求項６】
バッカスナウア記法文脈自由文法で前記データフォーマットを定義するデータフォーマット定義を受け取るステップを含むことを特徴とする請求項５の方法。
【請求項７】
前記文脈自由文法で定義された前記データフォーマット定義を拡張マークアップ言語データフォーマット定義に変換するステップをさらに含むことを特徴とする請求項５の方法。
【請求項８】
固定長データプロパティ、長さプレフィックス付きプロパティ、およびデータオフセットプロパティのうち少なくとも１つに従って前記データフォーマットを定義するデータフォーマット定義を受け取るステップを含むことを特徴とする請求項１の方法。
【請求項９】
前記バリアントの少なくとも１つを、ヌル値、中間値、最大値、適正値、該適正値より大きい所定の幅の値の範囲内の値、および該適正値より小さい所定の幅の値の範囲内の値のうち少なくとも１つを含む１組のスマート値から選択されたランダム値に置き換えるステップをさらに含むことを特徴とする請求項１の方法。
【請求項１０】
請求項１の各ステップを実施するためのコンピュータ実行可能命令を有することを特徴とするコンピュータ可読媒体。
【請求項１１】
データフォーマットをテストするためのシステムであって、
データフォーマット内の複数のトークンを定義するデータフォーマット定義であって、各トークンは対応する値を有し、該トークンの少なくとも１つに対応する値がバリアントに置換されるデータフォーマット定義と、
該データフォーマット定義を受け取り、かつ該データフォーマット定義に従ってトークンストリームを生成し、それによって、該ストリームにおける少なくとも１つのトークンが、それに対応する値を有し、前記置換された少なくとも１つのバリアントがランダム値に置き換えられるテストデータフォーマットジェネレータと
を備えることを特徴とするシステム。
【請求項１２】
前記データフォーマットはファイルフォーマットであることを特徴とする請求項１１のシステム。
【請求項１３】
前記データフォーマットはプロトコルであることを特徴とする請求項１１のシステム。
【請求項１４】
前記データフォーマット定義はｚ言語ベースのフォーマットで前記データフォーマットを定義することを特徴とする請求項１１のシステム。
【請求項１５】
前記データフォーマット定義は、文脈自由文法で前記データフォーマットを定義することを特徴とする請求項１１のシステム。
【請求項１６】
前記文脈自由文法はバッカスナウア記法であることを特徴とする請求項１５のシステム。
【請求項１７】
前記データフォーマット定義は人間可読データフォーマット定義に変換されることを特徴とする請求項１５のシステム。
【請求項１８】
変換された前記データフォーマット定義は、拡張マークアップ言語で前記データフォーマットを定義することを特徴とする請求項１７のシステム。
【請求項１９】
前記データフォーマットは、固定長データプロパティ、長さプレフィックス付きプロパティ、およびデータオフセットプティのうち少なくとも１つを含むことを特徴とする請求項１１のシステム。
【請求項２０】
前記ランダム値は、ヌル値、中間値、最大値、適正値、該適正値より大きい所定の幅の値の範囲内の値、および該適正値より小さい所定の幅の値の範囲内の値のうち少なくとも１つを含む１組のスマート値から選択されることを特徴とする請求項１１のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データフォーマット開発の分野に関し、より詳細には、セキュリティ問題および他の欠陥からの保護のためにデータフォーマットをテストすることに関する。
【背景技術】
【０００２】
従来のコンピュータネットワークでは、多数の異なるコンピューティングデバイスの間で、大量のデータが、コンパイルされ格納され転送される。データのコンパイル、格納、および転送をより安全で効率的にするために、多数の異なるデータフォーマットが開発されている。データフォーマットの１つのタイプは、ファイルフォーマットであり、これは、ファイル内のデータがどのように編成されているかを記述するフォーマットである。例えば、ワードプロセッサがファイルを保存するとき、ワードプロセッサは、そのファイルのテキストに追加してフォーマット情報を保存する。このフォーマット情報は、通常、特定のデータフォーマットのルールに従うトークンとして分割するまたは構文解析することができる、キャラクタ、命令、および／または他の情報の集合体である。
【０００３】
他のデータフォーマットのタイプは、プロトコルである。プロトコルは、２つのデバイス間でデータを伝送するためのフォーマットである。プロトコルは、例えば、使用されるエラーチェックのタイプ、データ圧縮方法、送信側デバイスがメッセージの送信を終了したことをどのように送信側デバイスが示すか、並びに、受信側デバイスがメッセージを受信したことをどのように受信側デバイスが示すかなどのプロパティを記述する。開放型システム間相互接続（「ＯＳＩ」）は、プロトコルを７階層で実装するためのネットワークフレームワークを定義するモデルである。一般に、制御は、あるステーションにおけるアプリケーション層から開始し、ある層から次の層へと渡されて最下層にまで進み、チャネルを介して次のステーションに進み、階層を逆向きに登る。この階層は、アプリケーション層、プレゼンテーション層、セッション層、トランスポート層、ネットワーク層、データリンク層、および物理層を含む。
【０００４】
アプリケーション層プロトコルは、アプリケーションのクライアント側とサーバ側の間で情報を転送するために用いられるプロトコルである。一般に、アプリケーション層プロトコルは、交換されるメッセージのタイプ、様々なメッセージタイプの構文、並びに、いつどのようにアプリケーションがメッセージを送りまたメッセージに応答するかを決定するためのルールを定義する。交換されるデータのタイプに応じて、幾つかの異なるアプリケーション層プロトコルを用いることができる。例えば、ＨＴＴＰ（ハイパーテキスト転送プロトコル）は、ウェブページコンテンツを転送するために用いられ、ＦＴＰ（ファイル転送プロトコル）は、インターネットを介してファイルを転送するために用いられ、ＳＭＴＰ（簡易メール転送プロトコル）は、電子メールを転送するために用いられる。
【０００５】
データフォーマット、特にアプリケーション層プロトコルに関連するセキュリティ欠陥は、かなり以前から産業規模の問題となっている。このようなセキュリティ欠陥は、それだけに限定されないが蔓延し損害を与える幾つかのコンピュータウィルスを含めて、幾つかの非常に深刻な問題をもたらす。このようなセキュリティ欠陥に関連する金銭的損害は、定量化することが往々にして難しいが、驚異的なものとなる可能性がある。データフォーマットは、通常、かなりドキュメント化されかつ理解されるが、それにもかかわらず、幾つかの基本的なデータフォーマットの実装の問題が存在している。１つの一般的問題は、データフォーマットを記述する仕様とデータフォーマットの実際の実装との間に不一致または違いがあることである。もう１つの一般的問題は、データフォーマットの実際の構文解析において欠陥があるときに発生する。それらの問題の多くは、それら自体をセキュリティの脆弱性の形で顕在化する。したがって、それらの欠陥の可能性を減らすために、データフォーマットの実装に先立ってデータフォーマットに対して広範囲のテストを実施することが望ましい。
【０００６】
１つのあり得るデータフォーマットテスト技法は、データフォーマットに関連した潜在的な欠陥を試行し予測し、これらの潜在的欠陥を明らかにするテストデータフォーマットを作成することである。これは、理論的には賢明な手法に思われるが、起こり得る広範囲の問題を前もって予測し、それらの問題を明らかにするテストデータフォーマットを生成することを試行することは、膨大な量の時間および労力を要する。この問題についてのより実現可能な従来の手法は、完全にランダムなデータを形成し、そのデータをデータフォーマットパーサ（data format parser）に渡すことを含む。ランダムデータは予測可能でないため、実際の欠陥が何であるかを試行し予測する必要なしに、ランダムデータは、将来のデータフォーマットの欠陥の予測不可能な性質についての合理的推定を可能にする。完全にランダムなデータの使用は、いくらか有効な技法であるが、ランダムデータの内在的な変動により、幾つかの欠点が生じる。特に、何らかの比較的複雑なデータフォーマットの場合、完全にランダムなデータは、通常、データフォーマットが最初の少数の構文解析ルーチンを超えてテストされることを可能にするために十分なほど綿密にはデータフォーマットに準拠しない。したがって、この技法は、しばしば、データフォーマットのより複雑な態様をテストすることができない。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記およびその他の欠点のため、当技術分野において改良されたデータフォーマットテスト技法の必要がある。
【課題を解決するための手段】
【０００８】
本発明は、ターゲットとされるバリアント入力を使用してデータフォーマットをテストするためのシステムおよび方法を対象とする。本発明の一態様によれば、データフォーマットは、例えばバッカスナウア記法（Backus Naur Form）のような文脈自由文法（context free grammar）を使用して定義することができる。その結果もたされるデータフォーマットの定義は、幾つかの異なるトークン定義を含むことができる。次いで、この文脈自由文法を、例えばＸＭＬ（拡張マークアップ言語）などの言語で書かれた人間に可読のデータフォーマット定義に変換することができる。文脈自由データフォーマット定義における各トークンは、人間可読データフォーマット定義におけるノードとなることができる。次いで、データフォーマット定義における１つまたは複数の選択されたノードの値は、バリアントプレースホルダ（variant placeholder）に置換することができる。選択されるノードは、データフォーマット仕様におけるパラメータに基づいて選ぶことができる。実行時に、入力トークンストリームがデータフォーマット定義から生成されるとき、各バリアントプレースホルダはランダム値に置き換えられ、それにより、ターゲットとされるバリアント入力がもたらされる。新しい入力トークンストリームは繰り返し生成することができ、それぞれの新しいストリームは、各バリアントプレースホルダごとの新しいランダム値を含む。もたらされた各入力ストリームは、テストのためにデータフォーマットパーサに送ることができる。
【０００９】
本発明の追加の特徴および利点は、図面を参照して進められる以下の例示的実施形態の詳細な説明から明らかにされる。
【発明を実施するための最良の形態】
【００１０】
例示的実施形態は、図面を参照して以下の詳細な説明を読むとより良く理解されよう。
【００１１】
本発明の主題は、法的要件を満たす特定性を伴って記述される。しかし、その記述自体は、この特許の範囲を限定することを意図していない。むしろ、請求項の主題は、現在または将来の他の技術と関連して、この文書に記述されるものと同様の様々な動作または要素を含むように、他の方法で実施することもできることを企図している。
【００１２】
本発明によるデータフォーマットをテストするための例示的システムが、図１に示されている。前述のように、データフォーマットは、例えば、ファイルフォーマット、プロトコル、または他の任意のタイプのデータフォーマットであって良い。一般に、このシステムは、ターゲットとされるバリアントテストデータフォーマット１０５を生成するための１つ以上の開発コンピュータ１００を含む。テストデータフォーマット１０５は、入力を構文解析しテストするデータフォーマットパーサ１０７に入力として提示される。開発コンピュータ１００または他のアクセス可能なコンピュータは、データフォーマット仕様１０２が生成されることを可能にする、テキストエディタインターフェース１０１を設けることができる。このデータフォーマット仕様は、データフォーマットおよび他の同様の特徴の望ましいプロパティを記述するドキュメントである。テキストエディタインターフェース１０１はまた、データフォーマット定義１０４が生成されることを可能にする。データフォーマット定義１０４は、データフォーマット内のトークンの値を定義するドキュメントであり、トークンの順序を設定し、データフォーマットに関する他の情報も含むことができる。データフォーマット定義１０４は、データフォーマット仕様１０２内の情報に基づいて生成することができる。それが完了した後、データフォーマット定義１０４は、テストデータフォーマットジェネレータ（test data format generator）１０３に使用可能にされ、テストデータフォーマットジェネレータは、その中の情報を使用して、ターゲットとされるバリアントテストデータフォーマット１０５を生成する。テストデータフォーマット生成プロセスについては、後で図２を参照して詳細に説明する。
【００１３】
上述のように、データフォーマット仕様１０２は、データフォーマットの望ましいプロパティを記述する。詳細には、データフォーマットは、例えば、固定長プロパティ、長さプレフィックス付きプロパティ（length prefix property）、オフセットプロパティなど幾つかの設定プロパティを有することができる。固定長プロパティは、予め選択された固定長を有し、したがって、１つのデータトークンのみを含む。一方、長さプレフィックス付きプロパティは、１つのデータトークンと１つの先行の長さトークンの両方を含む。データトークンの長さは、長さトークンの値によって決定される。オフセットプロパティは、幾つかの長さトークン、幾つかのオフセットトークン、および１つのデータトークンを含む。データトークンは、幾つかのデータセットを含み、それぞれが、１つの対応するデータトークンと１つの対応するオフセットトークンを伴う。各データセットの長さは、それに対応する長さトークンの値によって決定され、データトークン内の各データセットの位置は、それに対応するオフセットトークンによって決定される。これら３つの設定プロパティの例は以下で与えられる。
【００１４】
本発明によるターゲットとされるバリアントテストデータフォーマット１０５を生成するための例示的方法のフローチャートが図２に示されている。動作（act）２１０で、データフォーマット定義１０４がテストフォーマットジェネレータ１０３によって受け取られる。データフォーマット定義１０４は、例えばバッカスナウア記法（ＢＮＦ）のような文脈自由文法でデータフォーマットを定義する。２つの異なる例示的データフォーマットに対する２つの例示的文脈自由データフォーマット定義が図３ａおよび３ｂに示されている。第１のデータフォーマット（「Ｐ１」）は固定長データと長さプレフィックス付きデータの両方を含み、第２のデータフォーマット（「Ｐ２」）はオフセットデータを含む。
【００１５】
次に、図３ａを参照すると、Ｐ１データフォーマット定義の第１行は、Ｐ１が、３つのトークン、すなわち、「Ｔｙｐｅ」、次いで「Ｌｅｎｇｔｈ」、次いで「Ｄａｔａ」を含むことを示している。「Ｔｙｐｅ」トークンは、固定長データを指定し、「Ｌｅｎｇｔｈ」トークンは、長さプレフィックス付きデータの長さを指定し、「Ｄａｔａ」トークンは、長さプレフィックス付きデータに対するデータを指定する。図３ａにおける残りの行は、トークンの値を定義する。詳細には、「Ｔｙｐｅ」トークンおよび「Ｌｅｎｇｔｈ」トークンはそれそれ、１バイトのデータを含み、「Ｄａｔａ」トークンは、「Ｌｅｎｇｔｈ」トークンによって決定される可変バイト数のデータを含む。
【００１６】
次に、図３ｂを参照すると、Ｐ２データフォーマット定義の第１行は、Ｐ２が、３つのトークン、すなわち、「Ｏｆｆｓｅｔ  Ｌｅｎｇｔｈ  １」、次いで「Ｏｆｆｓｅｔ  Ｌｅｎｇｔｈ  ２」、次いで「Ｄａｔａ」を含むことを示している。２つの各「Ｏｆｆｓｅｔ  Ｌｅｎｇｔｈ」トークンは、「Ｏｆｆｓｅｔ」トークンおよび「Ｌｅｎｇｔｈ」トークンを含む。「Ｏｆｆｓｅｔ」トークンは、「Ｄａｔａ」トークン内の対応するデータセットの位置を指定し、「Ｌｅｎｇｔｈ」トークンは、「Ｄａｔａ」トークン内の対応するデータセットの長さを指定する。図３ｂにおける残りの行は、トークンの値を定義する。詳細には、「Ｏｆｆｓｅｔ」トークンおよび「Ｌｅｎｇｔｈ」トークンはそれぞれ、１バイトのデータを含み、「Ｄａｔａ」トークンは、「Ｌｅｎｇｔｈ」トークンの併せた値によって決定される可変バイト数のデータを含む。
【００１７】
図２に戻ると、動作２１２で、文脈自由データフォーマット定義は、人間可読形式に変換される。人間可読データフォーマット定義は、例えばＸＭＬ（拡張マークアップ言語）などの言語で定義することができる。文脈自由データフォーマット定義における各トークンは、人間可読データフォーマット定義におけるノードとなることができる。その結果もたらされる人間可読定義におけるリーフノードは、一連の１または複数バイトに対応する。人間可読データフォーマット定義は、そのスキーマ内でトークンの値を設定することができる、直感的で理解しやすいスキーマを提供する。しかし、データフォーマット定義を人間可読形式に変換することは、すべての事例で必ずしも必要なく、動作２１２は、任意選択の動作であることに留意されたい。データフォーマットＰ１およびＰ２についての例示的人間可読データフォーマット定義はそれぞれ、図４ａおよび図４ｂに示されている。これらの例示的人間可読データフォーマット定義は、ＸＭＬで定義される。
【００１８】
次に図４ａを参照すると、「Ｔｙｐｅ」トークンの値が４に設定され、「Ｌｅｎｇｔｈ」トークンの値が３に設定され、「Ｄａｔａ」トークンは、バイナリ値「ＣＣ」をそれぞれ有する３バイトを含む。「Ｌｅｎｇｔｈ」トークンが３の値を有するため、「Ｄａｔａ」トークンが３バイトを含むことは理解されよう。図４に示される定義によるデータフォーマットＰ１に対する結果のトークンストリームは、Ｐ１｛０４  ０３  ＣＣ  ＣＣ  ＣＣ｝のようになる。
【００１９】
次に、図４ｂを参照すると、「Ｏｆｆｓｅｔ  Ｌｅｎｇｔｈ  １」では、「Ｏｆｆｓｅｔ」トークンの値は０に設定され、「Ｌｅｎｇｔｈ」トークンの値は１に設定される。「Ｏｆｆｓｅｔ  Ｌｅｎｇｔｈ  ２」では、「Ｏｆｆｓｅｔ」トークンの値は１に設定され、「Ｌｅｎｇｔｈ」トークンの値は３に設定される。「Ｄａｔａ」トークンは、２つのデータセットを含む。第１のセットのデータは、「Ｏｆｆｓｅｔ  Ｌｅｎｇｔｈ  １」に対応し、バイナリ値「ＡＡ」を有する第１のデータバイトを含む。第２のセットのデータは、「Ｏｆｆｓｅｔ  Ｌｅｎｇｔｈ  ２」に対応し、バイナリ値「ＢＢ」をそれぞれ有する第２から第４のデータバイトを含む。第１のデータセットは、ゼロのオフセットを有するため、「Ｄａｔａ」トークンにおける第１のバイトから開始し、第２のデータセットは、１のオフセットを有するため、「Ｄａｔａ」トークンにおける第２のバイトから開始することは理解されよう。図４ｂに示される定義による、データフォーマットＰ１に対する結果のトークンストリームは、Ｐ２｛００  ０１  ０１  ０３  ＡＡ  ＢＢ  ＢＢ  ＢＢ｝のようになる。
【００２０】
図２に戻ると、動作２１４で、１つまたは複数の選択されたトークンの値は、バリアントプレースホルダに置換される。前述のように、この置換は、データフォーマット定義１０４の人間可読形式において、より直感的に行うことができる。しかし、この置換は、人間可読データフォーマット定義から行われる必要は必ずしもなく、例えば、文脈自由データフォーマット定義の範囲から行うことができる。それぞれ、Ｐ１およびＰ２に関する幾つかの例示的バリアント置換を伴うデータフォーマット定義が、図５ａおよび図５ｂに示されている。図５ａでは、「Ｌｅｎｇｔｈ」トークンの値が、バリアントプレースホルダに置換されており、図５ｂでは、「Ｏｆｆｓｅｔ  Ｌｅｎｇｔｈ  ２」に対する「Ｌｅｎｇｔｈ」トークンの値が、バリアントプレースホルダに置換されている。図５ａに示される定義によるデータフォーマットＰ１についての結果のトークンストリームは、Ｐ１｛０４  ＸＸ  ＣＣ  ＣＣ  ＣＣ｝となり、図５ｂによるＰ２についての結果は、Ｐ２｛００  ０１  ０１  ＸＸ  ＡＡ  ＢＢ  ＢＢ  ＢＢ｝となり、「ＸＸ」は、バリアントプレースホルダを表している。データフォーマット内の２つ以上のトークンを、バリアントプレースホルダに置き換えることができる。
【００２１】
図２に戻ると、動作２１６で、入力テストデータフォーマット１０５が生成される。入力テストデータフォーマット１０５は、各トークンがそれに対応するデータフォーマット定義からの値を有し、バリアントホルダがランダム値に置き換えられる、トークンストリームである。動作２１８で、入力テストデータフォーマット１０５は、データフォーマットパーサ１０７に提示される。入力テストデータフォーマット１０５の生成は、新しい各入力ストリームが各バリアントプレースホルダに対するランダム値を含んで、（図２における破線のループで示されるように）何回も繰り返すことができる。新しい入力ストリームは、データフォーマットにおける１つまたは複数の欠陥が検出されるまで、繰り返し生成されてデータフォーマットパーサ１０７に提示しても良い。データフォーマットは、欠陥が検出されたとき、欠陥を改善するために必要に応じてデータフォーマットを変更することによってデバッグすることができる。もちろん、与えられたセットのバリアント置換について、欠陥が検出されないこともある。これは、選択されたバリアントトークンについて欠陥が存在しないと結論付けるために十分なランダム値のサンプリングが存在していると確信されるまで、入力ストリームを繰り返し生成することによって決定することができる。この結論に達すると、バリアントトークンに対する実際の定数値を返すことができ、データフォーマットにおける１つまたは複数の他のトークンを、バリアントトークンとして選択することができる。
【００２２】
バリアント置換のために選択されるトークンは、データフォーマット仕様１０２における情報、およびデータフォーマットの他の特性に基づいて決定することができる。例えば、データフォーマットＰ２を参照すると、「Ｏｆｆｓｅｔ  ｌｅｎｇｔｈ  １」はユーザ名に対応し、「Ｏｆｆｓｅｔ  ｌｅｎｇｔｈ  ２」はパスワードに対応することができる。したがって、図５ｂの例のように、「Ｏｆｆｓｅｔ  Ｌｅｎｇｔｈ  ２」の「Ｌｅｎｇｔｈ」トークンは、データフォーマットＰ２が可変の長さのパスワードを伴ってどのように振る舞うかをテストするために、バリアントプレースホルダに置換される。このシナリオでは、「Ｏｆｆｓｅｔ  Ｌｅｎｇｔｈ  ２」の「Ｌｅｎｇｔｈ」トークンを限界点までテストすることができ、その間、データフォーマットＰ２における他のトークンは、一定のままである。
【００２３】
完全なランダム入力ではないターゲットとされるバリアント入力の利点の幾つかは、この例から容易に明らかとなる。具体的には、「Ｏｆｆｓｅｔ  Ｌｅｎｇｔｈ  ２」の「Ｏｆｆｓｅｔ」トークンに対するデータフォーマットＰ２の変動（variation）をターゲットとすることなしに、このトークンが実際にテストされることは決してない可能性が十分にある。これを理解するために、データフォーマットＰ２におけるすべてのトークンが、割り当てられたランダム値である場合に、何が起きるかを例として考える。ここで、例示のため、バリアント入力ストリームが生成されるとき、「Ｏｆｆｓｅｔ  Ｌｅｎｇｔｈ  １」に、０のオフセットと３の長さが割り当てられ、「Ｏｆｆｓｅｔ  Ｌｅｎｇｔｈ  ２」に、２のオフセットが割り当てられることを想定する。このシナリオでは、「Ｏｆｆｓｅｔ  Ｌｅｎｇｔｈ  １」の長さが「Ｏｆｆｓｅｔ  Ｌｅｎｇｔｈ  ２」のオフセットより大きいため、エラーが検出されることになる。したがって、このエラーのため、テストは、「Ｏｆｆｓｅｔ  Ｌｅｎｇｔｈ  ２」の「Ｏｆｆｓｅｔ」トークンにまで進行しない。これは、比較的単純な例であるが、多くのデータフォーマットは、これよりかなり複雑であり、より多数のトークンが関与し、したがって、データフォーマットのすべての部分がテストされない可能性が増大する。
【００２４】
上述の文脈自由文法データフォーマット定義に加えて、言語ベースの定義でデータフォーマットを定義することも可能である。このような言語ベースのデータフォーマット定義は、関数型プログラミングと同様にすることも、例えばスタックベースの（stack based）言語定義とすることもできる。データフォーマットＰ１に対する例示的な言語ベースの定義を下記に示す。
AddByte (0x04)
AddRandomByte ()AddByte (0xCC)
AddByte (0xCC)
AddByte (0xCC)
【００２５】
この例示的な言語ベースの定義は、トークンごとの対応する値を単純に列挙し、また、「ＡｄｄＲａｎｄｏｍＢｙｔｅ」コマンドで表されるバリアントを含む。もちろん、この定義は、図３ａに示されるデータフォーマットＰ１についてのバッカスナウア記法データフォーマット定義の「Ｌｅｎｇｔｈ」トークンと「Ｄａｔａ」トークンのようなトークン間の関係を示していない。しかし、この言語ベースの定義は、やはり上述のターゲットとされるバリアント入力と関連する利点をもたらす。
【００２６】
完全にランダムな値以外に、バリアントは、「スマート」値と置き換えることもできる。これらのスマート値は、テストされるトークンストリーム内の各トークンごとに周知の境界を使用可能にする。スマート値は、ヌル値（００）、適正値（Ｎ）、中間値（Ｎ／２）、最大値、適正値（correct value）より大きい所定の幅の値の範囲内の値（Ｎ＋Ｘ）、および、適正値より小さい所定の幅の値の範囲内の値（Ｎ−Ｘ）などの値を含むことができる。例えば、「０６」の適正値を有する長さプレフィックス付きトークンに対して、使用可能なスマート値（smart value）は、ヌル値（００）、適正値（０６）、中間値（０３）、適正値より１大きい値（０７）、および適正値より１小さい値（０５）を含むことができる。これらのスマート値は、これらのスマート値が置換される特定のトークンに応じて、異なる属性をテストすることができる。例えば、長さプレフィックス付きトークンについて、スマート値（Ｎ−Ｘ）および（Ｎ＋Ｘ）は、対応するデータセットの長さを単に調節する。しかし、オフセットトークンについては、（Ｎ−Ｘ）のスマート値は、対応するデータセットの位置を、先行データセット内のある場所になるように調節し、（Ｎ＋Ｘ）のスマート値は、対応するデータセットの位置を、後続データセット内のある場所になるように調節する。
【００２７】
したがって、上記で図１〜５の例示的システムおよび方法を参照して説明したように、本発明は、テストデータフォーマットを生成するためのシステムおよび方法を提供する。以上から明らかなように、本発明の様々なシステム、方法、および態様のすべてまたは部分は、ハードウェア、ソフトウェア、または両方の組合せで実施することができる。ソフトウェアで実施されるとき、本発明の方法および装置、あるいはそれらの幾つかの態様または部分は、プログラムコード（すなわち、命令）の形態で実施することができる。このプログラムコードは、限定としてではなく、フロッピー（登録商標）ディスケット、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、磁気テープ、フラッシュメモリ、ハードディスクドライブ、または他の任意のマシン可読記憶媒体が含まれる、磁気的、電気的、または光学的記憶媒体などのコンピュータ可読媒体に格納することができ、プログラムコードがコンピュータやサーバなどのマシンにロードされ実行されるとき、そのマシンは、本発明を実施するための装置となる。プログラムコードが実行されるコンピュータは、一般に、プロセッサ、プロセッサで読取り可能な（揮発性および不揮発性メモリ、および／または記憶素子を含む）記憶媒体、少なくとも１つの入力装置、および少なくとも１つの出力装置を含む。プログラムコードは、高水準手続き型またはオブジェクト指向のプログラミング言語で実装することができる。あるいは、プログラムコードは、アセンブリ言語または機械語で実装することができる。いずれにせよ、言語は、コンパイル言語またはインタプリタ言語であって良い。
【００２８】
本発明は、電気配線、電気ケーブル、光ファイバ、ＬＡＮ、ＷＡＮ、インターネット、またはイントラネットを含むネットワーク、あるいは他の伝送形態など何らかの伝送媒体を介して伝送される、プログラムコードの形態で実施することもでき、プログラムコードは、コンピュータなどのマシンによって、受け取られロードされ実行されるとき、このマシンは、本発明を実施するための装置となる。
【００２９】
汎用プロセッサで実装されるとき、プログラムコードは、プロセッサと結合して、特定の論理回路と同じように動作する固有の装置を実現する。
【００３０】
さらに、本発明は、コンピュータネットワークの部分として、または分散コンピューティング環境において配置される、任意のコンピュータあるいは他のクライアントデバイスまたはサーバデバイスと連結して実装することができる。これに関連して、本発明は、本発明に関連して使用することができる、幾つかのメモリまたは記憶装置、および、幾つかの記憶装置または記憶ボリュームにわたって生じる幾つかのアプリケーションおよびプロセスを有する、任意のコンピュータシステムまたは環境に関する。本発明は、リモートまたはローカルストレージを有するネットワーク環境または分散コンピューティング環境に配置される、サーバコンピュータおよびクライアントコンピュータを有する環境に適用することができる。本発明はまた、リモートまたはローカルのサービスに関連して情報を生成し送受信するためのプログラミング言語機能、解釈、および実行機能を有する、スタンドアロンコンピューティングデバイスにも適用することもできる。
【００３１】
分散コンピューティングは、コンピューティングデバイスおよびシステム間の交換によってコンピュータリソースおよびサービスの共用を容易にする。これらのリソースおよびサービスには、情報の交換、キャッシュストレージ、およびファイル用ディスクストレージが含まれるがそれだけに限定されない。分散コンピューティングは、ネットワーク接続を利用し、企業全体が利益を得るように、クライアントがそれらの集合的な能力を活用することを可能にする。これに関連して、様々なデバイスが、本発明に関連して実施される処理に関与するアプリケーション、オブジェクト、またはリソースを有することがある。
【００３２】
図６は、例示的なネットワーク化または分散されたコンピューティング環境の概略図を示す。分散コンピューティング環境は、コンピューティングオブジェクト１０ａ、１０ｂなど、並びに、コンピューティングオブジェクトまたはデバイス１１０ａ、１１０ｂ、１００ｃなどを含む。これらのオブジェクトは、プログラム、メソッド、データストア、プログラマブルロジックなどを含むことができる。オブジェクトは、ＰＤＡ、テレビ、ＭＰ３プレイヤ、パーソナルコンピュータなどの同じまたは異なるデバイスの部分を含むことができる。各オブジェクトは、通信ネットワーク１４によって他のオブジェクトと通信することができる。このネットワークは、それ自体が、図６のシステムにサービスを提供する他のコンピューティングオブジェクトおよびコンピューティングデバイスを含むことができ、またそれ自体が、複数の相互接続されたネットワークを表すことがある。本発明の態様によれば、各オブジェクト１０ａ、１０ｂなど、または１１０ａ、１１０ｂ、１１０ｃなどは、本発明を実装するために用いられるプロセスの使用を要求するための、ＡＰＩを利用することができるアプリケーション、あるいは他のオブジェクト、ソフトウェア、ファームウェア、および／またはハードウェアを含むことができる。
【００３３】
１１０ｃなどのオブジェクトは、他のコンピューティングデバイス１０ａ、１０ｂなど、または１１０ａ、１１０ｂなどでホストすることもできることは理解されよう。したがって、図示の物理環境は、接続されたデバイスとしてコンピュータを示しているが、このような図は例に過ぎず、代わりに、物理環境は、ＰＤＡ、テレビ、ＭＰ３プレイヤなどの種々のデジタルデバイス、並びに、インターフェース、ＣＯＭオブジェクトなどのソフトウェアオブジェクトを含むものとして図示または記述することもできる。
【００３４】
分散コンピューティング環境をサポートする様々なシステム、コンポーネント、およびネットワーク構成が存在する。例えば、コンピューティングシステムは、有線または無線システムによって、ローカルネットワークまたは広く分散されたネットワークによって一緒に接続することができる。現在、ネットワークの多くは、広く分散されたコンピューティングのためのインフラストラクチャを提供し多くの異なるネットワークを包含する、インターネットに結合されている。任意のインフラストラクチャを、本発明から生じる例示的通信に使用しても良い。
【００３５】
インターネットは、一般に、コンピュータネットワーキングの技術分野で周知のＴＣＰ／ＩＰプロトコルスイートを利用するネットワークおよびゲートウェイの集合を意味する。ＴＣＰ／ＩＰは、「Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ（伝送制御プロトコル／インターネットプロトコル）」の頭字語である。インターネットは、ユーザがネットワークを介して情報と対話し情報を共有することを可能にする、ネットワークプロトコルを実行しているコンピュータによって相互接続された、地理的に分散されたリモートコンピュータネットワークのシステムとして説明することができる。このような広範囲の情報の共有のため、インターネットなどのリモートネットワークは、基本的には制限なしに、専用化されたオペレーションまたはサービスを実行するためのソフトウェアアプリケーションを開発者が設計することができる、オープンシステムにおしなべてこれまで進化してきた。
【００３６】
したがって、ネットワークインフラストラクチャは、クライアント／サーバ、ピアツーピア、またはハイブリッドアーキテクチャなどのネットワークトポロジのホストを可能にする。「クライアント」は、それが関係付けられていない他のクラスまたはグループのサービスを使用するクラスまたはグループのメンバである。したがって、コンピューティングにおいて、クライアントは、他のプログラムによって提供されたサービスを要求する、プロセス、すなわち大まかには１組の命令またはタスクである。クライアントプロセスは、他のプログラムまたはサービス自体の作業の詳細を「知る」必要なく、要求されたサービスを利用する。クライアント／サーバアーキテクチャ、特にネットワークシステムにおいては、通常、クライアントは、他のコンピュータ例えばサーバによって提供された共有ネットワークリソースにアクセスするコンピュータである。図６の例では、コンピュータ１１０ａ、１１０ｂなどは、クライアントと考えることができ、コンピュータ１０ａ、１０ｂなどは、サーバと考えることができるが、環境に応じて、どのコンピュータも、クライアント、サーバ、またはこの両方と見なすことができる。これらの任意のコンピューティングデバイスは、本発明に関連する方法でデータを処理することができる。
【００３７】
サーバは、通常、インターネットなどのリモートまたはローカルネットワークを介してアクセス可能なリモートコンピュータシステムである。クライアントプロセスは、第１のコンピュータシステムでアクティブになることができ、サーバプロセスは、第２のコンピュータシステムでアクティブになることができ、これらは、通信媒体を介して互いに通信することができ、したがって、分散機能を提供し、複数のクライアントがサーバの情報収集機能を利用することが可能になる。本発明に従って利用される任意のソフトウェアオブジェクトは、複数のコンピューティングデバイスにわたって分散することができる。
【００３８】
（複数の）クライアントと（複数の）サーバは、プロトコル層によって提供される機能を利用して互いに通信することができる。例えば、ＨＴＴＰ（ハイパーテキスト転送プロトコル）は、ワールドワイドウェブ（ＷＷＷ）または「Ｗｅｂ」と関連して使用される一般的プロトコルである。通常、ＩＰ（インターネットプロトコル）アドレスなどのコンピュータネットワークアドレス、またはＵＲＬ（ユニフォームリソースロケータ（Universal Resource Locator））など他の参照を使用して、サーバまたはクライアントのコンピュータを互いに識別することができる。ネットワークアドレスは、ＵＲＬアドレスと呼ぶことができる。通信は、任意の使用可能な通信媒体を介して提供することができる。
【００３９】
このように、図６は、本発明を使用することができるネットワーク／バスを介してクライアントコンピュータと通信するサーバを有する例示的ネットワーク環境または分散環境を示す。ネットワーク／バス１４は、ポータブルコンピュータ、ハンドヘルドコンピュータ、シンクライアント（thin client）、ネットワーク家電（networked appliance）、またはＶＣＲ、ＴＶ、オーブン、照明、ヒータなど他の装置などのような、本発明による幾つかのクライアントまたはリモートコンピューティングデバイス１１０ａ、１１０ｂ、１１０ｃ、１１０ｄ、１１０ｅなどを有するＬＡＮ、ＷＡＮ、イントラネット、インターネット、またはある種の他のネットワーク媒体とすることができる。したがって、ターゲットとされるバリアント入力を使用してプロトコルをテストする際に関連することが望ましい、任意のコンピューティングデバイスに、本発明は適用されうることが企図される。
【００４０】
通信ネットワーク／バス１４がインターネットであるネットワーク環境では、例えば、サーバ１０ａ、１０ｂなどは、クライアント１１０ａ、１１０ｂ、１１０ｃ、１１０ｄ、１１０ｅなどが、ＨＴＴＰなど既知の幾つかのプロトコルを介して通信するサーバであって良い。サーバ１０ａ、１０ｂなどは、分散コンピューティング環境の特徴により、クライアント１１０ａ、１１０ｂ、１１０ｃ、１１０ｄ、１１０ｅなどとして機能することもできる。
【００４１】
通信は、必要に応じて有線または無線とすることができる。クライアントデバイス１１０ａ、１１０ｂ、１１０ｃ、１１０ｄ、１１０ｅなどは、通信ネットワーク／バス１４を介して通信してもそうでなくてもよく、それと関連する独立した通信を有しても良い。例えば、ＴＶまたはＶＣＲの場合、その制御のネットワーク化された態様が存在してもしなくても良い。各クライアントコンピュータ１１０ａ、１１０ｂ、１１０ｃ、１１０ｄ、１１０ｅなど、および各サーバコンピュータ１０ａ、１０ｂなどは、様々なアプリケーションプログラムモジュールまたはオブジェクト１３５を備えることができ、また、ファイルまたはデータストリームを分散して格納することができるあるいはファイルまたはデータストリームの部分をダウンロード、送信、または移行することができる、様々なタイプの記憶素子または記憶オブジェクトに対する接続またはアクセスを備えることができる。任意のコンピュータ１０ａ、１０ｂ、１１０ａ、１１０ｂなどは、本発明に従って処理されるデータを格納するためのデータベース、メモリ、または他の記憶素子２０の維持および更新を担うことができる。したがって、本発明は、コンピュータネットワーク／バス１４にアクセスし対話することができるクライアントコンピュータ１１０ａ、１１０ｂなどと、クライアントコンピュータ１１０ａ、１１０ｂなど、および他の同様のデバイスと対話することができるサーバコンピュータ１０ａ、１０ｂなどと、データベース２０とを有するコンピュータネットワーク環境で利用することができる。
【００４２】
図７および以下の議論は、本発明が関連して実装されうる適切なコンピューティングデバイスの簡潔な一般的説明を与えることを意図している。例えば、図６に示される任意のクライアントおよびサーバのコンピュータまたはデバイスは、この形を取ることができる。しかし、ハンドヘルドデバイス、ポータブルデバイス、および他のコンピューティングデバイス、並びにすべての種類のコンピューティングオブジェクト、すなわち、コンピューティング環境における場所であって、その場所からデータの生成、処理、受信、および／または送信を行うことができる任意の場所が、本発明に関連して使用するために企図されることは理解されよう。下記では汎用コンピュータが説明されているが、これは一例に過ぎず、本発明は、ネットワーク／バス相互運用性および相互作用を有するシンクライアントによって実装することもできる。したがって、本発明は、ごくわずかまたは最小限のクライアントリソースが実装されているネットワーク化されたホストサービスの環境、例えば、クライアントデバイスが、単に、機器内に配置される１つのオブジェクトのようなネットワーク／バスへのインターフェースの役割をするネットワーク環境で実装することができる。基本的には、データを格納する、データをその場所から取り出す、または他のコンピュータにデータを送信することができる任意の場所が、本発明の望ましいまたは適切な動作環境である。
【００４３】
必須ではないが、本発明は、デバイスまたはオブジェクトに関するサービスの開発者によって使用するためのオペレーティングシステムを介して実装される、および／または、本発明に従って動作するアプリケーションまたはサーバソフトウェア内に含まれることができる。ソフトウェアは、クライアント、ワークステーション、サーバ、または他のデバイスなどの１つ以上のコンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的コンテキストで説明することができる。一般に、プログラムモジュールには、特定のタスクを実行しまたは特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造などが含まれる。通常、プログラムモジュールの機能は、様々な実施形態で、必要に応じて結合または分散することができる。さらに、本発明は、他のコンピュータシステム構成およびプロトコルで実施することもできる。本発明と共に使用するのに適切でありうる他の周知のコンピューティングシステム、環境、および／または構成には、以下に限定されないが、パーソナルコンピュータ（ＰＣ）、ＡＴＭ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラム可能家庭用電化製品、ネットワークＰＣ、器具、照明、環境制御要素、ミニコンピュータ、およびメインフレームコンピュータなどが含まれる。
【００４４】
したがって、図７は、本発明を実装することができる適切なコンピューティングシステム環境７００の例を示すが、上記より明らかなように、コンピューティングシステム環境７００は、適切なコンピューティング環境の一例に過ぎず、本発明の使用または機能の範囲についてどんな限定も示唆するものではない。コンピューティング環境７００は、例示的動作環境７００に示されるコンポーネントの任意の１つまたは組合せに関係する、どのような依存性も要件も有するものと解釈されるべきではない。
【００４５】
図７を参照すると、本発明を実装するための例示的システムは汎用コンピューティングデバイスをコンピュータ１１０の形態で含んでいる。コンピュータ１１０のコンポーネントは、以下に限定されないが、処理装置１２０、システムメモリ１３０、およびシステムメモリを含めた様々なシステムコンポーネントを処理装置１２０に結合するシステムバス１２１を含ものであって良い。システムバス１２１は、様々なバスアーキテクチャのうち任意のアーキテクチャを使用した、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含めて、幾つかのタイプのうち任意のバス構造とすることができる。このようなアーキテクチャには、限定ではなく例として挙げると、ＩＳＡ（業界標準アーキテクチャ）バス、ＭＣＡ（マイクロチャネルアーキテクチャ）バス、ＥＩＳＡ（拡張ＩＳＡ）バス、ＶＥＳＡ（ビデオ電子規格協会）ローカルバス、および、（メザニン（Mezzanine）バスとしても知られる）ＰＣＩ（周辺コンポーネント相互接続）バスが含まれる。
【００４６】
コンピュータ１１０は、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体はコンピュータ１１０がアクセスすることができる任意の利用可能な媒体とすることができ、それには、揮発性と不揮発性の両方の媒体、および、リムーバブルと非リムーバブルの両方の媒体が含まれる。限定ではなく例として挙げると、コンピュータ可読媒体にはコンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納するための任意の方法または技術で実装される、揮発性と不揮発性の両方の媒体、および、リムーバブルと非リムーバブルの両方の媒体が含まれる。コンピュータ記憶媒体には、以下に限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤＲＯＭ、ＤＶＤ（デジタル多用途ディスク）または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ディスク記憶装置、あるいは、所望の情報を格納するために使用することができコンピュータ１１０によってアクセスすることができる他の任意の媒体が含まれる。通信媒体は、通常、搬送波または他の移送メカニズムなどの変調されたデータ信号として、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを具体化し、また任意の情報送達媒体を含む。用語「変調されたデータ信号」は、信号として情報を符号化するようにセットまたは変更された１つまたは複数の信号特性を有する信号を意味する。限定ではなく例として挙げると、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体、並びに、音響、ＲＦ、赤外線、および他の無線媒体などの無線媒体が含まれる。上記の媒体の任意の組合せも、コンピュータ可読媒体の範囲に含まれることになる。
【００４７】
システムメモリ１３０は、コンピュータ記憶媒体を、ＲＯＭ（読取り専用メモリ）１３１およびＲＡＭ（ランダムアクセスメモリ）１３２などの揮発性および／または不揮発性のメモリの形態で含む。始動時などにコンピュータ１１０内の要素間で情報を転送する助けとなる基本ルーチンを含むＢＩＯＳ（基本入出力システム）１３３は、通常、ＲＯＭ１３１に格納されている。ＲＡＭ１３２は、通常、処理装置１２０により即座にアクセス可能および／または現在処理中である、データおよび／またはプログラムモジュールを含む。図７は、限定ではなく例として、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７を示す。
【００４８】
コンピュータ１１０は、他のリムーバブル／非リムーバブル、および揮発性／不揮発性のコンピュータ記憶媒体を含むこともできる。単に例として示すが、図７では、非リムーバブルで不揮発性の磁気媒体から読み取りまたはそれに書き込むハードディスクドライブ１４１、リムーバブルで不揮発性の磁気ディスク１５２から読み取りまたはそれに書き込む磁気ディスクドライブ１５１、および、ＣＤ−ＲＷ、ＤＶＤ−ＲＷ、または他の光媒体などのリムーバブルで不揮発性の光ディスク１５６から読み取りまたはそれに書き込む光ディスクドライブ１５５が示されている。例示的動作環境において使用することができる他のリムーバブル／非リムーバブルで揮発性／不揮発性のコンピュータ記憶媒体には、これだけに限定されないが、磁気テープカセット、フラッシュメモリカード、ＤＶＤ、デジタルビデオテープ、半導体ＲＡＭ、および半導体ＲＯＭなどが含まれる。ハードディスクドライブ１４１は、通常、インターフェース１４０などの非リムーバブルメモリインターフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は、通常、インターフェース１５０などのリムーバブルメモリインターフェースによってシステムバス１２１に接続される。
【００４９】
前述の図７に示すドライブおよび関連するコンピュータ記憶媒体は、コンピュータ１１０のためのコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータのストレージを提供する。図７では例えば、ハードディスク１４１が、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を格納するものとして図示した。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じにすることも異なるようにすることもできることに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７には、これらが少なくとも互いに異なるコピーであることを示すために、ここでは異なる番号で示した。ユーザは、キーボード１６２などの入力装置、並びにマウス、トラックボール、またはタッチパッドなどのポインティングデバイス１６１を介して、コマンドおよび情報をコンピュータ１１０に入力することができる。他の入力装置（図示せず）は、マイク、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナなどを含むのであって良い。上記およびその他の入力装置は、しばしば、システムバス１２１に結合されたユーザ入力インターフェース１６０を介して処理装置１２０に接続されるが、パラレルポート、ゲームポート、またはＵＳＢ（ユニバーサルシリアルバス）など他のインターフェースおよびバス構造によって接続されても良い。グラフィックインターフェース１８２をシステムバス１２１に接続することもできる。１つ以上のＧＰＵ（グラフィック処理装置）１８４は、グラフィックインターフェース１８２と通信することができる。モニタ１９１または他のタイプの表示装置も、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続され、ビデオインターフェース１９０は、ビデオメモリ１８６と通信することができる。コンピュータはまた、モニタ１９１に加え、スピーカ１９７およびプリンタ１９６など他の出力周辺装置を含むこともでき、これらは、出力周辺装置インターフェース１９５を介して接続することができる。
【００５０】
コンピュータ１１０は、リモートコンピュータ１８０など１つ以上のリモートコンピュータへの論理接続を使用するネットワーク化された環境で動作することもできる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の共通ネットワークノードとすることができ、図７にはメモリ記憶装置１８１のみが示されているが、通常、コンピュータ１１０に関係する上述の要素の多くまたは全部を含む。図７に示す論理接続は、ＬＡＮ（ローカルエリアネットワーク）１７１、およびＷＡＮ（広域ネットワーク）１７３を含むが、他のネットワーク／バスを含むこともできる。このようなネットワーク環境は、家庭、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的である。
【００５１】
ＬＡＮネットワーク環境で使用する場合、コンピュータ１１０は、ネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーク環境で使用する場合、コンピュータ１１０は、通常、モデム１７２、または、インターネットなどのＷＡＮ１７３を介して通信を確立する他の手段を含む。モデム１７２は、内蔵モデムでも外部のモデルでもよく、ユーザ入力インターフェース１６０または他の適切なメカニズムを介してシステムバス１２１に接続することができる。ネットワーク環境では、コンピュータ１１０に関係して示されたプログラムモジュールまたはその部分をリモートメモリ記憶装置に格納することができる。図７では、限定ではなく例として、メモリ装置１８１に常駐するリモートアプリケーションプログラム１８５を示している。ここに示したネットワーク接続は例示であり、コンピュータ間で通信リンクを確立する他の手段を使用することもできることが理解されよう。
【００５２】
結語
以上のように、ターゲットとされるバリアント入力を用いてプロトコルをテストするためのシステムおよび方法が開示された。本発明は、様々な図の好ましい実施形態に関連して説明されているが、本発明から逸脱することなく、本発明と同じ機能を実施するために、他の同様の実施形態を使用することも、上記実施形態に修正および追加を行うこともできることを理解されたい。したがって、本発明は、どの単一の実施形態にも限定されるべきでなく、特許請求の範囲による広さおよび範囲において解釈されるべきである。
【図面の簡単な説明】
【００５３】
【図１】本発明によるデータフォーマットをテストするための例示的システムを示す図である。
【図２】本発明によるデータフォーマットをテストするための例示的方法を示すフローチャートである。
【図３ａ】本発明による例示的データフォーマット定義を示す図である。
【図３ｂ】本発明による例示的データフォーマット定義を示す図である。
【図４ａ】本発明による例示的な人間可読データフォーマット定義を示す図である。
【図４ｂ】本発明による例示的な人間可読データフォーマット定義を示す図である。
【図５ａ】本発明による例示的なバリアント人間可読データフォーマット定義を示す図である。
【図５ｂ】本発明による例示的なバリアント人間可読データフォーマット定義を示す図である。
【図６】本発明を実装することができる様々なコンピューティングデバイスを有する例示的ネットワーク環境を示すブロック図である。
【図７】本発明を実装することができる例示的コンピューティングデバイスを示すブロック図である。
【符号の説明】
【００５４】
１０ａ，１０ｂ  サーバオブジェクト
１４  通信ネットワーク／バス
２０  データベース
１００  開発コンピュータ
１０１  エディタインターフェース
１０２  データフォーマット仕様
１０３  テストデータフォーマットジェネレータ
１０４  データフォーマット定義
１０５  テストデータフォーマット
１０７  データフォーマットパーサ
１１０ａ，１１０ｂ  コンピューティングデバイス
１１０ｃ，１１０ｄ  オブジェクト
１１０ｅ  コンピューティングデバイス
【図１】
2006285962.tif 000003
【図２】
2006285962.tif 000004
【図３ａ】
2006285962.tif 000005
【図３ｂ】
2006285962.tif 000006
【図４ａ】
2006285962.tif 000007
【図４ｂ】
2006285962.tif 000008
【図５ａ】
2006285962.tif 000009
【図５ｂ】
2006285962.tif 000010
【図６】
2006285962.tif 000011
【図７】
2006285962.tif 000012