(57)【要約】      （修正有）【課題】同一のテストコードによる実機環境及びエミュレータ環境のテストを可能とすると共に、実機環境のテストを、より実際の動作環境に近づける。【解決手段】画像処理装置を制御するプログラムの動作を検証する動作検証装置は、動作検証の工程に従ってプログラムを動作させるテスト実行部２０５と、プログラムの動作結果に基づいてプログラムの動作を検証するテスト判定部２０８と、プログラムが画像処理装置において実行されているか、異なる情報処理装置において実行されているか判断する実行環境判定部２０７と、動作の検証の一工程として操作者による操作を示す工程が生じた場合に、実行環境判定部２０７の判断結果に基づいて異なる制御を行う物理操作コマンド実行部２０６とを備える。【選択図】図５
2016177498.tif 000002
【特許請求の範囲】
【請求項１】
操作者によって操作される装置を制御するプログラムの動作を検証するための機能を提供し、前記装置上及び前記装置とは異なる情報処理装置上でそれぞれ動作する動作検証プログラムであって、
動作検証の工程に従って前記プログラムを動作させるステップと、
前記プログラムの動作結果に基づいて前記プログラムの動作を検証するステップと、
前記プログラムの動作の検証に際して、前記プログラムが前記装置に含まれる情報処理装置において実行されているか、前記装置とは異なる情報処理装置において実行されているか判断するステップと、
動作検証の一工程として操作者による操作を示す工程が生じた場合に、前記動作環境判断部の判断結果に基づいて異なる制御を行うステップとを情報処理装置に実行させることを特徴とする動作検証プログラム。
【請求項２】
前記動作環境判断部の判断結果に基づいて異なる制御を行うステップにおいて、前記プログラムが前記装置とは異なる情報処理装置において実行されている場合、要求された前記操作が行われた場合と同様の信号を生成する信号擬製部に対して、要求された前記操作によって生じる信号の擬製を要求することを特徴とする請求項１に記載の動作検証プログラム。
【請求項３】
前記動作環境判断部の判断結果に基づいて異なる制御を行うステップにおいて、前記プログラムが前記装置に含まれる情報処理装置において実行されている場合、要求された前記操作が行われた後に動作検証の次の工程に進むように制御することを特徴とする請求項１または２に記載の動作検証プログラム。
【請求項４】
前記動作環境判断部の判断結果に基づいて異なる制御を行うステップにおいて、前記プログラムが前記装置に含まれる情報処理装置において実行されている場合、要求された前記操作を操作者に促すための制御を行うことを特徴とする請求項３に記載の動作検証プログラム。
【請求項５】
前記動作環境判断部の判断結果に基づいて異なる制御を行うステップにおいて、前記プログラムが前記装置に含まれる情報処理装置において実行されている場合、要求された前記操作が行われたことを確認した後に動作検証の次の工程に進むように制御することを特徴とする請求項３または４に記載の動作検証プログラム。
【請求項６】
前記動作環境判断部の判断結果に基づいて異なる制御を行うステップにおいて、前記プログラムが前記装置に含まれる情報処理装置において実行されている場合、所定期間待機した後に動作検証の次の工程に進むように制御することを特徴とする請求項３または４に記載の動作検証プログラム。
【請求項７】
動作検証の工程において用いられる命令とその種類とが関連付けられた命令種類情報に基づき、動作検証に含まれる各工程の命令の種類を判断するステップを情報処理装置に実行させ、
前記動作環境判断部の判断結果に基づいて異なる制御を行うステップにおいて、前記各工程の命令の種類の判断結果に基づき、動作検証の一工程として操作者による操作を示す工程が生じたことを認識することを特徴とする請求項１乃至６いずれか１項に記載の動作検証プログラム。
【請求項８】
操作者によって操作される装置を制御するプログラムの動作を検証し、前記装置上及び前記装置とは異なる情報処理装置上でそれぞれ前記プログラムを動作させる動作検証方法であって、
動作検証の工程に従って前記プログラムを動作させ、
前記プログラムの動作結果に基づいて前記プログラムの動作を検証し、
前記プログラムの動作の検証に際して、前記プログラムが前記装置に含まれる情報処理装置において実行されているか、前記装置とは異なる情報処理装置において実行されているか判断し、
動作検証の一工程として操作者による操作を示す工程が生じた場合に、前記動作環境判断部の判断結果に基づいて異なる制御を行うことを特徴とする動作検証方法。
【請求項９】
請求項１乃至７いずれか１項に記載の動作検証プログラムを搭載したことを特徴とする動作検証装置。
【請求項１０】
操作者によって操作される装置を制御するプログラムの動作を検証してプログラムを製造するプログラムの製造方法であって、
製造対象のプログラムを記述し、
動作検証の工程に従って前記プログラムを動作させ、
前記プログラムの動作結果に基づいて前記プログラムの動作を検証し、
前記プログラムの動作の検証に際して、前記プログラムが前記装置に含まれる情報処理装置において実行されているか、前記装置とは異なる情報処理装置において実行されているか判断し、
動作検証の一工程として操作者による操作を示す工程が生じた場合に、前記動作環境判断部の判断結果に基づいて異なる制御を行うことを特徴とするプログラムの製造方法。
【請求項１１】
操作者によって操作される装置を制御するプログラムの動作を検証するための機能を提供し、前記装置上及び前記装置とは異なる情報処理装置上でそれぞれ動作する動作検証プログラムであって、
複数のコマンドを含み、前記プログラムの動作を検証する工程が前記コマンドによって順番に特定された工程情報から、前記工程に従って次に実行すべき一のコマンドを読み取るステップと、
読み取った前記一のコマンドが操作者による操作を示す工程を実行するコマンドであり、前記動作検証プログラムが前記装置上で動作している場合に、操作者による前記操作が行われた後に、前記工程情報から次に実行すべき一のコマンドを読み込ませるよう制御するステップと、
読み取った一のコマンドが操作者による操作を示す工程を実行するコマンドであり、前記動作検証プログラムが前記情報処理装置上で動作している場合には、エミュレータに対して、前記操作が行われた場合と同様の信号の生成を要求した後に、前記工程情報から次に実行すべき一のコマンドを読み込ませるよう制御するステップとを、前記装置または前記情報処理装置に実行させることを特徴とする動作検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動作検証装置、動作検証方法、動作検証プログラム及びプログラムの製造方法に関する。
【背景技術】
【０００２】
近年のソフトウェア開発ではテスト駆動開発が主流となっている。テスト駆動開発において、開発者は開発対象のプログラムであるプロダクトコードを作成すると共に、そのプロダクトコードをテストするためのテストコードを作成する。そして、そのテストコードに基づいてプロダクトコードを動作させることにより、プロダクトコードの動作検証が実行される。
【０００３】
テスト対象のプログラムには、大きく分けるとＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等の一般的な情報処理装置で動作し、単純な情報処理及び画面表示のみを行うプログラムと、装置の物理的な動作を制御する制御用のプログラムとがある。そして、作成された制御用のプログラムが設計通りに動作するかを確認するテストを行う場合、作成された制御用のプログラムを制御対象の装置に実際に搭載した上でテストを行う必要がある。
【０００４】
他方、開発段階で開発対象のプログラムの動作を確認したい場合に、開発対象のプログラムを装置に搭載させた上でテストを逐一行うことは非効率である。従って、開発対象のプログラムに対する制御対象の装置の動作をエミュレートするエミュレータ環境でのテストが行われる。
【０００５】
そのようなエミュレータ環境でのテストを効率化するための方法として、装置の実際の動作に応じて発生する信号等を記憶しておき、記憶された信号等をテストの進行に応じてエミュレータ、装置の両方で再生する方法が提案されている（例えば、特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に開示された方法の場合、実機環境でのテストとエミュレータ環境でのテストとでは、それぞれ異なるテストコードを用いてテストを行う必要があり、テストコードの作成の面で工数が増えてしまう。また、実機環境でのテストにおいても、装置を構成するハードウェアを動作させた場合の信号についてはエミュレーションされた信号が用いられるため、実際に装置が操作された場合のテストにはならない。即ち、実機環境でのテストが不完全である。
【０００７】
本発明は、このような課題を解決するためになされたものであり、同一のテストコードによる実機環境及びエミュレータ環境でのテストを可能とすると共に、実機環境のテストを、より実際の動作環境に近づけることを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明の一態様は、操作者によって操作される装置を制御するプログラムの動作を検証する動作検証装置であって、動作検証の工程に従って前記プログラムを動作させる命令実行部と、前記プログラムの動作結果に基づいて前記プログラムの動作を検証する動作検証部と、前記プログラムが前記装置に含まれる情報処理装置において実行されているか、前記装置とは異なる情報処理装置において実行されているか判断する動作環境判断部と、動作の検証の一工程として操作者による操作を示す工程が生じた場合に、前記動作環境判断部の判断結果に基づいて異なる制御を行う操作命令処理部とを含むことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、同一のテストコードによる実機環境及びエミュレータ環境でのテストを可能とすると共に、実機環境のテストを、より実際の動作環境に近づけることができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に係るテスト対象のプログラムが搭載される画像処理装置のハードウェア構成を示すブロック図である。
【図２】本発明の実施形態に係るテスト対象のプログラムが搭載される画像処理装置のソフトウェア構成を示す図である。
【図３】本発明の実施形態に係る実機環境でのテストの態様を示す図である。
【図４】本発明の実施形態に係るエミュレータ環境でのテストの態様を示す図である。
【図５】本発明の実施形態に係るテストプログラムの機能構成を示す図である。
【図６】本発明の実施形態に係るテストシナリオの例を示す図である。
【図７】本発明の実施形態に係るテスト仕様書の例を示す図である。
【図８】本発明の実施形態に係るコマンド定義テーブルの例を示す図である。
【図９】本発明の実施形態に係るテストプログラムの動作を示すフローチャートである。
【図１０】本発明の他の実施形態に係るシステムの運用形態を示す図である。
【図１１】本発明の他の実施形態に係るテスト振り分けサーバの機能構成を示すブロック図である。
【図１２】本発明の他の実施形態に係る機器情報テーブルの例を示す図である。
【図１３】本発明の他の実施形態に係るテスター情報テーブルの例を示す図である。
【図１４】本発明の他の実施形態に係るテストシナリオの例を示す図である。
【図１５】本発明の他の実施形態に係るテスト振り分け動作を示すフローチャートである。
【図１６】本発明の他の実施形態に係るテストプログラムの機能構成を示すブロック図である。
【発明を実施するための形態】
【００１１】
実施の形態１．
以下、図面を参照して、本発明の実施形態について説明する。本実施形態においては、プリンタ、スキャナ等の機能を複合的に含むＭＦＰ（ＭｕｌｔｉＦｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ：複合機）を制御するためのソフトウェア・プログラムの動作テストを例として説明する。
【００１２】
ＭＦＰを制御するためのプログラムの動作検証には、テスト対象のプログラムを実機であるＭＦＰ上で動作させて動作検証する場合と、テスト対象のプログラムをＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等の情報処理装置を用いたエミュレータ環境で動作させて動作検証する場合とがある。異なるテスト環境を識別してテスト対象のプログラムの動作検証を行うと共に、実機環境での動作検証においては、より実際の動作環境に近い状態での動作検証を実現することが本実施形態に係る要旨の１つである。
【００１３】
まず、テスト対象のプログラムが搭載されるＭＦＰである画像処理装置のハードウェア構成について説明する。図１は、本実施形態に係る画像処理装置１のハードウェア構成を示すブロック図である。図１に示すように、本実施形態に係る画像処理装置１は、一般的なサーバやＰＣ等の情報処理端末と同様の構成に加えて、画像形成を実行するエンジンを有する。即ち、本実施形態に係る画像処理装置１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２、エンジン１３、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１４及びＩ／Ｆ１５がバス１８を介して接続されている。また、Ｉ／Ｆ１５にはＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）１６及び操作部１７が接続されている。
【００１４】
ＣＰＵ１０は演算手段であり、画像処理装置１全体の動作を制御する。ＲＡＭ１１は、情報の高速な読み書きが可能な揮発性の記憶媒体であり、ＣＰＵ１０が情報を処理する際の作業領域として用いられる。ＲＯＭ１２は、読み出し専用の不揮発性記憶媒体であり、ファームウェア等のプログラムが格納されている。エンジン１３は、画像処理装置１において実際に画像形成を実行する機構である。この機構には、例えばスキャナやプリンタが含まれる。
【００１５】
ＨＤＤ１４は、情報の読み書きが可能な不揮発性の記憶媒体であり、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）や各種の制御プログラム、アプリケーション・プログラム等が格納されている。Ｉ／Ｆ１５は、バス１８と各種のハードウェアやネットワーク等を接続し制御する。ＬＣＤ１６は、各種情報を表示するための視覚的ユーザインタフェースである。操作部１７は、画面上に構成されるタッチパネルや、各種のハードキー等、ユーザが画像処理装置１に情報を入力するためのユーザインタフェースである。
【００１６】
このようなハードウェア構成において、ＲＯＭ１２に格納されたプログラムや、ＨＤＤ１４若しくは図示しない光学ディスク等の記録媒体からＲＡＭ１１に読み出されたプログラムに従ってＣＰＵ１０が演算を行うことにより、ソフトウェア制御部が構成される。このようにして構成されたソフトウェア制御部と、ハードウェアとの組み合わせによって、本実施形態に係る画像処理装置１の機能を実現する機能ブロックが構成される。
【００１７】
次に、本実施形態に係る画像処理装置１において装置を制御するソフトウェアの構成について図２を参照して説明する。図２に示すように、本実施形態に係る画像処理装置１は、ソフトウェア構成として基本制御層１００、サービス層１１０、サービスサポート層１２０、サービスランタイム層１３０及び抽象機器層１４０を含む。
【００１８】
基本制御層１００は、ＯＳのような基本ソフトウェア及びデバイスドライバによって構成される。サービス層１１０は、画像処理装置１によってユーザに提供される各種の機能を担う層であり、プリントアウトやスキャン等の機能をユーザが利用する際のユーザインタフェースとしてのアプリケーション等が含まれる。
【００１９】
サービスサポート層１２０は、サービス層１１０に含まれる各種の機能において共通で利用される機能を提供する層である。サービスランタイム層１３０は、各種のサービスの管理、画像処理装置１に搭載されるデバイスの管理、認証処理の管理、ストレージの管理等の機能を提供する層である。
【００２０】
抽象機器層１４０は、エンジン１３として搭載されている各種のデバイスの状態に応じて得られる情報を抽象化して他のモジュールに伝える機能を提供する層である。図２に示すように、抽象機器層１４０は、プリンタ、スキャナ、イメージプロセッサ、ＦＡＸ等の夫々に対応したモジュールの群として構成される。
【００２１】
このようなソフトウェア構成において、本実施形態に係るテスト対象のプログラムは、抽象機器層１４０である。図３は、抽象機器層１４０に含まれるテスト対象のプログラムを実機環境で動作検証する場合の態様を示す図である。図３に示すように、抽象機器層１４０に含まれるテスト太陽のプログラムの実機環境における動作検証においては、図２において説明したソフトウェアのプログラムに加え、動作検証を行うためのテストプログラム２００が画像処理装置１において動作する。テスト対象のプログラムの動作検証を行うテスターは、テスト仕様書を確認しつつ画像処理装置１を操作することにより、動作検証を実現する。
【００２２】
他方、図４は、抽象機器層１４０に含まれるテスト対象のプログラムをエミュレータ環境で動作検証する場合の態様を示す図である。図４に示すように、抽象機器層１４０に含まれるテスト対象のプログラムのエミュレータ環境における動作検証においては、図２において説明したソフトウェアのプログラム及びテストプログラム２００がＰＣ等の情報処理装置上で動作する。更に、テスト対象のプログラムに対してエンジン１３をエミュレーションするためのエミュレータ３００が動作することにより、エミュレータ環境でのテストが実現される。エミュレータ３００とは、換言すると、エンジン１３が操作者であるテスターによって操作された場合に発生する信号と同様の信号を生成する信号擬製部である。
【００２３】
そして、本実施形態に係るテストプログラム２００は、図３に示す実機環境及び図４に示すエミュータ環境のいずれにおいても動作可能な機能を含む。このようなテストプログラム２００の機能が本実施形態に係る要旨の１つである。
【００２４】
次に、本実施形態に係るテストプログラム２００の機能構成について図５を参照して説明する。図５に示すように、本実施形態に係るテストプログラム２００は、テストシナリオ記憶部２０１、テスト読取部２０２、コマンド定義記憶部２０３、コマンド解釈部２０４、テスト実行部２０５、物理操作コマンド実行部２０６、実行環境判定部２０７及びテスト判定部２０８を含む。
【００２５】
そして、エミュレータ環境による動作検証の場合にはエミュレータ３００が動作し、実機環境の動作検証の場合にはエンジン１３が動作して、テスト対象のプログラムであるテスト対象プログラム４００の動作検証が行われる。尚、テスト対象プログラム４００は、上述したように、本実施形態においては抽象機器層１４０に含まれるプログラムである。図５に示すようなテストプログラム２００がインストールされ、環境に応じてエミュレータ３００がインストールされた装置が動作検証装置として機能する。
【００２６】
テストシナリオ記憶部２０１は、プログラムの動作検証において実行されるテストのシナリオが記述された図６に示すようなテストシナリオが記憶される記憶部である。本実施形態に係るテストシナリオは、図２において説明したソフトウェアや、エンジン１３に含まれるハードウェアの動作を指示するコマンドによって記述されている。即ち、テストシナリオの情報が、プログラムの動作を検証する工程が複数のコマンドによって順番に特定された工程情報である。テストプログラム２００は、テストシナリオ記憶部２０１に記憶されたテストシナリオに従って動作検証を実行する。
【００２７】
図６に示すテストシナリオは、図７に示すようなテスト仕様書に基づいて作成され、テストシナリオ記憶部２０１に記憶される。テスト読取部２０２は、図６に示すテストシナリオに含まれるコマンドを読み取り、コマンド解釈部２０４に入力する。コマンド定義記憶部２０３は、コマンド定義テーブルを記憶する記憶部である。コマンド定義テーブルは、図８に示すように、テストシナリオに記述されるコマンド毎に、コマンドの種類が関連付けられた情報である。図８に示すコマンド定義テーブルは、換言すると、動作検証の工程において用いられる命令とその種類とが関連付けられた命令種類情報である。
【００２８】
図８に示すように、本実施形態に係るコマンドの種類としては、物理操作コマンド、命令実行コマンド、テスト判定コマンド等がある。物理操作コマンドは、例えばスキャナカバーの開閉を示す“ｏｐｅｎＣｏｖｅｒ”、“ｃｌｏｓｅＣｏｖｅｒ”等のコマンドである。命令実行コマンドは、例えば、スキャン実行を示す“Ｓｃａｎ”等のコマンドである。テスト判定コマンドは、動作結果の検証のために画像の比較を指示する“Ｃｏｍｐａｒｅｉｍａｇｅ”等のコマンドである。
【００２９】
コマンド解釈部２０４は、コマンド定義記憶部２０３に記憶されているコマンド定義テーブルに基づいて、テスト読取部２０２から入力されたコマンドの種類を解釈する。即ち、入力されたコマンドに係る命令の種類を判断する命令種類判断部として機能する。具体的には、コマンド解釈部２０４は、テスト読取部２０２から入力されたコマンドをコマンド定義テーブルの中から検索し、検索したコマンドに関連付けて記憶されている種類を取得する。
【００３０】
さらに、コマンド解釈部２０４は、コマンド定義テーブルから取得したコマンドの種類に応じて、テスト読取部２０２から入力されたコマンドを、テスト実行部２０５、物理操作コマンド実行部２０６、テスト判定部２０８のいずれかに振り分ける。具体的には、取得したコマンドが物理操作コマンドである場合は物理操作コマンド実行部２０６へ、取得したコマンドがテスト実行コマンドである場合はテスト実行部２０５へ、取得したコマンドがテスト判定コマンドである場合はテスト判定部２０８へ、テスト読取部２０２から入力されたコマンドをコマンド解釈部２０４がそれぞれ振り分ける。
【００３１】
テスト実行部２０５は、コマンドの種類がテスト実行コマンドであるコマンドがコマンド解釈部２０４から振り分けられると、振り分けられたコマンドに係る命令をテスト対象のプログラムに対して入力することにより、振り分けられたコマンドに係る命令のテストを実行する命令実行部である。例えば、振り分けられたコマンドが“Ｓｃａｎ”コマンドの場合、図２に示すような各種のソフトウェアのうち、スキャン動作において動作するソフトウェアを動作させるための制御を行う。
【００３２】
物理操作コマンド実行部２０６は、コマンドの種類が物理操作コマンドであるコマンドがコマンド解釈部２０４から振り分けられると、振り分けられたコマンドに基づく命令を、実行環境判定部２０７によるテスト環境の判定結果に応じて実行する操作命令処理部である。実行環境判定部２０７は、テスト環境が図３に示す実機環境であるか、図４に示すエミュレータ環境であるかを判断する動作環境判断部である。
【００３３】
実機環境とは、即ち画像処理装置１に含まれる図１に示すような情報処理装置の構成によってテスト対象のプログラムが実行されている環境である。他方、エミュレータ環境とは、画像処理装置１とは異なる情報処理装置によってテスト対象のプログラムが実行されている環境である。
【００３４】
実行環境判定部２０７によるテスト環境の判断は、例えばテスターによって設定された識別子に基づいて実行される。即ち、テスターは、動作検証の実行に際して、実機環境であるかエミュレータ環境であるかを示す識別子を実行環境判定部２０７に設定する。実行環境判定部２０７は、そのようにテスターによって設定された識別子に基づいて実行環境を判断する。
【００３５】
物理操作コマンド実行部２０６は、実行環境判定部２０７による判断結果が実機環境である場合に、テスターに行わせるべき手動操作の内容をＬＣＤ１６に表示させるための処理を行う。これにより、テスターは、ＬＣＤ１６の表示を確認した上で、テストの続行に必要な手動操作を行う。
【００３６】
他方、実行環境判定部２０７による判断結果がエミュレータ環境である場合、物理操作コマンド実行部２０６は、指定された物理操作の内容をエミュレータ３００にエミュレーションさせるための処理を行う。例えば、コマンド解釈部２０４から振り分けられたコマンドが“ｏｐｅｎＣｏｖｅｒ”コマンドである場合、スキャナのカバーが開かれた際にデバイスドライバを介して抽象機器層１４０が受け取るべき信号を、エミュレータ３００に出力させる。これにより、スキャナのカバーが手動操作により開かれた場合と同様の状態が再現され、そのような状態を用いた抽象機器層１４０のテストを行うことが可能となる。
【００３７】
物理操作コマンド実行部２０６によるこのような処理は、コマンド解釈部２０４から物理操作コマンドが振り分けられた場合、即ち、動作検証の一工程として、操作者による操作を示す工程が生じた場合に実行される。
【００３８】
テスト判定部２０８は、コマンドの種類がテスト判定コマンドであるコマンドがコマンド解釈部２０４から振り分けられると、振り分けられたコマンドに基づいて、テスト対象プログラム４００の動作内容を検証する動作検証部である。即ち、テスト実行部２０５や物理操作コマンド実行部２０６の機能によりテスト対象プログラム４００が動作し、テスト判定部２０８の機能により、最終的な動作の検証が行われる。
【００３９】
次に、本実施形態に係るテストプログラム２００の動作について図９のフローチャートを参照して説明する。図６に示すようなテストシナリオに基づいて動作検証が開始されると、テスト読取部２０２がテストシナリオを読み取り、順番にコマンドを選択してコマンド解釈部２０４に入力する（Ｓ９０１）。コマンド解釈部２０４は、テスト読取部２０２から入力されたコマンドの種類を、コマンド定義記憶部２０３に記憶されているコマンド定義テーブルを参照して判断する（Ｓ９０２、Ｓ９０８）。
【００４０】
尚、図９に示すフローチャートにおいては、先に物理操作コマンドであるか否かを判断し、次に命令実行コマンドであるか否かを判断し、そのいずれでもない場合にはテスト判定コマンドであると判定する手順となっている。しかしながらこれは一例であり、夫々の判断結果に応じた処理が実行されれば、どのような順番で判断しても良い。
【００４１】
Ｓ９０２において、入力されたコマンドの種類が物理操作コマンドであるとコマンド解釈部２０４により判断された場合（Ｓ９０２／ＹＥＳ）、コマンド解釈部２０４は、入力されたコマンドを物理操作コマンド実行部２０６に入力する。コマンド解釈部２０４からコマンドを入力された物理操作コマンド実行部２０６は、実行環境判定部２０７に動作検証の実行環境を問い合わせる（Ｓ９０３）。
【００４２】
実行環境判定部２０７により実行環境がエミュレータ環境であると判断された場合（Ｓ９０４／ＹＥＳ）、物理操作コマンド実行部２０６は、コマンド解釈部２０４から入力されたコマンドに基づき、エミュレータ３００に対して物理操作のエミュレーションを要求する（Ｓ９０５）。他方、実行環境判定部２０７により実行環境が実機環境であると判断された場合（Ｓ９０４／ＮＯ）、物理操作コマンド実行部２０６は、エミュレータ環境とは異なる制御として、ＬＣＤ１６に、テスターが行うべき物理的な操作の内容を示す表示を行う（Ｓ９０６）。
【００４３】
Ｓ９０６の処理は、換言すると、テストシナリオに記述されている動作検証の工程のうち、装置に含まれる機械的な構成の操作を操作者に促すための制御である。そのための態様はＬＣＤ１６へのガイド表示に限らず、音声による通知や、ＬＥＤ等の発光素子の発光制御でも良い。
【００４４】
Ｓ９０６の処理の後、テスターによる実機の操作が行われるまで処理が待機される（Ｓ９０７／ＮＯ）。テスターによる実機の操作が行われた場合（Ｓ９０７／ＹＥＳ）、若しくはＳ９０５の処理が完了した場合、１つの物理操作コマンドについての処理が完了する。
【００４５】
Ｓ９０７においては、例えば物理操作コマンド実行部２０６がテスト対象プログラム４００の状態を監視することにより、テスターによる実機の操作が行われたか否かを判断してテスト読取部２０２に通知する。この他、予め定められた所定期間待機することにより操作が行われたものとみなしてテスト読取部２０２に通知を行っても良い。
【００４６】
このように、本実施形態に係るテストプログラム２００においては、テストシナリオに物理操作コマンドが含まれる場合、実行環境判定部２０７の機能に基づいて物理操作コマンド実行部２０６が実機環境／エミュレータ環境を判断する。そして、エミュレータ環境のテストの場合にはエミュレータ３００に対してエミュレーションを要求する。
【００４７】
他方、実機環境の場合には、テスターによるエンジン１３の操作を待ち、エンジン１３の操作によって装置内に生じた信号に応じてテストを続行する。このような制御により、実機環境、エミュレータ環境のいずれにおいても同一のテストプログラムによるテストを行うことが可能となる。また、実機環境のテストの場合には、エンジン１３の動作も含めて動作が正常に完了したことを確認することが可能となる。
【００４８】
Ｓ９０２において、入力されたコマンドの種類が物理操作コマンドでないとコマンド解釈部２０４により判断された場合（Ｓ９０２／ＮＯ）、次にコマンド解釈部２０４は、入力されたコマンドの種類が命令実行コマンドかを判断する（Ｓ９０８）。Ｓ９０８において、入力されたコマンドの種類が命令実行コマンドであるとコマンド解釈部２０４により判断された場合（Ｓ９０８／ＹＥＳ）、コマンド解釈部２０４は、入力されたコマンドをテスト実行部２０５に入力する。そして、テスト実行部２０５は、入力されたコマンドに応じた処理をテスト対象プログラム４００に対して実行させる（Ｓ９０９）。これにより、１つの命令実行コマンドについての処理が完了する。
【００４９】
Ｓ９０８において、入力されたコマンドの種類が命令実行コマンドでないとコマンド解釈部２０４により判断された場合（Ｓ９０８／ＮＯ）、コマンド解釈部２０４は、入力されたコマンドの種類はテスト判定コマンドであると判断する。そして、コマンド解釈部２０４は、入力されたコマンドをテスト判定部２０８に入力する。これにより、テスト判定部２０８は、入力されたコマンドに応じたテスト判定を行う（Ｓ９１０）
【００５０】
ここで、テスト判定部２０８が行うテスト判定に係る処理には、例えば、テスト対象プログラム４００から取得した情報と、コマンドと共に入力された情報とを比較する処理や、テスト対象プログラムの状態が指定された状態となっているか確認する処理等が含まれる。そして、テスト判定部２０８は、テスト判定の結果を確認する（Ｓ９１１）。
【００５１】
Ｓ９１０の処理により確認された結果が定められた結果とは異なり、テスト結果がＮＧであった場合（Ｓ９１１／ＮＯ）、テスト判定部２０８は、エラー処理を行って（Ｓ９１２）処理を終了する。これにより、テスターは動作検証の結果が意図した結果とは異なる結果であることを認識する。他方、テスト結果がＯＫであった場合（Ｓ９１１／ＹＥＳ）、１つのテスト判定コマンドの処理が完了する。
【００５２】
物理操作コマンド、命令実行コマンド、テスト判定コマンドのいずれの場合においても、１つのコマンドが完了した場合、テスト読取部２０２は、テストシナリオにコマンドが残っているか否か確認する（Ｓ９１２）。そして、コマンドが残っていれば（Ｓ９１２／ＮＯ）、テスト読取部２０２は、Ｓ９０１からの処理を繰り返す。他方、コマンドが残っていない場合（Ｓ９１２／ＹＥＳ）、テスト読取部２０２は処理を終了する。
【００５３】
このように、本実施形態に係る動作検証プログラムにおいては、テストシナリオから読み取った一のコマンドが、操作者による操作を示すものであり、且つ動作検証プログラムが実機環境での動作である場合、操作者による操作が行われるまで待機する。そして、操作者による操作が行われた後に、次に実行するべきコマンドをテストシナリオから読み込ませるように制御する。
【００５４】
他方、テストシナリオから読み取った一のコマンドが、操作者による操作を示すものであり、且つ動作検証プログラムがエミュレータ環境での動作である場合、エミュレータに対して、操作が行われた場合と同様の信号の生成を要求する。そして、その後に、次に実行するべきコマンドをテストシナリオから読み込ませるように制御する。
【００５５】
以上、説明したように、本実施形態に係る動作検証装置においては、実機環境／エミュレータ環境の判断に基づいて異なる制御を行ってテストを続行する。そのため、異なる制御によって夫々のテスト環境に対応することが可能であり、同一のテストコードによる実機環境及びエミュレータ環境のテストが可能となる。また、実機環境におけるテストの場合には、エミュレータを用いずにエンジン１３に対する操作によって生じる変化に基づいてテストを行う。従って、実機環境のテストを、より実際の動作環境に近づけることができる。そして、このような動作検証を経てプログラムを製造することにより、良好なプログラムを製造することが可能となる。
【００５６】
尚、上記実施形態においては、図８に示すようなコマンド定義テーブルが設けられており、コマンド解釈部２０４がコマンドの種類に応じてコマンドを振り分ける場合を例として説明した。しかしながらこれは一例であり、例えば、テストシナリオ及びテストプログラム２００を一体として作成する場合には、図９のＳ９０２、Ｓ９０７のような判断ステップではなく、夫々のコマンドに応じた処理が記述されたプログラムが作成される場合もある。
【００５７】
また、上記実施形態においては、Ｓ９０３の判断の結果、実機環境であった場合にはガイド表示を行う場合を例として説明した。しかしながらこれは一例であり、テスターがテスト仕様書や画像処理装置１に設けられたディスプレイパネルを確認しながらテストを行う場合には、ガイド表示が不要な場合もある。
【００５８】
また、上記実施形態においては、実機環境の場合、操作者の操作を待つ場合を例として説明した。この他、例えば動作検証用のロボットにより自動的に物理操作を行わせる場合には、操作内容に応じた制御をロボットに対して行うようにしても良い。
【００５９】
実施の形態２．
実施の形態１においては、実機環境のテストにおいては、画像処理装置１にテストプログラムがインストールされて動作検証が実行される場合を例として説明した。しかしながら、そのような前提として、テストシナリオにおいて必要となるエンジン１３の操作に対応したデバイスがエンジン１３として含まれる画像処理装置１を対象の装置とする必要がある。
【００６０】
例えば、中綴じ、紙折り、ステープル等、特定のフィニッシャを用いるテストには、そのようなフィニッシャが接続された画像処理装置を用いて動作検証を行う必要がある。そして、テストシナリオに含まれる操作対象のデバイスを含まない画像処理装置１では、意図した通りのテストを行うことは出来ない。
【００６１】
本実施形態においては、そのようなテストの内容に応じたテスト対象の装置の選択、振り分けを可能とする態様について説明する。それに加えて、本実施形態においては、利き手、身長等のテスター個人の特徴に基づいてテストを行う装置を振り分ける態様についても説明する。
【００６２】
図１０は、本実施形態に係る動作検証装置を含むシステムの運用形態を示す図である。図１０に示すように、本実施形態にシステムにおいては、複数の画像処理装置１ａ、１ｂ、１ｃ・・・が、ネットワークを介してテスト振り分けサーバ２に接続されて構成されている。
【００６３】
画像処理装置１ａ、１ｂ、１ｃは、実施の形態１において説明した画像処理装置１と同様に、テスト対象のプログラムがインストールされる装置であり、実機環境における動作検証において、テスト対象のプログラムがインストールされる。また、本実施形態に係る画像処理装置１ａ、１ｂ、１ｃは、夫々異なるハードウェア構成を含む。
【００６４】
画像処理装置１ａ、１ｂ、１ｃにおけるハードウェア構成の違いとは、例えば、接続されたフィニッシャの違い、用紙を供給するトレイの数の違い、カラー／モノクロの違い、対応する用紙サイズの違い等である。このように、ハードウェア構成の異なる複数の装置が用意されていることにより、様々な種類のテストに対応することが可能となる。
【００６５】
既にエミュレータ環境でのテストが完了し、エミュレータ環境では正確に動作することが確認されたテスト対象プログラム４００を、実機環境でテストすることが本実施形態に係るシステムが用いられる前提である。そのような場合において、様々なテストを行うためには、様々なハードウェア構成での動作検証を行う必要がある。そして、ハードウェア構成の種類によっては、１つの装置に共存させることが不可能なものもある。
【００６６】
そのような場合、複数の装置を用意し、夫々の装置に同一のテスト対象プログラム４００をインストールして動作させてテストを行うこととなる。従って、異なるハードウェア構成でのテストを行うため、夫々のハードウェア構成に応じたテストシナリオが作成されることとなる。そのような場合において、テストシナリオの内容とハードウェア構成とを確認しつつテストを行うことはテスターの作業負担が大きい。
【００６７】
本実施形態に係るシステムは、ハードウェア構成の異なる装置に対応して複数のテストシナリオが作成された場合において、夫々のテストシナリオに基づくテストをどの装置において実行すれば良いかを自動的に判断可能なシステムである。テスト振り分けサーバ２は、実機環境における動作検証に際し、実行するテストの内容に応じてテストを実行する装置を画像処理装置１ａ〜１ｃから選択してテストを実行させる。テスト振り分けサーバ２の機能が本実施形態に係る要旨の１つである。
【００６８】
図１１は、テスト振り分けサーバ２の機能構成を示すブロック図である。図１１に示すように、本実施形態に係るテスト振り分けサーバ２は、振り分け情報記憶部５０１、振り分け情報管理部５０２、シナリオ記憶部５０３、テスト管理部５０４及びテスト振り分け部５０５を含む。
【００６９】
振り分け情報記憶部５０１は、テスト対象の装置を選択するための情報（以降、「振り分け情報」とする）を記憶している記憶部である。本実施形態に係る振り分け情報は、機器情報テーブル及びテスター情報テーブルを含む。図１２は、機器情報テーブルの例を示す図である。
【００７０】
図１２に示すように、本実施形態に係る機器情報テーブルは、画像処理装置１ａ〜１ｃを識別する“機器ＩＤ”、画像処理装置１ａ〜１ｃを操作する“テスター”、“フィニッシャ”、“ＡＤＦ”、“トレイの数”、“対応カラー”、“対応サイズ”が関連付けられた情報である。このような情報により、画像処理装置１ａ〜１ｃについて、操作するテスターや含まれるハードウェア構成が認識される。
【００７１】
図１３は、本実施形態に係るテスター情報テーブルの例を示す図である。図１３に示すように、本実施形態に係るテスター情報テーブルは、テスターを識別する“テスターＩＤ”、“身長”、“視力”、“体力”、“資格”の情報が関連付けられた情報である。このような情報により、画像処理装置１ａ〜１ｃを夫々操作するテスターの情報が認識される。
【００７２】
振り分け情報管理部５０２は、図１２、図１３に示すような振り分け情報を管理する。シナリオ記憶部５０３は、上述したように異なるハードウェア構成に対応して作成された複数のテストシナリオを記憶する記憶部である。図１４は、本実施形態に係るテストシナリオの内容を示す図である。
【００７３】
図１４に示すように、本実施形態に係るテストシナリオは図６に示すようなコマンドの情報に加えて“テスト環境条件”の情報を含む。図１４に示すように、テスト環境条件の情報により、そのテストシナリオによって実行されるテストに必要とされるデバイスが指定される。
【００７４】
テスト管理部５０４は、シナリオ記憶部５０３に記憶された情報を読み込んでテスト振り分け部５０５に入力することにより、テストの振り分けを要求する。その際、テスト管理部５０４は、図１４に示す“テスト環境条件”をテスト振り分け部５０５に通知することにより、必要なデバイスを含む装置でのテストを依頼する。
【００７５】
テスト振り分け部５０５は、テスト管理部５０４からの要求に応じて、テスト振り分け情報管理部５０２に適切な装置を問い合わせる。その際、振り分け情報管理部５０２は、テスト振り分け部５０５から“テスト環境条件”を取得して図１２に示す機器情報テーブルを参照し、“テスト環境条件”で指定されているデバイスを含む画像処理装置１ａ〜１ｃの機器ＩＤをテスト振り分け部５０５に通知する。
【００７６】
このようにして通知された機器ＩＤに基づき、テスト振り分け部５０５は画像処理装置１ａ〜１ｃのうち指定された装置に対してテストシナリオを送信して動作検証を実行させる。
【００７７】
本実施形態に係る画像処理装置１ａ〜１ｃには図５に示すテストプログラム２００が予めインストールされている。そして、テスト振り分けサーバ２から送信されたテストシナリオがテストシナリオ記憶部２０１に保存され、図９において説明した動作が実行される。
【００７８】
次に、本実施形態に係るテスト振り分けサーバ２の動作について図１５を参照して説明する。図１５に示すように、まずはテスト管理部５０４がシナリオ記憶部５０３に記憶されたテストシナリオを読み込む（Ｓ１５０１）。
【００７９】
テスト管理部５０４は、シナリオ記憶部５０３からテストシナリオを読み込むと、上述したように図１４に示す“テスト環境条件”の情報を読み込む（Ｓ１５０２）。テスト管理部５０４は、そのようにして“テスト環境条件”の情報をテストシナリオから抽出して読み込むと、テストシナリオと共にテスト振り分け部５０５に入力する。
【００８０】
テスト管理部５０４から情報を取得したテスト振り分け部５０５は、入力された“テスト環境条件”を通知し、振り分け情報管理部５０２に対して振り分け先の装置の選択を要求する。これにより、振り分け情報管理部５０２は、上述したように図１２に示す機器情報テーブルを参照して、テストの振り分け先の装置を選択する（Ｓ１５０３）。振り分け情報管理部５０２は、その選択結果をテスト振り分け部５０５に通知する。
【００８１】
テスト振り分け部５０５は、テスト管理部５０４から取得したテストシナリオを、振り分け情報管理部５０２から通知された選択結果に応じた装置に送信してテストの実行を要求する（Ｓ１５０４）。このような動作により、本実施形態に係るテスト振り分けサーバ２の動作が完了する。
【００８２】
以上、説明したように、本実施形態に係るテスト振り分けサーバ２の機能によれば、作成されたテストシナリオにおいて指定されている動作に対応したデバイスを含む装置においてテストが自動的に実行されるため、テスターの負担を軽減することが出来る。
【００８３】
上述したように、テスト実行要求を受けた画像処理装置１ａ〜１ｃにおいては、既にインストールされているテストプログラム２００が情報を取得し、テストシナリオの記憶を行ってテストを実行する。図１６を参照して、本実施形態に係るテストプログラム２００の機能について説明する。
【００８４】
図１６に示すように、本実施形態に係るテストプログラム２００は、テスト要求受付部２１０を含む点が図５の態様とは異なる。テスト要求受付部２１０は、図１５のＳ１５０４において送信されたテスト要求及びテストシナリオを取得し、テストの実行制御を行う。
【００８５】
そのため、テスト要求受付部２１０は、取得したテストシナリオをテストシナリオ記憶部２０１に記憶させる。これにより、実施の形態１において説明したように、実行するべきテストのテストシナリオがテストシナリオ記憶部２０１に記憶される。
【００８６】
テスト要求受付部２１０は、このような処理によって動作検証の実行に係る準備を整えると、テスト読取部２０２に対してテストの実行を指示する。これにより、実施の形態１において説明したように、図９に示すフローチャートに従って動作検証が実行される。
【００８７】
上記実施形態においては、シナリオ記憶部５０３にテストシナリオが記憶されると共に、画像処理装置１ａ〜１ｃにはテストプログラム２００が既にインストールされている場合を例として説明した。しかしながらこれは一例である。例えば、テストシナリオを含むテストプログラムがシナリオ記憶部５０３に記憶されており、テスト振り分けサーバ２から画像処理装置１ａ〜１ｃに送信されても良い。
【００８８】
また、上記実施形態においては、図１４に示すように、“テスト環境条件”の情報がテストシナリオに含まれる場合を例として説明した。このようにテストシナリオに“テスト環境条件”の情報を含めることにより、テスト管理部５０４による必要なデバイスの認識を容易化することが可能である。
【００８９】
しかしながらこれは一例であり、テストシナリオは図６と同様でも良い。この場合、テスト管理部５０４は、テストシナリオの内容に基づいて“テスト環境条件”と同様の情報を生成する。図８に示すような様々なコマンドや、そのコマンドに付与されたパラメータを参照すれば、図６に示すようなテストシナリオに基づいて図１４に示すような“テスト環境条件”の情報を生成することが可能である。
【００９０】
また、実施の形態１、２においては、テスト対象プログラム４００として、図３に示す抽象機器層１４０を例として説明した。しかしながらこれは一例であり、サービス層１１０、サービスサポート層１２０、サービスランタイム層１３０等の他の層に属するソフトウェアのプログラムであっても、上記と同様に動作検証を行うことが可能であり、同様の効果を奏する。
【００９１】
また、上記実施形態においては、実機環境におけるテストにおいて、図３に示すように、テストプログラム２００を画像処理装置１にインストールした上で動作検証を実行する場合を例として説明した。しかしながらこれは一例であり、テストプログラム２００を画像処理装置１とは異なる装置で実行させ、ネットワークを介して情報をやり取りすることによって動作検証を実行しても良い。
【００９２】
テストプログラム２００を画像処理装置１において実行させる場合、テストプログラム２００を動作させるための情報処理資源が画像処理装置１において消費された状態で動作検証が実行される。そのため、画像処理装置１が通常の運用状態となる場合とは多少異なる環境となる。
【００９３】
これに対して、テストプログラム２００を画像処理装置１とは異なる装置で実行させる場合、上述したように画像処理装置１の情報処理資源が消費されることが無いため、動作検証の実行環境をより通常動作に近づけることが出来る。特に、サービス層までソフトウェアの開発が完了している場合、サービス層において実現されるＷｅｂ  ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を用いることが可能であるため、画像処理装置１以外の装置でテストプログラム２００を実行させ、ネットワークを介して情報をやり取りすることが容易となる。
【００９４】
実施の形態２の態様において、テストプログラム２００を画像処理装置１とは異なる装置で実行させる場合、例えばテスト振り分けサーバ２においてテストプログラム２００を動作させても良い。この場合、テスト振り分け部５０５は、ネットワークを介して画像処理装置１ａ〜１ｃのいずれかにテストの実行要求を行うのではなく、テストプログラム２００に対してテストシナリオ及び装置の選択結果を通知する。
【００９５】
そして、テスト振り分けサーバ２において動作するテストプログラム２００が、通知されたテストシナリオに基づき、同じく通知された選択結果が示す画像処理装置に対してテストを実行する。これにより、上記と同様の効果を得ることが出来る。
【符号の説明】
【００９６】
１  動作検証装置
１０  ＣＰＵ
２０  ＲＡＭ
３０  ＲＯＭ
４０  ＨＤＤ
５０  Ｉ／Ｆ
６０  ＬＣＤ
７０  操作部
８０  バス
１００  基本制御層
１１０  サービス層
１２０  サービスサポート層
１３０  サービスランタイム層
１４０  抽象機器層
２００  テストプログラム
２０１  テストシナリオ記憶部
２０２  テスト読取部
２０３  コマンド定義記憶部
２０４  コマンド解釈部
２０５  テスト実行部
２０６  物理操作コマンド実行部
２０７  実行環境判定部
２０８  テスト判定部
２１０  テスト要求受付部
３００  エミュレータ
４００  テスト対象プログラム
５０１  振り分け情報記憶部
５０２  振り分け情報管理部
５０３  シナリオ記憶部
５０４  テスト管理部
５０５  テスト振り分け部
【先行技術文献】
【特許文献】
【００９７】
【特許文献１】特開２０１２−１２８４８９号公報
【図１】
2016177498.tif 000003
【図２】
2016177498.tif 000004
【図３】
2016177498.tif 000005
【図４】
2016177498.tif 000006
【図５】
2016177498.tif 000007
【図６】
2016177498.tif 000008
【図７】
2016177498.tif 000009
【図８】
2016177498.tif 000010
【図９】
2016177498.tif 000011
【図１０】
2016177498.tif 000012
【図１１】
2016177498.tif 000013
【図１２】
2016177498.tif 000014
【図１３】
2016177498.tif 000015
【図１４】
2016177498.tif 000016
【図１５】
2016177498.tif 000017
【図１６】
2016177498.tif 000018