JP2008171034A - プログラムの作成支援装置、その作成支援プログラム及びその作成支援方法 - Google Patents
プログラムの作成支援装置、その作成支援プログラム及びその作成支援方法 Download PDFInfo
- Publication number
- JP2008171034A JP2008171034A JP2007000760A JP2007000760A JP2008171034A JP 2008171034 A JP2008171034 A JP 2008171034A JP 2007000760 A JP2007000760 A JP 2007000760A JP 2007000760 A JP2007000760 A JP 2007000760A JP 2008171034 A JP2008171034 A JP 2008171034A
- Authority
- JP
- Japan
- Prior art keywords
- program
- model
- execution
- output
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
【課題】入力値に対してランダムな値を出力するランダム出力ブロックを含むプログラムをテストできるようにする。
【解決手段】 記憶装置30からランダム出力ブロック64を含むプログラム60を読み出し、プログラムを実行して、テスト入力値に対するプログラムの実行結果を得るプログラム実行部25と、記憶装置30からランダム出力モデルブロック44を含むモデル40を読み出し、モデル実行ツールを用いて、モデルを実行して、前記テスト入力値に対するモデルの実行結果を得るモデル実行部22と、プログラム実行部25で得た実行結果とモデル実行部手段22で得た実行結果とを比較する出力照合部28とを備えている。モデル実行部22は、プログラムの実行によるランダム出力ブロックの出力値を取得し、モデル中のランダム出力モデルブロック44の出力値として、ランダム出力ブロック64の出力値を用いる。
【選択図】 図1
【解決手段】 記憶装置30からランダム出力ブロック64を含むプログラム60を読み出し、プログラムを実行して、テスト入力値に対するプログラムの実行結果を得るプログラム実行部25と、記憶装置30からランダム出力モデルブロック44を含むモデル40を読み出し、モデル実行ツールを用いて、モデルを実行して、前記テスト入力値に対するモデルの実行結果を得るモデル実行部22と、プログラム実行部25で得た実行結果とモデル実行部手段22で得た実行結果とを比較する出力照合部28とを備えている。モデル実行部22は、プログラムの実行によるランダム出力ブロックの出力値を取得し、モデル中のランダム出力モデルブロック44の出力値として、ランダム出力ブロック64の出力値を用いる。
【選択図】 図1
Description
本発明は、入力値に対してランダムな値を出力するランダム出力ブロックを含むプログラムの作成支援装置、その作成支援プログラム及びその作成支援方法に関する。
例えば、以下の特許文献1には、プログラムの設計仕様をモデル化し、このモデルからプログラムのソースコードを自動生成するプログラム作成支援装置が開示されている。
近年では、このようなプログラム作成支援装置を用いて、プログラム開発の効率を上げている。
ところで、一般的に、プログラムが一旦完成すると、このプログラムが適切なものであるか否かのテストが行われる。このテストでは、予め入力値と、この入力値に対する出力値とを準備しておき、コンピュータに、この入力値を入力し、開発したプログラムを実行させて、プログラムの実行結果である出力値を得て、この出力値と予め準備しておいた出力値とを比較している。
通常のプログラムでは、入力値に対して出力が一意に決まる。しかしながら、プログラムの中には、入力値に対して出力がランダムに変わってほしいものもある。例えば、同じ処理を行う機器が並列的に複数存在するシステムで、これらの機器の起動を管理するプログラムでは、起動する順番が決まっていると、一つの機器が必ず使用されることになり、この機器が他の機器に比べて早く寿命を迎えることになるため、起動させる機器をランダムに選択することが要求される。
このようなプログラムでは、出力がランダムであるため、前述したように、予め入力値と出力値とを準備しおいてテストを行うことができない。
そこで、本発明は、このような事情を鑑み、入力値に対してランダムな値を出力するランダム出力ブロックを含むプログラムのテストを行うことができるプログラムの作成支援装置、その作成支援プログラム及びその作成支援方法を提供することを目的とする。
前記目的を達成するためのプログラムの作成支援装置に係る発明は、
入力値に対してランダムな値を出力するランダム出力ブロックを含むプログラムの作成支援装置において、
前記プログラムを記憶するプログラム記憶領域と、
前記プログラムの仕様に基づくプログラムモデルであって、前記プログラム中の前記ランダム出力ブロックに対応するランダム出力モデルブロックを含むプログラムモデルを記憶するモデル記憶領域と、
前記プログラムのテスト入力値を取得する入力値取得手段と、
前記プログラム記憶領域から前記プログラムを読み出し、該プログラムを実行して、前記入力値取得手段が取得した前記テスト入力値に対する該プログラムの実行結果を得るプログラム実行手段と、
前記モデル記憶領域から前記プログラムモデルを読み出し、モデル実行ツールを用いて、該プログラムモデルを実行して、前記入力値取得手段が取得した前記テスト入力値に対する該プログラムモデルの実行結果を得るモデル実行手段と、
前記プログラム実行手段の前記実行結果と前記モデル実行手段の前記実行結果とを出力する、及び/又は、両実行結果を比較し、該比較結果を出力する照合手段と、
を備え、
前記モデル実行手段は、前記プログラム実行手段による前記プログラムの実行による前記ランダム出力ブロックの出力値を取得し、前記プログラムモデル中の前記ランダム出力モデルブロックの出力値として、該ランダム出力ブロックの出力値を用いる、
ことを特徴とする。
入力値に対してランダムな値を出力するランダム出力ブロックを含むプログラムの作成支援装置において、
前記プログラムを記憶するプログラム記憶領域と、
前記プログラムの仕様に基づくプログラムモデルであって、前記プログラム中の前記ランダム出力ブロックに対応するランダム出力モデルブロックを含むプログラムモデルを記憶するモデル記憶領域と、
前記プログラムのテスト入力値を取得する入力値取得手段と、
前記プログラム記憶領域から前記プログラムを読み出し、該プログラムを実行して、前記入力値取得手段が取得した前記テスト入力値に対する該プログラムの実行結果を得るプログラム実行手段と、
前記モデル記憶領域から前記プログラムモデルを読み出し、モデル実行ツールを用いて、該プログラムモデルを実行して、前記入力値取得手段が取得した前記テスト入力値に対する該プログラムモデルの実行結果を得るモデル実行手段と、
前記プログラム実行手段の前記実行結果と前記モデル実行手段の前記実行結果とを出力する、及び/又は、両実行結果を比較し、該比較結果を出力する照合手段と、
を備え、
前記モデル実行手段は、前記プログラム実行手段による前記プログラムの実行による前記ランダム出力ブロックの出力値を取得し、前記プログラムモデル中の前記ランダム出力モデルブロックの出力値として、該ランダム出力ブロックの出力値を用いる、
ことを特徴とする。
ここで、前記プログラムの作成支援装置は、
前記モデル記憶領域から前記プログラムモデルを読み出し、該プログラムモデルを用いて、前記プログラムのスケルトンを生成するスケルトン生成手段と、
前記スケルトンに不足しているプログラム構成要素データを受け付け、該スケルトンに該プログラム構成要素データを組み込み、前記プログラムを生成し、該プログラムを前記プログラム記憶領域に格納するプログラム生成手段と、
を備え、
前記スケルトン生成手段は、前記ランダム出力モデルブロックから前記ランダム出力ブロックのスケルトンを作成するにあたり、該ランダム出力ブロックの出力値を特定の記憶領域に記憶させるステップを含むランダム出力スケルトンを作成するランダム出力スケルトン作成手段を含み、
前記モデル実行手段は、前記プログラム実行手段による前記プログラムの実行により、前記特定の記憶領域に記憶された前記ランダム出力ブロックの出力値を取得する、
ものであってもよい。
前記モデル記憶領域から前記プログラムモデルを読み出し、該プログラムモデルを用いて、前記プログラムのスケルトンを生成するスケルトン生成手段と、
前記スケルトンに不足しているプログラム構成要素データを受け付け、該スケルトンに該プログラム構成要素データを組み込み、前記プログラムを生成し、該プログラムを前記プログラム記憶領域に格納するプログラム生成手段と、
を備え、
前記スケルトン生成手段は、前記ランダム出力モデルブロックから前記ランダム出力ブロックのスケルトンを作成するにあたり、該ランダム出力ブロックの出力値を特定の記憶領域に記憶させるステップを含むランダム出力スケルトンを作成するランダム出力スケルトン作成手段を含み、
前記モデル実行手段は、前記プログラム実行手段による前記プログラムの実行により、前記特定の記憶領域に記憶された前記ランダム出力ブロックの出力値を取得する、
ものであってもよい。
また、前記目的を達成するためのプログラムの作成支援プログラムに係る発明は、
入力値に対してランダムな値を出力するランダム出力ブロックを含むプログラムの作成支援プログラムにおいて、
前記プログラムのテスト入力値を取得する入力値取得ステップと、
コンピュータの記憶領域に格納された前記プログラムを該記憶領域から読み出し、該プログラムを実行して、前記入力値取得ステップで取得した前記テスト入力値に対する該プログラムの実行結果を得るプログラム実行ステップと、
前記コンピュータの記憶領域に格納された、前記プログラムの仕様に基づくプログラムモデルであって、前記プログラム中の前記ランダム出力ブロックに対応するランダム出力モデルブロックを含むプログラムモデルを該記憶領域から読み出し、モデル実行ツールを用いて、該プログラムモデルを実行して、前記入力値取得ステップで取得した前記テスト入力値に対する該プログラムモデルの実行結果を得るモデル実行ステップと、
前記プログラム実行ステップの実行で得られたで前記実行結果と前記モデル実行ステップの実行で得られた前記実行結果とを出力する照合ステップと、
を前記コンピュータに実行させ、
前記モデル実行ステップでは、前記プログラム実行ステップでの前記プログラムの実行による前記ランダム出力ブロックの出力値を取得し、前記プログラムモデル中の前記ランダム出力モデルブロックの出力値として、該ランダム出力ブロックの出力値を用いる、
ことを特徴とする。
入力値に対してランダムな値を出力するランダム出力ブロックを含むプログラムの作成支援プログラムにおいて、
前記プログラムのテスト入力値を取得する入力値取得ステップと、
コンピュータの記憶領域に格納された前記プログラムを該記憶領域から読み出し、該プログラムを実行して、前記入力値取得ステップで取得した前記テスト入力値に対する該プログラムの実行結果を得るプログラム実行ステップと、
前記コンピュータの記憶領域に格納された、前記プログラムの仕様に基づくプログラムモデルであって、前記プログラム中の前記ランダム出力ブロックに対応するランダム出力モデルブロックを含むプログラムモデルを該記憶領域から読み出し、モデル実行ツールを用いて、該プログラムモデルを実行して、前記入力値取得ステップで取得した前記テスト入力値に対する該プログラムモデルの実行結果を得るモデル実行ステップと、
前記プログラム実行ステップの実行で得られたで前記実行結果と前記モデル実行ステップの実行で得られた前記実行結果とを出力する照合ステップと、
を前記コンピュータに実行させ、
前記モデル実行ステップでは、前記プログラム実行ステップでの前記プログラムの実行による前記ランダム出力ブロックの出力値を取得し、前記プログラムモデル中の前記ランダム出力モデルブロックの出力値として、該ランダム出力ブロックの出力値を用いる、
ことを特徴とする。
また、前記目的を達成するためのプログラムの作成支援方法は、
入力値に対してランダムな値を出力するランダム出力ブロックを含むプログラムの作成支援方法において、
コンピュータの記憶領域に前記プログラムを格納する工程と、
前記コンピュータの記憶領域に、前記プログラムの仕様に基づくプログラムモデルであって、前記プログラム中の前記ランダム出力ブロックに対応するランダム出力モデルブロックを含むプログラムモデルを格納する工程と、
前記コンピュータに、前記プログラムのテスト入力値を入力するテスト値入力工程と、
前記コンピュータに、前記記憶領域から前記プログラムを読み出させ、該プログラムを実行させて、前記テスト値入力工程で入力した前記テスト入力値に対する該プログラムの実行結果を取得させるプログラム実行工程と、
前記コンピュータに、前記記憶領域から前記プログラムモデルを読み出させ、モデル実行ツールを用いて、該プログラムモデルを実行させて、前記テスト値入力工程で入力した前記テスト入力値に対する該プログラムモデルの実行結果を取得させるモデル実行工程と、
前記コンピュータに、前記プログラム実行工程での前記実行結果と前記モデル実行工程での前記実行結果とを出力させ、及び/又は、両実行結果を比較させて、該比較結果を出力させる照合工程と、
を含み、
前記モデル実行工程では、前記コンピュータに、前記プログラム実行工程での前記プログラムの実行による前記ランダム出力ブロックの出力値を取得させ、前記プログラムモデル中の前記ランダム出力モデルブロックの出力値として、該ランダム出力ブロックの出力値を用いらせる、
ことを特徴とする。
入力値に対してランダムな値を出力するランダム出力ブロックを含むプログラムの作成支援方法において、
コンピュータの記憶領域に前記プログラムを格納する工程と、
前記コンピュータの記憶領域に、前記プログラムの仕様に基づくプログラムモデルであって、前記プログラム中の前記ランダム出力ブロックに対応するランダム出力モデルブロックを含むプログラムモデルを格納する工程と、
前記コンピュータに、前記プログラムのテスト入力値を入力するテスト値入力工程と、
前記コンピュータに、前記記憶領域から前記プログラムを読み出させ、該プログラムを実行させて、前記テスト値入力工程で入力した前記テスト入力値に対する該プログラムの実行結果を取得させるプログラム実行工程と、
前記コンピュータに、前記記憶領域から前記プログラムモデルを読み出させ、モデル実行ツールを用いて、該プログラムモデルを実行させて、前記テスト値入力工程で入力した前記テスト入力値に対する該プログラムモデルの実行結果を取得させるモデル実行工程と、
前記コンピュータに、前記プログラム実行工程での前記実行結果と前記モデル実行工程での前記実行結果とを出力させ、及び/又は、両実行結果を比較させて、該比較結果を出力させる照合工程と、
を含み、
前記モデル実行工程では、前記コンピュータに、前記プログラム実行工程での前記プログラムの実行による前記ランダム出力ブロックの出力値を取得させ、前記プログラムモデル中の前記ランダム出力モデルブロックの出力値として、該ランダム出力ブロックの出力値を用いらせる、
ことを特徴とする。
本発明によれば、開発したプログラム中に、入力値に対してランダムな値を出力するランダム出力ブロックを含んでいる場合でも、このプログラムをテストすることができる。
以下、本発明に係る一実施形態としてのプログラムの作成支援装置について、図面を用いて説明する。
本実施形態のプログラムの作成支援装置100は、図1に示すように、ハードウェア的には、コンピュータであり、各種処理を実行するCPU10と、各種データやプログラム等が記憶される記憶装置30と、CPU10のワークエリアとなるメモリ70と、入力インタフェース71と、出力インタフェース72と、キーボード等の入力装置81と、ディスプレイ装置等の出力装置82と、を備えている。
記憶装置30には、開発するプログラムの作成支援プログラム31と、開発するプログラムのモデルの実行時に使用するモデル実行ツール32とが予め格納されている。さらに、この記憶装置30には、後述するように、開発するプログラム60のモデル40、このプログラムモデル40に基づいて作成されたスケルトン50、このスケルトン50に基づいて作成されたプログラム60が順次格納される。
ここで、プログラムモデル40、スケルトン50、及びプログラム60について説明する。
プログラムモデル40は、開発するプログラム60の設計仕様に基づき作成されたもので、前述のモデル実行ツール32を用いることで、このプログラムモデル40をコンピュータ上で実行することができるモデル形式で記述されている。このプログラムモデル40は、複数の機能モデルブロック41,42,43,44を有し、これら機能モデルブロックのうちの一つが、入力値に対してランダムな値を出力するランダム出力モデルブロック44である。このプログラムモデル40に対する入力値は、この例では、機能1モデルブロック41に入力し、その出力がランダム出力モデルブロック41及び機能2モデルブロック42に入力し、ランダム出力モデルブロック44の出力が機能3モデルブロック43に入力する。
スケルトン50は、前述したように、プログラムモデル40に基づいて作成されるもので、プログラムモデル40の機能1モデルブロック41、機能2モデルブロック42、ランダム出力モデルブロック44、機能3モデルブロック43に対応して、機能1スケルトンブロック51、機能2スケルトンブロック52、ランダム出力スケルトンブロック54、機能3スケルトンブロック53を有する。
プログラム60は、スケルトン50に、適切なプログラム構成要素データを組み込んで作成されるもので、コード形式で記述される。このプログラム60は、機能1スケルトンブロック51、機能2スケルトンブロック52、ランダム出力スケルトンブロック54、機能3スケルトンブロック53に対応して、機能1ブロック61、機能2ブロック62、ランダム出力ブロック64、機能3ブロック63を有している。
記憶装置30には、さらに、プログラム60のテストするために、プログラムモデル40及びプログラム60の実行過程で、このプログラム60のテスト入力値33、プログラムモデル40を構成する各機能モデルブロック41,42,43の出力値であるモデルブロック出力値34、プログラム60を構成する各モデル61,62,63の出力値であるブロック出力値36、プログラム60のランダム出力ブロック64の出力値であるランダム出力値35が順次格納される。
CPU10は、機能的に、プログラムモデル40に基づきスケルトン50を作成するスケルトン作成部11と、スケルトン50に基づきプログラム60を作成するプログラム作成部15と、プログラム60をテストするテスト実行部21とを有している。
スケルトン作成部11は、プログラムモデル40のランダム出力モデルブロック44を除く他の機能モデルブロック41,42,43に基づき機能スケルトンブロック41,42,43を生成する通常機能スケルトン作成部12と、プログラムモデル40のランダム出力モデルブロック44に基づいてランダム出力スケルトンブロック54を生成するランダム出力スケルトン生成部13と、を有している。
また、テスト実行部21は、記憶装置30に記憶されているモデル実行ツール32を用いて、プログラムモデル40を実行するモデル実行部22と、テストのためのテスト入力値を取得するテスト入力値取得部24と、プログラム60を実行するプログラム実行部25と、プログラム60の実行で得られたランダム出力ブロック64の出力を統計処理するランダム出力集計部26と、プログラムモデル40の実行結果とプログラム60の実行結果とを照合する出力照合部28と、ランダムデータ集計部26の集計結果や出力照合部28の照合結果等を出力装置82に出力する出力制御部29と、を有している。
CPU10の以上の各機能部は、いずれも、CPU10が記憶装置30に格納されているプログラム作成支援プログラム31を実行することで、機能する。
次に、本実施形態のプログラムの作成支援装置100の動作について説明する。
この作成支援装置100のCPU10は、図2に示すフローチャートに示すように、まず、入力装置81からプログラムモデル40を受け付けて、これを記憶装置30に格納する(S10)。なお、ここでは、プログラムモデル40を外部から受け付けているが、この支援装置100に、プログラム60の設計仕様に基づいて、プログラムモデル40を作成するプログラムを予め格納しておき、この支援装置100で、このプログラムによりプログラムモデルを作成するようにしてもよい。
次に、スケルトン生成部11が、記憶装置30に格納されたプログラムモデル40に基づいて、スケルトン50を生成し、これを記憶装置30に格納する(S20)。
ここで、スケルトン生成部11の詳細動作について、図3に示すPDA(Problem Analysis Diagram)に従って説明する。
スケルトン生成部11は、プログラムモデル40を構成している複数のモデルブロック41〜44のうち、処理していないブロックがある間(S21)、以下の処理を繰り返して実行する。
まず、スケルトン生成部11は、複数のモデルブロック41〜44のうちの一つのブロックを記憶装置30から持ってきて(S22)、このブロックがランダム出力モデルブロック44か否かを判断する(S23)。記憶装置30から持ってきたブロックがランダム出力モデルブロック44であると判断した場合には、スケルトン生成部11のランダム出力スケルトン生成部13が起動して、このランダム出力生成部13が、ランダム出力モデルブロック44に基づきランダム出力スケルトンブロック54を生成する(S24)。
このランダムスケルトンブロック54は、図6に示すように、入力データ及び出力データの記憶装置30内での格納領域を確保する第1のスケルトンパート54aと、専ら、ランダム出力モデルブロック44に基づいて作成された本来のランダムスケルトンブロックを成す第2のスケルトンパート54bと、入力データ及び出力データを前述の確保した格納領域にコピーする第3のスケルトンパート54cとを有している。すなわち、このランダムスケルトンブロック54は、後述の他の機能スケルトンブロック51,52,53と異なり、三つのパートを有し、入出力データを記憶装置30に格納するためのパートを含んでいる。
ランダム出力スケルトン生成部13は、次に、生成したランダム出力スケルトンブロック54を、予め記憶装置30に格納しておいたメイン関数に登録する(S26)。なお、このメイン関数とは、各ブロックの入出力タイミング等を定義した関数である。また、このメイン関数の生成及び記憶のタイミングは、スケルトン生成部11でスケルトン50を生成する前であれば、どの段階でもよい。
また、ステップ23の判断で、記憶装置30から持ってきたブロックがランダム出力モデルブロックではないと判断した場合には、スケルトン生成部11の通常機能スケルトン生成部12が起動して、この通常機能スケルトン生成部12が、ランダム出力しない通常の機能モデルブロック41,42,43に基づき、各機能スケルトンブロック51,52,53を生成する(S25)。通常機能スケルトン生成部11は、機能スケルトンブロック51,52,53を生成すると、前述のメイン関数に機能スケルトンブロック51,52,53を登録する(S26)。
複数のモデルブロック41〜44に対して、以上のようなスケルトン51〜54の生成及びメイン関数への登録が終了すると、スケルトン50の生成処理(S20)が終了する。
スケルトン50の生成処理(S20)が終了すると、図2のフローチャートに示すように、プログラム生成部15が、記憶装置30からスケルトン50を読み出し、入力装置81からのプログラム構成要素データを受け付けて、これをスケルトン50に組み込み、プログラム60を生成し、このプログラム60を記憶装置30に格納する(S30)。なお、ここでは、プログラム60は、コード形式のものを想定しているため、プログラム構成要素データもコード形式のものを受け付ける。
次に、テスト実行部21のテスト入力値取得部24が、複数のテスト入力値を取得し、これらテスト入力値33を記憶装置30に格納する(S40)。このテスト入力値取得部24は、入力装置81から複数のテスト入力値を受け付けることで、これらを取得する。
次に、テスト実行部21のプログラム実行部25が、記憶装置30からプログラム60を読み込み、このプログラム60を実行する(S50)。
ここで、このプログラム実行部25の詳細動作について、図4に示すPDAに従って説明する。
プログラム実行部25は、まず、記憶装置30からコード形式のプログラム60を読み込み、これを実行形式に変換する(S51)。次に、プログラム実行部25は、記憶装置30に記憶されている複数のテスト入力値33のうちで、プログラム60にセットしていないテスト入力値がある間、以下の処理を繰り返して実行する(SS52)。
プログラム実行部25は、記憶装置30からテスト入力値33を一つ取ってきて、プログラム60中の機能1ブロック61の入力に、このテスト入力値33をセットする(S53)。続いて、機能1ブロック61を実行し、この実行結果をランダム出力ブロック64の入力にセットすると共に、この実行結果を機能2ブロック62の入力にセットする(S54)。
次に、プログラム実行部25は、ランダム出力ブロック64を実行し、この実行結果を機能3ブロック63の入力にセットすると共に、この実行結果を記憶装置30にランダム出力値35として格納する(S55)。ランダム出力ブロック64の実行結果(ランダム出力値)は、ランダム出力ブロック64の入力値、言い換えると、機能1ブロック61の実行結果と対応付けて、記憶装置30に格納される。
そして、プログラム実行部25は、機能2ブロック62及び機能3ブロック63を順次実行して、それぞれの実行結果を記憶装置30にブロック出力値36として格納する(S56,S57)。
以上のステップ53からステップ57までの処理を、プログラム50にセットしていないテスト入力値が無くなるまで実行すると、このプログラム実行処理(S50)が終了する。
プログラム実行処理(S50)が終了すると、図2のフローチャートに示すように、モデル実行部22がプログラムモデル40を実行する(S60)。
ここで、このモデル実行部22の詳細動作について、図5に示すPDAに従って説明する。
モデル実行部22は、まず、記憶装置30からプログラムモデル40を読み込み、このプログラムモデル40の実行に必要なモデル実行ツール32を記憶装置30から取得し、プログラムモデル40を実行形式に変換する(S61)。次に、モデル実行部22は、記憶装置30に記憶されている複数のテスト入力値33のうちで、プログラムモデル40にセットしていないテスト入力値がある間、以下の処理を繰り返して実行する(S62)。
モデル実行部22は、記憶装置30からテスト入力値33を一つ取ってきて、機能1モデルブロック41の入力に、このテスト入力値33をセットする(S63)。次に、この機能1モデルブロック41を実行し、この実行結果をランダム出力モデルブロック44の入力と、機能2モデルブロック42の入力とにセットする(S64)。
続いて、モデル実行部22のランダム出力取得部23が、ステップ63で取得したテスト入力値33に対応するランダム出力値35が記憶装置30に格納されているか否かを判断し(S65)、記憶装置30に格納されていれば、ランダム出力モデルブロック44の出力にランダム出力値35をセットする(S66)。
次に、モデル実行部22は、ランダム出力モデルブロック44の出力に、ランダム出力値がセットされているか否かを判断する(S67)。ランダム出力値がセットされていれば、ランダム出力モデルブロック44の実行結果として、このランダム出力値を機能3モデルブロック43の入力にセットする(S68)。また、ランダム出力値がセットされていなければ、ランダム出力モデルブロック44を実行し、この実行結果を機能3モデルブロック43の入力にセットする(S69)。
続いて、モデル実行部22は、機能2モデルブロック42を実行し、この実行結果をブロック出力値36として記憶装置30に格納する(S70)。さらに、機能3モデルブロック43を実行し、この実行結果をブロック出力値36として記憶装置30に格納する(S71)。
以上で、モデル実行処理(S60)が終了する。
モデル実行処理(S60)が終了すると、図2のフローチャートに示すように、ランダム出力集計部26が、記憶装置30からランダム出力値35を読み出し、このランダム出力値35の集計処理を実行する(S80)。
具体的には、例えば、図7に示すように、4台の機器を備え、4台の機器のうちのいずれかをランダムに起動し、及び/又は、いずれかをランダムに停止させて、目的の出力を得るシステムが存在するとする。そして、プログラム60中のランダム出力ブロック64は、機器一台の増加指示が入力したときに、いずれの番号の機器を起動させるか、さらに、機器一台の減少指示が入力したときに、いずれの番号の機器を停止させるかを出力するものであるとする。
ところで、記憶装置30のランダム出力値35には、前述したように、ランダム出力ブロック64への入力値が対応付けられている。
このため、先に例示した場合、記憶装置30には、図8に示すように、ランダム出力ブロック64へ各入力値(機器増加→1、機器減少→2)毎に、ランダム出力値35としての機器番号が対応付けられていることになる。
ランダム出力集計部26は、このようなランダム出力値35を記憶装置30から読み出し、図9に示すように、各機器番号毎に、出力値となった累積回数を求め、全出力値の数に対するこの各機器番号毎の累積回数の比率(確率)を求める。
ランダム出力集計部26は、以上の算出結果を出力制御部29に渡し、これを出力装置82に出力させる。プログラムの作成者は、この出力を見て、各機器番号毎の累積回数の比率がほぼ同じであれば、プログラム60中のランダム出力ブロック64は、適切なプログラムであると判断する。
ランダム出力集計処理(S80)が終了すると、図2のフローチャートに示すように、出力照合部28が、記憶装置30からブロック出力値36とモデルブロック出力値34とを読み出し、出力照合処理を実行する(S90)。
具体的に、出力照合部28は、まず、記憶装置30からブロック出力値36とモデルブロック出力値34とを読み出す。記憶装置30に格納されているブロック出力値36は、例えば、図10に示すように、プログラムの実行毎に、機能2ブロック62の出力値と、機能3ブロック63の出力とが対応付けられているとする。また、記憶装置30に格納されているモデルブロック出力値34は、図11に示すように、プログラムモデルの実行毎に、機能2モデルブロック42の出力値と、機能3モデルブロック43の出力値とが対応付けられているとする。このような場合、出力照合部28は、各実行単位毎に、プログラムブロックの出力値とモデルブロックの出力値とを比較し、プログラムブロックの出力値とモデルブロックの出力値とが一致する場合に「OK」とし、プログラムブロックの出力値とモデルブロックの出力値とが一致しない場合に「NG」とする。出力照合部28は、この比較結果を出力制御部39に渡して、図12に示すように、これを出力装置82に出力させる。プログラムの作成者は、この出力を見て、一箇所でも、「NG」があれば、例えば、前述のステップ30で、新たなプログラム構成要素データを入力する。
以上で、出力照合処理(S90)を終了する。なお、この出力照合処理(S90)は、プログラムモデル実行処理(S60)の後であれば、ランダム出力集計処理(S80)より先に行ってもよい。
以上のように、本実施形態では、プログラム60中にランダム出力ブロック64が存在していても、このプログラム60のテストを行うことができる。さらに、ランダム出力ブロック64のテストも行うことができる。
10:CPU、11:スケルトン生成部、12:通常機能スケルトン生成部、13:ランダム出力スケルトン生成部、15:プログラム生成部、21:テスト実行部、22:モデル実行部、23:ランダム出力取得部、24:テスト入力値取得部、25:プログラム実行部、26:ランダム出力集計部、28:出力照合部、30:記憶装置、31:プログラム作成支援プログラム、32:モデル実行ツール、33:テスト入力値、34:モデルブロック出力値、35:ランダム出力値、36:ブロック出力値、40:プログラムモデル、41:機能1モデルブロック、42:機能2モデルブロック、43:機能3モデルブロック、44:ランダム出力モデルブロック、50:スケルトン、51:機能1スケルトンブロック、52:機能2スケルトンブロック、53:機能3スケルトンブロック、54:ランダム出力スケルトンブロック、60:プログラム、61:機能1ブロック、62:機能2ブロック、63:機能3ブロック、64:ランダム出力ブロック
Claims (7)
- 入力値に対してランダムな値を出力するランダム出力ブロックを含むプログラムの作成支援装置において、
前記プログラムを記憶するプログラム記憶領域と、
前記プログラムの仕様に基づくプログラムモデルであって、前記プログラム中の前記ランダム出力ブロックに対応するランダム出力モデルブロックを含むプログラムモデルを記憶するモデル記憶領域と、
前記プログラムのテスト入力値を取得する入力値取得手段と、
前記プログラム記憶領域から前記プログラムを読み出し、該プログラムを実行して、前記入力値取得手段が取得した前記テスト入力値に対する該プログラムの実行結果を得るプログラム実行手段と、
前記モデル記憶領域から前記プログラムモデルを読み出し、モデル実行ツールを用いて、該プログラムモデルを実行して、前記入力値取得手段が取得した前記テスト入力値に対する該プログラムモデルの実行結果を得るモデル実行手段と、
前記プログラム実行手段の前記実行結果と前記モデル実行手段の前記実行結果とを出力する、及び/又は、両実行結果を比較し、該比較結果を出力する照合手段と、
を備え、
前記モデル実行手段は、前記プログラム実行手段による前記プログラムの実行による前記ランダム出力ブロックの出力値を取得し、前記プログラムモデル中の前記ランダム出力モデルブロックの出力値として、該ランダム出力ブロックの出力値を用いる、
ことを特徴とするプログラムの作成支援装置。 - 請求項1に記載のプログラムの作成支援装置において、
前記モデル記憶領域から前記プログラムモデルを読み出し、該プログラムモデルを用いて、前記プログラムのスケルトンを生成するスケルトン生成手段と、
前記スケルトンに不足しているプログラム構成要素データを受け付け、該スケルトンに該プログラム構成要素データを組み込み、前記プログラムを生成し、該プログラムを前記プログラム記憶領域に格納するプログラム生成手段と、
を備え、
前記スケルトン生成手段は、前記ランダム出力モデルブロックから前記ランダム出力ブロックのスケルトンを作成するにあたり、該ランダム出力ブロックの出力値を特定の記憶領域に記憶させるステップを含むランダム出力スケルトンを作成するランダム出力スケルトン作成手段を含み、
前記モデル実行手段は、前記プログラム実行手段による前記プログラムの実行により、前記特定の記憶領域に記憶された前記ランダム出力ブロックの出力値を取得する、
ことを特徴とするプログラムの作成支援装置。 - 請求項1及び2のいずれか一項に記載のプログラムの作成支援装置において、
前記入力値取得手段は、複数の前記テスト入力値を取得し、
前記プログラム実行手段は、複数の前記テスト入力値毎に前記プログラムを実行して、複数の前記テスト入力値毎に、前記ランダム出力ブロックの入力値に対する該ランダム出力ブロックの出力値を取得し、
前記ランダム出力ブロックの複数の入力値と、各入力値毎のランダム出力ブロックの出力値とを用いて、該ランダム出力ブロックの各実行結果のランダム性を評価し得るデータを作成するランダム出力集計手段を備えている、
ことを特徴とするプログラムの作成支援装置。 - 入力値に対してランダムな値を出力するランダム出力ブロックを含むプログラムの作成支援プログラムにおいて、
前記プログラムのテスト入力値を取得する入力値取得ステップと、
コンピュータの記憶領域に格納された前記プログラムを該記憶領域から読み出し、該プログラムを実行して、前記入力値取得ステップで取得した前記テスト入力値に対する該プログラムの実行結果を得るプログラム実行ステップと、
前記コンピュータの記憶領域に格納された、前記プログラムの仕様に基づくプログラムモデルであって、前記プログラム中の前記ランダム出力ブロックに対応するランダム出力モデルブロックを含むプログラムモデルを該記憶領域から読み出し、モデル実行ツールを用いて、該プログラムモデルを実行して、前記入力値取得ステップで取得した前記テスト入力値に対する該プログラムモデルの実行結果を得るモデル実行ステップと、
前記プログラム実行ステップの実行で得られたで前記実行結果と前記モデル実行ステップの実行で得られた前記実行結果とを出力する照合ステップと、
を前記コンピュータに実行させ、
前記モデル実行ステップでは、前記プログラム実行ステップでの前記プログラムの実行による前記ランダム出力ブロックの出力値を取得し、前記プログラムモデル中の前記ランダム出力モデルブロックの出力値として、該ランダム出力ブロックの出力値を用いる、
ことを特徴とするプログラムの作成支援プログラム。 - 請求項4に記載のプログラムの作成支援プログラムにおいて、
前記記憶領域に格納された前記プログラムモデルを読み出し、該プログラムモデルを用いて、前記プログラムのスケルトンを生成するスケルトン生成ステップと、
前記スケルトンに不足しているプログラム構成要素データを受け付け、該スケルトンに該プログラム構成要素データを組み込み、前記プログラムを生成し、該プログラムを前記記憶領域に格納するプログラム生成ステップと、
を前記コンピュータに実行させ、
前記スケルトン生成ステップは、前記ランダム出力モデルブロックから前記ランダム出力ブロックのスケルトンを作成するにあたり、該ランダム出力ブロックの出力値を前記コンピュータの特定の記憶領域中に記憶させるステップを含むランダム出力スケルトンを作成するランダム出力スケルトン作成ステップを含み、
前記プログラム実行ステップでは、前記特定の記憶領域に記憶された前記ランダム出力ブロックの出力値を取得する、
ことを特徴とするプログラムの作成支援プログラム。 - 入力値に対してランダムな値を出力するランダム出力ブロックを含むプログラムの作成支援方法において、
コンピュータの記憶領域に前記プログラムを格納する工程と、
前記コンピュータの記憶領域に、前記プログラムの仕様に基づくプログラムモデルであって、前記プログラム中の前記ランダム出力ブロックに対応するランダム出力モデルブロックを含むプログラムモデルを格納する工程と、
前記コンピュータに、前記プログラムのテスト入力値を入力するテスト値入力工程と、
前記コンピュータに、前記記憶領域から前記プログラムを読み出させ、該プログラムを実行させて、前記テスト値入力工程で入力した前記テスト入力値に対する該プログラムの実行結果を取得させるプログラム実行工程と、
前記コンピュータに、前記記憶領域から前記プログラムモデルを読み出させ、モデル実行ツールを用いて、該プログラムモデルを実行させて、前記テスト値入力工程で入力した前記テスト入力値に対する該プログラムモデルの実行結果を取得させるモデル実行工程と、
前記コンピュータに、前記プログラム実行工程での前記実行結果と前記モデル実行工程での前記実行結果とを出力させ、及び/又は、両実行結果を比較させて、該比較結果を出力させる照合工程と、
を含み、
前記モデル実行工程では、前記コンピュータに、前記プログラム実行工程での前記プログラムの実行による前記ランダム出力ブロックの出力値を取得させ、前記プログラムモデル中の前記ランダム出力モデルブロックの出力値として、該ランダム出力ブロックの出力値を用いらせる、
ことを特徴とするプログラムの作成支援方法。 - 請求項6に記載のプログラムの作成支援方法において、
前記コンピュータに、前記記憶領域から前記プログラムモデルを読み出させ、該プログラムモデルを用いて、前記プログラムのスケルトンを生成させるスケルトン生成工程と、
前記スケルトンに不足しているプログラム構成要素データを受け付け、前記コンピュータに、該スケルトンに該プログラム構成要素データを組み込ませて、前記プログラムを生成させ、該プログラムを前記記憶領域に格納させるプログラム生成工程と、
を含み、
前記スケルトン生成工程は、前記ランダム出力モデルブロックから前記ランダム出力ブロックのスケルトンを作成するにあたり、前記コンピュータに、該ランダム出力ブロックの出力値を特定の記憶領域に記憶させるステップを含むランダム出力スケルトンを作成させるランダム出力スケルトン作成工程を含み、
前記モデル実行工程では、前記プログラム実行工程での前記プログラムの実行により、前記特定の記憶領域に記憶された前記ランダム出力ブロックの出力値を前記コンピュータに取得させる、
ことを特徴とするプログラムの作成支援方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007000760A JP2008171034A (ja) | 2007-01-05 | 2007-01-05 | プログラムの作成支援装置、その作成支援プログラム及びその作成支援方法 |
EP07025229A EP1970810A3 (en) | 2007-01-05 | 2007-12-28 | Program creation support |
US11/969,295 US20080216075A1 (en) | 2007-01-05 | 2008-01-04 | Program creation support apparatus, creation support program and creation support method for the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007000760A JP2008171034A (ja) | 2007-01-05 | 2007-01-05 | プログラムの作成支援装置、その作成支援プログラム及びその作成支援方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008171034A true JP2008171034A (ja) | 2008-07-24 |
Family
ID=39186805
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007000760A Pending JP2008171034A (ja) | 2007-01-05 | 2007-01-05 | プログラムの作成支援装置、その作成支援プログラム及びその作成支援方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20080216075A1 (ja) |
EP (1) | EP1970810A3 (ja) |
JP (1) | JP2008171034A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6333871B2 (ja) * | 2016-02-25 | 2018-05-30 | ファナック株式会社 | 入力画像から検出した対象物を表示する画像処理装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2673298B2 (ja) * | 1987-12-17 | 1997-11-05 | 三菱電機株式会社 | セルフテスト機能付半導体集積回路 |
US5779545A (en) * | 1996-09-10 | 1998-07-14 | International Game Technology | Central random number generation for gaming system |
US6339776B2 (en) * | 1999-10-04 | 2002-01-15 | International Business Machines Corporation | Dynamic semi-structured repository for mining software and software-related information |
JP2002215423A (ja) * | 2001-01-22 | 2002-08-02 | Hitachi Ltd | ソフトウェアモデル作成方法 |
US6980975B2 (en) * | 2001-11-15 | 2005-12-27 | International Business Machines Corporation | Method and apparatus for rule-based random irritator for model stimulus |
US7793257B2 (en) * | 2003-08-28 | 2010-09-07 | Ricoh Company, Ltd. | Technique for automating code generation in developing software systems |
JPWO2005124537A1 (ja) * | 2004-06-18 | 2008-04-17 | 富士通株式会社 | 乱数生成装置、生成方法、生成器評価方法、および乱数使用方法 |
JP2006024006A (ja) * | 2004-07-08 | 2006-01-26 | Denso Corp | テストケース生成装置、テストケース生成プログラム、モデルベース開発プログラム、ソースコード生成妥当性診断装置、ソースコード生成妥当性診断プログラム、およびモデルベース開発方法。 |
US7844413B2 (en) * | 2005-06-30 | 2010-11-30 | Broadcom Corporation | Self-generated test automation |
US7530036B2 (en) * | 2007-02-08 | 2009-05-05 | International Business Machines Corporation | Random test generation using an optimization solver |
-
2007
- 2007-01-05 JP JP2007000760A patent/JP2008171034A/ja active Pending
- 2007-12-28 EP EP07025229A patent/EP1970810A3/en not_active Withdrawn
-
2008
- 2008-01-04 US US11/969,295 patent/US20080216075A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20080216075A1 (en) | 2008-09-04 |
EP1970810A3 (en) | 2010-04-21 |
EP1970810A2 (en) | 2008-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8522214B2 (en) | Keyword based software testing system and method | |
JP5988444B2 (ja) | 最適化したバイナリー・モジュールをテストする方法、並びに、当該最適化したバイナリー・モジュールをテストするためのコンピュータ及びそのコンピュータ・プログラム | |
Al-Hajjaji et al. | Tool demo: testing configurable systems with featureIDE | |
JP4414373B2 (ja) | プログラムの検証プログラム、プログラムの検証装置、プログラムの検証方法 | |
Mussa et al. | A survey of model-driven testing techniques | |
CN105446874A (zh) | 一种资源配置文件的检测方法和装置 | |
US10592703B1 (en) | Method and system for processing verification tests for testing a design under test | |
CN107341106A (zh) | 应用程序兼容性检测方法、开发终端及存储介质 | |
US20060195732A1 (en) | Method and system for executing test cases for a device under verification | |
JP2024041899A (ja) | システムおよび方法 | |
Wiederseiner et al. | An open-source tool for automated generation of black-box xunit test code and its industrial evaluation | |
JP2008171034A (ja) | プログラムの作成支援装置、その作成支援プログラム及びその作成支援方法 | |
US20120291019A1 (en) | Program verification apparatus based on model verifying and storage medium | |
CN116009898A (zh) | K8s部署任务的状态确定方法、装置、设备及介质 | |
JP2018032062A (ja) | テスト項目生成方法、演算装置 | |
JP6318976B2 (ja) | デバッグ回路、デバッガ装置、半導体装置及びデバッグ方法 | |
JPWO2012049816A1 (ja) | モデル検査装置、方法及びプログラム | |
FR2957434A1 (fr) | Dispositif de test d'une architecture de calcul multitaches et procede de test correspondant | |
JP5093508B2 (ja) | ループ最適化システム、ループ最適化方法、及びループ最適化用プログラム | |
JP4483543B2 (ja) | バッチ処理検証装置、バッチ処理検証プログラム、及びバッチ処理検証方法 | |
JP4952317B2 (ja) | 退避データ判別方法、退避データ判別プログラムおよび退避データ判別装置 | |
JPWO2006072977A1 (ja) | Webサーバ、Webアプリケーションテスト方法、Webアプリケーションテストプログラム | |
JP2006112852A (ja) | テストシナリオ作成方法、テストシナリオ作成装置およびテストシナリオ作成のためのプログラム | |
CN110968306A (zh) | 数据的代码自动生成方法及装置、控制设备 | |
JP2012033091A (ja) | 半導体回路およびそのテスト方法 |