(57)【要約】【課題】ＩＣカードプログラムの開発者がテストパターンを容易に作成することができるＩＣカードテスト装置を提供する。【解決手段】ＩＣカードテスト装置１はスクリプト言語で記述されたテストスクリプト１５を記憶している。ＩＣカードプログラムをテストするとき、ＩＣカードテスト装置１は、指定されたテストスクリプトに含まれるステートメントを逐次解釈し、解釈した処理をエミュレータ２に実行させることで、エミュレータ２に記憶されたＩＣカードプログラムをテストする。例えば、ＩＣカードテスト装置１は、スクリプト言語で記述されたテストスクリプトから、ＩＣカードのプログラムインターフェース仕様に従い、１６進数のキャラクターで記述されたコマンドＡＰＤＵを生成し、生成したコマンドＡＰＤＵを用いてＩＣカードプログラムをテストする。【選択図】図２
2007317085.tif 000002
【特許請求の範囲】
【請求項１】
ＩＣカードに実装されるコンピュータプログラムであるＩＣカードプログラムをテストするＩＣカードテスト装置であって、前記ＩＣカードテスト装置には、前記ＩＣカードプログラムを実行するＩＣカード装置が接続され、ＩＣカードテスト装置は、前記ＩＣカードテスト装置用のスクリプト言語で記述されたテストスクリプトを記憶し、更に、ＩＣカードテスト装置は、前記ＩＣカード装置と通信するための物理的な通信インターフェースと、前記通信インターフェースを用いて前記ＩＣカード装置とデータ通信するための前記伝送制御手段と、前記テストスクリプトを解釈し、前記ＩＣカード装置に解釈した処理を実行させるスクリプト実行手段と、を備えていることを特徴とするＩＣカードテスト装置。
【請求項２】
請求項１に記載のＩＣカードテスト装置であって、前記スクリプト実行手段は、前記ＩＣカードプログラムのプログラムインターフェース仕様に基づき、前記ＩＣカード装置に実行させるコマンドＡＰＤＵを前記テストスクリプトから生成するコマンドＡＰＤＵ生成部を備え、前記スクリプト実行手段は、少なくとも、前記伝送制御手段を利用して、前記コマンドＡＰＤＵ生成部が生成した前記コマンドＡＰＤＵを前記ＩＣカード装置に送信し、前記ＩＣカード装置から受信したレスポンスＡＰＤＵを処理することを特徴とするＩＣカードテスト装置。
【請求項３】
ＩＣカードに実装されるコンピュータプログラムであるＩＣカードプログラムをテストするＩＣカードテスト方法であって、ＩＣカードテスト方法は、
ステップ１）前記ＩＣカードテスト装置用のスクリプト言語で記述されたテストスクリプトを解釈するステップ、
ステップ２）前記ＩＣカードプログラムを実行するＩＣカード装置に、前記ステップ１）で解釈した処理を実行させるステップ、
を備え、ステップ１）およびステップ２）を繰り返し実行することで、前記ＩＣカードプログラムをテストすることを特徴とするＩＣカードテスト方法。
【請求項４】
請求項３に記載のＩＣカードテスト方法であって、前記ＩＣカードテスト方法に備えられた前記ステップ１）は、前記ＩＣカードプログラムのプログラムインターフェース仕様に基づき、前記ＩＣカード装置に実行させるコマンドＡＰＤＵを前記テストスクリプトから生成し、生成した前記コマンドＡＰＤＵを前記ＩＣカード装置に伝送する処理が実行され、前記ステップ２）は、前記ステップ１）で伝送した前記コマンドＡＰＤＵに対するレスポンスＡＰＤＵを前記ＩＣカード装置から受信し、前記レスポンスＡＰＤＵを判定する処理が実行されることを特徴とするＩＣカードテスト方法。
【請求項５】
請求項４に記載のＩＣカードテスト方法であって、前記ステップ２）では、前記レスポンスＡＰＤＵの判定結果に従って前記テストスクリプトの処理を分岐させることを特徴とするＩＣカードテスト方法。
【請求項６】
請求項３から請求項５のいずれかに記載のＩＣカードテスト方法に含まれる各ステップを実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＣカードに実装されるＩＣカードプログラムをテストする装置および方法に関する。
【背景技術】
【０００２】
クレジットカードやＰＫＩ（Public Key Infrastructure）のハードウェアトークンとして利用されているＩＣカードのプログラムインターフェースは、非特許文献１または非特許文献２で定義されているように、１６進数のキャラクター（０〜９、Ａ〜Ｆ）を用いて表記される。
【０００３】
ＩＣカードに実装されるＩＣカードプログラムを開発するとき、エミュレータまたは実際のＩＣカードを用いてＩＣカードプログラムはテストされ、ＩＣカードプログラムをテストするために、ＩＣカードプログラムの開発者は、ＩＣカードのプログラムインターフェースに従い、１６進数のキャラクターで記述したテストスクリプトを作成する。
【非特許文献１】ＪＩＣＳＡＰ  外部端子付きＩＣカード仕様（第１.１版）                      ＩＣカードシステム利用促進協議会
【非特許文献２】ＥＭＶ規格（BOOK1） Version 4.1 May 2004
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、ＩＣカードプログラムの開発者がテストスクリプトを作成するとき、非特許文献１や非特許文献２などを参照しながら１６進数のキャラクターでテストスクリプトを記述しなければならないため、テストスクリプトの作成に時間が費やされてしまっていた。更に、テストスクリプトに作成ミスがあると、当然のことながらテストスクリプトの作成ミスに起因するエラーが発生し、効率良くテストできない問題もあった。
【０００５】
そこで、本発明は、ＩＣカードプログラムの開発者がテストパターンを容易に作成することができ、更に、テストパターンの作成ミスが生じにくいＩＣカードテスト装置、ＩＣカードテスト方法およびコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決する第１の発明は、ＩＣカードに実装されるコンピュータプログラムであるＩＣカードプログラムをテストするＩＣカードテスト装置であって、前記ＩＣカードテスト装置には、前記ＩＣカードプログラムを実行するＩＣカード装置が接続され、ＩＣカードテスト装置は、前記ＩＣカードテスト装置用のスクリプト言語で記述されたテストスクリプトを記憶し、更に、ＩＣカードテスト装置は、前記ＩＣカード装置と通信するための物理的な通信インターフェースと、前記通信インターフェースを用いて前記ＩＣカード装置とデータ通信するための前記伝送制御手段と、前記テストスクリプトを解釈し、前記ＩＣカード装置に解釈した処理を実行させるスクリプト実行手段と、を備えていることを特徴とする。
【０００７】
更に、第２の発明は、第１の発明に記載のＩＣカードテスト装置であって、前記スクリプト実行手段は、前記ＩＣカードプログラムのプログラムインターフェース仕様に基づき、前記ＩＣカード装置に実行させるコマンドＡＰＤＵを前記テストスクリプトから生成するコマンドＡＰＤＵ生成部を備え、前記スクリプト実行手段は、少なくとも、前記伝送制御手段を利用して、前記コマンドＡＰＤＵ生成部が生成した前記コマンドＡＰＤＵを前記ＩＣカード装置に送信し、前記ＩＣカード装置から受信したレスポンスＡＰＤＵを処理することを特徴とする。
【０００８】
更に、第３の発明は、ＩＣカードに実装されるコンピュータプログラムであるＩＣカードプログラムをテストするＩＣカードテスト方法であって、ＩＣカードテスト方法は、
ステップ１）前記ＩＣカードテスト装置用のスクリプト言語で記述されたテストスクリプトを解釈するステップ、
ステップ２）前記ＩＣカードプログラムを実行するＩＣカード装置に、前記ステップ１）で解釈した処理を実行させるステップ、
を備え、ステップ１）およびステップ２）を繰り返し実行することで、前記ＩＣカードプログラムをテストすることを特徴とする。
【０００９】
更に、第４の発明は、第３の発明に記載のＩＣカードテスト方法であって、前記ＩＣカードテスト方法に備えられた前記ステップ１）では、前記ＩＣカードプログラムのプログラムインターフェース仕様に基づき、前記ＩＣカード装置に実行させるコマンドＡＰＤＵを前記テストスクリプトから生成し、生成した前記コマンドＡＰＤＵを前記ＩＣカード装置に伝送する処理が実行され、前記ステップ２）では、前記ステップ１）で伝送した前記コマンドＡＰＤＵに対するレスポンスＡＰＤＵを前記ＩＣカード装置から受信し、前記レスポンスＡＰＤＵを判定する処理が実行されることを特徴とする。
【００１０】
更に、第５の発明は、第４の発明に記載のＩＣカードテスト方法であって、前記ステップ２）では、前記レスポンスＡＰＤＵの判定結果に従って前記テストスクリプトの処理を分岐させることを特徴とする。
【００１１】
更に、第６の発明は、第３の発明から第５の発明のいずれかに記載のＩＣカードテスト方法に含まれる各ステップを実行させるためのコンピュータプログラムである。
【００１２】
なお、本発明において、ＩＣカード装置とは、ＩＣカードやＩＣカードの動作をエミュレートするエミュレータを意味している。
【発明の効果】
【００１３】
上述した本発明によれば、前記スクリプト言語は１６進のキャラクターよりも遥かに扱いやすいため、テストスクリプトを記述するときにスクリプト言語を利用できることで、ＩＣカードプログラムの開発者がテストスクリプトを容易に作成することができばかりか、テストスクリプトの作成ミスも生じにくくなる。更に、前記レスポンスＡＰＤＵの判定結果に従って前記テストスクリプトの処理を分岐させることで、様々なケースに対応したテストを一つのテストスクリプトで実行できるようになる。
【発明を実施するための最良の形態】
【００１４】
ここから本発明に係るＩＣカードテスト装置１について、図を参照しながら詳細に説明する。図１は、ＩＣカードの動作をエミュレート（Emulate）するエミュレータ２を利用ときの形態を示した図で、ＩＣカードテスト装置１には、ＩＣカードの動作をエミュレートとするエミュレータ２が接続されている。
【００１５】
エミュレータ２はＩＣカードに実装されるＩＣカードプログラムを記憶し、ＩＣカードテスト装置１は、エミュレータ２を用いたＩＣカードプログラムテストに使用されるテストスクリプトをファイル形式で記憶している。一般的にＩＣカードプログラム用のテストスクリプトは、ＩＣカードのプログラムインターフェースの内容に従い１６進数で記述されるが、本発明のテストスクリプトはスクリプト言語で記述されている。
【００１６】
ＩＣカードプログラムをテストするとき、ＩＣカードテスト装置１は、指定されたテストスクリプトに含まれるステートメントを逐次解釈し、解釈した処理をエミュレータ２に実行させることで、エミュレータ２に記憶されたＩＣカードプログラムをテストする。詳しくは、ＩＣカードテスト装置１は、スクリプト言語で記述されたテストスクリプトから、ＩＣカードのプログラムインターフェースに従い、１６進数のキャラクターで記述されたコマンドＡＰＤＵ（ＡＰＤＵ：Ａｐｐｌｉｃａｉｔｏｎ  Ｐｒｏｔｏｃｏｌ  Ｄａｔａ  Ｕｎｉｔ）を生成し、生成したコマンドＡＰＤＵを用いてＩＣカードプログラムをテストする。
【００１７】
スクリプト言語は１６進数のキャラクターよりも遥かに扱いやすいため、テストスクリプトを記述するときにスクリプト言語を利用できることで、ＩＣカードプログラムの開発者がテストスクリプトを容易に作成することができばかりか、テストスクリプトの作成ミスも生じにくくなる。
【００１８】
図２は、図１で図示したＩＣカードテスト装置１のブロック図である。図２に示したように、ＩＣカードテスト装置１にはエミュレータ２が接続され、ＩＣカードテスト装置１は、ＩＣカードプログラムテスト用のテストスクリプト１５を記憶するためのデータ記憶手段１４と、テストスクリプト１５を解釈実行するスクリプト実行モジュール１０と、ＩＣカードのプログラムインターフェースに従い、テストスクリプト１５に含まれるステートメントを解釈し、ＩＣカードプログラムが実行可能なコマンドＡＰＤＵにコンパイルするコンパイルモジュール１１と、エミュレータ２とデータ通信するための伝送制御モジュール１２と、エミュレータ２と通信するための物理的な通信インターフェース回路１３を備える。
【００１９】
図３は、ＩＣカードテスト装置１に記憶されるテストスクリプト１５を説明する図である。図３に示したようにテストスクリプトには複数のステートメント１５０が記述されている。
【００２０】
図４は、ステートメント１５０の構造を説明する図である。一つのステートメント１５０は、スクリプトの内容を示すスクリプトＩＤ１５１に加え、少なくとも１つの宣言ブロック１５２が記述され、複数の宣言ブロック１５２は｛｝で括られている。ステートメント１５０に含まれる一つの宣言ブロック１５２は、宣言ブロック１５２の属性とその値を有し、宣言ブロック１５２の属性とその値は「：」で区切られる。
【００２１】
図３において、Ｐｒｏｔｏｃｏｌ｛｝は伝送制御プロトコルを示すステートメント１５０で、エミュレータ２とデータ通信するときの伝送制御プロトコル１５０を示す宣言ブロック１５２が含まれる。
【００２２】
図３のＡＴＲ｛｝はＩＣカードを活性化することを示すステートメント１５０で、ＡＴＲの期待値は、属性が「Ｅｘｐｅｃｔａｉｏｎ」である宣言ブロックの値として記述される。
【００２３】
図３のＣ−ＡＰＤＵ｛｝は、エミュレータ２に伝送するコマンドＡＰＤＵを示すステートメント１５０で、コマンドＡＰＤＵに変換するために必要な少なくとも一つの宣言ブロック１５２が記述される。属性が「Ｃｈａｎｎｅｌ」である宣言ブロック１５２の値ではコマンドが実行される論理チャネルの番号が宣言され、属性が「Ｎａｍｅ」である宣言ブロック１５２の値ではコマンド名が宣言され、例えば、その値が「Select」ならば、非特許文献１のＳｌｅｃｔコマンドを示す。また、属性が「Ｐａｒａｍｅｔｅｒ」の宣言ブロック１５２ではコマンド実行時の様々なパラメータが記述される。
【００２４】
図３のＲ−ＡＰＤＵ｛｝は、エミュレータ２から受信したレスポンスＡＰＤＵの処理を示すステートメント１５０である。Ｃ−ＡＰＤＵ｛｝と同じく、Ｒ−ＡＰＤＵ｛｝には複数の宣言ブロック１５２が記述され、属性が「Ｃｏｍｐａｒｅ」である宣言ブロック１５２はレスポンスＡＰＤＵと期待値とのコンペア実行の有無が宣言される。また、レスポンスＡＰＤＵの期待値は、属性が「ＳＷ」の宣言ブロック１５２および属性が「Ｅｘｐｅｃｔａｔｉｎ属性」の宣言ブロック１５２の値として記述される。
【００２５】
また、ＩＦ｛｝は、Ｒ−ＡＰＤＵ｛｝の処理結果に基づき条件分岐を示すステートメント１５０である。ＩＦ｛｝は直前のＲ―ＡＰＤＵ｛｝に対して有効であり、ＩＦ｛｝のステートメントに記述され、属性が「Ｆｌａｇ」である宣言ブロック１５２は分岐の条件を示す。図３においては、直前のレスポンスＡＰＤＵのコンペア結果が「Ｆａｌｓｅ」（一致しない）の場合は、＃Ｓｅｓｓｉｏｎ１の行にジャンプする。
【００２６】
ＩＣカードテスト装置１に備えられたコンパイルモジュール１１は、プログラムインターフェース（コマンドＡＰＤＵおよびレスポンスＡＰＤＵ）の仕様を記憶し、Ｃ−ＡＰＤＵ｛｝のステートメント１５０をこの定義内容に従ってコマンドＡＰＤＵにコンパイルする。
【００２７】
図５は、プログラムインターフェースで定義されているコマンドＡＰＤＵの一例で、図５はＳｅｌｅｃｔコマンドのコマンドＡＰＤＵを示している。
【００２８】
図５に示したように、ＳｅｌｅｃｔコマンドのコマンドＡＰＤＵは、非特許文献１で定義されているケース３のコマンド構造に準拠し、ＣＬＡ、ＩＮＳ、Ｐ１、Ｐ２、ＬｃおよびＤａｔａから構成されている。ＩＮＳはコマンドを識別するためのデータで、Ｓｅｌｅｃｔコマンドでは「Ａ４ｈ」（ｈは１６進表記）である。また、Ｐ１、Ｐ２はコマンド実行時のパラメータを示し、Ｌｃはデータ長を示し、Ｄａｔａでは選択するファイルのファイル番号が示される。
【００２９】
コンパイルモジュールがＣ−ＡＰＤＵ｛｝をコマンドＡＰＤＵに変換するときは、属性が「Ｃｈａｎｎｅｌ」である宣言ブロック１５２の値がＣＬＡに変換され、ここでは「００ｈ」である。また、属性が「Ｎａｍｅ」の宣言ブロック１５２の値からコマンドＡＰＤＵのＩＮＳを抽出する。例えば、属性が「Ｎａｍｅ」の宣言ブロックの値が「Ｓｅｌｅｃｔ」である場合は、ＳｌｅｃｌｔコマンドのＩＮＳである「Ａ４ｈ」が抽出される。また、Ｃ−ＡＰＤＵ｛｝のパラメータを示す宣言ブロック１５２から、コマンドＡＰＤＵのパラメータ（Ｐ１，Ｐ２，Ｌｃ、Ｄａｔａ）が変換される。
【００３０】
ここから、ＩＣカードテスト装置１の動作手順について説明する。図６は、ＩＣカードテスト装置１の動作手順を示したフロー図である。ＩＣカードテスト装置１がＩＣカードプログラムのテストを開始するとき、スクリプト実行モジュール１０はテストスクリプト１５の先頭から順にステートメント１５０を読出し、読み出したステートメント１５０に対応した処理を実行する。
【００３１】
この手順の最初のステップＳ１は、エミュレータ２とのデータ通信で利用する伝送制御プロトコルを設定するステップである。このステップでは、エミュレータ２を用いてＩＣカードプログラムのテストを開始すると、ＩＣカードテスト装置１のスクリプト実行モジュール１０は、テストスクリプト１５からＰｒｏｔｏｃｏｌ｛｝のステートメント１５０を読出し、Ｐｒｏｔｏｃｏｌ｛｝で示される伝送制御プロトコルに設定する。
【００３２】
次のステップＳ２は、エミュレータ２を活性化するステップである。このステップでは、データスクリプト１５からＡＴＲ｛｝のステートメント１５０を読出し、ステップＳ１で設定した伝送制御プロトコルに準拠した手順で、エミュレータ２を活性化し、例えば、エミュレータ２から受信したＡＴＲの返信と期待値とを比較する。
【００３３】
次のステップＳ３は、エミュレータ２に送信するコマンドＡＰＤＵを生成し、エミュレータ２に送信するステップである。このステップでは、スクリプト実行モジュール１０は、テストスクリプト１５からＣ−ＡＰＵＤ｛｝のステートメント１５０を読出し、読み出したＣ−ＡＰＵＤ｛｝をコンパイラモジュール１１に処理させる。コンパイラモジュール１１は、プログラムインターフェースの定義内容を参照して、Ｃ−ＡＰＤＵ｛｝に含まれる宣言ブロック１５２からコマンドＡＰＤＵを作成する。
【００３４】
次のステップＳ４は、ステップＳ３で生成したコマンドＡＰＤＵをエミュレータ２に送信するステップである。このステップでは、スクリプト実行モジュール１０は、コマンドＡＰＤＵを伝送制御モジュール１２に送り、伝送制御モジュール１２はコマンドＡＰＤＵにＴＰＤＵ（Transmission Protocol Data Unit）を付加し、通信インターフェース１３を介してエミュレータ２にコマンドＡＰＤＵを送信し、送信したコマンドＡＰＤＵはエミュレータ２で処理される。
【００３５】
次のステップＳ５は、エミュレータ２からレスポンスＡＰＤＵを受信し、受信したレスポンスＡＤＰＵを処理するステップである。このステップでは、スクリプト実行モジュール１０は、レスポンスＡＰＤＵを受信すると、発行スクリプト１５からＲ−ＡＰＤＵ｛｝を読み取り、レスポンスＡＰＤＵに含まれるＳＷの期待値や、データがある場合はデータの期待値をコンペアなどして、読取ったＲ−ＡＰＤＵ｛｝を処理する。
【００３６】
次のステップＳ６は、次のステートメント１５０を読取るステップである。このステップで、スクリプト実行モジュール１０は、レスポンスＡＰＤＵの次のステートメント１５０を読み取り、読取ったステートメント１５０がＩＦ｛｝属性のステートメント１５０ならばステップＳ７に進み、Ｃ−ＡＰＤＵ｛｝属性のステートメント１５０ならばステップＳ３に戻り、Ｅｎｄ属性のステートメント１５０ならばこの手順を終了する。
【００３７】
ステップＳ７ではＩＦ｛｝に含まれる宣言ブロック１５２に対応した処理を実行する。例えば、条件付きのジャンプした後、ステップＳ６に戻る。
【００３８】
なお、図１において、ＩＣカードテスト装置１にエミュレータ２が接続されているものとして説明をしてきたが、ＩＣカードテスト装置１でＩＣカードそのものを利用してテストすることもできる。ＩＣカードを利用してテストするときは、ＩＣカードテスト装置１にリーダライタが接続され、ＩＣカードテスト装置１はリーダライタを介してＩＣカードとデータ通信しＩＣカードじ実装されたＩＣカードプログラムをテストする。
【図面の簡単な説明】
【００３９】
【図１】エミュレータを利用する実施の形態を示した図。
【図２】ＩＣカードテスト装置のブロック図。
【図３】テストスクリプトを説明する図。
【図４】ステートメントの構造を説明する図。
【図５】コマンドＡＰＤＵの一例を示した図。
【図６】ＩＣカードテスト装置の動作手順を示したフロー図。
【符号の説明】
【００４０】
１  ＩＣカードテスト装置
１０  スクリプト実行モジュール
１１  コンパイルモジュール
１２  伝送制御モジュール
１３  通信インターフェース回路
１４  データ記憶手段
１５  テストスクリプト
１５０  ステートメント
１５１  スクリプトＩＤ
１５２  宣言ブロック
２  エミュレータ
【図１】
2007317085.tif 000003
【図２】
2007317085.tif 000004
【図３】
2007317085.tif 000005
【図４】
2007317085.tif 000006
【図５】
2007317085.tif 000007
【図６】
2007317085.tif 000008