以下に、図面を参照して、本発明にかかるテストプログラム、テスト方法、およびテスト装置の実施の形態を詳細に説明する。
(実施の形態にかかるテスト方法の一実施例)
図1は、実施の形態にかかるテスト方法の一実施例を示す説明図である。テスト装置100は、所定のシステムを運用するノードを切り替える切替処理を行う、テスト対象のソフトウェアをテストするコンピュータである。システムは、例えば、システムを運用するノードが冗長化され、複数のノードを含む。ノードは、例えば、情報処理装置である。以下の説明では、ソフトウェアを「クラスタソフトウェア」と表記する場合がある。
ここで、クラスタソフトウェアについてテストすることが望まれる。例えば、クラスタソフトウェアが、切替処理の結果が正常であるか否かをテストすることが望まれる。また、例えば、クラスタソフトウェアは、切替処理を行った結果、切替処理の結果がエラーである場合、切替処理を再び試行することが好ましい。このため、クラスタソフトウェアが、切替処理を行った結果、切替処理の結果がエラーである場合、切替処理を再び試行することができるか否かをテストすることが望まれる。
また、例えば、クラスタソフトウェアは、切替処理を再び試行する際、切替処理に用いられる通信経路などを変更することが好ましい。このため、クラスタソフトウェアが、切替処理を再び試行する際、切替処理に用いられる通信経路などを変更することができるか否かをテストすることが望まれる。また、例えば、クラスタソフトウェアは、切替処理を複数回試行しても、切替処理の結果がエラーである場合、切替処理を中止することが好ましい。このため、クラスタソフトウェアが、切替処理を複数回試行しても、切替処理の結果がエラーである場合、切替処理を中止することができるか否かをテストすることが望まれる。
そして、切替処理の結果がエラーになる様々なケースがあるため、それぞれのケースにおけるクラスタソフトウェアの動作を確認し、クラスタソフトウェアについてテストすることが望まれる。例えば、切替処理の結果がエラーになる様々なケースを発生させ、それぞれのケースが発生しても、クラスタソフトウェアが、上述したように、切替処理を再び試行したり、切替処理を中止したりすることができるか否かをテストすることが望まれる。以下の説明では、切替処理の結果がエラーになるケースを「エラーケース」と表記する場合がある。
エラーケースは、例えば、切替処理に用いられる記憶リソースの不足によりエラーが発生するケースなどである。また、エラーケースは、例えば、システムを運用するノードを切り替える際に、切替元のノードに対するアクセスの失敗によりエラーが発生するケース、および、切替先のノードに対するアクセスの失敗によりエラーが発生するケースなどであってもよい。このような、クラスタソフトウェアのテストに望まれる要件については、具体的には、図14を用いて後述する。
しかしながら、クラスタソフトウェアを精度よくテストすることは難しい。例えば、切替処理に関する様々なエラーケースを発生させることは難しく、切替処理に関する様々なエラーケースを発生させ、様々なエラーケースにおけるクラスタソフトウェアの動作を確認することができず、クラスタソフトウェアを精度よくテストすることができない。
例えば、システムに含まれるノードの動作の結果が異常になるように、システムに含まれるノードを設定してから、クラスタソフトウェアが切替処理を行うように制御することにより、クラスタソフトウェアをテストする場合が考えられる。しかしながら、この場合、切替処理より前にクラスタソフトウェアが行う処理でエラーが発生してしまうことがあり、切替処理に関するエラーケースを発生させることができず、クラスタソフトウェアを精度よくテストすることができないことがある。
そこで、本実施の形態では、クラスタソフトウェアの実行により情報処理装置を待機状態から運用状態に切り替える切替処理が開始されたと判定したタイミングで、切替処理の結果をエラーにする制御を行うことができるテスト方法について説明する。これによれば、テスト方法は、切替処理より前にクラスタソフトウェアが行う処理でエラーが発生することを防止し、切替処理に関する様々なエラーケースを発生させ、クラスタソフトウェアのテストの精度向上を図ることができる。
図1の例では、テスト装置100は、テスト対象のソフトウェア101を含む。ソフトウェア101は、例えば、クラスタソフトウェアである。ソフトウェア101は、情報処理装置を待機状態と運用状態とに切り替えることができ、システムを運用する情報処理装置を切り替える切替処理を行うことができるソフトウェアである。
以下の説明では、説明の簡略化のため、ソフトウェアを実行するコンピュータが、ソフトウェアの実行により何らかの処理を実行することを、単に「ソフトウェアが処理を行う」または「ソフトウェアが(処理の内容を)する」というように表記する場合がある。
ソフトウェア101は、例えば、待機状態である第1の情報処理装置110と、運用状態である第2の情報処理装置(不図示)とがある場合、第2の情報処理装置に障害があると判定したことに応じて、切替処理を行う。ソフトウェア101は、切替処理において、第1の情報処理装置110を待機状態から運用状態に切り替える一方で、第2の情報処理装置を運用状態から待機状態に切り替える。
テスト装置100は、ソフトウェア101が第1の情報処理装置110を待機状態から運用状態に切り替える切替処理を開始したか否かを判定する。これにより、テスト装置100は、切替処理の結果をエラーにする制御を行うことができ、切替処理に関するエラーケースを発生させることができるタイミングを特定することができる。
テスト装置100は、ソフトウェア101の実行により切替処理が開始されたと判定したことに応じて、切替処理の結果をエラーにする処理を実行する。これにより、テスト装置100は、切替処理より前にソフトウェア101が行う処理ではエラーを発生させず、切替処理に関するエラーケースを発生させることができ、ソフトウェア101のテストの精度向上を図ることができる。
ここで、ソフトウェア101は、具体的には、第2の情報処理装置に向けて応答要求を出力し、第2の情報処理装置からの応答を監視することにより、第2の情報処理装置の障害発生を監視する。障害は、例えば、ハングとも呼ばれる。
応答要求は、例えば、pingである。pingに対する応答は、例えば、ハートビート応答と呼ばれる。pingに対して特定の時間待ってもハートビート応答がないという事象が、運用系220に障害が発生したことを示す。ハートビート応答がないという事象は、例えば、ハートビート断と呼ばれる。そして、ソフトウェア101は、第2の情報処理装置の障害発生に応じて切替処理を開始するように設計される傾向がある。
この傾向を利用し、テスト装置100は、具体的には、ソフトウェア101が第2の情報処理装置に向けて出力する応答要求を参照することにより、第1の情報処理装置110を待機状態から運用状態に切り替える切替処理を開始したか否かを判定してもよい。これにより、テスト装置100は、ソフトウェア101を改変しなくても、切替処理を開始したか否かを判定することができる。このため、テスト装置100は、ソフトウェア101の性能や動作に与える影響を抑制して、ソフトウェア101をテストすることができ、ソフトウェア101のテストの精度向上を図ることができる。
また、ソフトウェア101は、切替処理に関する様々なエラーケースが発生し、第2の情報処理装置に障害があると判定したにも関わらず、第2の情報処理装置に対してアクセスしてしまうことがある。例えば、ソフトウェア101は、切替処理とともに切替処理とは異なる処理を行っている場合があり、切替処理とは異なる処理で第2の情報処理装置に対してアクセスしてしまう。また、例えば、ソフトウェア101は、ソフトウェア101の設計者が意図しないバグにより、第2の情報処理装置に対してアクセスしてしまう。この際、第2の情報処理装置に対するアクセスの結果は、正常である場合と異常である場合との両方があり、いずれの場合においても、ソフトウェア101は、ソフトウェア101の設計者が想定する動作を行うことが望まれる。
このため、ソフトウェア101が第2の情報処理装置に対してアクセスする場合についても、ソフトウェア101をテストすることが望まれる。例えば、第2の情報処理装置に対するアクセスの結果が、正常である場合と異常である場合との両方について、ソフトウェア101をテストすることが望まれる。このような、ソフトウェア101のテストに望まれる新たな要件については、具体的には、図15を用いて後述する。
これに対し、テスト装置100は、第2の情報処理装置に対するアクセスの結果が、正常である場合と、異常である場合とが発生するように、第2の情報処理装置を制御するようにしてもよい。これにより、テスト装置100は、ソフトウェア101が第2の情報処理装置にアクセスする場合について、ソフトウェア101をテストすることができる。テスト装置100は、例えば、ソフトウェア101から第2の情報処理装置に対するアクセスの結果が、正常である場合と、異常である場合との両方について、ソフトウェア101をテストすることができ、ソフトウェア101のテストの精度向上を図ることができる。
(テストシステム200の一例)
次に、図2を用いて、図1に示したテスト装置100を適用した、テストシステム200の一例について説明する。
図2は、テストシステム200の一例を示す説明図である。図2において、テストシステム200は、テスト装置100と、複数の情報処理装置210,220と、端末装置201とを含む。
テストシステム200において、テスト装置100と情報処理装置210,220と、端末装置201とは、有線または無線のネットワーク230を介して接続される。ネットワーク230は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。
テスト装置100は、テストシステム200を運用する情報処理装置を切り替える切替処理を行うテスト対象のソフトウェアを有し、テスト対象のソフトウェアをテストするコンピュータである。テスト対象のソフトウェアは、例えば、クラスタソフトウェアである。テスト装置100は、例えば、サーバ、PC(Personal Computer)などである。
複数の情報処理装置210,220は、それぞれ、テストシステム200を運用可能なコンピュータである。複数の情報処理装置210,220は、通常時にはテストシステム200を運用しない待機状態である情報処理装置210と、通常時にテストシステム200を運用する運用状態である情報処理装置220とを含む。通常時に待機状態である情報処理装置210は、通常時に運用状態である情報処理装置220に障害がある場合に、待機状態から運用状態に切り替えられ、テストシステム200を運用する。情報処理装置210,220は、例えば、サーバ、PCなどである。
端末装置201は、テスト対象のソフトウェアのテストを実施するユーザの操作入力に基づいて、テスト装置100と、複数の情報処理装置210,220とに、テスト対象のソフトウェアのテスト開始指示を送信する。以下の説明では、テスト対象のソフトウェアのテストを実施するユーザを「テスター」と表記する場合がある。端末装置201は、例えば、サーバ、PC、タブレット端末、スマートフォン、ウェアラブル端末などである。
また、テスト装置100は、通常時には待機状態である情報処理装置210としても動作可能である場合があってもよい。また、テストシステム200は、通常時には待機状態である情報処理装置210を2以上含んでもよい。以下の説明では、通常時には待機状態である情報処理装置210を「待機系210」と表記する場合がある。また、以下の説明では、通常時に運用状態である情報処理装置220を「運用系220」と表記する場合がある。
(テストシステム200の具体例)
次に、図3を用いて、図2に示したテストシステム200の具体例について説明する。
図3は、テストシステム200の具体例を示す説明図である。図3において、テスト装置100は、受付プログラム310と、ネットワークドライバ311と、ネットワークドライバ312と、ネットワークドライバ313と、ディスクドライバ314と、テスト対象のソフトウェア315とを含む。テスト装置100は、待機系210としても動作可能である。
待機系210は、受付プログラム320と、ネットワークドライバ321と、ネットワークドライバ322と、ディスクドライバ323と、テスト対象のソフトウェア324とを含む。運用系220は、受付プログラム330と、ネットワークドライバ331と、ネットワークドライバ332とを含む。
また、テストシステム200は、さらに、待機系210外に、待機系210に関する情報を記憶するシステムディスクを含んでいる場合があってもよい。また、テストシステム200は、さらに、運用系220外に、運用系220に関する情報を記憶するシステムディスクを含んでいる場合があってもよい。また、テストシステム200は、さらに、テスト装置100、待機系210、運用系220からアクセス可能な、共用ディスクを含んでいる場合があってもよい。
(テスト装置100のハードウェア構成例)
次に、図4を用いて、図1に示したテスト装置100のハードウェア構成例について説明する。
図4は、テスト装置100のハードウェア構成例を示すブロック図である。図4において、テスト装置100は、CPU(Central Processing Unit)401と、メモリ402と、ネットワークI/F(Interface)403と、記録媒体I/F404と、記録媒体405とを有する。また、各構成部は、バス400によってそれぞれ接続される。
ここで、CPU401は、テスト装置100の全体の制御を司る。メモリ402は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU401のワークエリアとして使用される。メモリ402に記憶されるプログラムは、CPU401にロードされることで、コーディングされている処理をCPU401に実行させる。
ネットワークI/F403は、通信回線を通じてネットワーク230に接続され、ネットワーク230を介して他のコンピュータに接続される。そして、ネットワークI/F403は、ネットワーク230と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F403には、例えば、モデムやLANアダプタなどを採用することができる。
記録媒体I/F404は、CPU401の制御に従って記録媒体405に対するデータのリード/ライトを制御する。記録媒体I/F404は、例えば、ディスクドライブ、SSD(Solid State Drive)、USB(Universal Serial Bus)ポートなどである。記録媒体405は、記録媒体I/F404の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体405は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体405は、テスト装置100から着脱可能であってもよい。
テスト装置100は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、テスト装置100は、記録媒体I/F404や記録媒体405を複数有していてもよい。また、テスト装置100は、記録媒体I/F404や記録媒体405を有していなくてもよい。
(待機系210のハードウェア構成例および運用系220のハードウェア構成例)
待機系210のハードウェア構成例および運用系220のハードウェア構成例は、図4に示したテスト装置100のハードウェア構成例と同様であるため、説明を省略する。
(ステータステーブル500の記憶内容)
次に、図5を用いて、テスト装置100によって記憶される、ステータステーブル500の記憶内容について説明する。ステータステーブル500は、例えば、図4に示したテスト装置100のメモリ402や記録媒体405などの記憶領域により実現される。
図5は、ステータステーブル500の記憶内容の一例を示す説明図である。図5に示すように、ステータステーブル500は、クラスタと、IPアドレスと、時刻とのフィールドを有する。ステータステーブル500は、ping送信依頼の依頼元ごとに各フィールドに情報を設定することにより、ステータス情報がレコードとして記憶される。
クラスタのフィールドには、ping送信依頼の依頼元のプロセスであるクラスタソフトウェアを識別する情報が設定される。IPアドレスのフィールドには、ping送信依頼が示すpingの相手先のIPアドレスが設定される。時刻のフィールドには、ping送信依頼を受け付ける都度、ping送信依頼を受け付けた時刻が設定され、ping送信依頼を受け付けた時刻が蓄積される。
(送信側フラグテーブル600の記憶内容)
次に、図6を用いて、テスト装置100、待機系210、および、運用系220によって記憶される、送信側フラグテーブル600の記憶内容について説明する。送信側フラグテーブル600は、例えば、図4に示したテスト装置100のメモリ402や記録媒体405などの記憶領域により実現される。送信側フラグテーブル600は、例えば、待機系210や運用系220の記憶領域により実現されてもよい。
図6は、送信側フラグテーブル600の記憶内容の一例を示す説明図である。図6に示すように、送信側フラグテーブル600は、テスト準備中フラグと、ping受付待ちフラグと、エラーフラグと、正常復帰フラグとのフィールドを有する。送信側フラグテーブル600は、各フィールドに情報を設定することにより、フラグ情報がレコードとして記憶される。
テスト準備中フラグのフィールドには、最初にOFFが設定され、テスト対象のソフトウェアから初回のping送信依頼を受け付けるとONが設定され、タイマーがタイムアウトするとOFFが設定される。このため、テスト準備中フラグは、ping送信依頼が無応答になり始めた状態を示す。ping受付待ちフラグのフィールドには、最初にOFFが設定され、テスト対象のソフトウェアから2回目のping送信依頼を受け付けるとONが設定され、タイマーがタイムアウトするとOFFが設定される。
エラーフラグのフィールドには、最初にOFFが設定され、タイマーがタイムアウトし、クラスタソフトウェアが切替処理を開始したと判定するとONが設定される。このため、エラーフラグは、クラスタソフトウェアがpingの相手先がハングであると判定している状態を示す。正常復帰フラグのフィールドには、クラスタソフトウェアからのアクセス要求の結果を正常にする制御を行うか否かを示すフラグが設定される。
送信側フラグテーブル600は、複数のデバイスドライバから共通して参照可能であってもよい。デバイスドライバは、ネットワークドライバやディスクドライバである。
(受信側フラグテーブル700の記憶内容)
次に、図7を用いて、テスト装置100、待機系210、および、運用系220によって記憶される、受信側フラグテーブル700の記憶内容について説明する。受信側フラグテーブル700は、例えば、図4に示したテスト装置100のメモリ402や記録媒体405などの記憶領域により実現される。受信側フラグテーブル700は、例えば、待機系210や運用系220の記憶領域により実現されてもよい。
図7は、受信側フラグテーブル700の記憶内容の一例を示す説明図である。図7に示すように、受信側フラグテーブル700は、テスト準備中フラグと、ping受付待ちフラグと、エラーフラグと、正常復帰フラグとのフィールドを有する。受信側フラグテーブル700は、各フィールドに情報を設定することにより、フラグ情報がレコードとして記憶される。
テスト準備中フラグのフィールドには、送信側フラグテーブル600のテスト準備中フラグのフィールドに設定されたフラグと同じフラグが設定される。ping受付待ちフラグのフィールドには、送信側フラグテーブル600のping受付待ちフラグのフィールドに設定されたフラグと同じフラグが設定される。
エラーフラグのフィールドには、送信側フラグテーブル600のエラーフラグのフィールドに設定されたフラグと同じフラグが設定される。正常復帰フラグのフィールドには、送信側フラグテーブル600の正常復帰フラグのフィールドに設定されたフラグと同じフラグが設定される。
受信側フラグテーブル700は、複数のデバイスドライバから共通して参照可能であってもよい。デバイスドライバは、ネットワークドライバやディスクドライバである。
(作業域800の記憶内容)
次に、図8を用いて、テスト装置100によって記憶される、作業域800の記憶内容について説明する。作業域800は、例えば、図4に示したテスト装置100のメモリ402や記録媒体405などの記憶領域により実現される。
図8は、作業域800の記憶内容の一例を示す説明図である。図8に示すように、作業域800は、ping間隔=Tのフィールドを有する。作業域800は、フィールドに情報を設定することにより、ping間隔がレコードとして記憶される。ping間隔のフィールドには、連続する2つのping送信依頼をテスト装置100が受け付けた時点の間隔が設定される。
(モード情報900の記憶内容)
次に、図9を用いて、テスト装置100、待機系210、および、運用系220によって記憶される、モード情報900の記憶内容について説明する。モード情報900は、例えば、図4に示したテスト装置100のメモリ402や記録媒体405などの記憶領域により実現される。モード情報900は、例えば、待機系210や運用系220の記憶領域により実現されてもよい。
図9は、モード情報900の記憶内容の一例を示す説明図である。図9に示すように、モード情報900は、モードフラグのフィールドを有する。モード情報900は、フィールドに情報を設定することにより、モード情報900がレコードとして記憶される。モードフラグのフィールドには、自装置のモードが特殊テストモードであるか否かを示すフラグが設定される。
(エラーコードテーブル1000の記憶内容)
次に、図10を用いて、テスト装置100、待機系210、および、運用系220によって記憶される、エラーコードテーブル1000の記憶内容について説明する。エラーコードテーブル1000は、例えば、図4に示したテスト装置100のメモリ402や記録媒体405などの記憶領域により実現される。エラーコードテーブル1000は、例えば、待機系210や運用系220の記憶領域により実現されてもよい。
図10は、エラーコードテーブル1000の記憶内容の一例を示す説明図である。図10に示すように、エラーコードテーブル1000は、デバイス番号と、エラーコードと、デバイス名称とのフィールドを有する。エラーコードテーブル1000は、各フィールドに情報を設定することにより、エラーコード情報がレコードとして記憶される。
デバイス番号のフィールドには、デバイスを識別するデバイス番号が設定される。エラーコードのフィールドには、デバイス番号によって識別されるデバイスが出力するエラーコードが設定される。デバイス名称のフィールドには、デバイス番号によって識別されるデバイスの名称が設定される。
(カウンタテーブル1100の記憶内容)
次に、図11を用いて、テスト装置100、待機系210、および、運用系220によって記憶される、カウンタテーブル1100の記憶内容について説明する。カウンタテーブル1100は、例えば、図4に示したテスト装置100のメモリ402や記録媒体405などの記憶領域により実現される。カウンタテーブル1100は、例えば、待機系210や運用系220の記憶領域により実現されてもよい。
図11は、カウンタテーブル1100の記憶内容の一例を示す説明図である。図11に示すように、カウンタテーブル1100は、アクセスカウンタ(ハートビート断前)と、アクセスカウンタ(ハートビート断後)とのフィールドを有する。カウンタテーブル1100は、各フィールドに情報を設定することにより、カウンタ情報がレコードとして記憶される。
アクセスカウンタ(ハートビート断前)のフィールドには、クラスタソフトウェアが切替処理を開始したとテスト装置100が判定する前における、クラスタソフトウェアから自装置に対するアクセス回数が設定される。アクセスカウンタ(ハートビート断後)のフィールドには、クラスタソフトウェアが切替処理を開始したとテスト装置100が判定した後における、クラスタソフトウェアから自装置に対するアクセス回数が設定される。
(アクセスログ情報1200の記憶内容)
次に、図12を用いて、テスト装置100、待機系210、および、運用系220によって記憶される、アクセスログ情報1200の記憶内容について説明する。アクセスログ情報1200は、例えば、図4に示したテスト装置100のメモリ402や記録媒体405などの記憶領域により実現される。アクセスログ情報1200は、例えば、待機系210や運用系220の記憶領域により実現されてもよい。
図12は、アクセスログ情報1200の記憶内容の一例を示す説明図である。図12に示すように、アクセスログ情報1200は、アクセス記憶域(ハートビート断前)と、アクセス記憶域(ハートビート断後)とのフィールドを有する。アクセスログ情報1200は、各フィールドに情報を設定することにより、アクセス内容がレコードとして記憶される。
アクセス記憶域(ハートビート断前)のフィールドは、アクセスカウンタ(ハートビート断前)と、ポートNoと、アクセス内容とのフィールドを有する。アクセスカウンタ(ハートビート断前)のフィールドには、アクセスカウンタ(ハートビート断前)が設定される。ポートNoのフィールドには、クラスタソフトウェアから自装置に対するアクセスに用いられたポートを識別するポートNoが設定される。アクセス内容のフィールドには、クラスタソフトウェアから自装置に対するアクセスの内容が設定される。
アクセス記憶域(ハートビート断後)のフィールドは、アクセスカウンタ(ハートビート断後)と、ポートNoと、アクセス内容とのフィールドを有する。アクセスカウンタ(ハートビート断後)のフィールドには、アクセスカウンタ(ハートビート断後)が設定される。ポートNoのフィールドには、クラスタソフトウェアから自装置に対するアクセスに用いられたポートを識別するポートNoが設定される。アクセス内容のフィールドには、クラスタソフトウェアから自装置に対するアクセスの内容が設定される。
(テスト装置100の機能的構成例)
次に、図13を用いて、テスト装置100の機能的構成例について説明する。
図13は、テスト装置100の機能的構成例を示すブロック図である。テスト装置100は、記憶部1300と、取得部1301と、判定部1302と、管理部1303と、出力部1304とを含む。
記憶部1300は、例えば、図4に示したメモリ402や記録媒体405などの記憶領域によって実現される。以下では、記憶部1300が、テスト装置100に含まれる場合について説明するが、これに限らない。例えば、記憶部1300が、テスト装置100とは異なる装置に含まれ、記憶部1300の記憶内容がテスト装置100から参照可能である場合があってもよい。
取得部1301〜出力部1304は、制御部となる機能である。取得部1301〜出力部1304は、具体的には、例えば、図4に示したメモリ402や記録媒体405などの記憶領域に記憶されたプログラムをCPU401に実行させることにより、または、ネットワークI/F403により、その機能を実現する。各機能部の処理結果は、例えば、図4に示したメモリ402や記録媒体405などの記憶領域に記憶される。
記憶部1300は、各機能部の処理に用いられる各種情報を記憶する。記憶部1300は、例えば、図5〜図12に示した各種テーブルを記憶する。これにより、記憶部1300は、各機能部の処理に用いられる各種情報を、各機能部が参照可能にすることができる。
取得部1301は、各機能部の処理に用いられる各種情報を記憶部1300から取得し、各機能部に出力する。これにより、取得部1301は、各機能部の処理に用いられる各種情報を、各機能部に提供することができる。
取得部1301は、テストシステム200に含まれる第1の情報処理装置と第2の情報処理装置とのうち、第2の情報処理装置に向けてテスト対象のソフトウェアが特定の間隔で出力する応答要求を取得する。ソフトウェアは、例えば、クラスタソフトウェアである。第1の情報処理装置は、通常時には待機状態である情報処理装置であり、例えば、待機系210、または、待機系210として動作可能であるテスト装置100である。第2の情報処理装置は、待機系210が運用状態に切り替わる前、通常時には運用状態である情報処理装置であり、例えば、運用系220である。応答要求は、例えば、ping送信依頼である。
取得部1301は、例えば、ネットワークドライバにより、クラスタソフトウェアが出力するping送信依頼を取得する。これにより、取得部1301は、クラスタソフトウェアが切替処理を開始したか否かを判定する際に用いられる情報を取得し、判定部1302に提供することができる。切替処理は、待機系210を待機状態から運用状態に切り替える処理を含み、テストシステム200を運用する情報処理装置を、運用系220から待機系210に切り替える処理である。
取得部1301は、運用系220に向けてクラスタソフトウェアが出力するアクセス要求を取得する。取得部1301は、例えば、ネットワークドライバにより、クラスタソフトウェアが出力するアクセス要求を取得する。これにより、取得部1301は、クラスタソフトウェアが出力したアクセス要求の結果が正常または異常になるように、管理部1303が制御可能にすることができる。
判定部1302は、クラスタソフトウェアの実行により切替処理が開始されたか否かを判定する。判定部1302は、運用系220に向けて、クラスタソフトウェアの実行により、特定の間隔で出力されるping送信依頼に基づいて、切替処理が開始されたか否かを判定する。これにより、判定部1302は、クラスタソフトウェアを改変しなくても、切替処理が開始されたか否かを判定することができ、クラスタソフトウェアの性能や動作に与える影響を抑制することができる。
判定部1302は、例えば、ping送信依頼に対して運用系220を無応答にする。そして、判定部1302は、運用系220を無応答にした後、クラスタソフトウェアがping送信依頼を出力してから、次のping送信依頼を出力せずに特定の時間が経過した場合、切替処理が開始されたと判定する。特定の時間は、クラスタソフトウェアがping送信依頼を出力するping間隔に応じた時間である。
これにより、判定部1302は、クラスタソフトウェアが、次のping送信依頼を出力せずに特定の時間が経過したため、ping送信依頼の出力を中止したと判断され、切替処理を開始したと判断されるタイミングを特定することができる。このため、判定部1302は、切替処理を開始したか否かを精度よく判定することができる。
ここで、判定部1302は、具体的には、自装置のネットワークドライバ、または、運用系220のネットワークドライバに、ping送信依頼の結果が異常になるように設定することにより、ping送信依頼に対して運用系220が無応答になるように制御する。
ここで、判定部1302は、クラスタソフトウェアがping送信依頼を出力してから、次のping送信依頼を出力するまでの時間を計測し、計測した時間を特定の時間に設定してもよい。これにより、判定部1302は、クラスタソフトウェアのping間隔を自動で特定して、特定の時間に設定することができる。
このため、判定部1302は、テスターがクラスタソフトウェアのping間隔を特定することができなくても、特定の時間を精度よく設定することができる。結果として、判定部1302は、クラスタソフトウェアが切替処理を開始したか否かを精度よく判定することができる。
また、運用系220がクラスタソフトウェアに向けて特定の間隔で信号を送信し、クラスタソフトウェアが、運用系220からの信号の出力が途絶えたことに応じて、運用系220の故障発生を監視する場合があってもよい。この場合、判定部1302は、運用系220が特定の間隔で出力する信号に基づいて、切替処理を開始したか否かを判定してもよい。
管理部1303は、判定部1302が切替処理が開始されたと判定したことに応じて、切替処理の結果をエラーにする制御を行う。管理部1303は、例えば、自装置のネットワークドライバやディスクドライバなどが、切替処理に関する処理の結果を異常にするように設定することにより、切替処理の結果がエラーになるように制御する。
管理部1303は、具体的には、図16および図17に後述する動作例1を実現する。これにより、管理部1303は、自装置のネットワークドライバやディスクドライバなどが原因である、切替処理に関するエラーケースを発生させることができる。結果として、管理部1303は、切替処理に関するエラーケースを発生させた場合について、クラスタソフトウェアをテストすることができ、クラスタソフトウェアのテストの精度向上を図ることができる。
管理部1303は、判定部1302が切替処理が開始されたと判定したことを、運用系220に通知することにより、切替処理に関する運用系220の動作の結果を異常にする制御を行うことにより、切替処理の結果をエラーにする。管理部1303は、例えば、運用系220のネットワークドライバやディスクドライバなどが、切替処理に関する処理の結果を異常にするように、運用系220に設定させることにより、切替処理の結果をエラーにする。
管理部1303は、具体的には、図18に後述する動作例2を実現する。これにより、管理部1303は、運用系220のネットワークドライバやディスクドライバなどが原因である、切替処理に関するエラーケースを発生させることができる。結果として、管理部1303は、切替処理に関するエラーケースを発生させた場合について、クラスタソフトウェアをテストすることができ、クラスタソフトウェアのテストの精度向上を図ることができる。
管理部1303は、切替処理が開始されたと判定したことを、待機系210に通知することにより、切替処理に関する待機系210の動作の結果を異常にする制御を行うことにより、切替処理の結果をエラーにする。管理部1303は、例えば、自装置が待機系210ではない場合、待機系210のネットワークドライバやディスクドライバなどが、切替処理に関する処理の結果を異常にするように、待機系210に設定させることにより、切替処理の結果をエラーにする。
管理部1303は、具体的には、図19に後述する動作例3を実現する。これにより、管理部1303は、待機系210のネットワークドライバやディスクドライバなどが原因である、切替処理に関するエラーケースを発生させることができる。結果として、管理部1303は、切替処理に関するエラーケースを発生させた場合について、クラスタソフトウェアをテストすることができ、クラスタソフトウェアのテストの精度向上を図ることができる。
管理部1303は、クラスタソフトウェアから待機系210または運用系220に対するアクセス要求を受け付けた場合、一定の時間が経過してから、受け付けたアクセス要求に応じた動作を行う。一定の時間は、例えば、テスターによって設定される。これにより、管理部1303は、切替処理が開始されたと判定してから、切替処理に関する待機系210または運用系220の動作の結果を異常にする制御を行うまでに、一定の時間がかかっても、クラスタソフトウェアを精度よくテストすることができる。
例えば、クラスタソフトウェアが切替処理を開始した後、アクセス要求を出力した時点では、まだ切替処理に関する待機系210または運用系220の動作の結果を異常にする制御が完了していないことがある。これに対し、テスト装置100は、アクセス要求に応じた動作を一定の時間保留するため、切替処理に関する待機系210または運用系220の動作の結果を異常にする制御が完了してから、アクセス要求に応じた動作を行うことができる。
管理部1303は、運用系220を無応答にした後に、待機系210または運用系220に対するアクセス要求を受け付けた場合、一定の時間が経過してから、受け付けたアクセス要求に応じた動作を行う。管理部1303は、例えば、ping送信依頼に対して運用系220が無応答になるように制御した後に、待機系210または運用系220に対するアクセス要求を受け付けた場合、一定の時間が経過してから、受け付けたアクセス要求に応じた動作を行う。これにより、管理部1303は、運用系220を無応答にする前のアクセス要求に応じた動作を開始するタイミングが遅れてしまうことを防止することができる。
管理部1303は、運用系220を無応答にした後、クラスタソフトウェアから運用系220に対するアクセス要求を複数受け付けた場合、複数のアクセス要求のうち、第1のアクセス要求の結果を異常にする制御を行う。また、管理部1303は、運用系220を無応答にした後、クラスタソフトウェアから運用系220に対するアクセス要求を複数受け付けた場合、複数のアクセス要求のうち、第2のアクセス要求の結果を正常にする制御を行う。
管理部1303は、例えば、運用系220を無応答にしたことを、運用系220に通知することにより、アクセス要求に関する運用系220の動作の結果を、正常にしたり、異常にしたりする制御を行う。管理部1303は、例えば、通知により、運用系220のネットワークドライバやディスクドライバなどが、第1のアクセス要求に応じた動作の結果を異常にし、第2のアクセス要求に応じた動作の結果を正常にするように、運用系220に設定させる。
管理部1303は、具体的には、図20および図21に後述する動作例4を実現する。これにより、管理部1303は、クラスタソフトウェアから運用系220に対するアクセスの結果が、正常である場合と、異常である場合との両方について、クラスタソフトウェアをテストすることができ、クラスタソフトウェアのテストの精度向上を図ることができる。
管理部1303は、クラスタソフトウェアから運用系220に対するアクセス要求を受け付けた場合、受け付けたアクセス要求に関する対応情報を記憶する制御を行う。対応情報は、アクセス要求に関する情報と、アクセス要求を受け付けた時点が、切替処理が開始されたと判定した時点の前後のいずれかに関する情報とを対応付けた情報である。アクセス要求に関する情報は、例えば、アクセスされる記憶内容である。
管理部1303は、例えば、運用系220を無応答にしたことを、運用系220に通知し、切替処理が開始されたと判定したことを、運用系220に通知することにより、運用系220に対応情報を記憶させる制御を行う。管理部1303は、具体的には、図22および図23に後述する動作例5を実現する。これにより、管理部1303は、アクセス要求が、切替処理が開始した時点の前後のいずれに出力されたアクセス要求かを特定可能なように、アクセス要求に関する情報を記憶しておき、クラスタソフトウェアのテストに利用可能にすることができる。
管理部1303は、クラスタソフトウェアの動作を確認し、クラスタソフトウェアをテストする。管理部1303は、上述したように、切替処理に関するエラーケースを発生させつつ、クラスタソフトウェアをテストする。これにより、管理部1303は、クラスタソフトウェアが、クラスタソフトウェアの設計者が想定する動作を行っているかを判定することができる。
出力部1304は、管理部1303がクラスタソフトウェアをテストした結果を出力する。出力部1304は、各機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F403による外部装置への送信、または、メモリ402や記録媒体405などの記憶領域への記憶である。これにより、出力部1304は、各機能部の処理結果を利用者に通知可能にし、テスト装置100の管理や運用、例えば、テスト装置100の設定値の更新などを支援することができ、テスト装置100の利便性の向上を図ることができる。
(テストシステム200の動作例)
次に、図14〜図23を用いて、クラスタソフトウェアのテストに望まれる要件1、および、要件2について説明し、テストシステム200の動作例1、動作例2、動作例3、動作例4、および、動作例5について説明する。まず、図14を用いて、クラスタソフトウェアのテストに望まれる要件1について説明する。
図14は、要件1を示す説明図である。クラスタソフトウェアのテストに求められる要件として、例えば、要件1がある。要件1は、例えば、クラスタソフトウェアが切替処理を行っている最中に、切替処理に関するエラーケースを発生させることである。
テスト装置100は、例えば、図14に示す切替処理の流れにおいて、切替処理に関する処理の結果が異常になるように制御することにより、切替処理に関するエラーケースを発生させる。まず、図14に示す切替処理の流れについて説明する。
図14に示すように、(14−1)クラスタソフトウェア1411は、運用系220にpingを送信することにより、運用系220の障害発生を監視する。pingに対する応答は、例えば、ハートビート応答と呼ばれる。運用系220の障害発生を監視することは、例えば、ハートビート監視と呼ばれる。障害は、例えば、ハングとも呼ばれる。pingに対して特定の時間待ってもハートビート応答がないという事象が、運用系220に障害が発生したことを示す。ハートビート応答がないという事象は、例えば、ハートビート断と呼ばれる。
クラスタソフトウェア1411は、例えば、テスト装置100のネットワークドライバ1412と、運用系220のネットワークドライバ1423とを介して、運用系220のクラスタソフトウェア1421にpingを送信する。ここでは、クラスタソフトウェア1411は、ハートビートがあるため、運用系220に障害が発生していないと判定する。
(14−2)運用系220において、アプリ1424は、共有ディスクのユーザデータにアクセスすることがある。(14−3)同様に、アプリ1424は、共有ディスクのユーザデータにアクセスすることがある。
(14−4)クラスタソフトウェア1411は、運用系220にpingを送信することにより、運用系220の障害発生を監視する。ここでは、クラスタソフトウェア1411は、ハートビートがなくなったため、運用系220に障害が発生したと判定する。そして、クラスタソフトウェア1411は、切替処理を開始する。
(14−5)クラスタソフトウェア1411は、pingとは異なる通信経路を介して、運用系220を停止させる。クラスタソフトウェア1411は、例えば、テスト装置100のネットワークドライバ1413と、運用系220のネットワークドライバ1422とを介して、運用系220を停止させる。
これに対し、運用系220を停止させる通信経路に異常があるというエラーケースを発生させ、切替処理の結果がエラーになる場合について、クラスタソフトウェア1411をテストすることが望まれる。例えば、運用系220のネットワークドライバ1422に異常があるというエラーケースを発生させることが望まれる。
(14−6)クラスタソフトウェア1411は、待機状態を運用状態に切り替えるために、システムディスク1403にアクセスする。クラスタソフトウェア1411は、例えば、ディスクドライバ1415を介して、システムディスク1403にアクセスする。
これに対し、システムディスク1403へのアクセスに異常があるというエラーケースを発生させ、切替処理の結果がエラーになる場合について、クラスタソフトウェア1411をテストすることが望まれる。例えば、ディスクドライバ1415に異常があるというエラーケースを発生させることが望まれる。
(14−7)クラスタソフトウェア1411は、待機状態を運用状態に切り替えるために、アプリ1414に状態遷移スクリプトの実行指示を送信する。
これに対し、アプリ1414に異常があるというエラーケースを発生させ、切替処理の結果がエラーになる場合について、クラスタソフトウェア1411をテストすることが望まれる。
(14−8)アプリ1414は、共有ディスクのユーザデータにアクセスする。上述したように、切替処理の結果がエラーになる様々なエラーケースにおける、クラスタソフトウェア1411の動作を確認し、クラスタソフトウェア1411についてテストすることが望まれる。例えば、様々なエラーケースが発生しても、クラスタソフトウェア1411が、切替処理を再び試行したり、切替処理を中止したりすることができるか否かをテストすることが望まれる。
このため、要件1として、クラスタソフトウェアが切替処理を行っている最中に、切替処理に関するエラーケースを発生させることが望まれる。ここで、切替処理が開始される前に、エラーケースを発生させることは好ましくないため、切替処理が開始されたことに応じて、エラーケースを発生させることが望まれる。
次に、図15を用いて、クラスタソフトウェアのテストに望まれる要件2について説明する。
図15は、要件2を示す説明図である。クラスタソフトウェアのテストに求められる要件として、例えば、要件2がある。要件2は、例えば、切替処理が行われる原因になった運用系220に対するクラスタソフトウェアからのアクセスの結果が、正常である場合と、異常である場合とについて、クラスタソフトウェアの動作を確認することである。
ここで、図15に示すように、(15−1)クラスタソフトウェア1512は、運用系220にpingを送信することにより、運用系220の障害発生を監視する。
(15−2)クラスタソフトウェア1512は、運用系220の障害発生を検知したにも関わらず、運用系220にある情報を取得するために、運用系220に対してアクセスしてしまうことがある。クラスタソフトウェア1512は、例えば、クラスタソフトウェア1512の設計者が意図しないバグにより、運用系220に対してアクセスしてしまうことがある。
これに対し、運用系220が、pingには応答しないが、アクセスに対しては正常に応答するような、異常が発生する場合がある。この場合、クラスタソフトウェア1512は、アクセスすることが好ましくない情報についてアクセスしてしまう結果になる場合がある。
このため、要件2として、切替処理が行われる原因になった運用系220に対するクラスタソフトウェアからのアクセスの結果が、正常である場合と、異常である場合とについて、クラスタソフトウェアの動作を確認することが望まれる。
(テストシステム200の動作例1)
次に、図16および図17を用いて、テストシステム200の動作例1について説明する。動作例1は、要件1を満たすように、クラスタソフトウェアをテストする一例である。図16および図17のテストシステム200は、例えば、図3に示したテストシステム200である。
図16は、テストシステム200の動作例1の流れを示す説明図である。図16に示すように、(16−1)クラスタソフトウェア315は、ネットワークドライバ311を介して、pingを運用系220のネットワークドライバ331に送信するが、特定の時間が経過しても無応答である。
(16−2)クラスタソフトウェア315は、ネットワークドライバ311を介して、pingを運用系220のネットワークドライバ331に再び送信するが、特定の時間が経過しても無応答である。
(16−3)クラスタソフトウェア315は、ハートビート断を検知し、運用系220がハングであると判定し、切替処理を開始する。
(16−4)クラスタソフトウェア315は、切替処理において、ネットワークドライバ312を介して、運用系220に、切替処理に関する処理を行わせようとする。
(16−5)テスト装置100は、切替処理に関する処理の結果が異常になるように、ネットワークドライバ332を制御する。
これにより、テスト装置100は、運用系220が原因である切替処理に関する第1のエラーケースを発生させ、クラスタソフトウェア315を精度よくテストすることができる。同様に、テスト装置100は、自装置が原因である切替処理に関する第2のエラーケースを発生させることもできる。
ここでは、テスト装置100が待機系210として動作する場合について説明したが、これに限らない。例えば、テスト装置100とは異なる待機系210があり、テスト装置100が、運用系220がハングしたと判定したことに応じて、待機系210と運用系220とに切替指示を送信することにより、切替処理を行う場合があってもよい。
この場合、運用系220における切替処理に関する処理の結果がエラーになるという第3のエラーケースを発生させることが望まれる。また、待機系210における切替処理に関する処理の結果がエラーになるという第4のエラーケースを発生させることが望まれる。また、テスト装置100から運用系220への切替指示の結果がエラーになるという第5のエラーケースを発生させることが望まれる。また、テスト装置100から待機系210への切替指示の結果がエラーになるという第6のエラーケースを発生させることが望まれる。
動作例1では、テスト装置100が待機系210として動作する場合であり、テスト装置100が原因である、切替処理に関する第2のエラーケースを発生させる場合について説明する。また、動作例2では、運用系220が原因である、切替処理に関する第1のエラーケースを発生させる場合について説明する。一方で、テスト装置100とは異なる待機系210がある場合については、動作例3を用いて説明する。ここで、図17の説明に移行する。
図17は、テストシステム200の動作例1の一例を示す説明図である。図17の例では、端末装置201からのテスト開始指示に応じて、ネットワークドライバ311が、ping送信依頼を破棄し、運用系220が無応答な状態をシミュレーションするように設定される。ここで、ネットワークドライバ311は、ping送信依頼以外の信号については、運用系220に送信されるようにしてもよい。
図17に示すように、(17−1)クラスタソフトウェア315は、ネットワークドライバ311に対して、pingを運用系220のネットワークドライバ331に送信するように、ping送信依頼を出力するが、特定の時間Tが経過しても無応答である。
(17−2)クラスタソフトウェア315は、無応答であるため、ネットワークドライバ311に対して、pingを運用系220のネットワークドライバ331に送信するように、ping送信依頼を再び出力するが、特定の時間Tが経過しても無応答である。
(17−3)クラスタソフトウェア315は、ハートビート断を検知し、運用系220がハングであると判定し、切替処理を開始する。
(17−4)ネットワークドライバ311は、ping送信依頼を受け付けた後、特定の時間Tが経過しても、次のping送信依頼をクラスタソフトウェア315が出力しない場合、切替処理が開始されたと判定する。
ネットワークドライバ311は、切替処理が開始されたと判定すると、ステータステーブル500のエラーフラグ=ONに設定し、エラーフラグ=ONを、ネットワークドライバ312,313に送信する。エラーフラグは、例えば、TCPヘッダのリザーブ域などを用いて送信される。同様に、ネットワークドライバ311は、エラーフラグ=ONを、ディスクドライバ314に送信する。
(17−5)クラスタソフトウェア315は、切替処理において、ネットワークドライバ312を介して、運用系220に切替指示を送信しようとする。
(17−6)ネットワークドライバ312は、受信したエラーフラグ=ONに基づいて、切替指示を破棄し、切替処理の結果がエラーになるようなエラーケースを発生させる。
これにより、テスト装置100は、自装置のネットワークドライバ312,313やディスクドライバ314などが原因である、切替処理に関するエラーケースを発生させ、クラスタソフトウェア315をテストすることができる。このため、テスト装置100は、クラスタソフトウェア315のテストの精度向上を図ることができる。
(テストシステム200の動作例2)
次に、図18を用いて、テストシステム200の動作例2について説明する。動作例2は、動作例1と同様に、要件1を満たすように、クラスタソフトウェアをテストする一例である。図18のテストシステム200は、例えば、図3に示したテストシステム200である。
図18は、テストシステム200の動作例2の一例を示す説明図である。図18に示す(18−1)〜(18−3)は、例えば、図17に示した(17−1)〜(17−3)と同様であるため、説明を省略する。
(18−4)ネットワークドライバ311は、ping送信依頼を受け付けた後、特定の時間Tが経過しても、次のping送信依頼をクラスタソフトウェア315が出力しない場合、切替処理が開始されたと判定する。
ネットワークドライバ311は、切替処理が開始されたと判定すると、ステータステーブル500のエラーフラグ=ONに設定し、エラーフラグ=ONを、運用系220のネットワークドライバ331に送信する。ここで、ネットワークドライバ331は、受信したエラーフラグ=ONを、ネットワークドライバ332に転送しておく。
(18−5)クラスタソフトウェア315は、切替処理において、ネットワークドライバ312を介して、運用系220に切替指示を送信しようとする。
(18−6)ネットワークドライバ332は、受信したエラーフラグ=ONに基づいて、切替指示を破棄し、切替処理の結果がエラーになるようなエラーケースを発生させる。
これにより、テスト装置100は、運用系220のネットワークドライバ331,332やディスクドライバ(不図示)などが原因である、切替処理に関するエラーケースを発生させ、クラスタソフトウェア315をテストすることができる。このため、テスト装置100は、クラスタソフトウェア315のテストの精度向上を図ることができる。
(テストシステム200の動作例3)
次に、図19を用いて、テストシステム200の動作例3について説明する。動作例3は、動作例1と同様に、要件1を満たすように、クラスタソフトウェアをテストする一例である。図19のテストシステム200は、例えば、図3に示したテストシステム200である。
図19は、テストシステム200の動作例3の一例を示す説明図である。図19に示す(19−1)〜(19−3)は、例えば、図17に示した(17−1)〜(17−3)と同様であるため、説明を省略する。
(19−4)ネットワークドライバ311は、ping送信依頼を受け付けた後、特定の時間Tが経過しても、次のping送信依頼をクラスタソフトウェア315が出力しない場合、切替処理が開始されたと判定する。
ネットワークドライバ311は、切替処理が開始されたと判定すると、ステータステーブル500のエラーフラグ=ONに設定し、エラーフラグ=ONを、ネットワークドライバ313に送信する。
(19−5)クラスタソフトウェア315は、切替処理において、ネットワークドライバ312を介して、運用系220に切替指示を送信しようとする。ネットワークドライバ332は、切替指示を受信し、切替指示に応じた正常な動作を行う。
(19−6)クラスタソフトウェア315は、切替処理において、ネットワークドライバ313を介して、待機系210に切替指示を送信しようとする。ネットワークドライバ313は、切替指示にエラーフラグ=ONを付与して、待機系210のネットワークドライバ321に送信する。ネットワークドライバ321は、受信したエラーフラグ=ONを、ネットワークドライバ322やディスクドライバ323に転送しておく。
(19−7)ネットワークドライバ332は、受信した切替指示に付与されたエラーフラグ=ONに基づいて、切替指示を破棄し、切替処理の結果がエラーになるようなエラーケースを発生させる。
これにより、テスト装置100は、自装置以外の待機系210のネットワークドライバ321,322やディスクドライバ323などが原因である、切替処理に関するエラーケースを発生させ、クラスタソフトウェア315をテストすることができる。このため、テスト装置100は、クラスタソフトウェア315のテストの精度向上を図ることができる。
ここでは、ネットワークドライバ311と、ネットワークドライバ313とが異なるドライバである場合について説明したが、これに限らない。例えば、ネットワークドライバ311が、上述したネットワークドライバ313としても動作する場合があってもよい。
(テストシステム200の動作例4)
次に、図20および図21を用いて、テストシステム200の動作例4について説明する。動作例4は、要件2を満たすように、クラスタソフトウェアをテストする一例である。図20および図21のテストシステム200は、例えば、図3に示したテストシステム200である。
図20および図21は、テストシステム200の動作例4の一例を示す説明図である。図10の例では、運用系220のシステムディスクに、モード=特殊テストモードを含むモード情報900と、正常復帰フラグ=OFFを含むステータステーブル500とが含まれる。モード=特殊テストモードを含むモード情報900と、正常復帰フラグ=OFFを含むステータステーブル500とは、例えば、テスターによって設定される。
図20に示す(20−1)〜(20−3)は、例えば、図17に示した(17−1)〜(17−3)と同様であるため、説明を省略する。
(20−4)ネットワークドライバ311は、ping送信依頼を受け付けた後、特定の時間Tが経過しても、次のping送信依頼をクラスタソフトウェア315が出力しない場合、切替処理が開始されたと判定する。
ネットワークドライバ311は、切替処理が開始されたと判定すると、ステータステーブル500のエラーフラグ=ONに設定し、エラーフラグ=ONを、運用系220のネットワークドライバ331に送信する。ここで、ネットワークドライバ331は、受信したエラーフラグ=ONを、ネットワークドライバ332に転送しておく。
(20−5)クラスタソフトウェア315は、切替処理とは別に、バグにより、ネットワークドライバ311を介して、運用系220にアクセスしようとする。
バグは、例えば、ハートビート断前であり、クラスタソフトウェア315がハングと判定する前に行われる処理で、運用系220に対してアクセスしてしまう不具合である。バグは、例えば、ハートビート断後であり、クラスタソフトウェア315がハングと判定した後に行われる処理で、運用系220に対してアクセスしてしまう不具合である。
(20−6)ネットワークドライバ331は、受信したエラーフラグ=ONであるが、モード=特殊テストモードであり、正常復帰フラグ=OFFであるため、一旦、アクセスの結果を正常にすると判定する。ネットワークドライバ331は、アクセスの結果が正常になるように、アクセスに応じた動作を行うと、正常復帰フラグ=ONに設定し、次回のアクセスの結果が異常になるようにする。
これにより、テスト装置100は、運用系220に対するアクセスの結果が正常になる場合について、クラスタソフトウェア315をテストすることができる。このため、テスト装置100は、クラスタソフトウェア315のテストの精度向上を図ることができる。次に、図21の説明に移行する。
図21に示す(21−1)〜(21−3)は、例えば、図17に示した(17−1)〜(17−3)と同様であるため、説明を省略する。
(21−4)ネットワークドライバ311は、ping送信依頼を受け付けた後、特定の時間Tが経過しても、次のping送信依頼をクラスタソフトウェア315が出力しない場合、切替処理が開始されたと判定する。
ネットワークドライバ311は、切替処理が開始されたと判定すると、ステータステーブル500のエラーフラグ=ONに設定し、エラーフラグ=ONを、運用系220のネットワークドライバ331に送信する。ここで、ネットワークドライバ331は、受信したエラーフラグ=ONを、ネットワークドライバ332に転送しておく。
(21−5)クラスタソフトウェア315は、切替処理とは別に、バグにより、ネットワークドライバ311を介して、運用系220にアクセスしようとする。
(21−6)ネットワークドライバ331は、受信したエラーフラグ=ONであり、正常復帰フラグ=ONであるため、アクセスの結果を異常にすると判定する。ネットワークドライバ331は、アクセスの結果が異常になるように、アクセスに応じた動作を行うと、正常復帰フラグ=OFFに設定し、次回のアクセスの結果が正常になるようにする。
これにより、テスト装置100は、運用系220に対するアクセスの結果が異常になる場合について、クラスタソフトウェア315をテストすることができる。このため、テスト装置100は、クラスタソフトウェア315のテストの精度向上を図ることができる。
(テストシステム200の動作例5)
次に、図22および図23を用いて、テストシステム200の動作例5について説明する。動作例5は、要件2を満たすように、クラスタソフトウェアをテストする一例である。図22および図23のテストシステム200は、例えば、図3に示したテストシステム200である。
図22および図23は、テストシステム200の動作例5の一例を示す説明図である。上述したように、クラスタソフトウェア315のバグは、例えば、ハートビート断前に行われる処理で運用系220に対してアクセスしてしまうバグと、ハートビート断後に行われる処理で運用系220に対してアクセスしてしまうバグとがある。
ハートビート断前におけるバグの原因は、例えば、切替処理とは独立して動作する処理において、運用系220にアクセスしてしまうことである。また、ハートビート断後におけるバグの原因は、例えば、切替処理において、ハートビート監視のロジックと独立して動作するロジックが、ハートビート断にも関わらず運用系220にアクセスしてしまうことである。
これに対し、クラスタソフトウェア315のテストでは、ハートビート断前の処理においてバグがあるのか、ハートビート断後の処理においてバグがあるのかを区別可能にし、クラスタソフトウェア315を修正しやすくすることが望まれる。このため、動作例5では、テスト装置100は、ハートビート断前の運用系220に対するアクセスと、ハートビート断後の運用系220に対するアクセスとを区別して、アクセスに関する情報を記憶しておく。
図22に示すように、(22−1)クラスタソフトウェア315は、ネットワークドライバ311に対して、pingを運用系220のネットワークドライバ331に送信するように、ping送信依頼を出力するが、特定の時間Tが経過しても無応答である。
ここで、ネットワークドライバ311は、ping送信依頼に応じて、ステータステーブル500のテスト準備中フラグ=ONに設定し、テスト準備中フラグ=ONを、運用系220のネットワークドライバ331に送信する。
図22に示す(22−2)は、例えば、図17に示した(17−2)と同様であるため、説明を省略する。
(22−3)クラスタソフトウェア315は、ネットワークドライバ311を介して、運用系220にアクセスしようとする。
(22−4)ネットワークドライバ331は、テスト準備中フラグ=ON、かつ、エラーフラグ=OFFであるため、ハートビート断前であると判定する。ネットワークドライバ331は、ハートビート断前のアクセスについて、アクセス内容をアクセスログ情報1200に記憶する。
図22に示す(22−5)は、例えば、図17に示した(17−3)と同様であるため、説明を省略する。
(22−6)ネットワークドライバ311は、ping送信依頼を受け付けた後、特定の時間Tが経過しても、次のping送信依頼をクラスタソフトウェア315が出力しない場合、切替処理が開始されたと判定する。
ネットワークドライバ311は、切替処理が開始されたと判定すると、ステータステーブル500のエラーフラグ=ONに設定し、エラーフラグ=ONを、運用系220のネットワークドライバ331に送信する。
これにより、テスト装置100は、ハートビート断前のアクセスについて、アクセス内容をアクセスログ情報1200に記憶しておくことができる。例えば、クラスタソフトウェア315がハートビート断後には運用系220にアクセスしないように設計されており、クラスタソフトウェア315が正常に動作するかをテストする場合がある。この場合、テスト装置100は、ハートビート断前のアクセスに基づいて、クラスタソフトウェア315が正常に動作していないと判定してしまうことを防止することができる。
また、テスト装置100は、テスターにアクセスログ情報1200を参照させ、テスターがクラスタソフトウェア315の動作を詳細に把握可能にすることができ、クラスタソフトウェア315のテストの精度向上を図ることができる。テスターは、例えば、クラスタソフトウェア315のバグが、ハートビート断前の処理に含まれることを把握することができる。次に、図23の説明に移行する。
図23に示すように、(23−1)クラスタソフトウェア315は、ネットワークドライバ311に対して、pingを運用系220のネットワークドライバ331に送信するように、ping送信依頼を出力するが、特定の時間Tが経過しても無応答である。
ここで、ネットワークドライバ311は、ping送信依頼に応じて、ステータステーブル500のテスト準備中フラグ=ONに設定し、テスト準備中フラグ=ONを、運用系220のネットワークドライバ331に送信する。
図23に示す(23−2)および(23−3)は、例えば、図17に示した(17−2)および(17−3)と同様であるため、説明を省略する。
(23−4)ネットワークドライバ311は、ping送信依頼を受け付けた後、特定の時間Tが経過しても、次のping送信依頼をクラスタソフトウェア315が出力しない場合、切替処理が開始されたと判定する。
ネットワークドライバ311は、切替処理が開始されたと判定すると、ステータステーブル500のエラーフラグ=ONに設定し、テスト準備中フラグ=OFFに設定する。ネットワークドライバ311は、エラーフラグ=ONと、テスト準備中フラグ=OFFとを、運用系220のネットワークドライバ331に送信する。
(23−5)クラスタソフトウェア315は、切替処理とは別に、バグにより、ネットワークドライバ311を介して、運用系220にアクセスしようとする。
(23−6)ネットワークドライバ331は、テスト準備中フラグ=OFF、かつ、エラーフラグ=ONであるため、ハートビート断後であると判定する。ネットワークドライバ331は、ハートビート断後のアクセスについて、アクセス内容をアクセスログ情報1200に記憶する。
これにより、テスト装置100は、ハートビート断後のアクセスについて、アクセス内容をアクセスログ情報1200に記憶しておくことができる。例えば、クラスタソフトウェア315がハートビート断後には運用系220にアクセスしないように設計されており、クラスタソフトウェア315が正常に動作するかをテストする場合がある。この場合、テスト装置100は、ハートビート断後のアクセスに基づいて、クラスタソフトウェア315が正常に動作していないと判定することができる。
また、テスト装置100は、テスターにアクセスログ情報1200を参照させ、テスターがクラスタソフトウェア315の動作を詳細に把握可能にすることができ、クラスタソフトウェア315のテストの精度向上を図ることができる。テスターは、例えば、クラスタソフトウェア315のバグが、ハートビート断後の処理に含まれることを把握することができる。
テスト装置100は、動作例1〜動作例5に示したように、自装置以外の待機系210や運用系220において行われる、クラスタソフトウェアの切替処理に関する処理の結果が異常になるようにすることができる。これにより、テスト装置100は、クラスタソフトウェアの切替処理に関する様々なエラーケースを発生させることができる。テスト装置100は、例えば、自装置以外の待機系210へのアクセス要求にエラーフラグを付与しておき、自装置以外の待機系210におけるエラーケースを発生させることができる。このため、テスト装置100は、クラスタソフトウェアのテストの精度向上を図ることができる。
動作例1〜動作例5では、ネットワークドライバやディスクドライバなどが、切替指示やアクセス要求などを受け付けた際、切替指示やアクセス要求などに応じた処理を実行するまでに待ち時間を設けない場合について説明したが、これに限らない。
例えば、クラスタソフトウェアが運用系220がハングであるため切替処理を開始するタイミングは、ネットワークドライバやディスクドライバなどが「クラスタソフトウェアが切替処理を開始した」と判定するタイミングとラグがあり、一致しないことがある。例えば、切替処理と、ネットワークドライバやディスクドライバなどがエラーフラグを受信して設定する処理とが、OSによってディスパッチされながら動作し、テスト装置100の環境などにより実行順序が不安定になるため、ラグが生じることがある。
このため、ネットワークドライバやディスクドライバなどが、受け付けた切替指示やアクセス要求などに応じた処理を実行するまでに待ち時間を設け、エラーフラグを受信するかを待つようにする場合があってもよい。例えば、ネットワークドライバやディスクドライバなどは、テスト準備中フラグやエラーフラグに基づいて、運用系220が無応答にされた後に受け付けた切替指示やアクセス要求などに応じた処理を実行するまでに待ち時間を設ける。これにより、テスト装置100は、クラスタソフトウェアのテストの精度向上を図ることができる。
(監視処理手順の一例)
次に、図24を用いて、テスト装置100のネットワークドライバによって実行される、監視処理手順の一例について説明する。監視処理は、テスト装置100とは異なる待機系210や運用系220のネットワークドライバにおいても実行可能であってもよい。
図24は、監視処理手順の一例を示すフローチャートである。図24において、テスト装置100は、ping送信依頼を受け付ける(ステップS2401)。
そして、テスト装置100は、依頼元がテスト対象のソフトウェアであるか否かを判定する(ステップS2402)。ここで、テスト対象のソフトウェアではない場合(ステップS2402:No)、テスト装置100は、ステップS2403の処理に移行する。一方で、テスト対象のソフトウェアである場合(ステップS2402:Yes)、テスト装置100は、ステップS2404の処理に移行する。
ステップS2403では、テスト装置100は、通常のping送信処理を実行する(ステップS2403)。そして、テスト装置100は、監視処理を終了する。
ステップS2404では、テスト装置100は、カウンタ(i)をカウントアップする(ステップS2404)。次に、テスト装置100は、現在時刻をOSから取得し、T(i)に設定する(ステップS2405)。
そして、テスト装置100は、送信側フラグテーブル600のテスト準備中フラグ=OFFであるか否かに基づいて、初回のpingであるか否かを判定する(ステップS2406)。テスト装置100は、例えば、送信側フラグテーブル600のテスト準備中フラグ=OFFであれば、初回のpingであると判定する。ここで、初回のpingである場合(ステップS2406:Yes)、テスト装置100は、ステップS2407の処理に移行する。一方で、初回のpingではない場合(ステップS2406:No)、テスト装置100は、ステップS2410の処理に移行する。
ステップS2407では、テスト装置100は、ステータステーブル500に、依頼元のプロセス名と、pingの相手先のアドレスと、現在時刻T(1)を記録する(ステップS2407)。次に、テスト装置100は、送信側フラグテーブル600のテスト準備中フラグ=ONに設定する(ステップS2408)。そして、テスト装置100は、送信側フラグテーブル600を含む通知パケットを、pingの相手先に送信する(ステップS2409)。その後、テスト装置100は、監視処理を終了する。
ステップS2410では、テスト装置100は、送信側フラグテーブル600のテスト準備中フラグ=ON、かつ、ping受付待ちフラグ=OFFであるか否かに基づいて、2回目以降のpingであるか否かを判定する(ステップS2410)。ここで、2回目以降のpingである場合(ステップS2410:Yes)、テスト装置100は、ステップS2411の処理に移行する。一方で、2回目以降のpingではない場合(ステップS2410:No)、テスト装置100は、ステップS2414の処理に移行する。
ステップS2411では、テスト装置100は、ステータステーブル500に、現在時刻T(1)を記録する(ステップS2411)。次に、テスト装置100は、T(2)−T(1)からping間隔を算出し、作業域800に記憶する(ステップS2412)。そして、テスト装置100は、送信側フラグテーブル600のping受付待ちフラグ=ONに設定する(ステップS2413)。その後、テスト装置100は、ステップS2414の処理に移行する。
ステップS2414では、テスト装置100は、OSにタイムアウト値=Tでタイマー割込依頼を出力し、タイムアウト時に図25に後述する割込処理を実行する(ステップS2414)。テスト装置100は、タイムアウト前に、新たにOSにタイムアウト値=Tでタイマー割込依頼を出力する場合、直前のタイマー割込依頼はキャンセルする。
そして、テスト装置100は、監視処理を終了する。これにより、テスト装置100は、クラスタソフトウェアから初回のpingを受け付けると、通常の処理を行わずに、他のデバイスドライバとの共通域に記憶されたテスト準備中フラグ=ONに設定することができる。共通域は、例えば、システムディスクである。
また、テスト装置100は、テスト準備中フラグ=ON、かつ、ping受付待ちフラグ=OFFの場合、ping受付待ちフラグ=ONに設定することができる。また、テスト装置100は、クラスタソフトウェアからpingを受け付けると、ping間隔=(T2−T1)を算出し、タイマー割込依頼を出力することができ、タイムアウトにより、クラスタソフトウェアの切替処理の開始を判定可能にすることができる。
また、テスト装置100は、テスト準備中フラグ=ON、かつ、ping受付待ちフラグ=ONの場合、クラスタソフトウェアからpingを受け付けると、タイマー割込依頼を再出力することができ、タイマーを計測し直させることができる。
(割込処理手順の一例)
次に、図25を用いて、テスト装置100のネットワークドライバによって実行される、割込処理手順の一例について説明する。割込処理は、テスト装置100とは異なる待機系210や運用系220のネットワークドライバにおいても実行可能であってもよい。
図25は、割込処理手順の一例を示すフローチャートである。図25において、テスト装置100は、送信側フラグテーブル600のエラーフラグ=ONに設定する(ステップS2501)。
次に、テスト装置100は、送信側フラグテーブル600のテスト準備中フラグ=OFF、ping受付待ちフラグ=OFFに設定する(ステップS2502)。そして、テスト装置100は、ステータステーブル500からpingの相手先のアドレスを取得する(ステップS2503)。
次に、テスト装置100は、送信側フラグテーブル600を含む通知パケットを、pingの相手先に送信する(ステップS2504)。そして、テスト装置100は、割込処理を終了する。これにより、テスト装置100は、タイマーのタイムアウトに応じて、クラスタソフトウェアの切替処理の開始を判定することができる。
テスト装置100は、タイマーのタイムアウトによる割込が発生した場合、共通域に記憶されたエラーフラグ=ONに設定することができ、切替処理に関するエラーケースを発生可能なタイミングであることを特定することができる。また、テスト装置100は、pingの相手先に、エラーフラグや正常復帰フラグを送信し、切替処理に関するエラーケースを発生可能なタイミングであることを通知することができる。
(送信処理手順の一例)
次に、図26および図27を用いて、テスト装置100のネットワークドライバによって実行される、送信処理手順の一例について説明する。送信処理は、テスト装置100とは異なる待機系210や運用系220のネットワークドライバにおいても実行可能であってもよい。
図26および図27は、送信処理手順の一例を示すフローチャートである。図26において、テスト装置100は、アクセス要求の送信依頼を受け付ける(ステップS2601)。
そして、テスト装置100は、依頼元がテスト対象のソフトウェアであるか否かを判定する(ステップS2602)。ここで、テスト対象のソフトウェアである場合(ステップS2602:Yes)、テスト装置100は、ステップS2603の処理に移行する。一方で、テスト対象のソフトウェアではない場合(ステップS2602:No)、テスト装置100は、図27のステップS2709の処理に移行する。
ステップS2603では、テスト装置100は、送信側フラグテーブル600のテスト準備中フラグ=ONであるか否かを判定する(ステップS2603)。ここで、テスト準備中フラグ=ONである場合(ステップS2603:Yes)、テスト装置100は、ステップS2604の処理に移行する。一方で、テスト準備中フラグ=ONではない場合(ステップS2603:No)、テスト装置100は、図27のステップS2701の処理に移行する。
ステップS2604では、テスト装置100は、t時間スリープする(ステップS2604)。そして、テスト装置100は、図27のステップS2701の処理に移行する。
図27において、テスト装置100は、送信側フラグテーブル600のエラーフラグ=ONであるか否かを判定する(ステップS2701)。ここで、エラーフラグ=ONである場合(ステップS2701:Yes)、テスト装置100は、ステップS2702の処理に移行する。一方で、エラーフラグ=ONではない場合(ステップS2701:No)、テスト装置100は、ステップS2709の処理に移行する。
ステップS2702では、テスト装置100は、ステータステーブル500からpingの相手先のアドレスを取得する(ステップS2702)。そして、テスト装置100は、アクセス先がpingの相手先であるか否かを判定する(ステップS2703)。ここで、pingの相手先である場合(ステップS2703:Yes)、テスト装置100は、ステップS2704の処理に移行する。一方で、pingの相手先ではない場合(ステップS2703:No)、テスト装置100は、ステップS2705の処理に移行する。
ステップS2704では、テスト装置100は、図28に後述するシミュレーション処理を実行する(ステップS2704)。そして、テスト装置100は、送信処理を終了する。
ステップS2705では、テスト装置100は、送信側フラグテーブル600のエラー情報送信済みフラグ=OFFであるか否かを判定する(ステップS2705)。ここで、エラー情報送信済みフラグ=OFFである場合(ステップS2705:Yes)、テスト装置100は、ステップS2706の処理に移行する。一方で、エラー情報送信済みフラグ=OFFではない場合(ステップS2705:No)、テスト装置100は、送信処理を終了する。
ステップS2706では、テスト装置100は、送信側フラグテーブル600を含む通知パケットを、アクセス要求の送信先に送信する(ステップS2706)。次に、テスト装置100は、送信側フラグテーブル600のエラー情報送信済みフラグ=ONに設定する(ステップS2707)。そして、テスト装置100は、通常の送信処理を実行する(ステップS2708)。その後、テスト装置100は、送信処理を終了する。
ステップS2709では、テスト装置100は、通常の送信処理を実行する(ステップS2709)。そして、テスト装置100は、送信処理を終了する。これにより、テスト装置100は、テスト準備中フラグ=ONであれば、アクセス要求に応じて、通常の処理は行わず、アクセス要求に応じた処理の開始を、一定の時間保留することができる。そして、テスト装置100は、一定の時間が経過すると、エラーフラグ=ONであり、アクセス先が、pingの相手先であれば、エラーケースをシミュレーションすることができる。また、テスト装置100は、pingの相手先に、エラーケースをシミュレーションさせることもできる。
(シミュレーション処理手順の一例)
次に、図28を用いて、テスト装置100のネットワークドライバによって実行される、シミュレーション処理手順の一例について説明する。シミュレーション処理は、テスト装置100とは異なる待機系210や運用系220のネットワークドライバにおいても実行可能であってもよい。
図28は、シミュレーション処理手順の一例を示すフローチャートである。図28において、テスト装置100は、通常の送信処理を実行する(ステップS2801)。そして、テスト装置100は、シミュレーション処理を終了する。テスト装置100は、通常の送信処理を実行することにより、送信先でエラーケースのシミュレーションを実行させる。テスト装置100は、例えば、自装置でエラーケースのシミュレーションを実行してもよい。
(受信処理手順の一例)
次に、図29および図30を用いて、運用系220のネットワークドライバによって実行される、受信処理手順の一例について説明する。受信処理は、テスト装置100、または、テスト装置100とは異なる待機系210のネットワークドライバにおいても実行可能であってもよい。
図29および図30は、受信処理手順の一例を示すフローチャートである。図29において、運用系220は、アクセス要求を受け付ける(ステップS2901)。
そして、運用系220は、受信側フラグテーブル700のテスト準備中フラグ=ON、または、エラーフラグ=ONであるか否かを判定する(ステップS2902)。ここで、受信側フラグテーブル700のテスト準備中フラグ=ON、または、エラーフラグ=ONである場合(ステップS2902:Yes)、運用系220は、ステップS2903の処理に移行する。
一方で、受信側フラグテーブル700のテスト準備中フラグ=OFF、かつ、エラーフラグ=OFFである場合(ステップS2902:No)、運用系220は、図30のステップS3008の処理に移行する。
ステップS2903では、運用系220は、受信側フラグテーブル700のエラーフラグ=OFFであるか否かを判定する(ステップS2903)。ここで、エラーフラグ=OFFである場合(ステップS2903:Yes)、運用系220は、ステップS2904の処理に移行する。一方で、エラーフラグ=OFFではない場合(ステップS2903:No)、運用系220は、ステップS2906の処理に移行する。
ステップS2904では、運用系220は、アクセスカウンタ(ハートビート断前)をカウントアップする(ステップS2904)。次に、運用系220は、アクセス記憶域(ハートビート断前)に、アクセスカウンタ(ハートビート断前)と、ポートNoと、アクセス内容とを記録する(ステップS2905)。そして、運用系220は、図30のステップS3001の処理に移行する。
ステップS2906では、運用系220は、アクセスカウンタ(ハートビート断後)をカウントアップする(ステップS2906)。次に、運用系220は、アクセス記憶域(ハートビート断後)に、アクセスカウンタ(ハートビート断後)と、ポートNoと、アクセス内容とを記録する(ステップS2907)。そして、運用系220は、図30のステップS3001の処理に移行する。
図30において、運用系220は、モード=特殊テストモードであるか否かを判定する(ステップS3001)。ここで、特殊テストモードである場合(ステップS3001:Yes)、運用系220は、ステップS3002の処理に移行する。一方で、特殊テストモードではない場合(ステップS3001:No)、運用系220は、ステップS3008の処理に移行する。
ステップS3002では、運用系220は、システムディスクから正常復帰フラグを取得する(ステップS3002)。そして、運用系220は、取得した正常復帰フラグ=OFFであるか否かを判定する(ステップS3003)。ここで、正常復帰フラグ=OFFである場合(ステップS3003:Yes)、運用系220は、ステップS3004の処理に移行する。一方で、正常復帰フラグ=OFFではない場合(ステップS3003:No)、運用系220は、ステップS3006の処理に移行する。
ステップS3004では、運用系220は、アクセス要求に応じた通常のアクセス処理を実行する(ステップS3004)。次に、運用系220は、受信側フラグテーブル700の正常復帰フラグ=ONに設定する(ステップS3005)。そして、運用系220は、ステップS3007の処理に移行する。
ステップS3006では、運用系220は、受信側フラグテーブル700の正常復帰フラグ=OFFに設定する(ステップS3006)。そして、運用系220は、ステップS3007の処理に移行する。
ステップS3007では、運用系220は、システムディスクの正常復帰フラグを更新する(ステップS3007)。そして、運用系220は、受信処理を終了する。
ステップS3008では、運用系220は、アクセス要求に応じた通常のアクセス処理を実行する(ステップS3008)。そして、運用系220は、受信処理を終了する。これにより、運用系220は、モード=特殊テストモードであれば、テスターからのテスト開始指示を受けると、システムディスクから正常復帰フラグを取得することができる。
そして、運用系220は、正常復帰フラグ=OFFであれば、クラスタソフトウェアからのアクセス要求に応じて、アクセス内容を記録し、通常処理を行うことができる。一方で、運用系220は、正常復帰フラグ=ONであれば、クラスタソフトウェアからのアクセス要求に応じて、アクセス内容を記録し、無応答になるように制御することができる。
また、運用系220は、エラーフラグ=OFFであれば、アクセスカウンター(ハートビート断前)をカウントアップし、ハートビート断前に対応付けて、アクセスカウンター、ポートNo、アクセス内容などを記憶することができる。一方で、運用系220は、エラーフラグ=ONであれば、アクセスカウンター(ハートビート断後)をカウントアップし、ハートビート断後に対応付けて、アクセスカウンター、ポートNo、アクセス内容などを記憶することができる。また、運用系220は、モード=特殊テストモードでなければ、無応答になるように制御することができる。
(設定処理手順の一例)
次に、図31を用いて、運用系220のネットワークドライバによって実行される、設定処理手順の一例について説明する。設定処理は、テスト装置100、または、テスト装置100とは異なる待機系210のネットワークドライバにおいても実行可能であってもよい。
図31は、設定処理手順の一例を示すフローチャートである。図31において、運用系220は、通知パケットを受け付ける(ステップS3101)。
次に、運用系220は、通知パケットから送信側フラグテーブル600を取得する(ステップS3102)。そして、運用系220は、送信側フラグテーブル600を受信側フラグテーブル700に設定する(ステップS3103)。その後、運用系220は、設定処理を終了する。これにより、運用系220は、受信側フラグテーブル700を、クラスタソフトウェアの最新の状態に対応する内容に更新することができる。
(応答処理手順の一例)
次に、図32を用いて、運用系220のデバイスドライバによって実行される、応答処理手順の一例について説明する。デバイスドライバは、例えば、ネットワークドライバやディスクドライバである。応答処理は、テスト装置100、または、テスト装置100とは異なる待機系210のデバイスドライバにおいても実行可能であってもよい。
図32は、応答処理手順の一例を示すフローチャートである。図32において、運用系220は、アクセス要求を受け付ける(ステップS3201)。
そして、運用系220は、送信側フラグテーブル600のテスト準備中フラグ=ONであるか否かを判定する(ステップS3202)。ここで、テスト準備中フラグ=ONである場合(ステップS3202:Yes)、運用系220は、ステップS3203の処理に移行する。一方で、テスト準備中フラグ=ONではない場合(ステップS3202:No)、運用系220は、ステップS3204の処理に移行する。
ステップS3203では、運用系220は、t時間スリープする(ステップS3203)。そして、運用系220は、ステップS3204の処理に移行する。
ステップS3204では、運用系220は、送信側フラグテーブル600のエラーフラグ=ONであるか否かを判定する(ステップS3204)。ここで、エラーフラグ=ONである場合(ステップS3204:Yes)、運用系220は、ステップS3205の処理に移行する。一方で、エラーフラグ=ONではない場合(ステップS3204:No)、運用系220は、ステップS3206の処理に移行する。
ステップS3205では、運用系220は、自装置のデバイス番号をキーにして、エラーコードテーブル1000からエラーコードを取得し、復帰値にエラーコードを設定する(ステップS3205)。そして、運用系220は、応答処理を終了する。
ステップS3206では、運用系220は、アクセス要求に応じた通常のアクセス処理を実行する(ステップS3206)。そして、運用系220は、応答処理を終了する。これにより、運用系220は、アクセス要求に応じた処理を一定の時間保留することができ、エラーフラグが変更されることを待つことができ、クラスタソフトウェアのテストの精度向上を図ることができる。また、運用系220は、タイムアウト割込みが発生した場合、エラーフラグ=ONであれば、予めテスターによって定義されたエラーコードを用いて、アクセス要求の結果を異常にすることができる。
以上説明したように、テスト装置100によれば、クラスタソフトウェアの実行により待機系210を待機状態から運用状態に切り替える切替処理が開始されたか否かを、判定することができる。テスト装置100によれば、切替処理が開始されたと判定したことに応じて、切替処理の結果をエラーにする処理を実行することができる。これにより、テスト装置100は、切替処理に関するエラーケースを発生させることができる。結果として、テスト装置100は、切替処理に関するエラーケースを発生させた場合について、クラスタソフトウェアをテストすることができ、クラスタソフトウェアのテストの精度向上を図ることができる。
テスト装置100によれば、運用系220に向けて、クラスタソフトウェアの実行により、特定の間隔で出力される応答要求に基づいて、切替処理を開始したか否かを判定することができる。これにより、テスト装置100は、クラスタソフトウェアを改変しなくても、切替処理を開始したか否かを判定することができる。このため、テスト装置100は、クラスタソフトウェアの性能や動作に与える影響を抑制して、クラスタソフトウェアをテストすることができ、クラスタソフトウェアのテストの精度向上を図ることができる。
テスト装置100によれば、応答要求に対して運用系220を無応答にすることができる。テスト装置100によれば、運用系220を無応答にした後、クラスタソフトウェアの実行により応答要求が出力されてから、次の応答要求が出力されずに特定の時間が経過した場合、切替処理が開始されたと判定することができる。これにより、テスト装置100は、クラスタソフトウェアが、応答要求の出力を中止したと判断され、切替処理を開始したと判断されるタイミングを、精度よく特定することができる。
テスト装置100によれば、クラスタソフトウェアの実行により応答要求が出力されてから、次の応答要求を出力するまでの時間を計測し、計測した時間を特定の時間に設定することができる。これにより、テスト装置100は、クラスタソフトウェアの応答要求の間隔を自動で特定して、特定の時間に設定することができ、テスターが特定の時間を特定することができなくても、特定の時間を精度よく設定することができる。結果として、テスト装置100は、クラスタソフトウェアが切替処理を開始したか否かを精度よく判定することができる。
テスト装置100によれば、切替処理が開始されたと判定したことを示す情報を、運用系220に通知することにより、切替処理に関する運用系220の動作の結果を異常にする制御を行うことができる。これにより、テスト装置100は、運用系220のネットワークドライバやディスクドライバなどが原因である、切替処理に関するエラーケースを発生させることができる。
テスト装置100によれば、切替処理が開始されたと判定したことを示す情報を、待機系210に通知することにより、切替処理に関する待機系210の動作の結果を異常にする制御を行うことができる。これにより、テスト装置100は、待機系210のネットワークドライバやディスクドライバなどが原因である、切替処理に関するエラーケースを発生させることができる。
テスト装置100によれば、クラスタソフトウェアから待機系210または運用系220に対するアクセス要求を受け付けた場合、一定の時間が経過してから、受け付けたアクセス要求に応じた動作を行うことができる。これにより、テスト装置100は、切替処理が開始されたと判定してから、切替処理に関する待機系210または運用系220の動作の結果を異常にする制御を行うまでに、一定の時間がかかっても、クラスタソフトウェアを精度よくテストすることができる。
テスト装置100によれば、運用系220を無応答にした後に、待機系210または運用系220に対するアクセス要求を受け付けた場合、一定の時間が経過してから、受け付けたアクセス要求に応じた動作を行うことができる。これにより、テスト装置100は、運用系220を無応答にする前のアクセス要求に応じた動作を開始するタイミングが遅れてしまうことを防止することができる。
テスト装置100によれば、運用系220を無応答にした後、クラスタソフトウェアから運用系220に対するアクセス要求を複数受け付けた場合、複数のアクセス要求のうち、第1のアクセス要求の結果を異常にする制御を行い、第2のアクセス要求の結果を正常にする制御を行うことができる。これにより、テスト装置100は、クラスタソフトウェアから運用系220に対するアクセスの結果が正常である場合と異常である場合との両方について、クラスタソフトウェアをテストすることができ、クラスタソフトウェアのテストの精度向上を図ることができる。
テスト装置100によれば、アクセス要求の結果について制御を行う処理は、運用系220を無応答にしたことを示す情報を、運用系220に通知することにより、アクセス要求に関する運用系220の動作の結果を異常にする制御を行うことができる。これにより、テスト装置100は、運用系220のネットワークドライバやディスクドライバなどが原因である、アクセス要求に関するエラーケースを発生させることができる。
テスト装置100によれば、クラスタソフトウェアから運用系220に対するアクセス要求を受け付けた場合、受け付けたアクセス要求に関する情報と、受け付けた時点が切替処理が開始されたと判定した前後のいずれかに関する情報とを対応付けた対応情報を記憶する制御を行うことができる。これにより、テスト装置100は、アクセス要求が、切替処理が開始した時点の前後のいずれに出力されたアクセス要求かを特定可能なように、アクセス要求に関する情報を記憶しておき、クラスタソフトウェアのテストに利用可能にすることができる。
テスト装置100によれば、運用系220を無応答にしたことを示す情報を、運用系220に通知し、切替処理が開始されたと判定したことを示す情報を、運用系220に通知することにより、運用系220に対応情報を記憶させる制御を行うことができる。これにより、テスト装置100は、運用系220において、アクセス要求を受け付けた時点が、切替処理が開始した時点の前後のいずれの時点であるかを特定可能にし、対応情報を生成可能にすることができる。
なお、本実施の形態で説明したテスト方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本実施の形態で説明したテストプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本実施の形態で説明したテストプログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
テスト対象のソフトウェアの実行により情報処理装置を待機状態から運用状態に切り替える切替処理が開始されたか否かを、前記情報処理装置が運用状態に切り替わる前に運用状態である他の情報処理装置に向けて前記ソフトウェアが特定の間隔で出力する応答要求に基づいて判定し、
前記切替処理が開始されたと判定したことに応じて、前記切替処理の結果をエラーにする処理を実行する、
処理を実行させることを特徴とするテストプログラム。
(付記2)前記コンピュータに、
前記応答要求に対して前記他の情報処理装置を無応答にする、処理を実行させ、
前記判定する処理は、前記他の情報処理装置を無応答にした後、前記ソフトウェアの実行により応答要求が出力されてから、次の応答要求が出力されずに特定の時間が経過した場合、前記切替処理が開始されたと判定する、ことを特徴とする付記1に記載のテストプログラム。
(付記3)前記コンピュータに、
前記ソフトウェアの実行により応答要求が出力されてから、次の応答要求を出力するまでの時間を計測し、計測した前記時間を前記特定の時間に設定する、
処理を実行させることを特徴とする付記2に記載のテストプログラム。
(付記4)前記実行する処理は、前記切替処理が開始されたと判定したことを示す情報を、前記他の情報処理装置に通知することにより、前記切替処理に関する前記他の情報処理装置の動作の結果を異常にする制御を行う、ことを特徴とする付記1〜3のいずれか一つに記載のテストプログラム。
(付記5)前記実行する処理は、前記切替処理が開始されたと判定したことを示す情報を、前記情報処理装置に通知することにより、前記切替処理に関する前記情報処理装置の動作の結果を異常にする制御を行う、ことを特徴とする付記1〜4のいずれか一つに記載のテストプログラム。
(付記6)前記コンピュータに、
前記ソフトウェアから前記情報処理装置または前記他の情報処理装置に対するアクセス要求を受け付けた場合、一定の時間が経過してから、受け付けた前記アクセス要求に応じた動作を行う、処理を実行させることを特徴とする付記2または3に記載のテストプログラム。
(付記7)前記動作を行う処理は、前記他の情報処理装置を無応答にした後に、前記情報処理装置または前記他の情報処理装置に対するアクセス要求を受け付けた場合、一定の時間が経過してから、受け付けた前記アクセス要求に応じた動作を行う、ことを特徴とする付記6に記載のテストプログラム。
(付記8)前記コンピュータに、
前記他の情報処理装置を無応答にした後、前記ソフトウェアから前記他の情報処理装置に対するアクセス要求を複数受け付けた場合、複数のアクセス要求のうち、第1のアクセス要求の結果を異常にする制御を行い、第2のアクセス要求の結果を正常にする制御を行う、処理を実行させることを特徴とする付記1〜7のいずれか一つに記載のテストプログラム。
(付記9)前記アクセス要求の結果について制御を行う処理は、前記他の情報処理装置を無応答にしたことを示す情報を、前記他の情報処理装置に通知することにより、前記アクセス要求に関する前記他の情報処理装置の動作の結果を異常にする制御を行う、ことを特徴とする付記8に記載のテストプログラム。
(付記10)前記コンピュータに、
前記ソフトウェアから前記他の情報処理装置に対するアクセス要求を受け付けた場合、受け付けた前記アクセス要求に関する情報と、受け付けた時点が前記切替処理が開始されたと判定した前後のいずれかに関する情報とを対応付けた対応情報を記憶する制御を行う、処理を実行させることを特徴とする付記1〜9のいずれか一つに記載のテストプログラム。
(付記11)前記記憶する制御は、前記他の情報処理装置を無応答にしたことを示す情報を、前記他の情報処理装置に通知し、前記切替処理が開始されたと判定したことを示す情報を、前記他の情報処理装置に通知することにより、前記他の情報処理装置に前記対応情報を記憶させる制御を行う、ことを特徴とする付記10に記載のテストプログラム。
(付記12)コンピュータが、
テスト対象のソフトウェアの実行により情報処理装置を待機状態から運用状態に切り替える切替処理が開始されたか否かを、前記情報処理装置が運用状態に切り替わる前に運用状態である他の情報処理装置に向けて前記ソフトウェアが特定の間隔で出力する応答要求に基づいて判定し、
前記切替処理が開始されたと判定したことに応じて、前記切替処理の結果をエラーにする処理を実行する、
処理を実行することを特徴とするテスト方法。
(付記13)テスト対象のソフトウェアの実行により情報処理装置を待機状態から運用状態に切り替える切替処理が開始されたか否かを、前記情報処理装置が運用状態に切り替わる前に運用状態である他の情報処理装置に向けて前記ソフトウェアが特定の間隔で出力する応答要求に基づいて判定し、
前記切替処理が開始されたと判定したことに応じて、前記切替処理の結果をエラーにする処理を実行する、
制御部を有することを特徴とするテスト装置。