JP6765554B2 - ソフトウェア試験装置、ソフトウェア試験方法、および、ソフトウェア試験プログラム - Google Patents

ソフトウェア試験装置、ソフトウェア試験方法、および、ソフトウェア試験プログラム Download PDF

Info

Publication number
JP6765554B2
JP6765554B2 JP2019571278A JP2019571278A JP6765554B2 JP 6765554 B2 JP6765554 B2 JP 6765554B2 JP 2019571278 A JP2019571278 A JP 2019571278A JP 2019571278 A JP2019571278 A JP 2019571278A JP 6765554 B2 JP6765554 B2 JP 6765554B2
Authority
JP
Japan
Prior art keywords
software
verification
test
detection rule
generation unit
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
Application number
JP2019571278A
Other languages
English (en)
Other versions
JP2020524862A (ja
Inventor
綱人 中井
綱人 中井
孝一 清水
孝一 清水
信博 小林
信博 小林
ボワイエ、ブノワ
モントレ、ダヴィド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JP2020524862A publication Critical patent/JP2020524862A/ja
Application granted granted Critical
Publication of JP6765554B2 publication Critical patent/JP6765554B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management

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)

Description

本発明は、ソフトウェア試験装置、ソフトウェア試験方法、および、ソフトウェア試験プログラムに関する。
近年、制御機器がネットワークに接続されるケースが増えている。また、IoT(Internet of Things)機器の普及が進んでいる。そのため、制御機器およびIoT機器が、サイバー攻撃の標的になるケースが増加している。
一般的に、制御機器およびIoT機器では、通信データが固定的である。そのため、制御機器およびIoT機器では、正常な通信データを定義した検知ルールを予め設定しておくことが比較的容易である。そこで、検知ルールを予め設定しておくことで、サイバー攻撃を検知するホワイトリスト型攻撃検知方式が注目されている。ホワイトリスト型攻撃検知方式においては、検知ルールを予め設定しておき、受信した通信データが当該検知ルールから逸脱したときに、当該通信データが異常であると判定することで、サイバー攻撃を検知する。
ホワイトリスト型攻撃検知方式を使用した製品の性能および品質は、適用可能な検知ルールの種別の多さに大きく依存する。高信頼な攻撃検知ソフトウェアを開発する際には、実際のシステムに攻撃検知ソフトウェアを導入する前に、システムごとに異なる検知ルールに応じた攻撃検知ソフトウェアの実装試験が必要である。そのため、実装試験の際に使用するための各検知ルールに応じた高信頼なテストデータの作成が必要となる。
従来技術においては、テストデータを手動で作成していた。しかしながら、検知ルールに応じたテストデータの生成を手動で行うため、テストデータに関する漏れの発生または誤りの混入の可能性がある。したがって、漏れおよび誤りの無い高信頼なテストデータの生成が課題となる。
特許文献1では、テストデータを手動で作成するのではなく、自動的に作成することを提案している。特許文献1では、UML(Unified Modeling Language)クラス図およびアクティビティ図などの設計モデルからテストデータを自動生成する。
特許文献2では、網羅的なテストデータを自動的に作成することを提案している。特許文献2では、列車走行に関する実運用上のルールからテストデータを自動生成している。
特許文献3では、安全重視ソフトウェアのモデルベース設計において、テストデータを自動的に生成することを提案している。特許文献3では、モデル検査または他の形式解析技術を用いて、仕様モデルからテストデータを自動生成している。
特開2010−267023号公報 特開2014−046800号公報 特開2017−033562号公報
特許文献1では、設計モデルからテストデータを自動生成することを提案している。しかしながら、特許文献1では、テストデータに向けた設計モデルを作成する必要があるという課題があった。
特許文献2では、網羅的なテストデータを自動的に作成することを提案している。しかしながら、特許文献2では、テストデータの期待値を生成していないため、テスト結果の判定は、自動的に行うことができず、人手で行う必要があるという課題があった。
特許文献3では、仕様モデルから形式解析技術を用いてテストデータを自動生成することを提案している。しかしながら、特許文献3では、テストデータに向けた仕様モデルを作成する必要があるという課題があった。
本発明は、実装試験の際に使用するための検知ルールに応じたテストデータを生成する必要なしに、簡単な入力を行うだけで、検証対象のソフトウェアの検証結果を自動的に得ることができる、ソフトウェア試験装置、ソフトウェア試験方法、および、ソフトウェア試験プログラムを得ることを目的としている。
本発明は、検証対象ソフトウェアが導入される機器が通信を行う正常な通信データを定義する検知ルールを用いて、検証対象ソフトウェアが出力すべき実行結果の期待値を生成するための検証用ソフトウェアを生成する検証用ソフトウェア生成部と、検証用ソフトウェアにテストパターンを入力して、検証用ソフトウェアを実行させて、実行結果の期待値をテストケースとして生成するテストケース生成部と、テストパターンと同一のテストパターンを検証対象ソフトウェアに入力して、検証対象ソフトウェアを実行させて、得られた実行結果とテストケースの実行結果の期待値とを比較することで、検証対象ソフトウェアの合否を判定する検証実行部とを備えた、ソフトウェア試験装置である。
本発明に係るソフトウェア試験装置によれば、簡単な入力を行うだけで、検証対象のソフトウェアの検証結果を自動的に得ることができる。
本発明の実施の形態1に係るソフトウェア試験装置の全体構成例を示したブロック図である。 本発明の実施の形態1に係るソフトウェア試験装置のハードウェア構成例を示したブロック図である。 本発明の実施の形態1に係るソフトウェア試験装置の動作例を示したフローチャートである。 本発明の実施の形態1に係るソフトウェア試験装置における検証用ソフトウェア生成部の動作例を示したフローチャートである。 本発明の実施の形態1に係る検知ルールの例を示した図である。 本発明の実施の形態1に係る試験装置で生成されるルールリスト木の例を示した図である。 本発明の実施の形態1に係る試験装置で生成される決定木の例を示した図である。 本発明の実施の形態1に係る試験装置で生成される検証用ソフトウェアの例を示した図である。 本発明の実施の形態2に係る試験装置における検証用ソフトウェア生成部の動作例を示したフローチャートである。 本発明の実施の形態3に係る試験装置の全体構成例を示したブロック図である。 本発明の実施の形態3に係る試験装置の動作例を示したフローチャートである。
以下、本発明に係る試験装置の実施の形態について、図面を用いて説明する。
実施の形態1.
図1は、本実施の形態1に係るソフトウェア試験装置100の全体構成例を示す。ソフトウェア試験装置100は、図1に示すように、検証用ソフトウェア生成部102と、テストケース生成部104と、検証実行部107とを備えて構成されている。ソフトウェア試験装置100は、検証対象ソフトウェア106についての検証を行って合否判定する装置である。ここでは、検証対象ソフトウェア106として、例えば、サイバー攻撃等による異常な通信データを検知する攻撃検知ソフトウェアを例に挙げて説明する。検証対象ソフトウェア106は、制御機器およびIoT機器などの機器に導入されて、当該機器が通信を行う通信データが正か否かを判定するためのソフトウェアである。
検証実行部107は、テストケース105と検証対象ソフトウェア106とを入力にして、検証結果108を出力する。
検証用ソフトウェア生成部102は、検知ルール101を入力にして、検証用ソフトウェア103を生成する。検証用ソフトウェア103は、定義した通信データのみを正とするテストオラクルとして使用されるソフトウェアである。
テストケース生成部104は、テストパターンを検証用ソフトウェア103に入力して実行させることで、テストケース105を生成する。
検証対象ソフトウェア106の試験を行う際には、検証対象ソフトウェア106にテストパターンを入力したときに、その実行結果が正しいか否かを判定するための判定基準として、実行結果の期待値が必要である。テストケース105は、実行結果の期待値となるデータである。従って、検証対象ソフトウェア106にテストパターンを入力したときに、その実行結果がテストケース105の実行結果と一致すれば、検証対象ソフトウェア106が正しく動作していると判定することができる。
なお、ソフトウェア試験装置100の各部の詳細については後述する。
図2は、図1に示したソフトウェア試験装置100のハードウェア構成例を示す。図2に示すように、本実施の形態1に係るソフトウェア試験装置100は、コンピュータ200から構成されている。
コンピュータ200は、ハードウェアとして、プロセッサ201、補助記憶装置202、メモリ203、表示装置204、および、操作装置205を備えて構成されている。
補助記憶装置202には、図1に示す検証用ソフトウェア生成部102、テストケース生成部104、および、検証実行部107の各部の機能を実現するプログラムが記憶されている。また、補助記憶装置202には、ソフトウェア試験装置100に入力される検知ルール101および検証対象ソフトウェア106が記憶されている。さらに、補助記憶装置202には、ソフトウェア試験装置100の各部から出力される検証用ソフトウェア103、テストケース105、および、検証結果108が記憶されている。
このように、図1に示す検証用ソフトウェア生成部102、テストケース生成部104、および、検証実行部107の各部の機能は、プログラムにより実現される。検証用ソフトウェア生成部102、テストケース生成部104、および、検証実行部107の各部の機能を実現するプログラムは、メモリ203にロードされ、プロセッサ201により実行される。
図2では、プロセッサ201が、検証用ソフトウェア生成部102、テストケース生成部104、および、検証実行部107の各部の機能を実現するプログラムを実行している状態を模式的に表している。
表示装置204は、操作装置205の補助を行うとともに、検証結果108のデータを表示する。
操作装置205は、検知ルール101、検証対象ソフトウェア106などの各データのデータ入力操作を実施するのに用いられる。
次に、図1に示す検証用ソフトウェア生成部102、テストケース生成部104、および、検証実行部107の詳細について説明する。
検証用ソフトウェア生成部102は、正常な通信データを定義した検知ルール101に基づいて、定義した通信データのみを正として判定する検証用ソフトウェア103を生成する。
テストケース生成部104は、検証用ソフトウェア103に、境界値または確率的な入力による任意のテストパターンを入力し、検証用ソフトウェア103を実行させて、実行結果を得る。テストケース生成部104は、検証用ソフトウェア103に入力したテストパターンと実行結果とのペアを、テストケース105として生成する。テストケース105に含まれる実行結果は、検証対象ソフトウェア106に同じテストパターンを入力したときに得られる実行結果の期待値となる。そのため、以下では、テストケース105内の実行結果を、「実行結果の期待値」または「期待値」と呼ぶこととする。
検証実行部107は、検証用ソフトウェア103に入力したテストパターンと同一のテストパターンを検証対象ソフトウェア106に入力し、その実行結果をテストケース105内の期待値と比較し、比較結果を検証結果108として出力する。
次に、図3を用いて、ソフトウェア試験装置100の動作例を説明する。但し、図3は、ソフトウェア試験装置100の動作フローの一例S1000を示しており、ソフトウェア試験装置100の動作フローは必ずしも図3の通りでなくてもよい。
図3において、まず、ステップS1001で、ソフトウェア試験装置100に検知ルール101を入力する。
次に、ステップS1002において、検証用ソフトウェア生成部102が、ステップS1001で入力した検知ルールから、検証用ソフトウェア103を生成する。検証用ソフトウェア生成動作の詳細な処理フローは後述する。
次に、ステップS1003において、テストケース生成部104が、ステップS1002で生成した検証用ソフトウェア103に、テストパターンを入力する。
次に、ステップS1004において、テストケース生成部104が、検証用ソフトウェア103を実行させ、実行結果とステップS1003で入力したテストパターンとの組を、テストケース105として生成する。テストケース105に含まれる実行結果は、上述したように、「実行結果の期待値」として用いられる。
次に、ステップS1005において、テストケース生成部104が、ステップS1004で全てのテストケース105を生成したか否かを判定する。ステップS1004で全てのテストケース105を生成したと判定した場合、ステップS1006へ進む。一方、全てのテストケース105の生成が途中の場合には、ステップS1003に戻る。全てのテストケース105の生成が完了するまで、ステップS1003からステップS1005までの処理を繰り返す。
ステップS1006において、検証実行部107が、ステップS1003からステップS1005までの処理で生成したテストケース105内のテストパターンを、検証対象ソフトウェア106に入力する。
ステップS1007において、検証実行部107が、検証対象ソフトウェア106を実行させて得られた実行結果と、テストケース105内の実行結果の期待値とを比較する。検証対象ソフトウェア106の実行結果とテストケース105内の実行結果の期待値とが一致していれば、比較結果は「一致」となり、一致していなければ、比較結果は「不一致」として出力される。
ステップS1008において、検証実行部107が、ステップS1007で全てのテストケース105についての検証を実行したか否かを判定する。全てのテストケース105についての検証を実行したと判定した場合、ステップS1009へ進む。一方、検証の実行が途中の場合には、ステップS1006に戻る。全てのテストケース105の検証の実行が完了するまで、ステップS1006からステップS1008の処理を繰り返す。
ステップS1009において、検証実行部107は、全ての比較結果を、検証結果108として出力し、図3の動作フローの処理を終了する。
次に、図4を用いて、図3に示すステップS1002の「検証用ソフトウェア生成」の動作の詳細な処理フローを説明する。
図4において、ステップS2001において、検証用ソフトウェア生成部102に検知ルール101を入力する。検知ルール101の例を図5に示す。図5に示す検知ルール101は、正常な通信データの定義項目として、送信元情報、送信先情報、データ長、ペイロードなどの情報を含んでいる。図5の例では、検知ルール101が、ルール1からルールNまでのN個の検知ルールを含んでいる。検証用ソフトウェア103および検証対象ソフトウェア106においては、検知ルール101に含まれるN個の通信データが正となり、それ以外は異常データと判定される。
ステップS2002において、検証用ソフトウェア生成部102は、ステップS2001で入力された検知ルール101を、検知ルール解析することにより、ルールリスト木400を作成する。ルールリスト木の例を図6に示す。図6に示すルールリスト木400は、定義項目が葉、各ルールを木として、ルールリストを表している。
ステップS2003において、検証用ソフトウェア生成部102は、ステップS2002で生成されたルールリスト木400から、全ての木の定義項目を共通な項目ごとに結合する。
ステップS2004において、検証用ソフトウェア生成部102は、決定木500を構築する。決定木500の例を図7に示す。図7に示す決定木500は、ステップS2003で定義項目を結合されたルールリスト木400を決定木構造に変換し、また、各枝に不一致の葉を追加したものである。
ステップS2005において、検証用ソフトウェア生成部102は、ステップS2004で生成した決定木500から、検証用ソフトウェア103となるプログラムを生成する。検証用ソフトウェア103となるプログラム600の例を図8に示す。
ステップS2006において、検証用ソフトウェア生成部102は、ステップS2005で生成されたプログラム600を検証用ソフトウェア103として出力し、終了する。
図8のプログラム600から構成された検証用ソフトウェア103について説明する。検証用ソフトウェア103においては、テストデータが、図5に示すルール1からルールNまでのN個の検知ルールのいずれか1つに一致すれば、当該テストデータを正と判定する。一方、テストデータが、これらのN個の検知ルールのいずれにも一致しなければ、当該テストデータは異常となり、サイバー攻撃を受けている可能性があると判定する。具体的には、テストデータの送信元情報が送信元情報1で、送信先情報が送信先情報1で、データ長がデータ長1で、ペイロードがペイロード1の場合、ルール1と一致するので、当該テストデータは正と判定できる。
このように、本実施の形態1においては、検証用ソフトウェア生成部102が、検知ルール101から、図8に示す検証用ソフトウェア103を生成する。テストケース生成部104は、検証用ソフトウェア103に、M個のテストパターンA,B,C,・・・,Mを入力し、それぞれの実行結果を、実行結果の期待値Aout、Bout,Cout,・・・,Moutとして得る。検証実行部107は、試験対象の検証対象ソフトウェア106に、テストパターンA,B,C,・・・,Mを入力し、それぞれの実行結果を、実行結果Aout’、Bout’,Cout’,・・・,Mout’として得る。検証実行部107は、実行結果の期待値Aout、Bout,Cout,・・・,Moutと実行結果Aout’、Bout’,Cout’,・・・,Mout’とをそれぞれ比較して、M個のうち、一致した個数が予め設定された閾値以上であれば、検証対象ソフトウェア106を合格とし、一致した個数が閾値未満であれば、検証対象ソフトウェア106を不合格と判定する。なお、閾値は、Mに設定してもよく、あるいは、Mより小さい値に設定してもよい。
以上のように、本実施の形態1係るソフトウェア試験装置100によれば、検知ルール101と検証対象ソフトウェア106とを入力するだけで、検証対象ソフトウェア106の試験が全自動で実行することができる。したがって、従来のように手動によりテストケースを生成することが不要であり、テスト時間の削減ができる。
本実施の形態1に係るソフトウェア試験装置100は、全自動でテストケースが生成されるため、人間の介入によるテストケースに関する漏れの発生および誤りの混入の可能性が低減できる。
本実施の形態に係るソフトウェア試験装置100は、検知ルール101からテストケース105を生成し、検証対象ソフトウェア106の検証テストを実行するため、検証対象ソフトウェア106の内容がブラックボックスで不明であっても、検証テストを行うことが可能である。
本実施の形態に係るソフトウェア試験装置100は、検証用ソフトウェア103を用いて実行結果の期待値としてのテストケース105を得ることができるので、検証対象ソフトウェア106の合否の判定結果を自動的に得ることができるので、合否の判定を人手によって行う必要がない。
実施の形態2.
図9を用いて、本発明の実施の形態2に係るソフトウェア試験装置について説明する。図9は、上述した図3に示すステップS1002の「検証用ソフトウェア生成」の動作の詳細な処理フローを示す。
なお、実施の形態2に係るソフトウェア試験装置の全体構成は、図1に示した実施の形態1に係るソフトウェア試験装置100の構成と同じである。また、実施の形態2のハードウェア構成例は、図2に示した実施の形態1のハードウェア構成と同じである。実施の形態2のソフトウェア試験装置の動作は、図3の実施の形態1と基本的に同じである。本実施の形態2において、実施の形態1と異なる点は、実施の形態1の図4の代わりに、図9の動作フローを行う点だけである。ここで生成される形式検証プロパティは、検査対象の通信データと図5の検知ルール101との一致を検証するために用いられる。形式検証プロパティには、図5の検知ルール101に定義されたN個の検知ルールが形式的に変換されたものが記述されている。例えば、図5の検知ルール101のルール1からは、「ルール1 == sender == 送信元情報1 && receiver == 送信先情報1 && length ==データ長1 && command == ペイロード1」といった形式検証プロパティが作成される。ここで、sender、 receiver、length、commandは、検査対象の通信データの内容である。
図9において、ステップS3001、ステップS3002、ステップS3003、ステップS3005、ステップS3006、ステップS3008は、それぞれ、実施の形態1の図4のステップS2001、ステップS2002、ステップS2003、ステップS2004、ステップS2005、ステップS2006と同じであるため、ここでは、その説明を省略する。すなわち、図9においては、図4に対して、ステップS3004の「形式検証プロパティ生成」のステップが追加されている。形式検証プロパティは、検証用ソフトウェア103の動作を形式的に検証するためのプロパティである。
図9において、ステップS3004において、検証用ソフトウェア生成部102は、ステップS3002で生成した図6のルールリスト木400から、検知ルール101に応じた形式検証プロパティを生成する。
ステップS3007において、検証用ソフトウェア生成部102は、ステップS3006で生成したプログラム600について、ステップS3004で生成した形式検証プロパティを用いて、図5の検知ルール101が、正しく、プログラム600に反映されているか否かを検証する。
以上のように、実施の形態2においても、実施の形態1と同様に、検知ルール101と検証対象ソフトウェア106とを入力するだけで、自動的に、検証対象ソフトウェア106の合否判定を行うことができるので、上記の実施の形態1と同様の効果が得られる。
さらに、本実施の形態2においては、検証用ソフトウェア生成部102が、検知ルール101に応じた形式検証プロパティを生成する。形式検証プロパティを用いた形式検証を行うことにより、検証用ソフトウェア103にバグが無いことが証明される。したがって、高信頼なテストケース105を生成することができる。
実施の形態3.
図10は、本発明の実施の形態3に係るソフトウェア試験装置100Aの全体構成例を示す。
ソフトウェア試験装置100Aは、図10に示すように、図1の実施の形態1の構成に対して、モデル検査部702と検知ルール生成部703とが追加されている。
モデル検査部702は、通信モデル701を入力とし、モデル検査を行う。
検知ルール生成部703は、モデル検査部702から出力されるモデル検査後の通信モデルから、検知ルール101を出力する。
なお、モデル検査部701と検知ルール生成部703との詳細については後述する。
本実施の形態3に係るソフトウェア試験装置100Aのハードウェア構成例は、図2の実施の形態1に係るソフトウェア試験装置100のハードウェア構成に対して、モデル検査部702と検知ルール生成部703との機能を加えた構成であり、モデル検査部702と検知ルール生成部703とは、検証用ソフトウェア生成部102と同様に、プログラムにより実現される。このように、本実施の形態3に係るソフトウェア試験装置100Aのハードウェア構成例は、図2の実施の形態1に係るソフトウェア試験装置100のハードウェア構成と基本的に同じであるため、ここでは、その説明を省略する。なお、通信モデル701は、補助記憶装置202に格納されるか、あるいは、メモリ203に格納される。
次に、図10に示す本実施の形態3に係るソフトウェア試験装置100Aにおける、通信モデル701、モデル検査部702、および、検知ルール生成部703の詳細を説明する。他の構成については、実施の形態1と同じであるため、ここでは、その説明を省略する。
通信モデル701は、検証対象ソフトウェア106が導入される制御機器あるいはIoT機器などの機器によって通信される通信データの設計モデルである。通信モデル701は、例えばブロック図または状態遷移図で記述され、通信機能の実装に必要な情報が含まれている。
モデル検査部702は、予め設定されたモデル検査ルールに従って、通信モデル701に誤りがないかのモデル検査を行う。例えば、モデル検査部702は、通信シーケンスにおいて、デッドロックが発生しないか等を、モデル検査により、形式検証する。
検知ルール生成部703は、モデル検査後の通信モデル701を入力とし、正常な通信データを定義した検知ルール101を生成する。検知ルール生成部703は、通信モデル701に含まれる通信機能の仕様を抽出し、抽出した通信機能を、検知ルール101の定義項目として定義する。
次に、図11を用いて、ソフトウェア試験装置100Aの動作について説明する。但し、図11は、ソフトウェア試験装置100Aの動作の一例S4000を示しており、ソフトウェア試験装置100Aの動作フローは必ずしも図11の通りでなくてもよい。
図11において、まず、ステップS4001において、ソフトウェア試験装置100Aに通信モデル701を入力する。
次に、ステップS4002において、モデル検査部702が、ステップS4001で入力された通信モデル701をモデル検査により形式検証する。
次に、ステップS4003において、検知ルール生成部703が、ステップS4002でモデル検査された通信モデル701から、検知ルール101を生成する。生成される検知ルール101の一例は、例えば、図5に示されるものである。
ステップS4003で生成された検知ルール101は、検証用ソフトウェア生成部102への入力となる。
図11のステップS4004からステップS4011の処理は、それぞれ、図3の実施の形態1のステップS1002からステップS1009と同様であるため、ここでは、その説明を省略する。
以上のように、本実施の形態3においても、通信モデル701と検証対象ソフトウェア106とを入力するだけで、自動的に、検証対象ソフトウェア106の合否判定を行うことができるので、上記の実施の形態1と同様の効果が得られる。
さらに、本実施の形態3においては、モデル検査を実施した後の通信モデル701から検知ルール101を生成するようにしたので、通信モデル701から検知ルール101の生成及び検証対象ソフトウェア106の検証テストまでが、全自動かつ高信頼なテストスキームで実現できる。
最後に、図2のソフトウェア試験装置100および100Aのハードウェア構成の補足説明を行う。
プロセッサ201は、プロセッシングを行うIC(Integrated Circuit)である。プロセッサ201は、例えば、CPU(Central Processing Unit)、DSP(Digital Signal Processor)である。
補助記憶装置202は、例えば、ROM(Read Only Memory)、フラッシュメモリ、HDD(Hard Disk Drive)である。
メモリ203は、例えば、RAM(Random Access Memory)である。
表示装置204は、例えば、ディスプレイ、ランプ、音声によるオペレータである。
操作装置205は、例えば、マウス、キーボード、タッチパネルである。
補助記憶装置202には、OS(Operating System)も記憶されている。そして、OSの少なくとも一部がメモリ203にロードされる。プロセッサ201はOSを実行しながら、検証用ソフトウェア生成部102、テストケース生成部104、検証実行部107、モデル検査部702、および、検知ルール生成部703の各部の機能を実現するプログラムを実行する。
プロセッサ201がOSを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
また、ソフトウェア試験装置100および100Aは、プロセッサ201を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、検証用ソフトウェア生成部102、テストケース生成部104、検証実行部107、モデル検査部702、および、検知ルール生成部703の各部の機能を実現するプログラムの実行を分担する。それぞれのプロセッサは、プロセッサ201と同じように、プロセッシングを行うICである。
また、検証用ソフトウェア生成部102、テストケース生成部104、検証実行部107、モデル検査部702、および、検知ルール生成部703の各部の処理の結果を示す情報およびデータが、メモリ203、補助記憶装置202、又は、プロセッサ201内のレジスタ又はキャッシュメモリにファイルとして記憶される。
また、検証用ソフトウェア生成部102、テストケース生成部104、検証実行部107、モデル検査部702、および、検知ルール生成部703の各部の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の可搬記憶媒体に記憶されてもよい。
また、検証用ソフトウェア生成部102、テストケース生成部104、検証実行部107、モデル検査部702、および、検知ルール生成部703の各部の「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
また、ソフトウェア試験装置100および100Aは、ロジックIC(Integrated Circuit)、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、FPGA(Field−Programmable Gate Array)といった電子回路により実現されてもよい。その場合は、検証用ソフトウェア生成部102、テストケース生成部104、検証実行部107、モデル検査部702、および、検知ルール生成部703の各部は、それぞれ電子回路の一部として実現される。
なお、プロセッサ及び上記の電子回路を総称してプロセッシングサーキットリーともいう。
100,100A ソフトウェア試験装置、101 検知ルール、102 検証用ソフトウェア生成部、103 検証用ソフトウェア、104 テストケース生成部、105 テストケース、106 検証対象ソフトウェア、107 検証実行部、108 検証結果、201 プロセッサ、202 補助記憶装置、203 メモリ、204 表示装置、205 操作装置、701 通信モデル、702 モデル検査部、703 検知ルール生成部。

Claims (6)

  1. 検証対象ソフトウェアが導入される機器における正常な通信データを定義する検知ルールを用いて、前記検証対象ソフトウェアが実行結果として出力すべき期待値を生成するための検証用ソフトウェアを生成する検証用ソフトウェア生成部と、
    前記検証用ソフトウェアにテストパターンを入力して、前記検証用ソフトウェアを実行させることで、前記期待値をテストケースとして生成するテストケース生成部と、
    前記テストパターンと同一のテストパターンを前記検証対象ソフトウェアに入力して、前記検証対象ソフトウェアを実行させることで得られた実際の実行結果と、前記テストケースによる前記期待値とを比較することで、前記検証対象ソフトウェアの合否を判定する検証実行部と
    を備えた、ソフトウェア試験装置。
  2. 予め設定されたモデル検査ルールに従って、前記正常な通信データの設計モデルである通信モデルに誤りが無いか否かのモデル検査を行うモデル検査部と、
    前記モデル検査後の前記通信モデルに基づいて、前記検知ルールを生成する検知ルール生成部と
    をさらに備えた、請求項1に記載のソフトウェア試験装置。
  3. 前記検証用ソフトウェア生成部は、
    前記正常な通信データを定義する定義項目として、送信元情報、送信先情報、データ長さ、ペイロードのうちの少なくとも1つの情報を含む、前記検知ルールが入力され、
    前記検知ルールを検知ルール解析して、前記定義項目を葉とし、各ルールを木とする、ルールリスト木を生成し、
    前記ルールリスト木から、全ての木の前記定義項目を共通な項目ごとに結合して、決定木を生成し、
    前記決定木から、前記検証用ソフトウェアを生成する、
    請求項1または2に記載のソフトウェア試験装置。
  4. 前記検証用ソフトウェア生成部は、
    前記ルールリスト木から、前記検知ルールに応じた形式検証プロパティを生成し、
    前記形式検証プロパティを用いて、前記決定木から生成した前記検証用ソフトウェアを形式的に検証する、
    請求項3に記載のソフトウェア試験装置。
  5. 検証対象ソフトウェアが導入される機器における正常な通信データを定義する検知ルールを用いて、前記検証対象ソフトウェアが実行結果として出力すべき期待値を生成するための検証用ソフトウェアを生成する検証用ソフトウェア生成ステップと、
    前記検証用ソフトウェアにテストパターンを入力して、前記検証用ソフトウェアを実行させることで、前記期待値をテストケースとして生成するテストケース生成ステップと、
    前記テストパターンと同一のテストパターンを前記検証対象ソフトウェアに入力して、前記検証対象ソフトウェアを実行させることで得られた実際の実行結果と、前記テストケースによる前記期待値とを比較することで、前記検証対象ソフトウェアの合否を判定する検証実行ステップと
    を備えた、ソフトウェア試験方法。
  6. コンピュータに、
    検証対象ソフトウェアが導入される機器における正常な通信データを定義する検知ルールを用いて、前記検証対象ソフトウェアが実行結果として出力すべき期待値を生成するための検証用ソフトウェアを生成する検証用ソフトウェア生成ステップと、
    前記検証用ソフトウェアにテストパターンを入力して、前記検証用ソフトウェアを実行させることで、前記期待値をテストケースとして生成するテストケース生成ステップと、
    前記テストパターンと同一のテストパターンを前記検証対象ソフトウェアに入力して、前記検証対象ソフトウェアを実行させることで得られた実際の実行結果と前記テストケースによる前記期待値とを比較することで、前記検証対象ソフトウェアの合否を判定する検証実行ステップと
    を実行させるためのソフトウェア試験プログラム。
JP2019571278A 2018-12-12 2018-12-12 ソフトウェア試験装置、ソフトウェア試験方法、および、ソフトウェア試験プログラム Active JP6765554B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2018/084616 WO2019242868A1 (en) 2018-12-12 2018-12-12 Software testing device, software testing method, and software testing program

Publications (2)

Publication Number Publication Date
JP2020524862A JP2020524862A (ja) 2020-08-20
JP6765554B2 true JP6765554B2 (ja) 2020-10-07

Family

ID=64870443

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019571278A Active JP6765554B2 (ja) 2018-12-12 2018-12-12 ソフトウェア試験装置、ソフトウェア試験方法、および、ソフトウェア試験プログラム

Country Status (2)

Country Link
JP (1) JP6765554B2 (ja)
WO (1) WO2019242868A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111858298B (zh) * 2020-05-29 2022-08-30 卡斯柯信号有限公司 一种基于3v模型的软件测试方法
CN112749084A (zh) * 2020-12-17 2021-05-04 中国农业银行股份有限公司 一种测试用例生成方法及装置
CN113918474B (zh) * 2021-12-15 2022-03-11 杭银消费金融股份有限公司 一种基于数据模式的测试用例管理方法及设备

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005164338A (ja) * 2003-12-01 2005-06-23 Fujitsu Ten Ltd 制御装置の検査装置、パターン信号作成装置及び検査プログラム生成装置
JP5164919B2 (ja) 2009-05-13 2013-03-21 日本電信電話株式会社 テストデータ生成方法及び装置及びプログラム
JP5088403B2 (ja) * 2010-08-02 2012-12-05 横河電機株式会社 不正通信検出システム
JP2013030017A (ja) * 2011-07-28 2013-02-07 Fujitsu Ltd テストプログラム生成方法、テストプログラム生成装置、及びテストプログラム生成プログラム
JP2014046800A (ja) 2012-08-31 2014-03-17 Hitachi Ltd テストデータ網羅生成装置及び方法
WO2014155650A1 (ja) * 2013-03-29 2014-10-02 株式会社日立製作所 情報制御装置、情報制御システム、及び情報制御方法
US10346140B2 (en) 2015-08-05 2019-07-09 General Electric Company System and method for model based technology and process for safety-critical software development
US10248552B2 (en) * 2016-07-20 2019-04-02 International Business Machines Corporation Generating test scripts for testing a network-based application
US10628140B2 (en) * 2016-11-17 2020-04-21 Mitsubishi Electric Corporation Program code generation apparatus
JP6692281B2 (ja) * 2016-12-02 2020-05-13 株式会社日立製作所 テストケース生成装置、及びテストケース生成方法

Also Published As

Publication number Publication date
WO2019242868A1 (en) 2019-12-26
JP2020524862A (ja) 2020-08-20

Similar Documents

Publication Publication Date Title
Le Goues et al. A systematic study of automated program repair: Fixing 55 out of 105 bugs for $8 each
Pham et al. Detection of recurring software vulnerabilities
US10142370B2 (en) Methods and apparatus for generating and using security assertions associated with containers in a computing environment
JP6765554B2 (ja) ソフトウェア試験装置、ソフトウェア試験方法、および、ソフトウェア試験プログラム
US10049031B2 (en) Correlation of violating change sets in regression testing of computer software
BR102016018127A2 (pt) método para projeto com base em modelo de software de segurança crítica
US8572747B2 (en) Policy-driven detection and verification of methods such as sanitizers and validators
WO2006087780A1 (ja) 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法
US9703683B2 (en) Software testing coverage
US11003817B2 (en) Hard error simulation and usage thereof
US20190361788A1 (en) Interactive analysis of a security specification
US8438000B2 (en) Dynamic generation of tests
WO2014050424A1 (ja) シグニチャ検証装置及びシグニチャ検証方法及びプログラム
JP6945768B2 (ja) 検知装置、検知方法、及び、検知プログラム
JP2011150716A (ja) 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法
JP2009129204A (ja) コード検査システム及びコード検査方法及びプログラム
US10481969B2 (en) Configurable system wide tests
WO2020261430A1 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
JP2023514999A (ja) 決定論的順序でテストを実行すること
Kommrusch Artificial Intelligence Techniques for Security Vulnerability Prevention
JP5516277B2 (ja) テストケース関係抽出方法、テストケース関係抽出装置及びテストケース関係抽出プログラム
JP2020067891A (ja) Lsi派生開発用整合装置
WO2018122990A1 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
Godboley et al. Study on Unknown Bugs for Smart Contracts using Echidna
CN112115517A (zh) 一种数据库插件的检验方法、装置、设备及介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191223

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20191223

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200519

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: 20200818

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200915

R150 Certificate of patent or registration of utility model

Ref document number: 6765554

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250