説明

システム、情報処理装置およびその制御方法、画像形成装置およびその制御方法、並びにプログラム

【課題】一般市場にリリースされたアプリケーションは、他のバンドルからコールされないように、設定ファイルにてエクスポート宣言をしていないため、一般市場の環境において単体テストを実施することができない。
【解決手段】アプリケーションの機能を実現するアプリケーション用プログラムと、前記アプリケーションが提供する機能をテストするためのテスト用プログラムと、外部からの指示に応じて前記テスト用プログラムの実行を開始する命令を出すテストエージェント用プログラムと、を含むアプリケーションを受信する受信手段と、前記受信したアプリケーションをインストールするインストール手段と、前記テスト用プログラムの実行を開始するよう前記テストエージェント用プログラムを介して指示を受け付けた際に、前記テストエージェント用プログラムから出される命令により前記テスト用プログラムの実行を開始する開始手段とを有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アプリケーションをインストール可能な画像形成装置におけるアプリケーションに対する単体テストを実行するシステム、情報処理装置およびその制御方法、画像形成装置およびその制御方法、並びにプログラムに関する。
【背景技術】
【0002】
従来、画像形成装置及びその制御において、リアルタイムOS上にさらに別の組み込みシステム向けの実行環境(例えばJava(登録商標)など)を構築することを可能にしている。更に、画像形成装置の制御を行うアプリケーションを外部からダウンロードして追加できるアプリケーション・プラットフォームが搭載されるようになった。
【0003】
このようなアプリケーション・プラットフォーム上でアプリケーションを開発する際の開発環境が提供されている。例えば、ビルドからテスト結果の取得まで自動的に行い、アプリケーション・プラットフォームの状態を記憶し、デバッグ作業を容易にするような仕組みが特許文献1に開示されている。
【0004】
一方、開発したアプリケーションの動作を確認するための別のテスト用アプリケーションを作成する。そして、そのアプリケーションから、開発したアプリケーションのAPI(Application Program Interface)を呼び出し、動作確認を行う手法がある。この場合、アプリケーションが動作するプラットフォームのフレームワークが提供する機能を利用して、テストされるアプリケーションは、他のアプリケーション(外部)からAPIをコールされるように予め外部公開を許可する実装を行う必要がある。
【0005】
具体的には、アプリケーション内に実装する設定ファイルにおいて、外部公開用にエクスポート宣言する必要がある。一方、テストを行うアプリケーション側では、外部公開されているAPIを利用できるように実装を行う必要がある。具体的には、APIの設定ファイルであるマニフェストファイルにエクスポート宣言がされている前提で、アプリケーション側で当該APIのインポート宣言をする必要がある。このように、2つのアプリケーションを利用して、開発したアプリケーションの動作を確認するためには、双方のアプリケーションにテストを実行するための実装を行う必要があった。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特表2009−519544号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
テスト用のアプリケーションを利用してアプリケーションの動作を確認する手法は、アプリケーション開発中のデバッグ作業に対しては効果のある手法である。しかしながら、一般販売されるアプリケーションでは、セキュリティの観点から、外部からAPIをコールされないように構成されている。同様に、エクスポート宣言が不要なAPIについては、マニフェストファイルにてエクスポート宣言をしないように構成されている。このため、市場(アプリケーションを購入したユーザ環境)で何かの問題が発生し、そのユーザ環境でアプリケーションの動作を確認する手法としては利用できない。
【0008】
また、アプリケーション開発時に、デバッグ目的でマニフェストファイルに一時的にエクスポート宣言した場合、その変更を元に戻すことを忘れてしまうこともある。この場合、外部からアプリケーションが呼び出せる状態となり、この状態のまま市場に販売された場合、悪意のあるユーザからアプリケーションに対し攻撃される可能性もある。よって、セキュリティの観点でも課題である。
【課題を解決するための手段】
【0009】
上記課題を解決するために本願発明は以下の構成を有する。すなわち、提供されたアプリケーションをインストールして実行可能な画像形成装置と、前記画像形成装置にて実行するアプリケーションの開発環境を提供する情報処理装置とを含むシステムであって、前記情報処理装置は、前記画像形成装置で実行するためのアプリケーションを作成する指示を受けたことに応じて、前記アプリケーションの機能を実現するアプリケーション用プログラムと、前記アプリケーションが提供する機能をテストするためのテスト用プログラムと、前記情報処理装置からの指示に応じて前記テスト用プログラムの実行を開始する命令を出すテストエージェント用プログラムと、を含むアプリケーションを生成する生成手段と、前記生成手段により生成されたアプリケーションを前記画像形成装置に送信する送信手段と、前記テスト用プログラムの開始の指示を受けたことに応じて、前記画像形成装置にインストールされた前記アプリケーションに含まれる前記テスト用プログラムの実行を開始するよう前記テストエージェント用プログラムを介して指示する指示手段とを有し、前記画像形成装置は、前記生成手段により生成されたアプリケーションのインストールの指示を受けたことに応じて、前記アプリケーションをインストールするインストール手段と、前記指示手段により前記テスト用プログラムの実行を開始するよう前記テストエージェント用プログラムを介して指示を受け付けた際に、前記テストエージェント用プログラムから出される命令により前記テスト用プログラムの実行を開始する開始手段とを有する。
【発明の効果】
【0010】
本発明によれば、単体テストに利用するバンドルをアプリケーションに内包することで、アプリケーションの設定を変更することなく、外部から内包された単体テストバンドルをコールすることが可能となる。さらには、アプリケーションを購入したユーザ環境など、アプリケーションの改変が困難な環境でも、アプリケーションの動作確認テストを実施することが可能となる。
【図面の簡単な説明】
【0011】
【図1】画像形成装置の内部構成の一例を示すブロック図。
【図2】画像形成装置のソフトウェア構造例を示す図。
【図3】画像形成装置と接続された開発用PCのハードウェア構成例を示す図。
【図4】統合開発システムのソフトウェア構成例を示す図。
【図5】テストを行う場合の画像形成装置のソフトウェア構成例のブロック図。
【図6】生成部のより詳細なソフトウェア構成例のブロック図。
【図7】テストブローカのソフトウェア構成例のブロック図。
【図8】テスト用アプリの構成例のブロック図。
【図9】統合開発システムのUIの一例を示す図。
【図10】テストケースのプロジェクトを作成するフローチャート。
【図11】テスト用アプリを作成する際の処理を示すフローチャート。
【図12】テスト用アプリをインストールするフローチャート。
【図13】テスト用アプリをインストールするUIの一例を示す図。
【図14】テスト用アプリのテストケースを実行する際のフローチャート。
【図15】テストケースの実行およびテスト結果の送信を実行するための通信フロー。
【図16】テストを実行する一連のフローを示したフローチャート。
【図17】画像形成装置の機種ごとに分割されているテストケースの一例を示す図。
【図18】第二実施形態に係る分割されたテストケースのパッケージ名の例を示す図。
【図19】分割されたテストケースをエージェントが実行するフローチャート。
【発明を実施するための形態】
【0012】
以下、図面を参照して本発明の実施の形態を詳しく説明する。尚、以下の実施の形態は特許請求の範囲に係る発明を限定するものでなく、また実施の形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
【0013】
(第一実施形態)
[画像形成装置のハードウェア構成]
以下、本発明の実施の形態について図面を参照して詳細に説明する。図1は、本発明の実施形態に係る画像形成装置の内部構成の一例を示すブロック図である。
【0014】
図1に示す画像形成装置1は、基本的な構成として、画像形成装置1内の各部を制御するコントローラユニット100と、操作部112と、スキャナ部123と、プリンタ部125とを備える。操作部112は、例えば、数字を入力するためのテンキーや処理の実行を行うためのスタートキーなどのハードキーや液晶タッチパネルで構成され、ユーザが画像形成装置1を操作するためのユーザインタフェースを提供する。操作部112のタッチパネルに表示される各設定項目を表すアイコンやボタン(もしくはハードキー)をタッチ(押下)することで、画像形成装置1に設定や情報の入力を行うことが可能である。
【0015】
スキャナ部123は、原稿等の画像を画像データとして読み取る。プリンタ部125は、記録用紙を搬送し、その記録用紙に画像データを可視画像として印刷する。
【0016】
コントローラユニット100は、バス122を介してスキャナ部123に接続され、またバス124を介してプリンタ部125に接続される。また、コントローラユニット100は、LAN113や公衆回線(WAN)114や無線115を介して他の機器に接続して、画像情報やデバイス情報の入出力制御を行う。
【0017】
CPU101は、システム全体を制御するコントローラである。RAM102は、CPU101が動作するためのシステムワークメモリであり、画像データを一時記憶するための画像メモリでもある。ROM103はブートROMである。ROM103には、システムのブートプログラムが格納されている。HDD104は、ハードディスクドライブであり、システムソフトウェアや画像データ、後述する通信部111が有するすべての無線通信に関する情報(無線通信の仕様)を格納する。
【0018】
画像形成装置1では、使用したい機能を実装したアプリケーション(以下、「アプリ」と呼ぶ)をインストールすることで機能を増やすことができる。アプリのインストールにより、画像形成装置上で各種機能を動かすためのアプリプログラムがRAM102やHDD104に記憶される。
【0019】
操作部I/F106は、ユーザインタフェース(UI)である操作部112との間のインタフェース部であり、操作部112に表示すべきデータを操作部112に対して出力する。また、操作部112からユーザが入力した情報を、CPU101に伝える役割を行う。Network部109は、LAN113に接続され、情報の入出力を行う。MODEM110は、公衆回線114に接続され、情報の入出力を行う。
【0020】
通信部111は、不図示のアンテナを介して無線(WIRELESS)115に接続され、情報の入出力を行う。また、通信部111は、複数種類の無線通信を行うことが可能である。上記各デバイスがシステムバス107上に配置される。
【0021】
イメージバス(ImageBus)I/F105は、システムバス107と、画像データを高速で転送する画像バス108とを接続し、データ構造を変換するバスブリッジである。画像バス108は、PCIバスまたはIEEE1394等で規定されるバスである。
【0022】
画像バス108上に配置される各デバイスにおいて、ラスターイメージプロセッサ(RIP)116は、PDLコードをビットマップイメージに展開する。デバイスI/F部117は、スキャナ部123またはプリンタ部125をコントローラユニット100に接続し、画像データの同期系/非同期系の変換を行う。
【0023】
スキャナ画像処理部118は、入力画像データに対して補正、加工、または編集を行う。プリンタ画像処理部119は、プリント出力画像データに対して、プリンタ部125に合った補正、解像度変換等を行う。画像回転部120は、画像データの回転を行う。画像処理部121は、画像データに対する、JPEG、JBIG、MMR、MH等の圧縮伸張処理や、PDF、TIFF、OCR、暗号化等のフォーマット変換処理を行う。
【0024】
[画像形成装置のソフトウェア構成]
図2は、本発明に係る画像形成装置の一例である画像形成装置1のHDD104に記憶されたソフトウェア構造図である。CPU101によりこれらのプログラムが実行されることにより、各種機能が実現される。
【0025】
OS(オペレーティングシステム)201には、一般的なリアルタイムOSが使用される。また、OSとして、Linux(登録商標)等の汎用OSが使用されても構わない。JavaVM202は、Java(登録商標)に代表される仮想マシンであり、アプリの実行環境を提供する。なお、仮想マシンは、これに限定するものではない。アプリフレームワーク203は、アプリのライフサイクルを管理する機能を提供する。インストーラサービス204は、アプリA205、アプリB206など複数のアプリを、アプリフレームワーク203に登録することでインストール処理を行う。
【0026】
アプリA205、およびアプリB206は、インストーラサービス204によってインストールされたアプリであり、画像形成装置1上で様々な機能を提供する。アプリA205およびアプリB206は、不図示のI/Fを使用して、操作部112を介してユーザとやり取りを行うことが可能である。また、Network部109を介して、PCなどからデータを受信し、プリンタ部125を使って印刷することも可能である。なお、インストーラサービス204は、PCからブラウザを使用してアクセスされ、所定のアプリファイルを受信するものとする。
【0027】
[PCのハードウェア構成]
図3は、画像形成装置1とネットワークで接続された情報処理装置としての開発用PC300のハードウェア構成を示す図である。画像形成装置用アプリの開発を行う場合、通常、開発用PC300にて統合開発環境を動作させてプログラム作成・テスト・デバッグなどを行う。また、アプリのテストを行う場合は、開発用PC300から画像形成装置1にNetwork部109経由でアプリをインストールして画像形成装置1上でアプリを動作させてテストを行う。
【0028】
CPU301は、開発用PC300上の各処理を司る中央演算装置である。ROM302は、開発用PC300の各処理に関わるプログラムやデータを記憶する。RAM303は、開発用PC300の各処理に関わる一時的なデータを記憶する。HDD304は、開発用PC300の各処理に関わるプログラムやデータ、および一時的なデータ、本発明に関わるプログラムモジュールが格納される。入力装置305は、開発用PC300への指示入力を受け付けるキーボードやポインティングデバイスである。表示部306は、開発用PC300の動作状況や、開発用PC300上で動作する各プログラムが出力する情報を表示する。ネットワークI/F307は、ネットワーク経由でLANおよびインタネットに接続し、外部と情報交換を行う。USBH I/F308は、USBホストインタフェースであり、さまざまなUSBデバイスを接続する。上記の要素がシステムバス309により結び付き、データの送受信を行う。
【0029】
[統合開発システムにおけるソフトウェア構成]
図4は本発明の統合開発システムの一例である統合開発環境システム400のソフトウェア構成図である。本実施形態において、この統合開発環境システム400は、開発用PC300上で構成される。統合開発環境システム400は、統合開発基盤401、統合開発基盤401に利用される内部ツールA402、並びに外部ツールB404と連携する内部ツールB403を有する。さらには、これら内部ツールと同様の位置づけで組み込みアプリ開発支援ツール405を有する。
【0030】
統合開発環境システム400は、例えば、Eclipse(登録商標)が利用できるが、これに限定されない。なお、Eclipseとは、オープンソースの統合ソフトウェア開発環境であり、ソフトウェア開発の共通プラットフォームである。Eclipseは、2種類のツールを利用することで様々な機能を提供する。2種類のツールとは、Eclipseにプラグインとして登録・提供されている内部ツールと、Windows(登録商標)、UNIX(登録商標)などが提供するデバッガやコンパイラといったEclipse内には存在しない外部ツールである。
【0031】
統合開発基盤401は、開発しているアプリの管理や各ツールを連携させるためのインタフェースなどを含んでいる。外部ツールの例としては、Javaのコンパイルやデバッグを行うために用いられるJDK(Java Development kit)がある。
【0032】
内部ツールは、統合開発基盤401が提供するインタフェースを介して、外部ツールの機能を利用することもできる。なお、本実施形態においては、開発者によって統合開発環境システム400に外部ツールとしてJDKが既に設定済みであり、内部ツールから統合開発基盤401を介して利用できる。なお、図4で示している統合開発環境システム400が持つ内部ツールや外部ツールの構成などは、1つの例にすぎず、これに限定されない。
【0033】
ここで、組み込みアプリ開発支援ツール405は、例えば、画像形成装置のような組み込み機器で実行可能なアプリの生成やテスト支援の機能を有する。操作部406は、開発しているアプリを組み込み機器もしくは対応するシミュレータへインストールする機能を有する。その他、組み込み機器および組み込み機器向けシミュレータで動作しているアプリの開始、停止、デバッグ機能を有する。生成部407は、アプリを生成する機能を有する。
【0034】
[テスト用アプリを搭載した画像形成装置のソフトウェア構成]
図5は、統合開発環境システム400を利用してテストを行う場合の画像形成装置1のソフトウェアブロック図である。図2の状態の画像形成装置1に対して、アプリ開発者がインストーラサービス204経由でテストブローカ501をインストールすることで統合開発環境を利用したテストを行うことができる。テストブローカ501は、開発用PC300から、テスト用アプリ502を受信してテストを実行したり、テスト結果を開発用PC300に送信したり、テスト完了後にテスト用アプリ502をアンインストールしたりするためのモジュールである。テスト用アプリ502は、ユーザが開発したアプリとテストのためのプログラムが一つにまとめられたテストのためのアプリである。テスト用アプリ502の詳細な構成については、図8を用いて後述する。
【0035】
[生成部]
図6は、統合開発環境システム400を利用してテストを行う場合の組み込みアプリ開発支援ツール405に含まれる生成部407のより詳細なソフトウェアブロック図である。ソース管理部601は、アプリのソースコード(以下、「ソース」)やテストケースのソースの管理を行う。テスト用アプリ作成部602は、ソース管理部601で管理されているソースをコンパイルして画像形成装置1にインストール可能なアプリファイルを生成する。テスト制御部603は、通信制御部604を介して、テスト用アプリ502に内包されるテストエージェント803を経由し、画像形成装置1にインストールされたテスト用アプリ502におけるテストケース802の実行指示や結果の受信を行う。
【0036】
[テストブローカ]
図7は、図5におけるテストブローカ501のソフトウェアブロック図である。テスト制御部701は、テスト用アプリ502のインストール、開始、停止、アンインストール、テストケース実行などの制御を行ったり、テスト結果を統合開発環境システム400に送信したりする。接続先管理部702は、接続先である開発用PC300との接続の管理を行う。通信制御部703は、開発用PC300との通信を制御を行い、各種データの送受信を行う。
【0037】
[テスト用アプリ]
図8は、図5におけるテスト用アプリ502のブロック図である。テスト用アプリ502は、アプリ801と、テストケース802と、テストエージェント803と、アプリ情報804から構成される。アプリ801は、開発者が開発しているアプリの実体である。アプリ801は、画像形成装置1上で動作し、ユーザに対して、認証機能を提供したり、スキャナやプリンタを使った機能を提供したりする。つまり、アプリ801は、図2に示すアプリA205やアプリB206と同様に、新たに画像形成装置1において登録され、ユーザ等に機能を提供するアプリケーション(アプリケーション用プログラム)である。
【0038】
テストケース802は、アプリ801をテストするためのプログラムである。テストケース802には、アプリ801が内部で実装する機能を実行して、動作をテストするためのテスト用プログラムが記載されている。テストエージェント803は、テストブローカ501から指示を受けてテストケース802の実行を行う。つまり、テストケース802の実行の開始の命令などを発行するテストエージェント用プログラムである。アプリ情報804は、テスト用アプリ502に含まれるアプリの識別IDやアプリ名称やバージョン情報を含む。
【0039】
なお、テストエージェント803は、テストブローカ501からテストケース802の実行開始の指示を受けた場合、更に画像形成装置1のエージェントにテストケース802の実行を開始する指示を出すような構成としても構わない。
【0040】
[UIの構成]
図9は、統合開発環境システム400のUIの一例を示す図である。図9(a)は統合開発環境システム400におけるプログラム作成画面の一例である。
【0041】
プロジェクト表示領域901は、統合開発環境上で開発を行っているプロジェクトについての情報を表示する領域であり、開発するアプリに含まれるクラスやファイルのリストが階層構造で表示される。ソース表示領域902は、プロジェクト表示領域で選択したクラスのソースが表示される。アプリ作成者は、ソース表示領域902に示すソースコードを編集して、所望のアプリのソースコードを作成する。これは、図8のアプリ801に相当する。
【0042】
一方、プロジェクト表示領域901に表示されているテストケースのプロジェクト903は、現在開発しているアプリ(ICCardPrintのプロジェクト)に対応したテストケースである。これは、図8のテストケース802に相当する。テストケースのプロジェクト903の作成フローについては、図10を用いて後述する。
【0043】
本実施形態において、プログラム作成画面において、テスト用アプリを作成する際の指示を選択可能なメニュー904が提供される。ここで、メニュー904には、「テスト用アプリ作成」、「テスト実行」、「テスト用アプリ作成とテストの実行」の3つの指示が選択できるように構成されている。「テスト用アプリ作成」は、テストケース802を含むテスト用アプリ502を作成させる。このテスト用アプリ作成を指示された際の処理フローについては、図11を用いて後述する。「テスト実行」は、画像形成装置1にインストールされたテスト用アプリ502に含まれるテストケース802を実行させる。このテスト実行を指示された際の処理フローについては、図14を用いて後述する。「テスト用アプリ作成とテストの実行」は、上記の両方の処理を実行させる。この指示をされた際の処理フローについては、図16を用いて後述する。
【0044】
[テストケースの作成フロー]
図10を用いて、テスト用アプリ作成部602が、テストケースのプロジェクト903を作成するフローチャートを説明する。なお、本処理フローは、開発用PC300が備えるCPU301が記憶部であるHDD304に格納されたプログラムを読み出して、実行することにより、実現される。
【0045】
図10(b)は、テストケース802のプロジェクトを新規作成する際に表示されるダイアログ1005である。ダイアログ1005には、テストケースのプロジェクトのプロジェクト名1006を指定する入力フィールドと、テストケースの対象となるプロジェクトを指定するフィールド1007がある。ユーザは、入力終了後、完了ボタン1008を押下することにより、ダイアログ1005を閉じる。
【0046】
図10(a)を用いて、テストケースのプロジェクトを作成するフローを説明する。ユーザによって統合開発環境システム400のプログラム作成画面から、テストケースのプロジェクトの新規作成が指示されると、テスト用アプリ作成部602は、図10(b)に示すテストケース作成用のダイアログ1005を開発用PC300上に表示する。S1002では、テスト用アプリ作成部602は、ダイアログ1005に入力されたプロジェクト名およびテスト対象となるプロジェクト名を受信する。さらにS1003において、テスト用アプリ作成部602は、S1002で受信したプロジェクト名に従い、テストケースプロジェクトのテンプレートを作成する。そして、本処理を終了する。
【0047】
[テスト用アプリ作成フロー]
図11は、図9(a)に示したプログラム作成画面のメニュー904にて「テスト用アプリ作成」が選択されたときに、図8に示すようなテスト用アプリ502を作成する、生成部407の処理を示したフローチャートである。なお、本処理フローは、開発用PC300が備えるCPU301が記憶部であるHDD304に格納されたプログラムを読み出して、実行することにより、実現される。
【0048】
テスト用アプリ502を作成するために、アプリの開発者は、図9(a)に示すプログラム作成画面において、統合開発環境システム400を利用して作成したアプリのプロジェクト(図8のアプリ801に相当)を選択する。さらに開発者は、当該アプリのプロジェクトに対応して作成したテストケースのプロジェクト(図9のプロジェクト903)を選択し、右クリックして表示されたメニュー904から「テスト用アプリ作成」を選択する。その作成者の操作を受けて、生成部407は、テスト用アプリ502の作成を開始する。
【0049】
S1101において、生成部407は、テスト用アプリ502の生成指示を受け付ける。S1102では、生成部407は、テスト用アプリ502のソースファイルをコンパイルする。S1103において、生成部407は、テストケース802をテスト用アプリ502に追加する。さらにS1104において、生成部407は、テストエージェント803をテスト用アプリ502に追加し、テスト用アプリ502を生成する。そして、本処理を終了する。
【0050】
[インストールフロー]
図12を用いて、作成したテスト用アプリ502を画像形成装置1にインストールするフローを説明する。図12は、作成したテスト用アプリ502を画像形成装置1にインストールする際のインストーラサービス204の処理を示したフローチャートである。なお、本処理フローは、画像形成装置1が備えるCPU101が記憶部であるHDD104に格納されたインストーラサービス204のプログラムを読み出して、実行することにより、実現される。
【0051】
ユーザは、画像形成装置1のインストーラサービス204を利用してテスト用アプリ502のインストールを行う。具体的には、画像形成装置1にネットワークで接続された装置(例えば開発用PC300)のWEBブラウザを利用して、インストーラサービス204のURL(Uniform Resource Locator)を入力する。そして、インストーラサービス204が提供するインストール画面(図13(a))にアクセスする。ここでURLとは、例えば、“http://ipaddress/install”などである。
【0052】
ユーザからの指示により、インストーラサービス204は、S1201にて、インストール画面表示のリクエストを受信する。S1202にて、インストーラサービス204は、表示リクエストに対して、インストール画面表示用のHTMLコンテンツをリクエスト元のPCに送信する。ユーザは、図13(a)のフィールド1302にて、インストールするアプリの指定をする。ここで、アプリが保存されるパスを直接指定してもよいし、参照ボタンからファイルを選択してもよい。ユーザによってインストールボタン1303が押下されると、インストーラサービス204は、S1203にて、インストールファイルを受信する。S1204にて、インストーラサービス204は、インストールファイルの書き込みを開始する。インストーラサービス204は、S1205でインストールファイルの書き込み開始後、インストールが完了したかどうかを判断し、完了していない場合には(S1205にてNO)、インストールが完了するまで待機する。インストールが完了した場合は(S1205にてYES)、S1206に進み、インストーラサービス204は、インストールされているアプリの一覧1304(図13(b))を表示するためのHTMLコンテンツをリクエスト元のPCに送信する。そして、本処理を終了する。
【0053】
なお、一覧1304の開始ボタン1305をユーザが押下すると、インストールされたアプリが起動され、サービスの提供が可能となる。
【0054】
[テストケース実行フロー]
まず、テストケース実行時のUIについて説明する。インストーラサービス204が、作成したテスト用アプリを画像形成装置1にインストールした後、プログラム作成画面のメニュー904から「テスト実行」が指示されると、図9(b)のダイアログが表示される。
【0055】
図9(b)において、テキストフィールド911はテストを実行する画像形成装置のホスト名もしくはIPアドレスを入力するためのフィールドである。OKボタン912は、テストの実行を指示するためのボタンである。キャンセルボタン913は、テストの実行を取り消すためのボタンである。ユーザによりOKボタン912が押されると、テストが開始され、図9(c)のダイアログが表示される。図9(c)のダイアログは、全てのテストケースが実行完了すると自動的にダイアログが閉じる。実行中のテストを中断したい場合は、ユーザは終了ボタン921を押下することでテストを終了させることができる。
【0056】
図9(d)は、テスト終了時もしくは中断時に表示される画面の例である。この画面は、画像形成装置にて実行されたテストの結果を通知された後、表示される。テスト結果概要表示領域931には実行されたテストケース数およびテスト失敗数、エラー数およびテスト成功率が表示される。パッケージ情報表示領域932にはアプリのパッケージ毎のテスト結果の一覧が表示される。パッケージ名933をクリックすることでテストケースごとの細かい結果も表示可能である。
【0057】
なお、図9(a)〜(d)に示した各画面の構成は一例であり、これに限定するものではない。例えば、図9(a)のプログラム作成画面における各領域の配置は、ユーザの好みに応じて変更できるようにしても構わない。
【0058】
図14は、通信制御部604が、テスト用アプリ502のテストエージェント803を経由して、テスト用アプリ502のテストケース802を実行する際のフローチャートである。なお、本処理フローは、開発用PC300が備えるCPU301が記憶部であるHDD304に格納されたプログラムを読み出して、実行することにより、実現される。
【0059】
ユーザ操作により、テスト用アプリ502のアプリ801に対応して作成したテストケースのプロジェクト(図9(a)のプロジェクト903)が選択され、右クリックして表示されたメニュー(図9(a)のメニュー904)から「テスト実行」が選択される。これにより、S1401にて、テスト制御部603は、テスト実行の指示を受け付ける。S1402にて、テスト制御部603は、画像形成装置1のホスト名もしくはIPアドレスを入力するダイアログ(図9(b))を開発用PC300上に表示する。S1403にて、ユーザにより、画像形成装置1のホスト名もしくはIPアドレスが入力された上で、テスト制御部603は、OKボタン912が押下されたかどうかを判断する。押されたと判断された場合は(S1403にてYES)、S1404に進む。OKボタン912が押下されない場合は(S1403にてNO)、テスト制御部603は、OKボタン912が押下されるまで待機する。
【0060】
S1404にて、テスト制御部603は、通信制御部604を経由して、テストケース802を実行するデバイスのテストエージェント803に対して、テスト実行指示を送信する。S1405にて、テスト用アプリ502からの応答がなく、画像形成装置1にてテスト用アプリ502の存在が確認できなかった場合には(S1405にてNO)、本処理フローを終了する。
【0061】
テスト用アプリ502が存在すると確認された場合には(S1405にてYES)、S1406にて、テストエージェント803はテストケース802を実行する。S1407で、テスト制御部603は、実行したテストケースがすべて終了し、テスト結果が出力されたかの判断を行う。テスト結果が出力されていない場合は(S1407にてNO)、テスト制御部603は、S1408にてテスト結果の出力を待ち、S1407に戻る。テスト結果が出力されたと判断された場合には(S1407にてYES)、S1409に進む。S1409にて、テストブローカ501のテスト制御部701は、テストエージェント803が実行したテストの結果を、通信制御部703を介して、統合開発環境システム400の通信制御部604に送信する。さらに、S1410にて、テスト制御部603は、統合開発環境システム400上に、受信したテスト結果を表示する。そして、本処理を終了する。
【0062】
[通信フロー]
ここで、図15を用いて、テストケース802の実行およびテスト結果の送信をよりセキュアに実行するための、通信フローを説明する。本実施形態において説明する認証方式は、一般的なSSL(Secure Socket Layer)の方法に従って説明している。なお、本処理フローは、画像形成装置1および開発用PC300が備えるCPUが記憶部であるHDDに格納されたプログラムを読み出して、実行することにより、実現される。
【0063】
図15の例は、統合開発環境システム400の通信制御部703から画像形成装置1に対して、セキュアな通信を確立するフローを示している。このセキュアな通信を実現することにより、ユーザがどのAPIの呼び出しを行っているかの情報やテスト結果に対するのぞき見を防止することが可能となる。なお、テスト用アプリ502のテストエージェント803からテスト結果を送信する場合については説明を省略するが、図15の例の通信接続元と通信接続先の関係を逆にすることで可能となる。
【0064】
S1501において、統合開発環境システム400の通信制御部703は、画像形成装置1に対して、セキュアな通信のリクエストを送信する。それを受け取った画像形成装置1は、S1502において、リクエストを送信した通信制御部703に対し、通信に必要なサーバ証明書を送付する。S1503では、サーバ証明書を受け取った通信制御部703は、サーバ証明書に含まれるサーバIDをもとに、共通鍵を生成し、生成した共通鍵を公開鍵にて暗号化し、画像形成装置1へ送信する。画像形成装置1は、S1504において、公開鍵と対になる秘密鍵を利用して暗号化された共通鍵を復号化し、共通鍵を取得する。S1505にて、双方で取得した共通鍵を利用して、装置間のセキュア通信が開始される。
【0065】
なお、図15では、一般的なセキュア通信開始までの処理を示しているが、本発明ではセキュアな通信方法については、このフローに限定するものではなく、他の認証方法を用いても構わない。
【0066】
[テスト用アプリのインストールおよびテスト実行の処理フロー]
図16は、統合開発環境システム400で生成したテスト用アプリ502を、通信制御部703から、テストブローカ501の通信制御部703を経由して、画像形成装置1にインストールして、テストを実行する一連のフローを示したフローチャートである。また、本処理フローは、画像形成装置1および開発用PC300が備えるCPUが記憶部であるHDDに格納されたプログラムを読み出して、実行することにより、実現される。
【0067】
ユーザ操作により、統合開発環境システム400を利用して作成したテスト用アプリ502のアプリ801のプロジェクトと、アプリ801に対応して作成したテストケースのプロジェクト(図9(a)のプロジェクト903)が選択される。さらにユーザ操作によって、図9のメニュー904から「テスト用アプリ作成とテストの実行」が選択される。
【0068】
上記ユーザの指示により、S1601にて、生成部407は、テスト用アプリ作成とテストの実行指示を受け付ける。S1602において、生成部407は、選択されたテスト用アプリ502のプロジェクトに、テストケース802を同梱したテスト用アプリ502を作成する。S1603では、通信制御部703は、S1602で作成したテスト用アプリ502をテストブローカ501の通信制御部703に対して送信する。
【0069】
S1604では、テストブローカ501は、受信したテスト用アプリ502を、インストーラサービス204を介して画像形成装置1にインストールする。S1605では、テストブローカ501は、インストールしたテスト用アプリ502を開始状態にする。
【0070】
続いてS1607にて、テストブローカ501は、テスト用アプリ502のテストケース802を実行する。S1607で、テストブローカ501は、テスト結果が終了しテスト結果が出力されたかの判断を行う。まだテスト結果が出力されていない場合には(S1607にてNO)、S1608にてテスト結果の終了を待ち、S1607に戻る。S1609でテスト結果が出力されたと判断された場合は(S1607にてYES)、S1611に進む。
【0071】
S1609では、テストブローカ501は、出力されたテスト結果を統合開発環境の通信制御部703に送信する。S1612において、通信制御部703は、受信したテスト結果を表示する。S1611では、テストブローカ501が、テスト実行用にインストールしたテスト用アプリを停止し、インストーラサービス204を介してアンインストールする。そして、本処理を終了する。
【0072】
以上により、単体テストに利用するテストケースとしてのアプリを内包するアプリを生成することで、アプリの設定を変更することなく、外部から内包された単体テストバンドルを実行することが可能となる。さらには、アプリを購入したユーザ環境など、アプリの改変が困難な環境でも、アプリの動作確認テストを実施することが可能となる。また、画像形成装置とPCとの間でSSL等の認証処理を行った通信を確立することによりセキュアな通信を実現し、安全にテスト用のアプリへの指示およびその実行結果を送受信することが可能となる。
【0073】
(第二実施形態)
以下、本発明に係る第二実施形態について、図面を参照して詳細に説明する。図8におけるテスト用アプリ502に内包されるテストケースについて、より詳細にした構成を、図17を用いて説明する。
【0074】
図17で示したテストケース1701は、テスト用アプリ502が動作する画像形成装置の機種ごとに分割されている。具体的には、画像形成装置Aで動作するテストケース1702、画像形成装置Bで動作するテストケース1703、画像形成装置Cで動作するテストケース1704というように、テストケースが機種ごとに分割されている。また、機種に依存せず共通なテストケースの場合には、テストケース1705のように各機種共通なテストケースも存在する。
【0075】
図18にはそれぞれ分割されたテストケースのパッケージ名の例を表している。画像形成装置はそれぞれ、一意に識別するための識別情報として、識別IDを割り振られている。また、画像形成装置Aで動作するパッケージ名称に、画像形成装置Aを表す識別ID“AAAAA”を含む“com.canon.testcase.AAAAA”というパッケージ名になっている。同様に、画像形成装置Bで動作するパッケージ名は“com.canon.testcase.BBBBB”、画像形成装置Cで動作するパッケージ名は“com.canon.testcase.CCCCC”となっている。図17に示した各機種共通なテストケース1705の場合には、パッケージ名は“com.canon.testcase.common”となる。
【0076】
[テスト実行フロー]
図18に示すようなテストケースの構成になっている場合に、図8に示したテストエージェント803がテストを実行するフローを、図19を用いて説明する。なお、本処理フローは、画像形成装置1および開発用PC300が備えるCPUが記憶部であるHDDに格納されたプログラムを読み出して、実行することにより、実現される。
【0077】
テストエージェント803によるテストケースの実行がスタートすると、まずS1901にて、テストエージェント803は、デバイスの識別IDを画像形成装置1から取得する。S1902にて、テストエージェント803は、S1901で取得した識別IDと、テストケースのパッケージが一致するかを判断する。そして、一致する場合には(S1902にてYES)、S1903へ進む。一致しない場合には(S1902にてNO)、S1906へ進む。S1903では、テストエージェント803は、識別IDを一致したパッケージのテストを実行する。S1904にて、テストエージェント803は、実行したテストケースがすべて終了し、テスト結果が出力されたかの判断を行う。テスト結果が出力されていない場合は(S1904にてNO)、S1905にてテスト結果の出力を待ち、S1904に戻る。テスト結果が出力されたと判断された場合には(S1904にてYES)、S1906に進む。
【0078】
S1906にて、テストエージェント803は、テストケースのパッケージがcommonと一致するかを判断する。そして、一致する場合には(S1906にてYES)、S1907へ進む。一致しない場合には(S1906にてNO)、1910へ進む。S1907では、テストエージェント803は、commonパッケージのテストを実行する。
【0079】
S1908にて、テストエージェント803は、実行したテストケースがすべて終了し、テスト結果が出力されたかの判断を行う。テスト結果が出力されていない場合は(S1908にてNO)、S1909にて、テストエージェント803はテスト結果の出力を待ち、S1908に戻る。commonのテスト結果が出力されたと判断された場合には(S1908にてYES)、S1910に進む。
【0080】
S1910では、テストエージェント803は、テストブローカ501を介して、テスト結果を統合開発環境システム400の通信制御部604に送信する。そして、S1911にて、統合開発環境システム400上に受信したテスト結果を表示し、本処理を終了する。
【0081】
なお、テストの実行指示およびテスト結果の送信においては、第一実施形態にて述べたように、セキュアな通信を確立した上で、実行するものとする。
【0082】
以上により、第一実施形態の効果に加え、デバイスの種類に応じたテストを定義し、当該デバイスに対応するテストのみを実行させることが可能となる。これにより、不要なテストや、結果を扱う必要が無くなる。
【0083】
なお、デバイスの種類に応じてテストケースを複数のテストケースに分割している際において、テスト用アプリをインストールする場合、デバイスIDを取得し、該当するデバイスのテストケースのみをインストールするように構成しても構わない。この場合、インストールしなかったテストケースは破棄しても構わない。これにより、必要最小限のテストケースのみをデバイスに提供することとなり、デバイスにおけるメモリ等の資源に対する不要な消費を抑えることが可能となる。
【0084】
また、PC側から、複数のテストケースのうち、実行させるテストケースを指示しても構わない。この場合には、PC側からテストエージェントに送信する指示にデバイスの識別IDを含めるようにしても構わない。
【0085】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

【特許請求の範囲】
【請求項1】
提供されたアプリケーションをインストールして実行可能な画像形成装置と、前記画像形成装置にて実行するアプリケーションの開発環境を提供する情報処理装置とを含むシステムであって、
前記情報処理装置は、
前記画像形成装置で実行するためのアプリケーションを作成する指示を受けたことに応じて、前記アプリケーションの機能を実現するアプリケーション用プログラムと、前記アプリケーションが提供する機能をテストするためのテスト用プログラムと、前記情報処理装置からの指示に応じて前記テスト用プログラムの実行を開始する命令を出すテストエージェント用プログラムと、を含むアプリケーションを生成する生成手段と、
前記生成手段により生成されたアプリケーションを前記画像形成装置に送信する送信手段と、
前記テスト用プログラムの開始の指示を受けたことに応じて、前記画像形成装置にインストールされた前記アプリケーションに含まれる前記テスト用プログラムの実行を開始するよう前記テストエージェント用プログラムを介して指示する指示手段と
を有し、
前記画像形成装置は、
前記生成手段により生成されたアプリケーションのインストールの指示を受けたことに応じて、前記アプリケーションをインストールするインストール手段と、
前記指示手段により前記テスト用プログラムの実行を開始するよう前記テストエージェント用プログラムを介して指示を受け付けた際に、前記テストエージェント用プログラムから出される命令により前記テスト用プログラムの実行を開始する開始手段と
を有することを特徴とするシステム。
【請求項2】
前記画像形成装置は更に、前記テスト用プログラムによるアプリケーションの機能のテストの結果を前記情報処理装置へ通知する通知手段を有し、
前記情報処理装置は更に、前記画像形成装置から通知されたテストの結果を表示する表示手段を有することを特徴とする請求項1に記載のシステム。
【請求項3】
前記情報処理装置および前記画像形成装置はそれぞれ、装置間において証明書を用いて通信を確立する通信手段を更に有し、
前記指示手段は、前記通信手段にて確立された通信を介して指示を送信することを特徴とする請求項2に記載のシステム。
【請求項4】
前記通知手段は、前記通信手段にて確立された通信を介してテストの結果を前記情報処理装置へ通知することを特徴とする請求項3に記載のシステム。
【請求項5】
前記生成されたアプリケーションは、画像形成装置の種類に対応する複数のテスト用プログラムを含むことを特徴とする請求項1乃至4のいずれか一項に記載のシステム。
【請求項6】
前記インストール手段は、前記生成されたアプリケーションに含まれる複数のテスト用プログラムのうち、前記画像形成装置に対応するテスト用プログラムをインストールすることを特徴とする請求項5に記載のシステム。
【請求項7】
前記アプリケーションが動作する画像形成装置の種類を示す識別情報を取得する取得手段と、
前記生成されたアプリケーションに含まれる複数のテスト用プログラムのうち、前記取得した識別情報にて示される画像形成装置に対応するテスト用プログラムを選択する選択手段と
を有し、
前記開始手段は、前記指示手段により前記テスト用プログラムの実行開始の指示を受け付けた際に、前記選択手段にて選択したテスト用プログラムの実行を開始することを特徴とする請求項5に記載のシステム。
【請求項8】
前記指示手段は、前記生成されたアプリケーションに含まれる複数のテスト用プログラムのうち、実行するテスト用プログラムを指示することを特徴とする請求項5に記載のシステム。
【請求項9】
外部から提供されるアプリケーションをインストールして実行可能な画像形成装置であって、
前記アプリケーションの機能を実現するアプリケーション用プログラムと、前記アプリケーションが提供する機能をテストするためのテスト用プログラムと、外部からの指示に応じて前記テスト用プログラムの実行を開始する命令を出すテストエージェント用プログラムと、を含むアプリケーションを受信する受信手段と、
前記受信したアプリケーションをインストールするインストール手段と、
前記テスト用プログラムの実行を開始するよう前記テストエージェント用プログラムを介して指示を受け付けた際に、前記テストエージェント用プログラムから出される命令により前記テスト用プログラムの実行を開始する開始手段と
を有することを特徴とする画像形成装置。
【請求項10】
外部から提供されるアプリケーションを追加して実行可能な画像形成装置で実行するアプリケーションの開発環境を提供する情報処理装置であって、
前記画像形成装置で実行するためのアプリケーションを作成する指示を受けたことに応じて、前記アプリケーションの機能を実現するアプリケーション用プログラムと、前記アプリケーションが提供する機能をテストするためのテスト用プログラムと、前記情報処理装置からの指示に応じて前記テスト用プログラムの実行を開始する命令を出すテストエージェント用プログラムと、を含むアプリケーションを生成する生成手段と、
前記生成手段により生成されたアプリケーションを前記画像形成装置に送信する送信手段と、
前記テスト用プログラムの開始の指示を受けたことに応じて、前記画像形成装置にインストールされた前記アプリケーションに含まれる前記テスト用プログラムの実行を開始するよう前記テストエージェント用プログラムを介して指示する指示手段と
を有することを特徴とする情報処理装置。
【請求項11】
外部から提供されるアプリケーションをインストールして実行可能な画像形成装置の制御方法であって、
受信手段が、前記アプリケーションの機能を実現するアプリケーション用プログラムと、前記アプリケーションが提供する機能をテストするためのテスト用プログラムと、外部からの指示に応じて前記テスト用プログラムの実行を開始する命令を出すテストエージェント用プログラムと、を含むアプリケーションを受信する受信工程と、
インストール手段が、前記受信したアプリケーションをインストールするインストール工程と、
開始手段が、前記テスト用プログラムの実行を開始するよう前記テストエージェント用プログラムを介して指示を受け付けた際に、前記テストエージェント用プログラムから出される命令により前記テスト用プログラムの実行を開始する開始工程と
を有することを特徴とする制御方法。
【請求項12】
外部から提供されるアプリケーションを追加して実行可能な画像形成装置で実行するアプリケーションの開発環境を提供する情報処理装置の制御方法であって、
生成手段が、前記画像形成装置で実行するためのアプリケーションを作成する指示を受けたことに応じて、前記アプリケーションの機能を実現するアプリケーション用プログラムと、前記アプリケーションが提供する機能をテストするためのテスト用プログラムと、前記情報処理装置からの指示に応じて前記テスト用プログラムの実行を開始する命令を出すテストエージェント用プログラムと、を含むアプリケーションを生成する生成工程と、
送信手段が、前記生成工程により生成されたアプリケーションを前記画像形成装置に送信する送信工程と、
指示手段が、前記テスト用プログラムの開始の指示を受けたことに応じて、前記画像形成装置にインストールされた前記アプリケーションに含まれる前記テスト用プログラムの実行を開始するよう前記テストエージェント用プログラムを介して指示する指示工程と
を有することを特徴とする制御方法。
【請求項13】
コンピュータを、
アプリケーションの機能を実現するアプリケーション用プログラムと、前記アプリケーションが提供する機能をテストするためのテスト用プログラムと、前記コンピュータからの指示に応じて前記テスト用プログラムの実行を開始する命令を出すテストエージェント用プログラムと、を含むアプリケーションを受信する受信手段、
前記受信したアプリケーションをインストールするインストール手段、
前記テスト用プログラムの実行を開始するよう前記テストエージェント用プログラムを介して指示を受け付けた際に、前記テストエージェント用プログラムから出される命令により前記テスト用プログラムの実行を開始する開始手段
として機能させるためのプログラム。
【請求項14】
コンピュータを、
外部から提供されるアプリケーションを追加して実行可能な画像形成装置で実行するためのアプリケーションを作成する指示を受けたことに応じて、前記アプリケーションの機能を実現するアプリケーション用プログラムと、前記アプリケーションが提供する機能をテストするためのテスト用プログラムと、外部からの指示に応じて前記テスト用プログラムの実行を開始する命令を出すテストエージェント用プログラムと、を含むアプリケーションを生成する生成手段、
前記生成手段により生成されたアプリケーションを前記画像形成装置に送信する送信手段、
前記テスト用プログラムの開始の指示を受けたことに応じて、前記画像形成装置にインストールされた前記アプリケーションに含まれる前記テスト用プログラムの実行を開始するよう前記テストエージェント用プログラムを介して指示する指示手段
として機能させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate