(57)【要約】      （修正有）【課題】外部記憶装置を取り外さなくても、機器を再起動し、テストを実行することができる装置等を提供する。【解決手段】情報処理装置（テスト機器１０）は、設定された起動情報に基づき、第１の制御部４１または情報処理装置に接続される記憶装置に格納されたプログラムより実現される第２の制御部４２を起動する起動部４０と、第２の制御部が起動された場合に、配信装置に対しシステムプログラムの配信を要求する要求部４３と、要求に応じて配信装置から配信されたシステムプログラムを記憶部４４に記憶させる処理部４５と、設定された起動情報を変更する変更部４６と、第２の制御部に対して情報処理装置を再起動するように指示する起動指示部４７と、変更された起動情報に基づき第１の制御部が起動された場合に、システムプログラムを試験するためのテストプログラムを実行するよう指示する試験指示部４９と、試験を実行する実行部４８とを含む。【選択図】図４
2018037052.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置であって、
設定された起動情報に基づき、前記情報処理装置が備える第１の制御部または該情報処理装置に接続される記憶装置に格納されたプログラムより実現される第２の制御部を起動する起動部と、
前記起動情報に基づき、前記起動部により前記第２の制御部が起動された場合に、前記情報処理装置を動作させるために導入すべきシステムプログラムを保持する配信装置に対し、該システムプログラムの配信を要求する要求部と、
前記要求部による要求に応じて、前記配信装置から配信された前記システムプログラムを、前記情報処理装置が備える記憶部に記憶させる処理部と、
前記起動情報を変更する変更部と、
前記第２の制御部に対して起動中の前記情報処理装置を再起動するように指示する起動指示部と、
前記変更部により変更された起動情報に基づき、前記起動部により前記第１の制御部が起動された場合に、前記システムプログラムの動作を試験するためのテストプログラムを実行する試験指示部と、
前記試験指示部による前記テストプログラムの実行により前記動作の試験を実行する実行部とを含む、情報処理装置。
【請求項２】
前記起動情報は、前記第２の制御部が存在するか否かを示す情報であり、前記起動部は、存在する場合、前記第２の制御部を起動し、存在しない場合、前記第１の制御部を起動する、請求項１に記載の情報処理装置。
【請求項３】
前記変更部は、前記起動情報を、前記第２の制御部が存在することを示す情報から前記第２の制御部が存在しないことを示す情報に変更する、請求項２に記載の情報処理装置。
【請求項４】
前記起動部は、前記起動情報を参照し、前記第２の制御部が存在することを示す情報でない場合、前記第２の制御部が存在することを示す情報に変更して再起動し、
前記変更部は、前記処理部が前記配信装置から配信された前記システムプログラムを前記記憶部に記憶させた後、前記起動情報を、前記第１の制御部を起動することを示す情報に変更する、請求項１に記載の情報処理装置。
【請求項５】
前記記憶装置は、複数の記憶領域に分割され、各記憶領域により１以上の前記第２の制御部を実現することが可能であり、
前記起動部は、設定された優先順位に従って前記１以上の第２の制御部のうちの１つを起動し、
前記変更部は、前記起動情報として、前記１以上の第２の制御部が存在することを示す記憶領域の情報を前記１以上の第２の制御部が存在しないことを示す記憶領域の情報に変更する前に、前記各記憶領域の情報を前記記憶部または前記記憶装置に記憶させ、
前記情報処理装置は、前記試験の実行が終了した後、前記記憶部または前記記憶装置から前記各記憶領域の情報を読み出し、前記起動情報を、前記１以上の第２の制御部が存在することを示す記憶領域の情報に再度変更する再変更部をさらに備える、請求項１に記載の情報処理装置。
【請求項６】
前記情報処理装置の再起動の際に接続が切断された前記記憶装置を接続する接続部をさらに含む、請求項１〜５のいずれか１項に記載の情報処理装置。
【請求項７】
前記処理部は、前記配信装置から前記システムプログラムとともに配信された前記試験指示部が実行する前記テストプログラムを、前記記憶装置に記憶させる、請求項１〜６のいずれか１項に記載の情報処理装置。
【請求項８】
前記配信装置を接続する接続部を含み、
前記接続部により前記配信装置に接続した後、前記試験指示部が、前記配信装置上の前記テストプログラムを実行する、請求項１〜５のいずれか１項に記載の情報処理装置。
【請求項９】
前記情報処理装置は、再起動により再度前記第２の制御部を起動させるように前記起動情報を変更する再変更部と、第２の記憶部とを含み、
前記システムプログラムは、改訂が行われ、前記配信装置は、複数の版のシステムプログラムを保持しており、
前記実行部は、前記システムプログラムの試験結果が失敗である場合に、該システムプログラムの１つ前の版の情報を前記第２の記憶部に記憶させ、
前記要求部は、前記第２の記憶部に記憶された前記版の情報を参照し、前記版のシステムプログラムの配信を前記配信装置に対して要求する、請求項１に記載の情報処理装置。
【請求項１０】
前記要求部は、前記第２の記憶部に前記版の情報が記憶されていない場合、最新の版のシステムプログラムの配信を前記配信装置に対して要求する、請求項９に記載の情報処理装置。
【請求項１１】
前記試験は、複数の試験項目を有し、
前記実行部は、各試験項目につき、試験が成功したシステムプログラムの版を対応付けた試験結果を、前記第２の記憶部に記憶させる、請求項９に記載の情報処理装置。
【請求項１２】
前記要求部は、前記試験を行う前記版の試験開始対象と終了条件を含む範囲を定める情報を前記配信装置から取得し、取得した前記版の範囲を定める情報に基づき、前記版のシステムプログラムを前記配信装置に対して要求するか否かを判断する、請求項９に記載の情報処理装置。
【請求項１３】
前記要求部は、前記配信装置から要求したシステムプログラムを取得できたか否かを判断する、請求項９に記載の情報処理装置。
【請求項１４】
情報処理装置と、該情報処理装置とネットワークを介して接続可能な配信装置とを備える情報処理システムであって、
前記情報処理装置は、
設定された起動情報に基づき、前記情報処理装置が備える第１の制御部または該情報処理装置に接続される記憶装置に格納されたプログラムより実現される第２の制御部を起動する起動部と、
前記起動情報に基づき、前記起動部により前記第２の制御部が起動された場合に、前記情報処理装置を動作させるために導入すべきシステムプログラムを保持する配信装置に対し、該システムプログラムの配信を要求する要求部と、
前記要求部による要求に応じて、前記配信装置から配信された前記システムプログラムを、前記情報処理装置が備える記憶部に記憶させる処理部と、
前記起動情報を変更する変更部と、
前記第２の制御部に対して起動中の前記情報処理装置を再起動するように指示する起動指示部と、
前記変更部により変更された起動情報に基づき、前記起動部により前記第１の制御部が起動された場合に、前記システムプログラムの動作を試験するためのテストプログラムを実行する試験指示部と、
前記試験指示部による前記テストプログラムの実行により前記動作の試験を実行する実行部とを含む、情報処理システム。
【請求項１５】
情報処理装置を動作させるために導入されるシステムプログラムの動作を試験する処理をコンピュータに実行させるためのコンピュータプログラムであって、
設定された起動情報に基づき、前記情報処理装置が備える第１の制御部または該情報処理装置に接続される記憶装置に格納されたプログラムより実現される第２の制御部を起動するステップと、
前記起動するステップで前記起動情報に基づき前記第２の制御部が起動された場合に、前記システムプログラムを保持する配信装置に対し、該システムプログラムの配信を要求するステップと、
前記配信装置から配信された前記システムプログラムを、前記情報処理装置が備える記憶部に記憶するステップと、
前記第１の制御部を起動するように前記起動情報を変更するステップと、
前記起動情報が変更された後、前記第２の制御部に対して起動中の前記情報処理装置を再起動するように指示するステップと、
前記情報処理装置を再起動するステップと、
変更された前記起動情報に基づき、前記第１の制御部を起動するステップと、
前記システムプログラムの動作を試験するためのテストプログラムを実行するステップと、
前記テストプログラムの実行により前記動作の試験を実行するステップとを実行させる、コンピュータプログラム。
【請求項１６】
情報処理装置を動作させるために導入されるシステムプログラムの動作を試験する、該情報処理装置により実行される方法であって、
設定された起動情報に基づき、前記情報処理装置が備える第１の制御部または該情報処理装置に接続される記憶装置に格納されたプログラムより実現される第２の制御部を起動するステップと、
前記起動するステップで前記起動情報に基づき前記第２の制御部が起動された場合に、前記システムプログラムを保持する配信装置に対し、該システムプログラムの配信を要求するステップと、
前記配信装置から配信された前記システムプログラムを、前記情報処理装置が備える記憶部に記憶するステップと、
前記第１の制御部を起動するように前記起動情報を変更するステップと、
前記起動情報が変更された後、前記第２の制御部に対して起動中の前記情報処理装置を再起動するように指示するステップと、
前記情報処理装置を再起動するステップと、
変更された前記起動情報に基づき、前記第１の制御部を起動するステップと、
前記システムプログラムの動作を試験するためのテストプログラムを実行するステップと、
前記テストプログラムの実行により前記試験を実行するステップとを含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムプログラムの動作を試験する情報処理装置、該情報処理装置を含む情報処理システム、その処理をコンピュータに実行させるためのコンピュータプログラムおよび方法に関する。
【背景技術】
【０００２】
特定の機能を実現するために製品に組み込まれる組み込み機器の開発では、その機器を動作させるために導入（インストール）すべきソフトウェアをSDカード等の外部記憶装置に保存し、外部記憶装置から機器を起動した後、そのソフトウェアをインストールする。そして、インストールが完了した後、電源を切断し、外部記憶装置を取り外して機器を起動する。その後、機器を試験（テスト）するためのテストソフトウェアを保存したSDカード等の外部記憶装置を装着し、テストを実行することが行われている（例えば、特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしながら、従来の上記構成では、外部記憶装置を取り外した後、機器を再起動させなければ、テストを実行することができないという問題があった。
【０００４】
本発明は、上記に鑑みてなされたものであって、外部記憶装置を取り外さなくても、機器を再起動し、テストを実行することができる装置、システム、プログラムおよび方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上述した課題を解決し、目的を達成するために、本発明は、情報処理装置であって、設定された起動情報に基づき、情報処理装置が備える第１の制御部または該情報処理装置に接続される記憶装置に格納されたプログラムより実現される第２の制御部を起動する起動部と、起動情報に基づき、起動部により第２の制御部が起動された場合に、情報処理装置を動作させるために導入すべきシステムプログラムを保持する配信装置に対し、該システムプログラムの配信を要求する要求部と、要求部による要求に応じて、配信装置から配信されたシステムプログラムを、情報処理装置が備える記憶部に記憶させる処理部と、起動情報を変更する変更部と、第２の制御部に対して起動中の情報処理装置を再起動するように指示する起動指示部と、変更部により変更された起動情報に基づき、起動部により第１の制御部が起動された場合に、システムプログラムの動作を試験するためのテストプログラムを実行する試験指示部と、試験指示部によるテストプログラムの実行により試験を実行する実行部とを含む、情報処理装置を提供する。
【発明の効果】
【０００６】
本発明によれば、外部記憶装置を取り外さなくても、機器を再起動し、テストを実行することが可能となる。
【図面の簡単な説明】
【０００７】
【図１】情報処理装置を含む情報処理システムの構成例を示した図。
【図２】情報処理装置としてのテスト機器のハードウェア構成を示した図。
【図３】テスト機器が備えるソフトウェア構成を示した図。
【図４】図３に示すソフトウェアにより実現される機能の機能構成を示した機能ブロック図。
【図５】情報処理システムにより実行されるテスト準備の第１の実施例を示したシーケンス図。
【図６】テスト機器により実行されるテストの第１の実施例を示したシーケンス図。
【図７】主記憶装置および外部機器としての外部記憶装置のデータ構造およびパーティションテーブルのデータ構造の第１の実施例を示した図。
【図８】起動可能なパーティション情報を消去する処理の流れを示したフローチャート。
【図９】主記憶装置のデータ構造の第２の実施例を示した図。
【図１０】情報処理システムにより実行されるテスト準備の第２の実施例を示したシーケンス図。
【図１１】テスト機器により実行されるテストの第２の実施例を示したシーケンス図。
【図１２】情報処理システムにより実行されるテスト準備の第３の実施例を示したシーケンス図。
【図１３】テスト機器により実行されるテストの第３の実施例を示したシーケンス図。
【図１４】情報処理システムにより実行されるテスト準備の第４の実施例を示したシーケンス図。
【図１５】テスト機器により実行されるテストの第４の実施例を示したシーケンス図。
【図１６】ソフトウェアの配置例を示した図。
【図１７】テスト実行プログラムおよびテストプログラムが格納されるディレクトリの構成例を示した図。
【図１８】テスト機器により実行されるテストの第５の実施例を示したシーケンス図。
【図１９】テスト機器の機能構成の別の例を示したブロック図。
【図２０】システムプログラムのバージョンについて説明する図。
【図２１】テスト機器により実行されるテスト後の処理の第１の実施例を示したフローチャート。
【図２２】テスト結果を例示した図。
【図２３】テスト機器により実行されるテスト後の処理の第２の実施例を示したフローチャート。
【図２４】テスト機器により実行されるテスト後の処理の第３の実施例を示したフローチャート。
【発明を実施するための形態】
【０００８】
図１は、情報処理装置を含む情報処理システムの構成例を示した図である。情報処理システムは、試験（テスト）を実行する対象の情報処理装置としてのテスト機器１０を自動でテストするためのシステムである。情報処理システムは、テスト機器１０のほか、配信装置としての配信サーバ１１と、情報処理装置を動作させるためにインストールすべきプログラム（システムプログラム）を作成する作成装置としてのビルドサーバ１２とを含んで構成される。テスト機器１０と、配信サーバ１１と、ビルドサーバ１２とは、ネットワーク１３を介して互いに接続されている。
【０００９】
テスト機器１０は、機器に組み込まれるコンピュータシステムといった組み込み機器である。機器は、コンピュータシステムを組み込み、そのコンピュータシステムにより制御され、機能が実現される機器であれば、いかなる機器であってもよく、デジタルカメラやMFP(Multi-Function Peripheral)等を挙げることができる。なお、機器は、プロジェクタ、電子黒板、プリンタ、ファックス装置、コピー機、スキャナ、ゲーム機、テレビ、ブルーレイディスクレコーダ、ハードディスクレコーダ、電子炊飯器、冷蔵庫、洗濯機、冷暖房装置等であってもよい。
【００１０】
テスト機器１０は、これらの機器に必要な機能に応じ、必要なシステムプログラムがインストールされ、その動作を確認するためのテストが実行される。機能は、MFPに組み込まれる組み込み機器の場合、コピー、ファックス、スキャナ、印刷、通信、ユーザ認証等の機能である。
【００１１】
ネットワーク１３は、LAN(Local Area Network)やインターネット等であり、有線ネットワークであってもよいし、無線ネットワークであってもよい。なお、無線ネットワークを使用する場合は、アクセスポイントを設け、アクセスポイントを介して互いに通信を行うことができる。また、ネットワーク１３は、１つのネットワークに限らず、２以上のネットワークがルータ等の中継装置を介して接続されたものであってもよい。
【００１２】
ビルドサーバ１２は、テスト機器１０にインストールするシステムプログラムをビルドする。ビルドは、システムプログラムの開発者がC言語やC++言語等のプログラミング言語を用いて記述したソースコードをコンパイルし、リンクして、実行可能なプログラムを作成する処理である。コンパイルは、ソースコードを解析し、コンピュータが実行可能な形式のオブジェクトコードに変換する処理であり、リンクは、複数のオブジェクトコードを結合し、実行可能なプログラムを生成する処理である。
【００１３】
ビルドサーバ１２は、必要なソースコードを保持し、開発プロジェクトの方針で定められた時期やテスト実施の必要に応じてビルドする。そして、ビルドサーバ１２は、作成したシステムプログラムを配信サーバ１１に送信する。時期としては、例えば毎日深夜の決まった時刻、リリース予定日１０日前等とすることができる。
【００１４】
配信サーバ１１は、ビルドサーバ１２がビルドしたシステムプログラムを受信して保持し、テスト機器１０からの要求に応じて、そのシステムプログラムを配信する。テスト機器１０は、２段階に分けてテストを実行する。第１の段階は、配信サーバ１１にシステムプログラムを要求し、その配信を受け、自身にインストールし、再起動をかける。第２の段階は、そのシステムプログラムがインストールされた新しいシステム構成で起動し、テストプログラムを使用してテストを実行する。
【００１５】
このシステムは、例えば、プリンタやMFP等の画像形成装置の開発者が、ファームウェア等のシステムプログラムをビルドサーバ１２で開発し、配信サーバ１１経由でダウンロードし、画像形成装置にインストールして、正しく動作するかをテストするシーンで用いられる。なお、このシーンは一例であり、このシステムは、ユーザやサービスマンがテストするシーンで用いられてもよい。
【００１６】
配信サーバ１１およびビルドサーバ１２は、上記の処理を実行するためにハードウェアとして、CPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)、HDD(Hard Disk Drive)、ネットワークコントローラ、ネットワークI/Fを備える。ネットワークI/Fは、ネットワーク１３と接続し、ネットワークコントローラは、ネットワーク１３を介した通信を制御する。ROM、HDDは、サーバ全体を制御するOS(Operating System)や上記の処理を実現するための各種プログラムやデータ等を記憶する。CPUは、OSや各種プログラムを作業領域としてのRAM上に展開し、実行して上記の処理を実現する。
【００１７】
この例では、配信サーバ１１とビルドサーバ１２を別個の機器としているが、これに限られるものではなく、１つの機器にこれらの両方の機能を備えるものであってもよい。また、HDDに代えてSSD(Solid State Drive)を使用してもよく、簡易なサーバである場合、HDDを備えず、SDカードやUSBメモリ等のフラッシュメモリが着脱可能な構成とされ、HDDに代えてそのフラッシュメモリを使用することも可能である。テスト機器１０については、図２を参照して説明する。
【００１８】
図２は、テスト機器１０のハードウェア構成を例示した図である。テスト機器１０は、CPU２０、起動用ROM２１、RAM２２、主記憶装置２３、リムーバブルメディアスロット２４、接続機器としてのテスト用記憶装置（リムーバブルメディア）２５、ネットワークコントローラ２６、ネットワークI/F２７を備える。CPU２０は、起動用ROM２１や各記憶装置に格納されたプログラムを実行する。起動用ROM２１は、起動プログラムを格納する不揮発性メモリである。CPU２０は、テスト機器１０の起動時にこの起動プログラムを実行する。RAM２２は、各種プログラムやデータを保持する揮発性のメモリである。
【００１９】
主記憶装置２３は、テスト機器１０のOS、各種プログラム、データ等が格納されるeMMC(embedded MultiMediaCard)やNANDフラッシュメモリ等の記憶装置である。最新のシステムプログラムでテスト機器１０を動作させ、そのテストを実行する場合、主記憶装置２３に記憶されているシステムプログラムに対して、配信サーバ１１から配信されたシステムプログラムをインストールして置換する。
【００２０】
テスト用記憶装置２５は、第１の段階で必要とされる各種プログラムや、第２の段階で実行されるテストプログラム本体が格納される。第１の段階では、このテスト用記憶装置２５に起動可能なパーティションが存在し、起動可能なパーティション内に存在するOSが起動され、テスト準備が実行される。パーティションは、テスト用記憶装置２５の記憶領域を論理的に分割した個々の記憶領域である。
【００２１】
リムーバブルメディアスロット２４は、テスト用記憶装置２５の挿入および取り外しを可能にし、挿入されたテスト用記憶装置２５に格納された各種プログラムやデータの読み出しおよび書き込みを実行する。上記の起動可能なパーティションは、他の機器からのアクセスで書き込まれる可能性があるため、リムーバブルメディアのように挿入および取り外し可能にされていることが望ましい。
【００２２】
ネットワークI/F２７は、ネットワーク１３と接続し、ネットワークコントローラ２６は、ネットワーク１３を介した通信を制御する。
【００２３】
このハードウェア構成により、開発者は、例えばSDカードに入ったダウンロード／テストプログラムを、リムーバブルメディアスロット２４としてのSDカードスロットに挿入することで、サーバからのシステムプログラムのダウンロードとインストール、テスト機器１０の再起動およびインストールされたシステムプログラムの作動テストを自動で実行させることができる。
【００２４】
図３を参照して、テスト機器１０のソフトウェア構成について説明する。テスト機器１０は、起動用ROM２１と、主記憶装置２３と、リムーバブルメディアスロット２４およびテスト用記憶装置２５とを備える。テスト機器１０は、起動用ROM２１にテスト機器１０を起動させるための起動プログラム３０が格納され、主記憶装置２３に、制御プログラムとしてのOS３１、マウント用プログラム３２、テスト指示プログラム３３が格納されている。
【００２５】
テスト用記憶装置２５は、起動可能なパーティションが存在し、そのパーティションにOS３４が格納されている。また、テスト用記憶装置２５には、ダウンローダ３５、インストーラ３６、起動情報変更プログラム３７、テスト実行プログラム３８、テストプログラム３９の本体が格納されている。これらのプログラムは、CPU２０によりRAM２２に読み出し実行される。
【００２６】
起動プログラム３０は、ハードウェアの状況を確認して初期化処理を実行し、OSを起動する。初期化処理としては、OSを使用可能な状態にするためのRAM２２に読み出す処理を一例として挙げることができる。図３に示すように、テスト用記憶装置２５がリムーバブルメディアスロット２４に挿入されている場合、テスト用記憶装置２５の各記憶領域の情報としてパーティション情報を読み取り、起動可能なパーティションが存在するかどうかを確認する。その確認において、起動可能なパーティションが存在する場合、そのパーティションに格納されているOS３４を起動する。一方、起動可能なパーティションが存在しない場合、主記憶装置２３に格納されているOS３１を起動する。
【００２７】
ここでは、予め設定されている起動情報が、テスト用記憶装置２５が挿入され、そのテスト用記憶装置２５に起動可能なパーティションが存在する場合、テスト用記憶装置２５のOS３４を起動するように設定されている。このため、OS３４ではなく、OS３１を起動するように設定すれば、起動時にOS３１を起動させることができる。
【００２８】
ダウンローダ３５は、OS３４により起動され、OS３４による制御の下、配信サーバ１１に対してシステムプログラムの配信を要求し、配信サーバ１１から配信されたそのシステムプログラムを受信する（ダウンロードする）。ダウンローダ３５は、要求したシステムプログラムをダウンロードするまで、繰り返しシステムプログラムの配信を要求する。インストーラ３６は、OS３４により起動され、OS３４による制御の下、ダウンローダ３５がダウンロードしたシステムプログラムを主記憶装置２３に記憶させる（インストールする）。
【００２９】
起動情報変更プログラム３７は、OS３４により起動され、OS３４による制御の下、インストーラ３６がシステムプログラムをインストールした後、テスト用記憶装置２５に起動可能なパーティションが存在しないと判断されるように、起動可能なパーティションの情報を消去する。この処理により、起動情報を変更する。この起動情報の変更により、次の起動時は、テスト用記憶装置２５に起動可能なパーティションが存在しないため、主記憶装置２３に格納されているOS３１を起動することになる。
【００３０】
起動情報変更プログラム３７は、起動情報の変更後、OS３４に対して再起動を指示する。OS３４は、その指示を受けて、終了処理を行い、テスト機器１０を再起動する。この終了処理では、テスト用記憶装置２５のアンマウント等を実行する。ここで、マウントは、OSがそのテスト用記憶装置２５を認識し、アクセス可能な状態にすることであり、アンマウントは、その認識を解除し、アクセスできない状態にすることである。
【００３１】
再起動後、起動プログラム３０は、主記憶装置２３に格納されているOS３１を起動する。OS３１は、初期化処理を実行し、マウント用プログラム３２が、テスト用記憶装置２５をマウントする。テスト指示プログラム３３は、テスト用記憶装置２５がマウントされた後、テスト用記憶装置２５に格納されているテスト実行プログラム３８に対して、テストの実行を指示する。
【００３２】
テスト実行プログラム３８は、その指示を受けて、テストプログラム３９を実行させる。このテスト実行プログラム３８は、テスト用記憶装置２５の中の予め定められた場所に、定められた名前のファイルとして存在する。テストプログラム３９は、システムプログラムを実行させ、テスト機器１０が正常に動作するかどうかをテストする。
【００３３】
テスト機器１０は、このようなハードウェアおよびソフトウェアを備え、上記の処理を実行することから、その機能構成として、次のような機能部を備えるものとすることができる。なお、各機能部は、CPU２０が、主記憶装置２３やテスト用記憶装置２５に格納されたプログラムを実行することにより実現される。
【００３４】
図４は、テスト機器１０の機能ブロック図である。テスト機器１０は、その機能部として、起動部４０、第１の制御部４１、第２の制御部４２、要求部４３、記憶部４４、処理部４５、変更部４６、起動指示部４７、実行部４８、試験指示部４９を備えることができる。
【００３５】
テスト機器１０は、試験を実行するためにテスト用記憶装置２５が接続されている。起動部４０は、予め設定された起動情報に基づき、第１の制御部４１と第２の制御部４２のいずれかを起動する。起動情報は、例えば第２の制御部４２が存在するか否かを示す情報である。起動部４０は、第２の制御部４２が存在する場合、第２の制御部４２を起動し、存在しない場合、第１の制御部４１を起動する。起動部４０は、起動プログラム３０により実現され、第１の制御部４１は、テスト機器１０の主記憶装置２３に格納されたOS３１により実現され、第２の制御部４２は、テスト機器１０に接続されたテスト用記憶装置２５に格納されたOS３４により実現される。
【００３６】
要求部４３は、起動部４０により第２の制御部４２が起動された場合に、第２の制御部４２により起動され、テスト機器１０を動作させるためにインストールすべきシステムプログラムを保持する配信サーバ１１装置に対し、そのシステムプログラムの配信を要求する。処理部４５も、第２の制御部４２により起動され、要求部４３による要求に応じて、配信サーバ１１から配信されたシステムプログラムを記憶部４４に記憶させる。要求部４３は、ダウンローダ３５により実現され、処理部４５は、インストーラ３６により実現される。
【００３７】
変更部４６も、第２の制御部４２により起動され、設定された起動情報を変更する。起動情報が、第２の制御部４２が存在することを示す情報である場合、変更部４６は、第２の制御部４２が存在しないことを示す情報に変更する。
【００３８】
第２の制御部４２は、起動可能なパーティション内のOSにより実現されることから、変更部４６は、テスト用記憶装置２５に起動可能なパーティションを示す情報が存在するかどうかを確認する。そして、変更部４６は、存在する場合、その情報を消去する。このようにして、テスト用記憶装置２５内に起動可能なパーティションを示す情報がなくなったことにより、主記憶装置２３にしか起動可能なパーティションが存在しなくなる。このため、次の起動時には、主記憶装置２３の起動可能なパーティションに格納されるOS３１が起動されることになる。
【００３９】
起動指示部４７は、変更部４６により起動情報が変更された後、第２の制御部４２に対して、現在起動中のテスト機器１０を再起動するように指示する。再起動は、一度テスト機器１０の電源を切断し、再度電源を投入して起動させる処理である。変更部４６および起動指示部４７は、起動情報変更プログラム３７により実現される。第２の制御部４２は、この再起動の指示を受けて、終了処理を実行し、再起動することができる。
【００４０】
起動部４０は、再起動後、変更された起動情報に基づき、第１の制御部４１を起動する。第１の制御部４１は、試験指示部４９を起動する。テスト機器１０は、上記の終了処理でテスト用記憶装置２５がアンマウントされることから、テスト用記憶装置２５をマウントするための接続部を設けることができる。第１の制御部４１は、この接続部も起動し、接続部が、テスト用記憶装置２５をマウントすることができる。接続部は、マウント用プログラム３２により実現され、試験指示部４９は、テスト指示プログラム３３により実現される。また、実行部４８は、テスト実行プログラム３８により実現される。
【００４１】
試験指示部４９は、マウントされたテスト用記憶装置２５に格納されたシステムプログラムの動作をテストするためのテストプログラム３９を実行し、その動作をテストするように指示する。実行部４８は、試験指示部４９によるテストプログラム３９の実行によりシステムプログラムを実行させ、正常に動作するかどうかをテストする。
【００４２】
図４に示す機能部を備えるテスト機器１０を含む情報処理システムにより実行されるテスト準備について、図５を参照して説明する。図５は、テスト準備の第１の実施例を示したシーケンス図である。起動部４０は、設定された起動情報に基づき、第２の制御部４２を起動する(図５S1)。この第１の実施例では、テスト用記憶装置２５がマウントされ、起動可能なパーティションが存在している。第２の制御部４２は、初期化処理を実行し(図５S2)、要求部４３、処理部４５、変更部４６、起動指示部４７を起動する(図５S3〜S6)。
【００４３】
要求部４３は、配信サーバ１１に対してシステムプログラムの配信を要求する(図５S7)。この時点では、ビルドサーバ１２がビルドを実行しておらず、ビルドサーバ１２から配信サーバ１１にビルドしたシステムプログラムを送信していないため、配信が不可である旨の応答を返す(図５S8)。これは、システムプログラムがビルドされ、配信サーバ１１に送信されるまで繰り返される。
【００４４】
ビルドサーバ１２は、定められた時期に、システムプログラムのビルドを実行する(図５S9)。ビルドサーバ１２は、配信サーバ１１に対してビルドしたシステムプログラムを送信する(図５S10)。要求部４３は、配信サーバ１１に対するシステムプログラムの配信の要求を繰り返し(図５S11)、配信サーバ１１がシステムプログラムを保持している場合にそのシステムプログラムを配信する(図５S12)。
【００４５】
要求部４３は、システムプログラムをダウンロードすると、ダウンロードが完了した旨を処理部４５に対して通知する(図５S13)。処理部４５は、そのシステムプログラムを記憶部４４にインストールし(図５S14)、インストールが完了した旨を変更部４６に通知する(図５S15)。変更部４６は、テスト用記憶装置２５の起動可能なパーティション情報を消去して、起動情報を変更する(図５S16)。変更部４６は、起動情報の変更が完了した旨を起動指示部４７に通知する(図５S17)。
【００４６】
起動指示部４７は、その通知を受けて、第２の制御部４２に対して動作中のテスト機器１０の再起動を指示する(図５S18)。第２の制御部４２は、その指示を受けて、終了処理を実行し、テスト機器１０を再起動する(図５S19)。
【００４７】
次に、図６を参照して、テスト機器１０により実行されるテストについて説明する。図６は、テストの第１の実施例を示したシーケンス図である。テスト機器１０が再起動されると、起動部４０は、変更された起動情報に基づき、第１の制御部４１を起動する(図６S1)。前回は、テスト用記憶装置２５から起動したが、今回は、主記憶装置２３から起動する。
【００４８】
第１の制御部４１は、初期化処理を実行し(図６S2)、接続部５０および試験指示部４９を起動する(図６S3、S4)。接続部５０は、上記の終了処理時にアンマウントされたテスト用記憶装置２５をマウントし(図６S5)、そのマウントが完了した旨を試験指示部４９に対して通知する(図６S6)。
【００４９】
試験指示部４９は、テストプログラム３９を実行し、システムプログラムの動作をテストするように指示する(図６S7)。実行部４８は、試験指示部４９によるテストプログラム３９の実行によりシステムプログラムの動作をテストする(図６S8)。
【００５０】
主記憶装置２３およびテスト用記憶装置２５のデータ構造を、図７（ａ）に例示し、そのデータ構造に含まれるパーティションテーブルのデータ構造を、図７（ｂ）に例示する。図７（ａ）に示すように、各記憶装置のデータ構造は、マスタブートレコード(MBR)と、複数のパーティションとを含む構造である。一般に記憶装置は、最大４つのパーティションに分けられ、記憶領域の先頭にMBRが存在する。MBRには、図７（ｂ）に示すようなパーティションテーブルと呼ばれる領域が存在する。
【００５１】
MBRは、図７（ｂ）に示すパーティションテーブルの中に、記憶装置に存在するパーティションのパーティション情報が格納される。パーティション情報は、分割された領域の情報で、ブートフラグ、パーティションの種類、先頭セクタ、最終セクタ、セクタ数を含む。セクタは、ディスク状の記憶装置における最小の記録単位である。パーティションの先頭位置は、先頭セクタで表され、最終位置は、最終セクタで表され、パーティションのサイズは、セクタ数で表される。パーティションの種類は、プライマリパーティションと拡張パーティションとがあり、プライマリパーティションは、起動可能なパーティションで、拡張パーティションは、起動できないパーティションである。ブートフラグは、起動可能か否かを示す情報で、例えばブート可を「１」とし、ブート不可を「０」とすることができる。
【００５２】
一般のPCと同様、起動部４０は、起動時に機器に存在する全ての記憶装置を検出し、予め定められた優先順位に従って記憶装置のパーティションテーブルを調査し、ブート可能なパーティションがあれば、そのパーティションから起動する。本実施例では、記憶装置の優先順位が、テスト用記憶装置２５、主記憶装置２３の順になっている。このため、テスト用記憶装置２５のパーティションテーブルを調査し、ブート可能なパーティションがあれば、そのパーティションから起動し、なければ、主記憶装置２３のパーティションテーブルを調査する。
【００５３】
この第１の実施例では、２つの記憶装置しか存在しないため、２つの記憶装置のパーティションテーブルを調査している。しかしながら、記憶装置は３つ以上であってもよく、この場合も同様に優先順位に従って調査し、ブート可能なパーティションがあれば、そのパーティションから起動することができる。
【００５４】
変更部４６は、テスト用記憶装置２５のパーティションテーブルに含まれるパーティション情報の中で、ブートフラグが「１」に設定されているパーティション情報を探し、探したパーティション情報のブートフラグに「０」を書き込む。このようにすることで、テスト用記憶装置２５のパーティションから起動することがなくなり、主記憶装置２３から起動させることができる。
【００５５】
この処理を、図８を参照して詳細に説明する。ステップ８００から処理を開始し、ステップ８０５では、１から順にi番目のパーティションを選択する。iは、自然数である。したがって、最初にこの処理を実行する場合は、１番目のパーティションを選択する。ステップ８１０では、i番目のパーティションのパーティション情報に含まれるブートフラグを読み出す。ステップ８１５では、ブートフラグが「１」かどうかを判断する。「１」であれば、ステップ８２０へ進み、「０」であれば、ステップ８２５へ進む。
【００５６】
ステップ８２０では、i番目のパーティション情報に含まれるブートフラグに「０」を書き込む。これにより、このパーティションは起動不可となる。ステップ８２５では、最終のパーティションかどうかを判断する。最終でない場合、ステップ８３０へ進み、i＝i＋１とし、ステップ８０５へ戻る。最終の場合は、ステップ８３５へ進み、この処理を終了する。
【００５７】
第１の実施例では、主記憶装置２３から起動するか、テスト用記憶装置２５から起動するかを判断するための起動情報として、MBRのパーティションテーブルに含まれる各パーティション情報のブートフラグを使用した。このように、記憶装置にMBRがあり、そのMBRにパーティションテーブルがあり、ブートフラグを参照するように構成されている場合は、ブートフラグを使用することができる。しかしながら、システム構成上、記憶装置にMBRがない場合や、パーティションテーブルがない場合や、ブートフラグを参照するように構成されていない場合は、ブートフラグを使用することはできない。
【００５８】
このような場合でも、どちらから起動するかを判断するために、起動用ROM２１や主記憶装置２３等、機器が常時備えている記憶装置の予め定められた箇所に起動情報を格納し、その情報に基づき起動することが可能である。
【００５９】
その例を第２の実施例として、図９を参照して説明する。図９は、主記憶装置２３のデータ構造の一例を示した図である。主記憶装置２３は、MBRと、２つのパーティションとを含み、パーティション２に起動情報が、起動情報格納ファイルとして格納されている。パーティション１は、システムプログラムが格納される場所とされる。また、テスト用記憶装置２５のパーティション１にテスト用の各プログラムが格納されている。
【００６０】
起動情報は、「０」から「７」までのいずれかの値とされる。「０」は、主記憶装置２３のパーティション１から起動することを示し、「１」は、主記憶装置２３のパーティション２から起動することを示している。「２」は、主記憶装置２３のパーティション３から起動することを示し、「３」は、主記憶装置２３のパーティション４から起動することを示している。「４」は、テスト用記憶装置２５のパーティション１から起動することを示し、「５」は、テスト用記憶装置２５のパーティション２から起動することを示している。「６」は、テスト用記憶装置２５のパーティション３から起動することを示し、「７」は、テスト用記憶装置２５のパーティション４から起動することを示している。
【００６１】
図１０を参照して、このデータ構造を使用して実行されるテスト準備について説明する。図１０は、テスト準備の第２の実施例を示したシーケンス図である。起動部４０は、起動時に主記憶装置２３のパーティション２をマウントし、パーティション２に含まれるbootdeviceinfo.txtの内容を読み取る(図１０S1)。bootdeviceinfo.txtには、上記の「０」から「７」までのいずれかの値が記述されている。
【００６２】
その内容が、第２の制御部４２が存在することを示す情報でない場合、すなわち「４」でない場合、第２の制御部４２が存在することを示す情報に変更して再起動する。具体的には、手動でbootdeviceinfo.txtに４を書き込み、再起動する(図１０S2)。これに対し、「４」である場合、テスト用記憶装置２５のパーティション１から起動し、第２の制御部４２を起動する(図１０S3)。第２の制御部４２は、初期化処理を実行し(図１０S4)、要求部４３、処理部４５、変更部４６、起動指示部４７を起動する(図１０S5〜S8)。
【００６３】
要求部４３は、配信サーバ１１に対してシステムプログラムの配信を要求する(図１０S9)。この時点では、ビルドサーバ１２がビルドを実行し、ビルドサーバ１２から配信サーバ１１にビルドしたシステムプログラムを送信していないため、配信が不可である旨の応答を返す(図１０S10)。これは、システムプログラムがビルドされ、配信サーバ１１に送信されるまで繰り返される。
【００６４】
ビルドサーバ１２は、定められた時期に、システムプログラムのビルドを実行する(図１０S11)。ビルドサーバ１２は、配信サーバ１１に対してビルドしたシステムプログラムを送信する(図１０S12)。要求部４３は、配信サーバ１１に対するシステムプログラムの配信の要求を繰り返し(図１０S13)、配信サーバ１１がシステムプログラムを保持している場合にそのシステムプログラムを配信する(図１０S14)。
【００６５】
要求部４３は、システムプログラムをダウンロードすると、ダウンロードが完了した旨を処理部４５に対して通知する(図１０S15)。処理部４５は、そのシステムプログラムを記憶部４４にインストールし(図１０S16)、インストールが完了した旨を変更部４６に通知する(図１０S17)。この第２の実施例では、処理部４５は、記憶部４４としての主記憶装置２３のパーティション１にインストールする。
【００６６】
変更部４６は、接続部５０に対し、主記憶装置２３のパーティション２をマウントするように要求する(図１０S18)。接続部５０は、主記憶装置２３のパーティション２をマウントし(図１０S19)、そのマウントが完了した旨を変更部４６に対して通知する(図１０S20)。変更部４６は、第１の制御部４１を起動することを示す情報に変更するため、主記憶装置２３のパーティション２のbootdeviceinfo.txtに「０」を書き込む(図１０S21)。変更部４６は、起動情報の変更が完了した旨を起動指示部４７に通知する(図１０S22)。
【００６７】
起動指示部４７は、その通知を受けて、第２の制御部４２に対して、現在動作中のテスト機器１０の再起動を指示する(図１０S23)。第２の制御部４２は、その指示を受けて、終了処理を実行し、テスト機器１０を再起動する(図１０S24)。
【００６８】
図１１を参照して、上記のデータ構造を使用して実行されるテストについて説明する。図１１は、テストの第２の実施例を示したシーケンス図である。テスト機器１０が再起動されると、起動部４０は、起動時に主記憶装置２３のパーティション２をマウントし、パーティション２に含まれるbootdeviceinfo.txtの内容を読み取る(図１１S1)。bootdeviceinfo.txtには、上記の「０」から「７」までのいずれかの値が記述されている。
【００６９】
上記の変更部４６による変更で、bootdeviceinfo.txtには「０」が書き込まれているため、主記憶装置２３のパーティション１から起動し、第１の制御部４１を起動する(図１１S2)。第１の制御部４１は、初期化処理を実行し(図１１S3)、接続部５０および試験指示部４９を起動する(図１１S4、S5)。接続部５０は、上記の終了処理時にアンマウントされたテスト用記憶装置２５をマウントし(図１１S6)、そのマウントが完了した旨を試験指示部４９に対して通知する(図１１S7)。
【００７０】
試験指示部４９は、テストプログラム３９を実行し、システムプログラムの動作をテストするように指示する(図１１S8)。実行部４８は、試験指示部４９によるテストプログラム３９の実行によりシステムプログラムの動作をテストする(図１１S9)。
【００７１】
第１の実施例では、テスト用記憶装置２５のブートフラグを書き換え、テスト用記憶装置２５には、起動可能なパーティションが存在しないことを示すように起動情報を変更した。これでは、テスト終了後に、別のシステムプログラムのテストに利用することはできない。テスト用記憶装置２５のパーティション情報のブートフラグが全て「０」に書き換えられているからである。
【００７２】
この書き換えられる前の情報を保存しておき、テスト後にその情報に戻すことができれば、別のシステムプログラムのテストにも利用することが可能となる。そこで、第３の実施例では、書き換えられる前の情報を保存し、テスト終了後に、その情報に戻す処理を追加することができる。
【００７３】
図１２は、テスト準備の第３の実施例を示したシーケンス図である。起動部４０は、設定された起動情報に基づき、第２の制御部４２を起動する(図１２S1)。この第３の実施例では、テスト用記憶装置２５がマウントされ、起動可能なパーティション情報が存在している。第２の制御部４２は、初期化処理を実行し(図１２S2)、要求部４３、処理部４５、変更部４６、起動指示部４７を起動する(図１２S3〜S6)。
【００７４】
要求部４３は、配信サーバ１１に対してシステムプログラムの配信を要求する(図１２S7)。この時点では、ビルドサーバ１２がビルドを実行し、ビルドサーバ１２から配信サーバ１１にビルドしたシステムプログラムを送信していないため、配信が不可である旨の応答を返す(図１２S8)。これは、システムプログラムがビルドされ、配信サーバ１１に送信されるまで繰り返される。
【００７５】
ビルドサーバ１２では、定められた時期に、システムプログラムのビルドを実行する(図１２S9)。ビルドサーバ１２は、配信サーバ１１に対してビルドしたシステムプログラムを送信する(図１２S10)。要求部４３は、配信サーバ１１に対するシステムプログラムの配信の要求を繰り返し(図１２S11)、配信サーバ１１がシステムプログラムを保持している場合にそのシステムプログラムを配信する(図１２S12)。
【００７６】
要求部４３は、システムプログラムをダウンロードすると、ダウンロードが完了した旨を処理部４５に対して通知する(図１２S13)。処理部４５は、そのシステムプログラムを記憶部４４にインストールし(図１２S14)、その処理が完了した旨を変更部４６に通知する(図１２S15)。変更部４６は、各記憶領域の情報、すなわちテスト用記憶装置２５のパーティションテーブルのブートフラグの情報を記憶部４４またはテスト用記憶装置２５に保存する(図１２S16)。
【００７７】
変更部４６は、ブートフラグの情報を保存した後、テスト用記憶装置２５の起動可能なパーティション情報を消去して、起動情報を変更する(図１２S17)。変更部４６は、起動情報の変更が完了した旨を起動指示部４７に通知する(図１２S18)。
【００７８】
起動指示部４７は、その通知を受けて、第２の制御部４２に対して、現在動作中のテスト機器１０の再起動を指示する(図１２S19)。第２の制御部４２は、その指示を受けて、終了処理を実行し、テスト機器１０を再起動する(図１２S20)。
【００７９】
次に、図１３を参照して、テスト機器１０により実行されるテストについて説明する。図１３は、テストの第３の実施例を示したシーケンス図である。テスト機器１０が再起動されると、起動部４０は、変更された起動情報に基づき、第１の制御部４１を起動する(図１３S1)。第１の制御部４１は、初期化処理を実行し(図１３S2)、接続部５０および試験指示部４９を起動する(図１３S3、S4)。接続部５０は、上記の終了処理時にアンマウントされたテスト用記憶装置２５をマウントし(図１３S5)、そのマウントが完了したことを試験指示部４９に対して通知する(図１３S6)。
【００８０】
試験指示部４９は、テストプログラム３９を実行し、システムプログラムの動作をテストするように指示する(図１３S7)。実行部４８は、試験指示部４９によるテストプログラム３９の実行によりシステムプログラムの動作をテストする(図１３S8)。
【００８１】
この第３の実施例では、テスト機器１０は、再変更部５１をさらに備える。  実行部４８は、テストが終了した旨を再変更部５１に対して通知する(図１３S9)。再変更部５１は、テスト準備において保存されたブートフラグの情報を読み出し、テスト用記憶装置２５のパーティションテーブルにその情報を書き込み(図１３S10)、起動情報を変更する。再変更部５１は、第１の制御部４１に対して再起動を指示する(図１３S11)。第１の制御部４１は、その指示を受けて、終了処理を実行し、テスト機器１０を再起動する(図１３S12)。
【００８２】
これにより、次回の起動では、テスト用記憶装置２５から起動されるので、再度のテスト準備を実行することができる。再度のテスト準備では、新しいシステムプログラムをダウンロードし、インストールすることができる。
【００８３】
これまでの実施例では、テスト用記憶装置２５に予めテストプログラム３９が格納されていたが、テストプログラム３９は、システムプログラムの配信の要求を受けた際に、配信サーバ１１がそれらを合わせて配信してもよい。このように、配信サーバ１１にテストプログラム３９を登録し、一緒に配信するように構成することで、毎回同じテスト（リグレッションテスト）を実行する場合の作業負担を軽減することができる。配信サーバ１１にテストプログラム３９を一度登録するだけでよいからである。
【００８４】
このようなテストプログラム３９を合わせて配信する例を第４の実施例として、図１４を参照して説明する。図１４は、テスト準備の第４の実施例を示したシーケンス図である。予め配信サーバ１１に実行したいテストプログラム３９を登録しておく(図１４S1)。起動部４０は、設定された起動情報に基づき、第２の制御部４２を起動する(図１４S2)。この第４の実施例でも、テスト用記憶装置２５がマウントされ、起動可能なパーティション情報が存在している。第２の制御部４２は、初期化処理を実行し(図１４S3)、要求部４３、処理部４５、変更部４６、起動指示部４７を起動する(図１４S4〜S7)。
【００８５】
要求部４３は、配信サーバ１１に対してシステムプログラムの配信を要求する(図１４S8)。この時点では、ビルドサーバ１２がビルドを実行し、ビルドサーバ１２から配信サーバ１１にビルドしたシステムプログラムを送信していないため、配信が不可である旨の応答を返す(図１４S9)。これは、システムプログラムがビルドされ、配信サーバ１１に送信されるまで繰り返される。
【００８６】
ビルドサーバ１２は、定められた時期に、システムプログラムのビルドを実行する(図１４S10)。ビルドサーバ１２は、配信サーバ１１に対してビルドしたシステムプログラムを送信する(図１４S11)。要求部４３は、配信サーバ１１に対するシステムプログラムの配信の要求を繰り返し(図１４S12)、配信サーバ１１がシステムプログラムを保持している場合に、そのシステムプログラムを登録されているテストプログラム３９とともに配信する(図１４S13)。
【００８７】
要求部４３は、システムプログラムとテストプログラム３９とをダウンロードすると、ダウンロードが完了した旨を処理部４５に対して通知する(図１４S14)。処理部４５は、そのシステムプログラムを記憶部４４にインストールし(図１４S15)、テストプログラム３９をテスト用記憶装置２５に格納する(図１４S16)。そして、処理部４５は、インストールが完了した旨を変更部４６に通知する(図１４S17)。変更部４６は、テスト用記憶装置２５の起動可能なパーティション情報を消去して、起動情報を変更する(図１４S18)。変更部４６は、起動情報の変更が完了した旨を起動指示部４７に通知する(図１４S19)。
【００８８】
起動指示部４７は、その通知を受けて、第２の制御部４２に対して、現在動作中のテスト機器１０の再起動を指示する(図１４S20)。第２の制御部４２は、その指示を受けて、終了処理を実行し、テスト機器１０を再起動する(図１４S21)。
【００８９】
次に、図１５を参照して、テスト機器１０により実行されるテストについて説明する。図１５は、テストの第４の実施例を示したシーケンス図である。テスト機器１０が再起動されると、起動部４０は、変更された起動情報に基づき、第１の制御部４１を起動する(図１５S1)。第１の制御部４１は、初期化処理を実行し(図１５S2)、接続部５０および試験指示部４９を起動する(図１５S3、S4)。接続部５０は、上記の終了処理時にアンマウントされたテスト用記憶装置２５をマウントし(図１５S5)、そのマウントが完了したことを試験指示部４９に対して通知する(図１５S6)。
【００９０】
試験指示部４９は、配信サーバ１１からダウンロードしたテストプログラム３９を実行し、システムプログラムの動作をテストするように指示する(図１５S7)。実行部４８は、試験指示部４９によるテストプログラム３９の実行によりシステムプログラムの動作をテストする(図１５S8)。
【００９１】
これまでの例では、テスト用記憶装置２５にテスト実行プログラム３８およびテストプログラム３９を配信サーバ１１からダウンロードし、テスト実行時に、テスト用記憶装置２５にマウントし、テスト実行プログラム３８およびテストプログラム３９を実行した。しかしながら、テスト用記憶装置２５にダウンロードしなくても、配信サーバ１１のそれらのプログラムが格納されたディレクトリにマウントすれば、配信サーバ１１上のそれらプログラムを直接実行することができる。
【００９２】
この場合のソフトウェアの配置例を図１６に示す。図３と同じプログラムを備えるが、テスト実行プログラム３８とテストプログラム３９が、テスト用記憶装置２５ではなく、配信サーバ１１に配置されている。
【００９３】
図１６に示す例での処理は、上記と同様にして、システムプログラムをダウンロードし、インストールしてテスト機器１０の起動情報を変更する。テスト機器１０の起動後、マウント用プログラム３２によってテスト用記憶装置２５ではなく、配信サーバ１１上のテスト実行プログラム３８およびテストプログラム３９が格納されたディレクトリへのマウントを実施する。マウント後、テスト指示プログラム３３によりテスト実行プログラム３８を実行し、テストプログラム３９を実行して、システムプログラムの動作をテストする。
【００９４】
テスト実行プログラム３８およびテストプログラム３９が格納されるディレクトリは、例えば「/opt/test/’テスト機器名称’」とされる。テスト機器名称は、配信サーバ１１上でディレクトリ名称として有効なテスト機器（機種）を一意に識別する名称を使用する。例えば、テスト機器１０の名称を「Vesta_P1」とすると、ディレクトリは「/opt/test/Vesta_P1」となる。
【００９５】
テスト実行プログラム３８は、図１７に示すように、「Vista_P1」をルートノードとして、このルートノードに直接繋がる子ノードの位置に配置される。テストプログラム３９は、このディレクトリ内であれば、任意の位置に配置することができる。図１７では、テスト実行プログラム３８が「run_test」として配置され、テストプログラム３９が、例えば「test01」等として配置される。
【００９６】
図１８を参照して、テスト機器１０により実行されるテストについて説明する。図１８は、配信サーバ１１上のディレクトリにマウントして、テストを実行する第５の実施例を示したシーケンス図である。テスト機器１０が再起動されると、起動部４０は、変更された起動情報に基づき、第１の制御部４１を起動する(図１８S1)。第１の制御部４１は、初期化処理を実行し(図１８S2)、接続部５０および試験指示部４９を起動する(図１８S3、S4)。接続部５０は、テスト実行プログラム３８およびテストプログラム３９が格納されたディレクトリをネットワークファイルシステムとして、テスト機器１０からアクセスできるようにマウントする (図１８S5)。そのマウントが完了したことを試験指示部４９に対して通知する(図１８S6)。
【００９７】
試験指示部４９は、配信サーバ１１上のマウントしたディレクトリに格納されたテストプログラム３９を実行し、システムプログラムの動作をテストするように指示する(図１８S7)。実行部４８は、試験指示部４９によるテストプログラム３９の実行によりシステムプログラムの動作をテストする(図１８S8)。
【００９８】
なお、ネットワークファイルシステムの形式としては、NFS(Network File System)、SMBFS(Server Message Block File System)、CIFS(Common Internet File System)等を利用することができる。このネットワークファイルシステムを利用する場合、配信サーバ１１上のテスト実行プログラム３８およびテストプログラム３９は、テスト機器１０上のシステムの「/mnt/test」というディレクトリにマウントされる。そして、テスト実行プログラム３８は「/mnt/test/run_test」、テストプログラム３９は「/mnt/test/case001/test001」のように参照することができるようになる。
【００９９】
以上のように、外部記憶装置としてのテスト用記憶装置２５を取り外さなくても、テスト機器１０を再起動し、インストールしたシステムプログラムの動作をテストすることができる。これにより、電源を切断することを含むシステムプログラムのインストール開始からテストの実施までの間、人の手を介さず、自動化することができるので、ヒューマンエラーの発生を防止することができる。また、人の手を介さないので、テスト終了までにかかる時間を短縮することができ、システムプログラムの開発の効率を向上させることができる。
【０１００】
ところで、テストプログラム３９の実行により実施されるテストには、複数のテスト項目が含まれる。テスト機器１０をMFPとした場合、テスト項目としては、MFP内の各デバイスに対して設定する初期値が正しく設定されているか、各デバイスが正しく動作するか、デバイス間が正しく接続されているか等を挙げることができる。例えば、接続が正しいかどうかは、相手に何らかの信号を送信し、相手から応答があるかどうかにより確認することができる。正しく動作するかどうかは、特定の動作をさせるための信号を与えて、その通りに動作するかどうかにより確認することができる。なお、ここで例示した項目は一例であるので、これらの項目に限られるものではない。
【０１０１】
テストを実施すると、そのテストが成功か失敗か、失敗した場合、どの項目が失敗したかというテスト結果が得られる。しかしながら、このテスト結果からは、その失敗の原因が分からない。これでは、開発者が、失敗した項目をどのように修正すればよいかが分からない。
【０１０２】
システムプログラムは、開発者が適宜修正し、改訂（バージョンアップ）されていく。ある程度の期間や修正が終わったところで、一般ユーザに提供（リリース）することになる。リリースする版（バージョン）は、最新のバージョンであり、その最新のバージョンのシステムプログラムが、テストプログラム３９によりテストされる。このため、前回リリースされたバージョンから今回リリースする最新のバージョンまでのシステムプログラムでテストを行えば、どの段階で失敗したかが分かり、どのように修正すればよいかが分かる。すなわち、失敗する前の成功したバージョンの内容に戻せばよい。
【０１０３】
そこで、テスト機器１０は、図１９に示すような機能構成とすることができる。図１９に示す機能構成は、図４に示す機能構成とほぼ同様であるが、上記の接続部５０、再変更部５１に加えて、第２の記憶部５２をさらに含んで構成される。接続部５０および再変更部５１を含め、第２の記憶部５２以外の機能部については既に説明したので、第２の記憶部５２と各機能部において実行する処理が相違する部分についてのみ説明する。
【０１０４】
実行部４８は、テストの実行に加えて、テスト結果を第２の記憶部５２に記憶させ、テストが失敗した場合に、要求部４３が１つ前のバージョンのシステムプログラムのダウンロードするようにそのバージョンの情報も記憶させる。
【０１０５】
テスト結果は、テスト項目と、成功したバージョンの情報（例えば番号）や失敗を表す情報（例えば「×」）等を含み、失敗した項目を特定することができるようにし、どのバージョンで成功したかが分かるようにする。
【０１０６】
実行部４８は、上記と同様、テストが終了した旨を再変更部５１に対して通知し、再変更部５１が、保存されたブートフラグの情報を読み出し、テスト用記憶装置２５のパーティションテーブルにその情報を書き込み、起動情報を変更する。すなわち、再変更部５１は、再起動により再度第２の制御部４２を起動させるように起動情報を変更する。そして、再変更部５１は、第１の制御部４１に対して再起動を指示し、第１の制御部４１がテスト機器１０を再起動する。
【０１０７】
起動部４０が変更された起動情報に基づき、第２の制御部４２を起動し、第２の制御部４２が要求部４３等を起動する。要求部４３は、第２の記憶部５２に記憶されたバージョンの情報を参照し、そのバージョンのシステムプログラムを、配信サーバ１１に対して要求する。第２の記憶部５２にバージョン情報が記憶されていない場合、要求部４３は、最新のバージョンのシステムプログラムの配信を要求することができる。
【０１０８】
第２の記憶部５２は、テスト用記憶装置２５が備えていてもよいし、テストログサーバ等の他の装置が備えていてもよい。テストログサーバは、テストした履歴（ログ）を記憶し、管理するためのサーバである。ログには、テストを開始した時刻、終了した時刻、システムプログラムのバージョン、成功か失敗か等の情報が含まれる。
【０１０９】
図２０を参照して、システムプログラムのバージョンについて説明する。システムプログラムのリリースのバージョンをN-4、N-3、N-2、N-1、Nで表し、開発者がシステムプログラムの修正等により改訂した回数を表すバージョンを1、2、3、…で表すものとする。開発者の改訂毎にリリースされるものではないため、リリースのバージョンと改訂回数を表すバージョンとは必ずしも一致しない。
【０１１０】
図２０に示す例では、最新のリリースのバージョンは、Ver.Nで、改訂回数を表すバージョンは、Ver.15である。前回のリリース（Ver.N-1）から今回のリリース（Ver.N）までに３回改訂されており、それが、Ver.13、Ver.14、Ver.15となっている。改訂の内容は、例えばOSの変更等が挙げられる。
【０１１１】
失敗の原因が何であるかは、最新のバージョンから１つずつ戻ってテストを繰り返し、どのバージョンで成功するかを調べることにより把握することができる。以下、単にバージョンというときは、改訂回数を表すバージョンとして説明する。
【０１１２】
テスト機器１０で行われるテスト後の処理の詳細について、図２１を参照して説明する。既に最新のバージョンのシステムプログラムがインストールされ、そのテストが行われているものとする。以下、最新のバージョンをVer.15とし、テスト項目がテスト１〜テスト７までの７項目あるものとして説明する。
【０１１３】
ステップ２１００から処理を開始し、ステップ２１０５では、実行部４８が、テスト結果を第２の記憶部５２に記憶させる。テスト結果は、図２２に示すような、テスト項目と、成功の場合のバージョンの番号または失敗を表す記号「×」とを含むことができる。図２２では、最新のバージョン(Ver.15)でテストした結果を、図２２（ａ）に示し、１つ前のバージョン(Ver.14)でテストした結果を、図２２（ｂ）に示し、さらに１つ前のバージョン(Ver.13)でテストした結果を、図２２（ｃ）に示している。例えば、図２２（ｃ）のテスト結果は、テスト１、２、４、５は、Ver.15で成功、テスト３は、Ver.15では失敗したが、Ver.14で成功、テスト６は、Ver.15、Ver14では失敗したが、Ver.13で成功したことを示している。なお、テスト７は、Ver.15、Ver.14、Ver.13のいずれも失敗したことを示している。
【０１１４】
再び図２１を参照して、ステップ２１１０では、実行部４８が、テスト結果から失敗した項目があるかを判断する。実行部４８は、第２の記憶部５２に記憶したテスト結果を参照し、いずれかの項目に「×」が存在するか否かにより、失敗した項目があるかを判断することができる。失敗した項目が１つでもある場合、ステップ２１１５へ進み、今回テストしたシステムプログラムのバージョンの１つ前のバージョンの情報を第２の記憶部５２に記憶させる。そして、ステップ２１２０で、実行部４８は、テストが終了した旨を再変更部５１に対して通知する。
【０１１５】
ステップ２１２５では、再変更部５１が、保存されたブートフラグの情報を読み出し、テスト用記憶装置２５のパーティションテーブルにその情報を書き込み、起動情報を変更する。再変更部５１は、現在テスト機器１０を制御している第１の制御部４１に対して再起動を指示する。
【０１１６】
ステップ２１３０では、第１の制御部４１がテスト機器１０を再起動し、起動部４０が変更された起動情報に基づき、第２の制御部４２を起動し、要求部４３等を起動する。ステップ２１３５では、要求部４３が、第２の記憶部５２に記憶されたバージョンの情報を参照し、配信サーバ１１に対してそのバージョンのシステムプログラムを要求し、ダウンロードする。ステップ２１４０では、処理部４５が、取得したシステムプログラムを記憶部４４にインストールする。
【０１１７】
ステップ２１４５では、変更部４６が、テスト用記憶装置２５のパーティションテーブルのブートフラグの情報を、記憶部４４またはテスト用記憶装置２５が備える第２の記憶部５２に保存する。変更部４６は、テスト用記憶装置２５の起動可能なパーティション情報を消去して、起動情報を変更する。そして、起動指示部４７が、現在テスト機器１０を制御している第２の制御部４２に対して再起動を指示する。
【０１１８】
ステップ２１５０では、第２の制御部４２がテスト機器１０を再起動し、起動部４０が変更された起動情報に基づき、第１の制御部４１を起動し、接続部５０や試験指示部４９を起動し、実行部４８に対してテストを指示する。ステップ２１５５では、実行部４８が、第２の記憶部５２に記憶されたテスト結果を参照し、失敗した項目につき、テストを実行する。テストが終了したところで、ステップ２１０５へ戻る。
【０１１９】
一方、ステップ２１１０で、失敗した項目がないと判断した場合、ステップ２１６０へ進み、この処理を終了する。
【０１２０】
これまでに説明してきた処理では、テスト項目の全てが成功するまで１つ前のバージョンをダウンロードし、テストを繰り返すものとなっている。しかしながら、前回リリースしたバージョンは、既にテスト済みであることから、テストしても無駄になる。したがって、前回リリースしたときのバージョンのシステムプログラムをダウンロードする前に、テストを終了することが望ましい。
【０１２１】
これを実現するための第１の例は、前回リリースしたシステムプログラムの改訂回数を表すバージョン（図２０の例では「１２」）を、配信サーバ１１から取得することである。そのバージョンが分かっていれば、ダウンロードすることなく、テストを終了する（テストの終了条件とする）ことができるからである。
【０１２２】
配信サーバ１１は、システムプログラムをリリースしたときのバージョンを記録しており、テスト機器１０からの要求を受けて、または最新のバージョンをダウンロードするとき等に、前回リリースしたときのバージョンの情報を、テストを行うバージョンの範囲を定める情報として通知することができる。テストを行うバージョン範囲は、インストール済みのシステムプログラムの１つ前のバージョンをスタート（開始対象となる版）、前回リリースしたバージョンをエンド（終了条件となる版）として設定することができる。
【０１２３】
前回リリースしたときのバージョンのシステムプログラムをダウンロードする前に、テストを終了することができれば、そのバージョンの情報に限られるものではない。例えば、前回リリースしたバージョンより後のバージョンがいくつあるかという改訂回数の情報であってもよい。図２０に示す例でいえば、前回のリリース時のバージョンがVer.12であり、その後は、Ver.13、Ver.14、Ver.15と３つあるため、３という情報を通知することができる。
【０１２４】
前回リリースしたときのバージョンの情報や改訂回数の情報を要求する場合、要求部４３がシステムプログラムの要求とともに要求することができる。要求部４３は、システムプログラムの要求と同時ではなく、起動中の任意の時点でその情報を要求してもよい。
【０１２５】
図２３を参照して、この場合のテスト機器１０で行われるテスト後の処理について説明する。ステップ２３００から処理を開始し、ステップ２３０５では、実行部４８が、テスト結果を第２の記憶部５２に記憶する。
【０１２６】
ステップ２３１０では、実行部４８が、テスト結果から失敗した項目があるかを判断する。失敗した項目が１つでもある場合、ステップ２３１５へ進み、１つ前のバージョンの情報を第２の記憶部５２に記憶させる。１つ前のバージョンは、２回目のテスト対象となるバージョンであるため、改訂回数に基づき判断する場合には、その回数の情報も記憶させることができる。そして、ステップ２３２０で、実行部４８は、テストが終了した旨を再変更部５１に対して通知する。
【０１２７】
ステップ２３２５では、再変更部５１が、保存されたブートフラグの情報を読み出し、テスト用記憶装置２５のパーティションテーブルにその情報を書き込み、起動情報を変更する。再変更部５１は、現在テスト機器１０を制御している第１の制御部４１に対して再起動を指示する。
【０１２８】
ステップ２３３０では、第１の制御部４１がテスト機器１０を再起動し、起動部４０が変更された起動情報に基づき、第２の制御部４２を起動し、要求部４３等を起動する。ステップ２３３５では、要求部４３が、第２の記憶部５２に記憶されたバージョンの情報（インストール済みの１つ前以降のシステムプログラムのバージョン情報。図２０の例では「１４」→「１３」→「１２」）を、取得したバージョンの情報（終了条件として取得したシステムプログラムのバージョン情報。図２０の例では「１２」）と比較し、同じバージョンであるかどうかを判断する。改訂回数に基づき判断する場合は、第２の記憶部５２に記憶された回数の情報を、取得した改訂回数の情報と比較し、同じ回数かどうかを判断する。
【０１２９】
同じバージョンまたは同じ回数でない場合は、ステップ２３４０へ進み、要求部４３は、配信サーバ１１に対して第２の記憶部５２に記憶されたバージョンのシステムプログラムを要求し、ダウンロードする。ステップ２３４５では、処理部４５が、取得したシステムプログラムを記憶部４４にインストールする。
【０１３０】
ステップ２３５０では、変更部４６が、テスト用記憶装置２５のパーティションテーブルのブートフラグの情報を、記憶部４４またはテスト用記憶装置２５が備える第２の記憶部５２に保存する。変更部４６は、テスト用記憶装置２５の起動可能なパーティション情報を消去して、起動情報を変更する。そして、起動指示部４７が、現在テスト機器１０を制御している第２の制御部４２に対して再起動を指示する。
【０１３１】
ステップ２３５５では、第２の制御部４２がテスト機器１０を再起動し、起動部４０が変更された起動情報に基づき、第１の制御部４１を起動し、接続部５０や試験指示部４９を起動し、実行部４８に対してテストを指示する。ステップ２３６０では、実行部４８が、第２の記憶部５２に記憶されたテスト結果を参照し、失敗した項目につき、テストを実行する。テストが終了したところで、ステップ２３０５へ戻る。
【０１３２】
一方、ステップ２３１０で、失敗した項目がないと判断した場合、ステップ２３３５で、同じバージョンまたは同じ回数である場合、ステップ２３６５へ進み、この処理を終了する。
【０１３３】
ここでは、再起動後に要求部４３が判断しているが、要求部４３が第２の記憶部５２にバージョン情報または改訂回数の情報を記憶しておき、実行部４８が、今回テストしたバージョンの１つ前のバージョンまたはテストした回数の情報と、第２の記憶部５２に記憶されたバージョンまたは改訂回数の情報とを比較し、判断してもよい。この方が、再起動する手間を省略できるので望ましい。
【０１３４】
第２の例は、テスト機器１０が前回リリースしたバージョンのシステムプログラムを要求してきたとき、配信サーバ１１がそのシステムプログラムを配信せず、エラーを返すことである。エラーが返されれば、テスト機器１０は、そのシステムプログラムをダウンロードすることができず、テストが終了することになるからである。
【０１３５】
この場合、要求部４３がシステムプログラムを要求し、配信サーバ１１からシステムプログラムではなく、エラー通知を受け付けることなる。
【０１３６】
図２４を参照して、この場合のテスト機器１０で行われるテスト後の処理について説明する。ステップ２４００から処理を開始し、ステップ２４０５では、実行部４８が、テスト結果を第２の記憶部５２に記憶する。
【０１３７】
ステップ２４１０では、実行部４８が、テスト結果から失敗した項目があるかを判断する。失敗した項目が１つでもある場合、ステップ２４１５へ進み、実行部４８は、１つ前のバージョンの情報を第２の記憶部５２に記憶させる。そして、ステップ２４２０で、実行部４８は、テストが終了した旨を再変更部５１に対して通知する。
【０１３８】
ステップ２４２５では、再変更部５１が、保存されたブートフラグの情報を読み出し、テスト用記憶装置２５のパーティションテーブルにその情報を書き込み、起動情報を変更する。再変更部５１は、現在テスト機器１０を制御している第１の制御部４１に対して再起動を指示する。
【０１３９】
ステップ２４３０では、第１の制御部４１がテスト機器１０を再起動し、起動部４０が変更された起動情報に基づき、第２の制御部４２を起動し、要求部４３等を起動する。ステップ２４３５では、要求部４３が、第２の記憶部５２に記憶されたバージョンの情報を参照し、配信サーバ１１に対して第２の記憶部５２に記憶されたバージョンのシステムプログラムを要求する。ステップ２４４０では、要求部４３が、要求したシステムプログラムを取得できたかどうかを判断する。
【０１４０】
要求部４３が、要求したシステムプログラムを取得できた場合、ステップ２４４５へ進み、処理部４５が、取得したシステムプログラムを記憶部４４にインストールする。
【０１４１】
ステップ２４５０では、変更部４６が、テスト用記憶装置２５のパーティションテーブルのブートフラグの情報を、記憶部４４またはテスト用記憶装置２５が備える第２の記憶部５２に保存する。変更部４６は、テスト用記憶装置２５の起動可能なパーティション情報を消去して、起動情報を変更する。そして、起動指示部４７が、現在テスト機器１０を制御している第２の制御部４２に対して再起動を指示する。
【０１４２】
ステップ２４５５では、第２の制御部４２がテスト機器１０を再起動し、起動部４０が変更された起動情報に基づき、第１の制御部４１を起動し、接続部５０や試験指示部４９を起動し、実行部４８に対してテストを指示する。ステップ２４６０では、実行部４８が、第２の記憶部５２に記憶されたテスト結果を参照し、失敗した項目につき、テストを実行する。テストが終了したところで、ステップ２４０５へ戻る。
【０１４３】
一方、ステップ２４１０で、失敗した項目がないと判断した場合、ステップ２４４０で、エラーが返され、要求したシステムプログラムを取得できなかった場合、ステップ２４６５へ進み、この処理を終了する。
【０１４４】
このような構成を採用し、システムプログラムの開発者が、テスト用記憶装置２５をテスト機器１０から取り外し、開発者のPC等に接続し、テスト結果を確認することで、どの項目をどのように修正すればよいかを把握することが可能となる。
【０１４５】
これまで本発明を、テスト機器１０としての情報処理装置、情報処理システムおよびコンピュータプログラムとして上述した実施の形態をもって説明してきたが、本発明は上述した実施の形態に限定されるものではない。本発明は、他の実施の形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【０１４６】
したがって、図３に示した各種のプログラムは、インストール可能な形式または実行可能な形式のファイルでフロッピー（登録商標）ディスク、SDメモリカード(SD Memory Card)、USBメモリ(Universal Serial Bus Memory)等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成することができる。また、上記のプログラムは、インターネット等のネットワーク経由で提供または配布するように構成されていてもよい。さらに、上記のプログラムを他の各種ソフトウェアとともにROM等に予め組み込んで提供するように構成してもよい。
【０１４７】
上記の実施形態では、上記の各機能部は、CPU２０が主記憶装置２３やテスト用記憶装置２５に格納されたプログラムを読み出して実行することにより、各機能部を実現するプログラムがRAM２２上にロードされ、上記の各機能部が生成されている。しかしながら、これに限られるものではなく、例えば各機能部のうちの少なくとも一部が専用のハードウェア回路（例えば半導体集積回路）で実現されていてもよい。
【符号の説明】
【０１４８】
１０…テスト機器、１１…配信サーバ、１２…ビルドサーバ、１３…ネットワーク、２０…CPU、２１…起動用ROM、２２…RAM、２３…主記憶装置、２４…リムーバブルメディアスロット、２５…テスト用記憶装置、２６…ネットワークコントローラ、２７…ネットワークI/F、３０…起動プログラム、３１…OS、３２…マウント用プログラム、３３…テスト指示プログラム、３４…OS、３５…ダウンローダ、３６…インストーラ、３７…起動情報変更プログラム、３８…テスト実行プログラム、３９…テストプログラム、４０…起動部、４１…第１の制御部、４２…第２の制御部、４３…要求部、４４…記憶部、４５…処理部、４６…変更部、４７…起動指示部、４８…実行部、４９…試験指示部、５０…接続部、５１…再変更部、５２…第２の記憶部
【先行技術文献】
【特許文献】
【０１４９】
【特許文献１】特開２００９−２９５０６８号公報
【図１】
2018037052.tif 000003
【図２】
2018037052.tif 000004
【図３】
2018037052.tif 000005
【図４】
2018037052.tif 000006
【図５】
2018037052.tif 000007
【図６】
2018037052.tif 000008
【図７】
2018037052.tif 000009
【図８】
2018037052.tif 000010
【図９】
2018037052.tif 000011
【図１０】
2018037052.tif 000012
【図１１】
2018037052.tif 000013
【図１２】
2018037052.tif 000014
【図１３】
2018037052.tif 000015
【図１４】
2018037052.tif 000016
【図１５】
2018037052.tif 000017
【図１６】
2018037052.tif 000018
【図１７】
2018037052.tif 000019
【図１８】
2018037052.tif 000020
【図１９】
2018037052.tif 000021
【図２０】
2018037052.tif 000022
【図２１】
2018037052.tif 000023
【図２２】
2018037052.tif 000024
【図２３】
2018037052.tif 000025
【図２４】
2018037052.tif 000026