JP2016152048A - 統計的学習によるブラックボックス・ソフトウェア試験 - Google Patents

統計的学習によるブラックボックス・ソフトウェア試験 Download PDF

Info

Publication number
JP2016152048A
JP2016152048A JP2016024990A JP2016024990A JP2016152048A JP 2016152048 A JP2016152048 A JP 2016152048A JP 2016024990 A JP2016024990 A JP 2016024990A JP 2016024990 A JP2016024990 A JP 2016024990A JP 2016152048 A JP2016152048 A JP 2016152048A
Authority
JP
Japan
Prior art keywords
model
output
unparsed
data set
new
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
Application number
JP2016024990A
Other languages
English (en)
Inventor
グオドォン リ
Guodong Li
グオドォン リ
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JP2016152048A publication Critical patent/JP2016152048A/ja
Pending legal-status Critical Current

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/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • 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
    • G06F11/3684Test management for test design, e.g. generating new test cases

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)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】統計的学習によるブラックボックス・ソフトウェア試験方法を提供する。【解決手段】パラメトリック・モデルに基づいて入力と出力の間の関係を決定する方法が、あるコンポーネントに関する既知の入力および対応する既知の出力を含むデータ・セットを受領する。前記データ・セットに関連するデータ型に基づいて複数の型のパラメトリック・モデルからパラメトリック・モデルを選択することによって、前記データ・セットに基づいて前記コンポーネントの機能を自動的に判別するようパラメトリック・モデルを生成する。また、前記パラメトリック・モデルが前記データ・セットに当てはまるかどうかを判定する。また、前記パラメトリック・モデルが前記データ・セットに当てはまることを判定することに応答して、前記コンポーネントに関する新たな出力を受領する。また、前記パラメトリック・モデルに基づいて前記新たな出力から新たな入力を決定する。【選択図】図3

Description

本稿で論じられる実施形態は統計的学習によるブラックボックス・ソフトウェア試験に関する。
ソフトウェアの有効確認または検証のようなソフトウェア試験は、情報技術(IT)組織の間では日常的な活動である。たとえば、ソフトウェアは、一つまたは複数のクライアント・コンピュータ・システムにおける実行のためのデスクトップ・アプリケーションまたは一つまたは複数のサーバー・コンピュータ・システムにおける実行のためのウェブ・アプリケーションを含みうる。いずれの場合にも、ソフトウェアの品質を検証することが重要でありうる。ソフトウェアにおけるいくつかの型のエラーはユーザーにとって単にわずらわしかったり不便だったりするだけだが、他の型のエラーは、データや金銭の損失といったより深刻な問題を引き起こす可能性をはらんでいる。
ソフトウェア・コンポーネントは未知の機能に関連付けられることがありうる。ソフトウェア・コンポーネントに入力を加えて結果として出力が与えられても、入力の結果として対応する出力を引き起こす機能は未知であることがある。ソフトウェア・コンポーネントの機能を判別しようとするプロセスは、「ブラックボックス・ソフトウェア試験」と称されることがあり、そのソフトウェア・コンポーネントは「ブラックボックス・コンポーネント」と称されることがある。
ブラックボックス・コンポーネントの機能を判別することは、ブラックボックス・コンポーネントが、コードが解析のために利用可能でない独自ソフトウェア(たとえば、ソースが閉鎖されたソフトウェア)を含んでいる場合には難しいことがある。さらに、ブラックボックス・コンポーネントは、マシン依存であったり、暗号化されていたり、あるいはセキュリティ・ポリシーに基づいて利用可能でなかったりすることがある。ブラックボックス・コンポーネントの機能は、明細書からまたはランダム試験を通じて判別されうる。しかしながら、種々の試験方法論はしばしば人間の試験者に関わり、それが試験プロセスを遅くし、ソフトウェア試験に関わるコストを増大させる。さらに、ランダム試験は不正確および/または不完全な結果を生じることがある。
本願で特許請求される主題は、何らかの欠点を解決するまたは上記のような環境でのみ動作する実施形態に限定されない。むしろ、この背景は、本稿に記載されるいくつかの実施形態が実施されうる一つの例示的な技術分野を例解するために与えられているのみである。
ある実施形態のある側面によれば、パラメトリック・モデルに基づいて入力と出力の間の関係を決定する方法が、あるコンポーネントに関する既知の入力および対応する既知の出力を含むデータ・セットを受領することを含んでいてもよい。本方法は、前記データ・セットに関連するデータ型に基づいて複数の型のパラメトリック・モデルからパラメトリック・モデルを選択することによって、前記データ・セットに基づいて前記コンポーネントの機能を自動的に判別するようパラメトリック・モデルを生成することをも含む。本方法はまた、前記パラメトリック・モデルが前記データ・セットに当てはまるかどうかを判定することをも含む。本方法はまた、前記パラメトリック・モデルが前記データ・セットに当てはまることを判定することに応答して、前記コンポーネントに関する新たな出力を受領することをも含む。本方法はまた、前記パラメトリック・モデルに基づいて前記新たな出力から新たな入力を決定することをも含む。
実施形態の目的および利点は、少なくとも、請求項において具体的に指摘される要素、特徴および組み合わせによって、実現され、達成されるであろう。
以上の概括的な記述および以下の詳細な記述はいずれも例示的であり、特許請求される本発明を制約するものではないことは理解されるものとする。
例示的実施形態は、付属の図面の使用を通じてさらなる具体性および詳細さをもって記述され、説明される。
未知の機能をもつコンポーネントのブラックボックス試験を実行するよう構成された例示的な試験システムを表わす例示的なブロック図である。 統計的学習によるブラックボックス・ソフトウェア試験を実行する例示的装置を示す図である。 未知の機能をもつコンポーネントを試験する例示的方法のフローチャートである。 図3のコンポーネントについてのパラメトリック・モデルを生成する例示的方法のフローチャートの前半である。 図3のコンポーネントについてのパラメトリック・モデルを生成する例示的方法のフローチャートの後半である。 特定のモデルを想定することなく図3のコンポーネントについて既知の入力と対応する既知の出力を関係付ける例示的方法のフローチャートである。
未知の機能をもつコンポーネントを試験し、検証するいくつかの方法が存在する。たとえば、統計的学習は、健康ケアおよび金融を含むいくつかの分野について数値モデルを生成する。しかしながら、コンポーネントは数値モデルより込み入ったデータ型を使うことがありうる。結果として、現在の統計的学習法の適用可能性は限られることがある。別の例では、プログラム合成は、ソフトウェアを試験するために明細またはデータを使う。しかしながら、プログラム合成は、ソフトウェアの未知の部分についての推定をしない。さらに別の例では、ストリング関係推定は、データからストリング動作〔演算〕の部分集合を推定する。しかしながら、ストリング動作の部分集合は、用途が限られることがあり、プログラム合成はより大きなアプリケーション中に組み込むことができないことがある。
これらおよび他のシステムの欠点は、本稿に記載される統計的学習によるブラックボックス・ソフトウェア試験を実行する試験システムによって克服されうる。本稿に記載される試験システムはコンピューティング装置を含んでいてもよい。たとえば、試験システムは、パーソナル・コンピュータ、ラップトップ、タブレット・コンピュータ、サーバーまたは任意のプロセッサ・ベースのコンピューティング装置を含みうる。試験システムは、メモリおよびプロセッサ装置を含んでいてもよい。プロセッサ装置は、本稿に記載される一つまたは複数の動作、たとえばそれぞれ図3、図4A〜4Bおよび図5を参照して後述する方法300、400および500の一つまたは複数の動作またはステップを実行するまたはその実行を制御するようプログラムされてもよい。試験システムの一つまたは複数の例示的実施形態は後述する。
試験システムは、未知の機能をもつコンポーネントに関連する既知の入力および対応する既知の出力を含むデータ・セットを受領する試験アプリケーションを含んでいてもよい。コンポーネントは、あるクラス内の関数、あるパッケージ内のクラス、モジュール、バイナリー・コード片、機械コード片、サードパーティーの、ソースが閉鎖されているライブラリ、データベース、サーバーまたはそれらの任意の組み合わせを含みうる。データ・セットは、たとえば、プリミティブ・データ型または非プリミティブ・データ型をもつデータ項目を含みうる。
試験アプリケーションはデータ・セットに基づいてパラメトリック・モデルを生成してもよい。これらおよび他の実装において、試験アプリケーションは、データ・セットに関連するデータ型に基づいて複数の型のパラメトリック・モデルから前記パラメトリック・モデルを選択してもよい。たとえば、試験アプリケーションは、ストリングを含むデータ・セットについてのデータ型に基づいて正規表現モデルを選択してもよい。試験アプリケーションは、データ・セットを使って統計的学習を実行して、パラメトリック・モデルを洗練してもよい。たとえば、試験アプリケーションは、データ・セットにおける第一の項目を解析することによって前記パラメトリック・モデルについての初期モデルを生成してもよい。たとえば、パラメトリック・モデルが正規表現モデルである場合、試験アプリケーションは抽出正規表現を生成してもよい。試験アプリケーションは、初期モデルに基づいて未解析の既知の入力を解析することによって、前記データ・セットからの次のデータ項目を解析してもよい。試験アプリケーションは、前記未解析の既知の入力を解析することに基づいて、前記初期モデルについてのパラメータを更新するまたは新たなモデルを生成してもよい。たとえば、正規表現モデルについては、試験アプリケーションは、抽出正規表現を改訂するまたは次のデータ項目に適用される新たな抽出正規表現を生成してもよい。
前記パラメトリック・モデルが前記データ・セットに当てはまらない場合、試験アプリケーションは、特定のモデルを想定することなく既知の諸入力および対応する既知の諸出力を関係付ける非パラメトリックな方法を実装してもよい。たとえば、非パラメトリックなモデルは、制約条件を識別し、該制約条件を満たす新たな入力および対応する新たな出力を、前記データ・セットの一つまたは複数のデータ項目に基づいて決定してもよい。前記非パラメトリックな方法は、目標への近接性に基づいてK個の近傍データ項目を識別し、該近傍データ項目の一部である近傍入力を平均することに基づいて新たな入力を決定し、前記新たな入力に基づいて対応する新たな出力を決定するk近傍回帰を含んでいてもよい。
前記対応する新たな出力は、制約条件と比較される。前記対応する新たな出力がその制約条件を満たせば、前記対応する新たな出力は受け入れられてもよい。そうでなければ、前記新たな入力および前記対応する新たな出力は前記データ・セットに加えられてもよく、K近傍回帰は更新された新たな出力が受け入れられるまでまたは逐次反復回数が閾値を超えるまで逐次反復的に実行されてもよい。
ブラックボックス・ソフトウェア試験を実行した結果として、未知の機能をもつコンポーネントの機能が自動的に判別されうる。さらに、試験アプリケーションは、コンポーネントの将来の状態空間についての入力を導出してもよい。試験アプリケーションは、低いオーバーヘッドでスケーラブルであり得、正確であり得、構造化されたコードおよび構造化されていないコードの両方を解析できることがあり得る。試験アプリケーションは、他のソフトウェア・アプリケーション中に組み込まれてもよく、サードパーティーのソースが閉鎖されたコードを扱ったり、サーバーの一部として機能したり、データ解析のための一般的方法として使われたりしてもよい。
本発明の実施形態は、付属の図面を参照して説明される。本稿における実質的に任意の複数形および/または単数形の用語の使用に関し、当業者は、コンテキストおよび/または用途に応じて適宜、複数形から単数形へおよび/または単数形から複数形へ変換しうる。さまざまな単数形/複数形の入れ替えは、明確のため、ここで明示的に述べておいてもよいであろう。
図1は、本稿に記載される少なくとも一つの実施形態に基づいて構成された、未知の機能をもつコンポーネントのブラックボックス試験を実行するよう構成された例示的な試験システム100を表わす例示的なブロック図である。本稿に記載される試験システム100はコンピューティング装置を含んでいてもよい。たとえば、試験システム100は、パーソナル・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバー・コンピュータまたは任意のプロセッサ・ベースのコンピューティング装置を含みうる。試験システム100は、メモリおよびプロセッサ装置を含んでいてもよい。プロセッサ装置は、本稿に記載される一つまたは複数の動作、たとえばそれぞれ図3、図4A〜4Bおよび図5を参照して後述する方法300、400および500の一つまたは複数の動作またはステップを実行するまたはその実行を制御するようプログラムされてもよい。試験システム100の一つまたは複数の例示的実施形態は後述する。
試験システム100は、試験対象コンポーネント104のブラックボックス・ソフトウェア試験を実行して出力108を生成するよう構成された試験アプリケーション106を含んでいてもよい。試験対象コンポーネント104は、たとえばプロセッサ装置による実行のためのソフトウェア・プログラム、該ソフトウェア・プログラムのコード、ライブラリ、アプリケーション、スクリプトまたは他の論理または命令といった電子データを含んでいてもよい。
いくつかの実施形態では、試験対象コンポーネント104は、ソフトウェア・プログラムの完全なインスタンスを含んでいてもよい。これらまたは他の実施形態では、試験対象コンポーネント104はソフトウェア・プログラムの一部を含んでいてもよい。試験対象コンポーネント104は、中でもジャバ、C、C++、パール、スキーム、パイソンといった任意の好適な型のコンピュータ言語で書かれていてもよい。
いくつかの実施形態では、試験アプリケーション106は、入力を受領し、試験対象コンポーネント104を試験することから出力108を生成するよう構成されていてもよい。入力は、プリミティブ・データ型、非プリミティブ・データ型またはプリミティブおよび非プリミティブの両方のデータ型を含みうる。たとえば、入力は、ストリング、リスト、数などを含みうる。出力108は、試験対象コンポーネント104の機能を明かす試験ケース110またはバグ112およびセキュリティー脆弱性114を含んでいてもよい。これらが目標でありうる。試験アプリケーション106が後述するパラメトリックおよび/または非パラメトリックな方法を実行して試験ケース110を生成した後、試験アプリケーション106は、バグ112および/またはセキュリティー脆弱性114の目標を達成するために試験対象コンポーネント104に与えられるべき入力および/または出力を決定する。
いくつかの実施形態では、試験アプリケーション106は、制約条件の一つまたは複数の集合について、それらの制約条件を満足させることが可能であれば、一つまたは複数の解を生成しうる。いくつかの実施形態では、制約条件の集合を解くことは、該集合に含まれるすべての制約条件を満たす一つまたは複数の解を見出そうと試みることを含んでいてもよい。これらの実施形態のいくつかでは、試験アプリケーション106は出力108をもつ解を含んでいてもよい。いくつかの実施形態では、解は、試験対象コンポーネント104を試験するために使われてもよい。
図2は、本稿に記載される少なくとも一つの実施形態に基づいて構成された、統計的学習によるブラックボックス・ソフトウェア試験を実行する例示的装置200を示している。図2の装置200は、図1を参照して上記したブラックボックス・ソフトウェア試験システム100によって使用されるハードウェアの例であってもよい。装置200は、それぞれ図3、図4A〜4Bおよび図5を参照して後述する方法300、400および500の一つまたは複数のブロックを実行するようプログラムされた特殊目的のプロセッサ・ベースのコンピューティング装置を含みうる。
装置200は、プロセッサ装置225およびメモリ227を含んでいてもよい。プロセッサ装置225は、本稿に記載される動作を実行するまたはその実行を制御するために、算術論理ユニット、マイクロプロセッサ、汎用コントローラまたは他の何らかのプロセッサまたはプロセッサ・アレイを含んでいてもよい。プロセッサ装置225はデータ信号を処理し、複雑命令セット・コンピュータ(CISC)アーキテクチャー、縮小命令セット・コンピュータ(RISC)アーキテクチャーまたは命令セットの組み合わせを実装するアーキテクチャーを含むさまざまなコンピューティング・アーキテクチャーを含みうる。図2は単一のプロセッサ装置225を示しているが、装置200は複数のプロセッサ装置225を含んでいてもよい。他のプロセッサ、オペレーティング・システムおよび物理的な構成が可能でありうる。
メモリ227は、プロセッサ装置225によって実行されうるまたはプロセッサ装置225上で操作されうる命令またはデータを記憶する。命令またはデータは、本稿に記載される動作を実行するまたはその実行を制御するためにプロセッサ装置225によって実行されうるプログラミング・コードを含んでいてもよい。メモリ227は動的ランダム・アクセス・メモリ(DRAM)デバイス、静的ランダム・アクセス・メモリ(SRAM)デバイス、フラッシュ・メモリまたは他の何らかのメモリ・デバイスを含みうる。いくつかの実施形態では、メモリ227は不揮発性メモリまたは同様の恒久的記憶および媒体、たとえばハードディスクドライブ、フロッピー(登録商標)ディスクドライブ、コンパクトディスクROM(CD-ROM)デバイス、DVD-ROMデバイス、DVD-RAMデバイス、DVD-RWデバイス、フラッシュ・メモリ・デバイスまたはより恒久的に情報を記憶するための他の何らかの大容量記憶をも含む。
図示した実施形態では、メモリ227は図1の試験アプリケーション106およびシステム・データ210の一つまたは複数を記憶してもよい。いくつかの実施形態では、試験アプリケーション106は、フィールド・プログラマブル・ゲート・アレイ(FPGA)または特定用途向け集積回路(ASIC)を含むハードウェアを使って実装されてもよい。他のいくつかの実施形態では、試験アプリケーション106はハードウェアとソフトウェアの組み合わせを使って実装されてもよい。
試験アプリケーション106はデータ・モジュール202、パラメトリック・モジュール204および非パラメトリック・モジュール206を含んでいてもよい。モジュール202、204および206は一つのデバイス200上に記憶されているように示されているが、モジュール202、204および206は、たとえば分散式データ・システムにおいて、異なるデバイスに記憶されていてもよい。
システム・データ210は、装置200によってその機能を提供するために使用されるデータを含んでいてもよい。たとえば、システム・データ210は、データ・モジュール202によって収集されるデータ・セット、パラメトリック・モジュール204によって生成されるパラメトリック・モデル、未知の機能をもつコンポーネント、新たな入力および新たな出力のうちの一つまたは複数を含んでいてもよい。代替的または追加的に、システム・データ210は、図1を参照して上述したデータのいずれかを含んでいてもよい。装置200のさまざまなコンポーネント(たとえばプロセッサ装置225およびメモリ227)は、バス220を介して互いに通信上結合されていてもよい。
試験アプリケーション106のさまざまなモジュール202、204、206についてここでさらに詳細に述べる。データ・モジュール202は概括的に、既知の入力および対応する既知の出力を含むデータ・セットを受領するよう構成されていてもよい。たとえば、データ・モジュール202は、未知の機能をもつコンポーネントから入力および出力データを収集することによって、履歴データを収集してもよい。
前記データ・セットからの既知の入力および対応する既知の出力は、プリミティブなデータ型、非プリミティブなデータ型またはプリミティブおよび非プリミティブ両方のデータ型を含んでいてもよい。たとえば、プリミティブなデータ型は、当該コンポーネントを生成するために使われるプログラミング言語に依存して、キャラクタ、整数、浮動小数点数、固定小数点数、ブーリアン、バイト、ショートなどを含みうる。非プリミティブなデータ型は、ストリング、リスト、ベクトル、ヒープ、ポインターなどを含みうる。
いくつかの実施形態では、複数の入力が受領されてもよい。たとえば、下記の表1は、データ・セットについての例示的な既知の入力および対応する既知の出力を含んでいる。このデータ・セットは、パラメトリック・モジュール204を参照して下記でより詳細に述べるストリングについての正規表現モデルにおいて使用される。データ・セット中の各行はデータ項目と称されてもよい。よって、データ項目は一つまたは複数の既知の入力および一つまたは複数の対応する既知の出力を含んでいてもよい。
Figure 2016152048
データ・モジュール202は、表1の既知の入力および対応する既知の出力を組み合わせてデータ・セットを生成してもよい。データ・モジュール202は、該データ・セットを、メモリ227に記憶されたシステム・データ210として保存してもよい。
データ・モジュール202は、パラメトリック・モジュール204からおよび/または非パラメトリック・モジュール206からデータを受領したのちに、該データ・セットを更新してもよい。たとえば、非パラメトリック・モジュール206はK近傍回帰を使って新たな入力および対応する新たな出力を生成してもよい。非パラメトリック・モジュール206は該新たな入力および対応する新たな出力をデータ・モジュール202に送信してもよく、それらの新たな入力および対応する新たな出力をデータ・モジュール202はデータ・セットに加えてもよい。
パラメトリック・モジュール204は概括的には、データ・モジュール202によって受領されたデータ・セットに基づいてパラメトリック・モデルを生成するよう構成されていてもよい。パラメトリック・モジュール204は、データ・モジュール202からデータ・セットを受領しても、あるいはメモリ227からデータ・セットを取り出してもよい。パラメトリック・モジュール204は、パラメトリック・モデルが当該データ・セットに当てはまるかどうかを判定してもよい。たとえば、パラメトリック・モジュール204は、データ・セットからの既知の入力を使って、予測される出力を決定してもよく、予測された出力を、前記既知の入力に対応する、対応する既知の出力と比較してもよい。予測された出力が対応する既知の出力と一致したら、パラメトリック・モジュール204はデータ・セットからの未解析のデータ項目を解析することを、すべての既知の入力および対応する既知の出力が解析されるまで、続けてもよい。
予測された出力がデータ・セットからの対応する未解析の既知の出力(すなわち、上記の対応する既知の出力)と一致し続けるなら、パラメトリック・モジュール204は、前記パラメトリック・モデルに基づいて前記パラメトリック・モデルについての少なくとも一つの制約条件を決定してもよい。この制約条件は、前記既知の出力が対応する既知の入力に対して生成される条件を記述する。
予測された出力が対応する未解析の既知の出力に一致しなかったら、パラメトリック・モジュール204は、予測された出力と対応する未解析の既知の出力との間の誤差指標を計算してもよい。パラメトリック・モジュール204は、ストリング距離に基づいてコスト関数を決定することによって誤差指標を計算してもよい。パラメトリック・モジュール204は、ストリング値をモデル化するためにキャラクタ・レンジ・オートマトンを使い、オートマタを使ってストリング制約条件を表現し、ストリング値を前記オートマトンとマッチさせて受け入れ状態への遷移数を数えることによって距離を計算することにより、距離計算を決定してもよい。たとえば、"s.startsWith("A1")∨s.endsWith("B2")〔sはA1で始まるまたはsはB2で終わる〕は、オートマタを使ったストリング制約条件を表わす。s="A1"についての距離計算は0となりうる。s="B"についての距離計算は1でありうる。S="C12"についての距離計算は2でありうる。
正規表現についても同様に、パラメトリック・モジュール204は、正規表現をモデル化するためにキャラクタ・レンジ・オートマトンを使い、ストリング値をオートマトンとマッチさせて受け入れ状態への遷移数を数えることによって距離を計算することにより、距離計算を決定してもよい。表2は、上記の議論と整合する正規表現モデルについての例示的な距離計算を含んでいる。
Figure 2016152048
パラメトリック・モジュール204がパラメトリック・モデルがデータ・セットに当てはまると判定したら、パラメトリック・モジュール204はそのパラメトリック・モデルを使って、新たな出力を与える新たな入力を決定することにより、コンポーネントの将来の挙動を解析しうる。たとえば、入力が(s0,s1)であり、出力が(s0',s1')である場合、コンポーネントの機能(f)は(s0',s1')=f(s0,s1)であるようなものである。(s0',s1')が所望される出力である場合、対応する入力がf1(s0',s1')によって得られてもよい。パラメトリック・モジュール204は機能(f)を推定するためにパラメトリック・モデルを決定してもよい。パラメトリック・モジュール204は、パラメトリック・モデルについての少なくとも一つの制約条件をも決定してもよい。この制約条件は、fがコンポーネントの機能を表わす条件を記述する。
いくつかの実施形態では、パラメトリック・モジュール204は、複数の型のパラメトリック・モデルのうちからパラメトリック・モデルを選択する。たとえば、パラメトリック・モデルの型は、線形回帰モデル、多項式回帰モデル、非線形回帰モデル、正規表現モデルまたは動作シーケンスに基づくモデルのうちの一つまたは複数を含みうる。パラメトリック・モジュール204は、データ・セットに関連付けられたデータ型に基づいて、パラメトリック・モデルの型のうちの一つを選択してもよい。たとえば、パラメトリック・モジュール204は、ストリングを含む前記データ・セットに関連するデータ型に基づいて、正規表現モデルを選択してもよい。
パラメトリック・モジュール204は、前記データ・セット中の第一のデータ項目に基づいて試験するための初期モデルを生成してもよい。たとえば、正規表現モデルを参照して下記でより詳細に述べるように、パラメトリック・モジュール204は、第一のデータ項目について生成された抽出正規表現に基づいて初期モデルを生成してもよい。パラメトリック・モジュール204は、その後のデータ項目に基づいて初期モデルを改訂してもよい。
パラメトリック・モジュール204は、回帰モデルを使って、非プリミティブな諸データ型をもつ諸データ・セットを解析してもよい。たとえば、データ・セットはストリングを含んでいてもよい。ストリングは、キャラクタのアレイを含んでいてもよい。パラメトリック・モジュール204は、ストリングをキャラクタに分解し、キャラクタ・コード(たとえば整数)を使って整数回帰モデルを構築するパラメトリック・モデルを生成してもよい。
パラメトリック・モジュール204は、ストリング中のキャラクタに対して線形回帰を適用してもよい。たとえば、当該コンポーネントについての入力(s)はs[0],s[1],s[2]などと表わされてもよく、当該コンポーネントについての出力(s')はs'[0],s'[1],s'[2]などと表わされてもよい。パラメトリック・モジュール204は、ストリング反転演算を表わすために次の一般形をもつ線形回帰を実行してもよい。
s'[s.len−k−1]=s[k] 0≦s<s.len (1)
ストリングについて使われる回帰モデルは、ベクトル、連結リストおよびスタックを含む他の非プリミティブなデータ型にも適用されうる。しかしながら、回帰モデルの制約が強すぎる場合には、正規表現モデルのようなより一般的なモデルがより効果的であることがある。正規表現モデルは、各出力キャラクタ(c')を正規表現(re)を通じて入力ストリング(s)と関係付ける。このことは、c'=extract(s,re)と表現されうる。
正規表現は、一致するストリングを検索するために使用されうるキャラクタのシーケンスを含んでいてもよい。たとえば、[a-z]はaからzまでの間の文字を表わし、[a-zA-Z]は任意の小文字または大文字を表わし、\wと略記されてもよい。[0-9]は0から9までの間の数字を表わし、\dと略記されてもよい。(c1|c2)はキャラクタc1またはc2を表わす。c1*はキャラクタc1の0回以上の反復を表わす。c1+はキャラクタc1の一回以上の反復を表わす。c1{n}はキャラクタc1のn回の反復を表わす。\w+_[0-9]*は少なくとも一つの文字で始まり、次いで_があり、次いでいくつかの数字で終わる任意のストリングを表わす。
下記の表における正規表現c'=extract(s,re)について、c'は、入力(s)における正規表現(re)の最初のマッチについてのプレースホルダー(□)のところのキャラクタである。
Figure 2016152048
データ・セットについての既知の入力および対応する既知の出力が異なる正規表現に関連付けられる場合、パラメトリック・モジュール204はそれらの異なる正規表現を組み合わせてもよい。パラメトリック・モジュール204はそれらの正規表現を一般化し、一般化された正規表現を統一して単一の正規表現を生成してもよい。たとえば、数字と合わされた数字は[0-9]と表わされてもよい。小文字と合わされた小文字は[a-z]と表わされてもよい。大文字と合わされた大文字は[A-Z]と表わされてもよい。大文字と合わされた小文字は[a-zA-Z]と表わされてもよい。これは\wとも表わせる。非文字キャラクタc2と合わされた非文字キャラクタc1はc2=(c1|c2)と表わされてもよい。c+と合わされたc*はc*と表わされてもよい。c+と合わされたc+はc+と表わされてもよい。下記の表は、異なる正規表現(re1およびre2)の和集合のいくつかの具体例を含んでいる。
Figure 2016152048
下記は、パラメトリック・モジュール204が、ストリングについての正規表現モデルを使ってパラメトリック・モデルがデータ・セットに当てはまるかどうかを判定する仕方の例である。この例は、次の正規表現モデルを想定する:
s'[i]=extract(sj,rei) (2)
ここで、s'は未知の機能をもつコンポーネントからの出力を表わし、iは出力ストリングs'におけるキャラクタの位置を表わし、sjはj番目の入力ストリングを表わし、reiは出力キャラクタs'[i]についての抽出正規表現を表わす。
表1からのデータ・セットの各データ項目について、パラメトリック・モジュール204は少なくとも一つの抽出正規表現を推定する。データ・セットは既知の入力および対応する既知の出力を含んでいる。表5は、表1の最初の四つのデータ項目についての抽出正規表現を推定するためにパラメトリック・モジュール204によって行なわれるステップを表わしている。表5の最初の三つの列は、データ・セットの最初の四つのデータ項目について、表1からの繰り返しである。四番目の列が出力からの最初のキャラクタを表わす。五番目の列は、パラメトリック・モジュール204によって推定された各データ出力についての抽出正規表現を表わす。
Figure 2016152048
パラメトリック・モジュール204は、データ・セットにおける最初のデータ項目について抽出正規表現を決定することによって、初期モデルを構築してもよい。たとえば、パラメトリック・モジュール204は、未解析の既知の入力AAおよびAbc Bcならびに対応する未解析の既知の出力Bをもつ最初のデータ項目を解析してもよい。パラメトリック・モジュール204は、対応する未解析の既知の出力の最初のキャラクタをBとして識別し、最初のデータ項目についての抽出正規表現がextract(s1,Abc □)であると推定する。
パラメトリック・モジュール204は、初期モデルに基づいてデータ・セット中の次のデータ項目からの未解析の既知の入力を解析して、予測される出力を決定してもよい。パラメトリック・モジュール204は、予測された出力が、次のデータ項目からの未解析の既知の入力に対応する、対応する未解析の既知の出力にマッチするかどうかを判定してもよい。予測された出力が対応する未解析の既知の出力にマッチしたら、パラメトリック・モジュール204は、追加的な未解析のデータ項目があるかどうかを判定してもよい。この例では、予測された出力が最初のデータ項目についての対応する未解析の既知の出力にマッチすれば、パラメトリック・モジュール204はデータ・セット中の第二のデータ項目を解析する。
予測された出力が対応する未解析の既知の出力にマッチしない場合には、パラメトリック・モジュール204は、予測された出力と対応する未解析の既知の出力との間の誤り率を決定してもよい。誤り率が低ければ、パラメトリック・モジュール204は第二のデータ項目を受け入れ、モデル・パラメータを更新し、追加的な未解析のデータ項目があるかどうかを判定してもよい。更新されたモデル・パラメータは、システム・データ210の一部としてメモリ227に記憶されてもよい。正規表現モデルの例では、予測された出力が、最初のデータ項目についての対応する未解析の既知の出力にマッチしないが誤り率が低い場合には、パラメトリック・モジュール204は、第一の抽出正規表現を一般化して、一般化された抽出正規表現を第二のデータ項目に対応する第二の抽出正規表現と合併することによって、モデル・パラメータを更新してもよい。
パラメトリック・モジュール204は、誤り率が所与の閾値より小さい場合に、誤り率が低いと判定してもよい。異なる表現をすると、パラメトリック・モジュール204は、誤り率が閾値を超えるかどうかを判定してもよく、もしそうであれば、パラメトリック・モジュール204は初期モデルを一般化する、あるいは新しいパラメータをもつ新しいモデルを選択してもよい。閾値はユーザーによって指定されても、データ・セット依存でも、試験アプリケーション106についてのデフォルト設定に基づくなどでもよい。いくつかの実施形態では、パラメトリック・モジュール204は、経験的研究を実行することによって閾値を決定してもよい。
上記の正規表現モデルの例を続けると、最初の抽出正規表現はextract(s1,Abc□)である。パラメトリック・モジュール204は、extract(s1,Abc□)使用の予測される出力が対応する未解析の既知の出力Bとマッチしないと判定する。この例での閾値は1である。パラメトリック・モジュール204は、ストリング距離に基づいて誤り率を決定し、AcBcとAbc□の間の距離が3であると判定する。これは閾値1を超えている。結果として、パラメトリック・モジュール204は最初のデータ項目からの抽出正規表現extract(s1,Abc□)および二番目のデータ項目からの抽出正規表現extract(s0,A12□)∨extract(s1,Ac□)を、extract(s1,Ab*c□)として一般化する。
パラメトリック・モジュール204は、データ・セットからのさらなる未解析のデータ項目を解析することによって初期モデルを洗練することに進んでもよい。上記の例を続けると、パラメトリック・モジュール204は、第三のデータ項目についての予測された出力が対応する未解析の既知の出力Cにマッチしないと判定する。パラメトリック・モジュール204は誤り率が閾値を超えると判定し、結果として、パラメトリック・モジュール204はextract(s1,"Ab*c□")をextract(s1,"B_□")と一般化し、一般化された抽出正規表現と第三のデータ項目との間の合併を生成する。それはextract(s1,"\w+( |_)□")となる。結果として、最初のキャラクタについての抽出正規表現はs0'[0]=extract(s1,"\w+( |_)□")と表わされうる。
パラメトリック・モジュール204は、データ・セットからのさらなる未解析のデータ項目が存在するかどうかを判定してもよい。上記の例を続けると、パラメトリック・モジュール204は、第四のデータ項目についての予測された出力が対応する未解析の既知の出力Cにマッチしないと判定する。C0と\w+( |_)□の間の距離が1であれば、パラメトリック・モジュール204は誤り率が閾値を超えないと判定しうる。結果として、パラメトリック・モジュール204はそのデータを受け入れ、一般化された抽出正規表現を保持し、データ・セットからのさらなる未解析のデータ項目を解析しうる。
パラメトリック・モジュール204が最初のキャラクタについて諸データ項目を、対応する未解析の既知の出力(s0'[0])について解析した後、パラメトリック・モジュール204は、その後のキャラクタについての諸データ項目を、対応する未解析の既知の出力について解析する。パラメトリック・モジュール204は、各キャラクタ位置について新たな抽出正規表現を生成しうる。正規表現モデルの例では、第二のキャラクタ(s0'[1])についての抽出正規表現はextract(s0,"□")に等しく、第三のキャラクタ(s0'[2])についての抽出正規表現は「0」に等しい。
パラメトリック・モジュール204が誤り率が閾値を超えることを判定し、一般化によってすべてのデータ項目についての正規表現を生成できない正規表現モデルについてのいくつかの実施形態では、パラメトリック・モジュール204は、初期モデルが現在のデータ項目に当てはまらないことを判定してもよい。代替的または追加的に、パラメトリック・モジュール204は、初期モデルが、当該未解析のデータ項目に当てはまるよう(たとえば一般化によって)修正され得ないことを判定してもよい。結果として、パラメトリック・モジュール204は、新たなパラメータをもつ新たなモデルを生成してもよい。初期モデルがデータ項目のうちのいくつかに当てはまり、他のデータ項目には該新たなモデルが当てはまるいくつかの実施形態では、パラメトリック・モジュール204は、データ項目を、初期モデルまたは新たなモデルに関連付けられている異なるグループに分類してもよい。
上記の正規表現モデルの例を続けると、パラメトリック・モジュール204は、最初のキャラクタについての抽出正規表現(s0'[0]=extract(s1,"\w+(|_)□"))が第五のデータ項目Bに当てはまらず、この正規表現は第五のデータ項目に当てはまるよう一般化されることができないことを判定する。実際、キャラクタBはs1ではなくストリングs0から取られていることがありうる。結果として、パラメトリック・モジュール204は最初の四つのデータ項目をグループ1にグループ化し、次の三つのデータ項目をグループ2にグループ化する。
パラメトリック・モジュール204は、種々のデータ項目を、対応する既知の出力の特性に基づいてグループに分類してもよい。たとえば、正規表現モデルの例について、パラメトリック・モジュール204は最初の四つのデータ項目を、対応する既知の出力が三つのキャラクタを含むことに基づいてグループ1として分類してもよい。
上記の例を続けると、パラメトリック・モジュール204は、第五のデータ項目についての抽出正規表現がextract(s0,"a a□")であり、第六のデータ項目についての抽出正規表現がextract(s0,"c ")であり、第七のデータ項目についての抽出正規表現がextract(s1,"b ")であることを判別してもよい。パラメトリック・モジュール204はこれらの抽出正規表現を一般化し、グループ2のデータ項目について、一般化された抽出正規表現をs0'[0]=extract(s0,"[a-z] a*□")と一般化する。
パラメトリック・モジュール204は、データ項目をグループに分類し、各グループについての制約条件を決定してもよい。制約条件は、すべての入力が満たす条件を記述してもよい。よって、制約条件は、グループ内の諸入力を特徴付ける。パラメトリック・モジュール204は、各グループについての各キャラクタについて既知の諸入力の合併を生成することによって各グループについての制約条件を決定してもよい。パラメトリック・モジュール204は、当該ストリング・データの上位集合を表わす正規表現を推定するために諸入力の合併を使ってもよい。たとえば、正規表現モデルの例について、グループ1についての入力(s0)の最初のキャラクタについての入力の合併は、"AA"∪"A12Bcd"∪"DBcd"∪"D_"を含んでいてもよく、正規表現は[A-Z](|_)\w+を含んでいてもよい。グループ1についての入力(s1)の第二のキャラクタについての入力の合併は、"AbcBc"∪"AcBc"∪"B_C"∪"C0"を含んでいてもよく、正規表現は[A-Z][a-z]*(0|((|_)[A-Z]c*)を含んでいてもよい。グループ2についての入力(s0)の最初のキャラクタについての入力の合併は、"aaB"∪"cA"∪"bC"を含んでいてもよく、正規表現は[a-z]a*[A-Z]を含んでいてもよい。グループ2についての入力(s1)の最初のキャラクタについての入力の合併は、"aCDe"∪""∪"12D"を含んでいてもよく、正規表現は「...」(任意のストリング)を含んでいてもよい。
パラメトリック・モジュール204は、各グループについて、関連するデータをガードする制約条件を決定してもよい。制約条件は、当該ストリング・データの上位集合を表わす正規表現および真である正規表現モデルの一方または両方を含んでいてもよい。推定されるモデルは次の式を含んでいてもよい。
Figure 2016152048
このように、正規表現の例について、グループ1についてのモデルは
Figure 2016152048
を含んでいてもよい。グループ2についてのモデルは
Figure 2016152048
を含んでいてもよい。
いくつかの実施形態では、線形回帰モデルおよび正規表現モデルは、導入される個々の変数の数に基づいて問題があることがある。結果として、線形回帰モデルおよび正規表現モデルは、いくつかのコンポーネントについては理想的なモデルではないことがある。
動作シーケンス・モデルは、線形回帰モデルまたは正規表現モデルより一般的でありうるが、それほど効率的ではないことがありうる。動作シーケンス・モデルは、対応する既知の出力を生成するために既知の入力を操作する動作シーケンスを推定してもよい。動作シーケンス・モデルは、ストリング、ポインター、ヒープおよびユーザー定義されるデータ構造といった非プリミティブなデータ型について機能してもよい。ストリング動作はたとえば、concat、substr、toNum、charAt、valueOf、replaceなどを含む。表6は、動作に基づいて出力(結果ストリング)を与える入力(もとのストリング)を示している。
Figure 2016152048
パラメトリック・モジュール204は、トライ・バックトラック(try-backtrack)法を使って動作シーケンス・モデルを生成してもよい。パラメトリック・モジュール204は、最初の未解析のデータ項目から出発して該データ・セットからの次のストリング動作(op)を識別することによって、既知の入力および対応する既知の出力のデータ・セットを解析してもよい。パラメトリック・モジュール204は、ストリング・ソルバーを参照することによって、対応する既知の出力ストリングが、既知の入力ストリング(ここで、たとえば既知の入力は可能な記号値を含んでいてもよい)に動作を適用することによって得られうるかどうかを判定してもよい。パラメトリック・モジュール204が、最初のデータ項目に当てはまる動作を識別する場合には、パラメトリック・モジュール204はデータ・セット中の次のデータ項目に進み、その動作がそのデータ項目に当てはまるかどうかを判定してもよい。パラメトリック・モジュール204は、データ・セット中のすべてのデータ項目が解析されるまで、各データ項目について解析を実行することを続けてもよい。
下記の表は、動作に基づいて出力(結果ストリング)を与える入力(もとのストリング)を示している。concatおよびsubstrのような候補動作では、推定されるモデルはs'=concat(substr(s,1),s[0])を含んでいてもよい。ここで、数値0および1はストリング・ソルバーによって識別されうる。本質的には、この方法は、動作組み合わせを列挙して、大きな状態空間を探索して有効なモデルを得るものである。
Figure 2016152048
非パラメトリック・モジュール206は、概括的には、特定のモデルを使うことなく入力と出力の間の関係を決定するよう構成されていてもよい。非パラメトリック・モジュール206は、逃した分枝、潜在的なバグまたはセキュリティーの破れといった制約条件を得る新たな出力についての新たな入力を決定するために、条件を満たすよう指示される後ろ向き計算(backwards calculation)を使ってもよい。制約条件は既知なので、非パラメトリック・モジュール206は後ろ向き計算を使って、出力に対応する未知の入力を決定しうる。たとえば、非パラメトリック・モジュール206は、K近傍回帰を使って制約条件を識別し、一つまたは複数のデータ項目に基づいて該制約条件を満たす新たな入力および対応する新たな出力を決定してもよい。いくつかの実施形態では、非パラメトリック・モジュール206は、パラメトリック・モジュール204が当該データ・セットに当てはまるパラメトリック・モデルを決定し損なうことに応答して、入力と出力との間の関係を決定してもよい。いくつかの実施形態では、非パラメトリック・モジュール206は、パラメトリック・モジュール204とは独立に入力と出力との間の関係を決定してもよい。
下記は、K近傍回帰の例である。非パラメトリック・モジュール206は、データ・モジュール202からあるコンポーネントに関連付けられている既知の入力および対応する既知の出力を含むデータ・セットを受領する、あるいはメモリ227から該データ・セットを取り出してもよい。非パラメトリック・モジュール206は、将来のコードを受領し、該将来のコードから制約条件を識別してもよい。
非パラメトリック・モジュール206は、目標への近接性に基づいて、K個の近傍者のために、当該データ・セットから近傍データ項目を識別してもよい。各近傍データ項目は、近傍入力および対応する近傍出力を含んでいてもよい。Kはユーザーによって指定される、試験アプリケーション106についてデフォルト設定として設定されている、などでありうる。目標への近接性は、目標に最も近い近傍出力の数Kとして決定されてもよい。ここで、目標は制約条件を満たしていてもよい。
非パラメトリック・モジュール206は、K個の最近接近傍出力に対応する近傍入力を平均してもよい。近傍入力は、二次元座標対(1,10)、(2,19)および(−3,−20)のような二次元(三次元またはそれ以上)座標対によって指定されるデカルト座標系における点を含んでいてもよい。よって、非パラメトリック・モジュール206は該二次元座標対の三つのx座標(または第一の座標)を平均し、次いで該二次元座標対の三つのy座標(または第二の座標)を平均することによってそれらの点を平均してもよい。((1+2−3)/3,(10+19−20)/3)=(0,3)となる。
いくつかの実施形態では、非パラメトリック・モジュール206は、入力が非数値データを含む場合に近傍入力を平均してもよい。たとえば、入力はストリングを含んでいてもよい。非パラメトリック・モジュール206は、共有されるサブストリングを識別し、マッチしないサブストリングを識別し、マッチしないサブストリングの平均を計算してもよい。二つのストリングが平均されうる実施形態では、それぞれのマッチしないサブストリング対(t1∈s1、t2∈s2)について、非パラメトリック・モジュール206は以下の式を使って平均サブストリングtを計算してもよい。
Figure 2016152048
ここで、lenは平均サブストリングの長さを表わし、tは平均サブストリングであり、iはサブストリング中のキャラクタの位置である。
表8は、ストリング平均の例を含んでいる。ここで、第一列は第一のストリング(s1)を含み、第二列は第二のストリング(s2)を含み、第三列は第一のストリングおよび第二のストリングによって共有されるサブストリングを含み、第四列は第一のストリングと第二のストリングの平均を示す。
Figure 2016152048
もう一つの実施形態では、非パラメトリック・モジュール206は、ストリングの平均の計算を、上記のようにしてマッチしていないサブストリングを識別し、たとえば各キャラクタをASCIIキャラクタ・コードの十進数にマッピングすることによって各キャラクタを数に変換し、それらの数を平均し、平均をキャラクタに変換し戻し、そのキャラクタを共有されるサブストリングと組み合わせることによって行なってもよい。たとえば、二つのストリングがabcおよびabeである表8の第四行からの例を使うと、共有されるサブストリングはabである。共有されるサブストリングが各ストリングから除去された後、結果として得られるマッチしないサブストリングはcおよびeを含むことがありうる。非パラメトリック・モジュール206は、cがASCIIキャラクタ・コードにおける99に対応し、eが101に対応することを識別してもよい。平均は(99+101)/2=100であり、これはdに対応する。非パラメトリック・モジュール206は、共有されるサブストリングabを平均キャラクタdに加えてabdを得る。
非パラメトリック・モジュール206は平均を新たな入力として使ってもよい。該新たな入力を、非パラメトリック・モジュール206は新たな出力を計算するために使う。新たな出力が制約条件を満たす場合、非パラメトリック・モジュール206は新たな入力および新たな出力を受け入れる、終了する、あるいは新たな出力をユーザーに提供してもよい。新たな出力が制約条件を満たさない場合、非パラメトリック・モジュール206は新たな入力および新たな出力をデータ・セットに加えて、新たな出力を近傍出力と比較するさらなる反復工程を開始することを、更新された新たな出力が制約条件を満たすまたは非パラメトリック・モジュール206が行なわれた反復回数が多すぎると判定して非パラメトリック・モジュール206が終了するまで、続けてもよい。非パラメトリック・モジュール206は、新たな入力および新たな出力をデータ・モジュール202に送信してもよい。データ・モジュール202は、メモリ227にシステム・データ210として記憶されているデータ・セットを更新する。
次の例は、サークルおよびストリングを生成する未知の機能をもつコンポーネントを含んでいる。データ・モジュール202は、表9に示されるデータ・セットを受領してもよい。
Figure 2016152048
非パラメトリック・モジュール206は、制約条件((i−2.4)2+(i'−2.5)2==6.25 && s'.contains("aa"))が満たされる場合にセキュリティーの破れをトリガーしうる将来のコードを受領してもよい。非パラメトリック・モジュール206は制約条件が(i−2.4)2+(i'−2.5)2==6.25およびs'.contains("aa")を含みうることを判別してもよい。
非パラメトリック・モジュール206は、反復回数を1に設定してもよい。反復回数を追跡することは、非パラメトリック回帰が当該データ・セットについて正しくないモデルであることがありうるかどうかを判定するために有益でありうる。反復回数については下記でより詳細に述べる。
非パラメトリック・モジュール206は、Kについての値を受領してもよい。ここで、Kは非パラメトリック・モジュール206がK近傍回帰のために使用しうるデータ項目の数を表わす。Kはユーザーによって指定される、システムについてのデフォルト値の一部である、データ型に依存するなどであってもよい。いくつかの実施形態では、Kは動的に変更されてもよい。この例ではKは3である。
非パラメトリック・モジュール206は、K個の点の、ある曲線への距離の和が最小である諸データ項目を識別してもよい。この例では、非パラメトリック・モジュール206は、(0.1,"",0.5,"ab")、(0.8,"b",1.6,"bb")および(1.2,"abc",3,"bbb")をデータ項目として識別する。非パラメトリック・モジュール206は、これらのデータ点についての近傍入力を平均してもよい。たとえば、近傍入力についての平均iは、i=(0.1+0.8+1.2)/3=0.7として計算される。平均sはs=average("","b","abd")="ab"として計算される。
非パラメトリック・モジュール206は、データ項目についての平均近傍入力を、未知の機能をもつコンポーネントへの新たな入力として使って、新たな出力を生成してもよい。たとえば、新たな出力(i',s')は(1.1,"")である。非パラメトリック・モジュール206は、新たな入力および新たな出力が制約条件を満たすかどうかを判定してもよい。たとえば、非パラメトリック・モジュール206は((0.7−2.4)2+(1.1−2.5)2)が6.25に等しくなく、""が"aa"を含まないことを判別する。結果として、制約条件は満たされ得ない。
非パラメトリック・モジュール206は、これらの新たな入力および新たな出力をデータ・セットに加え、反復数を1増す。次の反復工程では、非パラメトリック・モジュール206は、K個の点の、ある曲線への距離の和が最小である諸データ点を識別してもよい。この例では、上記の新たな入力および新たな出力は近傍入力および近傍出力の一部になる。こうして、非パラメトリック・モジュール206は、近傍入力および近傍出力を、(0.7,"ab",1.1,"")、(0.8,"b",1.6,"bb")および(1.2,"abd",3,"bbb")として識別しうる。非パラメトリック・モジュール206はデータ点についての近傍入力を平均してもよい。たとえば、近傍入力についての平均iはi=(0.7+0.8+1.2)/3=0.9として計算される。平均sはs=average("ab","b","abd")="bd"として計算される。非パラメトリック・モジュール206は、新たな入力(0.9,"bc")についての更新された新たな出力(i',s')が(0.5,"aaa")であることを判別してもよい。
非パラメトリック・モジュール206は、新たな入力および更新された新たな出力が制約条件を満たすかどうかを判定してもよい。たとえば、パラメトリック・モジュール206は((0.9−2.4)2+(0.5−2.5)2)が6.25に等しく、"aaa"が"aa"を含んでいることを判別する。結果として、新たな入力および更新された新たな出力は受け入れられてもよい。
図3は、本稿に記載される少なくとも一つの実施形態に基づいて構成された、未知の機能をもつコンポーネントを試験する例示的な方法300のフローチャートを示している。方法300は、全体的または部分的に、図1または図2の試験アプリケーション106、図2の装置200または他の好適な装置、サーバーおよび/またはシステムによって実装されてもよい。図2の試験アプリケーション106はデータ・モジュール202、パラメトリック・モジュール204および非パラメトリック・モジュール206を含んでいてもよい。方法300はブロック302において始まってもよい。
ブロック302では、あるコンポーネントに関連する既知の入力および対応する既知の出力を含むデータ・セットが受領されてもよい。たとえば、図1の試験アプリケーション106および/または図2のデータ・モジュールが、そのコンポーネントに関連する既知の入力および対応する既知の出力を含むデータ・セットを受領してもよい。そのコンポーネントは未知の機能を含んでいてもよい。データ・セットは、図2のメモリ227にシステム・データ210として記憶されてもよい。
ブロック304は、データ・セットに基づいてパラメトリック・モデルが生成されてもよい。たとえば、図1の試験アプリケーション106および/または図2のパラメトリック・モジュール204がデータ・セットに基づいてパラメトリック・モデルを生成してもよい。パラメトリック・モデルは、正規表現モデルのような回帰モデルまたは他の型のパラメトリック・モデルを含みうる。
ブロック306では、パラメトリック・モデルがデータ・セットに当てはまるかどうかが判定される。たとえば、図1の試験アプリケーション106および/または図2のパラメトリック・モジュール204がパラメトリック・モデルがデータ・セットに当てはまるかどうかが判定してもよい。パラメトリック・モデルがデータ・セットに当てはまる場合(ブロック306においてYES)、ブロック306にブロック308が続いてもよい。パラメトリック・モデルがデータ・セットに当てはまらない場合(ブロック306においてNO)、ブロック306にブロック312が続いてもよい。
ブロック308では、当該コンポーネントに関連する新たな出力が受領されてもよい。たとえば、図1の試験アプリケーション106および/または図2のパラメトリック・モジュール204が当該コンポーネントに関連する新たな出力を受領してもよい。ブロック310では、パラメトリック・モデルに基づく前記新たな出力から新たな入力が決定されてもよい。たとえば、図1の試験アプリケーション106および/または図2のパラメトリック・モジュール204がパラメトリック・モデルに基づく前記新たな出力から新たな入力を決定してもよい。
ブロック312では、制約条件が識別されてもよい。たとえば、図1の試験アプリケーション106および/または図2の非パラメトリック・モジュール206が制約条件を識別してもよい。
ブロック314では、データ・セットの一つまたは複数の近傍データ項目に基づいて前記制約条件を満たす新たな入力および対応する新たな出力が決定されてもよい。たとえば、図1の試験アプリケーション106および/または図2の非パラメトリック・モジュール206が、データ・セットの一つまたは複数の近傍データ項目に基づいて前記制約条件を満たす新たな入力および対応する新たな出力を決定してもよい。近傍データ項目は、制約条件に基づく目標に近い、前記データ・セットからのデータ項目であってもよい。前記制約条件を満たす新たな入力および対応する新たな出力を決定することに基づいて、図1の試験アプリケーション106および/または図2の非パラメトリック・モジュール206が、当該コンポーネントの機能を自動的に判別する非パラメトリック・モデルを生成してもよい。
図4A〜4Bは、本項に記載される少なくとも一つの実施形態に基づいて構成された、図3のコンポーネントについてのパラメトリック・モデルを生成する例示的な方法400のフローチャートを示している。方法400は、図1または図2の試験アプリケーション106、図2の装置200または他の好適な装置、サーバーおよび/またはシステムのうちの一つまたは複数によって実装されうる。方法400はブロック402で始まる。
ブロック402では、データ・セットに関連付けられたデータ型に基づいて複数の型のパラメトリック・モデルからパラメトリック・モデルが選択される。たとえば、図1の試験アプリケーション106および/または図2のパラメトリック・モジュール204が、データ型に関連付けられたデータ型に基づいて複数の型のパラメトリック・モデルからパラメトリック・モデルを選択してもよい。図1の試験アプリケーション106および/または図2のパラメトリック・モジュール204は、前記複数の型のパラメトリック・モデルが、線形回帰モデル、多項式回帰モデル、非線形回帰モデル、正規表現モデルおよび動作シーケンス・ベースのモデルのうちの一つまたは複数を含むことを判別してもよい。図1の試験アプリケーション106および/または図2のパラメトリック・モジュール204は、ストリングを含むデータ型に基づいて正規表現モデルを選択してもよく、あるいはより一般に、データ・セットのデータ型に基づいてモデルのうちの対応するものを選択してもよい。
ブロック404では、データ・セット中の最初の項目を解析することによって初期モデルが生成されてもよい。たとえば、図1の試験アプリケーション106および/または図2のパラメトリック・モジュール204が、データ・セット中の最初の項目を解析することによって初期モデルを生成してもよい。これらおよび他の実装において、データ・セット中の最初の項目を解析することによって初期モデルを生成することは、上記のように、最初のデータ項目に基づいて抽出正規表現を生成することを含んでいてもよい。
ブロック406では、データ・セットからの次のデータ項目が未解析であって、該次のデータ項目が未解析の既知の入力および対応する未解析の既知の出力を含んでいるかが判定される。データ・セットからの次のデータ項目が解析済みであれば(ブロック408においてNO)、ブロック406にブロック408が続いてもよい。データ・セットからの次のデータ項目が未解析であれば(ブロック406においてYES)、ブロック406にブロック410が続いてもよい。
ブロック408では、パラメトリック・モデルについての制約条件が判別されてもよい。たとえば、図1の試験アプリケーション106および/または図2のパラメトリック・モジュール204が制約条件を決定してもよい。制約条件は、関連するデータを保護しうる。制約条件は、新たなモデルが必要とされたかどうかおよび/または該新たなモデルが初期モデルを置換したかどうかに依存して、初期モデル、新たなモデルまたは初期モデルと新たなモデルとの組み合わせに基づいてもよい。たとえば、初期モデルが最初の三つのデータ項目に当てはまり、新たなモデルが次の三つのデータ項目に当てはまる場合、図1の試験アプリケーション106および/または図2のパラメトリック・モジュール204は、初期モデルについて第一の制約条件を、新たなモデルについて第二の制約条件を決定してもよい。
ブロック410では、次のデータ項目における未解析の既知の入力が、初期モデルに基づいて解析されて、予測される出力を決定してもよい。たとえば、図1の試験アプリケーション106および/または図2のパラメトリック・モジュール204が、初期モデルに基づいて未解析の既知の入力を解析して、予測される出力を決定してもよい。
ブロック412では、予測された出力が対応する未解析の既知の出力にマッチするかどうかが判定される。たとえば、図1の試験アプリケーション106および/または図2のパラメトリック・モジュール204が、予測された出力が対応する未解析の既知の出力にマッチするかどうかを判定してもよい。予測された出力が対応する未解析の既知の出力にマッチする場合(ブロック412においてYES)、ブロック412にブロック406が続いてもよい。予測される出力が対応する未解析の既知の出力にマッチしない場合(ブロック412においてNO)は、ブロック412にブロック414が続いてもよい。
いくつかの実施形態では、予測された出力が対応する未解析の既知の出力にマッチしないことに応答して、初期モデルが一般化されてもよい。たとえば、パラメトリック・モデルが正規表現モデルを含む場合、初期モデルについての抽出正規表現が一般化されてもよい。一般化された初期モデルが次のデータ項目に当てはまるかどうかが判定されてもよく、一般化された初期モデルが次の項目に当てはまる場合、最初のデータ項目は初期モデルに関連付けられているものとして分類されてもよい。こうして、最初のデータ項目はグループ1の一部であり得、次のデータ項目はグループ2の一部でありうる。
ブロック414では、予測された出力と対応する未解析の既知の出力との間の誤り率が決定されてもよい。たとえば、図1の試験アプリケーション106および/または図2のパラメトリック・モジュール204が、予測された出力と対応する未解析の既知の出力との間の誤り率を決定してもよい。誤り率は、ストリング距離に基づくコスト関数として決定されてもよい。
ブロック416では、誤り率が閾値を超えるかどうかが判定される。たとえば、図1の試験アプリケーション106および/または図2のパラメトリック・モジュール204が、誤り率が閾値を超えるかどうかが判定してもよい。誤り率が閾値を超える場合(ブロック416においてYES)、ブロック416にブロック418が続いてもよい。誤り率が閾値未満であれば(ブロック416においてNO)、ブロック416にブロック424が続いてもよい。
ブロック418では、初期モデルが次のデータ項目に当てはまるよう一般化されることができるかどうかが判定される。たとえば、図1の試験アプリケーション106および/または図2のパラメトリック・モジュール204が、現在のモデルが次のデータ項目に当てはまるよう一般化されることができるかどうかを判定してもよい。たとえば、正規表現は、次のストリング項目を受け入れるように一般化されうる。初期モデルが一般化できない場合(ブロック418においてNO)、ブロック418にブロック420が続いてもよい。初期モデルが一般化できる場合(ブロック418においてYES)には、ブロック418にブロック424が続いてもよい。
ブロック420では、新たなモデルが次のデータ項目に基づいて選択されてもよい。たとえば、図1の試験アプリケーション106および/または図2のパラメトリック・モジュール204が、次のデータ項目に基づいて新たなモデルを選択してもよい。いくつかの実施形態では、パラメトリック・モジュール204は、初期モデルが次のデータ項目に当てはまるよう修正できない場合に新たなモデルを選択してもよい。ブロック422では、前記次のデータ項目に基づいて新たなモデルのために新たなパラメータが生成されてもよい。たとえば、図1の試験アプリケーション106および/または図2のパラメトリック・モジュール204が、前記次のデータ項目に基づいて新たなモデルのために新たなパラメータを生成してもよい。
ブロック424では、初期モデルに関連付けられたモデル・パラメータが、未解析の既知の入力および対応する未解析の既知の出力を組み込むよう更新されてもよい。たとえば、図1の試験アプリケーション106および/または図2のパラメトリック・モジュール204が、未解析の既知の入力および対応する未解析の既知の出力を組み込むよう初期モデルに関連するモデル・パラメータを更新してもよい。たとえばブロック410、412、414、416、418、420、422および424のうちの一つまたは複数に従って未解析のデータ項目が解析される際、ブロック406がブロック424に続いてもよい。これは、未解析のデータ項目が残っておらず、パラメトリック・モデルについての制約条件が決定されうるまで、続けられる。
図5は、本稿に記載される少なくとも一つの実施形態に基づいて構成された、特定のモデルを想定することなく図3のコンポーネントについて既知の入力と対応する既知の出力を関係付ける例示的方法500のフローチャートを示している。方法400は、全体的にまたは部分的に、図1または図2の試験アプリケーション106、図2の装置200または別の好適な装置、サーバーおよび/またはシステムのうちの一つまたは複数によって実装されてもよい。方法500はブロック502において始まってもよい。
ブロック502では、反復数が1に設定されてもよい。たとえば、図1の試験アプリケーション106および/または図2の非パラメトリック・モジュール206が、反復数を1に設定してもよい。
ブロック504では、目標への近接性に基づいて近傍データ項目が識別されてもよい。ここで、各近傍データ項目は近傍入力および対応する近傍出力を含む。たとえば、図1の試験アプリケーション106および/または図2の非パラメトリック・モジュール206が、目標への近接性に基づいて近傍データ項目を識別してもよい。目標への近接性は、目標に最も近いK個の近傍出力として決定されてもよい。ここで、目標は制約条件を満たしていてもよく、Kはユーザーによって定義されてもよい。
ブロック506では、諸近傍データ項目についての諸近傍入力を平均することに基づいて、新たな入力が決定されてもよい。たとえば、図1の試験アプリケーション106および/または図2の非パラメトリック・モジュール206が、近傍データ項目についての近傍入力を平均することに基づいて、新たな入力を決定してもよい。
ブロック508では、新たな入力に基づいて対応する新たな出力が決定されうる。たとえば、図1の試験アプリケーション106および/または図2の非パラメトリック・モジュール206が、新たな入力に基づいて対応する新たな出力を決定してもよい。非パラメトリック・モジュール206は、当該コンポーネントに基づいて新たな入力を解析することによって、対応する新たな出力を決定してもよい。
ブロック510では、対応する新たな出力が制約条件を満たすかどうかが判定される。たとえば、図1の試験アプリケーション106および/または図2の非パラメトリック・モジュール206が、対応する新たな出力が制約条件を満たすかどうかを判定してもよい。対応する新たな出力が制約条件を満たす場合(ブロック510においてYES)、ブロック510にはブロック512が続いてもよい。対応する新たな出力が制約条件を満たさない場合(ブロック510においてNO)には、ブロック510にはブロック514が続いてもよい。
ブロック512では、新たな入力および新たな出力が受け入れられてもよい。たとえば、図1の試験アプリケーション106および/または図2の非パラメトリック・モジュール206が、新たな入力および新たな出力を受け入れてもよい。
ブロック514では、反復数が閾値を超えているかどうかが判定される。たとえば、図1の試験アプリケーション106および/または図2の非パラメトリック・モジュール206が、反復数が閾値を超えているかどうかを判定してもよい。反復数が閾値を超えている場合(ブロック514においてYES)、ブロック514にはブロック516が続いてもよい。反復数が閾値未満である場合(ブロック514でNO)、ブロック514にはブロック518が続いてもよい。閾値はユーザーによって定義される、デフォルト値である、などでありうる。
ブロック516では、方法500は停止してもよい。たとえば、図1の試験アプリケーション106および/または図2の非パラメトリック・モジュール206が、方法500を停止させてもよい。方法500が停止するのは、反復数が閾値を超えているおよび特定のモデルを想定することなく既知の入力と対応する既知の出力との間の関係を決定することが可能であり得ない場合でありうる。いくつかの実施形態では、非パラメトリック方法が失敗したので、図1の試験アプリケーション106および/または図2のパラメトリック・モジュール204がパラメトリック・モデルを生成してもよい。
ブロック518では、新たな入力および対応する新たな出力をデータ・セットに加え、反復数を1増すことによってデータ・セットが更新されてもよい。たとえば、図1の試験アプリケーション106および/または図2の非パラメトリック・モジュール206が、新たな入力および対応する新たな出力をデータ・セットに加え、反復数を1増すことによってデータ・セットを更新してもよい。方法500が更新されたデータ・セットをもって次の反復工程を実行するので、ブロック518にはブロック504が続いてもよい。反復工程は、制約条件が満たされうるか、あるいは反復数が閾値を超えて方法500が終了するまで続けられてもよい。
本稿に記載される実施形態は、さまざまなコンピュータ・ハードウェアまたはソフトウェア・モジュールを含む専用または汎用コンピュータの使用を含んでいてもよい。これについて下記でより詳細に述べる。
本稿に記載される実施形態は、コンピュータ実行可能命令またはデータ構造を担持するまたは記憶するコンピュータ可読媒体を使って実装されてもよい。そのようなコンピュータ可読媒体は、汎用または専用コンピュータによってアクセスされうるいかなる利用可能な媒体を含んでいてもよい。限定ではなく例として、そのようなコンピュータ可読媒体は非一時的なコンピュータ可読記憶媒体を含んでいてもよく、それは、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、電気的に消去可能なプログラム可能型読み出し専用メモリ(EEPROM)、コンパクトディスク読み出し専用メモリ(CD-ROM)または他の光ディスク記憶、磁気ディスク記憶または他の磁気記憶デバイス、フラッシュ・メモリ・デバイス(たとえば半導体メモリ・デバイス)またはコンピュータ実行可能命令またはデータ構造の形で所望されるプログラム・コードを担持または記憶するために使用されうる、汎用または専用コンピュータによってアクセスされうる他の任意の記憶媒体を含んでいてもよい。上記の組み合わせも、コンピュータ可読媒体の範囲内に含められてもよい。
コンピュータ実行可能命令はたとえば、汎用コンピュータ、専用コンピュータまたは専用プロセッサ装置(たとえば一つまたは複数のプロセッサ)に、ある機能または機能群を実行させる命令およびデータを含んでいてもよい。主題は構造的な特徴および/または方法論的な工程に固有の言辞で記述されてきたが、付属の請求項において定義される主題は必ずしも上記の個別的な特徴または工程に限定されないことは理解される。むしろ、上記の個別的な特徴および工程は、請求項を実装する例示的な形として開示されている。
本稿での用法では、用語「モジュール」または「コンポーネント」は、コンピューティング・システムの汎用ハードウェア(たとえばコンピュータ可読媒体、プロセッサ装置など)に記憶および/または実行されうるモジュールまたはコンポーネントおよび/またはソフトウェア・オブジェクトまたはソフトウェア・ルーチンの動作を実行するよう構成された個別的なハードウェア実施形態を指すことがありうる。いくつかの実装では、本稿に記載される種々のコンポーネント、モジュール、エンジンおよびサービスは、コンピューティング・システム上で実行されるオブジェクトまたはプロセスとして実装されてもよい。本稿に記載されるシステムおよび方法のいくつかは一般に(汎用ハードウェアに記憶されるおよび/または実行される)ソフトウェアで実装されるものとして記述されるが、個別的なハードウェア実装またはソフトウェアおよび個別的ハードウェア実装の組み合わせも可能であり、考えられている。本稿において、「コンピューティング・エンティティ」は、本稿で先に定義した任意のコンピューティング・システムまたはコンピューティング・システム上で走る任意のモジュールまたはモジュレットの組み合わせであってよい。
本稿に記載されるすべての例および条件付きの言辞は、本発明および発明者によって当技術分野の発展のために寄与される概念の理解において読者を助ける教育目的を意図されており、そのような特定的に挙げられる例および条件に限定することなく解釈されるものとする。本発明の実施形態について詳細に述べてきたが、本発明の精神および範囲から外れることなく、これにさまざまな変化、代替および変更をなすことができることは理解しておくべきである。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
パラメトリック・モデルに基づいて入力と出力の間の関係を決定する方法であって:
あるコンポーネントに関する既知の入力および対応する既知の出力を含むデータ・セットを受領する段階と;
前記データ・セットに関連するデータ型に基づいて複数の型のパラメトリック・モデルからパラメトリック・モデルを選択することによって、前記データ・セットに基づいて前記コンポーネントの機能を自動的に判別するようパラメトリック・モデルを生成する段階と;
前記パラメトリック・モデルが前記データ・セットに当てはまるかどうかを判定する段階と;
前記パラメトリック・モデルが前記データ・セットに当てはまることを判定することに応答して、前記コンポーネントに関する新たな出力を受領する段階と;
前記パラメトリック・モデルに基づいて前記新たな出力から新たな入力を決定する段階とを含む、
方法。
(付記2)
前記データ型が非プリミティブ・データ型を含み;
前記非プリミティブ・データ型を含むデータ型に基づいて前記パラメトリック・モデルとして回帰モデルが選択される、
付記1記載の方法。
(付記3)
前記回帰モデルが、各既知の出力について抽出正規表現を識別し、それらの抽出正規表現を合併し、一般化された正規表現を生成するよう構成された正規表現モデルを含む、付記2記載の方法。
(付記4)
前記回帰モデルが、前記既知の入力から前記対応する既知の出力を帰結させる動作を決定するよう構成されている動作シーケンス・ベースのモデルを含む、付記2記載の方法。
(付記5)
前記データ・セットからの次のデータ項目が未解析であるかどうかを判定する段階であって、前記次のデータ項目が未解析の既知の入力および対応する未解析の既知の出力を含む、段階と;
前記データ・セットからの前記次のデータ項目が解析されるのに応答して、前記パラメトリック・モデルについての制約条件を決定する段階とをさらに含む、
付記1記載の方法。
(付記6)
前記複数の型のパラメトリック・モデルが、線形回帰モデル、多項式回帰モデル、非線形回帰モデル、正規表現モデルまたは動作シーケンス・ベースのモデルの一つまたは複数を含む、付記1記載の方法。
(付記7)
前記データ・セットにおける最初のデータ項目を解析することによって前記パラメトリック・モデルについての初期モデルを生成する段階と;
前記データ・セットからの次のデータ項目が未解析であるかどうかを判定する段階であって、前記次のデータ項目が未解析の既知の入力および対応する未解析の既知の出力を含む、段階と;
前記データ・セットからの前記次のデータ項目が未解析であることに応答して、前記未解析の既知の入力を前記初期モデルに基づいて解析して、予測される出力を決定する段階と;
予測された出力が前記対応する未解析の既知の出力にマッチするかどうかを判定する段階と;
前記予測された出力が前記対応する未解析の既知の出力にマッチすることに応答して、前記データ・セットからのさらなるデータ項目が未解析であるかどうかを判定する段階とをさらに含む、
付記1記載の方法。
(付記8)
前記予測された出力が前記対応する未解析の既知の出力にマッチしないことに応答して、前記予測された出力と前記対応する未解析の既知の出力との間の誤り率を決定する段階と;
前記誤り率が閾値を超えるかどうかを判定する段階と;
前記誤り率が前記閾値を超えないことに応答して、前記初期モデルが、前記次のデータ項目に当てはまるよう一般化されることができるかどうかを判定する段階と;
前記初期モデルが、前記次のデータ項目に当てはまるよう一般化されることができることに応答して、前記初期モデルに関連するモデル・パラメータを、前記未解析の既知の入力および前記対応する未解析の既知の出力を組み込むよう更新する段階と;
前記データ・セットからのさらなるデータ項目が未解析であるかどうかを判定する段階とをさらに含む、
付記7記載の方法。
(付記9)
前記誤り率が前記閾値を超えることに応答して、前記次のデータ項目に基づく新たなモデルを選択する段階と;
前記次のデータ項目に基づいて前記新たなモデルについての新たなパラメータを生成する段階と;
前記データ・セットからのさらなるデータ項目が未解析であるかどうかを判定する段階とをさらに含む、
付記8記載の方法。
(付記10)
前記予測された出力が前記対応する未解析の既知の出力にマッチしないことに応答して、前記初期モデルを一般化する段階と;
前記一般化された初期モデルが前記次のデータ項目に当てはまるかどうかを判定する段階と;
前記一般化された初期モデルが前記次のデータ項目に当てはまらないことに応答して、前記最初のデータ項目を、前記初期モデルに関連付けられているとして分類する段階と;
前記次のデータ項目を、前記新たなモデルに関連付けられているとして分類する段階とをさらに含む、
付記9記載の方法。
(付記11)
特定のモデルを想定することなく入力と出力を関係付ける方法であって:
あるコンポーネントに関連する既知の入力および対応する既知の出力を含むデータ・セットを受領する段階と;
制約条件を識別する段階と;
目標への近接性に基づいて近傍データ項目を識別する段階であって、各近傍データ項目は近傍入力および対応する近傍出力を含む、段階と;
諸近傍データ項目についての諸近傍入力を平均することに基づいて、新たな入力を決定する段階と;
前記新たな入力に基づいて、対応する新たな出力を決定する段階と;
前記対応する新たな出力が前記制約条件を満たすかどうかを判定する段階と;
前記コンポーネントの機能を自動的に判別する非パラメトリック・モデルを生成する段階とを含む、
方法。
(付記12)
反復数を1に設定する段階と;
前記対応する新たな出力が前記制約条件を満たさないことに応答して、反復数が閾値を超えているかどうかを判定する段階と;
反復数が前記閾値を超えてないことに応答して、前記新たな入力および前記対応する新たな出力を前記データ・セットに加えて、反復数を1増すことによって、前記データ・セットを更新する段階とをさらに含む、
付記11記載の方法。
(付記13)
反復数が前記閾値を超えていることに応答して、パラメトリック・モデルを生成する段階をさらに含む、付記12記載の方法。
(付記14)
機能が未知のコードを解析する方法であって:
あるコンポーネントに関連する既知の入力および対応する既知の出力を含むデータ・セットを受領する段階と;
前記データ・セットに基づいてパラメトリック・モデルを生成することを、該生成を実行するまたはその実行を制御するようプログラムされたプロセッサ装置を使って行なう段階と;
前記パラメトリック・モデルが前記データ・セットに当てはまるかどうかを判定する段階と;
前記パラメトリック・モデルが前記データ・セットに当てはまらないことに応答して、制約条件を識別する段階と;
前記制約条件を満たす新たな入力および対応する新たな出力を、前記データ・セットの一つまたは複数のデータ項目に基づいて決定する段階と;
前記コンポーネントの機能を自動的に判別するよう非パラメトリック・モデルを生成する段階とを含む、
方法。
(付記15)
前記パラメトリック・モデルが前記データ・セットに当てはまることに応答して、前記制約条件に関連する新たな出力を受領する段階と;
前記パラメトリック・モデルに基づいて、記新たな出力から新たな入力を決定する段階とをさらに含む、
付記14記載の方法。
(付記16)
前記データ・セットに基づいて前記パラメトリック・モデルを生成する段階が:
前記データ・セット中の最初の項目を適用することによって初期モデルを生成する段階と;
前記データ・セットからの次のデータ項目が未解析であるかどうかを判定する段階であって、前記次のデータ項目が未解析の既知の入力および対応する未解析の既知の出力を含む、段階と;
前記データ・セットからの前記次のデータ項目が未解析であることに応答して、前記未解析の既知の入力を前記初期モデルに基づいて解析して、予測される出力を決定する段階とを含む、
付記15記載の方法。
(付記17)
予測された出力が対応する未解析の既知の出力にマッチするかどうかを判定する段階と;
前記予測された出力が前記対応する未解析の既知の出力にマッチしないことに応答して、前記予測された出力と前記対応する未解析の既知の出力との間の誤り率を決定する段階と;
前記誤り率が閾値を超えているかどうかを判定する段階と;
前記誤り率が前記閾値を超えないことに応答して、前記未解析の既知の入力および前記対応する未解析の既知の出力を組み込むよう、前記初期モデルに関連するモデル・パラメータを更新する段階と;
前記データ・セットの一部であるさらなるデータ項目が未解析であるかどうかを判定する段階とをさらに含む、
付記16記載の方法。
(付記18)
前記誤り率が前記閾値を超えていることに応答して、前記次のデータ項目に基づく新たなモデルを選択する段階と;
前記次のデータ項目に基づいて前記新たなモデルについての新たなパラメータを生成する段階と;
前記データ・セットの一部であるさらなるデータ項目が未解析であるかどうかを判定する段階とをさらに含む、
付記17記載の方法。
(付記19)
前記制約条件を満たす前記新たな入力および前記対応する新たな出力を、前記データ・セットの一つまたは複数のデータ項目に基づいて決定する段階が:
目標への近接性に基づいて近傍データ項目を識別する段階であって、各近傍データ項目は近傍入力および対応する近傍出力を含む、段階と;
諸近傍データ項目についての諸近傍入力を平均することに基づいて、前記新たな入力を決定する段階と;
前記新たな入力に基づいて、前記対応する新たな出力を決定する段階と;
前記対応する新たな出力が前記制約条件にマッチするかどうかを判定する段階とを含む、
付記14記載の方法。
(付記20)
反復数を1に設定する段階と;
前記対応する新たな出力が前記制約条件を満たさないことに応答して、反復数が閾値を超えているかどうかを判定する段階とをさらに含む、
付記19記載の方法。
104 試験対象コンポーネント
106 試験アプリケーション
108 出力
110 試験ケース
112 バグ
114 セキュリティー脆弱性
202 データ・モジュール
204 パラメトリック・モジュール
206 非パラメトリック・モジュール
210 システム・データ
225 プロセッサ装置
227 メモリ
302 あるコンポーネントに関連する既知の入力および対応する既知の出力を含むデータ・セットを受領
304 データ・セットに基づいてコンポーネントの機能を自動的に決定するパラメトリック・モデルを生成
306 パラメトリック・モデルがデータ・セットに当てはまるか?
308 当該コンポーネントに関連する新たな出力を受領
310 パラメトリック・モデルに基づく前記新たな出力から新たな入力を決定
312 制約条件を識別
314 制約条件を満たす新たな入力および対応する新たな出力を決定。データ・セットの一つまたは複数の近傍データ項目に基づいて比較することを含む
402 データ・セットに関連付けられたデータ型に基づいて複数の型のパラメトリック・モデルからパラメトリック・モデルを選択
404 データ・セット中の最初の項目を解析することによってパラメトリック・モデルについての初期モデルを生成
406 未解析の既知の入力および対応する未解析の既知の出力を含む、データ・セットからの次のデータ項目が未解析であるか?
408 パラメトリック・モデルについての制約条件を判別
410 未解析の既知の入力を初期モデルに基づいて解析して、予測される出力を決定
412 予測された出力が対応する未解析の既知の出力にマッチするか?
414 予測された出力と対応する未解析の既知の出力との間の誤り率を決定
416 誤り率が閾値を超えるか?
418 初期モデルが次のデータ項目に当てはまるよう一般化できるか?
420 次のデータ項目に基づいて新たなモデルを選択
422 次のデータ項目に基づいて新たなモデルのために新たなパラメータを生成
424 初期モデルに関連付けられたモデル・パラメータを、未解析の既知の入力および対応する未解析の既知の出力を組み込むよう更新
502 反復数を1に設定
504 目標への近接性に基づいて近傍データ項目を識別。各近傍データ項目は近傍入力および対応する近傍出力を含む
506 諸近傍データ項目についての諸近傍入力を平均することに基づいて、新たな入力を決定
508 新たな入力に基づいて対応する新たな出力を決定
510 対応する新たな出力が目標制約条件を満たすか?
512 新たな入力および新たな出力を受け入れ
514 反復数が閾値を超えているか?
516 停止
518 新たな入力および対応する新たな出力をデータ・セットに加え、反復数を1増すことによってデータ・セットを更新

Claims (20)

  1. パラメトリック・モデルに基づいて入力と出力の間の関係を決定する方法であって:
    あるコンポーネントに関する既知の入力および対応する既知の出力を含むデータ・セットを受領する段階と;
    前記データ・セットに関連するデータ型に基づいて複数の型のパラメトリック・モデルからパラメトリック・モデルを選択することによって、前記データ・セットに基づいて前記コンポーネントの機能を自動的に判別するようパラメトリック・モデルを生成する段階と;
    前記パラメトリック・モデルが前記データ・セットに当てはまるかどうかを判定する段階と;
    前記パラメトリック・モデルが前記データ・セットに当てはまることを判定することに応答して、前記コンポーネントに関する新たな出力を受領する段階と;
    前記パラメトリック・モデルに基づいて前記新たな出力から新たな入力を決定する段階とを含む、
    方法。
  2. 前記データ型が非プリミティブ・データ型を含み;
    前記非プリミティブ・データ型を含むデータ型に基づいて前記パラメトリック・モデルとして回帰モデルが選択される、
    請求項1記載の方法。
  3. 前記回帰モデルが、各既知の出力について抽出正規表現を識別し、それらの抽出正規表現を合併し、一般化された正規表現を生成するよう構成された正規表現モデルを含む、請求項2記載の方法。
  4. 前記回帰モデルが、前記既知の入力から前記対応する既知の出力を帰結させる動作を決定するよう構成されている動作シーケンス・ベースのモデルを含む、請求項2記載の方法。
  5. 前記データ・セットからの次のデータ項目が未解析であるかどうかを判定する段階であって、前記次のデータ項目が未解析の既知の入力および対応する未解析の既知の出力を含む、段階と;
    前記データ・セットからの前記次のデータ項目が解析されるのに応答して、前記パラメトリック・モデルについての制約条件を決定する段階とをさらに含む、
    請求項1記載の方法。
  6. 前記複数の型のパラメトリック・モデルが、線形回帰モデル、多項式回帰モデル、非線形回帰モデル、正規表現モデルまたは動作シーケンス・ベースのモデルの一つまたは複数を含む、請求項1記載の方法。
  7. 前記データ・セットにおける最初のデータ項目を解析することによって前記パラメトリック・モデルについての初期モデルを生成する段階と;
    前記データ・セットからの次のデータ項目が未解析であるかどうかを判定する段階であって、前記次のデータ項目が未解析の既知の入力および対応する未解析の既知の出力を含む、段階と;
    前記データ・セットからの前記次のデータ項目が未解析であることに応答して、前記未解析の既知の入力を前記初期モデルに基づいて解析して、予測される出力を決定する段階と;
    予測された出力が前記対応する未解析の既知の出力にマッチするかどうかを判定する段階と;
    前記予測された出力が前記対応する未解析の既知の出力にマッチすることに応答して、前記データ・セットからのさらなるデータ項目が未解析であるかどうかを判定する段階とをさらに含む、
    請求項1記載の方法。
  8. 前記予測された出力が前記対応する未解析の既知の出力にマッチしないことに応答して、前記予測された出力と前記対応する未解析の既知の出力との間の誤り率を決定する段階と;
    前記誤り率が閾値を超えるかどうかを判定する段階と;
    前記誤り率が前記閾値を超えないことに応答して、前記初期モデルが、前記次のデータ項目に当てはまるよう一般化されることができるかどうかを判定する段階と;
    前記初期モデルが、前記次のデータ項目に当てはまるよう一般化されることができることに応答して、前記初期モデルに関連するモデル・パラメータを、前記未解析の既知の入力および前記対応する未解析の既知の出力を組み込むよう更新する段階と;
    前記データ・セットからのさらなるデータ項目が未解析であるかどうかを判定する段階とをさらに含む、
    請求項7記載の方法。
  9. 前記誤り率が前記閾値を超えることに応答して、前記次のデータ項目に基づく新たなモデルを選択する段階と;
    前記次のデータ項目に基づいて前記新たなモデルについての新たなパラメータを生成する段階と;
    前記データ・セットからのさらなるデータ項目が未解析であるかどうかを判定する段階とをさらに含む、
    請求項8記載の方法。
  10. 前記予測された出力が前記対応する未解析の既知の出力にマッチしないことに応答して、前記初期モデルを一般化する段階と;
    前記一般化された初期モデルが前記次のデータ項目に当てはまるかどうかを判定する段階と;
    前記一般化された初期モデルが前記次のデータ項目に当てはまらないことに応答して、前記最初のデータ項目を、前記初期モデルに関連付けられているとして分類する段階と;
    前記次のデータ項目を、前記新たなモデルに関連付けられているとして分類する段階とをさらに含む、
    請求項9記載の方法。
  11. 特定のモデルを想定することなく入力と出力を関係付ける方法であって:
    あるコンポーネントに関連する既知の入力および対応する既知の出力を含むデータ・セットを受領する段階と;
    制約条件を識別する段階と;
    目標への近接性に基づいて近傍データ項目を識別する段階であって、各近傍データ項目は近傍入力および対応する近傍出力を含む、段階と;
    諸近傍データ項目についての諸近傍入力を平均することに基づいて、新たな入力を決定する段階と;
    前記新たな入力に基づいて、対応する新たな出力を決定する段階と;
    前記対応する新たな出力が前記制約条件を満たすかどうかを判定する段階と;
    前記コンポーネントの機能を自動的に判別する非パラメトリック・モデルを生成する段階とを含む、
    方法。
  12. 反復数を1に設定する段階と;
    前記対応する新たな出力が前記制約条件を満たさないことに応答して、反復数が閾値を超えているかどうかを判定する段階と;
    反復数が前記閾値を超えてないことに応答して、前記新たな入力および前記対応する新たな出力を前記データ・セットに加えて、反復数を1増すことによって、前記データ・セットを更新する段階とをさらに含む、
    請求項11記載の方法。
  13. 反復数が前記閾値を超えていることに応答して、パラメトリック・モデルを生成する段階をさらに含む、請求項12記載の方法。
  14. 機能が未知のコードを解析する方法であって:
    あるコンポーネントに関連する既知の入力および対応する既知の出力を含むデータ・セットを受領する段階と;
    前記データ・セットに基づいてパラメトリック・モデルを生成することを、該生成を実行するまたはその実行を制御するようプログラムされたプロセッサ装置を使って行なう段階と;
    前記パラメトリック・モデルが前記データ・セットに当てはまるかどうかを判定する段階と;
    前記パラメトリック・モデルが前記データ・セットに当てはまらないことに応答して、制約条件を識別する段階と;
    前記制約条件を満たす新たな入力および対応する新たな出力を、前記データ・セットの一つまたは複数のデータ項目に基づいて決定する段階と;
    前記コンポーネントの機能を自動的に判別するよう非パラメトリック・モデルを生成する段階とを含む、
    方法。
  15. 前記パラメトリック・モデルが前記データ・セットに当てはまることに応答して、前記制約条件に関連する新たな出力を受領する段階と;
    前記パラメトリック・モデルに基づいて、記新たな出力から新たな入力を決定する段階とをさらに含む、
    請求項14記載の方法。
  16. 前記データ・セットに基づいて前記パラメトリック・モデルを生成する段階が:
    前記データ・セット中の最初の項目を適用することによって初期モデルを生成する段階と;
    前記データ・セットからの次のデータ項目が未解析であるかどうかを判定する段階であって、前記次のデータ項目が未解析の既知の入力および対応する未解析の既知の出力を含む、段階と;
    前記データ・セットからの前記次のデータ項目が未解析であることに応答して、前記未解析の既知の入力を前記初期モデルに基づいて解析して、予測される出力を決定する段階とを含む、
    請求項15記載の方法。
  17. 予測された出力が対応する未解析の既知の出力にマッチするかどうかを判定する段階と;
    前記予測された出力が前記対応する未解析の既知の出力にマッチしないことに応答して、前記予測された出力と前記対応する未解析の既知の出力との間の誤り率を決定する段階と;
    前記誤り率が閾値を超えているかどうかを判定する段階と;
    前記誤り率が前記閾値を超えないことに応答して、前記未解析の既知の入力および前記対応する未解析の既知の出力を組み込むよう、前記初期モデルに関連するモデル・パラメータを更新する段階と;
    前記データ・セットの一部であるさらなるデータ項目が未解析であるかどうかを判定する段階とをさらに含む、
    請求項16記載の方法。
  18. 前記誤り率が前記閾値を超えていることに応答して、前記次のデータ項目に基づく新たなモデルを選択する段階と;
    前記次のデータ項目に基づいて前記新たなモデルについての新たなパラメータを生成する段階と;
    前記データ・セットの一部であるさらなるデータ項目が未解析であるかどうかを判定する段階とをさらに含む、
    請求項17記載の方法。
  19. 前記制約条件を満たす前記新たな入力および前記対応する新たな出力を、前記データ・セットの一つまたは複数のデータ項目に基づいて決定する段階が:
    目標への近接性に基づいて近傍データ項目を識別する段階であって、各近傍データ項目は近傍入力および対応する近傍出力を含む、段階と;
    諸近傍データ項目についての諸近傍入力を平均することに基づいて、前記新たな入力を決定する段階と;
    前記新たな入力に基づいて、前記対応する新たな出力を決定する段階と;
    前記対応する新たな出力が前記制約条件にマッチするかどうかを判定する段階とを含む、
    請求項14記載の方法。
  20. 反復数を1に設定する段階と;
    前記対応する新たな出力が前記制約条件を満たさないことに応答して、反復数が閾値を超えているかどうかを判定する段階とをさらに含む、
    請求項19記載の方法。
JP2016024990A 2015-02-16 2016-02-12 統計的学習によるブラックボックス・ソフトウェア試験 Pending JP2016152048A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/623,399 US20160239401A1 (en) 2015-02-16 2015-02-16 Black-box software testing with statistical learning
US14/623,399 2015-02-16

Publications (1)

Publication Number Publication Date
JP2016152048A true JP2016152048A (ja) 2016-08-22

Family

ID=56622321

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016024990A Pending JP2016152048A (ja) 2015-02-16 2016-02-12 統計的学習によるブラックボックス・ソフトウェア試験

Country Status (2)

Country Link
US (1) US20160239401A1 (ja)
JP (1) JP2016152048A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6494887B1 (ja) * 2018-05-30 2019-04-03 三菱電機株式会社 検査装置、検査方法及び検査プログラム
US11941018B2 (en) 2018-06-13 2024-03-26 Oracle International Corporation Regular expression generation for negative example using context
JP7493462B2 (ja) 2018-06-13 2024-05-31 オラクル・インターナショナル・コーポレイション 正規表現コード上で最長共通サブシーケンスアルゴリズムを用いた正規表現生成

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9952962B2 (en) * 2015-03-26 2018-04-24 International Business Machines Corporation Increasing accuracy of traceability links and structured data
KR20180078897A (ko) 2016-12-30 2018-07-10 삼성전자주식회사 반도체 장치의 테스트 방법 및 이를 수행하는 테스트 시스템
US10691526B2 (en) * 2017-11-08 2020-06-23 International Business Machines Corporation Automatic error fixes for high-availability applications
CN108763070A (zh) * 2018-05-16 2018-11-06 北京金山云网络技术有限公司 测试数据的生成方法、装置及电子设备
FR3097665B1 (fr) * 2019-06-20 2021-10-01 Thales Sa Procédé de validation automatique de cots et dispositif pour la mise en oeuvre du procédé
US11586517B1 (en) * 2022-01-27 2023-02-21 International Business Machines Corporation Automated internet of things device testing including modifying a device table to generate an association table

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6494887B1 (ja) * 2018-05-30 2019-04-03 三菱電機株式会社 検査装置、検査方法及び検査プログラム
WO2019229883A1 (ja) * 2018-05-30 2019-12-05 三菱電機株式会社 検査装置、検査方法及び検査プログラム
US11941018B2 (en) 2018-06-13 2024-03-26 Oracle International Corporation Regular expression generation for negative example using context
JP7493462B2 (ja) 2018-06-13 2024-05-31 オラクル・インターナショナル・コーポレイション 正規表現コード上で最長共通サブシーケンスアルゴリズムを用いた正規表現生成

Also Published As

Publication number Publication date
US20160239401A1 (en) 2016-08-18

Similar Documents

Publication Publication Date Title
JP2016152048A (ja) 統計的学習によるブラックボックス・ソフトウェア試験
Zanella Informed proposals for local MCMC in discrete spaces
Zhang et al. LSHiForest: A generic framework for fast tree isolation based ensemble anomaly analysis
Hido et al. A linear-time graph kernel
Yu et al. Dual coordinate descent methods for logistic regression and maximum entropy models
Pellet et al. Using markov blankets for causal structure learning.
Liu et al. Noisy data elimination using mutual k-nearest neighbor for classification mining
US7854002B2 (en) Pattern matching for spyware detection
Ahmed et al. A novel decision tree classification based on post-pruning with Bayes minimum risk
Chen et al. A novel self-learning feature selection approach based on feature attributions
Da San Martino et al. Tree-based kernel for graphs with continuous attributes
Nguyen et al. An efficient local region and clustering-based ensemble system for intrusion detection
Masabo et al. Big data: deep learning for detecting malware
Searles et al. Parallelization of machine learning applied to call graphs of binaries for malware detection
Avraham et al. The discrete and semicontinuous Fréchet distance with shortcuts via approximate distance counting and selection
Rossolini et al. Increasing the confidence of deep neural networks by coverage analysis
CN116361788A (zh) 一种基于机器学习的二进制软件漏洞预测方法
Ji et al. Vestige: Identifying binary code provenance for vulnerability detection
Saberi et al. A passive online technique for learning hybrid automata from input/output traces
Yamany et al. Ransomware clustering and classification using similarity matrix
US20230075290A1 (en) Method for linking a cve with at least one synthetic cpe
Mi et al. An automated vulnerability detection framework for smart contracts
Bonner et al. Gfp-x: a parallel approach to massive graph comparison using spark
US9619362B2 (en) Event sequence construction of event-driven software by combinational computations
Saifullah et al. Exploring type inference techniques of dynamically typed languages

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181011

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190815

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191001

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20200414