説明

ICカードテスト装置、ICカードテスト方法およびコンピュータプログラム

【課題】ICカードプログラムの開発者がテストパターンを容易に作成することができるICカードテスト装置を提供する。
【解決手段】ICカードテスト装置1はスクリプト言語で記述されたテストスクリプト15を記憶している。ICカードプログラムをテストするとき、ICカードテスト装置1は、指定されたテストスクリプトに含まれるステートメントを逐次解釈し、解釈した処理をエミュレータ2に実行させることで、エミュレータ2に記憶されたICカードプログラムをテストする。例えば、ICカードテスト装置1は、スクリプト言語で記述されたテストスクリプトから、ICカードのプログラムインターフェース仕様に従い、16進数のキャラクターで記述されたコマンドAPDUを生成し、生成したコマンドAPDUを用いてICカードプログラムをテストする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ICカードに実装されるICカードプログラムをテストする装置および方法に関する。
【背景技術】
【0002】
クレジットカードやPKI(Public Key Infrastructure)のハードウェアトークンとして利用されているICカードのプログラムインターフェースは、非特許文献1または非特許文献2で定義されているように、16進数のキャラクター(0〜9、A〜F)を用いて表記される。
【0003】
ICカードに実装されるICカードプログラムを開発するとき、エミュレータまたは実際のICカードを用いてICカードプログラムはテストされ、ICカードプログラムをテストするために、ICカードプログラムの開発者は、ICカードのプログラムインターフェースに従い、16進数のキャラクターで記述したテストスクリプトを作成する。
【非特許文献1】JICSAP 外部端子付きICカード仕様(第1.1版) ICカードシステム利用促進協議会
【非特許文献2】EMV規格(BOOK1) Version 4.1 May 2004
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、ICカードプログラムの開発者がテストスクリプトを作成するとき、非特許文献1や非特許文献2などを参照しながら16進数のキャラクターでテストスクリプトを記述しなければならないため、テストスクリプトの作成に時間が費やされてしまっていた。更に、テストスクリプトに作成ミスがあると、当然のことながらテストスクリプトの作成ミスに起因するエラーが発生し、効率良くテストできない問題もあった。
【0005】
そこで、本発明は、ICカードプログラムの開発者がテストパターンを容易に作成することができ、更に、テストパターンの作成ミスが生じにくいICカードテスト装置、ICカードテスト方法およびコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
上述した課題を解決する第1の発明は、ICカードに実装されるコンピュータプログラムであるICカードプログラムをテストするICカードテスト装置であって、前記ICカードテスト装置には、前記ICカードプログラムを実行するICカード装置が接続され、ICカードテスト装置は、前記ICカードテスト装置用のスクリプト言語で記述されたテストスクリプトを記憶し、更に、ICカードテスト装置は、前記ICカード装置と通信するための物理的な通信インターフェースと、前記通信インターフェースを用いて前記ICカード装置とデータ通信するための前記伝送制御手段と、前記テストスクリプトを解釈し、前記ICカード装置に解釈した処理を実行させるスクリプト実行手段と、を備えていることを特徴とする。
【0007】
更に、第2の発明は、第1の発明に記載のICカードテスト装置であって、前記スクリプト実行手段は、前記ICカードプログラムのプログラムインターフェース仕様に基づき、前記ICカード装置に実行させるコマンドAPDUを前記テストスクリプトから生成するコマンドAPDU生成部を備え、前記スクリプト実行手段は、少なくとも、前記伝送制御手段を利用して、前記コマンドAPDU生成部が生成した前記コマンドAPDUを前記ICカード装置に送信し、前記ICカード装置から受信したレスポンスAPDUを処理することを特徴とする。
【0008】
更に、第3の発明は、ICカードに実装されるコンピュータプログラムであるICカードプログラムをテストするICカードテスト方法であって、ICカードテスト方法は、
ステップ1)前記ICカードテスト装置用のスクリプト言語で記述されたテストスクリプトを解釈するステップ、
ステップ2)前記ICカードプログラムを実行するICカード装置に、前記ステップ1)で解釈した処理を実行させるステップ、
を備え、ステップ1)およびステップ2)を繰り返し実行することで、前記ICカードプログラムをテストすることを特徴とする。
【0009】
更に、第4の発明は、第3の発明に記載のICカードテスト方法であって、前記ICカードテスト方法に備えられた前記ステップ1)では、前記ICカードプログラムのプログラムインターフェース仕様に基づき、前記ICカード装置に実行させるコマンドAPDUを前記テストスクリプトから生成し、生成した前記コマンドAPDUを前記ICカード装置に伝送する処理が実行され、前記ステップ2)では、前記ステップ1)で伝送した前記コマンドAPDUに対するレスポンスAPDUを前記ICカード装置から受信し、前記レスポンスAPDUを判定する処理が実行されることを特徴とする。
【0010】
更に、第5の発明は、第4の発明に記載のICカードテスト方法であって、前記ステップ2)では、前記レスポンスAPDUの判定結果に従って前記テストスクリプトの処理を分岐させることを特徴とする。
【0011】
更に、第6の発明は、第3の発明から第5の発明のいずれかに記載のICカードテスト方法に含まれる各ステップを実行させるためのコンピュータプログラムである。
【0012】
なお、本発明において、ICカード装置とは、ICカードやICカードの動作をエミュレートするエミュレータを意味している。
【発明の効果】
【0013】
上述した本発明によれば、前記スクリプト言語は16進のキャラクターよりも遥かに扱いやすいため、テストスクリプトを記述するときにスクリプト言語を利用できることで、ICカードプログラムの開発者がテストスクリプトを容易に作成することができばかりか、テストスクリプトの作成ミスも生じにくくなる。更に、前記レスポンスAPDUの判定結果に従って前記テストスクリプトの処理を分岐させることで、様々なケースに対応したテストを一つのテストスクリプトで実行できるようになる。
【発明を実施するための最良の形態】
【0014】
ここから本発明に係るICカードテスト装置1について、図を参照しながら詳細に説明する。図1は、ICカードの動作をエミュレート(Emulate)するエミュレータ2を利用ときの形態を示した図で、ICカードテスト装置1には、ICカードの動作をエミュレートとするエミュレータ2が接続されている。
【0015】
エミュレータ2はICカードに実装されるICカードプログラムを記憶し、ICカードテスト装置1は、エミュレータ2を用いたICカードプログラムテストに使用されるテストスクリプトをファイル形式で記憶している。一般的にICカードプログラム用のテストスクリプトは、ICカードのプログラムインターフェースの内容に従い16進数で記述されるが、本発明のテストスクリプトはスクリプト言語で記述されている。
【0016】
ICカードプログラムをテストするとき、ICカードテスト装置1は、指定されたテストスクリプトに含まれるステートメントを逐次解釈し、解釈した処理をエミュレータ2に実行させることで、エミュレータ2に記憶されたICカードプログラムをテストする。詳しくは、ICカードテスト装置1は、スクリプト言語で記述されたテストスクリプトから、ICカードのプログラムインターフェースに従い、16進数のキャラクターで記述されたコマンドAPDU(APDU:Applicaiton Protocol Data Unit)を生成し、生成したコマンドAPDUを用いてICカードプログラムをテストする。
【0017】
スクリプト言語は16進数のキャラクターよりも遥かに扱いやすいため、テストスクリプトを記述するときにスクリプト言語を利用できることで、ICカードプログラムの開発者がテストスクリプトを容易に作成することができばかりか、テストスクリプトの作成ミスも生じにくくなる。
【0018】
図2は、図1で図示したICカードテスト装置1のブロック図である。図2に示したように、ICカードテスト装置1にはエミュレータ2が接続され、ICカードテスト装置1は、ICカードプログラムテスト用のテストスクリプト15を記憶するためのデータ記憶手段14と、テストスクリプト15を解釈実行するスクリプト実行モジュール10と、ICカードのプログラムインターフェースに従い、テストスクリプト15に含まれるステートメントを解釈し、ICカードプログラムが実行可能なコマンドAPDUにコンパイルするコンパイルモジュール11と、エミュレータ2とデータ通信するための伝送制御モジュール12と、エミュレータ2と通信するための物理的な通信インターフェース回路13を備える。
【0019】
図3は、ICカードテスト装置1に記憶されるテストスクリプト15を説明する図である。図3に示したようにテストスクリプトには複数のステートメント150が記述されている。
【0020】
図4は、ステートメント150の構造を説明する図である。一つのステートメント150は、スクリプトの内容を示すスクリプトID151に加え、少なくとも1つの宣言ブロック152が記述され、複数の宣言ブロック152は{}で括られている。ステートメント150に含まれる一つの宣言ブロック152は、宣言ブロック152の属性とその値を有し、宣言ブロック152の属性とその値は「:」で区切られる。
【0021】
図3において、Protocol{}は伝送制御プロトコルを示すステートメント150で、エミュレータ2とデータ通信するときの伝送制御プロトコル150を示す宣言ブロック152が含まれる。
【0022】
図3のATR{}はICカードを活性化することを示すステートメント150で、ATRの期待値は、属性が「Expectaion」である宣言ブロックの値として記述される。
【0023】
図3のC−APDU{}は、エミュレータ2に伝送するコマンドAPDUを示すステートメント150で、コマンドAPDUに変換するために必要な少なくとも一つの宣言ブロック152が記述される。属性が「Channel」である宣言ブロック152の値ではコマンドが実行される論理チャネルの番号が宣言され、属性が「Name」である宣言ブロック152の値ではコマンド名が宣言され、例えば、その値が「Select」ならば、非特許文献1のSlectコマンドを示す。また、属性が「Parameter」の宣言ブロック152ではコマンド実行時の様々なパラメータが記述される。
【0024】
図3のR−APDU{}は、エミュレータ2から受信したレスポンスAPDUの処理を示すステートメント150である。C−APDU{}と同じく、R−APDU{}には複数の宣言ブロック152が記述され、属性が「Compare」である宣言ブロック152はレスポンスAPDUと期待値とのコンペア実行の有無が宣言される。また、レスポンスAPDUの期待値は、属性が「SW」の宣言ブロック152および属性が「Expectatin属性」の宣言ブロック152の値として記述される。
【0025】
また、IF{}は、R−APDU{}の処理結果に基づき条件分岐を示すステートメント150である。IF{}は直前のR―APDU{}に対して有効であり、IF{}のステートメントに記述され、属性が「Flag」である宣言ブロック152は分岐の条件を示す。図3においては、直前のレスポンスAPDUのコンペア結果が「False」(一致しない)の場合は、#Session1の行にジャンプする。
【0026】
ICカードテスト装置1に備えられたコンパイルモジュール11は、プログラムインターフェース(コマンドAPDUおよびレスポンスAPDU)の仕様を記憶し、C−APDU{}のステートメント150をこの定義内容に従ってコマンドAPDUにコンパイルする。
【0027】
図5は、プログラムインターフェースで定義されているコマンドAPDUの一例で、図5はSelectコマンドのコマンドAPDUを示している。
【0028】
図5に示したように、SelectコマンドのコマンドAPDUは、非特許文献1で定義されているケース3のコマンド構造に準拠し、CLA、INS、P1、P2、LcおよびDataから構成されている。INSはコマンドを識別するためのデータで、Selectコマンドでは「A4h」(hは16進表記)である。また、P1、P2はコマンド実行時のパラメータを示し、Lcはデータ長を示し、Dataでは選択するファイルのファイル番号が示される。
【0029】
コンパイルモジュールがC−APDU{}をコマンドAPDUに変換するときは、属性が「Channel」である宣言ブロック152の値がCLAに変換され、ここでは「00h」である。また、属性が「Name」の宣言ブロック152の値からコマンドAPDUのINSを抽出する。例えば、属性が「Name」の宣言ブロックの値が「Select」である場合は、SlecltコマンドのINSである「A4h」が抽出される。また、C−APDU{}のパラメータを示す宣言ブロック152から、コマンドAPDUのパラメータ(P1,P2,Lc、Data)が変換される。
【0030】
ここから、ICカードテスト装置1の動作手順について説明する。図6は、ICカードテスト装置1の動作手順を示したフロー図である。ICカードテスト装置1がICカードプログラムのテストを開始するとき、スクリプト実行モジュール10はテストスクリプト15の先頭から順にステートメント150を読出し、読み出したステートメント150に対応した処理を実行する。
【0031】
この手順の最初のステップS1は、エミュレータ2とのデータ通信で利用する伝送制御プロトコルを設定するステップである。このステップでは、エミュレータ2を用いてICカードプログラムのテストを開始すると、ICカードテスト装置1のスクリプト実行モジュール10は、テストスクリプト15からProtocol{}のステートメント150を読出し、Protocol{}で示される伝送制御プロトコルに設定する。
【0032】
次のステップS2は、エミュレータ2を活性化するステップである。このステップでは、データスクリプト15からATR{}のステートメント150を読出し、ステップS1で設定した伝送制御プロトコルに準拠した手順で、エミュレータ2を活性化し、例えば、エミュレータ2から受信したATRの返信と期待値とを比較する。
【0033】
次のステップS3は、エミュレータ2に送信するコマンドAPDUを生成し、エミュレータ2に送信するステップである。このステップでは、スクリプト実行モジュール10は、テストスクリプト15からC−APUD{}のステートメント150を読出し、読み出したC−APUD{}をコンパイラモジュール11に処理させる。コンパイラモジュール11は、プログラムインターフェースの定義内容を参照して、C−APDU{}に含まれる宣言ブロック152からコマンドAPDUを作成する。
【0034】
次のステップS4は、ステップS3で生成したコマンドAPDUをエミュレータ2に送信するステップである。このステップでは、スクリプト実行モジュール10は、コマンドAPDUを伝送制御モジュール12に送り、伝送制御モジュール12はコマンドAPDUにTPDU(Transmission Protocol Data Unit)を付加し、通信インターフェース13を介してエミュレータ2にコマンドAPDUを送信し、送信したコマンドAPDUはエミュレータ2で処理される。
【0035】
次のステップS5は、エミュレータ2からレスポンスAPDUを受信し、受信したレスポンスADPUを処理するステップである。このステップでは、スクリプト実行モジュール10は、レスポンスAPDUを受信すると、発行スクリプト15からR−APDU{}を読み取り、レスポンスAPDUに含まれるSWの期待値や、データがある場合はデータの期待値をコンペアなどして、読取ったR−APDU{}を処理する。
【0036】
次のステップS6は、次のステートメント150を読取るステップである。このステップで、スクリプト実行モジュール10は、レスポンスAPDUの次のステートメント150を読み取り、読取ったステートメント150がIF{}属性のステートメント150ならばステップS7に進み、C−APDU{}属性のステートメント150ならばステップS3に戻り、End属性のステートメント150ならばこの手順を終了する。
【0037】
ステップS7ではIF{}に含まれる宣言ブロック152に対応した処理を実行する。例えば、条件付きのジャンプした後、ステップS6に戻る。
【0038】
なお、図1において、ICカードテスト装置1にエミュレータ2が接続されているものとして説明をしてきたが、ICカードテスト装置1でICカードそのものを利用してテストすることもできる。ICカードを利用してテストするときは、ICカードテスト装置1にリーダライタが接続され、ICカードテスト装置1はリーダライタを介してICカードとデータ通信しICカードじ実装されたICカードプログラムをテストする。
【図面の簡単な説明】
【0039】
【図1】エミュレータを利用する実施の形態を示した図。
【図2】ICカードテスト装置のブロック図。
【図3】テストスクリプトを説明する図。
【図4】ステートメントの構造を説明する図。
【図5】コマンドAPDUの一例を示した図。
【図6】ICカードテスト装置の動作手順を示したフロー図。
【符号の説明】
【0040】
1 ICカードテスト装置
10 スクリプト実行モジュール
11 コンパイルモジュール
12 伝送制御モジュール
13 通信インターフェース回路
14 データ記憶手段
15 テストスクリプト
150 ステートメント
151 スクリプトID
152 宣言ブロック
2 エミュレータ


【特許請求の範囲】
【請求項1】
ICカードに実装されるコンピュータプログラムであるICカードプログラムをテストするICカードテスト装置であって、前記ICカードテスト装置には、前記ICカードプログラムを実行するICカード装置が接続され、ICカードテスト装置は、前記ICカードテスト装置用のスクリプト言語で記述されたテストスクリプトを記憶し、更に、ICカードテスト装置は、前記ICカード装置と通信するための物理的な通信インターフェースと、前記通信インターフェースを用いて前記ICカード装置とデータ通信するための前記伝送制御手段と、前記テストスクリプトを解釈し、前記ICカード装置に解釈した処理を実行させるスクリプト実行手段と、を備えていることを特徴とするICカードテスト装置。
【請求項2】
請求項1に記載のICカードテスト装置であって、前記スクリプト実行手段は、前記ICカードプログラムのプログラムインターフェース仕様に基づき、前記ICカード装置に実行させるコマンドAPDUを前記テストスクリプトから生成するコマンドAPDU生成部を備え、前記スクリプト実行手段は、少なくとも、前記伝送制御手段を利用して、前記コマンドAPDU生成部が生成した前記コマンドAPDUを前記ICカード装置に送信し、前記ICカード装置から受信したレスポンスAPDUを処理することを特徴とするICカードテスト装置。
【請求項3】
ICカードに実装されるコンピュータプログラムであるICカードプログラムをテストするICカードテスト方法であって、ICカードテスト方法は、
ステップ1)前記ICカードテスト装置用のスクリプト言語で記述されたテストスクリプトを解釈するステップ、
ステップ2)前記ICカードプログラムを実行するICカード装置に、前記ステップ1)で解釈した処理を実行させるステップ、
を備え、ステップ1)およびステップ2)を繰り返し実行することで、前記ICカードプログラムをテストすることを特徴とするICカードテスト方法。
【請求項4】
請求項3に記載のICカードテスト方法であって、前記ICカードテスト方法に備えられた前記ステップ1)は、前記ICカードプログラムのプログラムインターフェース仕様に基づき、前記ICカード装置に実行させるコマンドAPDUを前記テストスクリプトから生成し、生成した前記コマンドAPDUを前記ICカード装置に伝送する処理が実行され、前記ステップ2)は、前記ステップ1)で伝送した前記コマンドAPDUに対するレスポンスAPDUを前記ICカード装置から受信し、前記レスポンスAPDUを判定する処理が実行されることを特徴とするICカードテスト方法。
【請求項5】
請求項4に記載のICカードテスト方法であって、前記ステップ2)では、前記レスポンスAPDUの判定結果に従って前記テストスクリプトの処理を分岐させることを特徴とするICカードテスト方法。
【請求項6】
請求項3から請求項5のいずれかに記載のICカードテスト方法に含まれる各ステップを実行させるためのコンピュータプログラム。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2007−317085(P2007−317085A)
【公開日】平成19年12月6日(2007.12.6)
【国際特許分類】
【出願番号】特願2006−148215(P2006−148215)
【出願日】平成18年5月29日(2006.5.29)
【出願人】(000002897)大日本印刷株式会社 (14,506)
【Fターム(参考)】