JP2018037052A - 情報処理装置、情報処理システム、コンピュータプログラムおよび方法 - Google Patents
情報処理装置、情報処理システム、コンピュータプログラムおよび方法 Download PDFInfo
- Publication number
- JP2018037052A JP2018037052A JP2016191084A JP2016191084A JP2018037052A JP 2018037052 A JP2018037052 A JP 2018037052A JP 2016191084 A JP2016191084 A JP 2016191084A JP 2016191084 A JP2016191084 A JP 2016191084A JP 2018037052 A JP2018037052 A JP 2018037052A
- Authority
- JP
- Japan
- Prior art keywords
- unit
- test
- information
- information processing
- activation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
【課題】外部記憶装置を取り外さなくても、機器を再起動し、テストを実行することができる装置等を提供する。【解決手段】情報処理装置(テスト機器10)は、設定された起動情報に基づき、第1の制御部41または情報処理装置に接続される記憶装置に格納されたプログラムより実現される第2の制御部42を起動する起動部40と、第2の制御部が起動された場合に、配信装置に対しシステムプログラムの配信を要求する要求部43と、要求に応じて配信装置から配信されたシステムプログラムを記憶部44に記憶させる処理部45と、設定された起動情報を変更する変更部46と、第2の制御部に対して情報処理装置を再起動するように指示する起動指示部47と、変更された起動情報に基づき第1の制御部が起動された場合に、システムプログラムを試験するためのテストプログラムを実行するよう指示する試験指示部49と、試験を実行する実行部48とを含む。【選択図】図4
Description
本発明は、システムプログラムの動作を試験する情報処理装置、該情報処理装置を含む情報処理システム、その処理をコンピュータに実行させるためのコンピュータプログラムおよび方法に関する。
特定の機能を実現するために製品に組み込まれる組み込み機器の開発では、その機器を動作させるために導入(インストール)すべきソフトウェアをSDカード等の外部記憶装置に保存し、外部記憶装置から機器を起動した後、そのソフトウェアをインストールする。そして、インストールが完了した後、電源を切断し、外部記憶装置を取り外して機器を起動する。その後、機器を試験(テスト)するためのテストソフトウェアを保存したSDカード等の外部記憶装置を装着し、テストを実行することが行われている(例えば、特許文献1参照)。
しかしながら、従来の上記構成では、外部記憶装置を取り外した後、機器を再起動させなければ、テストを実行することができないという問題があった。
本発明は、上記に鑑みてなされたものであって、外部記憶装置を取り外さなくても、機器を再起動し、テストを実行することができる装置、システム、プログラムおよび方法を提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、情報処理装置であって、設定された起動情報に基づき、情報処理装置が備える第1の制御部または該情報処理装置に接続される記憶装置に格納されたプログラムより実現される第2の制御部を起動する起動部と、起動情報に基づき、起動部により第2の制御部が起動された場合に、情報処理装置を動作させるために導入すべきシステムプログラムを保持する配信装置に対し、該システムプログラムの配信を要求する要求部と、要求部による要求に応じて、配信装置から配信されたシステムプログラムを、情報処理装置が備える記憶部に記憶させる処理部と、起動情報を変更する変更部と、第2の制御部に対して起動中の情報処理装置を再起動するように指示する起動指示部と、変更部により変更された起動情報に基づき、起動部により第1の制御部が起動された場合に、システムプログラムの動作を試験するためのテストプログラムを実行する試験指示部と、試験指示部によるテストプログラムの実行により試験を実行する実行部とを含む、情報処理装置を提供する。
本発明によれば、外部記憶装置を取り外さなくても、機器を再起動し、テストを実行することが可能となる。
図1は、情報処理装置を含む情報処理システムの構成例を示した図である。情報処理システムは、試験(テスト)を実行する対象の情報処理装置としてのテスト機器10を自動でテストするためのシステムである。情報処理システムは、テスト機器10のほか、配信装置としての配信サーバ11と、情報処理装置を動作させるためにインストールすべきプログラム(システムプログラム)を作成する作成装置としてのビルドサーバ12とを含んで構成される。テスト機器10と、配信サーバ11と、ビルドサーバ12とは、ネットワーク13を介して互いに接続されている。
テスト機器10は、機器に組み込まれるコンピュータシステムといった組み込み機器である。機器は、コンピュータシステムを組み込み、そのコンピュータシステムにより制御され、機能が実現される機器であれば、いかなる機器であってもよく、デジタルカメラやMFP(Multi-Function Peripheral)等を挙げることができる。なお、機器は、プロジェクタ、電子黒板、プリンタ、ファックス装置、コピー機、スキャナ、ゲーム機、テレビ、ブルーレイディスクレコーダ、ハードディスクレコーダ、電子炊飯器、冷蔵庫、洗濯機、冷暖房装置等であってもよい。
テスト機器10は、これらの機器に必要な機能に応じ、必要なシステムプログラムがインストールされ、その動作を確認するためのテストが実行される。機能は、MFPに組み込まれる組み込み機器の場合、コピー、ファックス、スキャナ、印刷、通信、ユーザ認証等の機能である。
ネットワーク13は、LAN(Local Area Network)やインターネット等であり、有線ネットワークであってもよいし、無線ネットワークであってもよい。なお、無線ネットワークを使用する場合は、アクセスポイントを設け、アクセスポイントを介して互いに通信を行うことができる。また、ネットワーク13は、1つのネットワークに限らず、2以上のネットワークがルータ等の中継装置を介して接続されたものであってもよい。
ビルドサーバ12は、テスト機器10にインストールするシステムプログラムをビルドする。ビルドは、システムプログラムの開発者がC言語やC++言語等のプログラミング言語を用いて記述したソースコードをコンパイルし、リンクして、実行可能なプログラムを作成する処理である。コンパイルは、ソースコードを解析し、コンピュータが実行可能な形式のオブジェクトコードに変換する処理であり、リンクは、複数のオブジェクトコードを結合し、実行可能なプログラムを生成する処理である。
ビルドサーバ12は、必要なソースコードを保持し、開発プロジェクトの方針で定められた時期やテスト実施の必要に応じてビルドする。そして、ビルドサーバ12は、作成したシステムプログラムを配信サーバ11に送信する。時期としては、例えば毎日深夜の決まった時刻、リリース予定日10日前等とすることができる。
配信サーバ11は、ビルドサーバ12がビルドしたシステムプログラムを受信して保持し、テスト機器10からの要求に応じて、そのシステムプログラムを配信する。テスト機器10は、2段階に分けてテストを実行する。第1の段階は、配信サーバ11にシステムプログラムを要求し、その配信を受け、自身にインストールし、再起動をかける。第2の段階は、そのシステムプログラムがインストールされた新しいシステム構成で起動し、テストプログラムを使用してテストを実行する。
このシステムは、例えば、プリンタやMFP等の画像形成装置の開発者が、ファームウェア等のシステムプログラムをビルドサーバ12で開発し、配信サーバ11経由でダウンロードし、画像形成装置にインストールして、正しく動作するかをテストするシーンで用いられる。なお、このシーンは一例であり、このシステムは、ユーザやサービスマンがテストするシーンで用いられてもよい。
配信サーバ11およびビルドサーバ12は、上記の処理を実行するためにハードウェアとして、CPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)、HDD(Hard Disk Drive)、ネットワークコントローラ、ネットワークI/Fを備える。ネットワークI/Fは、ネットワーク13と接続し、ネットワークコントローラは、ネットワーク13を介した通信を制御する。ROM、HDDは、サーバ全体を制御するOS(Operating System)や上記の処理を実現するための各種プログラムやデータ等を記憶する。CPUは、OSや各種プログラムを作業領域としてのRAM上に展開し、実行して上記の処理を実現する。
この例では、配信サーバ11とビルドサーバ12を別個の機器としているが、これに限られるものではなく、1つの機器にこれらの両方の機能を備えるものであってもよい。また、HDDに代えてSSD(Solid State Drive)を使用してもよく、簡易なサーバである場合、HDDを備えず、SDカードやUSBメモリ等のフラッシュメモリが着脱可能な構成とされ、HDDに代えてそのフラッシュメモリを使用することも可能である。テスト機器10については、図2を参照して説明する。
図2は、テスト機器10のハードウェア構成を例示した図である。テスト機器10は、CPU20、起動用ROM21、RAM22、主記憶装置23、リムーバブルメディアスロット24、接続機器としてのテスト用記憶装置(リムーバブルメディア)25、ネットワークコントローラ26、ネットワークI/F27を備える。CPU20は、起動用ROM21や各記憶装置に格納されたプログラムを実行する。起動用ROM21は、起動プログラムを格納する不揮発性メモリである。CPU20は、テスト機器10の起動時にこの起動プログラムを実行する。RAM22は、各種プログラムやデータを保持する揮発性のメモリである。
主記憶装置23は、テスト機器10のOS、各種プログラム、データ等が格納されるeMMC(embedded MultiMediaCard)やNANDフラッシュメモリ等の記憶装置である。最新のシステムプログラムでテスト機器10を動作させ、そのテストを実行する場合、主記憶装置23に記憶されているシステムプログラムに対して、配信サーバ11から配信されたシステムプログラムをインストールして置換する。
テスト用記憶装置25は、第1の段階で必要とされる各種プログラムや、第2の段階で実行されるテストプログラム本体が格納される。第1の段階では、このテスト用記憶装置25に起動可能なパーティションが存在し、起動可能なパーティション内に存在するOSが起動され、テスト準備が実行される。パーティションは、テスト用記憶装置25の記憶領域を論理的に分割した個々の記憶領域である。
リムーバブルメディアスロット24は、テスト用記憶装置25の挿入および取り外しを可能にし、挿入されたテスト用記憶装置25に格納された各種プログラムやデータの読み出しおよび書き込みを実行する。上記の起動可能なパーティションは、他の機器からのアクセスで書き込まれる可能性があるため、リムーバブルメディアのように挿入および取り外し可能にされていることが望ましい。
ネットワークI/F27は、ネットワーク13と接続し、ネットワークコントローラ26は、ネットワーク13を介した通信を制御する。
このハードウェア構成により、開発者は、例えばSDカードに入ったダウンロード/テストプログラムを、リムーバブルメディアスロット24としてのSDカードスロットに挿入することで、サーバからのシステムプログラムのダウンロードとインストール、テスト機器10の再起動およびインストールされたシステムプログラムの作動テストを自動で実行させることができる。
図3を参照して、テスト機器10のソフトウェア構成について説明する。テスト機器10は、起動用ROM21と、主記憶装置23と、リムーバブルメディアスロット24およびテスト用記憶装置25とを備える。テスト機器10は、起動用ROM21にテスト機器10を起動させるための起動プログラム30が格納され、主記憶装置23に、制御プログラムとしてのOS31、マウント用プログラム32、テスト指示プログラム33が格納されている。
テスト用記憶装置25は、起動可能なパーティションが存在し、そのパーティションにOS34が格納されている。また、テスト用記憶装置25には、ダウンローダ35、インストーラ36、起動情報変更プログラム37、テスト実行プログラム38、テストプログラム39の本体が格納されている。これらのプログラムは、CPU20によりRAM22に読み出し実行される。
起動プログラム30は、ハードウェアの状況を確認して初期化処理を実行し、OSを起動する。初期化処理としては、OSを使用可能な状態にするためのRAM22に読み出す処理を一例として挙げることができる。図3に示すように、テスト用記憶装置25がリムーバブルメディアスロット24に挿入されている場合、テスト用記憶装置25の各記憶領域の情報としてパーティション情報を読み取り、起動可能なパーティションが存在するかどうかを確認する。その確認において、起動可能なパーティションが存在する場合、そのパーティションに格納されているOS34を起動する。一方、起動可能なパーティションが存在しない場合、主記憶装置23に格納されているOS31を起動する。
ここでは、予め設定されている起動情報が、テスト用記憶装置25が挿入され、そのテスト用記憶装置25に起動可能なパーティションが存在する場合、テスト用記憶装置25のOS34を起動するように設定されている。このため、OS34ではなく、OS31を起動するように設定すれば、起動時にOS31を起動させることができる。
ダウンローダ35は、OS34により起動され、OS34による制御の下、配信サーバ11に対してシステムプログラムの配信を要求し、配信サーバ11から配信されたそのシステムプログラムを受信する(ダウンロードする)。ダウンローダ35は、要求したシステムプログラムをダウンロードするまで、繰り返しシステムプログラムの配信を要求する。インストーラ36は、OS34により起動され、OS34による制御の下、ダウンローダ35がダウンロードしたシステムプログラムを主記憶装置23に記憶させる(インストールする)。
起動情報変更プログラム37は、OS34により起動され、OS34による制御の下、インストーラ36がシステムプログラムをインストールした後、テスト用記憶装置25に起動可能なパーティションが存在しないと判断されるように、起動可能なパーティションの情報を消去する。この処理により、起動情報を変更する。この起動情報の変更により、次の起動時は、テスト用記憶装置25に起動可能なパーティションが存在しないため、主記憶装置23に格納されているOS31を起動することになる。
起動情報変更プログラム37は、起動情報の変更後、OS34に対して再起動を指示する。OS34は、その指示を受けて、終了処理を行い、テスト機器10を再起動する。この終了処理では、テスト用記憶装置25のアンマウント等を実行する。ここで、マウントは、OSがそのテスト用記憶装置25を認識し、アクセス可能な状態にすることであり、アンマウントは、その認識を解除し、アクセスできない状態にすることである。
再起動後、起動プログラム30は、主記憶装置23に格納されているOS31を起動する。OS31は、初期化処理を実行し、マウント用プログラム32が、テスト用記憶装置25をマウントする。テスト指示プログラム33は、テスト用記憶装置25がマウントされた後、テスト用記憶装置25に格納されているテスト実行プログラム38に対して、テストの実行を指示する。
テスト実行プログラム38は、その指示を受けて、テストプログラム39を実行させる。このテスト実行プログラム38は、テスト用記憶装置25の中の予め定められた場所に、定められた名前のファイルとして存在する。テストプログラム39は、システムプログラムを実行させ、テスト機器10が正常に動作するかどうかをテストする。
テスト機器10は、このようなハードウェアおよびソフトウェアを備え、上記の処理を実行することから、その機能構成として、次のような機能部を備えるものとすることができる。なお、各機能部は、CPU20が、主記憶装置23やテスト用記憶装置25に格納されたプログラムを実行することにより実現される。
図4は、テスト機器10の機能ブロック図である。テスト機器10は、その機能部として、起動部40、第1の制御部41、第2の制御部42、要求部43、記憶部44、処理部45、変更部46、起動指示部47、実行部48、試験指示部49を備えることができる。
テスト機器10は、試験を実行するためにテスト用記憶装置25が接続されている。起動部40は、予め設定された起動情報に基づき、第1の制御部41と第2の制御部42のいずれかを起動する。起動情報は、例えば第2の制御部42が存在するか否かを示す情報である。起動部40は、第2の制御部42が存在する場合、第2の制御部42を起動し、存在しない場合、第1の制御部41を起動する。起動部40は、起動プログラム30により実現され、第1の制御部41は、テスト機器10の主記憶装置23に格納されたOS31により実現され、第2の制御部42は、テスト機器10に接続されたテスト用記憶装置25に格納されたOS34により実現される。
要求部43は、起動部40により第2の制御部42が起動された場合に、第2の制御部42により起動され、テスト機器10を動作させるためにインストールすべきシステムプログラムを保持する配信サーバ11装置に対し、そのシステムプログラムの配信を要求する。処理部45も、第2の制御部42により起動され、要求部43による要求に応じて、配信サーバ11から配信されたシステムプログラムを記憶部44に記憶させる。要求部43は、ダウンローダ35により実現され、処理部45は、インストーラ36により実現される。
変更部46も、第2の制御部42により起動され、設定された起動情報を変更する。起動情報が、第2の制御部42が存在することを示す情報である場合、変更部46は、第2の制御部42が存在しないことを示す情報に変更する。
第2の制御部42は、起動可能なパーティション内のOSにより実現されることから、変更部46は、テスト用記憶装置25に起動可能なパーティションを示す情報が存在するかどうかを確認する。そして、変更部46は、存在する場合、その情報を消去する。このようにして、テスト用記憶装置25内に起動可能なパーティションを示す情報がなくなったことにより、主記憶装置23にしか起動可能なパーティションが存在しなくなる。このため、次の起動時には、主記憶装置23の起動可能なパーティションに格納されるOS31が起動されることになる。
起動指示部47は、変更部46により起動情報が変更された後、第2の制御部42に対して、現在起動中のテスト機器10を再起動するように指示する。再起動は、一度テスト機器10の電源を切断し、再度電源を投入して起動させる処理である。変更部46および起動指示部47は、起動情報変更プログラム37により実現される。第2の制御部42は、この再起動の指示を受けて、終了処理を実行し、再起動することができる。
起動部40は、再起動後、変更された起動情報に基づき、第1の制御部41を起動する。第1の制御部41は、試験指示部49を起動する。テスト機器10は、上記の終了処理でテスト用記憶装置25がアンマウントされることから、テスト用記憶装置25をマウントするための接続部を設けることができる。第1の制御部41は、この接続部も起動し、接続部が、テスト用記憶装置25をマウントすることができる。接続部は、マウント用プログラム32により実現され、試験指示部49は、テスト指示プログラム33により実現される。また、実行部48は、テスト実行プログラム38により実現される。
試験指示部49は、マウントされたテスト用記憶装置25に格納されたシステムプログラムの動作をテストするためのテストプログラム39を実行し、その動作をテストするように指示する。実行部48は、試験指示部49によるテストプログラム39の実行によりシステムプログラムを実行させ、正常に動作するかどうかをテストする。
図4に示す機能部を備えるテスト機器10を含む情報処理システムにより実行されるテスト準備について、図5を参照して説明する。図5は、テスト準備の第1の実施例を示したシーケンス図である。起動部40は、設定された起動情報に基づき、第2の制御部42を起動する(図5S1)。この第1の実施例では、テスト用記憶装置25がマウントされ、起動可能なパーティションが存在している。第2の制御部42は、初期化処理を実行し(図5S2)、要求部43、処理部45、変更部46、起動指示部47を起動する(図5S3〜S6)。
要求部43は、配信サーバ11に対してシステムプログラムの配信を要求する(図5S7)。この時点では、ビルドサーバ12がビルドを実行しておらず、ビルドサーバ12から配信サーバ11にビルドしたシステムプログラムを送信していないため、配信が不可である旨の応答を返す(図5S8)。これは、システムプログラムがビルドされ、配信サーバ11に送信されるまで繰り返される。
ビルドサーバ12は、定められた時期に、システムプログラムのビルドを実行する(図5S9)。ビルドサーバ12は、配信サーバ11に対してビルドしたシステムプログラムを送信する(図5S10)。要求部43は、配信サーバ11に対するシステムプログラムの配信の要求を繰り返し(図5S11)、配信サーバ11がシステムプログラムを保持している場合にそのシステムプログラムを配信する(図5S12)。
要求部43は、システムプログラムをダウンロードすると、ダウンロードが完了した旨を処理部45に対して通知する(図5S13)。処理部45は、そのシステムプログラムを記憶部44にインストールし(図5S14)、インストールが完了した旨を変更部46に通知する(図5S15)。変更部46は、テスト用記憶装置25の起動可能なパーティション情報を消去して、起動情報を変更する(図5S16)。変更部46は、起動情報の変更が完了した旨を起動指示部47に通知する(図5S17)。
起動指示部47は、その通知を受けて、第2の制御部42に対して動作中のテスト機器10の再起動を指示する(図5S18)。第2の制御部42は、その指示を受けて、終了処理を実行し、テスト機器10を再起動する(図5S19)。
次に、図6を参照して、テスト機器10により実行されるテストについて説明する。図6は、テストの第1の実施例を示したシーケンス図である。テスト機器10が再起動されると、起動部40は、変更された起動情報に基づき、第1の制御部41を起動する(図6S1)。前回は、テスト用記憶装置25から起動したが、今回は、主記憶装置23から起動する。
第1の制御部41は、初期化処理を実行し(図6S2)、接続部50および試験指示部49を起動する(図6S3、S4)。接続部50は、上記の終了処理時にアンマウントされたテスト用記憶装置25をマウントし(図6S5)、そのマウントが完了した旨を試験指示部49に対して通知する(図6S6)。
試験指示部49は、テストプログラム39を実行し、システムプログラムの動作をテストするように指示する(図6S7)。実行部48は、試験指示部49によるテストプログラム39の実行によりシステムプログラムの動作をテストする(図6S8)。
主記憶装置23およびテスト用記憶装置25のデータ構造を、図7(a)に例示し、そのデータ構造に含まれるパーティションテーブルのデータ構造を、図7(b)に例示する。図7(a)に示すように、各記憶装置のデータ構造は、マスタブートレコード(MBR)と、複数のパーティションとを含む構造である。一般に記憶装置は、最大4つのパーティションに分けられ、記憶領域の先頭にMBRが存在する。MBRには、図7(b)に示すようなパーティションテーブルと呼ばれる領域が存在する。
MBRは、図7(b)に示すパーティションテーブルの中に、記憶装置に存在するパーティションのパーティション情報が格納される。パーティション情報は、分割された領域の情報で、ブートフラグ、パーティションの種類、先頭セクタ、最終セクタ、セクタ数を含む。セクタは、ディスク状の記憶装置における最小の記録単位である。パーティションの先頭位置は、先頭セクタで表され、最終位置は、最終セクタで表され、パーティションのサイズは、セクタ数で表される。パーティションの種類は、プライマリパーティションと拡張パーティションとがあり、プライマリパーティションは、起動可能なパーティションで、拡張パーティションは、起動できないパーティションである。ブートフラグは、起動可能か否かを示す情報で、例えばブート可を「1」とし、ブート不可を「0」とすることができる。
一般のPCと同様、起動部40は、起動時に機器に存在する全ての記憶装置を検出し、予め定められた優先順位に従って記憶装置のパーティションテーブルを調査し、ブート可能なパーティションがあれば、そのパーティションから起動する。本実施例では、記憶装置の優先順位が、テスト用記憶装置25、主記憶装置23の順になっている。このため、テスト用記憶装置25のパーティションテーブルを調査し、ブート可能なパーティションがあれば、そのパーティションから起動し、なければ、主記憶装置23のパーティションテーブルを調査する。
この第1の実施例では、2つの記憶装置しか存在しないため、2つの記憶装置のパーティションテーブルを調査している。しかしながら、記憶装置は3つ以上であってもよく、この場合も同様に優先順位に従って調査し、ブート可能なパーティションがあれば、そのパーティションから起動することができる。
変更部46は、テスト用記憶装置25のパーティションテーブルに含まれるパーティション情報の中で、ブートフラグが「1」に設定されているパーティション情報を探し、探したパーティション情報のブートフラグに「0」を書き込む。このようにすることで、テスト用記憶装置25のパーティションから起動することがなくなり、主記憶装置23から起動させることができる。
この処理を、図8を参照して詳細に説明する。ステップ800から処理を開始し、ステップ805では、1から順にi番目のパーティションを選択する。iは、自然数である。したがって、最初にこの処理を実行する場合は、1番目のパーティションを選択する。ステップ810では、i番目のパーティションのパーティション情報に含まれるブートフラグを読み出す。ステップ815では、ブートフラグが「1」かどうかを判断する。「1」であれば、ステップ820へ進み、「0」であれば、ステップ825へ進む。
ステップ820では、i番目のパーティション情報に含まれるブートフラグに「0」を書き込む。これにより、このパーティションは起動不可となる。ステップ825では、最終のパーティションかどうかを判断する。最終でない場合、ステップ830へ進み、i=i+1とし、ステップ805へ戻る。最終の場合は、ステップ835へ進み、この処理を終了する。
第1の実施例では、主記憶装置23から起動するか、テスト用記憶装置25から起動するかを判断するための起動情報として、MBRのパーティションテーブルに含まれる各パーティション情報のブートフラグを使用した。このように、記憶装置にMBRがあり、そのMBRにパーティションテーブルがあり、ブートフラグを参照するように構成されている場合は、ブートフラグを使用することができる。しかしながら、システム構成上、記憶装置にMBRがない場合や、パーティションテーブルがない場合や、ブートフラグを参照するように構成されていない場合は、ブートフラグを使用することはできない。
このような場合でも、どちらから起動するかを判断するために、起動用ROM21や主記憶装置23等、機器が常時備えている記憶装置の予め定められた箇所に起動情報を格納し、その情報に基づき起動することが可能である。
その例を第2の実施例として、図9を参照して説明する。図9は、主記憶装置23のデータ構造の一例を示した図である。主記憶装置23は、MBRと、2つのパーティションとを含み、パーティション2に起動情報が、起動情報格納ファイルとして格納されている。パーティション1は、システムプログラムが格納される場所とされる。また、テスト用記憶装置25のパーティション1にテスト用の各プログラムが格納されている。
起動情報は、「0」から「7」までのいずれかの値とされる。「0」は、主記憶装置23のパーティション1から起動することを示し、「1」は、主記憶装置23のパーティション2から起動することを示している。「2」は、主記憶装置23のパーティション3から起動することを示し、「3」は、主記憶装置23のパーティション4から起動することを示している。「4」は、テスト用記憶装置25のパーティション1から起動することを示し、「5」は、テスト用記憶装置25のパーティション2から起動することを示している。「6」は、テスト用記憶装置25のパーティション3から起動することを示し、「7」は、テスト用記憶装置25のパーティション4から起動することを示している。
図10を参照して、このデータ構造を使用して実行されるテスト準備について説明する。図10は、テスト準備の第2の実施例を示したシーケンス図である。起動部40は、起動時に主記憶装置23のパーティション2をマウントし、パーティション2に含まれるbootdeviceinfo.txtの内容を読み取る(図10S1)。bootdeviceinfo.txtには、上記の「0」から「7」までのいずれかの値が記述されている。
その内容が、第2の制御部42が存在することを示す情報でない場合、すなわち「4」でない場合、第2の制御部42が存在することを示す情報に変更して再起動する。具体的には、手動でbootdeviceinfo.txtに4を書き込み、再起動する(図10S2)。これに対し、「4」である場合、テスト用記憶装置25のパーティション1から起動し、第2の制御部42を起動する(図10S3)。第2の制御部42は、初期化処理を実行し(図10S4)、要求部43、処理部45、変更部46、起動指示部47を起動する(図10S5〜S8)。
要求部43は、配信サーバ11に対してシステムプログラムの配信を要求する(図10S9)。この時点では、ビルドサーバ12がビルドを実行し、ビルドサーバ12から配信サーバ11にビルドしたシステムプログラムを送信していないため、配信が不可である旨の応答を返す(図10S10)。これは、システムプログラムがビルドされ、配信サーバ11に送信されるまで繰り返される。
ビルドサーバ12は、定められた時期に、システムプログラムのビルドを実行する(図10S11)。ビルドサーバ12は、配信サーバ11に対してビルドしたシステムプログラムを送信する(図10S12)。要求部43は、配信サーバ11に対するシステムプログラムの配信の要求を繰り返し(図10S13)、配信サーバ11がシステムプログラムを保持している場合にそのシステムプログラムを配信する(図10S14)。
要求部43は、システムプログラムをダウンロードすると、ダウンロードが完了した旨を処理部45に対して通知する(図10S15)。処理部45は、そのシステムプログラムを記憶部44にインストールし(図10S16)、インストールが完了した旨を変更部46に通知する(図10S17)。この第2の実施例では、処理部45は、記憶部44としての主記憶装置23のパーティション1にインストールする。
変更部46は、接続部50に対し、主記憶装置23のパーティション2をマウントするように要求する(図10S18)。接続部50は、主記憶装置23のパーティション2をマウントし(図10S19)、そのマウントが完了した旨を変更部46に対して通知する(図10S20)。変更部46は、第1の制御部41を起動することを示す情報に変更するため、主記憶装置23のパーティション2のbootdeviceinfo.txtに「0」を書き込む(図10S21)。変更部46は、起動情報の変更が完了した旨を起動指示部47に通知する(図10S22)。
起動指示部47は、その通知を受けて、第2の制御部42に対して、現在動作中のテスト機器10の再起動を指示する(図10S23)。第2の制御部42は、その指示を受けて、終了処理を実行し、テスト機器10を再起動する(図10S24)。
図11を参照して、上記のデータ構造を使用して実行されるテストについて説明する。図11は、テストの第2の実施例を示したシーケンス図である。テスト機器10が再起動されると、起動部40は、起動時に主記憶装置23のパーティション2をマウントし、パーティション2に含まれるbootdeviceinfo.txtの内容を読み取る(図11S1)。bootdeviceinfo.txtには、上記の「0」から「7」までのいずれかの値が記述されている。
上記の変更部46による変更で、bootdeviceinfo.txtには「0」が書き込まれているため、主記憶装置23のパーティション1から起動し、第1の制御部41を起動する(図11S2)。第1の制御部41は、初期化処理を実行し(図11S3)、接続部50および試験指示部49を起動する(図11S4、S5)。接続部50は、上記の終了処理時にアンマウントされたテスト用記憶装置25をマウントし(図11S6)、そのマウントが完了した旨を試験指示部49に対して通知する(図11S7)。
試験指示部49は、テストプログラム39を実行し、システムプログラムの動作をテストするように指示する(図11S8)。実行部48は、試験指示部49によるテストプログラム39の実行によりシステムプログラムの動作をテストする(図11S9)。
第1の実施例では、テスト用記憶装置25のブートフラグを書き換え、テスト用記憶装置25には、起動可能なパーティションが存在しないことを示すように起動情報を変更した。これでは、テスト終了後に、別のシステムプログラムのテストに利用することはできない。テスト用記憶装置25のパーティション情報のブートフラグが全て「0」に書き換えられているからである。
この書き換えられる前の情報を保存しておき、テスト後にその情報に戻すことができれば、別のシステムプログラムのテストにも利用することが可能となる。そこで、第3の実施例では、書き換えられる前の情報を保存し、テスト終了後に、その情報に戻す処理を追加することができる。
図12は、テスト準備の第3の実施例を示したシーケンス図である。起動部40は、設定された起動情報に基づき、第2の制御部42を起動する(図12S1)。この第3の実施例では、テスト用記憶装置25がマウントされ、起動可能なパーティション情報が存在している。第2の制御部42は、初期化処理を実行し(図12S2)、要求部43、処理部45、変更部46、起動指示部47を起動する(図12S3〜S6)。
要求部43は、配信サーバ11に対してシステムプログラムの配信を要求する(図12S7)。この時点では、ビルドサーバ12がビルドを実行し、ビルドサーバ12から配信サーバ11にビルドしたシステムプログラムを送信していないため、配信が不可である旨の応答を返す(図12S8)。これは、システムプログラムがビルドされ、配信サーバ11に送信されるまで繰り返される。
ビルドサーバ12では、定められた時期に、システムプログラムのビルドを実行する(図12S9)。ビルドサーバ12は、配信サーバ11に対してビルドしたシステムプログラムを送信する(図12S10)。要求部43は、配信サーバ11に対するシステムプログラムの配信の要求を繰り返し(図12S11)、配信サーバ11がシステムプログラムを保持している場合にそのシステムプログラムを配信する(図12S12)。
要求部43は、システムプログラムをダウンロードすると、ダウンロードが完了した旨を処理部45に対して通知する(図12S13)。処理部45は、そのシステムプログラムを記憶部44にインストールし(図12S14)、その処理が完了した旨を変更部46に通知する(図12S15)。変更部46は、各記憶領域の情報、すなわちテスト用記憶装置25のパーティションテーブルのブートフラグの情報を記憶部44またはテスト用記憶装置25に保存する(図12S16)。
変更部46は、ブートフラグの情報を保存した後、テスト用記憶装置25の起動可能なパーティション情報を消去して、起動情報を変更する(図12S17)。変更部46は、起動情報の変更が完了した旨を起動指示部47に通知する(図12S18)。
起動指示部47は、その通知を受けて、第2の制御部42に対して、現在動作中のテスト機器10の再起動を指示する(図12S19)。第2の制御部42は、その指示を受けて、終了処理を実行し、テスト機器10を再起動する(図12S20)。
次に、図13を参照して、テスト機器10により実行されるテストについて説明する。図13は、テストの第3の実施例を示したシーケンス図である。テスト機器10が再起動されると、起動部40は、変更された起動情報に基づき、第1の制御部41を起動する(図13S1)。第1の制御部41は、初期化処理を実行し(図13S2)、接続部50および試験指示部49を起動する(図13S3、S4)。接続部50は、上記の終了処理時にアンマウントされたテスト用記憶装置25をマウントし(図13S5)、そのマウントが完了したことを試験指示部49に対して通知する(図13S6)。
試験指示部49は、テストプログラム39を実行し、システムプログラムの動作をテストするように指示する(図13S7)。実行部48は、試験指示部49によるテストプログラム39の実行によりシステムプログラムの動作をテストする(図13S8)。
この第3の実施例では、テスト機器10は、再変更部51をさらに備える。 実行部48は、テストが終了した旨を再変更部51に対して通知する(図13S9)。再変更部51は、テスト準備において保存されたブートフラグの情報を読み出し、テスト用記憶装置25のパーティションテーブルにその情報を書き込み(図13S10)、起動情報を変更する。再変更部51は、第1の制御部41に対して再起動を指示する(図13S11)。第1の制御部41は、その指示を受けて、終了処理を実行し、テスト機器10を再起動する(図13S12)。
これにより、次回の起動では、テスト用記憶装置25から起動されるので、再度のテスト準備を実行することができる。再度のテスト準備では、新しいシステムプログラムをダウンロードし、インストールすることができる。
これまでの実施例では、テスト用記憶装置25に予めテストプログラム39が格納されていたが、テストプログラム39は、システムプログラムの配信の要求を受けた際に、配信サーバ11がそれらを合わせて配信してもよい。このように、配信サーバ11にテストプログラム39を登録し、一緒に配信するように構成することで、毎回同じテスト(リグレッションテスト)を実行する場合の作業負担を軽減することができる。配信サーバ11にテストプログラム39を一度登録するだけでよいからである。
このようなテストプログラム39を合わせて配信する例を第4の実施例として、図14を参照して説明する。図14は、テスト準備の第4の実施例を示したシーケンス図である。予め配信サーバ11に実行したいテストプログラム39を登録しておく(図14S1)。起動部40は、設定された起動情報に基づき、第2の制御部42を起動する(図14S2)。この第4の実施例でも、テスト用記憶装置25がマウントされ、起動可能なパーティション情報が存在している。第2の制御部42は、初期化処理を実行し(図14S3)、要求部43、処理部45、変更部46、起動指示部47を起動する(図14S4〜S7)。
要求部43は、配信サーバ11に対してシステムプログラムの配信を要求する(図14S8)。この時点では、ビルドサーバ12がビルドを実行し、ビルドサーバ12から配信サーバ11にビルドしたシステムプログラムを送信していないため、配信が不可である旨の応答を返す(図14S9)。これは、システムプログラムがビルドされ、配信サーバ11に送信されるまで繰り返される。
ビルドサーバ12は、定められた時期に、システムプログラムのビルドを実行する(図14S10)。ビルドサーバ12は、配信サーバ11に対してビルドしたシステムプログラムを送信する(図14S11)。要求部43は、配信サーバ11に対するシステムプログラムの配信の要求を繰り返し(図14S12)、配信サーバ11がシステムプログラムを保持している場合に、そのシステムプログラムを登録されているテストプログラム39とともに配信する(図14S13)。
要求部43は、システムプログラムとテストプログラム39とをダウンロードすると、ダウンロードが完了した旨を処理部45に対して通知する(図14S14)。処理部45は、そのシステムプログラムを記憶部44にインストールし(図14S15)、テストプログラム39をテスト用記憶装置25に格納する(図14S16)。そして、処理部45は、インストールが完了した旨を変更部46に通知する(図14S17)。変更部46は、テスト用記憶装置25の起動可能なパーティション情報を消去して、起動情報を変更する(図14S18)。変更部46は、起動情報の変更が完了した旨を起動指示部47に通知する(図14S19)。
起動指示部47は、その通知を受けて、第2の制御部42に対して、現在動作中のテスト機器10の再起動を指示する(図14S20)。第2の制御部42は、その指示を受けて、終了処理を実行し、テスト機器10を再起動する(図14S21)。
次に、図15を参照して、テスト機器10により実行されるテストについて説明する。図15は、テストの第4の実施例を示したシーケンス図である。テスト機器10が再起動されると、起動部40は、変更された起動情報に基づき、第1の制御部41を起動する(図15S1)。第1の制御部41は、初期化処理を実行し(図15S2)、接続部50および試験指示部49を起動する(図15S3、S4)。接続部50は、上記の終了処理時にアンマウントされたテスト用記憶装置25をマウントし(図15S5)、そのマウントが完了したことを試験指示部49に対して通知する(図15S6)。
試験指示部49は、配信サーバ11からダウンロードしたテストプログラム39を実行し、システムプログラムの動作をテストするように指示する(図15S7)。実行部48は、試験指示部49によるテストプログラム39の実行によりシステムプログラムの動作をテストする(図15S8)。
これまでの例では、テスト用記憶装置25にテスト実行プログラム38およびテストプログラム39を配信サーバ11からダウンロードし、テスト実行時に、テスト用記憶装置25にマウントし、テスト実行プログラム38およびテストプログラム39を実行した。しかしながら、テスト用記憶装置25にダウンロードしなくても、配信サーバ11のそれらのプログラムが格納されたディレクトリにマウントすれば、配信サーバ11上のそれらプログラムを直接実行することができる。
この場合のソフトウェアの配置例を図16に示す。図3と同じプログラムを備えるが、テスト実行プログラム38とテストプログラム39が、テスト用記憶装置25ではなく、配信サーバ11に配置されている。
図16に示す例での処理は、上記と同様にして、システムプログラムをダウンロードし、インストールしてテスト機器10の起動情報を変更する。テスト機器10の起動後、マウント用プログラム32によってテスト用記憶装置25ではなく、配信サーバ11上のテスト実行プログラム38およびテストプログラム39が格納されたディレクトリへのマウントを実施する。マウント後、テスト指示プログラム33によりテスト実行プログラム38を実行し、テストプログラム39を実行して、システムプログラムの動作をテストする。
テスト実行プログラム38およびテストプログラム39が格納されるディレクトリは、例えば「/opt/test/’テスト機器名称’」とされる。テスト機器名称は、配信サーバ11上でディレクトリ名称として有効なテスト機器(機種)を一意に識別する名称を使用する。例えば、テスト機器10の名称を「Vesta_P1」とすると、ディレクトリは「/opt/test/Vesta_P1」となる。
テスト実行プログラム38は、図17に示すように、「Vista_P1」をルートノードとして、このルートノードに直接繋がる子ノードの位置に配置される。テストプログラム39は、このディレクトリ内であれば、任意の位置に配置することができる。図17では、テスト実行プログラム38が「run_test」として配置され、テストプログラム39が、例えば「test01」等として配置される。
図18を参照して、テスト機器10により実行されるテストについて説明する。図18は、配信サーバ11上のディレクトリにマウントして、テストを実行する第5の実施例を示したシーケンス図である。テスト機器10が再起動されると、起動部40は、変更された起動情報に基づき、第1の制御部41を起動する(図18S1)。第1の制御部41は、初期化処理を実行し(図18S2)、接続部50および試験指示部49を起動する(図18S3、S4)。接続部50は、テスト実行プログラム38およびテストプログラム39が格納されたディレクトリをネットワークファイルシステムとして、テスト機器10からアクセスできるようにマウントする (図18S5)。そのマウントが完了したことを試験指示部49に対して通知する(図18S6)。
試験指示部49は、配信サーバ11上のマウントしたディレクトリに格納されたテストプログラム39を実行し、システムプログラムの動作をテストするように指示する(図18S7)。実行部48は、試験指示部49によるテストプログラム39の実行によりシステムプログラムの動作をテストする(図18S8)。
なお、ネットワークファイルシステムの形式としては、NFS(Network File System)、SMBFS(Server Message Block File System)、CIFS(Common Internet File System)等を利用することができる。このネットワークファイルシステムを利用する場合、配信サーバ11上のテスト実行プログラム38およびテストプログラム39は、テスト機器10上のシステムの「/mnt/test」というディレクトリにマウントされる。そして、テスト実行プログラム38は「/mnt/test/run_test」、テストプログラム39は「/mnt/test/case001/test001」のように参照することができるようになる。
以上のように、外部記憶装置としてのテスト用記憶装置25を取り外さなくても、テスト機器10を再起動し、インストールしたシステムプログラムの動作をテストすることができる。これにより、電源を切断することを含むシステムプログラムのインストール開始からテストの実施までの間、人の手を介さず、自動化することができるので、ヒューマンエラーの発生を防止することができる。また、人の手を介さないので、テスト終了までにかかる時間を短縮することができ、システムプログラムの開発の効率を向上させることができる。
ところで、テストプログラム39の実行により実施されるテストには、複数のテスト項目が含まれる。テスト機器10をMFPとした場合、テスト項目としては、MFP内の各デバイスに対して設定する初期値が正しく設定されているか、各デバイスが正しく動作するか、デバイス間が正しく接続されているか等を挙げることができる。例えば、接続が正しいかどうかは、相手に何らかの信号を送信し、相手から応答があるかどうかにより確認することができる。正しく動作するかどうかは、特定の動作をさせるための信号を与えて、その通りに動作するかどうかにより確認することができる。なお、ここで例示した項目は一例であるので、これらの項目に限られるものではない。
テストを実施すると、そのテストが成功か失敗か、失敗した場合、どの項目が失敗したかというテスト結果が得られる。しかしながら、このテスト結果からは、その失敗の原因が分からない。これでは、開発者が、失敗した項目をどのように修正すればよいかが分からない。
システムプログラムは、開発者が適宜修正し、改訂(バージョンアップ)されていく。ある程度の期間や修正が終わったところで、一般ユーザに提供(リリース)することになる。リリースする版(バージョン)は、最新のバージョンであり、その最新のバージョンのシステムプログラムが、テストプログラム39によりテストされる。このため、前回リリースされたバージョンから今回リリースする最新のバージョンまでのシステムプログラムでテストを行えば、どの段階で失敗したかが分かり、どのように修正すればよいかが分かる。すなわち、失敗する前の成功したバージョンの内容に戻せばよい。
そこで、テスト機器10は、図19に示すような機能構成とすることができる。図19に示す機能構成は、図4に示す機能構成とほぼ同様であるが、上記の接続部50、再変更部51に加えて、第2の記憶部52をさらに含んで構成される。接続部50および再変更部51を含め、第2の記憶部52以外の機能部については既に説明したので、第2の記憶部52と各機能部において実行する処理が相違する部分についてのみ説明する。
実行部48は、テストの実行に加えて、テスト結果を第2の記憶部52に記憶させ、テストが失敗した場合に、要求部43が1つ前のバージョンのシステムプログラムのダウンロードするようにそのバージョンの情報も記憶させる。
テスト結果は、テスト項目と、成功したバージョンの情報(例えば番号)や失敗を表す情報(例えば「×」)等を含み、失敗した項目を特定することができるようにし、どのバージョンで成功したかが分かるようにする。
実行部48は、上記と同様、テストが終了した旨を再変更部51に対して通知し、再変更部51が、保存されたブートフラグの情報を読み出し、テスト用記憶装置25のパーティションテーブルにその情報を書き込み、起動情報を変更する。すなわち、再変更部51は、再起動により再度第2の制御部42を起動させるように起動情報を変更する。そして、再変更部51は、第1の制御部41に対して再起動を指示し、第1の制御部41がテスト機器10を再起動する。
起動部40が変更された起動情報に基づき、第2の制御部42を起動し、第2の制御部42が要求部43等を起動する。要求部43は、第2の記憶部52に記憶されたバージョンの情報を参照し、そのバージョンのシステムプログラムを、配信サーバ11に対して要求する。第2の記憶部52にバージョン情報が記憶されていない場合、要求部43は、最新のバージョンのシステムプログラムの配信を要求することができる。
第2の記憶部52は、テスト用記憶装置25が備えていてもよいし、テストログサーバ等の他の装置が備えていてもよい。テストログサーバは、テストした履歴(ログ)を記憶し、管理するためのサーバである。ログには、テストを開始した時刻、終了した時刻、システムプログラムのバージョン、成功か失敗か等の情報が含まれる。
図20を参照して、システムプログラムのバージョンについて説明する。システムプログラムのリリースのバージョンをN-4、N-3、N-2、N-1、Nで表し、開発者がシステムプログラムの修正等により改訂した回数を表すバージョンを1、2、3、…で表すものとする。開発者の改訂毎にリリースされるものではないため、リリースのバージョンと改訂回数を表すバージョンとは必ずしも一致しない。
図20に示す例では、最新のリリースのバージョンは、Ver.Nで、改訂回数を表すバージョンは、Ver.15である。前回のリリース(Ver.N-1)から今回のリリース(Ver.N)までに3回改訂されており、それが、Ver.13、Ver.14、Ver.15となっている。改訂の内容は、例えばOSの変更等が挙げられる。
失敗の原因が何であるかは、最新のバージョンから1つずつ戻ってテストを繰り返し、どのバージョンで成功するかを調べることにより把握することができる。以下、単にバージョンというときは、改訂回数を表すバージョンとして説明する。
テスト機器10で行われるテスト後の処理の詳細について、図21を参照して説明する。既に最新のバージョンのシステムプログラムがインストールされ、そのテストが行われているものとする。以下、最新のバージョンをVer.15とし、テスト項目がテスト1〜テスト7までの7項目あるものとして説明する。
ステップ2100から処理を開始し、ステップ2105では、実行部48が、テスト結果を第2の記憶部52に記憶させる。テスト結果は、図22に示すような、テスト項目と、成功の場合のバージョンの番号または失敗を表す記号「×」とを含むことができる。図22では、最新のバージョン(Ver.15)でテストした結果を、図22(a)に示し、1つ前のバージョン(Ver.14)でテストした結果を、図22(b)に示し、さらに1つ前のバージョン(Ver.13)でテストした結果を、図22(c)に示している。例えば、図22(c)のテスト結果は、テスト1、2、4、5は、Ver.15で成功、テスト3は、Ver.15では失敗したが、Ver.14で成功、テスト6は、Ver.15、Ver14では失敗したが、Ver.13で成功したことを示している。なお、テスト7は、Ver.15、Ver.14、Ver.13のいずれも失敗したことを示している。
再び図21を参照して、ステップ2110では、実行部48が、テスト結果から失敗した項目があるかを判断する。実行部48は、第2の記憶部52に記憶したテスト結果を参照し、いずれかの項目に「×」が存在するか否かにより、失敗した項目があるかを判断することができる。失敗した項目が1つでもある場合、ステップ2115へ進み、今回テストしたシステムプログラムのバージョンの1つ前のバージョンの情報を第2の記憶部52に記憶させる。そして、ステップ2120で、実行部48は、テストが終了した旨を再変更部51に対して通知する。
ステップ2125では、再変更部51が、保存されたブートフラグの情報を読み出し、テスト用記憶装置25のパーティションテーブルにその情報を書き込み、起動情報を変更する。再変更部51は、現在テスト機器10を制御している第1の制御部41に対して再起動を指示する。
ステップ2130では、第1の制御部41がテスト機器10を再起動し、起動部40が変更された起動情報に基づき、第2の制御部42を起動し、要求部43等を起動する。ステップ2135では、要求部43が、第2の記憶部52に記憶されたバージョンの情報を参照し、配信サーバ11に対してそのバージョンのシステムプログラムを要求し、ダウンロードする。ステップ2140では、処理部45が、取得したシステムプログラムを記憶部44にインストールする。
ステップ2145では、変更部46が、テスト用記憶装置25のパーティションテーブルのブートフラグの情報を、記憶部44またはテスト用記憶装置25が備える第2の記憶部52に保存する。変更部46は、テスト用記憶装置25の起動可能なパーティション情報を消去して、起動情報を変更する。そして、起動指示部47が、現在テスト機器10を制御している第2の制御部42に対して再起動を指示する。
ステップ2150では、第2の制御部42がテスト機器10を再起動し、起動部40が変更された起動情報に基づき、第1の制御部41を起動し、接続部50や試験指示部49を起動し、実行部48に対してテストを指示する。ステップ2155では、実行部48が、第2の記憶部52に記憶されたテスト結果を参照し、失敗した項目につき、テストを実行する。テストが終了したところで、ステップ2105へ戻る。
一方、ステップ2110で、失敗した項目がないと判断した場合、ステップ2160へ進み、この処理を終了する。
これまでに説明してきた処理では、テスト項目の全てが成功するまで1つ前のバージョンをダウンロードし、テストを繰り返すものとなっている。しかしながら、前回リリースしたバージョンは、既にテスト済みであることから、テストしても無駄になる。したがって、前回リリースしたときのバージョンのシステムプログラムをダウンロードする前に、テストを終了することが望ましい。
これを実現するための第1の例は、前回リリースしたシステムプログラムの改訂回数を表すバージョン(図20の例では「12」)を、配信サーバ11から取得することである。そのバージョンが分かっていれば、ダウンロードすることなく、テストを終了する(テストの終了条件とする)ことができるからである。
配信サーバ11は、システムプログラムをリリースしたときのバージョンを記録しており、テスト機器10からの要求を受けて、または最新のバージョンをダウンロードするとき等に、前回リリースしたときのバージョンの情報を、テストを行うバージョンの範囲を定める情報として通知することができる。テストを行うバージョン範囲は、インストール済みのシステムプログラムの1つ前のバージョンをスタート(開始対象となる版)、前回リリースしたバージョンをエンド(終了条件となる版)として設定することができる。
前回リリースしたときのバージョンのシステムプログラムをダウンロードする前に、テストを終了することができれば、そのバージョンの情報に限られるものではない。例えば、前回リリースしたバージョンより後のバージョンがいくつあるかという改訂回数の情報であってもよい。図20に示す例でいえば、前回のリリース時のバージョンがVer.12であり、その後は、Ver.13、Ver.14、Ver.15と3つあるため、3という情報を通知することができる。
前回リリースしたときのバージョンの情報や改訂回数の情報を要求する場合、要求部43がシステムプログラムの要求とともに要求することができる。要求部43は、システムプログラムの要求と同時ではなく、起動中の任意の時点でその情報を要求してもよい。
図23を参照して、この場合のテスト機器10で行われるテスト後の処理について説明する。ステップ2300から処理を開始し、ステップ2305では、実行部48が、テスト結果を第2の記憶部52に記憶する。
ステップ2310では、実行部48が、テスト結果から失敗した項目があるかを判断する。失敗した項目が1つでもある場合、ステップ2315へ進み、1つ前のバージョンの情報を第2の記憶部52に記憶させる。1つ前のバージョンは、2回目のテスト対象となるバージョンであるため、改訂回数に基づき判断する場合には、その回数の情報も記憶させることができる。そして、ステップ2320で、実行部48は、テストが終了した旨を再変更部51に対して通知する。
ステップ2325では、再変更部51が、保存されたブートフラグの情報を読み出し、テスト用記憶装置25のパーティションテーブルにその情報を書き込み、起動情報を変更する。再変更部51は、現在テスト機器10を制御している第1の制御部41に対して再起動を指示する。
ステップ2330では、第1の制御部41がテスト機器10を再起動し、起動部40が変更された起動情報に基づき、第2の制御部42を起動し、要求部43等を起動する。ステップ2335では、要求部43が、第2の記憶部52に記憶されたバージョンの情報(インストール済みの1つ前以降のシステムプログラムのバージョン情報。図20の例では「14」→「13」→「12」)を、取得したバージョンの情報(終了条件として取得したシステムプログラムのバージョン情報。図20の例では「12」)と比較し、同じバージョンであるかどうかを判断する。改訂回数に基づき判断する場合は、第2の記憶部52に記憶された回数の情報を、取得した改訂回数の情報と比較し、同じ回数かどうかを判断する。
同じバージョンまたは同じ回数でない場合は、ステップ2340へ進み、要求部43は、配信サーバ11に対して第2の記憶部52に記憶されたバージョンのシステムプログラムを要求し、ダウンロードする。ステップ2345では、処理部45が、取得したシステムプログラムを記憶部44にインストールする。
ステップ2350では、変更部46が、テスト用記憶装置25のパーティションテーブルのブートフラグの情報を、記憶部44またはテスト用記憶装置25が備える第2の記憶部52に保存する。変更部46は、テスト用記憶装置25の起動可能なパーティション情報を消去して、起動情報を変更する。そして、起動指示部47が、現在テスト機器10を制御している第2の制御部42に対して再起動を指示する。
ステップ2355では、第2の制御部42がテスト機器10を再起動し、起動部40が変更された起動情報に基づき、第1の制御部41を起動し、接続部50や試験指示部49を起動し、実行部48に対してテストを指示する。ステップ2360では、実行部48が、第2の記憶部52に記憶されたテスト結果を参照し、失敗した項目につき、テストを実行する。テストが終了したところで、ステップ2305へ戻る。
一方、ステップ2310で、失敗した項目がないと判断した場合、ステップ2335で、同じバージョンまたは同じ回数である場合、ステップ2365へ進み、この処理を終了する。
ここでは、再起動後に要求部43が判断しているが、要求部43が第2の記憶部52にバージョン情報または改訂回数の情報を記憶しておき、実行部48が、今回テストしたバージョンの1つ前のバージョンまたはテストした回数の情報と、第2の記憶部52に記憶されたバージョンまたは改訂回数の情報とを比較し、判断してもよい。この方が、再起動する手間を省略できるので望ましい。
第2の例は、テスト機器10が前回リリースしたバージョンのシステムプログラムを要求してきたとき、配信サーバ11がそのシステムプログラムを配信せず、エラーを返すことである。エラーが返されれば、テスト機器10は、そのシステムプログラムをダウンロードすることができず、テストが終了することになるからである。
この場合、要求部43がシステムプログラムを要求し、配信サーバ11からシステムプログラムではなく、エラー通知を受け付けることなる。
図24を参照して、この場合のテスト機器10で行われるテスト後の処理について説明する。ステップ2400から処理を開始し、ステップ2405では、実行部48が、テスト結果を第2の記憶部52に記憶する。
ステップ2410では、実行部48が、テスト結果から失敗した項目があるかを判断する。失敗した項目が1つでもある場合、ステップ2415へ進み、実行部48は、1つ前のバージョンの情報を第2の記憶部52に記憶させる。そして、ステップ2420で、実行部48は、テストが終了した旨を再変更部51に対して通知する。
ステップ2425では、再変更部51が、保存されたブートフラグの情報を読み出し、テスト用記憶装置25のパーティションテーブルにその情報を書き込み、起動情報を変更する。再変更部51は、現在テスト機器10を制御している第1の制御部41に対して再起動を指示する。
ステップ2430では、第1の制御部41がテスト機器10を再起動し、起動部40が変更された起動情報に基づき、第2の制御部42を起動し、要求部43等を起動する。ステップ2435では、要求部43が、第2の記憶部52に記憶されたバージョンの情報を参照し、配信サーバ11に対して第2の記憶部52に記憶されたバージョンのシステムプログラムを要求する。ステップ2440では、要求部43が、要求したシステムプログラムを取得できたかどうかを判断する。
要求部43が、要求したシステムプログラムを取得できた場合、ステップ2445へ進み、処理部45が、取得したシステムプログラムを記憶部44にインストールする。
ステップ2450では、変更部46が、テスト用記憶装置25のパーティションテーブルのブートフラグの情報を、記憶部44またはテスト用記憶装置25が備える第2の記憶部52に保存する。変更部46は、テスト用記憶装置25の起動可能なパーティション情報を消去して、起動情報を変更する。そして、起動指示部47が、現在テスト機器10を制御している第2の制御部42に対して再起動を指示する。
ステップ2455では、第2の制御部42がテスト機器10を再起動し、起動部40が変更された起動情報に基づき、第1の制御部41を起動し、接続部50や試験指示部49を起動し、実行部48に対してテストを指示する。ステップ2460では、実行部48が、第2の記憶部52に記憶されたテスト結果を参照し、失敗した項目につき、テストを実行する。テストが終了したところで、ステップ2405へ戻る。
一方、ステップ2410で、失敗した項目がないと判断した場合、ステップ2440で、エラーが返され、要求したシステムプログラムを取得できなかった場合、ステップ2465へ進み、この処理を終了する。
このような構成を採用し、システムプログラムの開発者が、テスト用記憶装置25をテスト機器10から取り外し、開発者のPC等に接続し、テスト結果を確認することで、どの項目をどのように修正すればよいかを把握することが可能となる。
これまで本発明を、テスト機器10としての情報処理装置、情報処理システムおよびコンピュータプログラムとして上述した実施の形態をもって説明してきたが、本発明は上述した実施の形態に限定されるものではない。本発明は、他の実施の形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
したがって、図3に示した各種のプログラムは、インストール可能な形式または実行可能な形式のファイルでフロッピー(登録商標)ディスク、SDメモリカード(SD Memory Card)、USBメモリ(Universal Serial Bus Memory)等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成することができる。また、上記のプログラムは、インターネット等のネットワーク経由で提供または配布するように構成されていてもよい。さらに、上記のプログラムを他の各種ソフトウェアとともにROM等に予め組み込んで提供するように構成してもよい。
上記の実施形態では、上記の各機能部は、CPU20が主記憶装置23やテスト用記憶装置25に格納されたプログラムを読み出して実行することにより、各機能部を実現するプログラムがRAM22上にロードされ、上記の各機能部が生成されている。しかしながら、これに限られるものではなく、例えば各機能部のうちの少なくとも一部が専用のハードウェア回路(例えば半導体集積回路)で実現されていてもよい。
10…テスト機器、11…配信サーバ、12…ビルドサーバ、13…ネットワーク、20…CPU、21…起動用ROM、22…RAM、23…主記憶装置、24…リムーバブルメディアスロット、25…テスト用記憶装置、26…ネットワークコントローラ、27…ネットワークI/F、30…起動プログラム、31…OS、32…マウント用プログラム、33…テスト指示プログラム、34…OS、35…ダウンローダ、36…インストーラ、37…起動情報変更プログラム、38…テスト実行プログラム、39…テストプログラム、40…起動部、41…第1の制御部、42…第2の制御部、43…要求部、44…記憶部、45…処理部、46…変更部、47…起動指示部、48…実行部、49…試験指示部、50…接続部、51…再変更部、52…第2の記憶部
Claims (16)
- 情報処理装置であって、
設定された起動情報に基づき、前記情報処理装置が備える第1の制御部または該情報処理装置に接続される記憶装置に格納されたプログラムより実現される第2の制御部を起動する起動部と、
前記起動情報に基づき、前記起動部により前記第2の制御部が起動された場合に、前記情報処理装置を動作させるために導入すべきシステムプログラムを保持する配信装置に対し、該システムプログラムの配信を要求する要求部と、
前記要求部による要求に応じて、前記配信装置から配信された前記システムプログラムを、前記情報処理装置が備える記憶部に記憶させる処理部と、
前記起動情報を変更する変更部と、
前記第2の制御部に対して起動中の前記情報処理装置を再起動するように指示する起動指示部と、
前記変更部により変更された起動情報に基づき、前記起動部により前記第1の制御部が起動された場合に、前記システムプログラムの動作を試験するためのテストプログラムを実行する試験指示部と、
前記試験指示部による前記テストプログラムの実行により前記動作の試験を実行する実行部とを含む、情報処理装置。 - 前記起動情報は、前記第2の制御部が存在するか否かを示す情報であり、前記起動部は、存在する場合、前記第2の制御部を起動し、存在しない場合、前記第1の制御部を起動する、請求項1に記載の情報処理装置。
- 前記変更部は、前記起動情報を、前記第2の制御部が存在することを示す情報から前記第2の制御部が存在しないことを示す情報に変更する、請求項2に記載の情報処理装置。
- 前記起動部は、前記起動情報を参照し、前記第2の制御部が存在することを示す情報でない場合、前記第2の制御部が存在することを示す情報に変更して再起動し、
前記変更部は、前記処理部が前記配信装置から配信された前記システムプログラムを前記記憶部に記憶させた後、前記起動情報を、前記第1の制御部を起動することを示す情報に変更する、請求項1に記載の情報処理装置。 - 前記記憶装置は、複数の記憶領域に分割され、各記憶領域により1以上の前記第2の制御部を実現することが可能であり、
前記起動部は、設定された優先順位に従って前記1以上の第2の制御部のうちの1つを起動し、
前記変更部は、前記起動情報として、前記1以上の第2の制御部が存在することを示す記憶領域の情報を前記1以上の第2の制御部が存在しないことを示す記憶領域の情報に変更する前に、前記各記憶領域の情報を前記記憶部または前記記憶装置に記憶させ、
前記情報処理装置は、前記試験の実行が終了した後、前記記憶部または前記記憶装置から前記各記憶領域の情報を読み出し、前記起動情報を、前記1以上の第2の制御部が存在することを示す記憶領域の情報に再度変更する再変更部をさらに備える、請求項1に記載の情報処理装置。 - 前記情報処理装置の再起動の際に接続が切断された前記記憶装置を接続する接続部をさらに含む、請求項1〜5のいずれか1項に記載の情報処理装置。
- 前記処理部は、前記配信装置から前記システムプログラムとともに配信された前記試験指示部が実行する前記テストプログラムを、前記記憶装置に記憶させる、請求項1〜6のいずれか1項に記載の情報処理装置。
- 前記配信装置を接続する接続部を含み、
前記接続部により前記配信装置に接続した後、前記試験指示部が、前記配信装置上の前記テストプログラムを実行する、請求項1〜5のいずれか1項に記載の情報処理装置。 - 前記情報処理装置は、再起動により再度前記第2の制御部を起動させるように前記起動情報を変更する再変更部と、第2の記憶部とを含み、
前記システムプログラムは、改訂が行われ、前記配信装置は、複数の版のシステムプログラムを保持しており、
前記実行部は、前記システムプログラムの試験結果が失敗である場合に、該システムプログラムの1つ前の版の情報を前記第2の記憶部に記憶させ、
前記要求部は、前記第2の記憶部に記憶された前記版の情報を参照し、前記版のシステムプログラムの配信を前記配信装置に対して要求する、請求項1に記載の情報処理装置。 - 前記要求部は、前記第2の記憶部に前記版の情報が記憶されていない場合、最新の版のシステムプログラムの配信を前記配信装置に対して要求する、請求項9に記載の情報処理装置。
- 前記試験は、複数の試験項目を有し、
前記実行部は、各試験項目につき、試験が成功したシステムプログラムの版を対応付けた試験結果を、前記第2の記憶部に記憶させる、請求項9に記載の情報処理装置。 - 前記要求部は、前記試験を行う前記版の試験開始対象と終了条件を含む範囲を定める情報を前記配信装置から取得し、取得した前記版の範囲を定める情報に基づき、前記版のシステムプログラムを前記配信装置に対して要求するか否かを判断する、請求項9に記載の情報処理装置。
- 前記要求部は、前記配信装置から要求したシステムプログラムを取得できたか否かを判断する、請求項9に記載の情報処理装置。
- 情報処理装置と、該情報処理装置とネットワークを介して接続可能な配信装置とを備える情報処理システムであって、
前記情報処理装置は、
設定された起動情報に基づき、前記情報処理装置が備える第1の制御部または該情報処理装置に接続される記憶装置に格納されたプログラムより実現される第2の制御部を起動する起動部と、
前記起動情報に基づき、前記起動部により前記第2の制御部が起動された場合に、前記情報処理装置を動作させるために導入すべきシステムプログラムを保持する配信装置に対し、該システムプログラムの配信を要求する要求部と、
前記要求部による要求に応じて、前記配信装置から配信された前記システムプログラムを、前記情報処理装置が備える記憶部に記憶させる処理部と、
前記起動情報を変更する変更部と、
前記第2の制御部に対して起動中の前記情報処理装置を再起動するように指示する起動指示部と、
前記変更部により変更された起動情報に基づき、前記起動部により前記第1の制御部が起動された場合に、前記システムプログラムの動作を試験するためのテストプログラムを実行する試験指示部と、
前記試験指示部による前記テストプログラムの実行により前記動作の試験を実行する実行部とを含む、情報処理システム。 - 情報処理装置を動作させるために導入されるシステムプログラムの動作を試験する処理をコンピュータに実行させるためのコンピュータプログラムであって、
設定された起動情報に基づき、前記情報処理装置が備える第1の制御部または該情報処理装置に接続される記憶装置に格納されたプログラムより実現される第2の制御部を起動するステップと、
前記起動するステップで前記起動情報に基づき前記第2の制御部が起動された場合に、前記システムプログラムを保持する配信装置に対し、該システムプログラムの配信を要求するステップと、
前記配信装置から配信された前記システムプログラムを、前記情報処理装置が備える記憶部に記憶するステップと、
前記第1の制御部を起動するように前記起動情報を変更するステップと、
前記起動情報が変更された後、前記第2の制御部に対して起動中の前記情報処理装置を再起動するように指示するステップと、
前記情報処理装置を再起動するステップと、
変更された前記起動情報に基づき、前記第1の制御部を起動するステップと、
前記システムプログラムの動作を試験するためのテストプログラムを実行するステップと、
前記テストプログラムの実行により前記動作の試験を実行するステップとを実行させる、コンピュータプログラム。 - 情報処理装置を動作させるために導入されるシステムプログラムの動作を試験する、該情報処理装置により実行される方法であって、
設定された起動情報に基づき、前記情報処理装置が備える第1の制御部または該情報処理装置に接続される記憶装置に格納されたプログラムより実現される第2の制御部を起動するステップと、
前記起動するステップで前記起動情報に基づき前記第2の制御部が起動された場合に、前記システムプログラムを保持する配信装置に対し、該システムプログラムの配信を要求するステップと、
前記配信装置から配信された前記システムプログラムを、前記情報処理装置が備える記憶部に記憶するステップと、
前記第1の制御部を起動するように前記起動情報を変更するステップと、
前記起動情報が変更された後、前記第2の制御部に対して起動中の前記情報処理装置を再起動するように指示するステップと、
前記情報処理装置を再起動するステップと、
変更された前記起動情報に基づき、前記第1の制御部を起動するステップと、
前記システムプログラムの動作を試験するためのテストプログラムを実行するステップと、
前記テストプログラムの実行により前記試験を実行するステップとを含む、方法。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015240936 | 2015-12-10 | ||
JP2015240936 | 2015-12-10 | ||
JP2016165732 | 2016-08-26 | ||
JP2016165732 | 2016-08-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018037052A true JP2018037052A (ja) | 2018-03-08 |
Family
ID=61567474
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016191084A Pending JP2018037052A (ja) | 2015-12-10 | 2016-09-29 | 情報処理装置、情報処理システム、コンピュータプログラムおよび方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2018037052A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113971120A (zh) * | 2020-07-22 | 2022-01-25 | 北京奇虎科技有限公司 | 线上接口的测试方法、电子设备、存储介质及装置 |
WO2024070617A1 (ja) * | 2022-09-28 | 2024-04-04 | 株式会社オートネットワーク技術研究所 | 情報処理システムおよび情報処理方法 |
WO2024176364A1 (ja) * | 2023-02-21 | 2024-08-29 | オーティファイ株式会社 | テスト支援システム、テスト支援方法及びプログラム |
-
2016
- 2016-09-29 JP JP2016191084A patent/JP2018037052A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113971120A (zh) * | 2020-07-22 | 2022-01-25 | 北京奇虎科技有限公司 | 线上接口的测试方法、电子设备、存储介质及装置 |
WO2024070617A1 (ja) * | 2022-09-28 | 2024-04-04 | 株式会社オートネットワーク技術研究所 | 情報処理システムおよび情報処理方法 |
WO2024176364A1 (ja) * | 2023-02-21 | 2024-08-29 | オーティファイ株式会社 | テスト支援システム、テスト支援方法及びプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI578233B (zh) | 統一韌體管理系統、非揮發電腦可讀取媒體以及統一韌體管理方法 | |
TW454147B (en) | Recoverable software installation process and apparatus for a computer system | |
TWI386847B (zh) | 可安全復原的韌體更新方法及可安全復原之韌體更新的嵌入式電子裝置 | |
US11216266B2 (en) | Information processing apparatus and firmware updating method | |
JP5491675B2 (ja) | 情報処理装置及び情報処理装置制御方法 | |
JP5333579B2 (ja) | 管理サーバ、ブートサーバ、ネットワークブートシステムおよびネットワークブート方法 | |
US9348578B2 (en) | Information processing apparatus capable of updating firmware, control method therefor, and storage medium storing control program therefor | |
JP2011053817A (ja) | 情報処理装置 | |
US10747523B2 (en) | Methods of updating firmware components, computer systems and memory apparatus | |
JP2010088825A (ja) | ゲーム装置および情報処理装置 | |
CN110851154B (zh) | 用于更新只读存储器编码的计算机实施方法、系统及介质 | |
JP2018037052A (ja) | 情報処理装置、情報処理システム、コンピュータプログラムおよび方法 | |
JPWO2019207729A1 (ja) | 産業用コンピュータ、産業用コンピュータシステム、オペレーティングシステム更新方法及びプログラム | |
US20190265964A1 (en) | Electronic apparatus, updating method, and recording medium | |
JP6515462B2 (ja) | 情報処理装置、情報処理装置の設定方法及び設定プログラム | |
JP2015060411A (ja) | 情報処理装置のファームウェア更新方法 | |
JP6192089B2 (ja) | 情報処理装置、情報処理装置の制御方法及び制御プログラム | |
US9940334B2 (en) | Image forming apparatus and control method thereof | |
JP2018045725A (ja) | 情報処理装置及びその制御方法、並びにプログラム | |
US10554841B2 (en) | Image forming apparatus, control method thereof and medium | |
US12105790B2 (en) | Information processing apparatus, method, and program storage medium | |
TWI839136B (zh) | 基板管理控制器的下游裝置的韌體更新方法 | |
JP7529097B2 (ja) | 処理装置及びプログラム | |
JP2014021540A (ja) | ディジタルシグナルプロセッサシステム、ディジタルシグナルプロセッサシステム起動装置およびディジタルシグナルプロセッサのブート方法 | |
JP2006126987A (ja) | 画像処理装置 |