(57)【要約】【課題】容易に精算プログラムをテストすることができ、信頼性の高い精算プログラムを容易に開発することができる精算プログラムの検査装置及び検査方法を提供する。【解決手段】記憶手段に精算プログラムを記憶しておき、入力手段により入力した第１のテストデータから第１のテストデータと異なり、かつ、前記第１のテストデータと精算額が同一金額となる第２のテストデータを作成する。さらに、前記第１のテストデータを用いて精算プログラムにより精算額を算出するとともに、前記第２のテストデータを用いて精算プログラムにより精算額を算出し、前記第１のテストデータに対する精算額と、前記第２のテストデータに対する精算額とが一致するか否かにより前記精算プログラムによる精算処理が正常か否かを判断する。【選択図】      図１
2008077215.tif 000002
【特許請求の範囲】
【請求項１】
料金の精算処理を行う精算プログラムを検査する検査装置であって、
前記精算プログラムを記憶する記憶手段と、
第１のテストデータを入力する入力手段と、
前記第１のテストデータの内容に基づいて、前記第１のテストデータとは異なり、かつ、精算額が前記第１のテストデータに対する精算額と同一となるべき第２のテストデータを作成する作成手段と、
前記第１のテストデータを用いて、前記精算プログラムにより精算額を算出する第１の精算手段と、
前記作成手段により作成された第２のテストデータを用いて、前記精算プログラムにより精算額を算出する第２の精算手段と、
前記第１の精算手段により算出された精算額と、前記第２の精算手段により算出された精算額とが一致するか否かを判断する判断手段と、
を備えた検査装置。
【請求項２】
前記記憶手段は、複数の精算プログラムを記憶しており、
前記第１の精算手段は、前記第１のテストデータの内容に基づいて精算処理を行うべき精算プログラムを選択して精算額を算出し、
前記第２の精算手段は、前記第２のテストデータの内容に基づいて精算処理を行うべき精算プログラムを選択して精算額を算出する、
ことを特徴とする前記請求項１に記載の検査装置。
【請求項３】
第１、第２のテストデータは、乗車駅情報、降車駅情報、および、乗車券情報を含むデータであり、
前記複数の精算プログラムは、各駅の精算プログラムであり、
第１の精算手段は、第１のテストデータにおける降車駅情報に基づいて精算プログラムを選択して精算額を算出し、
前記第２の精算手段は、前記第２のテストデータにおける降車駅情報に基づいて精算プログラムを選択して精算額を算出する、
ことを特徴とする前記請求項２に記載の検査装置。
【請求項４】
前記作成手段は、第２のテストデータとして、前記第１のテストデータの乗車駅情報と降車駅情報とが逆の関係となるテストデータを作成する、
ことを特徴とする前記請求項３に記載の検査装置。
【請求項５】
さらに、前記第１、第２のテストデータと前記精算額と前記判断手段による判断結果とを関連付けたデータベースを作成する制御手段を備えたことを特徴とする前記請求項１に記載の検査装置。
【請求項６】
さらに、前記判断手段による判断結果を報知する報知手段を備えたことを特徴とする前記請求項１乃至５の何れかに記載の検査装置。
【請求項７】
料金の精算処理を行う精算プログラムを検査する検査装置であって、
テストデータと前記テストデータに対して既存の精算プログラムで算出した精算額とを対応付けて記憶する記憶手段と、
検査対象とする精算プログラムを入力する入力手段と、
前記記憶手段に記憶しているテストデータを用いて、前記入力手段により入力した精算プログラムにより精算額を算出する精算手段と、
前記精算手段により算出された精算額と、前記記憶手段に記憶している当該テストデータに対応する精算額とが一致するか否かを判断する判断手段と、
を備えた検査装置。
【請求項８】
料金の精算処理を行う精算プログラムを検査する検査装置であって、
第１のテストデータを記憶する第１の記憶手段と、
前記第１のテストデータの内容に基づいて、前記第１のテストデータとは異なり、かつ、精算額が前記第１のテストデータに対する精算額と同一となるべき第２のテストデータを記憶する第２の記憶手段と、
前記第１のテストデータを用いて、第１の精算プログラムにより第１の精算額を算出する第１の精算手段と、
前記作成手段により作成された第２のテストデータを用いて、前記第１の精算プログラムにより第２の精算額を算出する第２の精算手段と、
前記第１の精算手段により算出された第１の精算額と、前記第２の精算手段により算出された第２の精算額とが一致するか否かを判断する第１の判断手段と、
前記第１の判断手段により判断されたテスト結果と、前記第１の精算額と、前記第２の精算額とを記憶する第３の記憶手段と、
新たに検査対象とする第２の精算プログラムを入力する入力手段と、
前記第１の判断手段において一致すると判断された、前記第１又は第２の精算額を算出するのに用いた、前記第１又は第２のテストデータを用いて、第２の精算プログラムにより第３の精算額を算出する第３の精算手段と、
前記精算手段により算出された第３の精算額と、前記記憶手段に記憶している第１又は第２の精算額とが一致するか否かを判断する第２の判断手段と、
を備えた検査装置。
【請求項９】
料金の精算処理を行う精算プログラムを検査する検査装置であって、
前記精算プログラムを記憶する記憶ステップと、
第１のテストデータを入力する入力ステップと、
前記第１のテストデータの内容に基づいて、前記第１のテストデータとは異なり、かつ、精算額が前記第１のテストデータに対する精算額と同一となるべき第２のテストデータを作成する作成ステップと、
前記第１のテストデータを用いて、前記精算プログラムにより精算額を算出する第１の精算ステップと、
前記作成された第２のテストデータを用いて、前記精算プログラムにより精算額を算出する第２の精算ステップと、
前記第１のテストデータを用いて算出された精算額と、前記第２のテストデータを用いて算出された精算額とが一致するか否かを判断する判断ステップと、
を備えた検査装置。
【請求項１０】
料金の精算処理を行う精算プログラムを検査する検査装置であって、
テストデータと前記テストデータに対して既存のプログラムで算出した精算額とを対応付けて記憶するステップと、
検査対象とする精算プログラムを入力するステップと、
前記記憶しているテストデータを用いて、前記入力した精算プログラムにより精算額を算出する精算ステップと、
前記算出された精算額と、前記記憶している当該テストデータに対応する精算額とが一致するか否かを判断する判断ステップと、
を備えた検査方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えば精算処理を行う駅務機器などの装置に用いられる精算プログラムを検査する検査装置及び検査方法に関する。
【背景技術】
【０００２】
従来、鉄道などの交通機関では、運賃（料金）の自動精算などの駅務処理を行う機能を有する種々の駅務機器が実用化されている。特に、近年では、駅務処理が多様化、複雑化してきており、自動精算機能を実現する駅務機器も高性能化が求められている。  
このような駅務機器の高性能化に伴って処理内容が複雑になり、駅務機器で実行されるソフトウエアによる処理も複雑になってきている。もしも、上記のようなソフトウエアにおける不具合が見逃されると、大きな問題となる可能性がある。このため、上記のような駅務機器に適用されるソフトウエアについては、高精度な検査が必要となる。
【０００３】
上記のような駅務機器に駅務処理を実行させるためのソフトウエアが複雑化すると、それらのソフトウエアにおける不具合を発見するために手間やコストがかかるという問題がある。このような問題を解決する為、乗車券に対する精算処理を行う際、複数種の機種で精算処理の計算を行い、その結果が一致した時にのみ精算処理を実行する駅務端末機器及び駅務システムが提示されている（例えば特許文献１参照）。しかしながら、上記した従来の駅務端末機器及び駅務システムでは、例えば開発段階で精算プログラムの不具合を発見することは、容易ではないという問題がある。また、精算プログラムを検査をする為のテストデータは、従来人手により作成している為、人的なスキルによって精度が左右されたり、非常に手間がかかるという問題がある。
【特許文献１】特開２００５−１３５２７０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明の一形態は、上記した問題点を解決するものであり、容易に精算プログラムをテストすることができ、信頼性の高い精算プログラムを容易に開発することができる精算プログラムの検査装置及び検査方法を提供することにある。
【課題を解決するための手段】
【０００５】
本発明の一実施形態としての精算プログラムの検査装置は、料金の精算処理を行う精算プログラムを検査する検査装置であって、上記精算プログラムを記憶する記憶手段と、第１のテストデータを入力する入力手段と、上記第１のテストデータの内容に基づいて、上記第１のテストデータとは異なり、かつ、精算額が上記第１のテストデータに対する精算額と同一となるべき第２のテストデータを作成する作成手段と、上記第１のテストデータを用いて、上記精算プログラムにより精算額を算出する第１の精算手段と、上記作成手段により作成された第２のテストデータを用いて、上記精算プログラムにより精算額を算出する第２の精算手段と、上記第１の精算手段により算出された精算額と、上記第２の精算手段により算出された精算額とが一致するか否かを判断する判断手段と、
を備える。
【発明の効果】
【０００６】
この発明の一形態によれば、容易に精算プログラムをテストすることができ、信頼性の高い精算プログラムを容易に開発することができる精算プログラムの検査装置及び検査方法を提供することができる。
【発明を実施するための最良の形態】
【０００７】
まず、この発明の実施形態について図面を参照して説明する。  
図１は、第１の実施形態に係る精算プログラムの検査装置１００の構成例を示す図である。上記検査装置１００は、乗車料金の精算処理を行う精算プログラムを検査するものである。検査対象とする精算プログラムは、乗車区間情報および乗車券情報などに基づいて、精算額を算出するためのプログラムである。
【０００８】
上記検査装置は、例えばパーソナルコンピュータなどの一般的な構成のコンピュータにより実現される。上記検査装置１００は、図１に示すように、入力インターフェース（Ｉ／Ｆ）１０１、出力インターフェース（Ｉ／Ｆ）１０２、表示制御部１０３、ＲＡＭ１０５、ＲＯＭ１０６、操作部１０７、ＣＰＵ１１０、及びＨＤＤ１２０を有している。上記した各部は、バス１７０を介して互いに接続されている。
【０００９】
上記入力Ｉ／Ｆ１０１は、外部の入力装置としての入力端末１６０との通信を行なうインターフェースである。例えば、上記入力Ｉ／Ｆ１０１は、後述するテストデータを入力端末１６０から入力するようになっている。上記出力Ｉ／Ｆ１０２は、外部の出力装置としてのプリンタ１６１との通信を行うためのインターフェースである。たとえば、上記外部Ｉ／Ｆ１０２は、処理結果等をプリントデータとしてプリンタ１６１に出力するようになっている。上記表示制御部１０３は、表示装置における表示内容を制御するものである。たとえば、上記表示制御部１０３は、処理結果等を表示データとしてディスプレイ１６２に表示させるようになっている。
【００１０】
上記ＲＡＭ１０５は、揮発性のメモリである。上記ＲＡＭ１０５は、ワーキングメモリ、バッファメモリなどとして機能し、上記ＣＰＵ１１０に作業エリアを提供する。上記ＲＯＭ１０６は、不揮発性のメモリである。上記ＲＯＭ１０６には、ＣＰＵ１１０が実行する制御プログラムや制御データなどが記憶されている。上記操作部１０７は、たとえば、キーボード等の入力デバイスで構成される。上記操作部１０７は、操作者による指示入力を受け付けるものである。
【００１１】
上記ＣＰＵ１１０は、当該検査装置１００の全体の制御を司るものである。また、上記ＣＰＵ１１０は、上記ＲＯＭ１０６あるいは上記ＨＤＤ１２０に記憶されている各種のプログラムに基づいて各種の処理を実行するようになっている。例えば、上記ＣＰＵ１１０は、精算プログラムを実行することにより精算手段として機能する。また、上記操作部１０７からの操作情報を受信した場合、上記ＣＰＵ１１０は、その操作内容に応じて各部をそれぞれ制御している。
【００１２】
上記ＨＤＤ１２０は、当該検索装置で実行する各種のプログラムやデータなどを記憶する。図１に示す例では、上記ＨＤＤ１２０は、逆経路作成プログラム１２１、突合プログラム１２２、および、複数の精算プログラム１３０などを記憶している。上記逆経路作成プログラム１２１は、上記ＣＰＵ１１０に後述する正経路テストデータから逆経路テストデータを作成する処理を実行させるためのプログラムである。上記突合プログラム１２２は、上記ＣＰＵ１１０に複数の精算額が一致するか否かを判断するためのプログラムである。上記複数の精算プログラム１３０は、当該検査装置が検査対象とするプログラム群である。各精算プログラム１３０は、各駅の駅務機器に精算処理を実行させるためのプログラムである。各精算プログラム１３０は、各駅ごとに設計されている。なお、上記逆経路作成プログラム１２１、突合プログラム１２２、および、複数の精算プログラム１３０については、後で詳細に説明する。
【００１３】
また、上記ＨＤＤ１２０は、正経路データベース１４０、逆経路データベース１５０、およびテスト結果データベース１８０を有している。上記正経路データベース１４０は、入力端末１６０により入力される正経路テストデータを記憶するためのデータベースである。上記逆経路データベース１５０は、正経路テストデータから作成された逆経路テストデータを記憶するためのデータベースである。上記テスト結果データベース１８０は、複数の精算額が一致するか否かを判断した結果（テスト結果）などを記憶するためのデータベースである。
【００１４】
なお、検査対象である精算プログラム１３０は、入力端末１６０から受信し、ＨＤＤ１２０に記憶するようにしてもよい。また、検査対象である精算プログラム１３０は、記憶媒体に記憶された状態のままであっても良い。この場合、検査装置１００には、記憶媒体から精算プログラム１３０を読み取る為のデバイスが設けられる。
【００１５】
ここで、上記複数の精算プログラム１３０のうちＡ（Ｂ、Ｃ、…）駅用の精算プログラム１３０は、Ａ（Ｂ、Ｃ、…）駅精算プログラム１３０ａ（１３０ｂ、１３０ｃ、…）と称するものとする。つまり、Ａ駅精算プログラム１３０ａ、Ｂ駅精算プログラム１３０ｂ、Ｃ駅精算プログラム１３０ｃ・・・は、それぞれ、Ａ駅、Ｂ駅、Ｃ駅を降車駅として精算処理を行うものである。
【００１６】
上記正経路データベースあるいは上記逆経路テストデータに記憶される各テストデータは、識別番号、乗車駅を示す情報（乗車駅情報）、降車駅を示す情報（降車駅情報）、及び乗車券情報などを含んでいる。上記ＣＰＵ１１０は、降車駅に応じて、対応する精算プログラムを選択する。選択された精算プログラム１３０では、乗車駅の情報から乗車区間を判断する。さらに、上記精算プログラム１３０では、乗車区間と乗車券情報とから精算が必要である精算区間を判断する。精算区間を判断すると、上記精算プログラム１３０では、その精算区間に対する精算額を判定する
ここで、乗車区間とは、乗車券に対して入場側の改札が行なわれた駅（乗車駅）から、精算処理が行われる駅（降車駅）までの区間である。また、乗車券情報とは、乗車券として利用される記憶媒体に記憶される情報を想定した情報である。なお、乗車券としては、普通乗車券（以下、切符と称する）、ストアードフェアカード（以下、ＳＦカードと称する）、定期券、あるいは、ＳＦカードとして利用可能なＩＣカードあるいは携帯電話機などの携帯端末機器が想定される。例えば、ＳＦカードの乗車券情報、あるいは、ＳＦカードとして利用可能な携帯端末機器の乗車券情報は、乗車券として利用可能な区間が金額情報（残額情報）に基づいて判定される。また、定期券では、乗降車可能な区間（定期乗車区間）が乗車券情報として用いられる。
【００１７】
また、上記識別番号は、各テストデータを識別するための情報である。上記識別番号は、各テストデータにおいて乗車区間情報と乗車券情報とに対応づけて付与される固有の番号である。また、ここでは、正経路テストデータと逆経路テストデータとには、同一の識別番号（あるいは互いに関連付けられた識別番号）が与えられるものとする。これは、正経路テストデータの精算額と逆経路テストデータの精算額とは、同一金額となるべきでものあり、両精算額が比較対象となるためである。
【００１８】
また、上記精算プログラム１３０では、テストデータの乗車券情報が、切符若しくはＳＦカードであるか、定期券であるかを判定し、精算区間に対する精算額を判断するようになっている。これは、定期券と、切符若しくはＳＦカードとで精算方法が異なることを想定しているためである。ここでは、運用上のルールとして、切符若しくはＳＦカードにより有効な区間が存在する場合、乗車区間の料金から上記有効区間分の料金を差し引いた額が精算額となるものとする。また、定期券により有効な区間が存在する場合、定期券の有効区間内のいずれかの駅から降車駅（又は、乗車駅から定期券の有効区間内のいずれかの駅）までの乗車料金が精算額となるものとする。
【００１９】
上記逆経路作成プログラム１２１は、正経路データベース１４０内の正経路テストデータをそれぞれ逆経路テストデータに変換し、逆経路データベース１５０を作成する処理をＣＰＵ１１０に実行させるためのプログラムである。ここで、逆経路テストデータとは、正経路テストデータの降車駅を乗車駅とし、乗車駅を降車駅として変換したものである。精算プログラム１３０は、正経路テストデータ及び逆経路テストデータより精算区間の精算額を算出する。
【００２０】
上記突合プログラム１２２は、正経路テストデータに対する精算額と逆経路テストデータに対する精算額とを突合（比較）することにより、両者が一致するか否かを判定する処理をＣＰＵ１１０に実行させるためのプログラムである。突合の結果、両精算額が一致する場合、上記突合プログラム１２２では、精算結果が正常（良）であると判定される。また、両精算額が一致しない場合、上記突合プログラム１２２では、精算結果が異常（否）であると判定される。このような突合結果は、両精算額とテストデータの識別番号とに関連付けられて、テスト結果データベース１８０に保存される。つまり、上記テスト結果データベース１８０には、正経路テストデータ及び逆経路テストデータを示す識別番号、正経路テストデータに対する精算額、逆経路テストデータに対する精算額、および、突合結果が保存されるようになっている。
【００２１】
尚、上記入力端末１６０には、カードリーダ１６３を設けるようにしても良い。この場合、メモリーカード等の記憶媒体に記憶されているデータを上記カードリーダ１６３により読み出して、入力端末１６０から検査装置１００へ入力することが可能となる。たとえば、メモリーカード等の記憶媒体に記憶している正経路テストデータを上記カードリーダ１６３により読み出して入力端末１６０から検査装置１００へ入力するような運用が可能となる。
【００２２】
次に、正経路テストデータと逆経路テストデータとについて図面を参照して説明する。  
図２は、正経路テストデータの例を説明する為の説明図である。図２では、乗車駅がＡ駅で、降車駅がＢ駅である場合の４つの正経路テストデータ（パターン１ａ、２ａ、３ａ、４ａ）の例を示している。なお、Ａ駅とＢ駅の間には、Ｃ駅、及びＤ駅が存在しているものとし、図２中の実線の矢印は乗車券情報が有効な区間を示し、点線は精算が必要な精算区間を示しているものとする。
【００２３】
パターン１ａ、２ａ、３ａ、４ａは、乗車区間が同一であるが、それぞれ乗車券情報が異なるテストデータである。パターン１ａは、乗車券情報がＡ駅からＣ駅まで有効な切符である。パターン２ａは、乗車券情報がＡ駅―Ｃ駅間が有効な区間である定期券である。パターン３ａは、乗車券情報がＣ駅―Ｂ駅間が有効な区間である定期券である。パターン４ａは、乗車券情報がＣ駅―Ｄ駅間が有効な区間である定期券である。
【００２４】
図３は、図２に示す各正経路テストデータを逆経路に変換した逆経路テストデータの例を示す図である。すなわち、図３に示す４つの逆経路テストデータ（パターン１ｂ、２ｂ、３ｂ、４ｂ）の例は、それぞれ図２に示すパターン１ａ、２ａ、３ａ、４ａの経路を逆経路に変換したものである。従って、パターン１ｂ、２ｂ、３ｂ、４ｂは、パターン１ａ、２ａ、３ａ、４ａにおける乗車駅と降車駅とか反転されている。このため、パターン１ｂ、２ｂ、３ｂ、４ｂの各逆経路テストデータは、乗車駅がＢ駅で、降車駅がＡ駅であるテストデータになっている。
【００２５】
パターン１ｂは、乗車券情報がＣ駅からＡ駅まで有効な切符である。パターン２ｂは、乗車券情報がＣ駅―Ａ駅間が有効な区間である定期券である。パターン３ｂは、乗車券情報がＢ駅―Ｃ駅間が有効な区間である定期券である。パターン４ｂは、乗車券情報がＤ駅―Ｃ駅間が有効な区間である定期券である。
【００２６】
図４は、正経路データベース１４０に記憶されるテストデータの例を示す図である。図５は、逆経路データベース１５０に記憶されるテストデータの例を示す図である。  
図４及び図５に示すように、正経路データベース１４０および逆経路データベース１５０に記憶される各テストデータには、識別番号、乗車駅情報、乗車券情報、及び降車駅情報（又は対応する精算プログラムを示す情報）、を含んでいる。また、図４及び図５に示すように、正経路データベース１４０に記憶される正経路テストデータと、逆経路データベース１５０に記憶される逆経路テストデータとは、正経路と逆経路の関係となっているテストデータが同じ識別番号となっている。これにより、正経路テストデータに対応する逆経路テストデータが検索できるようになっている。
【００２７】
図４に示す例では、Ｂ駅精算プログラム１３０ｂで精算すべき正経路テストデータ群の例を示している。このため、図４に示す各正経路テストデータは、降車駅（又は対応するプログラムを示す情報）が「Ｂ駅」となっている。このように、降車駅（または対応する精算プログラムを示す情報）が「Ｂ駅」となっているテストデータについては、Ｂ駅精算プログラム１３０ｂが選択され、Ｂ駅精算プログラムにより精算額が算出される。  図５に示す例では、図４に示す各正経路テストデータを逆経路に変換した逆経路テストデータ群の例を示している。このため、図５に示す各逆経路テストデータは、図４に示す各正経路テストデータの乗車駅と降車駅とが反転され、乗車駅が「Ｂ駅」となっている。このような逆経路テストデータについては、各降車駅（又は対応する精算プログラムを示す情報）に基づいて精算プログラムが選択され、降車駅用の精算プログラムにより精算額が算出される。
【００２８】
次に、テスト結果データベース１８０について説明する。  
図６は、テスト結果データベース１８０の構成例を示す図である。  
図６に示す例では、テスト結果データベース１８０には、テストデータの識別番号、正経路テストデータに対する精算額ａ、逆経路テストデータに対する精算額ｂ、及び、突合結果を含むテスト結果が保存されている。このテスト結果１８０は、ＣＰＵ１１０の制御により、報告書としてプリントされるプリントデータに編集される。このプリントデータは、プリンタ１６１により報告書として印刷される。
【００２９】
例えば、図６に示す例において、識別番号が「０００４」のテストデータに対するテスト結果では、精算額ａと精算額ｂとが一致していない。このため、識別番号が「０００４」のテストデータに対する突合結果は、不一致（否）となっている。また、図６に示す例において、識別番号が「０００４」以外のテスト結果では、精算額ａと精算額ｂとが一致している。このため、識別番号が「０００４」以外のテストデータに対する突合結果は、全て一致（良）となっている。
【００３０】
なお、図６に示すようなテスト結果データベース１８０に記憶されているテスト結果（あるいはテスト結果に基づいて編集された報告書）は、操作者による操作に応じてディスプレイ１６２に表示されるようにしてもよい。その場合、操作者は、操作部１０７を操作することにより、不一致（否）と判定されたテスト結果を画面上で容易に確認することができる。
【００３１】
図７は、第１の実施形態における検査装置１００による、精算プログラムの検査処理を説明するためのフローチャートである。  
まず、入力端末１６０に正経路テストデータが入力されたものとする（ステップＳ１１）。上記入力端末１６０に入力された正経路テストデータは、上記入力Ｉ／Ｆ１０１を介して検査装置１００に入力される。なお、上記入力端末１６０は、１件づつ正経路テストデータを入力するようにしても良いし、正経路テストデータとして、複数の正経路テストデータを一括して入力するようにしても良い。後者の場合、複数の正経路テストデータは、一旦正経路データベース１４０に保存された後、１件づつ読み出されて後述する処理が実行されるようにすれば良い。
【００３２】
上記入力Ｉ／Ｆ１０１により正経路テストデータを取得すると、上記ＣＰＵ１１０は、入力された正経路テストデータを正経路データベース１４０に記憶する。入力された正経路テストデータを正経路データベース１４０に記憶すると、上記ＣＰＵ１１０は、正経路テストデータの降車駅情報に基づいて、上記ＨＤＤ１２０に記憶されている精算プログラムのうち降車駅用の精算プログラムを選択し、起動させる（ステップＳ１２）。
【００３３】
正経路テストデータに対応する精算プログラムを起動すると、上記ＣＰＵ１１０は、当該精算プログラムにより入力された正経路テストデータについて精算処理を行う（ステップＳ１３）。この精算処理では、正経路テストデータの乗車駅情報と降車駅情報とに基づいて乗車区間を判定し、この乗車区間と乗車券情報とに基づいて精算区間を判定し、さらに、乗車券情報に基づいて精算区間に対する精算方法を判定し、さらに、これらの判定結果と所定の乗車料金が記憶されているデータベース（図示しない）とに基づいて正経路テストデータの精算区間に対する精算額ａが算出される。
【００３４】
また、上記ステップＳ１１で正経路テストデータを取得すると、上記ＣＰＵ１１０は、上記逆経路作成プログラム１２１により、正経路テストデータを逆経路テストデータに変換する処理を行う（ステップＳ１４）。上述したように、逆経路作成プログラム１２１による逆経路テストデータの作成処理では、正経路テストデータにおける乗車駅と降車駅とを入れ替えた逆経路テストデータが得られる。この際、逆経路テストデータには、対応する正経路テストデータと同一の識別番号が付与される。
【００３５】
上記逆経路作成プログラム１２１により逆経路テストデータを作成すると、上記ＣＰＵ１１０は、作成した逆経路テストデータを逆経路データベース１５０に記憶する。逆経路テストデータを逆経路データベース１５０に記憶すると、上記ＣＰＵ１１０は、逆経路テストデータの降車駅情報に基づいて、上記ＨＤＤ１２０に記憶されている精算プログラムのうち降車駅用の精算プログラムを選択し、起動させる（ステップＳ１５）。当該逆経路テストデータに対応する精算プログラムを起動すると、上記ＣＰＵ１１０は、当該精算プログラム１３０により当該逆経路テストデータについて精算処理を行う（ステップＳ１６）。この精算処理では、正経路テストデータに対する精算処理と同様に、逆経路テストデータの乗車駅情報と降車駅情報とに基づいて乗車区間を判定し、この乗車区間と乗車券情報とに基づいて精算区間を判定し、さらに、乗車券情報に基づいて精算区間に対する精算方法を判定し、さらに、これらの判定結果と所定の乗車料金が記憶されているデータベース（図示しない）とに基づいて逆経路テストデータの精算区間に対する精算額ｂが算出される。
【００３６】
なお、上記ステップＳ１２〜Ｓ１３の処理と上記ステップＳ１４〜Ｓ１６の処理とは、並行して実施するようにしても良いし、一方の処理を実行してから他方の処理を実施するようにしても良い。さらに、上記ステップＳ１１の処理に続いて上記ステップＳ１４の処理を実行してから上記ステップＳ１２〜Ｓ１３の処理と上記ステップＳ１５〜Ｓ１６の処理とを実行するようにしても良い。
【００３７】
正経路テストデータに対する精算額ａと当該正経路テストデータに対応する逆経路テストデータに対する精算額ｂを算出すると、上記ＣＰＵ１１０は、突合プログラム１２２により精算額ａと精算額ｂとが一致しているかどうかを判定する（ステップＳ１７）。精算額ａと精算額ｂとが一致している場合、上記ＣＰＵ１１０は、正経路テストデータに対応する精算プログラムによる精算処理と逆経路テストデータに対応する精算プログラムによる精算処理とが正常に行われたものと判定する。つまり、この場合、同一金額となるべき正経路テストデータに対する精算額ａと逆経路テストデータに対する精算額ｂとが一致しているため、少なくとも当該正経路テストデータ及び逆経路テストデータの精算パターンについては、当該正経路テストデータおよび逆経路テストデータに対応する２つの精算プログラムによる精算処理に不具合がないと判断するものである。
【００３８】
これに対して、精算額ａと精算額ｂとが一致しない場合、上記ＣＰＵ１１０は、正経路テストデータに対応する精算プログラムによる精算処理と逆経路テストデータに対応する精算プログラムによる精算処理との何れかが正常に精算処理を行えなかったものと判定する。つまり、この場合、同一金額となるべき正経路テストデータに対する精算額ａと逆経路テストデータに対する精算額ｂとが不一致となっているため、少なくとも当該正経路テストデータあるいは逆経路テストデータに対応する２つの精算プログラムの何れかの精算処理に不具合があったと判断するものである。
【００３９】
また、何れかの精算プログラムで正常な精算処理が行えなかったと判定した場合（ステップＳ１７、ＮＯ）、上記ＣＰＵ１１０は、正経路テストデータに対する精算額と逆経路テストデータに対する精算額とが不一致となったことを、表示制御部１０３によりディスプレイ１６２に表示させる（ステップＳ１８）。
【００４０】
また、上記ＣＰＵ１１０は、正経路テストデータに対する精算額、逆経路テストデータに対する精算額、突合結果、および、テストデータ（正経路テストデータおよび逆経路テストデータ）の識別番号とを関連付けたテスト結果をテスト結果データベース１８０に保存する（ステップＳ１９）。当該テスト結果をテスト結果データベース１８０に保存すると、上記ＣＰＵ１１０は、次のテストデータが有るか否かを判断する（ステップＳ２０）。次のテストデータがあると判断した場合（ステップＳ２０、ＹＥＳ）、上記ステップＳ１１に移行する。また、次のテストデータがないと判断した場合（ステップＳ２０、ＮＯ）、上記ＣＰＵ１１０は、テスト結果データベース１８０に保存されているテスト結果を示す報告書としてプリントするためのプリントデータを生成し、生成したプリントデータを上記出力Ｉ／Ｆ１０２を介してプリンタ１６１に出力する（ステップＳ２１）。このようなプリントデータを受信したプリンタ１６１は、当該プリントデータをプリント処理することによりテスト結果を示す報告書を発行する。
【００４１】
上述したように、本第１の実施形態によると、検査装置は、入力された正経路テストデータから逆経路テストデータを作成する。逆経路テストデータを作成すると、本検査装置は、正経路テストデータと逆経路テストデータとを用いてそれぞれ対応する精算プログラムにより正経路の精算額と逆経路の精算額とを算出する。正経路の精算額と逆経路の精算額とを算出すると、本検査装置は、突合プログラム１２２により算出された正経路の精算額と逆経路の精算額とが一致するかどうかを判定する。
【００４２】
これにより、検査装置では、各精算プログラムによる精算額が正しいか否かを容易に判定することができ、精算プログラムの不具合を容易に発見することができる。また、この結果として、信頼性の高い精算プログラムの開発を支援することができる検査装置及び検査方法を提供することができる。
【００４３】
次に、この発明の第２の実施形態に係る検査装置及び検査方法について図面を参照して説明する。  
図８は、本第２の実施形態に係る精算プログラムの検査装置２００の構成例を示す図である。なお、図８に示す検査装置２００において、図１に示す検査装置１００と同様な構成の部分には、同一の参照符号を付し、詳細な説明を省略する。  
本第２の実施形態では、精算プログラムのバーションアップ等により新たに作成された精算プログラム（あるいは、更新された精算プログラム）の検査を行うことを想定している。ここでは、更新前の精算プログラムを旧精算プログラムと称し、検査対象とする新たに作成された精算プログラム（あるいは更新された精算プログラム）を新精算プログラムと称するものとする。
【００４４】
なお、本第２の実施形態では、料金体系に変更が無く、同一のテストデータについては新精算プログラムによる精算額と旧精算プログラムによる精算額とが同一金額となるべきであることを前提としている。また、本第２の実施形態では、旧精算プログラムには不具合がなく、各テストデータについて正しい精算額を含む旧精算プログラムによるテスト結果が検査装置２００に保存されているものとする。
【００４５】
すなわち、検査装置２００では、正経路テストデータあるいは逆経路テストデータについて、既にテスト結果データベース１８０ａに記憶されている精算額（精算額ａ又は精算額ｂ）と、新精算プログラムにより算出した精算額ｃとが一致するか否かを判定する。これにより、検査装置２００では、精算額ａ（あるいは精算額ｂ）と精算額ｃとが一致する場合には、新精算プログラムによる精算処理が正常であると判断し、精算額ａ（あるいは精算額ｂ）と精算額ｃとが一致しない場合には、新精算プログラムによる精算処理に不具合があると判断するようになっている。
【００４６】
図８に示すように、上記検査装置２００では、上記ＨＤＤ１２０に、新精算プログラム２３０が記憶されている。新精算プログラム２３０（２３０ａ、２３０ｂ、２３０ｃ、…）は、たとえば、図１に示す精算プログラム（旧精算プログラム）１３０（１３０ａ、１３０ｂ、１３０ｃ、…）をバージョンアップしたものであることを想定している。
【００４７】
また、上記正経路データベース１４０には、旧精算プログラム１３０のテストに用いられた正経路テストデータが記憶されている。上記正経路データベース１４０に記憶されている正経路テストデータは、上述した第１の実施の形態で説明した処理により、入力端末１６０から入力されたデータであるものとする。また、上記逆経路データベース１５０には、旧精算プログラム１３０のテストに用いられた逆経路テストデータが記憶されている。上記逆経路データベース１５０に記憶されている逆経路テストデータは、上述した第１の実施の形態で説明した処理により、正経路テストデータから得られたデータであるものとする。
【００４８】
また、テスト結果データベース１８０ａには、上述した第１の実施の形態で説明した処理による旧精算プログラムのテスト結果が記憶されているものとする。つまり、上記テスト結果データベース１８０ａには、図６に示すような旧精算プログラムのテスト結果が記憶されている状態であるものとする。また、テスト結果データベース１８０ｂには、新精算プログラム２３０のテスト結果が記憶されるものとする。なお、本第２の実施形態では、上記テスト結果データベース１８０ａには、不具合がない旧精算プログラムにより算出された各テストデータに対する正しい精算額を含むテスト結果が記憶されているものとする。つまり、ここでは、上記テスト結果データベース１８０ａに記憶されているテスト結果は、突合結果が全て正常（良）となっているものとする。  また、ＨＤＤ１２０には、突合プログラム２２２が記憶されている。上記突合プログラム２２２は、上記正経路データベース１４０あるいは上記逆経路データベース１５０に記憶されている各テストデータについて、上記テスト結果データベース１８０ａに記憶されているテスト結果における精算額と新精算プログラム２３０により算出された精算額とを突合する処理をＣＰＵ１１０に実行させるためのプログラムである。また、上記突合プログラム２２２は、テストデータの識別情報に基づいて、上記テスト結果データベース１８０ａからテスト結果を抽出する処理をＣＰＵ１１０に実行させるための抽出プログラム２２３を有している。
【００４９】
すなわち、上記突合プログラム２２２では、上記抽出プログラム２２３によりテストデータの識別情報に基づいて上記テスト結果データベース１８０ａからテスト結果を抽出し、抽出したテスト結果における精算額（精算額ａ又は精算額ｂ）と、当該テストデータを用いて新精算プログラム２３０により算出した精算額ｃとが一致するか否かを判定する処理をＣＰＵ１１０に実行させるようになっている。
【００５０】
次に、検査装置２００による新精算プログラム２３０の検査処理について説明する。  
図９は、上記検査装置２００による新精算プログラム２３０の検査処理を説明するためのフローチャートである。  
まず、上記入力端末１６０に新精算プログラム２３０が入力されたものとする（ステップＳ３０）。上記入力端末１６０に入力された新精算プログラム２３０は、上記入力Ｉ／Ｆ１０１を介して上記検査装置２００に入力される。入力された新精算プログラム２３０は、操作者が操作部１０７を操作することにより、上記検査装置２００のＨＤＤ１２０にインストールされる。
【００５１】
上記検査装置２００は、操作者の操作に応じて、新精算プログラム２３０のテストを開始する（ステップＳ３１）。まず、上記検査装置２００のＣＰＵ１１０は、旧精算プログラムによるテスト結果が、テスト結果データベース１８０ａ内に記憶されているかどうか判断する（ステップＳ３２）。旧精算プログラムによるテスト結果が記憶されていないと判断した場合（ステップＳ３２、ＮＯ）、上記ＣＰＵ１１０は、テスト結果が存在しないことを、表示制御部１０３によりディスプレイ１６２に表示させ（ステップＳ３３）、処理を終了する。
【００５２】
旧精算プログラムによるテスト結果が記憶されていると判断した場合（ステップＳ３２、ＹＥＳ）、上記ＣＰＵ１１０は、上記テスト結果データベース１８０ａから１件分のテスト結果を読み込む（ステップＳ３４）。上記テスト結果データベース１８０ａからテスト結果を読み込むと、上記ＣＰＵ１１０は、読み込んだテスト結果からテストデータの識別情報を判定する。テストデータの識別情報を判定すると、上記ＣＰＵ１１０は、当該識別情報に対応する正経路テストデータ（又は逆経路テストデータ）を、正経路データベース１４０（又は逆経路データベース１５０）から読み込む（ステップＳ３５）。
【００５３】
正経路テストデータを読み込むと、上記ＣＰＵ１１０は、正経路テストデータの降車駅情報に基づいて、上記ＨＤＤ１２０に記憶されている新精算プログラム２３０のうち降車駅用の精算プログラム２３０を選択し、起動させる（ステップＳ３６）。正経路テストデータに対応する精算プログラム２３０を起動すると、上記ＣＰＵ１１０は、当該精算プログラム２３０により読み込んだ正経路テストデータについて精算処理を行う（ステップＳ３７）。この新精算プログラム２３０による精算処理により、正経路テストデータの精算区間に対する精算額ｃが算出される。
【００５４】
新精算プログラム２３０により精算額ｃを算出すると、上記ＣＰＵ１１０は、抽出プログラム２２３により、テスト結果データベース１８０ａに記憶されている精算額ｃを算出するのに用いたテストデータの識別番号に対応するテスト結果の精算額ａ（又は精算額ｂ）を抽出する（ステップＳ３８）。
【００５５】
正経路テストデータに対する精算額ｃを新精算プログラム２３０により算出し、対応する旧精算プログラムによる精算額ａを抽出すると、上記ＣＰＵ１１０は、上記突合プログラム２２２により精算額ｃと精算額ａとが一致しているか否かを判定する（ステップＳ３９）。精算額ｃと精算額ａとが一致していると判定した場合、上記ＣＰＵ１１０は、当該テストデータについては新精算プログラム２３０による精算処理が正常に行われたものと判定する。つまり、この場合、既に正常だと判断された旧精算プログラムによる精算額ａ（すなわち、正しい精算額）と新精算プログラムによる精算額ｃとが一致しているため、少なくとも当該テストデータの精算パターンについては、新精算プログラムによる精算処理に不具合がないと判断するものである。
【００５６】
これに対して、精算額ｃと精算額ａとが一致しないと判定した場合、上記ＣＰＵ１１０は、新精算プログラム２３０による精算処理が正常に行えなかったものと判定する。つまり、この場合、既に正常だと判断された旧精算プログラムによる精算額ａ（すなわち、正しい精算額）と新精算プログラム２３０による精算額ｃとが不一致となっているため、少なくとも当該テストデータの精算パターンについては、新精算プログラムによる精算処理に不具合があったと判断するものである。
【００５７】
また、新精算プログラム２３０で正常な精算処理が行えなかったと判定した場合（ステップＳ３９、ＮＯ）、上記ＣＰＵ１１０は、旧精算プログラムによる精算額ａと新精算プログラムによる精算額ｃとが不一致となったことを、表示制御部１０３によりディスプレイ１６２に表示させる（ステップＳ４０）。
【００５８】
また、上記ＣＰＵ１１０は、新精算プログラム２３０による精算額ｃ、突合結果、および、テストデータ（正経路テストデータおよび逆経路テストデータ）の識別番号とを関連付けたテスト結果をテスト結果データベース１８０ｂに保存する（ステップＳ４１）。当該テスト結果をテスト結果データベース１８０ｂに保存すると、上記ＣＰＵ１１０は、上記テスト結果データベース１８０ａに次のテスト結果が有るか否かを判断する（ステップＳ４２）。上記テスト結果データベース１８０ａに次のテスト結果があると判断した場合（ステップＳ４２、ＹＥＳ）、上記ＣＰＵ１１０は、上記ステップＳ３４に移行する。
【００５９】
また、上記テスト結果データベース１８０ａに次のテスト結果がないと判断した場合（ステップＳ４２、ＮＯ）、つまり、上記テスト結果データベース１８０ａに記憶されている全てのテスト結果について精算額の突合処理を行った場合、上記ＣＰＵ１１０は、上記テスト結果データベース１８０ｂに保存されているテスト結果を示す報告書としてプリントするためのプリントデータを生成し、生成したプリントデータを上記出力Ｉ／Ｆ１０２を介してプリンタ１６１に出力する（ステップＳ４３）。このようなプリントデータを受信したプリンタ１６１は、当該プリントデータをプリント処理することによりテスト結果を示す報告書を発行する。
【００６０】
上述したように、本第２の実施形態によると、検査装置は、既存の旧精算プログラムによるテスト結果およびテストデータを保存した状態において、別の新精算プログラムをインストールした場合、保存しているテストデータを用いて新精算プログラムにより精算額を算出し、その新精算プログラムで算出した精算額が該テストデータに対応するテスト結果として保存されている精算額と一致するか否かにより新精算プログラムによる精算処理が正常であるか否かを判定するようにしたものである。
【００６１】
これにより、第２の実施形態は、第１の実施形態で説明した処理によって得られたテスト結果を用いて、新に作成された精算プログラムの検査を容易に実施することができ、精算プログラムの不具合等を容易に発見することができる。また、この結果として、信頼性の高い精算プログラムの開発を軽易な処理で支援することができる検査装置及び検査方法を提供することができる。すなわち、第２の実施形態によれば、精算プログラムを新に作成した場合であっても、人的なスキルによらず、かつ、手間をかけることなく、新たに作成された精算プログラムを効率的に検査することができる。
【００６２】
なお、この発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具現化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００６３】
【図１】第１の実施形態に係る精算プログラムの検査装置の構成例を示す図である。
【図２】正経路テストデータの例を説明する為の説明図である。
【図３】逆経路テストデータの例を説明する為の説明図である。
【図４】正経路データベースに記憶されるテストデータの例を示す図である。
【図５】逆経路データベースに記憶されるテストデータの例を示す図である。
【図６】テスト結果の構成例を説明する為の説明図である。
【図７】図１に示す検査装置による精算プログラムの検査処理を説明するためのフローチャートである。
【図８】第２の実施形態に係る精算プログラムの検査装置の構成例を示す図である。
【図９】図８に示す検査装置による新精算プログラムの検査処理を説明するためのフローチャートである。
【符号の説明】
【００６４】
１００、２００…検査装置、１０３…表示制御部、１０７…操作部、１１０…ＣＰＵ、１２０…ＨＤＤ、１２１…逆経路作成プログラム、１２２、２２２…突合プログラム、１３０（１３０ａ、１３０ｂ、１３０ｃ、…）…精算プログラム、１４０…正経路データベース、１５０…逆経路データベース、１６０…入力端末、１６１…プリンタ、１６２…ディスプレイ、１８０、１８０ａ、１８０ｂ…テスト結果データベース、２２３…抽出プログラム、２３０（２３０ａ、２３０ｂ、２３０ｃ、…）…新精算プログラム
【図１】
2008077215.tif 000003
【図２】
2008077215.tif 000004
【図３】
2008077215.tif 000005
【図４】
2008077215.tif 000006
【図５】
2008077215.tif 000007
【図６】
2008077215.tif 000008
【図７】
2008077215.tif 000009
【図８】
2008077215.tif 000010
【図９】
2008077215.tif 000011