(57)【要約】【課題】  テストプログラムによるテスト作業の作業効率を高め、テスト作業用のメモリ容量を少なくすること。【解決手段】  本発明におけるテストシステムは、ユーザープログラムのテストを行うテストシステムであって、テスト実行命令を含むユーザープログラムを実行するユーザープログラム実行部と、テスト実行命令に応じて読み出され実行されるテストプログラムを書き換え可能に格納するテストプログラム格納領域を予め設けたテストプログラム記憶部と、テストプログラムを入力しテストプログラム格納領域に格納するテストプログラム入力部を備えたテストシステムである。このような構成により、動的にテストプログラムを変更することが可能となり、作業効率を高めることが可能となる。また、テストに必要な箇所のプログラムのみを入力するため、テスト作業用のメモリ容量を少なくすることが可能となる。【選択図】図１
2006338271.tif 000002
【特許請求の範囲】
【請求項１】
ユーザープログラムのテストを行うテストシステムであって、
テスト実行命令を含むユーザープログラムを実行するユーザープログラム実行部と、
前記テスト実行命令に応じて前記ユーザープログラム実行部により読み出され実行されるテストプログラムを書き換え可能に格納するテストプログラム格納領域を予め設けたテストプログラム記憶部と、
前記テストプログラムを入力し、前記テストプログラム格納領域に格納するテストプログラム入力部を備えたテストシステム。
【請求項２】
前記テストプログラム入力部は、前記テストプログラム格納領域に格納されているテストプログラムと異なるテストプログラムを入力し、
前記テストプログラム記憶部は、前記テストプログラム格納領域に格納されているテストプログラムを前記テストプログラム入力部の入力したテストプログラムに書き換え、
前記ユーザープログラム実行部は、前記テスト実行命令に基づき前記テストプログラム記憶部により書き換えられたテストプログラムを実行することを特徴とする請求項１記載のテストシステム。
【請求項３】
ユーザーシステムと、前記ユーザーシステムと接続されたホストコンピュータを備えたテストシステムであって、
前記ユーザーシステムは、
テスト実行命令を含むユーザープログラムを実行するユーザープログラム実行部と、
前記テスト実行命令に応じて前記ユーザープログラム実行部により読み出され実行されるテストプログラムを書き換え可能に格納するテストプログラム格納領域を予め設けたテストプログラム記憶部と、
前記テストプログラムを入力し、前記テストプログラム格納領域に格納するテストプログラム入力部と、
前記ホストコンピュータと通信を行うための通信部を備え、
前記ユーザープログラム実行部は、前記通信部を介して前記ホストコンピュータに対して前記テストプログラムの動作情報を送信し、
前記ホストコンピュータは、
前記ユーザープログラム実行部から前記動作情報を受信する動作情報受信部と、
前記テストプログラムを格納する送信用テストプログラム記憶部と、
前記動作情報受信部の受信した前記動作情報に基づいて、前記テストプログラム記憶部に格納されたテストプログラムの中から、前記ユーザーシステムに送信するテストプログラムを選択する制御部と、
前記ユーザーシステムに対して前記制御部の選択した前記テストプログラムを送信するテストプログラム送信部を備えたテストシステム。
【請求項４】
前記テストプログラム入力部は、前記テストプログラム格納領域に格納されているテストプログラムと異なるテストプログラムを入力し、
前記テストプログラム記憶部は、前記テストプログラム格納領域に格納されているテストプログラムを前記テストプログラム入力部の入力したテストプログラムに書き換え、
前記ユーザープログラム実行部は、前記テスト実行命令に基づき前記テストプログラム記憶部により書き換えられたテストプログラムを実行することを特徴とする請求項３記載のテストシステム。
【請求項５】
前記テストプログラム入力部は、前記ユーザープログラム実行部が前記ユーザープログラムを実行中に、前記テストプログラムを入力し、前記テストプログラム格納領域に格納することを特徴とする請求項１、２、３または４記載のテストシステム。
【請求項６】
テストの実行不要の場合には、前記テストプログラム格納領域に、テストプログラムを実行せずにテスト実行命令の次の処理を実行させる命令が格納されることを特徴とする請求項１乃至５いずれかに記載のテストシステム。
【請求項７】
ユーザープログラムのテストを行うテスト方法であって、
ユーザープログラムに含まれるテスト実行命令に応じて読み出され実行されるテストプログラムを入力し、
入力されたテストプログラムを予め設けられたテストプログラム格納領域を有するテストプログラム記憶部に格納し、
前記テスト実行命令を実行する場合に、前記テストプログラム格納領域に格納されてテストプログラムを実行するテスト方法。
【請求項８】
前記テストプログラムが入力された場合に、前記テストプログラム格納領域に既に格納されているテストプログラムを、当該入力されたテストプログラムに書き換えることを特徴とする請求項８記載のテスト方法。
【請求項９】
入力されたテストプログラムは、ホストコンピュータによりテストプログラムの動作情報に基づいて複数のテストプログラムの中から選択されたテストプログラムであることを特徴とする請求項７又は８記載のテスト方法。
【請求項１０】
前記ユーザープログラムを実行中に、前記テストプログラムを入力し、前記テストプログラム格納領域に格納することを特徴とする請求項７、８又は９記載のテスト方法。
【請求項１１】
テストの実行不要の場合には、前記テストプログラム格納領域に、テストプログラムを実行せずにテスト実行命令の次の処理を実行させる命令が格納されることを特徴とする請求項７乃至１０いずれかに記載のテスト方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テストシステム及びテスト方法に関するものであり、より詳細には、コンピュータプログラムの動作テストを行うテストシステム及びテスト方法に関する。
【背景技術】
【０００２】
コンピュータの進化に伴い、コンピュータを利用して様々なことができるようになった。それに合わせてコンピュータプログラムも複雑化するようになった。そのため、プログラムのテスト方法も複雑化している。
【０００３】
コンピュータプログラムの人間の手によるテストには限界があるため、コンピュータプログラムは、専用のテストプログラムを用いてテストが行われることが多い。ユーザープログラムをテストするためのテストプログラムはユーザープログラムが複雑になると、それに比例するように複雑にする必要がある。そのため、テストプログラムの製作にも多くの工数が必要となった。
【０００４】
そこで、テストプログラムを自動生成するテストシステムが提案された（例えば、特許文献１など）。この方法によると、被テストプログラムであるユーザープログラムの変更に合わせてテストプログラムを自動生成することが可能となり、テストプログラムを製作する工数を減らすことが可能となった。
【０００５】
従来技術におけるユーザープログラムのテスト方法について簡単に説明する。図７は、ユーザープログラムの一例を示す図である。
【０００６】
例えば、ユーザープログラムがＡ地点における処理を実行した場合にキーＢ１を押すというテストを行いたい場合、ユーザープログラムは高速で動作しているため手入力でタイミングを合わせてキーＢ１を押下するのは難しい。
【０００７】
そこで、ユーザープログラムを書き換え、Ａ地点における処理として、キーＢ１を押下するのと同様の結果になる処理を追加する。これが図７のKey=B1;である。
【０００８】
同様に、ユーザープログラムがＢ地点における処理を実行した場合にＬＥＤの状態を知りたい場合、ユーザープログラムを書き換え、Ｂ地点における処理として、ＬＥＤの状態を知らせるのと同様の結果になる処理を追加する。これが図７のUART_Send(LED, 1);である。このようにしてユーザープログラムの変更を行うことにより、確実にテストを行うことが可能となる
【０００９】
しかしながら、従来技術におけるテストシステムでは、テストプログラムの製作工数を削減することができるとはいえ、テストプログラムを変更するたびに、ユーザープログラムを停止させ、テストプログラムを再起動させなければならないと言う問題点があった。
【００１０】
また、テストプログラムは、テストが完了すると不要になるため、なるべく少ないメモリで動作することが望ましいが、テストプログラム全てをユーザーシステムに組み込んでしまうと、テストプログラム分のメモリ容量が必要となってしまう。これは、メモリ容量の制限が厳しい組み込み型のシステムでは大きな問題となる。
【特許文献１】特開２００２−３６６３８７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
このように、従来のテストシステムは、テストプログラムを変更するたびに、ユーザープログラムを停止させ書き換えなければならず、作業効率の悪いものであった。また、テストプログラム全てをユーザーシステムに組み込んでしまうと、テストプログラム分のメモリ容量が必要となってしまうという問題点もあった。
【課題を解決するための手段】
【００１２】
本発明におけるテストシステムは、ユーザープログラムのテストを行うテストシステムであって、テスト実行命令を含むユーザープログラムを実行するユーザープログラム実行部と、前記テスト実行命令に応じて前記ユーザープログラム実行部により読み出され実行されるテストプログラムを書き換え可能に格納するテストプログラム格納領域を予め設けたテストプログラム記憶部と、前記テストプログラムを入力し、前記テストプログラム格納領域に格納するテストプログラム入力部を備えたテストシステムである。このような構成により、動的にテストプログラムを変更することが可能となり、作業効率を高めることが可能となる。また、テストに必要な箇所のプログラムのみを入力するため、テスト作業用のメモリ容量を少なくすることが可能となる。
【００１３】
本発明におけるテストシステムは、ユーザーシステムと、前記ユーザーシステムと接続されたホストコンピュータを備えたテストシステムであって、前記ユーザーシステムは、テスト実行命令を含むユーザープログラムを実行するユーザープログラム実行部と、前記テスト実行命令に応じて前記ユーザープログラム実行部により読み出され実行されるテストプログラムを書き換え可能に格納するテストプログラム格納領域を予め設けたテストプログラム記憶部と、前記テストプログラムを入力し、前記テストプログラム格納領域に格納するテストプログラム入力部と、前記ホストコンピュータと通信を行うための通信部を備え、前記ユーザープログラム実行部は、前記通信部を介して前記ホストコンピュータに対して前記テストプログラムの動作情報を送信し、前記ホストコンピュータは、前記ユーザープログラム実行部から前記動作情報を受信する動作情報受信部と、前記テストプログラムを格納する送信用テストプログラム記憶部と、前記動作情報受信部の受信した前記動作情報に基づいて、前記テストプログラム記憶部に格納されたテストプログラムの中から、前記ユーザーシステムに送信するテストプログラムを選択する制御部と、前記ユーザーシステムに対して前記制御部の選択した前記テストプログラムを送信するテストプログラム送信部を備えたテストシステムである。このような構成により、動的にテストプログラムを変更することが可能となり、作業効率を高めることが可能となる。また、テストに必要な箇所のプログラムのみを入力するため、テスト作業用のメモリ容量を少なくすることが可能となる。
【００１４】
本発明におけるテスト方法は、ユーザープログラムのテストを行うテスト方法であって、ユーザープログラムに含まれるテスト実行命令に応じて読み出され実行されるテストプログラムを入力し、入力されたテストプログラムを予め設けられたテストプログラム格納領域を有するテストプログラム記憶部に格納し、前記テスト実行命令を実行する場合に、前記テストプログラム格納領域に格納されてテストプログラムを実行するテスト方法である。このようにすることにより、動的にテストプログラムを変更することが可能となり、作業効率を高めることが可能となる。また、テストに必要な箇所のプログラムのみを入力するため、テスト作業用のメモリ容量を少なくすることが可能となる。
【発明の効果】
【００１５】
本発明によれば、テストプログラムによるテスト作業の作業効率を高めることが可能となる。また、テストに必要な箇所のプログラムのみを入力するため、テスト作業用のメモリ容量を少なくすることが可能となる。
【発明を実施するための最良の形態】
【００１６】
図１は、本発明の実施の形態１におけるテストシステムの構成を示すブロック図である。本発明におけるテストシステムは、ユーザーシステム１とホストコンピュータ２を有する。ユーザーシステム１は、ユーザープログラムの動作及びテストを行うシステムであり、メモリとＣＰＵ（Central Processing Unit）を備えたコンピュータにより構成される。
【００１７】
ユーザーシステム１は、通信部１０、テストプログラム入力部１１、テストプログラム記憶部１２、ユーザープログラム実行部１３を備える。ユーザーシステム１は、ホストコンピュータ２と接続されており、ホストコンピュータ２からテストプログラムを入力する。また、ホストコンピュータ２に対してテスト結果の情報を出力することが可能である。
【００１８】
通信部１０は、ホストコンピュータ２とデータの送受信を行う通信手段である。通信部１０は、データの送受信さえ可能であれば通信の方法については特に限定されない。通信部１０の構成としては、例えばモデムや、無線ＬＡＮ（Local Area Network）、ＲＳ−２３２Ｃ（Recommend Standard 232-C）等が考えられる。
【００１９】
テストプログラム入力部１１は、通信部１０がホストコンピュータ２から受信したテストデータの入力を行う。ここでは、通信部１０が受信したテストプログラムの入力としたが、別途メモリカード等の外部記憶装置やＨＤＤ（Hard Disk Drive）に格納されたテストプログラムを入力するようにしてもよい。テストプログラム入力部１１は、入力したテストプログラムをテストプログラム記憶部１２に出力し、テストプログラム記憶部１２によりテストプログラムの格納が行われる。
【００２０】
テストプログラム記憶部１２は、テストプログラム入力部１１より入力したテストプログラムの格納を行う。テストプログラムの格納方法については、後に詳しく説明する。テストプログラム記憶部１２は、テストプログラム格納領域１２０を備える。テストプログラム格納領域は、ユーザーシステムの備えるメモリ内に設けられ、ＣＰＵにより展開及び格納処理が実行される。
【００２１】
ユーザープログラム実行部１３は、ユーザーシステム１を動作させるユーザープログラムの実行を行う。ユーザープログラム１２は、ユーザーシステムの備えるメモリに格納されたプログラムをＣＰＵが実行することにより行われる。
【００２２】
ホストコンピュータ２は、ユーザーシステム１と通信し、ユーザーシステム１に対してテスト関数を送信し、ユーザーシステム１から送信される情報を受信するコンピュータである。ホストコンピュータは市販されているＰＣ（Personal Computer）等をそのまま利用することが可能である。ホストコンピュータ２は、制御部２０、送信用テストプログラム記憶部２１、通信部２２を備える。
【００２３】
制御部２０は、ホストコンピュータ２の各種制御を行う制御手段であり、ＣＰＵ等である。制御部２０は、送信用テストプログラム記憶部２１からテストプログラムを入力し、ユーザーシステム１にテストプログラムを送信するための制御を行う。
【００２４】
送信用テストプログラム記憶部２１は、ユーザーシステム１で動作させるためのテストプログラムを格納するための記憶手段であり、ＨＤＤやＲＡＭ（Random Access Memory）等である。送信用テストプログラム記憶部２１に格納されたテストプログラムは必要に応じて通信部２２によりユーザーシステム１に出力される。
【００２５】
通信部２２は、ユーザーシステム１とデータの送受信を行う通信手段である。通信部２２は、データの送受信さえ可能であれば通信の方法については特に限定されない。通信部２２の構成としては、例えばモデムや、無線ＬＡＮ、ＲＳ−２３２Ｃ等が考えられる。通信部２２はここでは、テストプログラムの送信と動作情報の受信に利用される。
【００２６】
続いて、図２に示すタイミングチャートを用いて、本発明におけるユーザープログラムのテスト方法について説明する。ホストコンピュータ２には、ユーザープログラムのテストを行うプログラムであるテストプログラムが複数格納されている。
【００２７】
まず、ユーザーシステム１は、ユーザープログラム実行部１３によりユーザープログラムの動作を開始する（Ｓ１）。以後、テストプログラムによりユーザープログラムのテストが行われるが、その間、ユーザープログラムは停止することなく動作が継続される。テストプログラムを展開するプログラムとユーザープログラムは並列に動作しているため、ユーザープログラム実行中にテストプログラムの受信、展開を行っても、ユーザープログラムに何ら影響を与えることは無い。
【００２８】
図３は、本発明におけるユーザープログラムの一例を示す図である。ユーザープログラムには予めテスト関数を呼び出す関数が備えられている。図３の例では、CheckPoint関数がテスト関数を呼び出す関数であり、テスト実行命令である。ユーザーシステム１がホストコンピュータ２からテスト関数を受信する前は、図３に示すようにCheckPoint関数は何もしない関数となっている。
【００２９】
CheckPoint関数のプログラムが格納されているメモリ領域がテストプログラム格納領域１２０である。テストプログラム、即ちCheckPoint関数が展開されるメモリ領域はテストプログラム入力毎に変化する可能性もあるが、CheckPoint関数が展開可能なメモリ領域全てをテストプログラム格納領域１２０とする。また、現在テストプログラム格納領域１２０に格納されているCheckPoint関数が格納されているメモリ領域と、新たに入力するCheckPoint関数の展開するメモリ領域が異なる場合でも、新たに入力したCheckPoint関数の展開を行う場合はCheckPointな数すなわちテストプログラムの書き換えである。
【００３０】
何もしない関数の場合、ＮＯＰ（NonOPerating）命令等の何も行わない命令が実行される。何もしない命令の後は何もしない命令の次の処理を実行させる命令が行われるので、何もしない命令は、次の処理を実行させる命令と同等の命令である。
【００３１】
図３に示すユーザープログラムについて説明する。main()は、ユーザープログラムのメインルーチンであることを示す。while(1)は、{}内の処理が無条件に繰り返されることを示す。CheckPoint(POINT_A)は先ほど説明したCheckPoint関数を呼び出す処理であり、ユーザープログラム内のＡ地点での処理であることを示すため引数としてPOINT_Aが入力される。CheckPoint関数の引数は１バイトの値であるためPOINT_Aも１バイトの値を示す。ただし、POINT_Aはテスト関数内で識別可能であればどんな値でもよい。
【００３２】
switch(Key)は、Key変数の値に応じて分岐した処理を行う。具体的には、どのキーが押されたかにより分岐処理を行っていることを示す。CheckPoint(POINT_B)は先ほど説明したCheckPoint関数を呼び出す処理であり、ユーザープログラム内のＢ地点での処理であることを示すため引数としてPOINT_Bが入力される。
【００３３】
ユーザープログラムの動作を開始すると、ホストコンピュータ２の制御部２０は、送信用テストプログラム記憶部２１から最初に必要となるテスト関数を備えるテストプログラムを選択し、通信部２２により、ユーザーシステム１に対して選択したテストプログラムのプログラムの送信を行う（Ｓ２）。この最初のテスト関数をテスト関数Ａ、テスト関数Ａを備えるテストプログラムをテストプログラムＡとする。
【００３４】
テストプログラム入力部１１は、通信部１０を介して、ホストコンピュータ２の通信部２２からテストプログラムＡの受信を行い、受信したテストプログラムＡをテストプログラム記憶部１２に対して出力する。テストプログラム記憶部１２は、テストプログラム入力部１１から入力したテストプログラムＡをテストプログラム格納領域１２０に展開し、ユーザープログラムからテスト関数Ａを呼び出し可能な状態にする（Ｓ３）。
【００３５】
図４は、テスト関数Ａの処理を示すプログラムの一例を示す図である。図４のテスト関数Ａは、引数として入力するpoint変数がPOINT_Aである、つまり、ユーザープログラムのＡ地点の処理が行われたときに、Key変数をB1にする、つまり、Ｂ1というキー入力がされたのと同等の処理を行う。その後のUART_Send(AISFINISHED,1)は、関数Ａの処理が終わったという動作情報を通信部１０からホストコンピュータ２に送信する処理である。
【００３６】
このようにして、ユーザープログラム実行部１３はユーザープログラムのＡ地点の処理が行われたときに、CheckPoint関数により、テスト関数Ａが呼び出され、Ｂ１というキー入力が行われた場合についてテストすることが可能となる（Ｓ４）。
【００３７】
ホストコンピュータ２は、通信部２２を介して、ユーザープログラムのUART_Send関数によりユーザーシステム１から関数Ａの処理が終わったという動作情報を受信する（Ｓ５）。その後、ユーザープログラムのＢ地点の処理が行われたことを検知するテストを行いたい場合、通信部２２が、該当するテスト関数である関数Ｂを備えるテストプログラムＢをユーザーシステム１に対して送信する（Ｓ６）。
【００３８】
図５は、テスト関数Ｂの処理を示すプログラムの一例を示す図である。図５のテスト関数Ｂは、引数として入力するpoint変数がPOINT_Aである、つまり、ユーザープログラムのＡ地点の処理が行われたときに、ホストコンピュータ１に対してＬＥＤの状態を知らせる情報を送信する命令UART_Send(LED,1)とホストコンピュータ１に対して、関数Ｂの処理が終わったという動作情報を送信する命令UART_Send(AISFINISHED,1)の処理を実行するプログラムである。
【００３９】
テストプログラム入力部１１は、通信部１０を介して、ホストコンピュータ２からテスト関数Ｂを備えるテストプログラムＢの受信を行い、受信したテストプログラムＢをテストプログラム記憶部１２に対して出力する。テストプログラム記憶部１２は、通信部１０から入力したテストプログラムＢをテストプログラム格納領域１２０に展開し、ユーザープログラムからテスト関数Bを呼び出し可能な状態にする（Ｓ７）。
【００４０】
このようにして、テストプログラム記憶部１２は、ユーザープログラムのＢ地点の処理が行われたときに、CheckPoint関数により、テスト関数Ｂが呼び出され、Ｂ地点の処理が行われたという情報をホストコンピュータ１に送信することが可能となる（Ｓ８）。
【００４１】
テストを行う処理の内容の変更があった場合も、変更後のテスト処理に該当するテスト関数を作成することにより対応が可能である。例えば、テスト関数Ａのキー入力をＢ１からＢ２に変えたい場合は、Key=B1という処理をKey=B2という処理に変更したテスト関数Ａ２を備えるテストプログラムＡ２をホストコンピュータ２からユーザーシステム１に対して送信するようにすればよい。図６は、テスト関数Ａ２の処理を示すプログラムの一例を示す図である。
【００４２】
以後、テストの状態に応じてホストコンピュータ２からテストプログラムを選択し、ユーザーシステム１に送信する。ユーザーシステム１は、テストプログラム入力部１１が通信部１０を介してテストプログラムを受信し、受信したテストプログラムに備えられるテスト関数を呼び出すことにより、適当なテストを行うことが可能となる。
【００４３】
このようにすることにより、ホストコンピュータ２から動的にテストプログラムを受信し、展開し、テスト関数を実行することにより、テストに必要なプログラムを展開するメモリ領域を少なくすることが可能となる。また、ユーザープログラムを停止することなくテストを行うことが可能となる。更に、テスト関数内の処理を行わない状態に設定すればmain関数を書き換えることなく製品と同じコードにすることが可能となり、テスト終了時のプログラム修正ミスの危険を低減させることが可能となる。
【００４４】
その他の発明の実施の形態．
上述の例では、テストプログラムはテストプログラム記憶部に格納されているとしたが、これを通信部により外部から受信するようにしても良い。また、別途入力手段を設けて動的に入力するようにしても良い。
【図面の簡単な説明】
【００４５】
【図１】本発明におけるユーザーシステムの構成を示すブロック図である。
【図２】本発明におけるユーザーシステムの処理の流れを示すフローチャートである。
【図３】本発明におけるユーザープログラムの一例を示す図である。
【図４】本発明におけるユーザープログラム及びテスト関数の一例を示す図である。
【図５】本発明におけるユーザープログラム及びテスト関数の一例を示す図である。
【図６】本発明におけるユーザープログラム及びテスト関数の一例を示す図である。
【図７】従来技術におけるユーザープログラム及びテスト関数の一例を示す図である。
【符号の説明】
【００４６】
１    ユーザーシステム
１０    通信部
１１    テストプログラム入力部
１２    テストプログラム記憶部
１２０    テストプログラム格納領域
１３    ユーザープログラム実行部
２    ホストコンピュータ
２０    制御部
２１    テストプログラム記憶部
２２    通信部
【図１】
2006338271.tif 000003
【図２】
2006338271.tif 000004
【図３】
2006338271.tif 000005
【図４】
2006338271.tif 000006
【図５】
2006338271.tif 000007
【図６】
2006338271.tif 000008
【図７】
2006338271.tif 000009