JP6827340B2 - ソフトウェア試験装置、ソフトウェア試験システム、ソフトウェア試験方法およびプログラム - Google Patents
ソフトウェア試験装置、ソフトウェア試験システム、ソフトウェア試験方法およびプログラム Download PDFInfo
- Publication number
- JP6827340B2 JP6827340B2 JP2017027927A JP2017027927A JP6827340B2 JP 6827340 B2 JP6827340 B2 JP 6827340B2 JP 2017027927 A JP2017027927 A JP 2017027927A JP 2017027927 A JP2017027927 A JP 2017027927A JP 6827340 B2 JP6827340 B2 JP 6827340B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- general
- test
- plc
- subroutine
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/056—Programming the PLC
-
- 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/3664—Environments for testing or debugging software
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/13—Plc programming
- G05B2219/13022—Convert source program to intermediate program
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Automation & Control Theory (AREA)
- Software Systems (AREA)
- Programmable Controllers (AREA)
- Debugging And Monitoring (AREA)
- Testing And Monitoring For Control Systems (AREA)
- Stored Programmes (AREA)
Description
例えば特許文献1には、PLCを動作させるシーケンスプログラムを検査するための検証支援システムが示されている。この検証支援システムは、シーケンスプログラムをハードウェア記述言語で記述されたPLCシーケンスプログラムに変換する。また、この検証支援システムは、ハードウェア記述言語で記述されてPLCの機能を模擬的に実行する実行モデルと、ハードウェア記述言語で記述されて制御対象の機能を模擬的に実行する制御対象モデルとを備える。そして、この検証支援システムは、仮想的なシーケンス制御システムを構成し、PLCシーケンスプログラムを実行してデバッグを行う。
本発明の第2の態様によれば、ソフトウェア試験装置は、プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換する変換部と、前記PLCプログラムに含まれるグローバル変数の値の想定範囲を示す範囲情報を取得する範囲情報取得部と、前記汎用言語プログラムに対する試験を行い、前記グローバル変数の値が前記想定範囲外となる場合をエラーとして検出する試験実行部と、を備える。
本発明の第3の態様によれば、ソフトウェア試験装置は、プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換する変換部と、前記汎用言語プログラムに対する試験を行い、前記PLCプログラムにおけるパスのうち指定されたステップ数以下のパスの各々について、当該パスを実行した場合の変数値を前記汎用言語プログラムを用いて算出し、いずれかのパスにおける変数値が前記PLCプログラムで示された条件を満たさない場合をエラーとして検出する試験実行部と、を備える。
本発明の第4の態様によれば、ソフトウェア試験装置は、プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換し、前記PLCプログラムにおけるサブルーチンコールを前記汎用言語プログラムにおける記述に変換する場合、前記PLCプログラムで呼び出されるサブルーチンに示されている入口条件を、前記サブルーチンコール時の条件としてサブルーチン呼出側の汎用言語プログラムに含め、前記PLCプログラムで呼び出されるサブルーチンに示されている出口条件を、前記サブルーチンコールからの復帰時の条件としてサブルーチン呼出側の汎用言語プログラムに含める変換部と、前記汎用言語プログラムに対する試験を行い、前記サブルーチンコール時の条件及び前記サブルーチンコールからの復帰時の条件を用いて前記サブルーチン呼出側の汎用言語プログラムを単体試験する試験実行部と、を備える。
本発明の第7の態様によれば、ソフトウェア試験方法は、プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換し、前記PLCプログラムに含まれるグローバル変数の値の想定範囲を示す範囲情報を取得し、前記汎用言語プログラムに対する試験を行い、前記グローバル変数の値が前記想定範囲外となる場合をエラーとして検出する。
本発明の第8の態様によれば、ソフトウェア試験方法は、プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換し、前記汎用言語プログラムに対する試験を行い、前記PLCプログラムにおけるパスのうち指定されたステップ数以下のパスの各々について、当該パスを実行した場合の変数値を前記汎用言語プログラムを用いて算出し、いずれかのパスにおける変数値が前記PLCプログラムで示された条件を満たさない場合をエラーとして検出する。
本発明の第9の態様によれば、ソフトウェア試験方法は、プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換し、前記PLCプログラムにおけるサブルーチンコールを前記汎用言語プログラムにおける記述に変換する場合、前記PLCプログラムで呼び出されるサブルーチンに示されている入口条件を、前記サブルーチンコール時の条件としてサブルーチン呼出側の汎用言語プログラムに含め、前記PLCプログラムで呼び出されるサブルーチンに示されている出口条件を、前記サブルーチンコールからの復帰時の条件としてサブルーチン呼出側の汎用言語プログラムに含め、前記汎用言語プログラムに対する試験を行い、前記サブルーチンコール時の条件及び前記サブルーチンコールからの復帰時の条件を用いて前記サブルーチン呼出側の汎用言語プログラムを単体試験する。
本発明の第11の態様によれば、プログラムは、コンピュータに、プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換させ、前記PLCプログラムに含まれるグローバル変数の値の想定範囲を示す範囲情報を取得させ、前記汎用言語プログラムに対する試験を行い、前記グローバル変数の値が前記想定範囲外となる場合をエラーとして検出させる、ためのプログラムである。
本発明の第12の態様によれば、プログラムは、コンピュータに、プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換させ、前記汎用言語プログラムに対する試験を行わせ、前記PLCプログラムにおけるパスのうち指定されたステップ数以下のパスの各々について、当該パスを実行した場合の変数値を前記汎用言語プログラムを用いて算出させ、いずれかのパスにおける変数値が前記PLCプログラムで示された条件を満たさない場合をエラーとして検出させる、ためのプログラムである。
本発明の第13の態様によれば、プログラムは、コンピュータに、プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換させ、前記PLCプログラムにおけるサブルーチンコールを前記汎用言語プログラムにおける記述に変換する場合、前記PLCプログラムで呼び出されるサブルーチンに示されている入口条件を、前記サブルーチンコール時の条件としてサブルーチン呼出側の汎用言語プログラムに含めさせ、前記PLCプログラムで呼び出されるサブルーチンに示されている出口条件を、前記サブルーチンコールからの復帰時の条件としてサブルーチン呼出側の汎用言語プログラムに含めさせ、前記汎用言語プログラムに対する試験を行わせ、前記サブルーチンコール時の条件及び前記サブルーチンコールからの復帰時の条件を用いて前記サブルーチン呼出側の汎用言語プログラムを単体試験させる、ためのプログラムである。
図1は、本発明の実施形態に係るソフトウェア試験装置の機能構成を示す概略ブロック図である。図1に示すように、ソフトウェア試験装置100は、通信部110と、表示部120と、操作入力部130と、記憶部170と、制御部180とを備える。制御部180は、変換部181と、試験実行部182とを備える。
但し、ソフトウェア試験装置100が試験対象とするプログラミング言語はこれらに限らず、PLCで実行されるプログラムの記述言語であればよい。
(1) 網羅的な試験を実施することができない。
一般的なプログラムの開発では、プログラムを含むシステムの試験は、単体試験、組み合わせ試験、ハードウェア結合試験、システム試験というように、小さな単位から順に行われる。
これに対してPLC言語の場合、一般的には単体試験及び組み合わせ試験を行う環境が整っていない。このため、PLCプログラムの試験では、はじめから実際のPLCを用いたシステム試験が行われることが多い。この場合、単体試験等については、システム試験の中でシステムの一部の機能を制限して仮想的に行われる程度である。
単体試験におけるホワイトボックス試験が行われないことで、プログラム中に試験が行われていないパスが残り、このパスにバグが残存することが考えられる。この点で、PLCプログラムの場合、複雑なプログラムの試験を十分に実行することができない。
C言語など汎用言語のプログラムをパソコン(Personal Computer;PC)など一般的なコンピュータで試験する場合、例えばステップ実行、変数値のモニタリング、変数値を上書きしてのプログラムの実行などいろいろな手法を用いることができる。ここでいう汎用言語は、特定の用途に特化されていない言語である。また、ここでいう一般的なコンピュータは、特定の用途に特化されていないコンピュータである。
このように、PLCプログラムを試験する際に使用可能な手法が限定される点で、複雑なプログラムの試験を十分に実行することができない。
さらにソフトウェア試験装置100は、後述するようにデバッグの精度を高めるための機能を提供する。
表示部120は、液晶パネル又はLED(Light Emitting Diode)パネル等の表示画面を備えて各種画像を表示する。
操作入力部130は、例えばキーボード及びマウス等の入力デバイスを備えてユーザ操作を受ける。
記憶部170は、ソフトウェア試験装置100が備える記憶デバイスを用いて構成される。
変換部181は、STのソースコードをC言語のソースコードに変換する。
試験実行部182は、変換部181の変換によって得られたC言語のソースコードに対する試験を行う。C言語のソースコードとSTのソースコードとは構文木が共通しており、C言語のソースコードの各部はSTのソースコードの各部と対応付けられる。従って、C言語のソースコード上でバグの位置を特定できればSTのソースコード上でのバグの位置を特定することができる。
パーサジェネレータ191は、記憶部170が記憶している文法定義を参照してパーサ192を生成する。記憶部170が記憶している文法定義はBNF(Backus Naur Form)で記載されていてもよいが、特定の表現形式のものに限定されない。
パーサ192が構文木を生成すると、C言語生成器193が、この構文木を用いてC言語のソースコードを生成する。
試験実行部182は、C言語生成器193が生成したC言語のソースコードに対して試験を行い、試験結果をレポートとして出力する。
変換部181が、PLCプログラムを汎用言語プログラムに変換することで、汎用言語プログラム用の既存のテストツールを用いて効率的に試験を行うことができる。例えば、変換部181が、パソコン上でSTのソースコードをC言語のソースコードに変換することで、C言語用の既存のテストツールを用いて効率的に試験を行うことができる。
図4は、ソフトウェア試験装置100によるプログラム変換の第2例を示す図である。図4の例で、STのソースコードC21は、変換部181による変換前のソースコードであり、C言語のソースコードC22は、変換部181による変換後のソースコードである。
STのソースコードC21で、行L111及びL113の括弧及びアスタリスクで挟まれた記述(「(* ・・・ *)」はコメントとして扱われる。従って、STのソースコードC21では、行L111、L113はいずれも実行対象外である。これに対し、変換部181は、行L111を行L121から始まるIF文に変換し、行L113を行L123から始まるIF文に変換している。
かかる試験を行うために、変換部181は、STのソースコードのコメント内に「#ASSUME」の記述がある場合、この記述を(コメントではなく)実行対象として事前条件を示す記述に変換する。
また、変換部181は、ELSEの場合をRETURNにしている。RETURNは、このプログラムを終了することを示し、メインプログラムから呼び出されている場合は呼び出し元へ復帰することを示す。なお、ソースコードC22で「//」からその行末までは、コメントとして扱われ、実行対象にはならない。
図4の例の場合、変換部181は、行L113を、行L123から始まるIF−ELSE文に変換している。行L123から始まるIF−ELSE文は、事前条件のIF−ELSE文である行L121から始まるIF−ELSE文のTHENで、行L122の実行後に実行される。すなわち、行L123から始まるIF−ELSE文は、ソースコードC22の実体的部分である行L122の実行後に実行される。
また、変換部181は、行L123から始まるIF−ELSE文のELSEの場合をabort(0)にしている。ここでのabort(0)は、エラー発生によるプログラム実行中断を示す。
図5は、ソフトウェア試験装置100によるプログラム変換の第3例を示す図である。図5のSTのソースコードC31の行L111、L112、L113は、図4のSTのソースコードC21の行L111、L112、L113と同様である。
変換部181は、STのソースコードC31の行L111、L112、L113をそれぞれC言語のソースコードC32の行L131、L132、L133に変換する。行L131のassume文は、事前条件による分岐を示す。具体的には、事前条件x≧0が成立している場合のみ、行L132以下を実行する。
行L132は、図4の行L122と同様、平方根の演算を示す。
行L133のassert文は、事後条件が成立しているか否かの判定を示す。具体的には、試験実行部182は、事後条件y≧0が成立していない場合をエラーとして検出する。
これによりユーザは、PLCプログラムを作成する際に、所定の条件を満たす試験用の記述をコメントに含めておくことができる。ソフトウェア試験装置100は、PLCプログラムを汎用言語プログラムに変換しての試験で、試験用の記述を反映させて試験を行うことができる。一方、PLCがPLCプログラムを実行する実運用時には、試験用の記載をコメントとして扱い、この試験用の記載の影響を受けずに動作することができる。
そして、試験実行部182は、汎用言語プログラムへの入力が前記入力の条件を満たし、かつ、前記汎用言語プログラムの出力が前記出力の条件を満たさない場合をエラーとして検出する。
これにより、試験実行部182は、試験対象のプログラムに応じてテストケースを生成または選択する必要がない。この点で、試験実行部182は、いろいろなテストケースで試験を行うことができ、網羅率を向上させることができる。
試験実行部182が、記号実行法を用いて試験を行うようにしてもよい。変換部181がSTのソースコードからC言語のソースコードへ変換したことで、パソコン上で記号実行法を用いるための既存ツールを使用することができる。記号実行法を用いることで試験の精度を向上させることができる。
表示部120がSTのソースコードで実行箇所を示すことで、STに慣れているユーザが、実行箇所を容易に把握することができる。
このように、試験実行部182が有界モデル検査を行うことで、プログラムの不具合を自動的に検出できることが期待される。
図6は、グローバル変数リストの例を示す図である。図5の例で、グローバル変数リストは表形式のデータとして構成されており、グローバル変数の変数名、型、下限値及び上限値が格納されている。このグローバル変数リストは、グローバル変数の値の想定範囲を示す範囲情報の例に該当する。
STのソースコードをC言語のソースコードに変換する際、変換部181は、グローバル変数リストを参照して、C言語のソースコードに事前条件の記述及び事後条件の記述を設ける。
変換部181は、図6のグローバル変数を参照して、行L151及びL152の事前条件の記述と、行L154及びL155の事後条件の記述とを設ける。
このように、C言語のソースコードにグローバル変数リストに基づく事前条件が設けられていることで、試験実行部182は、試験対象のプログラムに応じてテストケースを生成または選択する必要がない。この点で、試験実行部182は、いろいろなテストケースで試験を行うことができ、カバレッジを向上させることができる。
また、C言語のソースコードに事後条件が設けられていることで、試験実行部182は、より確実にプログラムの不具合の有無を判定することができる。
図8は、ソフトウェア試験装置100によるプログラム変換の第5例を示す図である。
図8の例で、変換部181は、STのソースコードC51、C52及びC53を、C言語のソースコードC54、C55及びC56に変換している。
STのソースコードC51、C52及びC53の各々の開始時、終了時にそれぞれ事前条件、事後条件の設定がある。一方、ソースコードC51のサブルーチンコールの箇所には事前条件、事後条件は示されていない。
具体的には、変換部181は、ソースコードC55のサブルーチンコールの直前の箇所に、サブルーチンコール先の事前条件Assume2を事後条件Assert2に変換して設けている。また、変換部181は、ソースコードC55のサブルーチンコールからの復帰時の箇所に、サブルーチンコール先の事後条件Assert3を事前条件Assume3に変換して設けている。
さらに、変換部181は、サブルーチンコールをダミーコードに置き換えている。
このように、試験実行部182は、ソースコードC54、C55、C56の各々の単体試験を行うことで、プログラムのパスが比較的短くなり、カバレッジが向上することが期待される。
図9は、試験実行部182が行うモジュール化の例を示す図である。図9のソースコードC61、C62、C63は、いずれもC言語のソースコードである。
試験実行部182は、まず、C言語のソースコードC61の試験を行う。試験でソースコードC61のうち部分P11のカバレッジが低かった場合、試験実行部182は、この部分P11をモジュール化する。ソースコードC63は、部分P11をモジュール化して得られたソースコードである。また、試験実行部182は、ソースコードC62については部分P11をダミーコードで置き換えている。
また、試験実行部182は、ソースコードC63に設けた事前条件Assume2を事後条件Assert2に変換し、ソースコードC62のうちモジュール化部分をダミーコードで置き換えた箇所の直前に設ける。また、試験実行部182は、ソースコードC63に設けた事後条件Assert3を事前条件Assume3に変換し、ソースコードC62のうちモジュール化部分をダミーコードで置き換えた箇所の直後に設ける。
これにより、試験実行部182は、ソースコードC62、C63それぞれを単体で試験することができ、カバレッジの向上が期待される。
図10は、ソフトウェア試験システムの機能構成例を示す概略ブロック図である。図10に示すように、ソフトウェア試験システム1は、ソフトウェア試験装置100と、制御システムシミュレーション装置200とを備える。制御システムシミュレーション装置200は、第二通信部210と、第二表示部220と、第二操作入力部230と、第二記憶部270と、第二制御部280とを備える。第二制御部280は、PLC模擬部281と、制御対象模擬部282とを備える。
制御システムシミュレーション装置200は、PLC及び制御対象を含むシステム全体の試験をシミュレーションで行う。制御システムシミュレーション装置200は、例えばパソコンなど汎用のコンピュータを用いて構成される。
第二表示部220は、液晶パネル又はLEDパネル等の表示画面を備えて各種画像を表示する。
第二操作入力部230は、例えばキーボード及びマウス等の入力デバイスを備えてユーザ操作を受ける。
第二記憶部270は、制御システムシミュレーション装置200が備える記憶デバイスを用いて構成される。
第二制御部280は、制御システムシミュレーション装置200の各部を制御して各種処理を実行する。第二制御部280は、制御システムシミュレーション装置200が備えるCPUが第二記憶部270からプログラムを読み出して実行することで構成される。
制御対象模擬部282は、制御対象の動作を模擬する。具体的には、制御対象模擬部282は、第二記憶部270が記憶している制御対象のモデルを用いて制御対象の動作を模擬する。
また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
100 ソフトウェア試験装置
110 通信部
120 表示部
130 操作入力部
170 記憶部
180 制御部
181 変換部
191 パーサジェネレータ
192 パーサ
193 C言語生成器
182 試験実行部
200 制御システムシミュレーション装置
210 第二通信部
220 第二表示部
230 第二操作入力部
270 第二記憶部
280 第二制御部
281 PLC模擬部
282 制御対象模擬部
Claims (21)
- プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換し、前記PLCプログラムにおけるコメントに含まれる記述のうち所定の条件を満たす記述を、前記汎用言語プログラムで実行対象となる記述に変換する変換部と、
前記汎用言語プログラムに対する試験を行う試験実行部と、
を備えるソフトウェア試験装置。 - 前記変換部は、前記PLCプログラムにおけるコメントに含まれる記述のうち所定の条件を満たす記述を、前記汎用言語プログラムで試験時に実行される記述に変換する、
請求項1に記載のソフトウェア試験装置。 - 前記変換部は、前記PLCプログラムにおけるコメントに含まれる第1文字列を、前記汎用言語プログラムを実行する前提条件を示す記述に変換し、前記PLCプログラムにおけるコメントに含まれる第2文字列を前記汎用言語プログラムの実行後に満たされるべき条件を示す記述に変換し、
前記試験実行部は、前記汎用言語プログラムへの入力が前記入力の条件を満たし、かつ、前記汎用言語プログラムの出力が前記出力の条件を満たさない場合をエラーとして検出する、
請求項1または請求項2に記載のソフトウェア試験装置。 - 前記PLCプログラムに含まれるグローバル変数の値の想定範囲を示す範囲情報を取得する範囲情報取得部を備え、
前記試験実行部は、前記グローバル変数の値が前記想定範囲外となる場合をエラーとして検出する、
請求項1から3のいずれか一項に記載のソフトウェア試験装置。 - プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換する変換部と、
前記PLCプログラムに含まれるグローバル変数の値の想定範囲を示す範囲情報を取得する範囲情報取得部と、
前記汎用言語プログラムに対する試験を行い、前記グローバル変数の値が前記想定範囲外となる場合をエラーとして検出する試験実行部と、
を備えるソフトウェア試験装置。 - 前記試験実行部は、記号実行法を用いて前記試験を行う、
請求項1から5のいずれか一項に記載のソフトウェア試験装置。 - 前記試験実行部は、前記PLCプログラムにおけるパスのうち指定されたステップ数以下のパスの各々について、当該パスを実行した場合の変数値を前記汎用言語プログラムを用いて算出し、いずれかのパスにおける変数値が前記PLCプログラムで示された条件を満たさない場合をエラーとして検出する、
請求項1から5のいずれか一項に記載のソフトウェア試験装置。 - プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換する変換部と、
前記汎用言語プログラムに対する試験を行い、前記PLCプログラムにおけるパスのうち指定されたステップ数以下のパスの各々について、当該パスを実行した場合の変数値を前記汎用言語プログラムを用いて算出し、いずれかのパスにおける変数値が前記PLCプログラムで示された条件を満たさない場合をエラーとして検出する試験実行部と、
を備えるソフトウェア試験装置。 - 前記PLCプログラムを表示し、前記汎用言語プログラムにおける実行箇所を前記PLCプログラムの表示上に示す表示部を備える
請求項1から8のいずれか一項に記載のソフトウェア試験装置。 - 前記変換部は、前記PLCプログラムにおけるサブルーチンコールを前記汎用言語プログラムにおける記述に変換する場合、前記PLCプログラムで呼び出されるサブルーチンに示されている入口条件を、前記サブルーチンコール時の条件としてサブルーチン呼出側の汎用言語プログラムに含め、前記PLCプログラムで呼び出されるサブルーチンに示されている出口条件を、前記サブルーチンコールからの復帰時の条件としてサブルーチン呼出側の汎用言語プログラムに含め、
前記試験実行部は、前記サブルーチンコール時の条件及び前記サブルーチンコールからの復帰時の条件を用いて前記サブルーチン呼出側の汎用言語プログラムを単体試験する、
請求項1から9のいずれか一項に記載のソフトウェア試験装置。 - プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換し、前記PLCプログラムにおけるサブルーチンコールを前記汎用言語プログラムにおける記述に変換する場合、前記PLCプログラムで呼び出されるサブルーチンに示されている入口条件を、前記サブルーチンコール時の条件としてサブルーチン呼出側の汎用言語プログラムに含め、前記PLCプログラムで呼び出されるサブルーチンに示されている出口条件を、前記サブルーチンコールからの復帰時の条件としてサブルーチン呼出側の汎用言語プログラムに含める変換部と、
前記汎用言語プログラムに対する試験を行い、前記サブルーチンコール時の条件及び前記サブルーチンコールからの復帰時の条件を用いて前記サブルーチン呼出側の汎用言語プログラムを単体試験する試験実行部と、
を備えるソフトウェア試験装置。 - 前記試験実行部が試験を実行した際に、試験で実行されなかったパスを切り出し、切り出したパスに対する試験を行う、
請求項1から11のいずれか一項に記載のソフトウェア試験装置。 - 請求項1から12のいずれか一項に記載のソフトウェア試験装置と、
前記ソフトウェア試験装置が前記PLCプログラムから変換した汎用言語プログラムを実行するPLC模擬部と、
PLCによる制御対象を模擬する制御対象模擬部と、
を備えるソフトウェア試験システム。 - プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換し、前記PLCプログラムにおけるコメントに含まれる記述のうち所定の条件を満たす記述を、前記汎用言語プログラムで実行対象となる記述に変換し、
前記汎用言語プログラムに対する試験を行う、
ソフトウェア試験方法。 - プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換し、
前記PLCプログラムに含まれるグローバル変数の値の想定範囲を示す範囲情報を取得し、
前記汎用言語プログラムに対する試験を行い、前記グローバル変数の値が前記想定範囲外となる場合をエラーとして検出する、
ソフトウェア試験方法。 - プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換し、
前記汎用言語プログラムに対する試験を行い、前記PLCプログラムにおけるパスのうち指定されたステップ数以下のパスの各々について、当該パスを実行した場合の変数値を前記汎用言語プログラムを用いて算出し、いずれかのパスにおける変数値が前記PLCプログラムで示された条件を満たさない場合をエラーとして検出する、
ソフトウェア試験方法。 - プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換し、前記PLCプログラムにおけるサブルーチンコールを前記汎用言語プログラムにおける記述に変換する場合、前記PLCプログラムで呼び出されるサブルーチンに示されている入口条件を、前記サブルーチンコール時の条件としてサブルーチン呼出側の汎用言語プログラムに含め、前記PLCプログラムで呼び出されるサブルーチンに示されている出口条件を、前記サブルーチンコールからの復帰時の条件としてサブルーチン呼出側の汎用言語プログラムに含め、
前記汎用言語プログラムに対する試験を行い、前記サブルーチンコール時の条件及び前記サブルーチンコールからの復帰時の条件を用いて前記サブルーチン呼出側の汎用言語プログラムを単体試験する、
ソフトウェア試験方法。 - コンピュータに、
プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換させ、前記PLCプログラムにおけるコメントに含まれる記述のうち所定の条件を満たす記述を、前記汎用言語プログラムで実行対象となる記述に変換させ、
前記汎用言語プログラムに対する試験を行わせる、
ためのプログラム。 - コンピュータに、
プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換させ、
前記PLCプログラムに含まれるグローバル変数の値の想定範囲を示す範囲情報を取得させ、
前記汎用言語プログラムに対する試験を行い、前記グローバル変数の値が前記想定範囲外となる場合をエラーとして検出させる、
ためのプログラム。 - コンピュータに、
プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換させ、
前記汎用言語プログラムに対する試験を行わせ、前記PLCプログラムにおけるパスのうち指定されたステップ数以下のパスの各々について、当該パスを実行した場合の変数値を前記汎用言語プログラムを用いて算出させ、いずれかのパスにおける変数値が前記PLCプログラムで示された条件を満たさない場合をエラーとして検出させる、
ためのプログラム。 - コンピュータに、
プログラマブルロジックコントローラを動作させるPLCプログラムを汎用プログラミング言語で記述された汎用言語プログラムに変換させ、前記PLCプログラムにおけるサブルーチンコールを前記汎用言語プログラムにおける記述に変換する場合、前記PLCプログラムで呼び出されるサブルーチンに示されている入口条件を、前記サブルーチンコール時の条件としてサブルーチン呼出側の汎用言語プログラムに含めさせ、前記PLCプログラムで呼び出されるサブルーチンに示されている出口条件を、前記サブルーチンコールからの復帰時の条件としてサブルーチン呼出側の汎用言語プログラムに含めさせ、
前記汎用言語プログラムに対する試験を行わせ、前記サブルーチンコール時の条件及び前記サブルーチンコールからの復帰時の条件を用いて前記サブルーチン呼出側の汎用言語プログラムを単体試験させる、
ためのプログラム。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017027927A JP6827340B2 (ja) | 2017-02-17 | 2017-02-17 | ソフトウェア試験装置、ソフトウェア試験システム、ソフトウェア試験方法およびプログラム |
US16/481,485 US10915438B2 (en) | 2017-02-17 | 2018-02-16 | Software-testing device, software-testing system, software-testing method, and program |
PCT/JP2018/005583 WO2018151277A1 (ja) | 2017-02-17 | 2018-02-16 | ソフトウェア試験装置、ソフトウェア試験システム、ソフトウェア試験方法およびプログラム |
SG11201906881QA SG11201906881QA (en) | 2017-02-17 | 2018-02-16 | Software-testing device, software-testing system, software-testing method, and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017027927A JP6827340B2 (ja) | 2017-02-17 | 2017-02-17 | ソフトウェア試験装置、ソフトウェア試験システム、ソフトウェア試験方法およびプログラム |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2018133034A JP2018133034A (ja) | 2018-08-23 |
JP2018133034A5 JP2018133034A5 (ja) | 2019-12-26 |
JP6827340B2 true JP6827340B2 (ja) | 2021-02-10 |
Family
ID=63170298
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017027927A Active JP6827340B2 (ja) | 2017-02-17 | 2017-02-17 | ソフトウェア試験装置、ソフトウェア試験システム、ソフトウェア試験方法およびプログラム |
Country Status (4)
Country | Link |
---|---|
US (1) | US10915438B2 (ja) |
JP (1) | JP6827340B2 (ja) |
SG (1) | SG11201906881QA (ja) |
WO (1) | WO2018151277A1 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3715975B1 (en) * | 2019-03-28 | 2023-03-01 | Mitsubishi Electric R&D Centre Europe B.V. | Method and apparatus for analysing a ladder program |
CN110515840A (zh) * | 2019-08-05 | 2019-11-29 | 华东师范大学 | 一种面向plc程序的自动化测试用例生成方法 |
CN110532177A (zh) * | 2019-08-05 | 2019-12-03 | 华东师范大学 | 一种面向plc程序的自动化测试用例生成系统 |
JP7199754B2 (ja) * | 2019-12-05 | 2023-01-06 | 株式会社アクセル | 設計支援装置、設計支援方法、設計支援プログラム及び設計支援システム |
CN111104205A (zh) * | 2019-12-24 | 2020-05-05 | 浙江中控技术股份有限公司 | 一种st语言的解释执行方法及系统 |
US20240028333A1 (en) | 2020-12-21 | 2024-01-25 | Fanuc Corporation | Ladder program analysis device |
EP4047482A1 (en) | 2021-02-19 | 2022-08-24 | Mitsubishi Electric R&D Centre Europe B.V. | Improved checking of correctness of a plc program |
CN114610622B (zh) * | 2022-03-14 | 2024-05-28 | 浙江中控技术股份有限公司 | 一种系统功能块自动化测试分层设计方法及相关装置 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5613115A (en) * | 1991-12-09 | 1997-03-18 | Total Control Products, Inc. | Method for using PLC programming information to generate secondary functions such as diagnostics and operator interface |
DE69324388T2 (de) * | 1992-01-23 | 1999-09-09 | Mitsubishi Denki K.K. | Speicherprogrammierbare Steuerung |
JP3018912B2 (ja) | 1994-08-12 | 2000-03-13 | 横河電機株式会社 | 検証支援システム |
TW421761B (en) | 1994-04-12 | 2001-02-11 | Yokogawa Electric Corp | Verification support system |
JP2002099312A (ja) * | 2000-09-22 | 2002-04-05 | Mitsubishi Electric Corp | プログラマブルコントローラおよび制御プログラム開発支援装置 |
US6857110B1 (en) * | 2001-01-30 | 2005-02-15 | Stretch, Inc. | Design methodology for merging programmable logic into a custom IC |
US7003733B2 (en) * | 2001-01-30 | 2006-02-21 | Duemler David W | Programmable logic controller programming system |
US7257620B2 (en) * | 2001-09-24 | 2007-08-14 | Siemens Energy & Automation, Inc. | Method for providing engineering tool services |
US20030149608A1 (en) * | 2002-02-06 | 2003-08-07 | Kall Jonathan J. | Suite of configurable supply chain infrastructure modules for deploying collaborative e-manufacturing solutions |
CN1567222A (zh) * | 2003-07-09 | 2005-01-19 | 松下电器产业株式会社 | 程序生成装置 |
WO2005069125A2 (en) * | 2003-12-15 | 2005-07-28 | Evolveware Information Technology (India) Pvt. Ltd. | An apparatus for migration and conversion of software code from any source platform to any target platform |
JP3994090B2 (ja) * | 2004-01-29 | 2007-10-17 | ファナック株式会社 | 数値制御装置 |
JP2007133622A (ja) | 2005-11-10 | 2007-05-31 | Hitachi Ltd | エンジニアリングツール及びプログラム変換方法 |
KR100877572B1 (ko) * | 2006-12-01 | 2009-01-08 | 윤성재 | 공정 시퀀스 변환 장치와 방법 및 이를 구현할 수 있는컴퓨터로 읽을 수 있는 기록 매체 |
US20090083719A1 (en) * | 2007-09-20 | 2009-03-26 | Delta Electronics, Inc. | Method of compiling machine code program for programmable logic controller |
US8549486B2 (en) * | 2008-04-21 | 2013-10-01 | Microsoft Corporation | Active property checking |
US20100313128A1 (en) * | 2009-06-03 | 2010-12-09 | Siemens Energy & Automation, Inc. | System and method for free form comments for a programmable logic controller |
JP2012103791A (ja) * | 2010-11-08 | 2012-05-31 | Mitsubishi Electric Corp | プログラム試験装置、プログラム試験方法およびプログラム試験用プログラム |
JP4905597B1 (ja) * | 2011-03-15 | 2012-03-28 | オムロン株式会社 | コントローラサポート装置、その装置において実行されるためのコントローラサポートプログラム、およびそのプログラムを格納する記録媒体 |
JP5962088B2 (ja) * | 2012-03-15 | 2016-08-03 | オムロン株式会社 | Plcシミュレーションシステム、plcシミュレータ、制御プログラム、および記録媒体 |
WO2013161057A1 (ja) | 2012-04-27 | 2013-10-31 | 株式会社日立製作所 | ソースコード検査方法及び装置 |
WO2014008491A2 (en) * | 2012-07-05 | 2014-01-09 | Renewable Process Technologies Llc | System and related method to facilitate process control |
EP2898436A1 (en) * | 2012-09-18 | 2015-07-29 | Siemens Aktiengesellschaft | Multiple programmable logic controller simulator |
JP6245006B2 (ja) * | 2014-03-13 | 2017-12-13 | 富士通株式会社 | テストケース生成装置、方法、及びプログラム |
US20160283353A1 (en) * | 2015-03-23 | 2016-09-29 | Tryon Solutions, Inc. | Automated software testing |
WO2016174743A1 (ja) * | 2015-04-28 | 2016-11-03 | 株式会社日立製作所 | ソースコード等価性検証装置、および、ソースコード等価性検証方法 |
KR101627769B1 (ko) * | 2015-12-17 | 2016-06-08 | 주식회사 유디엠텍 | Plc 제어 프로그램의 공용형식 변환장치 및 방법 |
DE102016105844A1 (de) * | 2016-03-31 | 2017-10-05 | Dspace Digital Signal Processing And Control Engineering Gmbh | Verfahren zum Testen eines Steuerprogramms eines Steuergeräts in einer Simulationsumgebung auf einem Rechner |
-
2017
- 2017-02-17 JP JP2017027927A patent/JP6827340B2/ja active Active
-
2018
- 2018-02-16 SG SG11201906881QA patent/SG11201906881QA/en unknown
- 2018-02-16 US US16/481,485 patent/US10915438B2/en active Active
- 2018-02-16 WO PCT/JP2018/005583 patent/WO2018151277A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
SG11201906881QA (en) | 2019-09-27 |
US10915438B2 (en) | 2021-02-09 |
JP2018133034A (ja) | 2018-08-23 |
US20190391910A1 (en) | 2019-12-26 |
WO2018151277A1 (ja) | 2018-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6827340B2 (ja) | ソフトウェア試験装置、ソフトウェア試験システム、ソフトウェア試験方法およびプログラム | |
CN101714119B (zh) | 基于二进制程序的测试数据生成器和方法 | |
JP2019516167A5 (ja) | ||
US20110145653A1 (en) | Method and system for testing complex machine control software | |
KR101722856B1 (ko) | 프로그래밍 언어 기반의 plc 자동 테스트 장치 | |
US12085911B2 (en) | Method, computer program and apparatus for analysing a programmable logic controller program | |
JP2017138978A (ja) | カバレッジに基づく設計モデル用自動テストケース拡張のためのシステムおよび方法 | |
CN106775913B (zh) | 一种目标代码控制流图生成方法 | |
CN114911711A (zh) | 一种代码缺陷分析方法、装置、电子设备及存储介质 | |
US20230030253A1 (en) | Method for analyzing a programmable logic controller program | |
CN117632721A (zh) | 测试用例的生成方法、装置及电子设备 | |
CN110442520B (zh) | 一种基于plc编程语言的交叉调试系统及方法 | |
CN108132799B (zh) | 过程间静态程序分析信息提取方法、装置及设备 | |
EP2820547B1 (en) | Debugging method and computer program product | |
JP7531728B2 (ja) | Plcプログラムの正しさをチェックするコンピュータ実施方法 | |
CN109271237A (zh) | 仿真控制方法和装置 | |
CN110647467B (zh) | 基于单步异常的目标码覆盖率测试方法、系统及介质 | |
CN109977019B (zh) | 一种基于增量采样的编译器优化序列测试方法 | |
Coleman et al. | Visual-trace simulation of concurrent finite-state machines for validation and model-checking of complex behaviour | |
JP2005316710A (ja) | ソフトウェア試験支援装置 | |
CN110659215A (zh) | 一种开放式工业app快速开发及测试验证方法 | |
CN117520191B (zh) | 一种基于程序路径的测试完备性检查方法、设备及存储介质 | |
Sethi et al. | Autonlu: Detecting, root-causing, and fixing nlu model errors | |
Krapfenbauer et al. | Improving component testing of industrial automation software | |
Sampaio et al. | Ladder programs validation through model-code traceability |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20170220 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20180323 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20191115 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20191115 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20201006 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20201207 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20210105 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210119 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6827340 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |