JP6908827B2 - 試験装置、試験方法、試験プログラム及び試験システム - Google Patents

試験装置、試験方法、試験プログラム及び試験システム Download PDF

Info

Publication number
JP6908827B2
JP6908827B2 JP2017062954A JP2017062954A JP6908827B2 JP 6908827 B2 JP6908827 B2 JP 6908827B2 JP 2017062954 A JP2017062954 A JP 2017062954A JP 2017062954 A JP2017062954 A JP 2017062954A JP 6908827 B2 JP6908827 B2 JP 6908827B2
Authority
JP
Japan
Prior art keywords
instruction
processing
executed
information
test
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017062954A
Other languages
English (en)
Other versions
JP2018165902A (ja
Inventor
裕介 佐々木
裕介 佐々木
優 上野
優 上野
敦二 関口
敦二 関口
功作 木村
功作 木村
シュリダル チョーダリー
シュリダル チョーダリー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017062954A priority Critical patent/JP6908827B2/ja
Priority to US15/935,096 priority patent/US10713147B2/en
Publication of JP2018165902A publication Critical patent/JP2018165902A/ja
Application granted granted Critical
Publication of JP6908827B2 publication Critical patent/JP6908827B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support

Landscapes

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

Description

本発明は、試験装置、試験方法、試験プログラム及び試験システムに関する。
例えば、利用者にサービスを提供する事業者(以下、単に事業者とも呼ぶ)は、サービスの提供を行うための業務システム(以下、情報処理システムとも呼ぶ)を構築して稼働させる。そして、事業者は、例えば、業務システムを構成するプログラムを生成した場合、生成したプログラムの動作について各種テストを行う。
具体的に、事業者は、業務システムが複数の1または複数のコンピュータにより提供される複数の計算機資源(例えば、物理マシン上に生成された複数の仮想マシン)によって構成されている場合、例えば、複数の計算機資源が互いに連動して行う処理についての試験を行う。これにより、事業者は、利用者に対するサービスの提供の開始後において、サービスの提供に影響を与える障害の発生を抑制することが可能になる(例えば、特許文献1から3参照)。
特開2004−086910号公報 特開2005−352591号公報 特開2008−217473号公報
例えば、障害等の発生によって中断(シャットダウン)した計算機資源が発生した場合、上記のような業務システムでは、中断した計算機資源が実行していた処理を他の計算機資源に引き継ぐ。そのため、事業者は、上記のような業務システムについての試験を行う場合、中断した計算機資源が発生した場合の試験についても行う必要がある。
しかしながら、例えば、業務システムを構成する計算機資源の数が膨大である場合、事業者は、各計算機資源の処理が中断した場合における試験を網羅的に行うことができない。
そのため、事業者は、例えば、業務システムを構成する計算機資源から、中断させる計算機資源を無作為に決定し、決定した計算機資源の処理が中断した場合における試験を行う。これにより、事業者は、試験を行うことができる範囲内において異常の検知を行うことが可能になる。
しかしながら、この場合、事業者は、試験が行われた際の条件(例えば、計算機資源を中断させたタイミング等)を事後的に特定することができない。そのため、事業者は、試験を行うことによって異常の存在を検知した場合であっても、同じ状態を再現することができず、検知した異常に関する調査を十分に行うことができない場合がある。
そこで、一つの側面では、過去に試験を行った際の状態を再現することを可能とする試験装置、試験方法、試験プログラム及び試験システムを提供することを目的とする。
実施の形態の一つの態様によれば、1または複数のコンピュータにより提供される複数の計算機資源が連動して行う特定の処理の試験を行う試験装置は、前記複数の計算機資源のそれぞれが実行する前記特定の処理の各ソースコードにおける所定の位置に、前記試験装置に指示を要求する指示要求命令を追加して追加済ソースコードを生成する命令追加部と、前記特定の処理の実行中に、前記複数の計算機資源のいずれかにおいて前記指示要求命令が実行されたことに応じて、各計算機資源が実行する前記追加済ソースコードに追加された前記指示要求命令のそれぞれと各計算機資源が行う処理とを対応付けた指示情報が記憶された記憶部を参照し、前記指示要求命令を実行した計算機資源に対し、実行された前記指示要求命令に対応する処理の実行を指示する処理指示部と、を有する。
一つの側面によれば、過去に試験を行った際の状態を再現することを可能とする。
図1は、情報処理システム10の全体構成を示す図である。 図2は、各仮想マシン3の動作の具体例について説明する図である。 図3は、各仮想マシン3の動作の具体例について説明する図である。 図4は、試験装置1のハードウエア構成を説明する図である。 図5は、情報処理装置2のハードウエア構成を説明する図である。 図6は、試験装置1の機能ブロック図である。 図7は、情報処理装置2の機能ブロック図である。 図8は、第1の実施の形態における試験処理の概略を説明するフローチャートである。 図9は、第1の実施の形態における試験処理の概略を説明する図である。 図10は、第1の実施の形態における試験処理の概略を説明する図である。 図11は、第1の実施の形態における試験処理の詳細を説明するフローチャートである。 図12は、第1の実施の形態における試験処理の詳細を説明するフローチャートである。 図13は、第1の実施の形態における試験処理の詳細を説明するフローチャートである。 図14は、第1の実施の形態における試験処理の詳細を説明するフローチャートである。 図15は、第1の実施の形態における試験処理の詳細を説明するフローチャートである。 図16は、第1の実施の形態における試験処理の詳細を説明するフローチャートである。 図17は、ソースコード231の具体例を説明する図である。 図18は、追加済ソースコード232の具体例を説明する図である。 図19は、ログ情報131の具体例を説明する図である。 図20は、S33の処理の詳細を説明する図である。 図21は、指示情報132の具体例を説明する図ある。 図22は、S53の処理の具体例を説明する図である。 図23は、S53の処理の具体例を説明する図である。 図24は、S53の処理の具体例を説明する図である。 図25は、S53の処理の具体例を説明する図である。 図26は、S53の処理の具体例を説明する図である。 図27は、S53の処理の具体例を説明する図である。 図28は、S53の処理の具体例を説明する図である。
[情報処理システムの構成]
図1は、情報処理システム10の全体構成を示す図である。図1に示す情報処理システム10は、試験装置1と、情報処理装置2とを有する。
情報処理装置2は、例えば、複数の物理マシンから構成される。各物理マシンは、CPU(Central Computing Unit)と、メモリ(DRAM:Dynamic Random Access Memory)と、ハードディスク(HDD:Hard Disk Drive)等とを有する。そして、各物理マシンの物理リソースは、利用者に対してサービスの提供を行う各仮想マシン3に割当てられる。
試験装置1は、例えば、1台以上の物理マシンによって構成される。そして、試験装置1は、情報処理装置2上に生成された仮想マシン3の動作についての試験を行う。なお、試験装置1は、仮想マシン3によって構成されるものであってもよい。
仮想化ソフトウエア4は、仮想マシン3の管理を行う管理装置(図示しない)からの指示に応じて、情報処理装置2のCPU、メモリ及びハードディスク等を割当てることにより、仮想マシン3を動作させる基盤ソフトウエアである。仮想化ソフトウエア4は、例えば、情報処理装置2上で動作する。
[各仮想マシン3の動作の具体例]
次に、各仮想マシン3の動作の具体例について説明を行う。図2及び図3は、各仮想マシン3の動作の具体例について説明する図である。
図2及び図3に示す例において、仮想マシン群MG1に含まれる仮想マシン31と、仮想マシン群MG2に含まれる仮想マシン32と、仮想マシン群MG3に含まれる仮想マシン33、34及び35と、仮想マシン群MG4に含まれる仮想マシン36とは、互いに連動して試験対象処理(以下、特定の処理とも呼ぶ)を行う。以下、仮想マシン31、32、33、34、35及び36を総称して仮想マシン3とも呼ぶ。
また、図2及び図3に示す例において、同じ仮想マシン群に含まれる仮想マシン3は、それぞれ同一の処理を行う仮想マシンである。そのため、各仮想マシン3は、例えば、同じ仮想マシン群に含まれる他の仮想マシンが障害等の発生に伴って中断した場合、中断した仮想マシンが行っていた処理を引き継いで実行することが可能である。具体的に、各仮想マシン3の管理装置(図示しない)は、例えば、中断した仮想マシン3が発生したことを検知した場合、中断した仮想マシン3と同じ仮想マシン群に含まれる他の仮想マシンに、中断した仮想マシン3が行っていた処理を実行させる。
さらに、図2及び図3に示す例における試験装置1は、仮想マシン3に対して無作為に中断(シャットダウン)を指示する。
具体的に、仮想マシン31は、図2に示すように、例えば、試験装置1から指示を受けたクライアント端末(図示しない)からデータを受信した場合、受信したデータに基づく処理を開始する(図2の(1))。そして、仮想マシン32は、例えば、処理を開始した仮想マシン31からデータを受信した場合、受信したデータに基づく処理を開始する(図2の(2))。同様に、仮想マシン33は、例えば、処理を開始した仮想マシン32からデータを受信した場合、受信したデータに基づく処理を開始する。
その後、試験装置1は、例えば、仮想マシン33が処理を実行している間に、仮想マシン33に対して中断指示を送信する(図2の(3))。そして、仮想マシン33は、試験装置1から送信された中断指示の受信に応じて、仮想マシン33自体を中断する(図2の(4))。
続いて、仮想マシン34は、仮想マシン33が実行していた処理を引き継いで実行を開始し、例えば、データベースDB1に対してデータの書き込み指示の送信を行う(図2の(5)及び(6))。そして、データベースDB1は、仮想マシン34から受信した書き込み指示の内容に応じたデータの書き込みを行う(図2の(7))。
さらに、試験装置1は、図3に示すように、例えば、仮想マシン34が処理を実行している間に、仮想マシン34に対して中断指示を送信する(図3の(8))。そして、仮想マシン34は、試験装置1から送信された中断指示の受信に応じて、仮想マシン34自体を中断する(図3の(9))。
続いて、仮想マシン35は、仮想マシン34が実行していた処理を引き継いで実行を開始し、例えば、データベースDB1に対してデータの書き込み指示の送信を行う(図3の(10)及び(11))。そして、データベースDB1は、仮想マシン35から受信した書き込み指示の内容に応じたデータの書き込みを行う(図3の(12))。
その後、仮想マシン31は、例えば、クライアント端末から受信したデータに基づく処理の実行に伴って、仮想マシン36に対して処理要求を送信する(図3の(13))。そして、仮想マシン36は、仮想マシン31から送信された処理要求を受信したことに応じて、受信した処理要求の内容に従い、データベースDB1に記憶されたデータに対する読み込みを行う(図3の(14))。
ここで、図2及び図3に示す例において、仮想マシン34及び仮想マシン35は、データベースDB1に対する書き込みをそれぞれ行っている。そのため、例えば、仮想マシン34及び仮想マシン35によってそれぞれ行われた書き込みが、仮想マシン34における中断の発生に伴って重複して行われた処理であった場合、データベースDB1では、データの不整合等の異常が発生する。したがって、データベースDB1に記憶されたデータの読み込みを行った仮想マシン36は、例えば、データベースDB1において異常が発生していることを検知し、試験対象処理の実行に伴って異常が発生している旨の通知を試験装置1に送信する(図3の(15))。
このように、試験装置1は、例えば、試験対象処理を実行している仮想マシン3を中断することによって、仮想マシン3に内在する異常を検知することが可能になる。これにより、事業者は、利用者に対するサービスの提供の開始後において、サービスの提供に影響を与える障害の発生を抑制することが可能になる。
しかしながら、上記のように、中断させる仮想マシン3を無作為に決定する試験を行う場合、事業者は、試験が行われた際の条件(例えば、仮想マシン3を中断させたタイミング等)を事後的に特定することができない。そのため、事業者は、試験を行うことによって異常の存在を検知した場合であっても、同じ状態を再現することができず、検知した異常に関する調査を十分に行うことができない場合がある。
そこで、試験装置1は、複数の仮想マシン3のそれぞれが実行する試験対象処理の各ソースコードにおける所定の位置に、試験装置1に指示を要求する指示要求命令を追加して追加済ソースコードを生成する。
また、試験装置1は、試験対象処理の実行中に、仮想マシン3のいずれかにおいて指示要求命令が実行されたことに応じて、各仮想マシン3が実行する追加済ソースコードに追加された指示要求命令のそれぞれと各仮想マシン3が行う処理とを対応付けた指示情報が記憶された記憶部を参照する。そして、試験装置1は、指示要求命令を実行した仮想マシン3に対し、実行された指示要求命令に対応する処理の実行を指示する。
すなわち、本実施の形態における試験装置1は、例えば、予め用意された指示情報に含まれる仮想マシン3の情報及び仮想マシン3を中断するタイミングを示す情報に従って、仮想マシン3の中断を行いながら試験を行う。
これにより、試験装置1は、試験を行うことによって異常を検知した場合、指示情報を参照して再度試験を行うことで、検知した異常の再現を行うことが可能になる。そのため、試験装置1は、試験によって検知した異常に関する調査を十分に行うことが可能になる。
[情報処理システムのハードウエア構成]
次に、情報処理システム10のハードウエア構成について説明する。図4は、試験装置1のハードウエア構成を説明する図である。また、図5は、情報処理装置2のハードウエア構成を説明する図である。
試験装置1は、図4に示すように、プロセッサであるCPU101と、メモリ102と、外部インターフェース(I/Oユニット)103と、記憶媒体(ストレージ)104とを有する。各部は、バス105を介して互いに接続される。
記憶媒体104は、記憶媒体104内のプログラム格納領域(図示しない)に、各仮想マシン3が実行する試験対象処理の試験を行う処理(以下、試験処理とも呼ぶ)を行うためのプログラム110を記憶する。
CPU101は、図4に示すように、プログラム110の実行時に、プログラム110を記憶媒体104からメモリ102にロードし、プログラム110と協働して試験処理を行う。
記憶媒体104は、例えば、試験処理を行う際に用いられる情報を記憶する情報格納領域130(以下、記憶部130とも呼ぶ)を有する。また、外部インターフェース103は、情報処理装置2と通信を行う。
また、情報処理装置2は、図5に示すように、プロセッサであるCPU201と、メモリ202と、外部インターフェース(I/Oユニット)203と、記憶媒体(ストレージ)204とを有する。各部は、バス205を介して互いに接続される。
記憶媒体204は、記憶媒体204内のプログラム格納領域(図示しない)に、試験処理を行うためのプログラム210を記憶する。
CPU201は、図5に示すように、プログラム210の実行時に、プログラム210を記憶媒体204からメモリ202にロードし、プログラム210と協働して試験処理を行う。
記憶媒体204は、例えば、試験処理を行う際に用いられる情報を記憶する情報格納領域230(以下、記憶部230とも呼ぶ)を有する。また、外部インターフェース203は、試験装置1と通信を行う。
[情報処理システムのソフトウエア構成]
次に、情報処理システム10のソフトウエア構成について説明する。図6は、試験装置1の機能ブロック図である。また、図7は、情報処理装置2の機能ブロック図である。
CPU101は、図6に示すように、プログラム110と協働することにより、命令追加部111と、情報受信部112と、情報送信部113(以下、処理指示部113とも呼ぶ)と、ログ出力部114と、異常検知部115と、情報生成部116として動作する。また、情報格納領域130には、図6に示すように、ログ情報131と、指示情報132とが記憶される。
そして、CPU201は、図7に示すように、プログラム210と協働することにより、各仮想マシン3の機能として、情報送信部211と、情報受信部212と、処理実行部213として動作する。また、情報格納領域230には、図7に示すように、ソースコード231と、追加済ソースコード232とが記憶される。
初めに、試験装置1の機能について説明を行う。試験装置1の機能である命令追加部111は、各仮想マシン3のそれぞれが実行する試験対象処理の各ソースコード231における所定の位置に、試験装置1に指示を要求する指示要求命令を追加して追加済ソースコード232を生成する。所定の位置は、例えば、各ソースコード231において、データの書き込みや読み込みを行う命令の位置の前後であってよい。具体的に、命令追加部111は、例えば、情報処理装置2の情報格納領域230に記憶されたソースコード231を取得し、追加済ソースコード232の生成を行う。そして、命令追加部111は、例えば、生成した追加済ソースコード232を情報格納領域230に記憶する。
試験装置1の機能である情報受信部112は、各仮想マシン3による試験対象処理の実行に伴って、指示要求命令が実行されたことを示す通知を各仮想マシン3から受信する。
試験装置1の機能である情報送信部113は、仮想マシン3のいずれかにおいて指示要求命令が実行されたことに応じて、例えば、指示要求命令を実行した仮想マシン3に対し、無作為に決定した処理の実行を指示する。具体的に、情報送信部113は、情報受信部112が仮想マシン3のいずれかから指示要求命令が実行されたことを示す通知を受信したことに応じて、仮想マシン3の中断または仮想マシン3が実行していた処理の再開を無作為に決定し、決定した処理を実行する旨の指示を送信する。
試験装置1の機能であるログ出力部114は、仮想マシン3のいずれかにおいて指示要求命令を実行したことに応じて、指示要求命令を実行した仮想マシン3の状態を示すログ情報131を出力する。そして、ログ出力部114は、例えば、出力したログ情報131を情報格納領域130に蓄積する。ログ情報131の具体例については後述する。
試験装置1の機能である異常検知部115は、情報送信部113が無作為に決定した処理の実行に伴って各仮想マシン3において発生した所定の異常を検知する。
試験装置1の機能である情報生成部116は、異常検知部115が所定の異常の発生を検知した場合、ログ情報131に基づいて指示情報132を生成する。指示情報132は、例えば、各仮想マシン3が実行する追加済ソースコード232に追加された指示要求命令のそれぞれと、各指示要求命令の実行に伴って各仮想マシン3が行った処理とを対応付けた情報である。指示情報132の具体例については後述する。
その後、情報送信部113は、所定の異常を再現するために各仮想マシン3において試験対象処理が再度行われた場合、各仮想マシン3のいずれかにおいて指示要求命令が実行されたことに応じて、情報格納領域130に記憶された指示情報132を参照する。そして、情報送信部113は、指示要求命令を実行した仮想マシン3に対し、実行された指示要求命令に対応する処理の実行を指示する。具体的に、情報送信部113は、情報受信部112が仮想マシン3のいずれかから指示要求命令が実行されたことを示す通知を受信したことに応じて、実行された指示要求命令に対応する処理を実行する旨の指示を送信する。
次に、仮想マシン3の機能について説明を行う。仮想マシン3の機能である情報受信部212は、例えば、他の仮想マシン3から送信されたデータを受信する。
仮想マシン3の機能である処理実行部213は、例えば、情報受信部212が他の仮想マシン3から送信されたデータを受信した場合、受信したデータを用いて試験対象処理を実行する。
仮想マシン3の機能である情報送信部211は、処理実行部213が試験対象処理の実行に伴って指示要求命令を実行したことに応じて、次に実行する処理の指示要求を試験装置1に対して送信する。
また、情報受信部212は、情報送信部211が送信した処理の指示要求に対して試験装置1が送信した処理の指示を受信する。そして、処理実行部213は、この場合、情報受信部212が受信した処理の指示に対応する処理を実行する。具体的に、処理実行部213は、情報受信部212が受信した指示の内容に従って、仮想マシン3の中断または仮想マシン3が実行していた処理の再開を行う。さらに、情報送信部211は、例えば、他の仮想マシン3に対して、処理実行部213における処理の実行によって生成されたデータの送信を行う。
[第1の実施の形態の概略]
次に、第1の実施の形態の概略について説明する。図8は、第1の実施の形態における試験処理の概略を説明するフローチャートである。図9及び図10は、第1の実施の形態における試験処理の概略を説明する図である。図9及び図10を参照しながら、図8に示す試験処理を説明する。
試験装置1は、図8に示すように、試験開始タイミングになるまで待機する(S1のNO)。試験開始タイミングは、例えば、事業者が試験装置1に対して試験対象処理の試験を開始する旨の入力を行ったタイミングであってよい。
そして、試験開始タイミングなった場合(S1のYES)、試験装置1は、各仮想マシン3のそれぞれが実行する試験対象処理の各ソースコード231における所定の位置に、試験装置1に指示を要求する指示要求命令を追加して追加済ソースコード232を生成する(S2)。所定の位置は、例えば、各ソースコード231において、データの書き込みや読み込みを行う命令の位置の前後であってよい。
その後、試験装置1は、仮想マシン3のいずれかにおいて指示要求命令が実行されるまで待機する(S3のNO)。すなわち、試験装置1は、仮想マシン3において試験対象処理の実行が開始され、仮想マシン3のいずれかにおいて指示要求命令が実行されるまで待機する。
そして、指示要求命令が実行された場合(S3のYES)、試験装置1は、各仮想マシン3が実行する追加済ソースコード232に追加された指示要求命令のそれぞれと、各仮想マシン3が行う処理とを対応付けた指示情報132が記憶された記憶部を参照し、S3の処理において指示要求命令を実行した仮想マシン3に対し、S3の処理において実行された指示要求命令に対応する処理の実行を指示する(S4)。
具体的に、試験装置1は、図9に示すように、例えば、仮想マシン33において指示要求命令が実行された場合、仮想マシン33が送信した通知(指示要求命令が実行された旨の通知)を受信する。そして、試験装置1は、この場合、図10に示すように、情報格納領域130に記憶された指示情報132を参照し、S3の処理において実行された指示要求命令に対応する処理を特定する。その後、試験装置1は、特定した処理の実行を、仮想マシン33に指示する。
すなわち、本実施の形態における試験装置1は、例えば、予め用意された指示情報132に含まれる仮想マシン3の情報及び仮想マシン3を中断するタイミングを示す情報に従って、仮想マシン3の中断を行いながら試験を行う。
これにより、試験装置1は、試験を行うことによって異常の存在を検知した場合、指示情報132を参照して再度試験を行うことで、検知した異常の再現を行うことが可能になる。そのため、試験装置1は、試験によって検知した異常に関する調査を十分に行うことが可能になる。
なお、以下、1以上の仮想マシン群に含まれる複数の仮想マシン3が試験対象処理を行う場合について説明を行うが、1以上の物理マシン群(1以上のサーバ群)に含まれる複数の物理マシン(複数のサーバ)が試験対象処理を行うものであってもよい。また、1以上の物理マシンまたは仮想マシン上に生成された複数のコンテナにおいて試験対象処理が行われるものであってもよい。
[第1の実施の形態の詳細]
次に、第1の実施の形態の詳細について説明する。図11から図16は、第1の実施の形態における試験処理の詳細を説明するフローチャートである。また、図17から図28は、第1の実施の形態における試験処理の詳細を説明する図である。図17から図28を参照しながら、図11から図16に示す試験処理を説明する。なお、以下、図2等で説明した各仮想マシン3において試験対象処理が行われるものとして説明を行う。
[試験装置が行う命令追加処理]
初めに、試験装置1が行う試験処理のうち、追加済ソースコード232を生成する処理(以下、命令追加処理とも呼ぶ)について説明を行う。図11は、試験装置1が行う命令追加処理を説明する図である。
命令追加部111は、命令追加タイミングになるまで待機する(S11のNO)。命令追加タイミングは、例えば、事業者が試験装置1に対して追加済ソースコード232の生成を開始する旨の入力を行ったタイミングであってよい。
そして、命令追加タイミングになった場合(S11のYES)、命令追加部111は、仮想マシン3のそれぞれが実行する試験対象処理の各ソースコード231における所定の位置に、試験装置1に指示を要求する指示要求命令を追加して追加済ソースコード232を生成する(S12)。以下、ソースコード231及び追加済ソースコード232の具体例について説明を行う。
[ソースコードの具体例]
初めに、ソースコード231の具体例について説明を行う。図17は、ソースコード231の具体例を説明する図である。図17(A)は、仮想マシン群MG3に含まれる各仮想マシン3(仮想マシン33、仮想マシン34及び仮想マシン35)において実行されるソースコード231aの具体例であり、図17(B)は、仮想マシン群MG4に含まれる各仮想マシン3(仮想マシン36)において実行されるソースコード231bの具体例である。
具体的に、図17(A)に示すソースコード231aには、「Logic_A」、「Logic_B」、「Logic_C,write new data」及び「Logic_D」がそれぞれ記述されている。
そして、図17(B)に示すソースコード231bには、「Logic_E,read new data」がそれぞれ記述されている。
[追加済ソースコードの具体例]
次に、追加済ソースコード232の具体例について説明を行う。図18は、追加済ソースコード232の具体例を説明する図である。図18(A)は、仮想マシン群MG3に含まれる各仮想マシン3(仮想マシン33、仮想マシン34及び仮想マシン35)において実行される追加済ソースコード232aの具体例であり、図18(B)は、仮想マシン群MG4に含まれる各仮想マシン3(仮想マシン36)において実行される追加済ソースコード232bの具体例である。
図18(A)に示す追加済ソースコード232aには、図17(A)で説明したソースコード231aと比較して、各命令の前後に指示要求命令が追加されている。
具体的に、図18(A)に示す追加済ソースコード232aには、例えば、「Logic_A」の前に「If(listen_31){Exit(1);}」が記述されている。また、図17(A)に示す追加済ソースコード232aには、例えば、「Logic_A」と「Logic_B」との間に「If(listen_32){Exit(2);}」が記述されている。図18(A)に含まれる他の命令については説明を省略する。
そして、図18(B)に示す追加済ソースコード232aには、「Logic_E,read new data」の前に「If(listen_41){Exit(1);}」が記述されている。また、図18(B)に示す追加済ソースコード232aには、「Logic_E,read new data」の後に「If(listen_42){Exit(2);}」が記述されている。
[各仮想マシンが行う試験処理]
次に、各仮想マシン3が行う試験処理について説明を行う。図12は、各仮想マシン3が行う試験処理を説明する図である。
処理実行部213は、試験対象処理の実行タイミングまで待機する(S101のNO)。具体的に、試験対象処理の実行タイミングは、例えば、試験対象処理のうちの前段の処理を行う仮想マシン3からデータを受信したタイミングである。そして、試験対象処理の実行タイミングになった場合(S101のYES)、処理実行部213は、S12の処理で生成された追加済ソースコード232の実行を開始する(S102)。
続いて、情報送信部211は、追加済ソースコード232に含まれる命令のうち、指示要求命令を実行するまで待機する(S103のNO)。そして、指示要求命令を実行した場合(S103のYES)、情報送信部211は、次の処理の指示要求を試験装置1に対して送信する(S104)。
その後、情報受信部212は、試験装置1から次の処理の指示を受信するまで待機する(S105のNO)。そして、次の処理の指示を受信した場合(S105のYES)、処理実行部213は、S105の処理において受信した指示に対応する処理を実行する(S106)。
すなわち、本実施の形態における試験装置1は、各仮想マシン3が指示要求命令を実行する毎に、各仮想マシンが次に実行する処理の決定を行う。これにより、試験装置1は、試験対象処理の実行中における各仮想マシン3の状態を制御することが可能になる。
さらに、処理実行部213は、追加済ソースコード232に含まれる全ての指示要求命令が実行されたか否かを判定する(S107)。その結果、全ての指示要求命令が実行されていないと判定した場合(S107のNO)、仮想マシン3は、S103以降の処理を再度行う。一方、全ての指示要求命令が実行されたと判定した場合(S107のYES)、処理実行部213は、S12の処理で生成された追加済ソースコード232に含まれる命令のうち、実行されていない命令を実行する(S108)。
[試験装置が行う異常検知処理]
次に、試験装置1が行う試験処理のうち、各仮想マシン3における試験対象処理の実行中に発生した異常を検知する処理(以下、異常検知処理とも呼ぶ)について説明を行う。図13及び図14は、試験装置1が行う異常検知処理を説明する図である。異常検知処理は、各仮想マシン3が試験対象処理を実行している間に行われる処理である。
情報受信部112は、異常検知タイミングまで待機する(S21のNO)。異常検知タイミングは、例えば、各仮想マシン3において試験対象処理の実行が開始されたタイミングであってよい。
そして、異常検知タイミングになった場合(S21のYES)、情報受信部112は、仮想マシン3のいずれかから次の処理の指示要求を受信するまで待機する(S22のNO)。その後、次の処理の指示要求を受信した場合(S22のYES)、情報送信部113は、S22の処理で受信した指示要求を送信した仮想マシン3に対し、無作為に決定した処理を実行する旨の指示を送信する(S23)。具体的に、情報送信部113は、この場合、仮想マシン3の中断を行う旨の指示または仮想マシン3が実行していた処理の再開を行う旨の指示を送信する。
さらに、ログ出力部114は、S22の処理で受信した指示要求を送信した仮想マシン3の状態を示すログ情報131を出力し、情報格納領域130に記憶する(S24)。以下、ログ情報131の具体例について説明を行う。
[ログ情報の具体例]
図19は、ログ情報131の具体例を説明する図である。図19に示すログ情報131は、ログ情報131に含まれる各情報を識別する「項番」と、S24の処理が行われた日時を示す「日時」と、S24の処理を行った仮想マシン3が含まれる仮想マシン群を識別する「仮想マシン群」とを項目として有する。また、図19に示すログ情報131は、S24の処理を行った仮想マシン3を識別する「仮想マシン」と、実行された指示要求命令を識別する「通知箇所」と、S24の処理を行った仮想マシン3が行った処理を示す「処理状態」とを項目として有する。
なお、「処理状態」には、S23の処理において仮想マシン3を中断させる旨の指示を仮想マシン3に送信したことを示す「中断」と、S23の処理において処理を再開させる旨の指示を仮想マシン3に送信したことを示す「再開」とのうちのいずれかが設定される。
また、図19に示すログ情報131において、「仮想マシン」に「VM33」、「VM34」及び「VM35」が設定された情報における「通知箇所」に設定された「1」から「5」は、図18(A)で説明した追加済ソースコード232aにおける「If(listen_31){Exit(1);}」、「If(listen_32){Exit(2);}」、「If(listen_33){Exit(3);}」、「If(listen_34){Exit(4);}」及び「If(listen_35){Exit(5);}」にそれぞれ対応する。そして、図19に示すログ情報131において、「仮想マシン」に「VM36」が設定された情報における「通知箇所」に設定された「1」及び「2」は、図18(B)で説明した追加済ソースコード232bにおける「If(listen_41){Exit(1);}」及び「If(listen_42){Exit(2);}」にそれぞれ対応する。
具体的に、図19に示すログ情報131において、「項番」が「1」である情報には、「日時」として「2017/2/7 13:45:01」が設定され、「仮想マシン群」として「MG3」が設定され、「仮想マシン」として「VM33」が設定されている。また、図19に示すログ情報131において、「項番」が「1」である情報には、「通知箇所」として「1」が設定され、「処理状態」として「再開」が設定されている。
また、図19に示すログ情報131において、「項番」が「2」である情報には、「日時」として「2017/2/7 13:45:02」が設定され、「仮想マシン群」として「MG3」が設定され、「仮想マシン」として「VM33」が設定されている。また、図19に示すログ情報131において、「項番」が「2」である情報には、「通知箇所」として「2」が設定され、「処理状態」として「中断」が設定されている。図19に含まれる他の情報については説明を省略する。
すなわち、図19に示すログ情報131は、仮想マシン33が追加済ソースコード232aにおける「If(listen_32){Exit(2);}」まで処理を行った後に中断し、仮想マシン34が追加済ソースコード232aにおける「If(listen_34){Exit(4);}」まで処理を行った後に中断したことを示している。
図14に戻り、異常検知部115は、S23の処理で実行を指示された無作為に決定した処理の実行に伴って、各仮想マシン3において所定の異常が発生しているか否かを判定する(S31)。具体的に、異常検知部115は、例えば、各仮想マシン3から所定の異常が発生した旨のメッセージ(エラーメッセージ)が出力された場合に、各仮想マシン3において所定の異常が発生したものと判定するものであってよい。
そして、各仮想マシン3において所定の異常が発生していると判定した場合(S32のYES)、情報生成部116は、S24の処理で出力されたログ情報131に基づいて指示情報132を生成し、情報格納領域130に記憶する(S33)。以下、S33の処理の詳細について説明を行う。
[S33の処理の詳細]
図15は、S33の処理の詳細を説明するフローチャートである。また、図20は、S33の処理の詳細を説明する図である。
情報生成部116は、情報格納領域130に記憶されたログ情報131を、各仮想マシン3に対応するログ情報毎にグルーピングする(S41)。具体的に、情報生成部116は、S24の処理において情報格納領域130に蓄積されたログ情報131を、各仮想マシン3に対応するログ情報毎にグルーピングする。
そして、情報生成部116は、S41の処理でグルーピングしたログ情報毎に、出力順が最初である第1ログ情報と出力順が最後である第2ログ情報とをそれぞれ特定する(S42)。
具体的に、情報生成部116は、図20に示すように、例えば、図19で説明したログ情報131において、「仮想マシン」に「VM33」が設定された情報であって「日時」に設定された日時が最も早い情報及び最も遅い情報(「項番」が「1」及び「2」である情報)を抽出する。また、情報生成部116は、図20に示すように、例えば、図19で説明したログ情報131において、「仮想マシン」に「VM34」が設定された情報であって「日時」に設定された日時が最も早い情報及び最も遅い情報(「項番」が「3」及び「6」である情報)を抽出する。図20に含まれる他の情報については説明を省略する。
その後、情報生成部116は、S42の処理で特定した第2ログ情報と、各第2ログ情報の後に出力された第1ログ情報のうち、出力順が最初である第1ログ情報とを対応付けた情報を、指示情報132として生成する(S43)。以下、指示情報132の具体例について説明を行う。
[指示情報の具体例]
図21は、指示情報132の具体例を説明する図ある。図21に示す指示情報132は、指示情報132に含まれる各情報を識別する「項番」と、仮想マシン群を示す「仮想マシン群」と、追加済ソースコード232における指示要求命令の位置を示す「通知箇所」とを項目として有する。また、図21に示す指示情報132は、「通知箇所」に設定された指示要求命令が実行された際に仮想マシン3に指示する必要がある処理を示す「指示」と、「指示」に設定された処理の実施条件を示す「条件」とを項目として有する。
具体的に、図20に示すログ情報131において、第2ログ情報と、その第2ログ情報の後に出力された第1ログ情報のうち、出力順が最初である第1ログ情報との組合せは、「項番」が「2」である情報と「項番」が「3」である情報との組合せ、「項番」が「6」である情報と「項番」が「7」である情報との組合せ、及び「項番」が「11」である情報と「項番」が「12」である情報との組合せである。
そのため、情報生成部116は、例えば、図21に示すように、「項番」が「1」である情報の「仮想マシン群」、「通知箇所」及び「指示」に、図20で説明したログ情報131における「項番」が「2」である情報の「仮想マシン群」、「通知箇所」及び「指示」に設定された情報である「MG3」、「2」及び「中断」をそれぞれ設定する。また、情報生成部116は、図21に示すように、「項番」が「2」である情報の「仮想マシン群」、「通知箇所」及び「指示」に、図20で説明したログ情報131における「項番」が「3」である情報の「仮想マシン群」、「通知箇所」及び「指示」に設定された情報である「MG3」、「1」及び「再開」をそれぞれ設定する。
ここで、図2等で説明した例において、仮想マシン34は、仮想マシン33の中断の発生に伴って処理を開始する仮想マシン3である。そのため、図2等で説明した状態の再現を行う場合、仮想マシン33の中断は、仮想マシン34における処理の再開よりも先に行われる必要がある。したがって、情報生成部116は、例えば、図21に示すように、「項番」が「2」である情報の「条件」に、「項番」が「1」である情報に対応する指示が行われた後に「項番」が「2」である情報に対応する指示を行う旨を示す「1」を設定する。
すなわち、情報生成部116は、通常処理以外の処理(例えば、仮想マシンの中断)の実行タイミングを示す情報と、通常処理以外の処理を行った直後に行う必要がある処理の実行タイミングを示す情報とを指示情報132に含める。これにより、試験装置1は、指示情報132を参照し、過去に異常が発生した場合と同じタイミングにおいて各処理を行うことで、過去に異常が発生した際の状態の再現を行うことが可能になる。
一方、仮想マシン33の中断は、他の仮想マシン3が特定の状態になったことに伴って行われる処理ではない。そのため、情報生成部116は、例えば、図21に示すように、「項番」が「1」である情報の「条件」に、実施条件が存在しないことを示す「なし」を設定する。図21に含まれる他の情報については説明を省略する。
図14に戻り、処理実行部213は、追加済ソースコード232に含まれる全ての指示要求命令が実行されたか否かを判定する(S34)。
その結果、全ての指示要求命令が実行されていないと判定した場合(S34のNO)、試験装置1は、S22以降の処理を再度行う。一方、全ての指示要求命令が実行されたと判定した場合(S34のYES)、試験装置1は、異常検知処理を終了する。
これにより、試験装置1は、試験対象処理の実行中に異常が発生した場合において、試験装置1が各仮想マシン3に対して行った指示の内容を指示情報132として記憶することが可能になる。そのため、試験装置1は、後述するように、指示情報132を参照することによって、発生した異常の再現を行うことが可能になる。
[試験装置が行う異常再現処理]
次に、試験装置1が行う試験処理のうち、異常検知処理において検知された異常の再現を行う処理(以下、異常再現処理とも呼ぶ)について説明を行う。図16は、試験装置1が行う異常再現処理を説明する図である。異常再現処理は、各仮想マシン3が試験対象処理を実行している間に行われる処理である。すなわち、各仮想マシン3は、試験装置1が異常検知処理と異常再現処理とを行うために、試験対象処理を複数回実行する必要がある。
情報受信部112は、異常再現タイミングまで待機する(S51のNO)。異常再現タイミングは、例えば、各仮想マシン3において試験対象処理の実行が開始されたタイミングであってよい。
続いて、異常再現タイミングになった場合(S51のYES)、情報受信部112は、仮想マシン3のいずれかから次の処理の指示要求を受信するまで待機する(S52のNO)。そして、次の処理の指示要求を受信した場合(S52のYES)、情報送信部113は、S33の処理で生成した指示情報132を参照し、S52の処理で受信した通知を送信した仮想マシン3に対し、S52の処理で受信した通知に対応する指示要求命令に対応する処理を指示する(S53)。
すなわち、情報送信部113は、指示情報132を参照することで、異常検知処理において異常が検知された際に行っていた指示と同じ内容の指示を、異常検知処理において異常が検知された際と同じタイミングで行う。これにより、試験装置1は、異常検知処理において発生した異常の再現を行うことが可能になる。
その後、処理実行部213は、追加済ソースコード232に含まれる全ての指示要求命令が実行されたか否かを判定する(S54)。その結果、全ての指示要求命令が実行されていないと判定した場合(S54のNO)、試験装置1は、S52以降の処理を再度行う。一方、全ての指示要求命令が実行されたと判定した場合(S54のYES)、試験装置1は、異常再現処理を終了する。以下、S53の処理の具体例について説明を行う。
[S53の処理の具体例]
図22から図28は、S53の処理の具体例を説明する図である。具体的に、図22から図28は、S53の処理が複数回実行された場合の具体例を説明する図である。
仮想マシン33は、例えば、図18(A)で説明した追加済ソースコード232aにおける「If(listen_31){Exit(1);}」を実行した場合、試験装置1に対して次の処理の指示要求を送信する(S104)。そして、試験装置1は、この場合、情報格納領域130に記憶された指示情報132に「If(listen_31){Exit(1);}」に対応する情報が存在しないため、処理の「再開」を仮想マシン33に対して指示する(S53)。
続いて、例えば、仮想マシン33が「If(listen_32){Exit(2);}」を実行した場合(S104)、試験装置1は、指示情報132に「If(listen_32){Exit(2);}」に対応する「項番」が「1」である情報が存在するため、図22に示すように、「中断」を仮想マシン33に対して指示する(S53)。
その後、例えば、仮想マシン34(中断した仮想マシン33に代わって試験対象処理を開始した仮想マシン)が「If(listen_31){Exit(1);}」を実行した場合(S104)、試験装置1は、指示情報132に「If(listen_31){Exit(1);}」に対応する「項番」が「2」である情報が存在するため、図23に示すように、処理の「再開」を仮想マシン34に対して指示する(S53)。そして、例えば、仮想マシン34が「If(listen_33){Exit(3);}」を実行した場合(S104)、試験装置1は、指示情報132に「If(listen_33){Exit(3);}」に対応する情報が存在しないため、処理の「再開」を仮想マシン33に対して指示する(S53)。そのため、仮想マシン34は、図23に示すように、「Logic_C,write new data」を実行し、データベースDB1に対してデータの書き込みを行う。
さらに、例えば、仮想マシン34が「If(listen_34){Exit(4);}」を実行した場合(S104)、試験装置1は、指示情報132に「If(listen_34){Exit(4);}」に対応する「項番」が「3」である情報が存在するため、図24に示すように、「中断」を仮想マシン33に対して指示する(S53)。
その後、例えば、仮想マシン35(中断した仮想マシン33に代わって試験対象処理を開始した仮想マシン)が「If(listen_31){Exit(1);}」を実行した場合(S104)、試験装置1は、指示情報132に「If(listen_31){Exit(1);}」に対応する「項番」が「4」である情報が存在するため、図25に示すように、処理の「再開」を仮想マシン35に対して指示する(S53)。そして、例えば、仮想マシン35が「If(listen_33){Exit(3);}」を実行した場合(S104)、試験装置1は、指示情報132に「If(listen_33){Exit(3);}」に対応する情報が存在しないため、処理の「再開」を仮想マシン33に対して指示する(S53)。そのため、仮想マシン35は、図25に示すように、「Logic_C,write new data」を実行し、データベースDB1に対してデータの書き込みを行う。すなわち、データベースDB1では、仮想マシン34及び仮想マシン35のそれぞれが「Logic_C,write new data」を実行したことによって、同一データの二重書き込みが行われた状態になる。
次に、仮想マシン36は、例えば、図26に示すように、仮想マシン31から処理要求の送信があった場合、試験対象処理を開始する。そして、仮想マシン36は、例えば、図18(B)で説明した追加済ソースコード232bにおける「If(listen_41){Exit(1);}」を実行した場合、試験装置1に対して次の処理の指示要求を送信する(S104)。
ここで、情報格納領域130に記憶された指示情報132には、「If(listen_41){Exit(1);}」に対応する「項番」が「6」である情報が存在する。しかしながら、図26に示す例では、仮想マシン群MG3に含まれる仮想マシン3のいずれかによって、「If(listen_35){Exit(5);}」が行われていないため、指示情報132における「項番」が「6」である情報の「条件」に設定された実施条件が満たされていない。そのため、試験装置1は、この場合、図27に示すように、指示情報132における「項番」が「6」である情報に対応する指示(仮想マシン36に対する処理の「再開」を行う旨の指示)を行わずに待機する。
続いて、例えば、仮想マシン35が「If(listen_35){Exit(5);}」を実行した場合(S104)、試験装置1は、指示情報132に「If(listen_35){Exit(5);}」に対応する「項番」が「5」である情報が存在するため、図28に示すように、処理の「再開」を仮想マシン35に対して指示する(S53)。
そして、試験装置1は、この場合、指示情報132における「項番」が「6」である情報の「条件」に設定された実施条件が満たされたため、図28に示すように、指示情報132における「項番」が「6」である情報に対応する指示を行う。そのため、仮想マシン36は、「Logic_E,read new data」を実行し、図28に示すように、データベースDB1に記憶されたデータの読み込みを行う。その後、仮想マシン36は、この場合、データベースDB1において同一データの二重書き込みが行われていることを検知し、例えば、異常が発生していることを試験装置1に対して通知する。
これにより、試験装置1は、指示情報132を参照することで、再現検知処理において検知した異常を再現することが可能になる。
以上の実施の形態をまとめると、以下の付記の通りである。
(付記1)
1または複数のコンピュータにより提供される複数の計算機資源が連動して行う特定の処理の試験を行う試験装置であって、
前記複数の計算機資源のそれぞれが実行する前記特定の処理の各ソースコードにおける所定の位置に、前記試験装置に指示を要求する指示要求命令を追加して追加済ソースコードを生成する命令追加部と、
前記特定の処理の実行中に、前記複数の計算機資源のいずれかにおいて前記指示要求命令が実行されたことに応じて、各計算機資源が実行する前記追加済ソースコードに追加された前記指示要求命令のそれぞれと各計算機資源が行う処理とを対応付けた指示情報が記憶された記憶部を参照し、前記指示要求命令を実行した計算機資源に対し、実行された前記指示要求命令に対応する処理の実行を指示する処理指示部と、を有する、
ことを特徴とする試験装置。
(付記2)
付記1において、
前記指示要求命令は、各計算機資源が次に実行する処理の指示を要求する命令である、
ことを特徴とする試験装置。
(付記3)
付記1において、
前記指示情報は、各計算機資源が実行する前記追加済ソースコードに追加された前記指示要求命令のそれぞれと、各計算機資源が行う処理と、所定の条件とを対応付けた情報であり、
前記処理指示部は、前記所定の条件が満たされている場合に、実行された前記指示要求命令に対応する処理の実行の指示を行う、
ことを特徴とする試験装置。
(付記4)
付記3において、
前記所定の条件は、前記複数の計算機資源のうち、前記処理指示部が処理の実行を指示した計算機資源以外の特定の計算機資源において、所定の処理が実行されたことである、
ことを特徴とする試験装置。
(付記5)
付記1において、
前記処理指示部は、前記指示情報において、実行された前記指示要求命令に対応する処理が計算機資源の中断である場合、前記指示要求命令を実行した計算機資源に対して中断を指示する、
ことを特徴とする試験装置。
(付記6)
付記5において、
前記複数の計算機資源の管理を行う管理装置は、前記処理指示部による中断の指示に伴って前記複数の計算機資源のうちのいずれかの計算機資源が中断した場合、前記いずれかの計算機資源と同じ前記追加済ソースコードを実行する他の計算機資源に、前記いずれかの計算機資源が実行する処理を実行させる、
ことを特徴とする試験装置。
(付記7)
付記1において、
前記処理指示部は、前記指示情報において、実行された前記指示要求命令に対応する処理が計算機資源における処理の再開である場合、前記指示要求命令を実行した計算機資源に対して処理の再開を指示する、
ことを特徴とする試験装置。
(付記8)
付記1において、さらに、
前記複数の計算機資源のそれぞれから、前記指示要求命令が実行されたことを示す通知を受信する通知受信部を有し、
前記処理指示部は、前記通知受信部が前記通知を受信したことに応じて、前記指示情報の参照を行う、
ことを特徴とする試験装置。
(付記9)
付記1において、
前記命令追加部は、前記ソースコードに含まれる命令のうち、データの読み込みまたは書き込みを行う命令の前後に前記指示要求命令を追加する、
ことを特徴とする試験装置。
(付記10)
付記1において、
前記処理指示部は、前記特定の処理の実行の前に行われる前記特定の処理の事前処理の実行中に、前記複数の計算機資源のいずれかにおいて前記指示要求命令が実行されたことに応じて、前記指示要求命令を実行した計算機資源に対し、無作為に決定した処理の実行を指示し、さらに、
前記複数の計算機資源のうちのいずれかの計算機資源が前記指示要求命令を実行したことに応じて、前記いずれかの計算機資源の状態を示すログ情報を出力するログ出力部と、
前記無作為に決定した処理の実行に伴って前記複数の計算機資源において発生した所定の異常を検知する異常検知部と、
前記異常検知部が前記所定の異常の発生を検知した場合、前記ログ情報に基づいて前記指示情報を生成する情報生成部と、を有する、
ことを特徴とする試験装置。
(付記11)
付記10において、
前記情報生成部は、
前記ログ情報を前記複数の計算機資源のそれぞれに対応するログ情報毎にグルーピングし、
グルーピングした前記ログ情報毎に、出力順が最初である第1ログ情報と出力順が最後である第2ログ情報とをそれぞれ特定し、
特定した前記第2ログ情報のそれぞれと、各第2ログ情報の後に出力された前記第1ログ情報のうち、出力順が最初である第1ログ情報とを対応付けた情報を、前記指示情報として生成する、
ことを特徴とする試験装置。
(付記12)
1または複数のコンピュータにより提供される複数の計算機資源が連動して行う特定の処理の試験を行う試験方法であって、
前記複数の計算機資源のそれぞれが実行する前記特定の処理の各ソースコードにおける所定の位置に、前記試験装置に指示を要求する指示要求命令を追加して追加済ソースコードを生成し、
前記特定の処理の実行中に、前記複数の計算機資源のいずれかにおいて前記指示要求命令が実行されたことに応じて、各計算機資源が実行する前記追加済ソースコードに追加された前記指示要求命令のそれぞれと各計算機資源が行う処理とを対応付けた指示情報が記憶された記憶部を参照し、前記指示要求命令を実行した計算機資源に対し、実行された前記指示要求命令に対応する処理の実行を指示する、
ことを特徴とする試験方法。
(付記13)
1または複数のコンピュータにより提供される複数の計算機資源が連動して行う特定の処理の試験を行う処理をコンピュータに実行させる試験プログラムであって、
前記複数の計算機資源のそれぞれが実行する前記特定の処理の各ソースコードにおける所定の位置に、前記試験装置に指示を要求する指示要求命令を追加して追加済ソースコードを生成し、
前記特定の処理の実行中に、前記複数の計算機資源のいずれかにおいて前記指示要求命令が実行されたことに応じて、各計算機資源が実行する前記追加済ソースコードに追加された前記指示要求命令のそれぞれと各計算機資源が行う処理とを対応付けた指示情報が記憶された記憶部を参照し、前記指示要求命令を実行した計算機資源に対し、実行された前記指示要求命令に対応する処理の実行を指示する、
処理をコンピュータに実行させることを特徴とする試験プログラム。
(付記14)
1または複数のコンピュータにより提供される複数の計算機資源と、
前記複数の計算機資源が連動して行う特定の処理の試験を行う試験装置と、を有し、
前記試験装置は、前記複数の計算機資源のそれぞれが実行する前記特定の処理の各ソースコードにおける所定の位置に、前記試験装置に指示を要求する指示要求命令を追加して追加済ソースコードを生成する命令追加部を有し、
前記複数の計算機資源は、前記特定の処理を実行し、
前記試験装置は、前記特定の処理の実行中に、前記複数の計算機資源のいずれかにおいて前記指示要求命令が実行されたことに応じて、各計算機資源が実行する前記追加済ソースコードに追加された前記指示要求命令のそれぞれと各計算機資源が行う処理とを対応付けた指示情報が記憶された記憶部を参照し、前記指示要求命令を実行した計算機資源に対し、実行された前記指示要求命令に対応する処理の実行を指示する処理指示部と、を有する、
ことを特徴とする試験システム。
1:試験装置 2:情報処理装置
3:仮想マシン 4:仮想化ソフトウエア

Claims (13)

  1. 1または複数のコンピュータにより提供される複数の計算機資源が連動して行う特定の処理の試験を行う試験装置であって、
    前記複数の計算機資源のそれぞれが実行する前記特定の処理の各ソースコードにおける所定の位置に、前記試験装置に指示を要求する指示要求命令を追加して追加済ソースコードを生成する命令追加部と、
    前記特定の処理の実行中に、前記複数の計算機資源のいずれかにおいて前記指示要求命令が実行されたことに応じて、所定の処理の実行に伴って所定の異常が発生したタイミングにおける前記所定の処理を実行した計算機資源の状態を示すログ情報に基づいて生成された指示情報が記憶された記憶部を参照し、前記指示要求命令を実行した計算機資源に対し、実行された前記指示要求命令に対応する処理の実行を指示する処理指示部と、を有する、
    ことを特徴とする試験装置。
  2. 請求項1において、
    前記指示要求命令は、各計算機資源が次に実行する処理の指示を要求する命令である、
    ことを特徴とする試験装置。
  3. 請求項1において、
    前記指示情報は、各計算機資源が実行する前記追加済ソースコードに追加された前記指示要求命令のそれぞれと、各計算機資源が行う処理と、所定の条件とを対応付けた情報であり、
    前記処理指示部は、前記所定の条件が満たされている場合に、実行された前記指示要求命令に対応する処理の実行の指示を行う、
    ことを特徴とする試験装置。
  4. 請求項3において、
    前記所定の条件は、前記複数の計算機資源のうち、前記処理指示部が処理の実行を指示した計算機資源以外の特定の計算機資源において、所定の処理が実行されたことである、
    ことを特徴とする試験装置。
  5. 請求項1において、
    前記処理指示部は、前記指示情報において、実行された前記指示要求命令に対応する処理が計算機資源の中断である場合、前記指示要求命令を実行した計算機資源に対して中断を指示する、
    ことを特徴とする試験装置。
  6. 請求項5において、
    前記複数の計算機資源の管理を行う管理装置は、前記処理指示部による中断の指示に伴って前記複数の計算機資源のうちのいずれかの計算機資源が中断した場合、前記いずれかの計算機資源と同じ前記追加済ソースコードを実行する他の計算機資源に、前記いずれかの計算機資源が実行する処理を実行させる、
    ことを特徴とする試験装置。
  7. 請求項1において、
    前記処理指示部は、前記指示情報において、実行された前記指示要求命令に対応する処理が計算機資源における処理の再開である場合、前記指示要求命令を実行した計算機資源に対して処理の再開を指示する、
    ことを特徴とする試験装置。
  8. 請求項1において、さらに、
    前記複数の計算機資源のそれぞれから、前記指示要求命令が実行されたことを示す通知を受信する通知受信部を有し、
    前記処理指示部は、前記通知受信部が前記通知を受信したことに応じて、前記指示情報の参照を行う、
    ことを特徴とする試験装置。
  9. 請求項1において、
    前記処理指示部は、前記特定の処理の実行の前に行われる前記特定の処理の事前処理の実行中に、前記複数の計算機資源のいずれかにおいて前記指示要求命令が実行されたことに応じて、前記指示要求命令を実行した計算機資源に対し、無作為に決定した処理の実行を指示し、さらに、
    記無作為に決定した処理の実行に伴って前記複数の計算機資源において発生した所定の異常を検知する異常検知部と、
    前記異常検知部が前記所定の異常の発生を検知した場合、前記ログ情報に基づいて前記指示情報を生成する情報生成部と、を有する、
    ことを特徴とする試験装置。
  10. 請求項9において、
    前記情報生成部は、
    前記ログ情報を前記複数の計算機資源のそれぞれに対応するログ情報毎にグルーピングし、
    グルーピングした前記ログ情報毎に、出力順が最初である第1ログ情報と出力順が最後である第2ログ情報とをそれぞれ特定し、
    特定した前記第2ログ情報のそれぞれと、各第2ログ情報の後に出力された前記第1ログ情報のうち、出力順が最初である第1ログ情報とを対応付けた情報を、前記指示情報として生成する、
    ことを特徴とする試験装置。
  11. 1または複数のコンピュータにより提供される複数の計算機資源が連動して行う特定の処理の試験を行う試験方法であって、
    前記複数の計算機資源のそれぞれが実行する前記特定の処理の各ソースコードにおける所定の位置に、前記試験装置に指示を要求する指示要求命令を追加して追加済ソースコードを生成し、
    前記特定の処理の実行中に、前記複数の計算機資源のいずれかにおいて前記指示要求命令が実行されたことに応じて、所定の処理の実行に伴って所定の異常が発生したタイミングにおける前記所定の処理を実行した計算機資源の状態を示すログ情報に基づいて生成された指示情報が記憶された記憶部を参照し、前記指示要求命令を実行した計算機資源に対し、実行された前記指示要求命令に対応する処理の実行を指示する、
    ことを特徴とする試験方法。
  12. 1または複数のコンピュータにより提供される複数の計算機資源が連動して行う特定の処理の試験を行う処理をコンピュータに実行させる試験プログラムであって、
    前記複数の計算機資源のそれぞれが実行する前記特定の処理の各ソースコードにおける所定の位置に、前記試験装置に指示を要求する指示要求命令を追加して追加済ソースコードを生成し、
    前記特定の処理の実行中に、前記複数の計算機資源のいずれかにおいて前記指示要求命令が実行されたことに応じて、所定の処理の実行に伴って所定の異常が発生したタイミングにおける前記所定の処理を実行した計算機資源の状態を示すログ情報に基づいて生成された指示情報が記憶された記憶部を参照し、前記指示要求命令を実行した計算機資源に対し、実行された前記指示要求命令に対応する処理の実行を指示する、
    処理をコンピュータに実行させることを特徴とする試験プログラム。
  13. 1または複数のコンピュータにより提供される複数の計算機資源と、
    前記複数の計算機資源が連動して行う特定の処理の試験を行う試験装置と、を有し、
    前記試験装置は、前記複数の計算機資源のそれぞれが実行する前記特定の処理の各ソースコードにおける所定の位置に、前記試験装置に指示を要求する指示要求命令を追加して追加済ソースコードを生成する命令追加部を有し、
    前記複数の計算機資源は、前記特定の処理を実行し、
    前記試験装置は、前記特定の処理の実行中に、前記複数の計算機資源のいずれかにおいて前記指示要求命令が実行されたことに応じて、所定の処理の実行に伴って所定の異常が発生したタイミングにおける前記所定の処理を実行した計算機資源の状態を示すログ情報に基づいて生成された指示情報が記憶された記憶部を参照し、前記指示要求命令を実行した計算機資源に対し、実行された前記指示要求命令に対応する処理の実行を指示する処理指示部と、を有する、
    ことを特徴とする試験システム。
JP2017062954A 2017-03-28 2017-03-28 試験装置、試験方法、試験プログラム及び試験システム Active JP6908827B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017062954A JP6908827B2 (ja) 2017-03-28 2017-03-28 試験装置、試験方法、試験プログラム及び試験システム
US15/935,096 US10713147B2 (en) 2017-03-28 2018-03-26 Test apparatus and method implementing instruction request command for testing computing machine resources

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017062954A JP6908827B2 (ja) 2017-03-28 2017-03-28 試験装置、試験方法、試験プログラム及び試験システム

Publications (2)

Publication Number Publication Date
JP2018165902A JP2018165902A (ja) 2018-10-25
JP6908827B2 true JP6908827B2 (ja) 2021-07-28

Family

ID=63672536

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017062954A Active JP6908827B2 (ja) 2017-03-28 2017-03-28 試験装置、試験方法、試験プログラム及び試験システム

Country Status (2)

Country Link
US (1) US10713147B2 (ja)
JP (1) JP6908827B2 (ja)

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06290078A (ja) * 1993-04-01 1994-10-18 Nec Ic Microcomput Syst Ltd マイクロプロセッサ
JPH09212385A (ja) * 1996-02-02 1997-08-15 Mitsubishi Electric Corp 並列プログラムデバッグ装置
JP2003015906A (ja) * 2001-06-28 2003-01-17 Mitsubishi Electric Corp リモートデバッグ方法および装置
US20040040013A1 (en) 2002-08-26 2004-02-26 Mohit Kalra Time-based breakpoints in debuggers
JP4944368B2 (ja) 2004-06-08 2012-05-30 キヤノン株式会社 マルチプロセッサシステム、デバッグ方法、及びプログラム
US7653899B1 (en) * 2004-07-23 2010-01-26 Green Hills Software, Inc. Post-execution software debugger with performance display
JP2008217473A (ja) 2007-03-05 2008-09-18 Yaskawa Electric Corp モーションコントロールシステムおよびモーションコントロールシステムにおけるモーションプログラムの動作確認方法
US20130055217A1 (en) * 2011-08-23 2013-02-28 International Business Machines Corporation Breakpoint synchronization for modified program source code
US9864675B2 (en) * 2014-11-17 2018-01-09 Sap Se Regression testing with external breakpoints
JP6405972B2 (ja) * 2014-12-11 2018-10-17 株式会社リコー 動作検証装置、動作検証方法及び動作検証プログラム
US9678855B2 (en) * 2014-12-30 2017-06-13 International Business Machines Corporation Managing assertions while compiling and debugging source code

Also Published As

Publication number Publication date
US20180285245A1 (en) 2018-10-04
US10713147B2 (en) 2020-07-14
JP2018165902A (ja) 2018-10-25

Similar Documents

Publication Publication Date Title
US10884837B2 (en) Predicting, diagnosing, and recovering from application failures based on resource access patterns
US8468288B2 (en) Method for efficient guest operating system (OS) migration over a network
US8046641B2 (en) Managing paging I/O errors during hypervisor page fault processing
JP5851503B2 (ja) 高可用性仮想機械環境におけるアプリケーションの高可用性の提供
WO2020063197A1 (zh) 数据库切换方法、系统、电子设备和计算机可读介质
US7856639B2 (en) Monitoring and controlling applications executing in a computing node
US8904063B1 (en) Ordered kernel queue for multipathing events
CN109558260B (zh) Kubernetes故障排除系统、方法、设备及介质
KR20200070085A (ko) 정보를 처리하기 위한 방법 및 장치
US10802847B1 (en) System and method for reproducing and resolving application errors
JP2018088134A (ja) マイグレーションプログラム、情報処理装置およびマイグレーション方法
US9378078B2 (en) Controlling method, information processing apparatus, storage medium, and method of detecting failure
CN111158955B (zh) 一种基于卷复制的高可用系统以及多服务器数据同步方法
US9454485B2 (en) Sharing local cache from a failover node
JP2009176139A (ja) Os優先度変更装置及びos優先度変更プログラム
JP6908827B2 (ja) 試験装置、試験方法、試験プログラム及び試験システム
US9122505B1 (en) System and method for handling I/O timeout deadlines in virtualized systems
US20180287914A1 (en) System and method for management of services in a cloud environment
JP2009205208A (ja) 運用管理装置、運用管理方法ならびにプログラム
US20160266951A1 (en) Diagnostic collector for hadoop
JP2012027727A (ja) 記憶装置、ストレージシステム及び制御方法
EP3382555A1 (en) System and method for management of services in a cloud environment
JP2022142456A (ja) 異常対処プログラム、異常対処システム、及び異常対処方法
US9053074B2 (en) Computer product, writing control method, writing control apparatus, and system
JP2011100300A (ja) 計算機装置及び情報処理方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191212

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210127

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210601

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210614

R150 Certificate of patent or registration of utility model

Ref document number: 6908827

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150