(57)【要約】      （修正有）【課題】テストの効率を向上するファジングテスト装置、ファジングテスト方法及びファジングテストプログラムを提供する。【解決手段】ファジングによるテスト対象装置と接続されるファジングテスト装置１０であって、テスト対象装置に送信したファズメッセージに対するエラー発生率を算出する第１の算出部と、算出したエラー発生率に応じて、テスト対象装置に送信する死活確認メッセージの送信比率を決定する決定部と、決定した送信比率に応じて、ファズメッセージと、死活確認メッセージとをテスト対象装置に送信する送信部と、を有する。【選択図】図４
2018195288.tif 000002
【特許請求の範囲】
【請求項１】
ファジングによるテスト対象装置と接続されるファジングテスト装置であって、
前記テスト対象装置に送信したファズメッセージに対するエラー発生率を算出する第１の算出部と、
算出した前記エラー発生率に応じて、前記テスト対象装置に送信する死活確認メッセージの送信比率を決定する決定部と、
決定した送信比率に応じて、ファズメッセージと、死活確認メッセージとを前記テスト対象装置に送信する送信部と、
を有するファジングテスト装置。
【請求項２】
前記ファズメッセージを前記テスト対象装置が受信するまでの第１の時間と、前記死活確認メッセージに対する応答を前記ファジングテスト装置が受信するまでの第２の時間と算出する第２の算出部を有し、
前記決定部は、
前記エラー発生率と、前記第１の時間と、前記第２の時間とに応じて、前記送信比率を決定する、ことを特徴とする請求項１に記載のファジングテスト装置。
【請求項３】
送信した前記死活確認メッセージに対する応答を前記第２の時間以内に受信しなかった場合、前記テスト対象装置を再起動させるための指示を該テスト対象装置に送信する再起動指示部を有する、ことを特徴とする請求項２に記載のファジングテスト装置。
【請求項４】
ファズデータが含まれる複数のメッセージを作成するメッセージ作成部と、
作成した前記複数のメッセージを、メッセージ長に応じて、複数の集合に分割する分割部とを有し、
前記第２の算出部は、
前記集合毎に、前記第１の時間と、前記第２の時間とを算出する、ことを特徴とする請求項２又は３に記載のファジングテスト装置。
【請求項５】
前記集合に含まれるメッセージのメッセージ長の最大又は平均をメッセージ長とする計測メッセージを作成する計測メッセージ作成部を有し、
前記第２の算出部は、
前記集合毎に、前記計測メッセージから作成されたファズメッセージを前記テスト対象装置が受信するまでの第１の時間と、前記計測メッセージから作成された死活確認メッセージに対する応答を前記ファジングテスト装置が受信するまでの第２の時間とを算出する、ことを特徴とする請求項４に記載のファジングテスト装置。
【請求項６】
前記メッセージ作成部は、
予め決められたルール毎に、該ルールに基づいて前記複数のメッセージを作成する、ことを特徴とする請求項４又は５に記載のファジングテスト装置。
【請求項７】
前記ファズメッセージは、ＭＱＴＴプロトコルで規定されたメッセージであって、ファズデータが含まれ、かつ、ＱｏＳに０が設定されたメッセージであり、
前記死活確認メッセージは、ＭＱＴＴプロトコルで規定されたメッセージであって、ファズデータが含まれ、かつ、ＱｏＳに１が設定されたメッセージである、ことを特徴とする請求項１乃至５の何れか一項に記載のファジングテスト装置。
【請求項８】
ファジングによるテスト対象装置と接続されるコンピュータが、
前記テスト対象装置に送信したファズメッセージに対するエラー発生率を算出し、
算出した前記エラー発生率に応じて、前記テスト対象装置に送信する死活確認メッセージの送信比率を決定し、
決定した送信比率に応じて、ファズメッセージと、死活確認メッセージとを前記テスト対象装置に送信する、
処理を実行するファジングテスト方法。
【請求項９】
ファジングによるテスト対象装置と接続されるコンピュータに、
前記テスト対象装置に送信したファズメッセージに対するエラー発生率を算出し、
算出した前記エラー発生率に応じて、前記テスト対象装置に送信する死活確認メッセージの送信比率を決定し、
決定した送信比率に応じて、ファズメッセージと、死活確認メッセージとを前記テスト対象装置に送信する、
処理を実行させるファジングテストプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファジングテスト装置、ファジングテスト方法及びファジングテストプログラムに関する。
【背景技術】
【０００２】
ＭＱＴＴ（Message  Queue  Telemetry  Transport）と呼ばれるメッセージプロトコルが従来から知られている。ＭＱＴＴは、ＴＣＰ／ＩＰ（Transmission  Control  Protocol/Internet  Protocol）を利用した、軽量なｐｕｂｌｉｓｈ／ｓｕｂｓｃｒｉｂｅ型のメッセージプロトコルである。
【０００３】
また、ファジングと呼ばれるテスト手法が従来から知られている。ファジングは、例えば長い文字列や乱数等のデータ（ファズデータ）をテスト対象に大量に与えて、テスト対象の挙動を確認するテスト手法である。ファジングでは、テスト対象でエラーが発生した場合、エラーの発生を素早く検出し、テストを再開することが求められる。
【０００４】
ここで、ＭＱＴＴを用いたファジングにおいて、テスト対象の死活確認には、ＫｅｅｐＡｌｉｖｅ機能を用いる方法と、ファズデータが含まれるメッセージ（以降、「テストメッセージ」とも表す。）のＱｏＳを「１」に設定する方法とが知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２００６／０８０４０３号
【特許文献２】特開２０１３−２１１８４２号公報
【特許文献３】特開２０１６−１２２９２６号公報
【特許文献４】特開２０１６−０６３４２５号公報
【特許文献５】特開２０１７−５８８３８号公報
【特許文献６】特開２０１３−１９６３９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ＫｅｅｐＡｌｉｖｅ機能では、例えば、クライアントからサーバに一定間隔でＰＩＮＧが送信されるため、クライアントでエラーが発生しても、次のＰＩＮＧの送信タイミングまで、サーバはクライアントの死活を確認することができない。このため、ＫｅｅｐＡｌｉｖｅ機能を用いる方法では、エラーの検出を素早く行えず、無駄なテストメッセージの送信が多く発生する場合があり、テスト効率が低下することがあった。
【０００７】
一方で、テストメッセージのＱｏＳに「１」を設定すると、例えば、サーバは、クライアントに送信したテストメッセージに対する応答（ＡＣＫ）を待ってから次のテストメッセージをクライアントに送信する必要がある。このため、テストメッセージのＱｏＳに「１」を設定する方法では、単位時間あたりに送信できるテストメッセージ数が少なくなるため、テストに時間を要する場合があり、テスト効率が低下することがあった。
【０００８】
１つの側面では、本発明は、ファジングテストの効率を向上させることを目的とする。
【課題を解決するための手段】
【０００９】
１つの態様では、ファジングによるテスト対象装置と接続されるファジングテスト装置であって、前記テスト対象装置に送信したファズメッセージに対するエラー発生率を算出する第１の算出部と、算出した前記エラー発生率に応じて、前記テスト対象装置に送信する死活確認メッセージの送信比率を決定する決定部と、決定した送信比率に応じて、ファズメッセージと、死活確認メッセージとを前記テスト対象装置に送信する送信部と、を有する。
【発明の効果】
【００１０】
ファジングテストの効率を向上させることができる。
【図面の簡単な説明】
【００１１】
【図１】第一の実施形態に係るファジングテストシステムの全体構成の一例を示す図である。
【図２】第一の実施形態に係るファジングテストシステムにおけるファジングの概略を説明する図である。
【図３】第一の実施形態に係るファジングテスト装置及びテスト対象装置のハードウェア構成の一例を示す図である。
【図４】第一の実施形態に係るファジングテスト装置の機能構成の一例を示す図である。
【図５】第一の実施形態に係るテストメッセージの作成及び送信処理の一例を示すフローチャートである。
【図６】第一の実施形態に係るテスト開始画面の一例を示す図である。
【図７】第一の実施形態に係るメッセージ時間の算出処理の一例を示すフローチャートである。
【図８】第一の実施形態に係るテストメッセージの作成及び送信処理の他の例を示すフローチャートである。
【図９】第一の実施形態に係るテスト開始画面の他の例を示す図である。
【図１０】第二の実施形態に係るファジングテスト装置の機能構成の一例を示す図である。
【図１１Ａ】第二の実施形態に係るテストメッセージの作成及び送信処理の一例を示すフローチャート（その１）である。
【図１１Ｂ】第二の実施形態に係るテストメッセージの作成及び送信処理の一例を示すフローチャー（その２）トである。
【図１２】第二の実施形態に係るテスト開始画面の一例を示す図である。
【図１３】第二の実施形態に係るメッセージ時間の算出処理の一例を示すフローチャートである。
【図１４Ａ】第二の実施形態に係るテストメッセージの作成及び送信処理の他の例を示すフローチャート（その１）である。
【図１４Ｂ】第二の実施形態に係るテストメッセージの作成及び送信処理の他の例を示すフローチャート（その２）である。
【図１５】第二の実施形態に係るテスト開始画面の他の例を示す図である。
【図１６】単位時間あたりの有効なテストメッセージ数の比較例を説明する図（その１）である。
【図１７】単位時間あたりの有効なテストメッセージ数の比較例を説明する図（その２）である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態について添付の図面を参照しながら説明する。
【００１３】
（第一の実施形態）
＜全体構成＞
まず、本実施形態に係るファジングテストシステム１の全体構成について、図１を参照しながら説明する。図１は、本実施形態に係るファジングテストシステム１の全体構成の一例を示す図である。
【００１４】
図１に示すように、本実施形態に係るファジングテストシステム１は、ファジングテスト装置１０と、テスト対象装置２０とを有する。また、ファジングテスト装置１０と、テスト対象装置２０とは、例えばインターネットやＬＡＮ（Local  Area  Network）等のネットワークＮを介して通信可能に接続されている。
【００１５】
ファジングテスト装置１０は、ＭＱＴＴにおけるＢｒｏｋｅｒとして機能するサーバである。ファジングテスト装置１０には、ファジングテストプログラム１００がインストールされている。ファジングテストプログラム１００は、ＭＱＴＴを用いたファジングによりテスト対象をテストするための１以上のプログラムである。
【００１６】
ファジングテスト装置１０は、ファジングテストプログラム１００により、テストメッセージの作成やテストメッセージの送信等を行うことで、テスト対象の挙動確認（すなわち、テスト対象でエラーが発生したか否かの確認）を行うことができる。このとき、本実施形態に係るファジングテスト装置１０は、ファジングテストプログラム１００により、テスト対象におけるエラー発生率に応じて、ＱｏＳに「０」が設定されたテストメッセージと、ＱｏＳに「１」が設定されたテストメッセージとの送信比率を動的に変更する。
【００１７】
これにより、本実施形態に係るファジングテスト装置１０では、無駄なテストメッセージの送信を減少させると共に、単位時間あたりに送信できるテストメッセージ数を増加させることができ、効率的なファジングテストを行うことができるようになる。
【００１８】
無駄なテストメッセージとは、後述するテスト対象プログラム２００に入力されないテストメッセージのことであり、テスト対象プログラム２００のエラー発生後に送信されるテストメッセージが該当する。一方で、テスト対象プログラム２００に入力されて、エラーの発生有無が検証されたテストメッセージのことは「有効なテストメッセージ」とも表す。
【００１９】
なお、以降では、ＱｏＳに「０」が設定されたテストメッセージを「テストメッセージ（ＱｏＳ＝０）」とも表す。同様に、ＱｏＳに「１」が設定されたテストメッセージを「テストメッセージ（ＱｏＳ＝１）」とも表す。
【００２０】
テスト対象装置２０は、ＭＱＴＴにおけるＳｕｂｓｃｒｉｂｅｒとして機能するクライアントである。テスト対象装置２０には、テスト対象プログラム２００がインストールされている。テスト対象プログラム２００は、ＭＱＴＴを用いたファジングにおけるテスト対象となる１以上のプログラムである。ファジングテスト装置１０から送信されたテストメッセージに含まれるファズデータがテスト対象プログラム２００に入力されることで、テスト対象プログラム２００の挙動確認を行うことができる。
【００２１】
なお、図１に示すファジングテストシステム１の構成は、一例であって、他の構成であっても良い。例えば、図１に示すファジングテストシステム１には、複数台のファジングテスト装置１０が含まれていても良い。また、例えば、図１に示すファジングテストシステム１には、複数台のテスト対象装置２０が含まれていても良い。
【００２２】
また、本実施形態では、ファジングテスト装置１０がＢｒｏｋｅｒとして機能し、テスト対象装置２０がＳｕｂｓｃｒｉｂｅｒとして機能する場合について説明するが、これに限られない。本実施形態は、例えば、ファジングテスト装置１０がＰｕｂｌｉｓｈｅｒとして機能し、テスト対象装置２０がＢｒｏｋｅｒとして機能する場合についても同様に適用することができる。
【００２３】
＜ファジングテストの概略＞
次に、本実施形態に係るファジングテストシステム１におけるファジングの概略について、図２を参照しながら説明する。図２は、本実施形態に係るファジングテストシステム１におけるファジングの概略を説明する図である。
【００２４】
図２（ａ）に示すように、本実施形態に係るファジングテスト装置１０は、ｋ＝１，２，・・・，Ｍとした場合に、各ｋに対して、Ｎｋ個のテストメッセージ（以降、「ｋ回目のメッセージ群」とも表す。）をテスト対象装置２０に送信する。なお、Ｎｋは、１以上の整数である。
【００２５】
このとき、本実施形態に係るファジングテスト装置１０は、ｋ回目のメッセージ群の送信において、Ｎｋ−１個のテストメッセージ（ＱｏＳ＝０）を送信した後、１個のテストメッセージ（ＱｏＳ＝１）を送信する。すなわち、Ｎｋ≠０である場合、テストメッセージ（ＱｏＳ＝０）に対するテストメッセージ（ＱｏＳ＝１）の送信比率は、１／Ｎｋである。なお、Ｍは、ユーザにより予め指定された１以上の整数である。
【００２６】
そして、図２（ｂ）及び（ｃ）に示すように、本実施形態に係るファジングテスト装置１０は、これまでのテストメッセージに対するエラー発生率に応じて、Ｎｋ＋１を算出する。
【００２７】
このとき、図２（ｂ）に示すように、ｋ回目のメッセージ群の送信において、テスト対象装置２０でエラーが発生せず、エラー発生率が下がった場合（すなわち、ファジングテスト装置１０がＡＣＫを受信した場合）、Ｎｋ＋１＞ＮｋとなるようにＮｋ＋１が算出される。
【００２８】
したがって、この場合、ｋ＋１回目のメッセージ群の送信では、テストメッセージ（ＱｏＳ＝０）の送信比率が高くなると共に、テストメッセージ（ＱｏＳ＝１）の送信比率が低くなる。
【００２９】
一方で、図２（ｃ）に示すように、ｋ回目のメッセージ群の送信において、テスト対象装置２０でエラーが発生し、エラー発生率が上がった場合（すなわち、ファジングテスト装置１０がＡＣＫを受信しなかった場合）、Ｎｋ＋１＜ＮｋとなるようにＮｋ＋１が算出される。
【００３０】
したがって、この場合、ｋ＋１回目のメッセージ群の送信では、テストメッセージ（ＱｏＳ＝０）の送信比率が低くなると共に、テストメッセージ（ＱｏＳ＝１）の送信比率が高くなる。
【００３１】
以上のように、本実施形態に係るファジングテスト装置１０は、テスト対象装置２０に対して、Ｎｋ−１個のテストメッセージ（ＱｏＳ＝０）を送信した後、１個のテストメッセージ（ＱｏＳ＝１）を送信する。そして、本実施形態に係るファジングテスト装置１０は、テスト対象装置２０におけるｋ回目までのエラー発生率に応じて、ｋ＋１回目のメッセージ群のメッセージ数Ｎｋ＋１を算出する。すなわち、本実施形態に係るファジングテスト装置１０は、テスト対象装置２０におけるｋ回目までのエラー発生率に応じて、ｋ＋１回目のメッセージ群に含まれるテストメッセージ（ＱｏＳ＝１）の送信比率を動的に変更する。
【００３２】
このように、本実施形態に係るファジングテスト装置１０は、エラー発生率に応じて、テスト対象装置２０の死活を確認するための死活確認メッセージ（すなわち、ＱｏＳに「１」が設定されたメッセージ）の送信比率を動的に変更する。
【００３３】
これにより、無駄なテストメッセージの送信を減少させる（すなわち、有効なテストメッセージ数を増加させる）と共に、単位時間あたりに送信できるテストメッセージ数を増加させることができ、効率的なファジングテストを行うことができるようになる。
【００３４】
＜ハードウェア構成＞
次に、本実施形態に係るファジングテスト装置１０及びテスト対象装置２０のハードウェア構成について、図３を参照しながら説明する。図３は、本実施形態に係るファジングテスト装置１０及びテスト対象装置２０のハードウェア構成の一例を示す図である。なお、ファジングテスト装置１０及びテスト対象装置２０は、同様のハードウェア構成を有しているため、以降では、主に、ファジングテスト装置１０のハードウェア構成について説明する。
【００３５】
図３に示すように、本実施形態に係るファジングテスト装置１０は、入力装置１１と、表示装置１２と、外部Ｉ／Ｆ１３と、通信Ｉ／Ｆ１４とを有する。また、本実施形態に係るファジングテスト装置１０は、ＲＯＭ（Read  Only  Memory）１５と、ＲＡＭ（Random  Access  Memory）１６と、ＣＰＵ（Central  Processing  Unit）１７と、補助記憶装置１８とを有する。これら各ハードウェアは、それぞれがバス１９で相互に接続されている。
【００３６】
入力装置１１は、例えばキーボードやマウス、タッチパネル等であり、ファジングテスト装置１０に各種の操作信号を入力するのに用いられる。表示装置１２は、例えばディスプレイ等であり、ファジングテスト装置１０による各種の処理結果を表示する。
【００３７】
外部Ｉ／Ｆ１３は、外部装置とのインタフェースである。外部装置には、記録媒体１３ａ等がある。ファジングテスト装置１０は、外部Ｉ／Ｆ１３を介して、記録媒体１３ａの読み取りや書き込みを行うことができる。
【００３８】
記録媒体１３ａには、例えば、ＳＤメモリカード(SD  memory  card）やＵＳＢ（Universal  Serial  Bus）メモリ、ＣＤ（Compact  Disk）、ＤＶＤ（Digital  Versatile  Disk）等がある。
【００３９】
通信Ｉ／Ｆ１４は、ファジングテスト装置１０がネットワークＮに接続するためのインタフェースである。ファジングテスト装置１０は、通信Ｉ／Ｆ１４を介して、テスト対象装置２０と通信を行うことができる。
【００４０】
ＲＯＭ１５は、電源を切ってもデータを保持することができる不揮発性の半導体メモリである。ＲＡＭ１６は、プログラムやデータを一時保持する揮発性の半導体メモリである。ＣＰＵ１７は、例えば補助記憶装置１８やＲＯＭ１５等からプログラムやデータをＲＡＭ１６上に読み出して、各種処理を実行する演算装置である。
【００４１】
補助記憶装置１８は、例えばＨＤＤ（Hard  Disk  Drive）やＳＳＤ（Solid  State  Drive）等であり、プログラムやデータを格納している不揮発性のメモリである。補助記憶装置１８に格納されるプログラムやデータには、例えば、基本ソフトウェアであるＯＳ（Operating  System）や各種アプリケーションプログラム、ファジングテストプログラム１００等がある。なお、テスト対象装置２０の補助記憶装置１８には、テスト対象プログラム２００等が格納されている。
【００４２】
本実施形態に係るファジングテスト装置１０及びテスト対象装置２０は、図３に示すハードウェア構成を有することにより、後述する各種処理が実現される。
【００４３】
＜機能構成＞
次に、本実施形態に係るファジングテスト装置１０の機能構成について、図４を参照しながら説明する。図４は、本実施形態に係るファジングテスト装置１０の機能構成の一例を示す図である。
【００４４】
図４に示すように、本実施形態に係るファジングテスト装置１０は、ファジングテスト処理部１１０と、記憶部１２０とを有する。ファジングテスト処理部１１０は、ファジングテストプログラム１００がＣＰＵ１７に実行させる処理により実現される。また、記憶部１２０は、例えば補助記憶装置１８を用いて実現可能である。なお、記憶部１２０は、例えば、ファジングテスト装置１０とネットワークＮを介して接続される記憶装置等を用いて実現されても良い。
【００４５】
ファジングテスト処理部１１０は、テストメッセージの作成及び送信に関する処理を実行する。ファジングテスト処理部１１０は、ＵＩ制御部１１１と、メッセージ時間算出部１１２と、エラー発生率算出部１１３と、メッセージ数算出部１１４と、メッセージ作成部１１５とを有する。また、ファジングテスト処理部１１０は、メッセージ送信部１１６と、メッセージ受信部１１７と、再起動指示部１１８と、エラー有無設定部１１９とを有する。
【００４６】
ＵＩ制御部１１１は、ユーザによる各種操作の入力を受け付けると共に、各種画面を表示する。例えば、ＵＩ制御部１１１は、ファジングテストを開始するための操作（テスト開始操作）の入力を受け付ける。また、例えば、ＵＩ制御部１１１は、ユーザがテスト開始操作を行うための画面（テスト開始画面）を表示する。
【００４７】
メッセージ時間算出部１１２は、ＵＩ制御部１１１がテスト開始操作を受け付けると、メッセージ時間ｔ０と、メッセージ時間ｔ１とを算出する。メッセージ時間ｔ０とは、テストメッセージ（ＱｏＳ＝０）の送信後、当該テストメッセージ（ＱｏＳ＝０）がテスト対象装置２０に受信されるまでの時間である。また、メッセージ時間ｔ１とは、テストメッセージ（ＱｏＳ＝１）の送信後、当該テストメッセージ（ＱｏＳ＝１）に対するＡＣＫを受信するまでの時間である。なお、メッセージ時間算出部１１２は、第２の算出部の一例である。
【００４８】
エラー発生率算出部１１３は、ｋ回目までのメッセージ群を送信した後のテスト対象装置２０のエラー発生率ｐｋ＋１を算出する。なお、エラー発生率算出部１１３は、第１の算出部の一例である。
【００４９】
メッセージ数算出部１１４は、エラー発生率算出部１１３が算出したエラー発生率ｐｋ＋１から、ｋ＋１回目のメッセージ群に含まれるテストメッセージの数Ｎｋ＋１を算出する。なお、以降では、メッセージ群に含まれるテストメッセージの数を「メッセージ群のメッセージ数」とも表す。なお、メッセージ数算出部１１４は、決定部の一例である。
【００５０】
メッセージ群のメッセージ数Ｎｋが算出されることで、ｋ回目のメッセージ群の送信におけるテストメッセージ（ＱｏＳ＝１）の送信比率１／Ｎｋが決定される。ただし、この場合、Ｎｋ≠０であるもとする。なお、Ｎｋが１である場合、ｋ回目のメッセージ群には、１個のテストメッセージ（ＱｏＳ＝１）のみが含まれることになる。
【００５１】
メッセージ作成部１１５は、ファズデータが含まれるテストメッセージを作成する。ｋ回目のメッセージ群を送信する場合、メッセージ作成部１１５は、Ｎｋ−１個のテストメッセージ（ＱｏＳ＝０）と、１個のテストメッセージ（ＱｏＳ＝１）とを作成する。ファズデータとは、例えば、長い文字列や乱数等のデータである。なお、テストメッセージは、ファズメッセージの一例である。また、メッセージ作成部１１５は、メッセージ作成部の一例である。
【００５２】
メッセージ送信部１１６は、メッセージ作成部１１５により作成されたテストメッセージをテスト対象装置２０に送信する。ｋ回目のメッセージ群を送信する場合、メッセージ送信部１１６は、Ｎｋ−１個のテストメッセージ（ＱｏＳ＝０）をテスト対象装置２０に送信した後、１個のテストメッセージ（ＱｏＳ＝１）をテスト対象装置２０に送信する。なお、メッセージ送信部１１６は、送信部の一例である。
【００５３】
メッセージ受信部１１７は、メッセージ送信部１１６が送信したテストメッセージ（ＱｏＳ＝１）に対するＡＣＫを受信する。
【００５４】
再起動指示部１１８は、メッセージ送信部１１６がテストメッセージ（ＱｏＳ＝１）を送信した後、メッセージ時間ｔ１が経過する前に、メッセージ受信部１１７がＡＣＫを受信しなかった場合、再起動指示をテスト対象装置２０に送信する。すなわち、再起動指示部１１８は、テスト対象装置２０でエラーが発生した場合、再起動指示を当該テスト対象装置２０に送信する。なお、再起動指示部１１８は、再起動指示部の一例である。
【００５５】
エラー有無設定部１１９は、ｋ回目のメッセージ群に含まれるテストメッセージを受信したテスト対象装置２０でエラーが発生した場合、エラーが発生したことを示す「１」をエラー有無ｅｋに設定する。一方で、エラー有無設定部１１９は、ｋ回目のメッセージ群に含まれるテストメッセージを受信したテスト対象装置２０でエラーが発生しなかった場合、エラーが発生しなかったことを示す「０」をエラー有無ｅｋに設定する。
【００５６】
記憶部１２０は、テストメッセージの作成及び送信に関する処理に用いられる各種情報を記憶する。記憶部１２０に記憶される情報には、例えば、ｋ回目のメッセージ群のメッセージ数Ｎｋ、ｋ回目のメッセージ群におけるエラー有無ｅｋ、メッセージ時間ｔ０、及びメッセージ時間ｔ１等がある。これらの各種情報は、ファジングテスト処理部１１０により、記憶部１２０に保存される。
【００５７】
＜テストメッセージの作成及び送信処理＞
次に、本実施形態に係るファジングテスト処理部１１０がテストメッセージを作成して、テスト対象装置２０に送信する処理について、図５を参照しながら説明する。図５は、本実施形態に係るテストメッセージの作成及び送信処理の一例を示すフローチャートである。
【００５８】
まず、ファジングテスト処理部１１０のＵＩ制御部１１１は、例えば図６に示すテスト開始画面Ｇ１００を表示する（ステップＳ５０１）。図６は、本実施形態に係るテスト開始画面Ｇ１００の一例を示す図である。なお、テスト開始画面Ｇ１００は、例えば、ファジングテストプログラム１００が起動されることにより表示される。
【００５９】
図６に示すテスト開始画面Ｇ１００には、メッセージ群の総送信回数の入力欄Ｇ１１０と、想定初期エラー発生率の入力欄Ｇ１２０と、テスト実行ボタンＧ１３０とが含まれる。ユーザは、所望の総送信回数を入力欄Ｇ１１０に指定すると共に、想定初期エラー発生率を入力欄Ｇ１２０に指定した上で、テスト実行ボタンＧ１３０を押下することで、テスト開始操作を行うことができる。以降では、メッセージ群の総送信回数Ｍと、想定初期エラー発生率ｐ１とが指定された上で、テスト開始操作が行われたものとする。
【００６０】
なお、図６に示すテスト開始画面Ｇ１００では、テスト対象装置２０のＩＰ（Internet  Protocol）アドレス等を指定することができても良い。
【００６１】
次に、ファジングテスト処理部１１０のＵＩ制御部１１１は、メッセージ群の総送信回数Ｍと、想定初期エラー発生率ｐ１とが指定されたテスト開始操作の入力を受け付ける（ステップＳ５０２）。
【００６２】
次に、ファジングテスト処理部１１０は、メッセージ時間の算出処理を行って、メッセージ時間ｔ０と、メッセージ時間ｔ１とを算出する（ステップＳ５０３）。メッセージ時間ｔ０と、メッセージ時間ｔ１とは関係０＜ｔ０≦ｔ１を満たす。算出されたメッセージ時間ｔ０と、メッセージ時間ｔ１とは、記憶部１２０に保存される。なお、メッセージ時間の算出処理の詳細については後述する。
【００６３】
次に、ファジングテスト処理部１１０のメッセージ数算出部１１４は、１回目のメッセージ群のメッセージ数Ｎ１を算出する（ステップＳ５０４）。ここで、メッセージ数算出部１１４は、以下の（式１）により１回目のメッセージ群のメッセージ数Ｎ１を算出する。算出されたメッセージ数Ｎ１は、記憶部１２０に保存される。
【００６４】
【数１】
2018195288.tif 000003
【００６５】
次に、ファジングテスト処理部１１０は、メッセージ群の送信回数ｋを「１」に初期化する（ステップＳ５０５）。ｋは、メッセージ群の送信回数を示す変数である。
【００６６】
次に、ファジングテスト処理部１１０は、送信メッセージ数ｎを「１」に初期化する（ステップＳ５０６）。ｎは、メッセージ群に含まれるテストメッセージの送信回数を示す変数である。
【００６７】
次に、ファジングテスト処理部１１０のメッセージ作成部１１５は、テストメッセージ（ＱｏＳ＝０）を作成する（ステップＳ５０７）。すなわち、メッセージ作成部１１５は、ファズデータを作成した上で、作成したファズデータが含まれ、かつ、ＱｏＳに「０」が設定されたテストメッセージを作成する。
【００６８】
次に、ファジングテスト処理部１１０のメッセージ送信部１１６は、上記のステップＳ５０７で作成されたテストメッセージ（ＱｏＳ＝０）をテスト対象装置２０に送信する（ステップＳ５０８）。
【００６９】
次に、ファジングテスト処理部１１０は、送信メッセージ数ｎが、Ｎｋ−１以上であるか否かを判定する（ステップＳ５０９）。すなわち、ファジングテスト処理部１１０は、Ｎｋ−１個のテストメッセージ（ＱｏＳ＝０）がテスト対象装置２０に送信されたか否かを判定する。
【００７０】
ステップＳ５０９において、送信メッセージ数ｎがＮｋ−１以上でないと判定された場合、ファジングテスト処理部１１０は、送信メッセージ数ｎに「１」を加算する（ステップＳ５１０）。そして、ファジングテスト処理部１１０は、ステップＳ５０７に戻る。これにより、Ｎｋ−１個のテストメッセージ（ＱｏＳ＝０）がテスト対象装置２０に送信される。
【００７１】
一方、ステップＳ５０９において、送信メッセージ数ｎがＮｋ−１以上であると判定された場合、ファジングテスト処理部１１０のメッセージ作成部１１５は、テストメッセージ（ＱｏＳ＝１）を作成する（ステップＳ５１１）。すなわち、メッセージ作成部１１５は、ファズデータを作成した上で、作成したファズデータが含まれ、かつ、ＱｏＳに「１」が設定されたテストメッセージを作成する。
【００７２】
次に、ファジングテスト処理部１１０のメッセージ送信部１１６は、上記のステップＳ５１１で作成されたテストメッセージ（ＱｏＳ＝１）をテスト対象装置２０に送信する（ステップＳ５１２）。
【００７３】
次に、ファジングテスト処理部１１０のメッセージ受信部１１７は、メッセージ時間ｔ１以内に、テスト対象装置２０からＡＣＫを受信したか否かを判定する（ステップＳ５１３）。すなわち、ファジングテスト処理部１１０は、上記のステップＳ５０８及びステップＳ５１２で送信されたテストメッセージを受信したテスト対象装置２０でエラーが発生したか否かを判定する。
【００７４】
ステップＳ５１３において、メッセージ時間ｔ１以内にＡＣＫを受信した場合、ファジングテスト処理部１１０のエラー有無設定部１１９は、ｋ回目のエラー有無ｅｋに「０」を設定する（ステップＳ５１４）。「０」が設定されたエラー有無ｅｋは、記憶部１２０に保存される。
【００７５】
このように、ｋ回目のメッセージ群に含まれる全てのテストメッセージでエラーが発生しなかった場合、エラー有無ｅｋには、テスト対象装置２０でエラーが発生しなかったことを示す「０」が設定される。
【００７６】
一方、ステップＳ５１３において、メッセージ時間ｔ１以内にＡＣＫを受信しなかった場合、ファジングテスト処理部１１０の再起動指示部１１８は、再起動指示をテスト対象装置２０に送信する（ステップＳ５１５）。これにより、エラーが発生したテスト対象装置２０が再起動される。なお、再起動指示には、例えば、ＳＳＨ（Secure  Shell）を用いた再起動コマンド等が挙げられる。
【００７７】
次に、ファジングテスト処理部１１０のエラー有無設定部１１９は、ｋ回目のエラー有無ｅｋに「１」を設定する（ステップＳ５１６）。「１」が設定されたエラー有無ｅｋは、記憶部１２０に保存される。
【００７８】
このように、ｋ回目のメッセージ群に含まれるテストメッセージでエラーが発生した場合、エラー有無ｅｋには、テスト対象装置２０でエラーが発生したことを示す「１」が設定される。
【００７９】
ステップＳ５１４又はステップＳ５１６に続いて、ファジングテスト処理部１１０のエラー発生率算出部１１３は、以下の（式２）により、ｋ回目までのメッセージ群を送信した後のテスト対象装置２０のエラー発生率ｐｋ＋１を算出する（ステップＳ５１７）。
【００８０】
【数２】
2018195288.tif 000004
【００８１】
次に、ファジングテスト処理部１１０のメッセージ数算出部１１４は、ｋ＋１回目のメッセージ群のメッセージ数Ｎｋ＋１を算出する（ステップＳ５１８）。ここで、メッセージ数算出部１１４は、以下の（式３）によりｋ＋１回目のメッセージ群のメッセージ数Ｎｋ＋１を算出する。算出されたメッセージ数Ｎｋ＋１は、記憶部１２０に保存される。
【００８２】
【数３】
2018195288.tif 000005
【００８３】
上記の（式３）によりメッセージ数Ｎｋ＋１を算出することで、ｋ回目のメッセージ群の送信においてテスト対象装置２０でエラーが発生した場合（すなわち、エラー発生率ｐｋ＋１＞ｐｋとなった場合）、Ｎｋ＋１＜ＮｋとなるようにＮｋ＋１が算出される。これにより、ファジングにおけるテストメッセージ（ＱｏＳ＝１）の送信比率が高くなるように決定される。したがって、テスト対象装置２０で発生したエラーを素早く検出することができ、無駄なテストメッセージの送信数を減少させることができる。
【００８４】
一方で、ｋ回目のメッセージ群の送信においてテスト対象装置２０でエラーが発生しなかった場合、（すなわち、エラー発生率ｐｋ＋１＜ｐｋとなった場合）、Ｎｋ＋１＞ＮｋとなるようにＮｋ＋１が算出される。これにより、ファジングにおけるテストメッセージ（ＱｏＳ＝０）の送信比率が高まるように決定される。言い換えれば、ファジングにおけるテストメッセージ（ＱｏＳ＝１）の送信比率が低くなるように決定される。したがって、単位時間あたりのテストメッセージの送信数を増加させることができる。
【００８５】
また、上記の（式３）によりメッセージ数Ｎｋ＋１を算出することで、メッセージ時間ｔ０と、メッセージ時間ｔ１とが近い程、Ｎｋ＋１が「１」に近くなる。すなわち、メッセージ（ＱｏＳ＝０）がテスト対象装置２０に届くまでの時間と、メッセージ（ＱｏＳ＝１）に対するＡＣＫをファジングテスト装置１０が受け取るまでの時間とが近い場合には、テストメッセージ（ＱｏＳ＝１）の送信比率が高くなるように決定される。これにより、単位時間あたりのテストメッセージの送信数を増加させると共に、無駄なテストメッセージ数を減少させることができる。
【００８６】
なお、上述したように、Ｎｋ＋１の逆数が、ｋ＋１回目のメッセージ群におけるテストメッセージ（ＱｏＳ＝１）の送信比率となる。メッセージ数算出部１１４は、上記のステップＳ５１８で、ｋ＋１回目のメッセージ群におけるテストメッセージ（ＱｏＳ＝１）の送信比率１／Ｎｋ＋１を算出しても良い。
【００８７】
次に、ファジングテスト処理部１１０は、メッセージ群の送信回数ｋが、メッセージ群の総送信回数Ｍ以上であるか否かを判定する（ステップＳ５１９）。すなわち、ファジングテスト処理部１１０は、ｋ＝１，・・・，Ｍに対して、Ｎｋ−１個のテストメッセージ（ＱｏＳ＝０）と、１個のテストメッセージ（ＱｏＳ＝１）とがテスト対象装置２０に送信されたか否かを判定する。
【００８８】
ステップＳ５１９において、メッセージ群の送信回数ｋがＭ以上でないと判定された場合、ファジングテスト処理部１１０は、メッセージ群の送信回数ｋに「１」を加算する（ステップＳ５２０）。そして、ファジングテスト処理部１１０は、ステップＳ５０６に戻る。これにより、ｋ＝１，・・・，Ｍに対して、Ｎｋ−１個のテストメッセージ（ＱｏＳ＝０）と、１個のテストメッセージ（ＱｏＳ＝１）とがテスト対象装置２０に送信される。言い換えれば、Ｍ個のメッセージ群がテスト対象装置２０に送信される。
【００８９】
一方、ステップＳ５１９において、メッセージ群の送信回数ｋがＭ以上であると判定された場合、ファジングテスト処理部１１０は、処理を終了する。すなわち、ファジングテスト処理部１１０は、ファジングを終了する。
【００９０】
以上のように、本実施形態に係るファジングテスト装置１０は、テスト対象装置２０に対して、Ｎｋ−１個のテストメッセージ（ＱｏＳ＝０）を送信した後、１個のテストメッセージ（ＱｏＳ＝１）を送信する。そして、本実施形態に係るファジングテスト装置１０は、テスト対象装置２０におけるｋ回目までのエラー発生率に応じて、ｋ＋１回目のメッセージ群に含まれるテストメッセージ（ＱｏＳ＝１）の送信比率を動的に変更する。
【００９１】
このように、本実施形態に係るファジングテスト装置１０は、テスト対象装置２０におけるエラー発生率に応じて、死活確認メッセージ（すなわち、ＱｏＳに「１」が設定されたメッセージ）の送信比率を動的に変更する。これにより、無駄なテストメッセージの送信を減少させる（すなわち、有効なテストメッセージ数を増加させる）と共に、単位時間あたりに送信できるテストメッセージ数を増加させることができ、効率的なファジングテストを行うことができるようになる。
【００９２】
＜メッセージ時間の算出処理＞
ここで、上記のステップＳ５０３のメッセージ時間の算出処理について、図７を参照しながら説明する。図７は、本実施形態に係るメッセージ時間の算出処理の一例を示すフローチャートである。
【００９３】
まず、ファジングテスト処理部１１０は、テストメッセージ（ＱｏＳ＝０）の送信数ｒを「１」に初期化する（ステップＳ７０１）。ｒは、メッセージ時間ｔ０を算出するためのテストメッセージ（ＱｏＳ＝０）の送信回数を示す変数である。
【００９４】
次に、ファジングテスト処理部１１０のメッセージ作成部１１５は、テストメッセージ（ＱｏＳ＝０）を作成する（ステップＳ７０２）。すなわち、メッセージ作成部１１５は、ファズデータを作成した上で、作成したファズデータが含まれ、かつ、ＱｏＳに「０」が設定されたテストメッセージを作成する。なお、このとき、メッセージ作成部１１５は、テスト対象装置２０でエラーが発生しないファズデータを作成する。
【００９５】
次に、ファジングテスト処理部１１０のメッセージ送信部１１６は、上記のステップＳ７０２で作成されたテストメッセージ（ＱｏＳ＝０）をテスト対象装置２０に送信する（ステップＳ７０３）。
【００９６】
次に、ファジングテスト処理部１１０は、テストメッセージ（ＱｏＳ＝０）の送信数ｒが「１」であるか否かを判定する（ステップＳ７０４）。
【００９７】
ステップＳ７０４において、送信数ｒが「１」であると判定された場合、ファジングテスト処理部１１０のメッセージ送信部１１６は、上記のステップＳ７０３で送信したテストメッセージ（ＱｏＳ＝０）の送信時刻ｔａを記憶部１２０に保存する（ステップＳ７０５）。すなわち、メッセージ送信部１１６は、最初に送信したテストメッセージ（ＱｏＳ＝０）の送信時刻ｔａを記憶部１２０に保存する。
【００９８】
一方、ステップＳ７０４において、送信数ｒが「１」でないと判定された場合、又はステップＳ７０５に続いて、ファジングテスト処理部１１０は、テストメッセージ（ＱｏＳ＝０）の送信数ｒがＲ以上であるか否かを判定する（ステップＳ７０６）。Ｒは、例えば、ユーザ等により予め設定された１以上の整数である。
【００９９】
ステップＳ７０６において、送信数ｒがＲ以上でないと判定された場合、ファジングテスト処理部１１０は、テストメッセージ（ＱｏＳ＝０）の送信数ｒに「１」を加算する（ステップＳ７０７）。そして、ファジングテスト処理部１１０は、ステップＳ７０２に戻る。これにより、Ｒ個のテストメッセージ（ＱｏＳ＝０）がテスト対象装置２０に送信される。
【０１００】
一方、ステップＳ７０６において、送信数ｒがＲ以上であると判定された場合、ファジングテスト処理部１１０のメッセージ作成部１１５は、テストメッセージ（ＱｏＳ＝１）を作成する（ステップＳ７０８）。すなわち、メッセージ作成部１１５は、ファズデータを作成した上で、作成したファズデータが含まれ、かつ、ＱｏＳに「１」が設定されたテストメッセージを作成する。なお、このとき、メッセージ作成部１１５は、テスト対象装置２０でエラーが発生しないファズデータを作成する。
【０１０１】
次に、ファジングテスト処理部１１０のメッセージ送信部１１６は、上記のステップＳ７０８で作成されたテストメッセージ（ＱｏＳ＝１）をテスト対象装置２０に送信する（ステップＳ７０９）。
【０１０２】
次に、ファジングテスト処理部１１０のメッセージ送信部１１６は、上記のステップＳ７０８で送信したテストメッセージ（ＱｏＳ＝１）の送信時刻ｔｂを記憶部１２０に保存する（ステップＳ７１０）。
【０１０３】
次に、ファジングテスト処理部１１０のメッセージ受信部１１７は、上記のステップＳ７０８で送信したテストメッセージ（ＱｏＳ＝１）に対するＡＣＫを受信したか否かを判定する（ステップＳ７１１）。
【０１０４】
ステップＳ７１１において、ＡＣＫを受信したと判定されなかった場合、ファジングテスト処理部１１０は、ステップＳ７１１に戻る。すなわち、この場合、ファジングテスト処理部１１０は、上記のステップＳ７０８で送信したテストメッセージ（ＱｏＳ＝１）に対するＡＣＫを受信するまで待ち状態となる。
【０１０５】
一方、ステップＳ７１１において、ＡＣＫを受信したと判定された場合、ファジングテスト処理部１１０のメッセージ受信部１１７は、当該ＡＣＫの受信時刻ｔｃを記憶部１２０に保存する（ステップＳ７１２）。
【０１０６】
次に、ファジングテスト処理部１１０のメッセージ時間算出部１１２は、テストメッセージ（ＱｏＳ＝０）のメッセージ時間ｔ０と、テストメッセージ（ＱｏＳ＝１）のメッセージ時間ｔ１とを算出する（ステップＳ７１３）。メッセージ時間算出部１１２は、以下の（式４）及び（式５）により、メッセージ時間ｔ０と、メッセージ時間ｔ１とを算出する。
【０１０７】
【数４】
2018195288.tif 000006
【０１０８】
【数５】
2018195288.tif 000007
【０１０９】
以上により、テストメッセージ（ＱｏＳ＝０）がテスト対象装置２０に到達するまでの時間を示すメッセージ時間ｔ０と、テストメッセージ（ＱｏＳ＝１）に対するＡＣＫを受け取るまでの時間を示すメッセージ時間ｔ１とが算出される。なお、ユーザは、上記のＲの値を大きな値に設定することで、メッセージ時間ｔ０の精度を向上させることができる。
【０１１０】
＜テストメッセージの作成及び送信処理の他の例＞
ここで、本実施形態に係るテストメッセージの作成及び送信処理の他の例について、図８を参照しながら説明する。図８は、本実施形態に係るテストメッセージの作成及び送信処理の他の例を示すフローチャートである。なお、図８のステップＳ５０３〜ステップＳ５１８及びステップＳ５２０は、図５と同様であるため、その説明を省略する。
【０１１１】
まず、ファジングテスト処理部１１０のＵＩ制御部１１１は、例えば図９に示すテスト開始画面Ｇ２００を表示する（ステップＳ８０１）。図９は、本実施形態に係るテスト開始画面Ｇ２００の他の例を示す図である。なお、テスト開始画面Ｇ２００は、例えば、ファジングテストプログラム１００が起動されることにより表示される。
【０１１２】
図９に示すテスト開始画面Ｇ２００には、総テスト時間の入力欄Ｇ２１０が含まれる。ユーザは、ファジングの総テスト時間を入力欄Ｇ２１０に指定すると共に、想定初期エラー発生率を入力欄Ｇ１２０に指定した上で、テスト実行ボタンＧ１３０を押下することで、テスト開始操作を行うことができる。以降では、総テスト時間Ｔと、想定初期エラー発生率ｐ１とが指定された上で、テスト開始操作が行われたものとする。
【０１１３】
次に、ファジングテスト処理部１１０のＵＩ制御部１１１は、総テスト時間Ｔと、想定初期エラー発生率ｐ１とが指定されたテスト開始操作の入力を受け付ける（ステップＳ８０２）。
【０１１４】
ステップＳ５０４に続いて、ファジングテスト処理部１１０は、ファジングの経過時間ｔを「０」に初期化する（ステップＳ８０３）。ｔは、ファジングの経過時間を示す変数である。
【０１１５】
また、ステップＳ５１８に続いて、ファジングテスト処理部１１０は、ファジングの経過時間ｔが、ファジングの総テスト時間Ｔ以上であるか否かを判定する（ステップＳ８０４）。
【０１１６】
ステップＳ８０４において、ファジングの経過時間ｔが総テスト時間Ｔ以上でないと判定された場合、ファジングテスト処理部１１０は、ステップＳ５２０に進む。これにより、総テスト時間Ｔが経過するまで、ステップＳ５０５〜ステップＳ５１８が繰り返し実行される。
【０１１７】
一方、ステップＳ５１９において、ファジングの経過時間ｔが総テスト時間Ｔ以上であると判定された場合、ファジングテスト処理部１１０は、処理を終了する。すなわち、ファジングテスト処理部１１０は、ファジングを終了する。
【０１１８】
以上のように、本実施形態に係るファジングテスト装置１０は、ユーザにより設定された総テスト時間Ｔが経過するまで、Ｎｋを動的に更新しながら、Ｎｋ−１個のテストメッセージ（ＱｏＳ＝０）と、１個のテストメッセージ（ＱｏＳ＝１）とを送信する。これにより、ユーザは、例えば、自身が所望する時間が経過するまでの間、効率的なファジングテストを行うことができるようになる。
【０１１９】
（第二の実施形態）
次に、第二の実施形態について説明する。第一の実施形態では、メッセージ時間の算出処理で予め算出されたメッセージ時間ｔ０及びｔ１を用いて、全てのテストメッセージでエラー発生の有無を判定した。しかしながら、ファジングテスト装置１０から送信されるテストメッセージの長さ（例えば、ペイロードの長さ）によって、当該テストメッセージがテスト対象装置２０に到達するまでの時間が変化し得る。また、当該テストメッセージにＱｏＳ＝１が設定されている場合、当該テストメッセージに対するＡＣＫをファジングテスト装置１０が受信するまでの時間も変化し得る。
【０１２０】
このため、テストメッセージ（ＱｏＳ＝０）の長さによっては、当該テストメッセージ（ＱｏＳ＝０）の送信後、テスト対象装置２０に受信されるまでの時間と、メッセージ時間ｔ０との誤差が大きくなる場合がある。同様に、テストメッセージ（ＱｏＳ＝１）の長さによっては、当該テストメッセージ（ＱｏＳ＝１）の送信後、ファジングテスト装置１０がＡＣＫを受信するまでの時間と、メッセージ時間ｔ１との誤差が大きくなる場合がある。
【０１２１】
したがって、テストメッセージ（ＱｏＳ＝０）に対するテストメッセージ（ＱｏＳ＝１）の送信比率１／Ｎｋが不正確となり、ファジングテストの効率が低下する場合がある。また、当該テストメッセージ（ＱｏＳ＝１）の送信後、ファジングテスト装置１０がＡＣＫを受信するまでの時間がメッセージ時間ｔ１よりも長くなることで、誤判定が発生し、ファジングテストの効率が低下する場合がある。
【０１２２】
そこで、本実施形態では、テストメッセージの長さに応じてテストメッセージの集合を複数の部分集合（これを「サブセット」とも表す。）に分割した上で、サブセット毎に、メッセージ時間ｔ０及びｔ１を算出する場合について説明する。テストメッセージの長さに応じてテストメッセージの集合を複数のサブセットに分割することで、例えば、各サブセットには同程度の長さのテストメッセージが含まれることになる。これにより、同一のサブセットに含まれるテストメッセージでは、当該サブセットについて算出されたメッセージ時間ｔ０及びｔ１との誤差を低減することができる。
【０１２３】
したがって、テストメッセージの長さが異なるためにメッセージ時間ｔ０及びｔ１に誤差が生じることによるファジングテストの効率低下を防止することができる。以降では、テストメッセージの長さを「メッセージ長」とも表す。
【０１２４】
なお、第二の実施形態では、主に、第一の実施形態との相違点について説明し、第一の実施形態と実質的に同様の構成要素については、適宜、その説明を省略又は簡略化する。
【０１２５】
＜機能構成＞
まず、本実施形態に係るファジングテスト装置１０の機能構成について、図１０を参照しながら説明する。図１０は、本実施形態に係るファジングテスト装置１０の機能構成の一例を示す図である。
【０１２６】
図１０に示すように、本実施形態に係るファジングテスト装置１０のファジングテスト処理部１１０は、更に、ソート部１２１と、分割部１２２と、計測メッセージ作成部１２３とを有する。
【０１２７】
また、本実施形態に係るメッセージ作成部１１５は、メッセージ時間の算出処理よりも前に、ファジングテストに用いられるテストメッセージの集合（以降、「メッセージ集合」とも表す。）を作成する。このとき、本実施形態に係るメッセージ作成部１１５は、例えば、ユーザに指定された数のテストメッセージが含まれるメッセージ集合を作成する。
【０１２８】
ソート部１２１は、メッセージ作成部１１５により作成されたメッセージ集合に含まれるテストメッセージをメッセージ長によってソート（並び替え）する。例えば、ソート部１２１は、メッセージ集合に含まれるテストメッセージをメッセージ長の昇順（又は降順）にソートする。
【０１２９】
分割部１２２は、ソート部１２１によるソート後のメッセージ集合を、当該メッセージ集合に含まれるテストメッセージの長さに応じて、１以上のサブセットに分割する。例えば、分割部１２２は、同一のサブセットに含まれるテストメッセージが同程度の長さとなるように、メッセージ集合を１以上のサブセットに分割する。これにより、例えば、同程度の長さのテストメッセージがそれぞれ含まれる１以上のサブセットが作成される。なお、分割部１２２は、分割部の一例である。
【０１３０】
計測メッセージ作成部１２３は、分割部１２２により作成されたサブセットのうちの選択されたサブセットに含まれるテストメッセージから、当該選択されたサブセットのメッセージ時間ｔ０及びｔ１の算出に用いるテストメッセージ（以降、「計測用メッセージ」とも表す。）を作成する。これにより、サブセット毎に計測用メッセージが作成される。
【０１３１】
そして、本実施形態に係るメッセージ時間算出部１１２では、計測メッセージ作成部１２３により作成された計測用メッセージを用いて、当該サブセットに含まれる各テストメッセージのファジングテストに用いるメッセージ時間ｔ０及びｔ１を算出する。その後、本実施形態では、サブセット毎に算出されたメッセージ時間ｔ０及びｔ１を用いて、当該サブセットに含まれる各テストメッセージのファジングテストが行われる。なお、計測メッセージ作成部１２３は、計測メッセージ作成部の一例である。
【０１３２】
このように、本実施形態では、例えば同程度の長さのテストメッセージが含まれるサブセット毎にメッセージ時間ｔ０及びｔ１を算出し、これら算出したメッセージ時間ｔ０及びｔ１を用いて、当該サブセットに含まれるテストメッセージのファジングテストを行う。これにより、当該サブセットに含まれるテストメッセージ（ＱｏＳ＝０）の送信後、テスト対象装置２０に受信されるまでの時間と、メッセージ時間ｔ０との誤差が低減させることができる。同様に、当該サブセットに含まれるテストメッセージ（ＱｏＳ＝１）の送信後、ファジングテスト装置１０がＡＣＫを受信するまでの時間と、メッセージ時間ｔ１との誤差を低減させることができる。したがって、本実施形態に係るファジングテスト装置１０によれば、テストメッセージの長さが異なるためにメッセージ時間ｔ０及びｔ１に誤差が生じることによるファジングテストの効率低下を防止することができる。
【０１３３】
＜テストメッセージの作成及び送信処理＞
次に、本実施形態に係るテストメッセージの作成及び送信処理について、図１１Ａ及び図１１Ｂを参照しながら説明する。図１１Ａ及び図１１Ｂは、本実施形態に係るテストメッセージの作成及び送信処理の一例を示すフローチャートである。なお、図１１Ａ及び図１１ＢのステップＳ５０４〜ステップＳ５０６、ステップＳ５０８〜ステップＳ５０９及びステップＳ５１２〜ステップＳ５２０は、図５と同様であるため、その説明を省略する。
【０１３４】
まず、ファジングテスト処理部１１０のＵＩ制御部１１１は、例えば図１２に示すテスト開始画面Ｇ３００を表示する（ステップＳ１１０１）。図１２は、テスト開始画面Ｇ３００の一例を示す図である。なお、テスト開始画面Ｇ３００は、例えば、ファジングテストプログラム１００が起動されることにより表示される。
【０１３５】
図１２に示すテスト開始画面Ｇ３００には、総メッセージ数の入力欄Ｇ３１０と、サブセット数（メッセージ集合の分割数）の入力欄Ｇ３２０とが含まれる。ユーザは、作成されるテストメッセージの総数と、メッセージ集合の分割数とをそれぞれ入力欄Ｇ３１０と入力欄Ｇ３２０とに指定すると共に、想定初期エラー発生率を入力欄Ｇ１２０に指定する。そして、テスト実行ボタンＧ１３０を押下することで、ユーザは、テスト開始操作を行うことができる。以降では、総メッセージ数Ｌと、サブセット数Ｓと、想定初期エラー発生率ｐ１とが指定された上で、テスト開始操作が行われたものとする。
【０１３６】
次に、ファジングテスト処理部１１０のＵＩ制御部１１１は、総メッセージ数Ｌと、サブセット数Ｓと、想定初期エラー発生率ｐ１とが指定されたテスト開始操作の入力を受け付ける（ステップＳ１１０２）。
【０１３７】
次に、ファジングテスト処理部１１０のメッセージ作成部１１５は、Ｌ個のテストメッセージが含まれるメッセージ集合を作成する（ステップＳ１１０３）。これらのＬ個のテストメッセージは、ＱｏＳに任意の値が設定されていても良いし、ＱｏＳが設定されていなくても良い。又は、全てのテストメッセージのＱｏＳが「０」又は「１」に設定されていても良い。なお、本実施形態では、総メッセージ数Ｌはユーザにより指定されるものとしたが、これに限られず、例えば、総メッセージ数Ｌは予め決められていても良い。
【０１３８】
次に、ファジングテスト処理部１１０のソート部１２１は、メッセージ作成部１１５により作成されたメッセージ集合に含まれるテストメッセージをメッセージ長によってソートする（ステップＳ１１０４）。ソート部１２１は、例えば、メッセージ集合に含まれるテストメッセージをメッセージ長の昇順（又は降順）にソートする。
【０１３９】
次に、ファジングテスト処理部１１０の分割部１２２は、ソート部１２１によるソート後のメッセージ集合をＳ個のサブセットに分割する（ステップＳ１１０５）。
【０１４０】
例えば、分割部１２２は、ソート後のメッセージ集合の先頭（又は末尾）からｃｅｉｌ（Ｌ／Ｓ）個ずつテストメッセージを取得し、取得したｃｅｉｌ（Ｌ／Ｓ）個のテストメッセージを１つのサブセットとする。なお、ｃｅｉｌは、Ｌ／Ｓの小数点以下を切り上げることを意味する。
【０１４１】
より具体的には、例えば、ソート後のメッセージ集合に含まれる１番目からｃｅｉｌ（Ｌ／Ｓ）番目までのテストメッセージをサブセットＶ１、ｃｅｉｌ（Ｌ／Ｓ）＋１番目から２×ｃｅｉｌ（Ｌ／Ｍ）番目までのテストメッセージをサブセットＶ２とする。以降も同様に、（ｉ−１）×ｃｅｉｌ（Ｌ／Ｓ）＋１番目からｉ×ｃｅｉｌ（Ｌ／Ｓ）番目までのテストメッセージをサブセットＶｉとする。ただし、ｉ＝１，２，・・・，Ｓ−１である。
【０１４２】
また、（Ｓ−１）×ｃｅｉｌ（Ｌ／Ｓ）＋１番目以降の全てのテストメッセージをサブセットＶＳとする。
【０１４３】
これにより、ｃｅｉｌ（Ｌ／Ｓ）個のテストメッセージが含まれるＳ−１個のサブセットと、ｃｅｉｌ（Ｌ／Ｓ）個以下のテストメッセージが含まれる１個のサブセットとにメッセージ集合が分割される。このとき、テストメッセージの長さの昇順又は降順にソートされたメッセージ集合の先頭又は末尾から順にｃｅｉｌ（Ｌ／Ｓ）個のテストメッセージを取得することで各サブセットに分割しているため、同一のサブセットに含まれるテストメッセージの長さは同程度となる。
【０１４４】
ただし、上記以外にも、例えば、或る範囲内の長さのメッセージが同一のサブセットに含まれるように、メッセージ集合を分割しても良い。例えば、メッセージの長さを表す定数をｄ１，ｄ２，・・・，ｄＳ，ｄＳ＋１として、ｄ１＜ｄ２＜・・・＜ｄＳ＜ｄＳ＋１とする。このとき、メッセージの長さがｄ１以上ｄ２未満であるテストメッセージをサブセットＶ１，メッセージの長さがｄ２以上ｄ３未満であるテストメッセージをサブセットＶ２，・・・，メッセージの長さがｄＳ以上ｄＳ＋１未満であるテストメッセージをサブセットＶＳに含まれるように、メッセージ集合を分割しても良い。これにより、上記と同様に、同一のサブセットに含まれるテストメッセージの長さは同程度となる。
【０１４５】
なお、同一のサブセットに含まれるテストメッセージの長さが同程度となるようにメッセージ集合をサブセットに分割する場合に限られず、例えば、各サブセットに含まれるテストメッセージの長さの平均が同程度となるようにメッセージ集合を分割することも考えられる。より具体的には、ｍを０以上の整数として、ｍＶ＋ｉ番目のテストメッセージがサブセットＶｉに含まれるように、メッセージ集合を分割しても良い。ただし、ｉ＝１，２，・・・，Ｓである。
【０１４６】
なお、本実施形態では、サブセット数Ｓはユーザにより指定されるものとしたが、これに限られず、例えば、サブセット数Ｓは予め決められていても良い。
【０１４７】
以降では、メッセージ集合がサブセットＶ１，Ｖ２，・・・，ＶＳに分割されたものとして説明を続ける。
【０１４８】
次に、ファジングテスト処理部１１０は、サブセットＶ１，Ｖ２，・・・，ＶＳの中から、未選択のサブセットを１つ選択する（ステップＳ１１０６）。以降では、未選択のサブセットＶｊが選択されたものとして説明を続ける。
【０１４９】
次に、ファジングテスト処理部１１０は、選択したサブセットＶｊに対するメッセージ時間の算出処理を行って、このサブセットＶｊのメッセージ時間ｔ０及びｔ１を算出する（ステップＳ１１０７）。このように、本実施形態では、サブセットＶｊ毎にメッセージ時間ｔ０及びｔ１を算出する。したがって、サブセットＶｊのメッセージ時間ｔ０は、ｔ０ｊとも表すことができる。同様に、サブセットＶｊのメッセージ時間ｔ１は、ｔ１ｊとも表すことができる。なお、メッセージ時間の算出処理の詳細については後述する。
【０１５０】
ステップＳ５０６又はステップＳ５１０に続いて、ファジングテスト処理部１１０のメッセージ作成部１１５は、サブセットＶｊに含まれるテストメッセージのうち、未選択のテストメッセージを１つ選択する。そして、メッセージ作成部１１５は、選択したテストメッセージのＱｏＳに「０」を設定する（ステップＳ１１０８）。このテストメッセージ（ＱｏＳ＝０）がステップＳ５０８でテスト対象装置２０に送信される。
【０１５１】
なお、メッセージ作成部１１５は、例えば、サブセットＶｊに含まれるテストメッセージの中から、ＱｏＳに「０」を設定するテストメッセージをランダムに選択しても良いし、テストメッセージの長さの昇順又は降順に選択しても良い。
【０１５２】
ステップ５０９において、送信メッセージ数ｎがＮｋ−１以上であると判定された場合、ファジングテスト処理部１１０のメッセージ作成部１１５は、サブセットＶｊに含まれるテストメッセージのうち、未選択のテストメッセージを選択する。そして、メッセージ作成部１１５は、選択したテストメッセージのＱｏＳに「１」を設定する（ステップＳ１１０９）。このテストメッセージ（ＱｏＳ＝１）がステップＳ５１２でテスト対象装置２０に送信される。
【０１５３】
なお、メッセージ作成部１１５は、例えば、サブセットＶｊに含まれるテストメッセージの中から、ＱｏＳに「１」を設定するテストメッセージをランダムに選択しても良いし、テストメッセージの長さの昇順又は降順に選択しても良い。
【０１５４】
ステップＳ５１８に続いて、ファジングテスト処理部１１０は、未選択のテストメッセージがサブセットＶｊにＮｋ＋１個以上あるか否かを判定する（ステップＳ１１１０）。
【０１５５】
ステップＳ１１１０において、未選択のテストメッセージがサブセットＶｊにＮｋ＋１個以上あると判定された場合、ファジングテスト処理部１１０は、ステップＳ５２０に進む。
【０１５６】
一方で、ステップＳ１１１０において、未選択のテストメッセージがサブセットＶｊにＮｋ＋１個以上ないと判定された場合、ファジングテスト処理部１１０は、サブセットＶ１，Ｖ２，・・・，ＶＳのうち、未選択のサブセットがあるか否かを判定する（ステップＳ１１１１）。
【０１５７】
ステップＳ１１１１において、未選択のサブセットがあると判定されなかった場合、ファジングテスト処理部１１０は、処理を終了する。すなわち、ファジングテスト処理部１１０は、ファジングを終了する。
【０１５８】
一方で、ステップＳ１１１１において、未選択のサブセットがあると判定された場合、ファジングテスト処理部１１０は、ステップＳ１１０６に戻る。これにより、ステップＳ１１０６において、サブセットＶ１，Ｖ２，・・・，ＶＳの中から、未選択のサブセットＶｊが選択され、ステップＳ１１０７以降の処理が実行される。
【０１５９】
以上のように、本実施形態に係るファジングテスト装置１０は、例えば同程度の長さのテストメッセージが含まれるサブセットＶｊ毎に、メッセージ時間ｔ０＝ｔ０ｊと、メッセージ時間ｔ１＝ｔ１ｊとを算出する。そして、本実施形態に係るファジングテスト装置１０は、これらのメッセージ時間ｔ０＝ｔ０ｊ及びｔ１＝ｔ１ｊを用いて、サブセットＶｊに含まれるテストメッセージでファジングテストを行う。
【０１６０】
これにより、本実施形態に係るファジングテスト装置１０では、テストメッセージの長さが異なるためにメッセージ時間ｔ０及びｔ１に誤差が生じることによるファジングテストの効率低下を防止することができる。
【０１６１】
なお、図１１Ａ及び図１１Ｂに示す例では、テストメッセージ集合を予めサブセットＶ１，Ｖ２，・・・，ＶＳに分割した後、サブセットＶｊ毎に、メッセージ時間の算出（ステップＳ１１０７）と、ファジングテスト（ステップＳ５０４以降）とを繰り返したが、これに限られない。例えば、テストメッセージ集合から１つのサブセットＶｊを作成し、当該サブセットＶｊのメッセージ時間の算出と、当該サブセットＶｊのファジングテストとを行った後、次のサブセットＶｊを作成することを繰り返しても良い。
【０１６２】
＜メッセージ時間の算出処理＞
ここで、上記のステップＳ１１０７のメッセージ時間の算出処理について、図１３を参照しながら説明する。図１３は、本実施形態に係るメッセージ時間の算出処理の一例を示すフローチャートである。なお、図１３のステップＳ７０１、ステップＳ７０３〜ステップＳ７０７、ステップＳ７０９〜ステップＳ７１３は、図７と同様であるため、その説明を省略する。
【０１６３】
まず、ファジングテスト処理部１１０の計測メッセージ作成部１２３は、サブセットＶｊに含まれるテストメッセージから計測用メッセージを作成する（ステップＳ１３０１）。
【０１６４】
ここで、計測メッセージ作成部１２３は、計測用メッセージの長さとしては、例えば、サブセットＶｊに含まれるテストメッセージのメッセージ長のうちの最大の長さとしても良いし、これらのテストメッセージのメッセージ長の平均の長さとしても良い。
【０１６５】
また、計測メッセージ作成部１２３は、計測用メッセージのデータ内容（ファズデータの内容）としては、例えば、サブセットＶｊに含まれる任意のテストメッセージと同一のデータ内容としても良いし、ランダムな文字列又は所定の文字列等としても良い。ただし、計測メッセージ作成部１２３は、テスト対象装置２０でエラーが発生しないファズデータを作成する。
【０１６６】
ステップＳ７０１又はステップＳ７０７に続いて、ファジングテスト処理部１１０のメッセージ作成部１１５は、計測メッセージ作成部１２３により作成された計測用メッセージのＱｏＳに「０」を設定する（ステップＳ１３０２）。ＱｏＳに「０」が設定された計測用メッセージ（テストメッセージ（ＱｏＳ＝０））がステップＳ７０３でテスト対象装置２０に送信される。
【０１６７】
ステップＳ７０６において、送信数ｒがＲ以上であると判定された場合、ファジングテスト処理部１１０のメッセージ作成部１１５は、計測メッセージ作成部１２３により作成された計測用メッセージのＱｏＳに「１」を設定する（ステップＳ１３０３）。ＱｏＳに「１」が設定された計測用メッセージ（テストメッセージ（ＱｏＳ＝１））がステップＳ７０９でテスト対象装置２０に送信される。
【０１６８】
以上により、サブセットＶｊのメッセージ時間ｔ０＝ｔ０ｊ及びｔ１＝ｔ１ｊが算出される。しかも、本実施形態では、サブセットＶｊに含まれるテストメッセージのメッセージ長の最大又は平均の長さの計測用メッセージを用いてメッセージ時間ｔ０及びｔ１を算出する。これにより、本実施形態では、当該サブセットＶｊに含まれる各テストメッセージを送信した場合に、テストメッセージ（ＱｏＳ＝０）の送信後、テスト対象装置２０に受信されるまでの時間との誤差が少ないメッセージ時間ｔ０を算出することができる。同様に、本実施形態では、当該サブセットＶｊに含まれる各テストメッセージを送信した場合に、テストメッセージ（ＱｏＳ＝１）の送信後、ファジングテスト装置１０がＡＣＫを受信するまでの時間との誤差が少ないメッセージ時間ｔ１を算出することができる。
【０１６９】
＜テストメッセージの作成及び送信処理の他の例＞
ここで、本実施形態に係るテストメッセージの作成及び送信処理の他の例について、図１４Ａ及び図１４Ｂを参照しながら説明する。図１４Ａ及び図１４Ｂは、本実施形態に係るテストメッセージの作成及び送信処理の他の例を示すフローチャートである。なお、図１４Ａ及び図１４ＢのステップＳ５０４〜ステップＳ５０６、ステップＳ５０８〜ステップＳ５０９、ステップＳ５１２〜ステップＳ５２０、ステップＳ１１０４〜ステップＳ１１１１は、図１１Ａ又は図１１Ｂと同様であるため、その説明を省略する。
【０１７０】
まず、ファジングテスト処理部１１０のＵＩ制御部１１１は、例えば図１５に示すテスト開始画面Ｇ４００を表示する（ステップＳ１４０１）。図１５は、本実施形態に係るテスト開始画面Ｇ４００の他の例を示す図である。なお、テスト開始画面Ｇ４００は、例えば、ファジングテストプログラム１００が起動されることにより表示される。
【０１７１】
図１５に示すテスト開始画面Ｇ４００には、テストメッセージを作成するためのルールの選択欄Ｇ４１０と、各ルールで作成するテストメッセージ数の入力欄Ｇ４２０とが含まれる。ルールとは、テストメッセージを作成するために予め決められた作成方法のことである。ルールとしては、例えば、「完全ランダム」、「正常メッセージから所定の長さをファズデータに変更」、「正常メッセージの所定の項目をファズデータに変更」等が挙げられる。
【０１７２】
ルール「完全ランダム」とは、例えば、任意の長さのファズデータを作成し、任意の位置に当該ファズデータが含まれ、かつ、任意の長さのテストメッセージを作成する方法のことである。ルール「正常メッセージから所定の長さをファズデータに変更」とは、例えば、所定の長さのファズデータを作成し、正常メッセージの任意の位置に当該ファズデータが含まれるテストメッセージを作成する方法のことである。ルール「正常メッセージの所定の項目をファズデータに変更」とは、例えば、所定の項目と同一の長さのファズデータを作成し、正常メッセージの当該項目の位置に当該ファズデータが含まれるテストメッセージを作成する方法のことである。なお、以降では、選択欄Ｇ４１０から選択されたルールが含まれる集合を「ルール集合」とも表す。
【０１７３】
ユーザは、ルールを選択欄Ｇ４１０から選択すると共に、各ルールで作成するテストメッセージ数を入力欄Ｇ４２０に指定する。また、ユーザは、想定初期エラー発生率を入力欄Ｇ１２０に指定する。そして、テスト実行ボタンＧ１３０を押下することで、ユーザは、テスト開始操作を行うことができる。以降では、ルール１及びルール３が含まれるルール集合と、各ルールのメッセージ数Ｌと、想定初期エラー発生率ｐ１とが指定された上で、テスト開始操作が行われたものとする。
【０１７４】
なお、図１５に示すテスト開始画面Ｇ４００では、ルール集合に含まれる全てのルールに対して共通のメッセージ数Ｌを指定する場合を示しているが、これに限られない。メッセージ数は、ルール集合に含まれるルール毎に指定されても良い。
【０１７５】
次に、ファジングテスト処理部１１０のＵＩ制御部１１１は、ルール集合と、各ルールのメッセージ数Ｌと、サブセット数Ｓと、想定初期エラー発生率ｐ１とが指定されたテスト開始操作の入力を受け付ける（ステップＳ１４０２）。
【０１７６】
次に、ファジングテスト処理部１１０は、ルール集合に含まれるルールの中から、未選択のルールを１つ選択する（ステップＳ１４０３）。
【０１７７】
次に、ファジングテスト処理部１１０のメッセージ作成部１１５は、選択されたルールに基づいて、Ｌ個のテストメッセージが含まれるメッセージ集合を作成する（ステップＳ１４０４）。なお、本実施形態では、メッセージ数Ｌはユーザにより指定されるものとしたが、これに限られず、例えば、メッセージ数Ｌは予め決められていても良い。
【０１７８】
例えば、上記のステップＳ１４０４で選択されたルールが「完全ランダム」である場合、メッセージ作成部１１５は、例えば、任意の長さのＬ個のファズデータを作成する。そして、メッセージ作成部１１５は、任意の位置にこれらのファズデータが含まれ、任意の長さのＬ個のテストメッセージを作成する。
【０１７９】
また、例えば、上記のステップＳ１４０４で選択されたルールが「正常メッセージから所定の長さをファズデータに変更」である場合、メッセージ作成部１１５は、例えば、所定の長さのＬ個のファズデータを作成する。そして、メッセージ作成部１１５は、Ｌ個の正常メッセージの任意の位置にこれらのファズデータがそれぞれ含まれるテストメッセージを作成する。
【０１８０】
また、例えば、上記のステップＳ１４０４で選択されたルールが「正常メッセージの所定の項目をファズデータに変更」である場合、メッセージ作成部１１５は、例えば、所定の項目と同一の長さのＬ個のファズデータを作成する。そして、メッセージ作成部１１５は、Ｌ個の正常メッセージの当該項目の位置にこれらのファズデータがそれぞれ含まれるテストメッセージを作成する。
【０１８１】
これにより、上記のステップＳ１４０４で選択されたルールに応じたテストメッセージが含まれるメッセージ集合が作成される。
【０１８２】
ステップＳ１１１１において、未選択のサブセットがあると判定されなかった場合、ファジングテスト処理部１１０は、未選択のルールがルール集合にあるか否かを判定する（ステップＳ１４０５）。
【０１８３】
ステップＳ１４０５において、未選択のルールがあると判定されなかった場合、ファジングテスト処理部１１０は、処理を終了する。すなわち、ファジングテスト処理部１１０は、ファジングを終了する。
【０１８４】
一方で、ステップＳ１４０５において、未選択のルールがルール集合にあると判定された場合、ファジングテスト処理部１１０は、ステップＳ１４０３に戻る。これにより、ステップＳ１４０３において、ルール集合の中から、未選択のルールが選択され、ステップＳ１４０４以降の処理が実行される。
【０１８５】
以上のように、本実施形態に係るファジングテスト装置１０は、ユーザにより指定されたルール毎にメッセージ集合を作成することができる。これにより、本実施形態に係るファジングテスト装置１０では、同一のルールに基づいて作成されたテストメッセージが含まれるサブセットＶｊからメッセージ時間ｔ０＝ｔ０ｊと、メッセージ時間ｔ１＝ｔ１ｊとが算出される。
【０１８６】
これにより、本実施形態に係るファジングテスト装置１０では、メッセージ時間ｔ０及びｔ１に生じる誤差の更なる低減が期待できる。また、本実施形態に係るファジングテスト装置１０では、ルール毎にメッセージ集合を作成することで、例えば、全てのルールを用いてメッセージ集合を作成する場合と比べて、必要な記憶領域やテストメッセージのソートに必要な計算量等を削減することもできる。
【０１８７】
＜従来技術との比較＞
ここで、本実施形態に係るファジングと、従来技術を用いたファジングとにおける有効なテストメッセージ数の比較について、図１６及び図１７を参照しながら説明する。図１６及び図１７は、単位時間あたりの有効なテストメッセージ数の比較例を説明する図である。
【０１８８】
図１６は、単位時間あたりに１０個のメッセージを送受信することができる場合における「ＫｅｅｐＡｌｉｖｅ方式によるファジング」と、「全てのテストメッセージをＱｏＳ＝１にする方式によるファジング」と、「本実施形態に係るファジング」との比較例である。
【０１８９】
図１６（ａ）に示すように、ＫｅｅｐＡｌｉｖｅ方式によるファジングでは、単位時間内に、テストメッセージ１（ＱｏＳ＝０）〜テストメッセージ１０（ＱｏＳ＝１）がファジングテスト装置１０からテスト対象装置２０に送信される。
【０１９０】
このとき、例えば、テストメッセージ３（ＱｏＳ＝０）でエラーが発生した場合、テストメッセージ４（ＱｏＳ＝０）〜テストメッセージ１０（ＱｏＳ＝０）は、テスト対象装置２０でテストされないため、無駄なテストメッセージとなる。したがって、この場合、有効なテストメッセージ数は「３」となる。
【０１９１】
図１６（ｂ）に示すように、全てのテストメッセージをＱｏＳ＝１にする方式によるファジングでは、単位時間内に、テストメッセージ１（ＱｏＳ＝１）〜テストメッセージ５（ＱｏＳ＝１）がファジングテスト装置１０からテスト対象装置２０に送信される。
【０１９２】
このとき、例えば、上記と同様にテストメッセージ３（ＱｏＳ＝０）でエラーが発生したとしても、テストメッセージ４（ＱｏＳ＝１）〜テストメッセージ５（ＱｏＳ＝１）は、テスト対象装置２０の再起動後に送信されるため、有効なテストメッセージとなる。したがって、この場合、有効なテストメッセージ数は「５」となる。
【０１９３】
図１６（ｃ）に示すように、本実施形態に係るファジングでは、例えば、メッセージ群のメッセージ数を「４」とした場合、単位時間内に、２個のメッセージ群がファジングテスト装置１０からテスト対象装置２０に送信される。すなわち、テストメッセージ１（ＱｏＳ＝０）〜テストメッセージ３（ＱｏＳ＝０）と、テストメッセージ４（ＱｏＳ＝１）と、テストメッセージ５（ＱｏＳ＝０）〜テストメッセージ７（ＱｏＳ＝０）と、テストメッセージ８（ＱｏＳ＝１）とが送信される。
【０１９４】
このとき、例えば、上記と同様にテストメッセージ３（ＱｏＳ＝０）でエラーが発生した場合、テストメッセージ４（ＱｏＳ＝１）は、テスト対象装置２０でテストされないため、無駄なメッセージとなる。一方で、テストメッセージ５（ＱｏＳ＝０）〜テストメッセージ７（ＱｏＳ＝０）と、テストメッセージ８（ＱｏＳ＝１）とは、テスト対象装置２０の再起動後に送信されるため、有効なテストメッセージとなる。したがって、この場合、有効なテストメッセージ数は「７」となる。
【０１９５】
このように、本実施形態に係るファジングでは、従来技術を用いたファジングと比較して、単位時間あたりの有効なテストメッセージ数が増加するため、効率的なファジングテストを行うことができるようになる。
【０１９６】
なお、図１６では、一例として、テストメッセージ３でエラーが発生する場合について説明した。本実施形態に係るファジングでは、いずれのテストメッセージでエラーが発生する場合であっても、エラー発生率に応じて、メッセージ群のメッセージ数を動的に更新することで、従来技術を用いたファジングによりも有効なメッセージ数を増加させることができる。
【０１９７】
図１７は、以下の前提条件の下で、１秒経過時点における有効なメッセージ数の比較例である。
【０１９８】
・テストメッセージ（ＱｏＳ＝０）のメッセージ時間ｔ０：０．００００１秒
・テストメッセージ（ＱｏＳ＝１）のメッセージ時間ｔ１：０．０００１０秒
・想定初期エラー発生率ｐ１：０．００１
このとき、図１７に示すように、１００テストメッセージ毎に１回エラーが発生する場合、１０００テストメッセージ毎に１回エラーが発生する場合、１００００メッセージ毎に１回エラーが発生する場合のいずれでも有効なメッセージ数を増加させることができる。したがって、本実施形態に係るファジングでは、従来技術を用いたファジングと比較して、単位時間あたりの有効なテストメッセージを増加させることができ、効率的なファジングを行うことができるようになる。
【０１９９】
以上、本発明の実施形態について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【０２００】
以上の説明に関し、更に以下の項を開示する。
（付記１）
ファジングによるテスト対象装置と接続されるファジングテスト装置であって、
前記テスト対象装置に送信したファズメッセージに対するエラー発生率を算出する第１の算出部と、
算出した前記エラー発生率に応じて、前記テスト対象装置に送信する死活確認メッセージの送信比率を決定する決定部と、
決定した送信比率に応じて、ファズメッセージと、死活確認メッセージとを前記テスト対象装置に送信する送信部と、
を有するファジングテスト装置。
（付記２）
前記ファズメッセージを前記テスト対象装置が受信するまでの第１の時間と、前記死活確認メッセージに対する応答を前記ファジングテスト装置が受信するまでの第２の時間と算出する第２の算出部を有し、
前記決定部は、
前記エラー発生率と、前記第１の時間と、前記第２の時間とに応じて、前記送信比率を決定する、ことを特徴とする付記１に記載のファジングテスト装置。
（付記３）
送信した前記死活確認メッセージに対する応答を前記第２の時間以内に受信しなかった場合、前記テスト対象装置を再起動させるための指示を該テスト対象装置に送信する再起動指示部を有する、ことを特徴とする付記２に記載のファジングテスト装置。
（付記４）
ファズデータが含まれる複数のメッセージを作成するメッセージ作成部と、
作成した前記複数のメッセージを、メッセージ長に応じて、複数の集合に分割する分割部とを有し、
前記第２の算出部は、
前記集合毎に、前記第１の時間と、前記第２の時間とを算出する、ことを特徴とする付記２又は３に記載のファジングテスト装置。
（付記５）
前記集合に含まれるメッセージのメッセージ長の最大又は平均をメッセージ長とする計測メッセージを作成する計測メッセージ作成部を有し、
前記第２の算出部は、
前記集合毎に、前記計測メッセージから作成されたファズメッセージを前記テスト対象装置が受信するまでの第１の時間と、前記計測メッセージから作成された死活確認メッセージに対する応答を前記ファジングテスト装置が受信するまでの第２の時間とを算出する、ことを特徴とする付記４に記載のファジングテスト装置。
（付記６）
前記メッセージ作成部は、
予め決められたルール毎に、該ルールに基づいて前記複数のメッセージを作成する、ことを特徴とする付記４又は５に記載のファジングテスト装置。
（付記７）
前記ファズメッセージは、ＭＱＴＴプロトコルで規定されたメッセージであって、ファズデータが含まれ、かつ、ＱｏＳに０が設定されたメッセージであり、
前記死活確認メッセージは、ＭＱＴＴプロトコルで規定されたメッセージであって、ファズデータが含まれ、かつ、ＱｏＳに１が設定されたメッセージである、ことを特徴とする付記１乃至６の何れか一項に記載のファジングテスト装置。
（付記８）
ファジングによるテスト対象装置と接続されるコンピュータが、
前記テスト対象装置に送信したファズメッセージに対するエラー発生率を算出し、
算出した前記エラー発生率に応じて、前記テスト対象装置に送信する死活確認メッセージの送信比率を決定し、
決定した送信比率に応じて、ファズメッセージと、死活確認メッセージとを前記テスト対象装置に送信する、
処理を実行するファジングテスト方法。
（付記９）
前記コンピュータが、
前記ファズメッセージを前記テスト対象装置が受信するまでの第１の時間と、前記死活確認メッセージに対する応答を前記ファジングテスト装置が受信するまでの第２の時間と算出する処理を実行し、
前記決定する処理は、
前記エラー発生率と、前記第１の時間と、前記第２の時間とに応じて、前記送信比率を決定する、ことを特徴とする付記８に記載のファジングテスト方法。
（付記１０）
前記コンピュータが、
送信した前記死活確認メッセージに対する応答を前記第２の時間以内に受信しなかった場合、前記テスト対象装置を再起動させるための指示を該テスト対象装置に送信する、
処理を実行する、ことを特徴とする付記９に記載のファジングテスト方法。
（付記１１）
前記コンピュータが、
ファズデータが含まれる複数のメッセージを作成し、
作成した前記複数のメッセージを、メッセージ長に応じて、複数の集合に分割する、
処理を実行し、
前記集合毎に、前記第１の時間と、前記第２の時間とを算出する、ことを特徴とする付記９又は１０に記載のファジングテスト方法。
（付記１２）
前記コンピュータが、
前記集合に含まれるメッセージのメッセージ長の最大又は平均をメッセージ長とする計測メッセージを作成する、
処理を実行し、
前記集合毎に、前記計測メッセージから作成されたファズメッセージを前記テスト対象装置が受信するまでの第１の時間と、前記計測メッセージから作成された死活確認メッセージに対する応答を前記ファジングテスト装置が受信するまでの第２の時間とを算出する、ことを特徴とする付記１１に記載のファジングテスト方法。
（付記１３）
予め決められたルール毎に、該ルールに基づいて前記複数のメッセージを作成する、ことを特徴とする付記１１又は１２に記載のファジングテスト方法。
（付記１４）
前記ファズメッセージは、ＭＱＴＴプロトコルで規定されたメッセージであって、ファズデータが含まれ、かつ、ＱｏＳに０が設定されたメッセージであり、
前記死活確認メッセージは、ＭＱＴＴプロトコルで規定されたメッセージであって、ファズデータが含まれ、かつ、ＱｏＳに１が設定されたメッセージである、ことを特徴とする付記８乃至１３の何れか一項に記載のファジングテスト方法。
（付記１５）
ファジングによるテスト対象装置と接続されるコンピュータに、
前記テスト対象装置に送信したファズメッセージに対するエラー発生率を算出し、
算出した前記エラー発生率に応じて、前記テスト対象装置に送信する死活確認メッセージの送信比率を決定し、
決定した送信比率に応じて、ファズメッセージと、死活確認メッセージとを前記テスト対象装置に送信する、
処理を実行させるファジングテストプログラム。
（付記１６）
前記コンピュータに、
前記ファズメッセージを前記テスト対象装置が受信するまでの第１の時間と、前記死活確認メッセージに対する応答を前記ファジングテスト装置が受信するまでの第２の時間と算出する処理を実行させ、
前記決定する処理は、
前記エラー発生率と、前記第１の時間と、前記第２の時間とに応じて、前記送信比率を決定する、ことを特徴とする付記１５に記載のファジングテストプログラム。
（付記１７）
前記コンピュータに、
送信した前記死活確認メッセージに対する応答を前記第２の時間以内に受信しなかった場合、前記テスト対象装置を再起動させるための指示を該テスト対象装置に送信する、
処理を実行させる、ことを特徴とする付記１６に記載のファジングテストプログラム。
（付記１８）
前記コンピュータに、
ファズデータが含まれる複数のメッセージを作成し、
作成した前記複数のメッセージを、メッセージ長に応じて、複数の集合に分割する、
処理を実行させ、
前記集合毎に、前記第１の時間と、前記第２の時間とを算出する、ことを特徴とする付記１６又は１７に記載のファジングテストプログラム。
（付記１９）
前記コンピュータに、
前記集合に含まれるメッセージのメッセージ長の最大又は平均をメッセージ長とする計測メッセージを作成する、
処理を実行させ、
前記集合毎に、前記計測メッセージから作成されたファズメッセージを前記テスト対象装置が受信するまでの第１の時間と、前記計測メッセージから作成された死活確認メッセージに対する応答を前記ファジングテスト装置が受信するまでの第２の時間とを算出する、ことを特徴とする付記１８に記載のファジングテストプログラム。
（付記２０）
予め決められたルール毎に、該ルールに基づいて前記複数のメッセージを作成する、ことを特徴とする付記１８又は１９に記載のファジングテストプログラム。
（付記２１）
前記ファズメッセージは、ＭＱＴＴプロトコルで規定されたメッセージであって、ファズデータが含まれ、かつ、ＱｏＳに０が設定されたメッセージであり、
前記死活確認メッセージは、ＭＱＴＴプロトコルで規定されたメッセージであって、ファズデータが含まれ、かつ、ＱｏＳに１が設定されたメッセージである、ことを特徴とする付記１５乃至２０の何れか一項に記載のファジングテストプログラム。
【符号の説明】
【０２０１】
１        ファジングテストシステム
１０      ファジングテスト装置
２０      テスト対象装置
１００    ファジングテストプログラム
１１０    ファジングテスト処理部
１１１    ＵＩ制御部
１１２    メッセージ時間算出部
１１３    エラー発生率算出部
１１４    メッセージ数算出部
１１５    メッセージ作成部
１１６    メッセージ送信部
１１７    メッセージ受信部
１１８    再起動指示部
１１９    エラー有無設定部
１２０    記憶部
２００    テスト対象プログラム
【図１】
2018195288.tif 000008
【図２】
2018195288.tif 000009
【図３】
2018195288.tif 000010
【図４】
2018195288.tif 000011
【図５】
2018195288.tif 000012
【図６】
2018195288.tif 000013
【図７】
2018195288.tif 000014
【図８】
2018195288.tif 000015
【図９】
2018195288.tif 000016
【図１０】
2018195288.tif 000017
【図１１Ａ】
2018195288.tif 000018
【図１１Ｂ】
2018195288.tif 000019
【図１２】
2018195288.tif 000020
【図１３】
2018195288.tif 000021
【図１４Ａ】
2018195288.tif 000022
【図１４Ｂ】
2018195288.tif 000023
【図１５】
2018195288.tif 000024
【図１６】
2018195288.tif 000025
【図１７】
2018195288.tif 000026