JP2017531855A - データ駆動型検査用フレームワーク - Google Patents

データ駆動型検査用フレームワーク Download PDF

Info

Publication number
JP2017531855A
JP2017531855A JP2017513040A JP2017513040A JP2017531855A JP 2017531855 A JP2017531855 A JP 2017531855A JP 2017513040 A JP2017513040 A JP 2017513040A JP 2017513040 A JP2017513040 A JP 2017513040A JP 2017531855 A JP2017531855 A JP 2017531855A
Authority
JP
Japan
Prior art keywords
data
inspection
application
engineered
environment
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.)
Granted
Application number
JP2017513040A
Other languages
English (en)
Other versions
JP6723989B2 (ja
Inventor
フィリップ プリンツ
フィリップ プリンツ
マーシャル アラン イスマン
マーシャル アラン イスマン
Original Assignee
アビニシオ テクノロジー エルエルシー
アビニシオ テクノロジー エルエルシー
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 アビニシオ テクノロジー エルエルシー, アビニシオ テクノロジー エルエルシー filed Critical アビニシオ テクノロジー エルエルシー
Publication of JP2017531855A publication Critical patent/JP2017531855A/ja
Application granted granted Critical
Publication of JP6723989B2 publication Critical patent/JP6723989B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • G06F11/3692Test management for test results analysis
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • 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/3676Test management for coverage analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

アプリケーションを検査するための装置は、メモリとメモリに動作可能に接続されるプロセッサとを有するデータ処理機械を含む。データ処理機械は、データエンジニアリングモジュール(16)と、計算環境マネージャ(44)と、結果分析モジュール(72)とを含むデータ駆動型検査用フレームワークを実装するように構成される。データエンジニアリングモジュールは、検査を受けるアプリケーションに少なくとも部分的に基づいて工学設計された検査データを作り出すように構成される。計算環境マネージャは、工学設計された検査データ上でアプリケーションが動作するべき計算環境を制御するように構成される。結果分析モジュールは、アプリケーションが動作した工学設計された検査データを予想される出力と比較するように構成される。

Description

関連出願の相互参照
本出願は、米国出願第62/047,256号明細書の優先日2014年9月8日の利益を主張するものである。
本開示は、品質管理に関し、詳細には、ソフトウェアアプリケーション中の欠陥又は欠点を識別するために使用されるデバイス及び方法に関する。
データ処理機械は、それを汎用コンピュータから特定のタスクを実行する専用機械へと変換する再設定を必要とする。結果として得られる再設定は、汎用コンピュータが以前は実行できなかった物事を実行する能力を汎用コンピュータにもたらすことで、汎用コンピュータをこうして改善する。この再設定は、典型的には、汎用コンピュータにある種の特殊なソフトウェアを実行させることによって実行される。この特殊なソフトウェアは、「アプリケーション」又は「アプリ」と呼ばれることが多い。
大きいプロジェクトでは、検査を受けるアプリケーションは、エンジニアのチームによって設計されて実装される。このアプリケーションは、次いで品質保証チームに提供される。品質保証チームは、典型的には、設計チームとは別個である。品質保証チームは、このアプリケーション中の欠陥又は欠点の調査を進める。
アプリケーションを検査するための手順は、非常に難しい可能性がある。この難しさは、多くの理由で生じる。そのような理由の1つは、品質保証チームが、本質的に否定的見解、すなわち、検査されているソフトウェア中に欠陥又は欠点が存在しないことを証明しようと試みているのであるということである。一般的に、あらゆる可能な事例をカバーするために大量の検査を行うのは、コスト効果的でない。したがって、検査データを賢明に選択することが必要である。
アプリケーションを検査するための手順における別の難しさは、検査が行われる環境が違いを起こす可能性があることである。環境とは、一般的に、実行中であるソフトウェア、及びアプリケーションが操作することが意図されるデータの両方を含む。検査されているアプリケーションと他のソフトウェアの間の相互作用の場合、どの他のソフトウェアが実行中であるのかを知ることが重要である。正しいデータを存在させることが重要である。というのは、検査されているアプリケーションの特徴は、アプリケーションに提供されるデータに非常に依存するためである。例えば、アプリケーションは、データベースからのある種のデータを要求する場合がある。そのような場合では、アプリケーションの検査は、データベースが正しいデータを有するかどうかを知っていることが必要である。したがって、品質保証チームは、一般的に、環境を制御するステップを行う。
アプリケーションの検査において生じるさらに別の難しさは、結果の完全性を確立することである。いくつかの場合では、特定の環境中で処理される入力データの所与の入力の組について、どんな結果が「正しい」又は「誤り」と考えるべきかを知ることが困難な場合がある。
検査は、ソフトウェア開発のライフサイクルの主要な部分であるので、検査をより効率的に実行する方法を提供するのは有用である。
一態様では、本発明は、アプリケーションを検査するための装置を特徴とする。そのような装置は、メモリとメモリに動作可能に接続されるプロセッサとを有するデータ処理機械を含む。データ処理機械は、データエンジニアリングモジュールと、計算環境マネージャと、結果分析モジュールとを含むデータ駆動型検査用フレームワークを実装するように構成される。データエンジニアリングモジュールは、検査を受けるアプリケーションに少なくとも部分的に基づいて工学設計された検査データを作り出すように構成される。一方、計算環境マネージャは、工学設計された検査データをアプリケーションが操作するべき計算環境を制御するように構成される。最後に、結果分析モジュールは、アプリケーションによる操作を受けた工学設計された検査データを予想される出力と比較するように構成される。
いくつかの実施形態では、データエンジニアリングモジュールは、プロダクションデータのサブセットを抽出するように構成される。このサブセットは、指定されるコードカバレッジを達成するように選択される。工学設計された検査データは、次いで、プロダクションデータのこのサブセットを含むことになる。
他の実施形態では、データエンジニアリングモジュールは、プロダクションデータから精製されたデータを生成するためのデータ精製器を含む。
本発明の範囲内にやはり含まれるのは、データエンジニアリングモジュールが、プロダクションデータのサブセットを抽出し、サブセットを追加データで補強し、それによって補強データを生成するように構成される実施形態である。追加データは、指定されたコードカバレッジを達成するように選択され、工学設計された検査データは補強データを含む。
いくつかの実施形態では、データエンジニアリングモジュールは、データ精製器と、データ精製器からの精製されたデータを受け取り精製されたデータを拡張するためのデータ拡張器とを含む。
さらなる実施形態としては、データエンジニアリングモジュールが、検査を受けるアプリケーションに少なくとも部分的に基づいてデータを生成するように構成される実施形態が挙げられる。生成されるデータは、指定されるコードカバレッジを達成するように選択され、工学設計される検査データは、生成されるデータを含む。
他の実施形態としては、データエンジニアリングモジュールが肯定データを生成するための肯定データ製造器をさらに含む実施形態、データエンジニアリングモジュールが検査を受けるアプリケーションに少なくとも部分的に基づいてデータを生成するように構成され、そのデータがプロダクションデータにない実施形態、及びデータエンジニアリングモジュールが否定データを生成するための否定データ製造器をさらに含む実施形態が挙げられる。
いくつかの実施形態では、データエンジニアリングモジュールは、工学設計された検査データを生成するための手段を含む。
さらなる実施形態としては、データエンジニアリングモジュールが工学設計された検査データの参照整合性を決定するための整合性チェッカを含む実施形態、並びにデータエンジニアリングモジュールが参照整合性中のエラーを検出するようにさらに構成される実施形態が挙げられる。
データ中の参照整合性の損失を、工学設計された検査データとしてデータを出力する前に訂正するための再参照器をデータエンジニアリングモジュールが含む実施形態、及びデータエンジニアリングモジュールがデータ中の参照整合性の損失を訂正するようにさらに構成される実施形態がやはり挙げられる。
さらなる実施形態としては、データエンジニアリングモジュールが、工学設計された検査データを受け取り、工学設計された検査データを閲覧すること又は工学設計された検査データのプロファイリングを行うことのいずれかをユーザに可能にする点検ユニットを含む実施形態、データエンジニアリングモジュールが、工学設計された検査データを受け取り、工学設計された検査データを閲覧することをユーザに可能にするデータ点検ユニットを含む実施形態、データエンジニアリングモジュールが、工学設計された検査データを受け取り、工学設計された検査データのプロファイリングを行うことをユーザに可能にするプロファイラを含む実施形態、データエンジニアリングモジュールが、工学設計された検査データのプロファイリングを行うことをユーザに可能にさせるようにさらに構成される実施形態、及びデータエンジニアリングモジュールが、工学設計された検査データを閲覧することをユーザに可能にさせるようにさらに構成される実施形態が挙げられる。
いくつかの実施形態では、データエンジニアリングモジュールは、工学設計された検査データを生成するためのいくつかの方法を含む。これらの実施形態では、どのようにして工学設計された検査データを生成するかの選択は、検査を受けるアプリケーションに関する情報に少なくとも部分的に依存する。他の実施形態では、データエンジニアリングモジュールは、データ拡張器、データ精製器、否定データ製造器、及び肯定データ製造器を含み、それらの各々が、工学設計された検査データにとっての基礎をなすデータを提供するように構成される。
検査を受けるアプリケーション内のそれらの論理機能を識別するように構成され、それらの論理機能をデータ精製器に提供する論理抽出器をデータエンジニアリングモジュールが含む実施形態、及びデータエンジニアリングモジュールが検査を受けるアプリケーション内のそれらの論理機能を識別するようにさらに構成されて、プロダクションデータのサブセットを獲得するための基礎として使用されることになるそれらの論理機能を提供する実施形態がやはり挙げられる。
さらなる実施形態では、計算環境マネージャが、アプリケーションの検査が行われることになる計算環境を自動的にセットアップし削除するための手段を含む。
計算環境マネージャが環境移行機械を含む実施形態も、本発明の実施形態の中にある。環境移行機械は、工学設計された検査データのソースを識別するように構成され、検査を受けるアプリケーションによる工学設計された検査データの処理で生じるデータを入れるターゲットを識別するようにさらに構成される。
いくつかの実施形態では、環境移行機械は、第1のリポジトリからソースに工学設計された検査データをコピーするようにさらに構成される。環境移行機械がターゲットから第2のリポジトリに工学設計された検査データをコピーするようにさらに構成される実施形態が、これらの実施形態の中にある。
本発明の実施形態としては、計算環境マネージャが、環境バックアップ機械並びに復元機械を含む実施形態が挙げられる。そのような実施形態では、環境バックアップ機械は、検査を受けるアプリケーションの検査が行われることになる第2の環境へと第1の環境を変換する前に、第1の環境をバックアップするために構成される。復元機械は、第2の環境を第1の環境で置き換えるために構成される。
いくつかの実施形態では、計算環境マネージャは、検査を受けるアプリケーションの実行を行わせるように構成される実行器を含む。アプリケーションの実行を行わせるときに、自動的にスクリプトを実行するように実行器が構成される実施形態が、これらの実施形態の中にある。
さらに他の実施形態は、環境移行機械、環境バックアップ機械、復元機械、及び実行器を有する計算環境マネージャを含む。これらの実施形態では、環境移行機械は、工学設計された検査データのソースを識別するように構成され、環境移行機械は、検査を受けるアプリケーションによる工学設計された検査データの処理で生じるデータを入れるターゲットを識別するようにさらに構成され、環境バックアップ機械は、検査を受けるアプリケーションの検査が行われることになる第2の環境へと第1の環境を変換する前に、第1の環境をバックアップするために構成される。復元機械は、第2の環境を第1の環境で置き換えるために構成される。また、実行器は検査を受けるアプリケーションの実行を行わせるように構成される。
別の態様では、本発明は、コンピューティングシステム中でデータを処理するための方法を特徴とする。そのような方法は、アプリケーションを検査するステップを含む。この場合の、アプリケーションを検査するステップは、検査を受けるアプリケーションを表す情報を、入力デバイス又はデータ処理システムのポートを介して受け取るステップと、受け取った情報を処理するステップとを含む。この受け取った情報を処理するステップは、この情報に少なくとも部分的に基づいて工学設計された検査データを作り出すステップと、工学設計された検査データをアプリケーションが操作するべき計算環境を制御するステップと、アプリケーションによる操作を受けた工学設計された検査データを予想される出力と比較するステップと、比較を示す結果を出力するステップとを含む。
別の態様では、本発明は、アプリケーションを検査するためのコンピューティングシステムを特徴とする。そのようなコンピューティングシステムは、情報を記憶するための手段と、情報を処理するための手段とを含む。情報を処理するための手段は、データ駆動型検査のための手段を含む。このデータ駆動型検査のための手段は、入力デバイス及びデータ処理システムのポートのいずれか又は両方を介して情報を受け取るための手段を含む。この情報は、検査を受けるアプリケーションを表す。データ駆動型検査のための手段は、検査を受けるアプリケーションに少なくとも部分的に基づいて工学設計された検査データの集合を生成するための手段、並びに検査を受けるアプリケーションに少なくとも部分的に基づいて工学設計された検査データの集合を生成するための手段によって生成される工学設計された検査データをアプリケーションが操作するべき計算環境を管理するための手段、及びアプリケーションによる操作を受けた工学設計された検査データを予想される出力と互いに比較するための手段をさらに含む。コンピューティングシステムは、結果の分析を出力するための手段をさらに含む。
別の態様では、本発明は、アプリケーションの検査を管理するため、コンピュータ可読媒体上に非一時的な形態で記憶されるソフトウェアを特徴とする。そのようなソフトウェアは、コンピューティングシステムにある種の処理ステップを実行させるための命令を含む。これらの処理するステップは、検査を受けるアプリケーションに少なくとも部分的に基づいて工学設計された検査データを作り出すステップと、工学設計された検査データをアプリケーションが操作するべき計算環境を制御するステップと、アプリケーションによる操作を受けた工学設計された検査データを予想される出力と比較するステップと、比較の分析を出力するステップとを含む。
本発明のこれら及び他の特徴は、以下の詳細な説明及び添付図面から明らかとなろう。
アプリケーション検査機械のためのデータ駆動型検査用フレームワークの構成要素間の構造上の関係の図である。 ユーザインターフェースからのスクリーンを示す図である。 いくつかのボックスが展開された、図2のスクリーンを示す図である。 図3中で指定された入力データファイル及び出力データファイルを使用して検査されているグラフを示す図である。 入力データファイルを設定するためのオプションを示す図である。 ベースラインを設定するための情報を指定するためのボックスを示す図である。 レコード単位の比較のためのオプションを示す図である。 検査が実際に正しく実施したかどうかに関する情報を示す図である。 ベースラインに対する、アプリケーションを検査した結果の概要を示す図である。 他のボックスが展開された、図2のスクリーンを示す図である。 ソースレベルのコードカバレッジについての例示的な報告を示す図である。 図1のデータ駆動型検査用フレームワーク中に示されるデータサブセット器の構成要素間の構造上の関係の図である。 図1のデータ駆動型検査用フレームワーク中に示されるデータ製造器の構成要素間の構造上の関係の図である。 図1のデータ駆動型検査用フレームワーク中に示されるデータ補強器の構成要素間の構造上の関係の図である。 図1のデータ駆動型検査用フレームワークの環境管理機械の構成要素間の構造上の関係の図である。 効率的な検査手順の概要を示す図である。
検査のために良好なデータを確実に利用可能にすること、知られている環境中でアプリケーションの反復可能な検査を自動的に実施するための方法を提供すること、正確さを測定する、さもなければ検査下のアプリケーションの性能を評価するために使用できる結果を収集すること、及びそれらの結果を評価するための方法を有することによって、より効率的な検査を実現することができる。
図1は、検査コンピュータ12の中にインストールされて、その検査コンピュータ12上でアプリケーション14の秩序だった効率的な検査を容易にするデータ駆動型検査用フレームワーク10を示す。本明細書で使用する「検査コンピュータ」とは、協調してアプリケーション検査手順を実行する1又は2以上の処理システムを含むことを意図する。
図2は、データ駆動型検査用フレームワーク10が、アプリケーション14を検査することに関連して使用するために提供するユーザインターフェースの第1のスクリーンを示す。第1のスクリーンは、10個のボックスを有する。クリックされると、図3に示されるようにこれらのボックスの各々が展開し、ユーザに多数の選択肢を提供するさらなるボックスが現れる。図1及び図2の両方のボックスは、アプリケーション14を検査する期間に一般的に実行されるタスクの順序と一致するように、左から右に列状に配置される。
図2の第1の列は、「単一検査」ボックス、「入力データセット」ボックス、及び「出力データセット」ボックスを示す。
図3においてその展開した形で示されるように、「単一検査」ボックスによって、ユーザが、特定の検査を設定すること、検査データセットがどこに保存されることになるかを指定すること、及び検査環境をセットアップするため又はティアダウンするためのいずれかのためのカスタム論理を実装するために使用されることになる任意のグラフ、プラン、若しくはスクリプトを識別すること、又は検査結果の分析を実行することが可能になる。
「入力データセット」及び「出力データセット」ボックスによって、ユーザが、入力データセット及び出力データセットの位置を指定することが可能になる。一般的に、出力データセットは、アプリケーション14が変更するものであり、一方、入力データセットは、どのようにして出力データセットを変更するのかを決定するためにアプリケーション14が使用するものである。例えば、アプリケーション14は、複数の自動車販売店の各々から収入についての日報を受け取ることができ、蓄積された収入のデータベースを更新することができる。その場合、更新されるべきデータベースは、「出力」データセットとなり、日々の収入報告は、「入力」データセットとなる。
図3に示される特定の例は、図4に示されるグラフを検査することに関連する。このグラフは、5つの入力データセット及び2つの出力データセットを特徴とする。図3において、これらのデータセットの名前は、適宜、「入力データセット」及び「出力データセット」ボックス中に列挙される。
図5は、図3中の「A−カスタマ」データベースに検査用フレームワークの注意を引く際に表示する、入力設定ボックスを示す。入力設定ボックスによって、ユーザが、データセットの名前及びタイプを識別することが可能になる。データセットタイプの例としては、入力ファイル及び入力データベーステーブルが挙げられる。入力設定ボックスによって、ユーザが、入力データセットの状態を指定することがやはり可能になる。データセットの状態の例は、データセットが圧縮されているのかいないのかである。入力設定ボックスによって、ユーザが、入力データセットへのパスを指定すること、及びデータセットの記録フォーマットを示すことがやはり可能になる。検査用フレームワーク10は、指定される入力データセット及び出力データセットの各々について、同様のボックスを示す。
アプリケーションがデータを操作すると、アプリケーションは、典型的には、データをいくつかの方法で変更する。アプリケーション14がデータを正しく変更するかどうかが、アプリケーション14が正しく動作しているかどうかに対する重要な手がかりを提供する。しかし、変更されたデータを簡単に点検し、変更されたデータが正しい又は誤っていると断言するのは一般的に可能ではない。一般的に、変更されたデータを、正しいことが判っている他のデータと比較することが必要である。正しいことが判っているデータは、「ベースライン」と呼ばれる。
第1のスクリーンの第2の列は、アプリケーション14がその機能を正しく実行したかどうかについての確認に関係するボックスを含む。この第2の列は、「ベースライン比較」ボックス及び「メトリクス」ボックスを特徴とする。
「メトリクス」ボックスは、ユーザが、アプリケーションの実行に関するどの統計値が提示されるべきかを指定することを可能にするためのオプションを提供する。これは、例えば、経過時間、CPU時間、及びコードカバレッジを含む。
「ベースライン比較」ボックスによって、ユーザが、ベースラインデータを識別し、ベースラインとしてベースラインデータを使用するための準備で、ベースラインデータに対してある種の操作を実行することが可能になる。例えば、ベースラインデータが出力データ中に存在しないある種のフィールドを有するもの、又はベースラインデータ中のある種のフィールドが出力データ中の対応するフィールドと本質的に整合しないことになるものであってよい。一例は、致し方ないが両方の場合で異なる可能性がある、日付/時間スタンプである。
図6は、図3中の「ベースライン比較」ボックス中の「ベースラインを設定する」オプションに検査用フレームワークの注意を引く際に表示する、ベースライン設定ボックスを示す。ベースライン設定ボックスは、比較のタイプを選択する機会をユーザに提供する。比較タイプの例としては、検査データセットリポジトリ中の、シリアルファイル又はMFSファイルの間の比較がある。ベースライン設定ボックスは、ベースラインがどこに配置されるのか、ベースラインが圧縮されているのかどうか、ベースラインの記録フォーマット、及び比較前に削除するいずれかのベースラインフィールド若しくは出力フィールドを指定するための変更をユーザにやはり提供する。
図3に示されるように、ベースラインとアプリケーション14の出力の間の比較を実行する2つの方法がある。1つの方法は、レコード単位の比較を実行することである。これは、図3中で、「レコード単位の比較を設定する」というオプションによって示される。別の方法は、レコード単位の比較をせずに、補強データを点検することである。これは、図3中で、「統計的比較を設定する」というオプションによって示される。これの例としては、データセット中のレコードの数が予想されるレコードの数に対応するかどうかを判定することがある。
図6.5は、図3の「ベースライン比較」ボックス中の「レコード単位の比較を設定する」上でクリックした際に利用可能なオプションを示す。利用可能なオプションとしては、比較されるべきキーを指定すること、及びどのフィールドを比較において除外するのかを指定することが挙げられる。これは、例えば、フィールドが本質的に整合しない日付/時間スタンプを含む場合に有用である。というのは、同じ時間は、1回以上発生することができないからである。
第3の列は、検査の実際の実行を制御するための単一検査実施ボックスを含む。単一検査実施ボックスによって、履歴結果を保存する、並びにベースライン分析のみを実施するというオプションが可能になる。
第4で最後の列は、結果の分析のためのオプションを含む。様々な報告を生成することができる。しかし、検査の結果を実際に点検する前に、検査が実際に正しく実施されたのかを判定することが有用である。特に、全ての入力ファイル及び出力ファイルが正しく指定されたこと、並びに検査をセットアップするステップ、検査を実際に実施するステップ、及び結果を分析するステップが全て首尾よく完了したことを確認するのは、有用である。これは、第4の列中の「単一検査結果」ボックス中の「実施についてのイベント詳細を閲覧する」を選択することによって実行することができる。これは、図8に示されるような報告をもたらすことになる。図8に図示される報告によれば、特定の分析ステップを除いて全てがうまくいった。何が悪かったのかについての詳細は、さらに報告中をクリックすることによって識別することができる。
検査がユーザの満足をもたらしたかどうかを決定した後、検査の結果をベースライン結果と比較する報告を点検することが可能である。図9に示される1つのそのような報告は、ベースラインと、アプリケーション14を検査することによりもたらされる結果の間の比較の概要である。この報告は、図3中の「ベースライン比較結果」ボックス中の「概要を閲覧する」上でクリックすることによって得られる。報告はベースラインレコードの数及び違いのあるレコードの数を示す。明らかであるように、図9の検査結果は、検査を受けたアプリケーションが多数のエラーを起こしたことが示唆される。
どれだけ多くのエラーをアプリケーションが起こしたのか、及びどこでエラーが発生したのかを見ることに加えて、コードカバレッジについての報告を閲覧することも可能である。コードカバレッジは、グラフレベル、構成要素レベル、及び種類レベルのカバレッジメトリクスを含む、様々な方法で表すことができる。利用可能な選択は、図3中の「コードカバレッジ結果」ボックス上でクリックすることによって見ることができる。これがボックスを展開し、図10に示される選択が現れる。
図11は、ソースレベルカバレッジメトリクスについての報告の例を示す。この報告は、図10中の「コードカバレッジ結果」ボックス中の「ソースレベルカバレッジメトリクスを閲覧する」上でクリックすることによって得られる。
説明されるデータ駆動型検査用フレームワーク10は、データ駆動型検査用フレームワーク10のインストール前に検査コンピュータ12に存在しなかった機能性を、検査コンピュータ12に提供する。この方法では、説明されるデータ駆動型検査用フレームワーク10は、それがインストールされている検査コンピュータ12の動作に、著しい技術的な改善をもたらす。
検査を受けるアプリケーション14は、ソースコードのコンパイルを通して得られたオブジェクトコードを含むことができる。ある種の実施形態では、このソースコードは、指向型非周期グラフを表す。他の実施形態では、ソースコードは、プランを表す。
いくつかの実施形態では、ソースコードは、グラフを表す。これらのグラフのノードは、構成要素間のデータの流れを可能にするため、指向性リンクにより接続されるポートを有する処理構成要素を規定する。そのようなグラフでは、構成要素は、入力ポート上で入力データを受け取るステップ、そのデータを処理するステップ、及び出力ポート上に結果となる出力を提供するステップによって、計算を実施する。
いくつかの実施形態では、ソースコードは、プランを表す。プランは、ノードがタスクを表す指向型非周期グラフであり、指向型リンクは、上流タスクが終了するまで下流タスクは開始できないように、タスク間の依存関係を規定する。いくつかの実施形態では、タスクは、グラフを実行するために使用される。
アプリケーション14に関連するコンパイルされたソースコードは、「pset」又はパラメータセットを表す情報を含むこともできる。パラメータセットは、パラメータ及びそれらのパラメータの各々に対応する値のリストを提供する。いくつかの実施形態では、パラメータセットは、グラフをカスタマイズするためのパラメータを提供するために使用される。
アプリケーション14は、アプリケーション14が導出されるソースコードがデータの流れ図、制御の流れ図、及びプランを表すものに限定されない。実施形態は、Cのコード又はJavaのコードなどの任意のコンピュータ言語で書かれたソースコードの、好適なコンパイル又は解釈によって得られるオブジェクトコードを、アプリケーション14が含む実施形態をやはり含む。そのようなアプリケーションの実行のさらなる記載は、その内容が参照により本明細書に組み込まれる、2014年8月7日公開の、Isman, et al.の「DATA RECORDS SELECTION」という名称の米国特許公開第2014−0222752号明細書に提供される。
アプリケーション14は、その実行が、1又は2以上の変数の値によってトリガされるルールを実装することが多い。これらの変数は、入力データに対応する入力変数であってよい。あるいは、これらの変数は、入力データ中の1又は2以上の入力変数に依存する導出変数であってよい。アプリケーションの効果的な検査のため、アプリケーション中の完全なコードカバレッジが達成されるように、アプリケーション14中のあらゆる論理ルールの実行を行わせるのに十分な検査データを提供するのが望ましいことがある。少なくとも対応する最小回数、論理ルールが実行させられること、又は逆に、対応する最大回数以下、論理ルールが実行させられることが望ましいこともある。
効率的な検査への第1の障害は、アプリケーション14による操作を受けるときに、上述の要件を満足する好適な検査データを獲得することである。本明細書で企図される具体的な検査データは、その各々が1又は2以上のフィールドからなる一連のレコードとして構成されるデータである。
検査データを取得する1つの方法は、プロダクションシステムから引かれてきた全データ量を使用することである。原理的に、この方法は、非常に大きいのでコードの何らかの特徴の検査を漏らす可能性が漸近的にゼロに近づくことになる量のデータを検査することに依存する。
これらのデータ量は非常に大きいことが多かった。結果として、各検査サイクルは、法外な長時間がかかることになる。
上述の障害を克服するために、説明されるデータ駆動型検査用フレームワーク10は、アプリケーション14の検査に使用するための工学設計された検査データを生成するデータエンジニアリングモジュール16を含む。どのようにして工学設計された検査データを生成するのかについての例は、Isman, et al.の、2013年12月18日に出願された「DATA GENERATION」という名称の米国仮出願第61/917,727号明細書、及びIsman, et al.の、2013年3月14日に出願された、米国特許公開第2014/0222752号明細書と「DATA RECORDS SELECTION」という名称の米国出願第13/827,558号明細書の両方に記載される。上述の出願の両方の内容は、本明細書に参照によって組み込まれる。
本明細書に記載されるデータ駆動型検査用フレームワーク10では、全データ量はコードカバレッジが依存する唯一のものではないという発見を利用することが意図される。実際に、コードカバレッジは、データ自体の性質にも依存する。特に、コードカバレッジは、そのデータの論理濃度又は論理分散に依存する。実際には、検査に実際に使用されるデータがより高い論理濃度を有するように工学設計されることを条件として、劇的に小さい量のデータを使用して、所望のコードカバレッジを達成することが通常できる。
本明細書で使用する、「コードカバレッジ」という用語は、ソースコードが検査手順によって検査を受けた範囲の広さである。これは、第1の値対第2の値の比率として表すこと、しばしば百分率として表すことができ、第2の値が検査を受けるコードの全量の定量的測度を表し、第1の量が検査を受ける実際の量の定量的測度を表す。いくつかの場合では、第1と第2の変数は、検査を受ける特徴対実装される特徴を表す。他の場合では、第1と第2の変数は、検査を受けるソースコードの列とソースコードの全列を表す。定量的測度の正確な性質は、本発明の理解に対し明らかに重要ではない。
データ駆動型検査用フレームワーク10は、100%コードカバレッジは言うまでもなく、何らかの特定のコードカバレッジを達成する必要はない。コードカバレッジは、工学設計上の判断に基づいて、ユーザによって設定されるパラメータである。しかし、ユーザが選択するどんなコード検査カバレッジでも、本明細書に記載される方法及び装置は、そのコードカバレッジを達成するために必要な検査データの量を減少させることになり、プロダクションデータの全量の単純な操作によって達成することが場合によって可能なものよりも、より信頼性が高く確定的な方法で、そのターゲットのコード検査カバレッジを達成することになる。
特に、検査データの組が与えられれば、コードのある部分を働かせることになる。異なる検査データセットは、一般的に、コードの異なる部分を働かせることになる。例えば、検査データがデータレコードを何度も何度も単に繰り返す場合、コードの非常に限られたサブセットだけを働かせることになる。対照的に、全ての種類の値の組合せを有する多様なレコードを含む検査データは、コードのより大きいサブセットを働かせる可能性が高いことになる。
データエンジニアリングモジュール16は、構成要素セットから選択される1又は2以上の構成要素を含む。各構成要素は、特定の方法を使用して工学設計された検査データを生成する。どの方法を使用するのか、したがってどの構成要素が必要であるのかについての選択は、さしあたっての特定の状況に依存する。
データエンジニアリングモジュール16の構成要素は、データサブセット器18、データ補強器20、肯定データ製造器22、及び否定データ製造器24のうちの1又は2以上を含む。データサブセット器18は、その論理濃度を増加させるように、既存のデータの精製を通して、工学設計された検査データを生成する。データ補強器20は、既存のデータを補強することによって、工学設計された検査データを生成する。肯定データ製造器22及び否定データ製造器24の両方は、検査要件に基づいて、工学設計された検査データを作り出す。
アプリケーション14中のある論理を検査するのに必要な種類のデータが既存のデータ中に存在しない場合がある。これは、しかし、この論理が検査を受けないはずであるという意味ではない。
この論理を働かせるため検査データにのみ依存する場合、論理は、全く検査を受けないことになる。これは、最大限の既存のデータの精製でも、その論理を検査するために使用できるデータをもたらすことが補償されないことになるためである。この状況に対応するため、データエンジニアリングモジュール16のある種の実施形態は、否定データ製造器24を含む。
否定データ製造器24は、通常は存在しないデータを提供する。これは、通常ならば検査を受ける機会を決して持たないコードの実行を可能にすることによって、検査のコードカバレッジを拡げる。否定データ製造器24は肯定データ製造器22とは異なる。というのは、否定データ製造器24は、本明細書では「否定データ」と呼ばれる、典型的なデータセット中に(又は、典型的なデータセットのサンプル中に)通常存在しないデータを提供するからである。対照的に、肯定データ製造器22は、本明細書では「肯定データ」と呼ばれる、典型的なデータセット中に(又は、典型的なデータセットのサンプル中に)通常存在するデータを生成するからである。否定データの例としては、そのフィールドにとって予め規定された文字の組の中にない文字を含むフィールドエントリ、又はそのフィールドにとって予め規定された値の範囲外にある値を有するフィールドエントリ、又はフィールドエントリの1若しくは2以上の部分に正しくない数の文字を含むフィールドエントリなどといった、フィールドのフォーマットに適さないフィールドエントリが挙げられる。一例としては、文字を含む社会保障番号、又はゼロの値を有する誕生月がある。否定データの他の例は、フィールドフォーマットとは一致するが、しかし参照整合性を混乱させるものが挙げられる。一例としては、既存のカスタマを何ら特定しない、正しくフォーマットされたカスタマ番号がある。そのような否定検査事例の使用が、コードカバレッジを拡張する。しかし、そのような否定データは、プロダクションデータセット中に存在しない可能性があり、したがって、製造する必要が一般的にあることになる。
工学設計された検査データを生成した結果として、アプリケーション14が開発されている間に、アプリケーション14のインタラクティブなデバッグを容易に実行することが可能になる。これは、実施するのに何分も、又は数時間さえかかる可能性がある大きいデータセットを処理するよりも、はるかに生産的である。例えば、工学設計された検査データが局在化された環境で使用されると、ビジネスルール環境中のルールを変えることの効果を各レコード上で見ることが可能になる。
データサブセット器18は、アプリケーション14の開発者がアプリケーション14になされた変更の効果を迅速に見ることができるように、十分に小さい工学設計された検査データの組を生み出す。しかし、工学設計された検査データの組は、ただ小さい以上のものである。工学設計された検査データの組は、高い検査論理濃度も有する。その高い検査論理濃度の結果として、工学設計された検査データは、全データセットを必要とすることなく、アプリケーション14中の全てのコードを働かせる。これによって、同じ計算リソースの消費で高いコードカバレッジを達成させる結果となる。
図12は、データサブセット器18の詳細を示す。データサブセット器18は、実際のプロダクションデータ26(又は、サブセットを行うための任意の入力データセット)、論理仕様28、及び制御変数30を受け取る。論理抽出器31は、検査を受ける論理機能を識別し、それらをデータ精製器32に提供する。論理抽出器31とデータ精製器32の両方は、データサブセット器18の構成部分である。データ精製器32は、次いで、プロダクションデータ26を処理して、データ精製物33を生成する。データ精製器32は、制御変数30によって指定されるような抽出手順を使用し、論理抽出器31によって指定される論理を検査するのに関係するそれらの部分を抽出することによって、上記を行う。こうして、本明細書に使用される「データ精製器」という用語は、指定された抽出手順を使用して、入力データセットからデータの一部を抽出し、「データ精製物」と呼ばれる抽出データを生み出す処理モジュールのことを言うために使用される。
データ精製物33は、サブセットルールに基づいてプロダクションデータ26から選択される。これらのサブセットルールは、いくつかのソースから来る可能性がある。一例では、ユーザがサブセットルールを指定する。別の例では、サブセットルールは、アプリケーションの実行からのフィードバックに基づいて策定される。さらに別の例では、アプリケーション14中のコードの一部又は全部を実行させることになるデータレコードを、データ精製物33が含む。
一例として、プロダクションデータ26はデータレコードを含むことができ、データレコードの各々がフィールドを含み、いくつかのフィールドがある種の許容される値を有し、そのいくつかは他のものよりも発生する可能性が高い。異なる許容される値は、コードの異なる部分を働かせる。こうして、コードを網羅的に検査するために、全ての値の全ての組合せが生じなければならない。いくつかの実施形態では、工学設計された検査データは、許容される値の全ての組合せを得るためさほど多くないレコードが必要となるように、それらの可能性の低い値について、発生する可能性をより高くさせることによって導出される。
この場合、工学設計された検査データは、レコードの値の確率分布がより均一になされているデータと見なすことができる。言い換えれば、特定の許容される値が、プロダクションデータ26中で比較的低い確率で発生する場合、その値は、工学設計された検査データ中ではより高い確率で発生することになる。逆に、特定の許容される値が、プロダクションデータ26中で比較的高い確率で発生する場合、その値は、工学設計された検査データ中ではより低い確率で発生することになる。これは、最も起こる可能性のあるイベントの確率が減らされ、最も起こる可能性のないイベントの可能性が増やされる工学設計された検査データを有することの正味の効果を有する。これは、確率値の拡がりを減らす。確率値の拡がりがゼロである、これの限定した事例は、均一な分散を規定することによる。確率値の全体の拡がりの減少は、こうして、分散を均一な分散にする結果となる。これは、検査のためのより効率的なデータセットをもたらす結果となる。というのは、より可能性の高い値により引き起こされる冗長性が減らされると同時に、最も可能性の低い値を確実に得るために必要な量が減らされるからである。この効率の程度は、工学設計された検査データの検査論理濃度に対応する。
多くの場合に、プロダクションデータ26は、データベースからの複数のテーブルからなることになる。これらのテーブルは、第1のテーブルポイント中にポインタを有することによって、第2のテーブル中のレコードに結合すること、又は第2のテーブル中のレコードを「参照」することができる。
ポインタが何かを指すときはいつも、2つの可能性がある。(1)ポインタが何か有効なものを指す。(2)ポインタが何か有効なものを指さない。
第1の可能性では、第1のテーブル中の各ポインタは、第2のテーブル中の有効なレコードを指す。この第1の可能性では、2つのテーブルが「参照整合性」を有すると言われる。そのため、本明細書で使用する「参照整合性」という用語は、データセットの別の部分の中の値へのデータセットの1つの部分の中の各参照が有効である、1又は2以上のデータセットを記載するために使用される。
上に記載された第2の可能性では、第1のテーブル中の少なくとも1つのポインタは、第2のテーブル中の有効なレコードを指さない。この第2の可能性では、2つのテーブルが参照整合性を欠如していると言われる。
適切な検査のため、プロダクションデータ26が参照整合性を有する場合、工学設計された検査データも参照整合性を有さなければならないことが好ましい。したがって、データ精製器32は、参照整合性を保持するデータ精製物33を提供しなければならない。
そのような参照整合性が保持されているかどうかを決定するために、データ精製器32は、データ精製物33を整合性チェッカ34に提供する。データ精製物33が参照整合性を有すると整合性チェッカ34が決定する場合、データ精製物33は、データサブセット器18の出力データサブセット35として提供される。さもなければ、データ精製物33は、修復のために再参照器36に提供され、その後出力データサブセット35として提供される。
いくつかの実施形態では、再参照器36は、データ補強器20と同じ機能性を実装する。例えば、1つのデータセット中のポインタが別のデータセット中のレコードを指さないために参照整合性の欠如が生じる場合、再参照器36は、データ補強器20により使用されるのと同じ方法を使用して、第2のデータセットを好適なレコードで補強することができる。再参照器36は、こうして、データエンジニアリングモジュール16の任意選択の構成部分と見なすことができる。
示される特定の実施形態では、データサブセット器18は、出力データサブセット35を閲覧すること及び/又は出力データサブセット35のプロファイリングを行うことを可能にするデータ点検ユニット37も含む。しかし、他の実施形態では、データ点検ユニット37が存在しない。
データ点検ユニット37がビューアである実施形態及びデータ点検ユニット37がプロファイラである実施形態は、データ点検ユニット37を有する実施形態の中にある。データ点検ユニット37が、ユーザが何をしたいのかに基づいて閲覧及びプロファイリングの両方を行うことが可能な構造である実施形態は、データ点検ユニット37を含む実施形態の中にやはり含まれる。
本明細書で使用するデータサブセットを「プロファイリングすること」は、例えば、メタデータ又はそのサブセットについての補強データを取得することが挙げられ、プロファイリングの結果が「プロファイル」と呼ばれる。補強データとしては、レコードの数、それらのレコード中の値の範囲、及び確率分布のn次モーメント、ここでnは正の整数などのデータ内の値の統計的又は確率的記述などの特徴が挙げられる。
例えば新しいシステムを開発するとき、精製するのに利用可能なプロダクションデータが存在しないことがある。他の場合には、プロダクションデータは、獲得するのが非常に困難となる。これらの状況に対処するため、データエンジニアリングモジュール16の肯定データ製造器22を活性化する。
図13を参照して、肯定データ製造器22は、論理仕様28、制御変数30、及び重要な関係情報38を受け取る。論理抽出器31は、検査を受ける論理機能を識別し、それらをデータ生成器40に提供する。データ生成器42は、次いで、制御変数30により指定されるような抽出手順を使用して、好適な検査データを生成する。どのようにしてデータを生成するのかについての例は、Isman, et al.の、2013年12月18日に出願された「DATA GENERATION」という名称の米国仮出願第61/917,727号明細書、及びIsman, et al.の、2014年8月7日公開の、「DATA RECORDS SELECTION」という名称の米国特許公開第2014/0222752号明細書に記載される。
好ましくは、結果として得られる製造された検査データ39は、適切な検査のため、参照整合性を有する。したがって、製造された検査データ39は、整合性チェッカ34に提供されて、参照整合性が確立されているかどうかを決定する。製造されたデータが参照整合性を有すると整合性チェッカ34が決定する場合、製造された検査データ39は、肯定データ製造器出力41として提供される。製造された検査データが参照整合性を有さない場合、製造された検査データ39は、修復のために再参照器36に提供され、次いで肯定データ製造器22の出力として提供される。
いくつかの実施形態では、肯定データ製造器22は、データ駆動型検査用フレームワーク10内で、製造された検査データ39を閲覧すること及び製造された検査データ39のプロファイリングを行うことを可能にするデータ点検ユニット37も含む。他の実施形態では、データ点検ユニットが存在しない。
いくつかの場合では、プロダクションデータ26が存在するが、全く要求される形式ではない。そのような場合では、データエンジニアリングモジュール16のデータ補強器20を活性化することにより、プロダクションデータを補強することが有用である。
データ補強器20は、例えば、既存のプロダクションデータ26に1又は2以上のフィールドを追加するため、及び供給されるルールに基づいてそれらのフィールドを満たすようデータを生成するために使用することができる。
図14は、データ補強器20の詳細を示す。データ補強器20は、実際のプロダクションデータ26(又は、補強されるべき任意の入力データセット)、論理仕様28、及び制御変数30を受け取る。論理抽出器31は、検査を受ける論理機能を識別し、それらをデータ精製器32及びデータ変更器48に提供する。データ精製器32は、次いで、制御変数30によって指定されるような抽出手順を使用し、論理抽出器31によって指定される論理を検査するのに関係するそれらの部分を抽出するように、プロダクションデータ26を処理する。論理抽出器31によって提供される情報に基づいて、データ変更器48は、適したフィールドを追加し、それらのフィールドの中に好適な値を入力し、こうして補強データ49を生成する。
好ましくは、データ変更器48によって提供される補強データ49は、適切な検査のため、参照整合性を有する。したがって、データ変更器48によって提供される補強データ49は、整合性チェッカ34に提供されて、参照整合性が確立されているかどうかを決定する。補強データ49が参照整合性を有すると整合性チェッカ34が決定する場合、補強データ49は、データ補強器20の補強したデータ出力51として提供される。さもなければ、補強データ49は、修復のために再参照器36に提供され、次いでデータ補強器20の補強したデータ出力51として提供される。
いくつかの実施形態では、データ補強器20は、データ駆動型検査用フレームワーク10内で、補強したデータ出力51を閲覧すること及び補強したデータ出力51のプロファイリングを行うことを可能にするデータ点検ユニット37も含む。他の実施形態では、データ補強器20は、データ点検ユニットを持たない。
いくつかの場合では、通常、プロダクションデータ中に現れる任意のデータにより働かされることのないコードセグメントを働かせたいと望む場合がある。これを行うために、データエンジニアリングモジュールは、否定データ製造器24を含み、その機能は、そのような否定的な検査事例を作り出すことである。
効率的な検査への第2の障害は、検査環境をセットアップし、制御し、次いでティアダウン(tear down)する必要から生じる。
一般的に、検査は、検査群中の複数の検査を実施すること、及び多くの外部データセットと相互作用する1又は2以上のグラフ及びプラン上でそうすることを含む。これらのデータセットは、ファイル、テーブル、待ち行列、マルチファイル、及びウェブサービスから来る場合がある。アプリケーション14に検査群を実行させるタスクを達成させるために、データ駆動型検査用フレームワーク10は、計算環境マネージャ44を提供する。
計算環境マネージャ44は、知られている環境中の知られている入力で制御されているようにアプリケーション14を実施するタスクを実行する。これは、検査を受ける特定のアプリケーション14を指定するのに柔軟性を提供する。計算環境マネージャ44は、アプリケーション14により処理されるべき入力データに対応する補強データ、データフラグ、出力ディレクトリ、並びにセットアップ、ティアダウン、及び報告のためのカスタマイズ可能論理を含むリポジトリフォルダ(repository folder)を保持する。
計算環境マネージャ44は、データセットをファイル又はテーブルとして自動的にセットアップする。これらのデータセットは、データのソース、すなわちアプリケーション14が操作することになるデータ、及びターゲット、すなわちアプリケーション14による処理の結果が最終的に置かれることになる場所を含む。計算環境マネージャ44は、次いで、自動的に、ソース及びターゲットを正しい初期状態へと設定し、好適な検査群を使用してアプリケーション14を実施し、結果をターゲット中に置き、環境をそのプリセット条件に復元する。いくつかの場合では、環境マネージャ44は、以前の環境をバックアップし、検査が完了した後に以前の環境を復元する。環境の自動的なセットアップ及びティアダウンによって、最小の手作業で検査を繰り返すことが容易になる。
コンピュータシステムは、常に増加する抽象性の、ネストされた(nested)層の組と見なすことができる。各層は、より高いレベルの抽象化の層が使用することができる論理構造を作り出す。論理構造は、メモリ状態及び環境変数の値を含む。
アプリケーションを実行するとき、アプリケーションは、これらの層上で実行中であると見なすことができる。より下位の層が作り出す論理構造の組は、アプリケーションを実行する環境と見なすことができる。物理的な構造の適切な検査が一定の物理的な環境を維持することに依存することが多いのとほとんど同じ形で、アプリケーションの適切な検査のために、同じ環境を維持することが好ましい。
ここで図15を参照して、一実施形態では、計算環境マネージャ44は、一方はセットアップフェーズの期間のもの、他方はティアダウンフェーズの期間のものという2つの環境の移行を行わせる環境移行機械46を含む。
環境移行機械46は、入力仕様53及び出力仕様50を受け取る。入力仕様53は、入力検査データが来るべきソース52を識別する。この入力は、ファイル、マルチファイル、待ち行列、ウェブサービス、又はそれらの任意の組合せであってよい。出力仕様50は、検査の出力が置かれることになっているターゲット54を識別する。環境移行機械46は、入力の初期状態、出力、及び任意の環境変数についての情報を含む初期化信号56も受け取る。最後に、環境移行機械46は、検査の開始を示すための検査信号58を受け取る。
いくつかの実施形態では、セットアップフェーズ期間に、環境移行機械46は、第1のデータリポジトリからソース52へ検査データ及び/又はベースラインデータをコピーする。検査データ及び/又はベースラインデータはソース52に実際の検査手順の期間記憶される。検査手順が完了した後、ティアダウンフェーズが始まる。このティアダウンフェーズ期間に、環境移行機械46は、ターゲット54から検査データを削除する。
検査信号58を受け取ったら、環境移行機械46は、環境バックアップ機械60と通信して、環境のバックアップ62を作り出す。これの後に、入力ソーススイッチ64に好適なソース52を指し示させ、出力ソーススイッチ66に好適なターゲット54を指し示させることが続く。
これらのタスクが完了すると、環境移行機械46は、実行器68に信号伝達して、アプリケーション14に1又は2以上の検査80を含む検査群79を実行させる。いくつかの実践では、検査群の実行は、1又は2以上のスクリプトの自動実行を含む。実行が完了すると、実行器68は環境復元機械70に信号伝達し、環境復元機械70は、次いでバックアップ62を取り出して環境をその初期状態に復元する。
実行の最中に、アプリケーション14は、1又は2以上のルールを実施する。いくつかの実施形態では、ルールは、少なくとも条件表現及び実行表現を含む仕様によって指定される。条件表現が「真」と評価されると、アプリケーション14は、実行表現を評価するように進行する。しかし条件表現が「真」と評価されるかどうかは、データ中の1又は2以上の変数の値に依存する場合がある。これらの変数は、入力データに対応する入力変数であってよい。あるいは、これらの変数は、1又は2以上の入力変数に依存する導出変数であってよい。アプリケーション14が特定の検査の実施期間にルールを実行するかどうかは、こうして最終的に、ルールに対応する条件表現を「真」と評価させることになる変数を検査データの選択が有するかどうかに依存する。
いくつかの例では、アプリケーション14は、トリガされるルールの全てを実行する。他の例では、アプリケーション14は、トリガされるルールの全てよりも少ないルールを実行する。ルールは、参照によりその内容が本明細書に組み込まれる、2007年4月10日出願の米国特許第8,069,129号明細書の5列61行と6列11行の間により詳細に記載される。
実行器68が検査群79を完了すると、結果分析モジュール72が引き継いで、検査結果の分析を開始する。結果分析モジュール72の機能には、正しい結果のこれらの知られている組を作り出す機能、及び検査されているアプリケーション14が最終的に正しい答えに到達することを確認するプロセスを自動化する機能がある。
いくつかの場合では、検査されているアプリケーションの、より古いバージョンがある。この、検査されているアプリケーションのより古いバージョンは、典型的には、現在使用中のバージョンである。そのため、検査されているアプリケーションのより古いバージョンは、出力の正確さを確立するための最高の基準と見なすことができる。したがって、検査されているアプリケーションによって置き換えられることが意図されるアプリケーションの、このより古いバージョンは、「ゴールドスタンダードバージョン」(gold standard version)と呼ばれることになる。
同じ環境を使用して同じデータに対して実行したときに、検査されているアプリケーションのバージョンが、ゴールドスタンダードバージョンによって獲得される結果と一致する結果をもたらさない場合、検査されているアプリケーションのバージョンが正しくない結果を出力しているという推論を行うことができる。
アプリケーション14を検査することの中に生じる1つのステップは、アプリケーション14が、事実上データを正しく処理したのかどうかを決定するステップである。このステップを実行するために、アプリケーション14の機能仕様により規定される、データセットに対する操作の予想される結果と、実行器68により獲得されるような、同じデータセットに対する操作の測定結果との間で、何らかの対応を確立する方法が存在しなければならない。言い換えれば、正しい答えのベースライン74を獲得する必要がある。そのようなベースライン74が入手できると、結果分析モジュール72が、結果78をベースライン74と比較することによって結果78を確認する。
ベースライン74を獲得する方法は、アプリケーション14が置き換えている何らかのものと、アプリケーション14がどれだけ異なっているのかに部分的に依存する。一般的に、違いが大きいほど、ベースラインを生成するのが困難になる。
抽象的なレベルで、データセットX及び環境Eが与えられた場合、アプリケーションfのバージョンnは、出力Y=fn(X,E)を生成することになる。問題は、Yが正しいことをどのようにして決定するのかである。
一般的に、3つの可能性がある。
第1の可能性は、(X,E)を操作することができる、アプリケーションの異なるバージョン、すなわちバージョンmが存在する可能性である。バージョンmが信頼できると考えられる場合、fn(X,E)=fm(X,E)が成立するかどうかを問うことによって結果Yの正確さを確立する。
第2の可能性は、完全に信頼できると考えられない、アプリケーションの別のバージョン、すなわちバージョンが存在する可能性である。その場合、fn(Z,E)=fm(Z,E)であって、Z⊂Xであり、fm(X,E)がZについては信頼できるがZについては信頼できないと考えられ、ZがZの補数であることが成立するのかを問わなければならない。fn(ZC,E)の正確さを確立するために、典型的には、正しい結果を手動で決定しなければならない。
第3の可能性は、信頼できると判っているアプリケーションのバージョンがない可能性である。これは、単に、Z= である、第2の可能性の縮退した場合である。この場合、正しい結果を決定するための手順は、手動で実行される。
ベースライン74を獲得する1つの方法は、検査下のアプリケーション14が既存のアプリケーションを、本質的に同じ機能性を有して置き換えることを意図するときに有用である。これは、上に規定された第1の可能性に対応する。この場合、ベースライン74は、アプリケーションのゴールドスタンダードバージョンによって生成される結果から来てよい。
いくつかの場合では、検査下であるアプリケーション14は、既存のアプリケーションに対する拡張となっている。拡張とは、検査下であるアプリケーション14が、異なる結果をもたらすことが予想されて、事実上意図されるようなものである。上の第2の可能性に対応するこの状況は、例えば、ゴールドスタンダードバージョンが正しくない答えを引き起こすバグを有し、検査下のアプリケーション14がそのバグを直すことが意図される場合に生じる可能性がある。
これらの場合について、結果分析モジュール72は、どのフィールドが変わったのか、及び/又は出力中のレコードの数が変わったのかどうかを報告する。結果分析モジュール72は、何らかのフィールドが想定されていないときに意図せずに変化したことを直ちに認識できるように、任意の不一致を報告する。変化が予想されたフィールドについて、正しい答えを決定し、正しい答えをベースライン74へと入力させるため、人間の介在が必要な場合がある。
他の場合には、検査下のアプリケーション14は、真新しいシステムである。これは、上に概説された第3の可能性に対応する。結果として、ベースライン74を作り出すための基礎として使用できる既存の出力データが存在しない。
この場合、ベースライン74は、既存のプロダクションデータ26で開始し、そのプロダクションデータ26のサブセットについて正しい結果を(例えば、手動で)入力することによって形成される(built)。これは、検査を受けるアプリケーション14の基礎をなす論理に目を向け、その論理に基づいて、アプリケーション14を通る様々な論理パスによって最も影響を受ける可能性が高いソースデータ中のそれらのフィールドを識別することによって達成される。これらは、データのサブセットを選択するときに選ばれるべきフィールドである。
いくつかの場合では、ベースライン74を点検する必要なしで、ある種の簡単な検査を自動的に実行することができる。例えば、アプリケーション14が入力の各レコードについて出力の1つのレコードを出すことが判っている場合、アプリケーション14に知られている濃度のプロダクションデータ26を操作させることができ、この場合、出力データの濃度は、アプリケーション14が機能することについての何らかの情報を提供することになる。特に、プロダクションデータ26の各々の濃度と、アプリケーション14によるプロダクションデータ26に対する操作により生み出される濃度との間に、ゼロでない違いが存在する限り、結果分析モジュール72は、アプリケーション14の実装における欠陥の可能性を自動的に信号伝達することができる。
例えば、ある場合に、アプリケーション14は、異なる濃度のいくつかの構成部分を含む出力を生成するように意図されており、ここで、それらの異なる濃度間には関係が存在する。一例では、アプリケーション14は、ソース52の中の入力を操作し、ターゲット54の中に2つの別個のテーブルを生成する。それら2つのテーブルの濃度間に関係が存在する限り、結果分析モジュール72は、自動的にそのような違いを検出して、アプリケーション14の実装における欠陥を示す情報を出力する。
別の例では、ソース52の中の入力テーブルは、N個のレコードを有する場合がある。ターゲット54の中の出力テーブルがN個のレコードをやはり有するはずであることが判っている場合、出力テーブルの中のレコードの数を確認するのは、ソフトウェアがどれだけ良好に働いたのかを確認する良好な方法である。例えば、入力の中にただN個のレコードが存在するときに出力の中にN+1個のレコードが存在することが観測される場合、これはエラーを示唆することになる。
上述の例の一般化である別の例では、アプリケーションが、確定的な方法で、レコードの数を変えることが知られている。こうして、一般的に、N個のレコードの入力テーブルについてのレコードの出力数が何らかの知られている関数fについてf(N)である場合、アプリケーション中のエラーを識別する1つの方法は、入力テーブルがN個のレコードを有するときに出力テーブルが実際にf(N)個のレコードを有するのかを見ることである。
実行後、アプリケーション14の実行を示す情報、特に、アプリケーション14に提供された検査データとアプリケーション14の相互作用に関する情報を提供する報告を提供することが有用である。そのような情報の例としては、アプリケーション14が実行した若しくは実行しなかったルール、アプリケーション14中の各ルールが実行された回数、又はアプリケーション14と検査データの間の相互作用に光を当てることになる任意の他の情報を挙げることができる。
報告に基づいて、ユーザが、追加の検査データを識別することが可能である。この追加の検査データは、例えば、任意の未実行ルールを実行させたはずであったデータ、又は特定の論理ルールを指定の回数実行させたはずであったデータ、又は別の所望の実行結果をもたらしたはずであったデータであってよい。ユーザは、次いで、それらの追加のサブセットルールにしたがって、データレコードの更新サブセットを選択させる、新しいサブセットルールを策定することができる。データレコードの更新サブセットは、以前の未実行ルールの一部又は全部を実行させるのに十分なデータレコード、指定の回数ルールの一部又は全部を実行させるのに十分なデータレコード、又は別の所望の実行結果をもたらすのに十分なデータレコードを含むことができる。
結果分析モジュール72が提供できる情報の種類には、検査データがコードを働かせた範囲についての報告がある。この報告は、検査を受けたコードの列の百分率などの補強スコア、並びにコードのどの列が検査を受けなかったのかなどのより詳細な情報を含む。この情報によって、検査を受けるコードの百分率及び検査から省かれたコードの重要性の両方の観点から検査が適切であったかどうかを、ユーザが判断することが可能になる。
図16は、本明細書に記載される構成要素を使用する、効率的な検査手順の全体的な概要を提供する。検査手順は、一般的に、データ関連ステップ82とアプリケーション関連ステップ84とに分けられる。
データ関連ステップ82は、任意の既存のプロダクションデータにプロファイリングを実施することを含む。これは、図16中の「プロダクションデータをプロファイリングする」というテキストによって識別される、ステップ86として識別される。
次のデータ関連ステップは、そのプロファイルから、プロダクションデータに関するある種の補強データを獲得することである。このステップは、「メタデータを得る」というテキストによって識別される、ステップ88として図16中で識別される。「メタデータ」とは、補強データのことを言うと理解される。そのような補強データの例としては、限定するものではないが、キーのリスト、フィールド濃度、及び値の範囲が挙げられる。
このメタデータ又は「補強データ」は、「関係のある完全なサブセットを作る」というテキストによって識別されるステップ90で図16中に識別されるように、データの関係のある完全なサブセットを生成することに使用される。
いくつかの実践は、否定検査データを作り出して含むことによって、関係のある完全なデータサブセットを補強することを含む。これは、「否定データを作り出す」というテキストによって識別されるステップ92によって、図16中に示される。
他の実践は、合成データの製造によって、関係のある完全なデータサブセットを補強することを含む。これは、「新しいデータを製造する」というテキストによって識別されるステップ94によって、図16中に示される。
アプリケーション関連ステップ84は、アプリケーションを形成すること、又は何らかの方法で既存のアプリケーションを直すこと若しくは拡張することによって、既存のアプリケーションを変更することのいずれかを含む。アプリケーションを形成するステップは、ステップ96として図16中に示され、「APPを形成する」というテキストによって識別される。何らかの方法で既存のアプリケーションを直すこと若しくは拡張することによって、既存のアプリケーションを変更するステップは、ステップ98として図16中に示され、「APPを変更する」というテキストによって識別される。図16にわたる略語「APP」は、アプリケーション14のことを言うと理解される。
アプリケーション関連ステップ84は、アプリケーションの計算モジュール及びアプリケーションによりアクセスされる又は産生されるデータセットがどのようにして互いに依存するのかを表す依存性分析と共に、アプリケーション14のリポジトリに対する確認のステップをやはり含む。これはステップ100として図16中に示され、「APP、依存性分析を確認する」というテキストで標示される。
アプリケーションは、次いで、「工学設計されたデータに対してAPPを実施する」と標示されるステップ102で、図16中に示されるように、工学設計された検査データを操作させられる。
結果は、「コードカバレッジを報告する」というテキストで標示されるステップ104において図16中に示されるように、コードカバレッジを決定するように点検される。
これらのカバレージの報告に基づいて、データ駆動型検査用フレームワーク10は、より良好なコードカバレッジを提供するために、検査データに行うことができる変更の示唆を提供する。これは、「コードカバレッジを増加させる方法を示唆する」というテキストで標示されるステップ106において、図16中に示される。
ステップ106の結果は、追加データを作り出すこと、又はデータのサブセットを既存のデータから抽出するような変更のいずれかによって、データエンジニアリング手順を変更することをもたらしていてもよい。このステップは、ステップ108として図16中に識別され、「データエンジニアリングを変更する」と標示される。
加えて、出力データの整合性は、出力データをベースライン74と比較すること、すなわちステップ110として図16に示され「APPについての正しい結果を決定する」と標示されるステップによって評価される。
結果が異なる限り、アプリケーション14は、「アプリケーションを変更する」というテキストによりマーキングされるステップ98によって図16中に示されるように、違いを解消するように変更される。違いがあるかどうかの決定は、参照番号「112」によって図16中に識別され、「結果を予想される結果と比較する」というテキストで標示されるステップ中で実行される。
いくつかの実施形態では、データ精製器32は、1又は2以上のサブセットルールにしたがって、プロダクションデータ26を精製する。サブセットルールは、データ精製器32に、データレコードのより大きい組から、選択されるべきデータレコードのサブセットを識別させるルールである。結果として得られるデータ精製物33は、こうして、元のデータよりも少ない量であること、及び検査論理濃度がより高いことの両方となる。これは、最終的に、より効率的な検査につながる。というのは、アプリケーション14がデータ精製物33を操作すると、より少ない量のデータで、より高いコードカバレッジを達成できるからである。
データ精製器32が依拠するサブセットルールは、内部的に、データエンジニアリングモジュール16内から、データ駆動型検査用フレームワーク10内の他の場所から、又は外部ソースから生じてよい。
一例では、サブセットルールは、データレコードをプロファイリングし、結果として得られるプロファイルの分析に基づいてサブセットルールを策定するため、論理仕様28を使用する、論理抽出器31によって提供される。これらのサブセットルールは、次いでデータ精製器32に提供され、データ精製器32は、次いでサブセットルールを使用してデータ精製物33を作り出す。
別の例では、サブセットルールは、結果分析モジュール72からもたらされ、結果分析モジュール72は、特定の検査データに対してアプリケーション14を実行したという結果を含む情報に依拠する。データサブセット器18は、次いで、例えば結果分析モジュール72からの報告に基づいた、これらの結果の分析に基づくサブセットルールを策定する。これらのルールは、最終的にデータ精製器32によって実行されて、データ精製物33を作り出す。
さらに別の例では、サブセットルールを策定する代わりに、データサブセット器18が外部ソースからサブセットルールを受け取る。いくつかの場合では、データサブセット器18は、実際に検査コンピュータ12に座って、ユーザインターフェースを介してサブセットルールを手動で指定しているユーザから直接サブセットルールを受け取る。他の場合では、データサブセット器18は、検査コンピュータ12に、ハードディスクなどの非一時的コンピュータ可読記憶媒体からサブセットルールを読み取らせること、又は検査コンピュータ12に、インターネットなどのワイドエリアネットワークを含むネットワークなどの、非一時的コンピュータアクセス可能伝送媒体を介してサブセットルールを受け取らせることによって、サブセットルールを獲得する。
外部から受け取る、又は内部で生成するに関係なく、サブセットルールは、原子的又は分子的のいずれかである。原子的サブセットルールは、さらなるサブセットルールへと分解することはできない。分子的サブセットルールは、2又は3以上の原子的若しくは分子的サブセットルールの組合せからなる。典型的には、ブール演算子が、原子的サブセットルールを連結して、分子的サブセットルールを形成する。
サブセットルールは、確定的又は確率的のいずれかでもある。確定的サブセットルールの例は、全てのレコードの選択を特定の基準と一致させるルールである。確率的サブセットルールの例は、特定の基準と一致する全てのレコードのうち、それらのレコードの2つがランダムに選択されるものを指定するルールである。
いくつかの例では、サブセットルールは、1又は2以上のターゲットデータフィールドを指示し、ターゲットデータフィールドについて、各々固有の値又は値の分類がデータ精製物33中に含まれることを指定する。この例を実装するため、データ精製器32は、データレコード中のターゲットデータフィールドについて各固有の値を識別し、サブセットルールを満足するデータレコードをのみ有するデータ精製物33を作り出す。
例えば、50の州の各々について固有の値を有する「州」データフィールド、及び2つの固有の値を有する「性別」データフィールドは、ターゲットデータフィールドとして識別することができる。この場合では、「州」についての50の値の各々及び「性別」についての2つの値の各々が、データ精製物33中の少なくとも1つのデータレコードに含まれるように、データ精製器32は、データ精製物33のためにデータレコードを選択する。
いくつかの例では、データサブセット器18は、データレコードの同じ組内、又はデータレコードの異なる組間のデータレコードの間の関係のタイプを指定するサブセットルールを実装する。これらの例では、データ精製器32は、サブセットのために選択された他のデータレコードとの、データレコードの関係に基づいてデータレコードを選択する。例えば、データ精製器32は、データ精製物33中に含むために、カスタマ識別子データフィールドについて共通の値を共有するデータレコードを選択することができる。
データサブセット器18は、フィルタ処理に依拠するサブセットルールを実装することもできる。これらの場合では、データ精製器32は、データ精製物33中内に、ある種のターゲットフィールド中に特定の値を有するレコードを含む。例えば、データ精製器32は、「州」の各値が少なくとも一度は表されるようにレコードを選択することができる。又は、データ精製器32は、「人口」というフィールドの値を考えて、「州」の値を有するレコードの数がその州に関連する「人口」の値に依存するようにデータレコードを選択することによって、配分方式を適用することができる。
いくつかの実施形態では、データ分析者又はアプリケーション開発者などのユーザがサブセットルールを提供する。例えば、ユーザは、ターゲットフィールドを識別し、又はデータレコード間の関係を指定し、及びそのような指定をデータサブセット器18に提供することができる。
他の例では、データサブセット器18は、データレコードをプロファイリングし、プロファイルの分析を実行して、好適なデータサブセットルールを識別又は策定する。プロファイリングを実行するため、データサブセット器18は、関連するデータレコードにアクセスし、データレコードのある種の特徴を分析して、データレコードのプロファイルを生成する。これらの特徴は、以下、すなわち、単一のデータセットの個別のデータレコード、データレコードの組内のデータフィールド間の関係、及びデータレコードの異なる組にわたるデータフィールド間の関係のうちの1又は2以上を含む。
データレコードの組のプロファイルは、データレコードの組中のデータの概要である。この概要は、フィールド単位で提供することができる。プロファイルは、データレコードの組中のデータを特徴付ける情報を含むことができる。そのような情報の例としては、データレコード中のデータフィールドのうちの1又は2以上の濃度、データフィールドのうちの1又は2以上の中の値の分類、個別のデータレコード中のデータフィールド間の関係、及びデータレコード間の関係が挙げられる。データレコードの組のプロファイルは、「疑似フィールド」を特徴付ける情報も含むことができる。疑似フィールドは、関係するデータレコード中の1又は2以上のデータフィールドから取られる値を操作することにより決定される値でポピュレートされている合成データフィールドである。
データレコードの生成されたプロファイルに基づいて、データ精製器31は、アプリケーション14について良好なコードカバレッジを達成するデータレコードのサブセットの選択に関係するデータレコードの特徴を識別する。例えば、データレコードのプロファイルに基づいて、データ精製器31は、アプリケーションの入力変数及び導出変数に関する可能性がある、1又は2以上のデータフィールド又はデータフィールドの組合せを識別することができる。いくつかの場合では、サブセットルールは、ユーザから若しくはコンピュータ記憶媒体から受け取った入力に基づいて、及び/又はアプリケーション14の実行の結果に基づいて、例えば結果分析モジュール72から受け取った入力に基づいて策定することもできる。
データサブセット器18は、異なる解析法に基づいてサブセットルールを指定することができる。いくつかの実施形態では、データサブセット器18は、個別のデータレコード内のデータフィールドの分析に基づいて、サブセットルールを指定する。一例では、これは、どのデータフィールドがアプリケーション14中の変数に関係する可能性があるのかを判定することを含む。別の例では、データサブセット器18は、フィールドの許容される値の数に基づいてターゲットデータフィールドを識別する。例えば、「性別」データフィールドは、ただ2つの許容される値を有し、ターゲットデータフィールドとして識別することができる。他方、「電話番号」データフィールドは、ターゲットデータフィールドとして識別される可能性がない。
さらに他の例では、データサブセット器18は、ターゲットデータフィールドとして、1又は2以上のデータフィールド中のデータの操作の結果得られるデータでポピュレートされた疑似フィールドを識別する。例えば、「所得」データフィールドは、(例えば、高、中、又は低といった)カテゴリへと分類することができ、「所得」データフィールドの分類でポピュレートされた疑似フィールドは、ターゲットデータフィールドとして識別することができる。
他の例では、データサブセット器18は、ターゲットデータフィールドと、プロファイル中に示されるような同じレコード内の1又は2以上の他のデータフィールドとの間の関係に基づいて、ターゲットデータフィールドを識別する。例えば、プロファイルは、データフィールド「州」及び「郵便番号」が無関係ではないことを示すことができる。この依存性に基づいて、データサブセット器18は、それらのデータフィールドのうちのただ1つを可能なターゲットデータフィールドと考えることができる。
データサブセット器18は、プロファイル中に示されるような、データレコードの組内の異なるデータレコード間、及び/又はデータレコードの異なる組にわたる関係の分析に基づいて、1又は2以上のサブセットルールを指定することもできる。例えば、プロファイルは、データレコードがデータフィールドの共通の値を介してリンクできることを示すことができる。リンクする値の例は、カスタマIDデータフィールドの値となる。
データサブセット器18がデータレコードのサブセットを選択し、データ点検ユニット37がそれらの有効性を確認したら、データエンジニアリングモジュール16は、データレコードのサブセットを計算環境マネージャ44に提供し、計算環境マネージャ44は、最終的に、データレコードのサブセットが、検査されているアプリケーション14による操作を受けるための準備をする。データエンジニアリングモジュール16は、データ精製物33を含むデータレコード又はそれらのデータレコードを示すデータのいずれかを提供する。例えば、データエンジニアリングモジュール16は、計算環境マネージャ44に、データ精製物33を含むデータレコードについての識別子、又はそれらのデータレコードについてのアドレスを提供することができる。データエンジニアリングモジュール16は、計算環境マネージャ44に、データレコードの選択されたサブセットを含むファイルを提供することもできる。
実行後、結果分析モジュール72は、データ精製物33に対してアプリケーション14を実行した結果を示すデータを含むカバレッジ分析報告を生成する。いくつかの実践では、結果分析モジュール72は、アプリケーション14がコンパイルされたソースコードの部分が実行したのか実行しなかったのかを識別する情報、又はアプリケーション14がコンパイルされたソースコードの各部分が何回実行したのかを識別する情報を含むカバレッジ分析報告を生成する。ある種の実践では、結果分析モジュール72は、アプリケーション14が実行した又は実行しなかったルールを識別する情報、及びアプリケーション14が各ルールを実行した回数を識別する情報を含むカバレッジ分析報告を生成する。他の実践では、結果分析モジュール72は、アプリケーション14がコンパイルされ、実行した又は実行しなかったソースコードの部分、並びにアプリケーション14がコンパイルされたソースコードの選択された部分が実行した回数を識別する情報を含むカバレッジ分析報告を生成する。他の実践では、結果分析モジュール72は、アプリケーション14がコンパイルされたソースコードの特定の部分を実行する試みに関連して生じるエラーを識別する情報を含むカバレッジ分析報告を生成する。さらに他の実践では、結果分析モジュール72は、アプリケーション14がある種のルールを実行することを試みたときに生じるエラーを識別する情報、並びに実行したときにエラーという結果となったルールの識別情報を含むカバレッジ分析報告を生成する。
いくつかの実践では、結果分析モジュール72は、実行した又は実行しなかったルールを直接識別するカバレッジ分析報告を生成する。他の実践では、結果分析モジュール72は、各論理ルールが実行した回数、実行期間のアプリケーションの各変数の値、又は他の情報などの、アプリケーション14の実行についての追加情報を含むカバレッジ分析報告を生成する。
他の実践では、実行しなかったアプリケーション中の各論理ルールについて、結果分析モジュール72は、その論理ルールに関するアプリケーション14の1又は2以上の変数を識別する。他の実践では、結果分析モジュール72は、アプリケーション14を通したデータの流れを示すデータなどの報告に含まれるデータに基づく、又はアプリケーションについてプリロードされた情報に基づく変数をやはり識別する。いくつかの場合では、結果分析モジュール72は、論理ルールを実行させた各変数についての値又は値の範囲も識別する。識別されると、データエンジニアリングモジュール16は、入力データフィールド及び変数に対応する値又は値の範囲を使用して、データレコードの更新サブセットの以降の選択に、追加のサブセットルールを指定する。
例えば、識別された変数がデータレコードのデータフィールドのうちの1つに直接対応するアプリケーションの入力変数である場合、データエンジニアリングモジュール16は、対応するデータフィールド及びデータフィールドについての値又は値の範囲を識別する。
例えば、入力変数が何らかの閾値より大きいときにアプリケーション14中の論理ルールを実行する場合、入力変数が閾値よりも大きい値を有する少なくとも1つのデータレコードを、任意の製造された又は精製されたデータが含むはずであると、データエンジニアリングモジュール16は決定する。この情報に基づいて、そのルールに対する入力変数が閾値を上回るときにだけ実行する論理ルールの実行を引き起こすのに十分なデータをアプリケーション14に提供される後続のデータレコードが含むことになるように、データエンジニアリングモジュール16は、追加のサブセットルールを指定する。
別の例では、識別された変数は、データレコードのデータフィールドのうちの1つに直接対応しない。そのような変数は、「導出変数」と呼ばれる。導出変数の場合には、データエンジニアリングモジュール16は、アプリケーション14の論理を通して、導出変数の導出過程をたどるため、データ系列を分析する。このデータ系列分析によって、識別された変数が導出された特定の1又は2以上の入力変数を識別することが可能になる。データエンジニアリングモジュール16は、次いで、データフィールドについての、対応する1又は2以上のデータフィールド及び値又は値の範囲を識別する。
例えば、導出変数の値が特定の値に等しいときにアプリケーション14中の論理ルールが実行する場合、データエンジニアリングモジュール16は、データ系列分析のための命令を実行して、導出変数が3つの入力変数の論理的な組合せから導出されることを決定する。導出変数の論理的導出過程に従うことによって、データエンジニアリングモジュール16は、これらの3つの入力変数の要求された値が、特定の導出変数を実現すると決定する。
導出変数の所望の値を産出するのに必要な値の決定は、データサブセット器18に提供されて、導出変数に所望の値を獲得させ、したがって関連する論理ルールの実行をトリガするのに十分なデータをデータ精製物33が含むように、データサブセット器18が追加のサブセットルールを指定する。
いくつかの例では、カバレッジ分析の結果は、ユーザにやはり提供される。これに応じて、ユーザは、データサブセット器18に追加のサブセットルールを提供することができ、又は以前に提供されたサブセットルールを変更することができる。
いくつかの論理ルールは、非常にまれにトリガされるので、データレコードの完全な組でさえも、その論理ルールを実装するコードをアプリケーション14に実行させるのに十分なデータを、単に偶然に含む可能性はない。完全なデータセット中のそのような不備を識別するために、アプリケーション14を、データレコードの全てを入力として使用して、1回又は2回以上実行することができる。結果として得られる報告は、入力のために選択されるデータレコードのサブセットにかかわらずカバーすることができないルールを識別する。この不備に対処するために、データ駆動型検査用フレームワーク10は、肯定データ製造器22及び/又は否定データ製造器24を使用して必要なデータを製造する。
いくつかの実施形態では、データエンジニアリングモジュール16は、フィルタ処理によってデータサブセット化を実行する。フィルタ処理は、肯定的又は否定的であってよい。肯定的フィルタ処理では、空の組で開始して、いくつかの条件を満足するデータレコードだけを追加する。否定的フィルタ処理では、不足のないデータセットで開始して、いくつかの条件を満足するデータレコードを削除することによって、データセットを少しずつ削り落とす。
他の実施形態では、データエンジニアリングモジュール16は、各ターゲットデータフィールドについて、各々の許容される値が少なくとも1回現れる、又は指定の回数現れるように、ターゲットデータフィールドを識別すること、各々のそのようなフィールドの肯定的な値を決定すること、及びデータレコードを選択することによって、データのサブセット化を実行する。
さらに他の実施形態では、データエンジニアリングモジュール16は、データ分類によってデータのサブセット化を実行する。これは、ターゲットデータフィールドを識別する方法と同様であるが、値の範囲が実際のターゲット値を置き換える。こうして、ターゲットデータフィールドがリスク評価に使用されるコレステロールレベルを表す場合、範囲を使用して、低、中、及び高収入を表す値域を規定することができる。その場合、データレコードは、各値域又は分類が同じ所定の数のレコードを有するように選択されることになる。
さらなる実施形態では、データエンジニアリングモジュール16は、値の組合せに依拠することによってデータのサブセット化を実行する。これは、2つの許容される値(例えば、性別)を有する第1のフィールドと12の許容される値(例えば、誕生月)を有する第2のフィールドといった、2つのターゲットデータフィールドを考えることによって理解することができる。各々の可能な値が少なくとも1回確実に存在することをのみ望む場合、この要件は、単に12のレコードで満足することができる。しかし、これら2つのフィールドの全ての可能な組合せを有することを希望する可能性があることが考えられる。その場合、少なくとも24のレコードを選択する必要があることになる。
上の方法、並びにデータサブセット器14によって実装できるさらなる方法のさらなる詳細は、既に参照により組み込まれている「DATA RECORDS SELECTION」という題名の特許公開中に見いだすことができる。
データエンジニアリングモジュール16は、肯定データ製造器22、否定データ製造器24、及びデータ補強器20を使用して、既に参照により組み込まれている「DATA GENERATION」という題名の出願中に記載された原理にしたがって動作する。
データエンジニアリングモジュール16は、ユーザが指定することができる、特定のタイプのデータを生成する。例示的なデータタイプとしては、文字列、10進整数、日付、及び時間が挙げられる。データエンジニアリングモジュール16は、製造される10進又は整数データについて許容される値の範囲、製造される文字列データについて平均文字列長、製造されるデータ中で使用することができる値又は文字の組、及び他の特性などといった、製造されるデータへの制限を課する。データエンジニアリングモジュール16は、既存のソースレコードの1又は2以上のフィールド中の値を変更すること、レコード中に新しいフィールドを作り出すこと及びポピュレートすることによってソースレコードを補強すること、又は完全に新しいレコードを作り出すことによってデータを製造することができる。いくつかの例では、ユーザが、ユーザインターフェースを通して、設定可能なオプションを指定する。
データエンジニアリングモジュール16は、肯定データ製造器22を使用してアプリケーション14によって処理するためのデータを製造する。データエンジニアリングモジュール16は、データ補強器20を使用して、プロダクションデータ26などの既存のデータを変更又は補強することもできる。例えば、データ補強器20は、プロダクションデータ26から取られた1若しくは2以上のフィールドについて値を変更することができ、又は1若しくは2以上の新しいフィールドを作り出してポピュレートし、それらをプロダクションデータ26中の既存のデータレコードに追加することができる。肯定データ製造器22を使用して、データエンジニアリングモジュール16は、完全に新しいデータレコードを製造することもできる。いくつかの実施形態では、これらの新しいレコードのフォーマットは、プロダクションデータ26に基づき、一方他の実施形態では、ユーザなどの外部エージェントが、サブセットルールを指定することに関連して上で議論したのと同じ方法を使用して、フォーマットを指定することになる。
データエンジニアリングモジュール16は、ターゲット中に記憶されるデータを製造する。いくつかの例では、データエンジニアリングモジュール16は、プロダクションデータ26に基づいてデータを製造する。他の例では、データエンジニアリングモジュール16は、最初からデータを製造する。本明細書で使用する、「最初から(from scratch)」製造するとは、指定される特性にしたがうが、既存のデータに基づかずに製造することを意味する。
プロダクションデータは、ファイル、データベース、パラメータセット、又は別のデータのソースであってよい。プロダクションデータ26は、各々がデータの1又は2以上のフィールドを有する、1又は2以上のレコードを含むことができる。例えば、プロダクションデータ26は、小売店のカスタマについてのカスタマレコードを記憶するカスタマデータベースであってよい。そのようなデータベース中の各レコードは、個別のカスタマを表す。各レコードは、複数のフィールドを有することができる。プロダクションデータ26は、フィールドの数、各フィールド中のデータのタイプ、及び値の許容範囲、最大許容値、又は許容される文字のリストなどの各フィールド中のデータの特性などのレコードのフォーマットを指定するレコードフォーマットを有することができる。いくつかの例では、データエンジニアリングモジュール16は、最初からデータを生成する。そのような場合、データソースは提供されない。
データエンジニアリングモジュール16は、データベース、ファイル、又は他のデータ構造中に記憶することができる、設定データに基づいてデータを製造する。設定データは、使用されるデータ生成手法、内容生成モード、製造されるデータのデータタイプ、製造されるデータについての内容基準、及び製造されるデータについての他の設定情報を指定することができる。
いくつかの場合では、データエンジニアリングモジュール16がデータを製造するために使用する設定データの一部又は全部を、検査コンピュータ12上で利用可能なユーザインターフェースを通してユーザが指定する。他の例では、データエンジニアリングモジュール16が設定データの一部又は全部を決定する。これらの場合では、データエンジニアリングモジュール16は、プロダクションデータの分析に基づいて、又はターゲットの所望の性質についての情報に基づいて、決定する。
いくつかの例では、データエンジニアリングモジュール16は、データ補強器20を使用して、設定データにしたがってプロダクションデータ26中の既存のソースレコードのフィールドの1又は2以上についての値を変更すること、及びターゲット中に変更したレコードを記憶することによって、ターゲットについてのデータを製造する。他の例では、データエンジニアリングモジュール16は、データ補強器20を使用して、所与のフィールドについて値の全てを変更する。例えば、レコードの全てにわたる所与のフィールド中の値の分散が、設定データにより示されるようなターゲット分散と一致するように、各レコードについて、所与のフィールドに対して値を割り当てることができる。ユーザ又は設定データのいずれかが、このターゲット分散を指定する、又はこのターゲット分散を指定するための情報を提供する。
いくつかの場合では、データエンジニアリングモジュール16は、所与のフィールドについての値の全部ではなく一部を変更する。これらの場合の中には、データエンジニアリングモジュール16が、設定データにより示されるような指定された基準に一致しない値をのみ変更する場合がある。そのような場合の例は、データエンジニアリングモジュール16が、所与のフィールドについて許容される値の特定の範囲外にある、所与のフィールドについての任意の値を変更する場合である。
いくつかの例では、データエンジニアリングモジュール16は、プロダクションデータ26の既存のソースレコードを、設定データにしたがって、1又は2以上の新しいフィールドで補強するためにデータ補強器20を使用すること、及びターゲット中にこれらの補強されたレコードを記憶することによってデータを製造する。設定データは、新しいフィールドの数、新しいフィールドについてのデータタイプ及び値、並びに新しいフィールドの他の特性を決定するための命令を提供する。
他の例では、データエンジニアリングモジュール16は、設定データにより提供される情報を使用してデータを製造する。情報は、新しいフィールドについての値が、プロダクションデータ中の既存のフィールドについてのデータに基づいて製造されることを指定する。あるいは、この情報は、新しいフィールドについての値が、任意の既存のソースデータには基づかないが、代わりに設定データによって指定されるある種の特性にしたがって製造されることを指定する。
いくつかの例では、データエンジニアリングモジュール16は、プロダクションデータ26の既存のソースレコードを、設定データにしたがって、1又は2以上の新しいレコードで補強するためにデータ補強器20を使用すること、及びターゲット中に補強されたレコード(すなわち、既存のソースレコード及び新しいレコードの両方)を記憶することによってデータを製造する。いくつかの実施形態では、新しいレコードは、ソースレコードと同じレコードフォーマットを有する。
他の例では、設定データは、以下、すなわち、新しいレコードの数、新しいレコードのフィールドについての値、及び新しいレコードの他の特性のうちの1又は2以上の任意の組合せを決定するための命令を提供する。これらの例の中には、新しいレコード中の1又は2以上のフィールドについての値が最初から製造されることを設定データが指定する例がある。
いくつかの他の例では、設定データは、プロファイルを指定し、新しいレコード中の1又は2以上のフィールドについての値が、そのプロファイルを満足するように製造されることを要求する。1つのそのような例では、プロファイルは、レコードの全ての中の特定のフィールドについての値が、指定された特性を集合的に満足することを指定する。特性の例は、値が特定の平均値又は特定の分散値を有することである。例えば、カスタマデータベースソースにおいて、レコードの全てにわたる「年齢」フィールドについての値が特定の平均を有するポアソン分布を満足するようにレコードが製造されることを、設定データが要求する場合がある。
いくつかの例では、設定データは、データエンジニアリングモジュール16が、データ生成に対して2以上の手法を施すことを要求する。1つのそのような例では、データエンジニアリングモジュール16は、以下の手法、すなわち、1又は2以上のフィールドについての値を変更すること、ソースレコードを1又は2以上の新しいフィールドで補強すること、及びソースレコードを1又は2以上の新しいレコードで補強することの任意の組合せを施す。
いくつかの例では、ターゲットは、製造されたレコードだけを記憶する。他の例では、ユーザがソースを指定し、データエンジニアリングモジュール16が、特性に基づいてレコードを製造する。好適な特性の例は、ソースのレコードフォーマット、又はソースの1若しくは2以上のフィールドのプロファイルである。
他の例では、ソースが指定されない。そのような例では、データエンジニアリングモジュール16は、設定データにしたがって、自動的に最初からレコードを製造する。
いくつかの例では、ソースのレコードフォーマットがターゲットにマッピングされる。1つのそのような例では、設定データは、ソースのレコードフォーマットがターゲットによって採用されることを示す。別のそのような例では、設定データは、ソースのレコードフォーマットがターゲットに適用され、ソースのレコードフォーマットにしたがって、新しいレコードがデータエンジニアリングモジュール16によって最初から製造されることを必要とする。他のそのような例では、データエンジニアリングモジュール16が複数のソースに依拠し、各ソースのレコードフォーマットが、部分的又は完全にターゲットにマッピングされる。少なくとも1つのそのような例では、各ソースからの対象のフィールドのフォーマットが、ターゲットにマッピングされる。
いくつかの例では、データエンジニアリングモジュール16は、ソースのレコードフォーマットをターゲットにマッピングし、それを変更する。これらの例の中には、設定データがデータエンジニアリングモジュール16にフィールドの名前を変えさせる例、及び設定データがソースからフィールドを除去させる例がある。
データエンジニアリングモジュール16は、検査コンピュータ12上で、ユーザがデータソースを識別することを可能にするソースウィンドウを有するユーザインターフェースを提供する。ソースウィンドウは、ファイル又はデータベースなどのソースタイプ、及びソースへ又はデータベースソースについての設定ファイルへのパスなどのソースの識別子をユーザが指定することを可能にするソースタイプメニューを含む。いくつかの例では、ソースがデータベースであるとき、ユーザは、データベースからソースデータを獲得するために使用されるクエリ(例えば、SQLクエリ)を指定する。ソースウィンドウは、データエンジニアリングモジュール16が新しいレコードを製造するべきであるのか、またその場合、どれだけ多く製造するかをユーザに示すことができるオプションを提供する。ソースウィンドウによって、ユーザが、ソースについての他の情報を閲覧する又は指定することが可能になる。例えば、ユーザは、ソースのレコードフォーマットを閲覧すること、ソースのレコードフォーマットを規定するファイルを指定すること、ソースデータを閲覧すること、又はソースデータのプロファイルを閲覧することができる。
いくつかの例では、ユーザインターフェースのソースウィンドウによって、ユーザが、ソースを指定することなく、データエンジニアリングモジュール16にデータを製造させることが可能になる。特に、ソースウィンドウによって、ユーザが、ソースタイプメニュー中のソースタイプとして製造したデータを選択することが可能になる。ソースタイプとして製造データを選択することで、ユーザインターフェース中のデータ生成ウィンドウが表示される。データ生成ウィンドウによって、ユーザが、データを製造するために使用する方法を示すこと、及び製造される新しいレコードの数を示すことが可能になる。
ユーザインターフェースは、ユーザがターゲットを識別することを可能にするターゲットウィンドウをやはり提供する。ターゲットウィンドウ中のターゲットタイプメニューによって、ユーザが、ターゲットのタイプを指定することが可能になる。ターゲットの例としては、ファイル又はデータベースが挙げられる。ターゲットウィンドウによって、ユーザが、ターゲットの識別子(例えば、ターゲットファイルへのパス、又はターゲットデータベースについての設定ファイルへのパス)を指定することがやはり可能になる。ターゲットウィンドウは、ソース及びターゲットが識別されると、データ生成のための様々な設定可能なオプションへのアクセスをユーザに提供するランボタンを提供する。
データエンジニアリングモジュール16は、データを製造するためのいくつかの手法を提供する。これらは、フィールド変更、フィールド作成、レコード作成、既存ソースの使用、親データセットの使用を含む。利用可能な手法にアクセスするために、ユーザは、ユーザインターフェースのデータ生成ウィンドウに依拠する。
フィールド変更手法では、データエンジニアリングモジュール16は、ソースレコードの1又は2以上のフィールドについての値を変更する。いくつかの場合では、データエンジニアリングモジュール16は、所与のフィールドについての値の全てを変更する。いくつかの場合では、データエンジニアリングモジュール16は、レコードの全てにわたる所与のフィールド中の値の分散がターゲット分散と一致するように、フィールドの値を変更する。別の例では、データエンジニアリングモジュール16は、所与のフィールドについての値の全部ではなく一部を変更する。これらの例の中には、データエンジニアリングモジュール16が指定された基準に一致しない値をのみ変更する例がある。例えば、特定のフィールドについて許容される値の特定の範囲の外にある任意の値を変更することができる。
フィールド作成手法では、データエンジニアリングモジュール16は、既存のレコードについて、1又は2以上の新しいフィールドを作り出す。いくつかの例では、データエンジニアリングモジュール16は、ソースデータ中の既存のフィールドのためのデータに基づいて、新しいフィールドのための値を製造する。他の例では、データエンジニアリングモジュール16は、新しいフィールドのための値を最初から製造する。
レコード作成手法では、データエンジニアリングモジュール16は、新しいレコードを製造する。ユーザは、新しいレコードの数及びそのフォーマットのうちの少なくとも1つを指定する。例えば、ターゲットが、既存のソースレコード及び新しく製造されたレコードの両方でポピュレートされる場合、新しいレコードのレコードフォーマットは、ソースレコードのレコードフォーマットと同じである。ターゲットが新しく製造されたレコードのみでポピュレートされる場合、製造されたレコードに適用されるレコードフォーマットをユーザが指定する。レコードフォーマットとしては、フィールドの数、各フィールドについてのデータのタイプ、例えば、最大値、最小値、許容される文字の組、及び他の特性といった各フィールドについてのデータの特性、並びにレコードフォーマットの他の特徴が挙げられる。
既存データセット手法では、データエンジニアリングモジュール16は、既存のソースレコード中の各々のキーとなる値について指定された数の新しいレコードを製造する。キーとなる値は、既存のソースレコード中の対象のフィールド中の値である。
一例では、補助ソースが、ターゲットレコードのある種のフィールドをポピュレートするために使用されるデータを含む。しかし、補助ソースは、ソース又はターゲットのいずれかのレコードフォーマットと一致するレコードフォーマットを有さない。この場合には、データエンジニアリングモジュール16は、補助ソースからターゲットレコードに、1又は2以上の対象のフィールドをマッピングする。親データセット手法では、ソースは、階層中の親データセットである。この場合には、データエンジニアリングモジュール16は、親データセットに関係する子データセットを製造する。親データセット手法の一例では、ソースとして機能する親データセットは、カスタマレコードの組であり、ターゲットとして機能する子データセットは、各カスタマについての1又は2以上のトランザクションレコードの組である。キーフィールドは、子データセット中のレコードを親セット中の対応するレコードとリンクする。例えば、「カスタマID」フィールドが、カスタマレコードとトランザクションレコードをリンクするキーフィールドであってよい。いくつかの場合では、データエンジニアリングモジュール16は、どれだけ多くの子レコードを製造するのかについての仕様を受け取る。他の場合では、データエンジニアリングモジュール16は、子レコードを製造するのに使用されないことになる親レコードの百分率の仕様を受け取る。さらに他の場合では、データエンジニアリングモジュール16は、子レコードのためのレコードフォーマットの仕様を受け取る。
いくつかの例では、データエンジニアリングモジュール16は、フォーマット仕様にしたがってデータを製造する。フォーマット仕様は、製造されることになるデータのフォーマットを指定する。一例では、フォーマット仕様は、製造されることになるデータのデータタイプを示す。
他の例では、データエンジニアリングモジュール16は、内容基準にしたがってデータを製造する。内容基準は、製造されることになるデータの特性を限定する。内容基準の例としては値の許容範囲、最大許容値、及び許容される文字のリストが挙げられる。
いくつかの場合では、ターゲットレコードのレコードフォーマットが、フォーマット仕様及び内容基準を指定する。他の例では、フォーマット仕様又はフィールドについての内容基準などの、フィールドの特性をユーザが指定することを可能にする、フィールドウィンドウをユーザインターフェースが提供する。
ユーザインターフェースは、ユーザがターゲットレコードフォーマットを編集することを可能にするためのレコードフォーマットウィンドウをさらに含む。これは、ターゲットの1又は2以上のフィールドについて、データ特性を編集することを含むことになる。レコードフォーマットウィンドウは、ターゲットレコードフォーマット中にあるデータのリストを表示する。このフィールドリストは、各フィールドについてのデータタイプも示す。いくつかの例では、ターゲットレコードフォーマット中にあるフィールドは、ソースレコードフォーマット中にやはり現れる。ターゲットレコードフォーマット及びソースレコードフォーマットの両方に現れるこれらのフィールドは、フィールドリスト中にマーキングされていてもよい。いくつかの例では、マーキングされないフィールドは、ターゲットレコードフォーマット中にのみ現れる。他の例では、ソースレコードフォーマット中に現れるがターゲットレコードフォーマット中に現れないフィールドは、フィールドリストにはない。
レコードフォーマットウィンドウによって、データエンジニアリングモジュール16にデータ生成特性を通信するために、ユーザが、ターゲットレコードフォーマットの1又は2以上のフィールドを選択することが可能になる。何が選択されているのかをユーザが把握するのを助けるために、ユーザインターフェースは、ターゲットレコードフォーマットの選択されたフィールドの選択リストを含む。選択リスト中に列挙されるフィールドは、データ生成特性を指定することをユーザが意図するターゲットレコードフォーマットのフィールドである。
いくつかの例では、選択リストは、ターゲットレコードフォーマット中のフィールドの全てのフィールドリストのサブセットである。これは、ターゲットレコードフォーマットのフィールドの単に一部について、データ生成特性を指定することをユーザが意図する場合に生じる。
ユーザインターフェースによって、選択リスト中に表示される選択されたフィールドの各々について、レコードフォーマットをユーザが編集することが可能になる。例えば、選択されたフィールドの各々について、フィールドについてのデータタイプを指示すること、フィールドに対して内容生成モードを割り当てること、及びフィールドについてデータ特性を指定することの任意の組合せを、ユーザが実施することができる。ユーザインターフェースは、選択されたフィールドの各々について、データタイプウィンドウ、内容生成ウィンドウ、及びデータ特性ウィンドウのうちの1又は2以上を順に表示する。これらのウィンドウによって、選択されたフィールドの各々について様々な特徴をユーザが指定することが可能になる。
上に記載されたデータ駆動型検査用フレームワーク10は、例えば、好適なソフトウェア命令を実行するプログラム可能なコンピューティングシステムを使用して実装することができ、又はフィールドプログラマブルゲートアレイ(FPGA, field-programmable gate array)などの好適なハードウェア、又は何らかのハイブリッド形式で実装することができる。例えば、プログラム手法では、ソフトウェアは、各々が少なくとも1つのプロセッサ、(揮発性及び/若しくは不揮発性メモリ並びに/又は記憶素子を含む)少なくとも1つのデータ記憶システム、(少なくとも1つの入力デバイス又はポートを使用して入力を受け取るため、及び少なくとも1つの出力デバイス又はポートを使用して出力を提供するための)少なくとも1つのユーザインターフェースを含む、(分散型、クライアント/サーバ、又はグリッドなどの様々なアーキテクチャであってよい)1若しくは2以上のプログラムされた、又はプログラム可能なコンピューティングシステム上で実行する、1若しくは2以上のコンピュータプログラム中の手順を含むことができる。ソフトウェアは、例えば、データフロー図の設計、設定、及び実行に関するサービスを提供する、より大きいプログラムの1又は2以上のモジュールを含むことができる。プログラムのモジュール(例えば、データフロー図の要素)は、データリポジトリ中に記憶されるデータモデルと一致する、データ構造又は他の組織化されたデータとして実装することができる。
ソフトウェアは、揮発性若しくは不揮発性記憶媒体、又は任意の他の非一時的媒体中に、(例えば、表面のピットとランド、磁気領域、又は電荷といった)媒体の物理的性質を使用して具現化されるような非一時的な形態で、(例えば、ダイナミックRAMなどの動的記憶デバイスのリフレッシュ期間の間の時間といった)期間の間、記憶することができる。命令をロードするための準備において、ソフトウェアは、CD−ROM若しくは(例えば、汎用若しくは専用コンピューティングシステム若しくはデバイスによって可読である)他のコンピュータ可読媒体などの、有形の非一時的媒体上で提供することができ、又は命令が実行されるコンピューティングシステムの有形の非一時的媒体に、ネットワークの通信媒体を介して(例えば、伝播信号中にエンコードされて)送達することができる。処理の一部又は全部を、専用コンピュータ、又は、コプロセッサ若しくはフィールドプログラマブルゲートアレイ(FPGA)若しくは専用の特定用途向け集積回路(ASIC, application-specific integrated circuit)などの専用ハードウェアを使用して実施することができる。処理は、ソフトウェアにより指定される計算の異なる部分が異なる計算要素によって実施される、分散的に実装することができる。各々のそのようなコンピュータプログラムは、好ましくは、本明細書に記載された処理を実施するためにコンピュータが記憶デバイス媒体を読むときに、コンピュータを設定及び動作させるため、汎用若しくは専用プログラム可能コンピュータによりアクセス可能な記憶デバイスの、(例えば、固体メモリ若しくは媒体、又は磁気若しくは光媒体といった)コンピュータ可読記憶媒体に記憶又はダウンロードされる。本発明のシステムは、コンピュータプログラムで設定される、有形の非一時的媒体として実装されると考えることもでき、ここで、そのように設定される媒体は、コンピュータを、特定の予め規定したように動作させて、本明細書に記載された処理ステップのうちの1又は2以上を実施させる。
本発明のいくつかの実施形態が記載されてきた。それにもかかわらず、上記の記載は、本発明の範囲を説明することを意図しており、本発明の範囲を限定することは意図しておらず、本発明の範囲は、以下の請求項の範囲によって規定されることを理解されたい。したがって、他の実施形態は、以下の請求項の範囲内にやはり入る。例えば、本発明の範囲から逸脱することなく、様々な変形形態を行うことができる。加えて、上に記載したステップのいくつかは、順序に依存しない場合があり、したがって、記載されたものと異なる順序で実施することができる。
本発明、及びその好ましい実施形態を記載してきたが、新規であると請求され、特許証により保証されるものは、以下である。

Claims (37)

  1. アプリケーションを検査するための装置であって、メモリ、及び前記メモリに動作可能に接続されるプロセッサを有するデータ処理機械を含み、前記データ処理機械が、データエンジニアリングモジュールと、計算環境マネージャと、結果分析モジュールとを含むデータ駆動型検査用フレームワークを実装するように構成され、
    前記データエンジニアリングモジュールが、検査を受けるアプリケーションに少なくとも部分的に基づいて工学設計された検査データを作り出すように構成され、
    前記計算環境マネージャが、前記工学設計された検査データを前記アプリケーションが操作するべき計算環境を制御するように構成され、
    前記結果分析モジュールが、前記アプリケーションによる操作を受けた工学設計された検査データを予想される出力と比較するように構成される、前記装置。
  2. データエンジニアリングモジュールが、プロダクションデータのサブセットを抽出するように構成され、
    前記サブセットが、指定されるコードカバレッジを達成するように選択され、
    工学設計された検査データが、前記プロダクションデータの前記サブセットを含む、
    請求項1に記載の装置。
  3. データエンジニアリングモジュールが、プロダクションデータから精製されたデータを生成するためのデータ精製器を含む、請求項1に記載の装置。
  4. 追加データが、指定されたコードカバレッジを達成するように選択される、請求項34に記載の装置。
  5. データエンジニアリングモジュールが、データ精製器からの精製されたデータを受け取り前記精製されたデータを拡張するためのデータ拡張器を含む、請求項1に記載の装置。
  6. データエンジニアリングモジュールが、検査を受けるアプリケーションに少なくとも部分的に基づいてデータを生成するように構成され、前記生成されるデータが、指定されるコードカバレッジを達成するように選択され、工学設計される検査データが、前記生成されるデータを含む、請求項1に記載の装置。
  7. データエンジニアリングモジュールが肯定データを生成するための肯定データ製造器をさらに含む、請求項1に記載の装置。
  8. データエンジニアリングモジュールが検査を受けるアプリケーションに少なくとも部分的に基づいてデータを生成するように構成され、前記データがプロダクションデータにない、請求項1に記載の装置。
  9. データエンジニアリングモジュールが否定データを生成するための否定データ製造器をさらに含む、請求項1に記載の装置。
  10. データエンジニアリングモジュールが、工学設計された検査データを生成するための手段を含む、請求項1に記載の装置。
  11. データエンジニアリングモジュールが、工学設計された検査データの参照整合性を決定するための整合性チェッカを含む、請求項1に記載の装置。
  12. データエンジニアリングモジュールが、参照整合性中のエラーを検出するようにさらに構成される、請求項1に記載の装置。
  13. データエンジニアリングモジュールが、データ中の参照整合性の損失を、工学設計された検査データとして前記データを出力する前に訂正するための再参照器を含む、請求項1に記載の装置。
  14. データエンジニアリングモジュールがデータ中の参照整合性の損失を訂正するようにさらに構成される、請求項1に記載の装置。
  15. データエンジニアリングモジュールが、工学設計された検査データを受け取り、前記工学設計された検査データを閲覧すること及び前記工学設計された検査データのプロファイリングを行うことのうちの少なくとも一方をユーザに可能にする点検ユニットを含む、請求項1に記載の装置。
  16. データエンジニアリングモジュールが、工学設計された検査データを受け取り、前記工学設計された検査データを閲覧することをユーザに可能にするデータ点検ユニットを含む、請求項1に記載の装置。
  17. データエンジニアリングモジュールが、工学設計された検査データを受け取り、前記工学設計された検査データのプロファイリングを行うことをユーザに可能にするプロファイラを含む、請求項1に記載の装置。
  18. データエンジニアリングモジュールが、工学設計された検査データのプロファイリングを行うことをユーザに可能にさせるようにさらに構成される、請求項1に記載の装置。
  19. データエンジニアリングモジュールが、工学設計された検査データを閲覧することをユーザに可能にさせるようにさらに構成される、請求項1に記載の装置。
  20. データエンジニアリングモジュールが、工学設計された検査データを生成するための複数の手段を含み、工学設計された検査データを生成するための特定の手段が、検査を受けるアプリケーションに関する情報に少なくとも部分的に基づいて生成される、請求項1に記載の装置。
  21. データエンジニアリングモジュールが、データ拡張器、データ精製器、否定データ製造器、及び肯定データ製造器を含み、それらの各々が、工学設計された検査データにとっての基礎をなすデータを提供するように構成される、請求項1に記載の装置。
  22. データエンジニアリングモジュールが、検査を受けるアプリケーション内の検査を受ける論理機能を識別するように構成され、それらの論理機能をデータ精製器に提供する論理抽出器を含む、請求項1に記載の装置。
  23. データエンジニアリングモジュールが検査を受けるアプリケーション内の検査を受ける論理機能を識別するようにさらに構成されて、プロダクションデータのサブセットを獲得するための基礎として使用されることになるそれらの論理機能を提供する、請求項1に記載の装置。
  24. 計算環境マネージャが、検査されるべきである検査を受けるアプリケーションが検査される計算環境を自動的にセットアップし削除するための手段を含む、請求項1に記載の装置。
  25. 計算環境マネージャが環境移行機械を含み、前記環境移行機械が、工学設計された検査データのソースを識別するように構成され、前記環境移行機械が、検査を受けるアプリケーションによる前記工学設計された検査データの処理で生じるデータを入れるターゲットを識別するようにさらに構成される、請求項1に記載の装置。
  26. 環境移行機械が、第1のリポジトリからソースに工学設計された検査データをコピーするようにさらに構成される、請求項1に記載の装置。
  27. 環境移行機械がターゲットから第2のリポジトリに工学設計された検査データをコピーするようにさらに構成される、請求項26に記載の装置。
  28. 計算環境マネージャが、環境バックアップ機械及び復元機械を含み、前記環境バックアップ機械が、第2の環境へと第1の環境を変換する前に、前記第1の環境をバックアップするために構成され、前記復元機械が、前記第2の環境を前記第1の環境で置き換えるために構成され、前記第2の環境が、検査を受けるアプリケーションの検査が行われることになる環境である、請求項1に記載の装置。
  29. 計算環境マネージャが実行器を含み、前記実行器が検査を受けるアプリケーションの実行を行わせるように構成される、請求項1に記載の装置。
  30. アプリケーションの実行を行わせるときに、自動的にスクリプトを実行するように実行器が構成される、請求項29に記載の装置。
  31. 計算環境マネージャが、環境移行機械、環境バックアップ機械、復元機械、及び実行器を含み、前記環境移行機械が、工学設計された検査データのソースを識別するように構成され、前記環境移行機械が、検査を受けるアプリケーションによる前記工学設計された検査データの処理で生じるデータを入れるターゲットを識別するようにさらに構成され、前記環境バックアップ機械が、第2の環境へと第1の環境を変換する前に、前記第1の環境をバックアップするために構成され、前記復元機械が、前記第2の環境を前記第1の環境で置き換えるために構成され、前記第2の環境が、検査を受ける前記アプリケーションの検査が行われることになる環境であり、前記実行器が検査を受ける前記アプリケーションの実行を行わせるように構成される、請求項1に記載の装置。
  32. コンピューティングシステム中でデータを処理するための方法であって、
    アプリケーションを検査するステップを含み、アプリケーションを検査するステップが、検査を受けるアプリケーションを表す情報を、入力デバイス及びデータ処理システムのポートのうちの1つを介して受け取るステップ、及び前記受け取った情報を処理するステップを含み、前記受け取った情報を処理するステップが、
    前記情報に少なくとも部分的に基づいて工学設計された検査データを作り出すステップと、
    前記工学設計された検査データを前記アプリケーションが操作するべき計算環境を制御するステップと、
    前記アプリケーションによる操作を受けた工学設計された検査データを予想される出力と比較するステップとを含み、前記方法が、
    前記比較を示す結果を出力するステップ
    をさらに含む、前記方法。
  33. アプリケーションの検査を管理するため、コンピュータ可読媒体上に非一時的な形態で記憶されるソフトウェアであって、
    検査を受けるアプリケーションに少なくとも部分的に基づいて工学設計された検査データを作り出すステップと、
    前記工学設計された検査データを前記アプリケーションが操作するべき計算環境を制御するステップと、
    前記アプリケーションによる操作を受けた工学設計された検査データを予想される出力と比較するステップと、
    前記比較の分析を出力するステップと
    を含む処理ステップをコンピューティングシステムに実行させるための命令を含む、前記ソフトウェア。
  34. データエンジニアリングモジュールが、既存データのサブセットを抽出するように構成され、前記データエンジニアリングモジュールが、前記サブセットを補強し、それによって、補強データを生成するようにさらに構成され、工学設計される検査データが、前記補強データを含む、請求項1に記載の装置。
  35. 補強データが、サブセットの1又は2以上のレコードに追加される1又は2以上のフィールドを含む、請求項34に記載の装置。
  36. データエンジニアリングモジュールが、1又は2以上の供給されるルールに基づいて追加された1又は2以上のフィールドを満たすためのデータを生成するようにさらに構成される、請求項35に記載の装置。
  37. データエンジニアリングモジュールが、既存のデータの精製によって工学設計された検査データを作り出すように構成され、前記工学設計された検査データが、前記既存データよりも高い論理濃度を有する、請求項1に記載の装置。
JP2017513040A 2014-09-08 2015-09-04 データ駆動型検査用フレームワーク Active JP6723989B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201462047256P 2014-09-08 2014-09-08
US62/047,256 2014-09-08
PCT/US2015/048528 WO2016040154A1 (en) 2014-09-08 2015-09-04 Data-driven testing framework

Publications (2)

Publication Number Publication Date
JP2017531855A true JP2017531855A (ja) 2017-10-26
JP6723989B2 JP6723989B2 (ja) 2020-07-15

Family

ID=54207705

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017513040A Active JP6723989B2 (ja) 2014-09-08 2015-09-04 データ駆動型検査用フレームワーク

Country Status (9)

Country Link
US (1) US10007598B2 (ja)
EP (1) EP3191963B1 (ja)
JP (1) JP6723989B2 (ja)
KR (1) KR102356771B1 (ja)
CN (1) CN107077413B (ja)
AU (1) AU2015315522B2 (ja)
CA (1) CA2960417C (ja)
SG (1) SG11201701822RA (ja)
WO (1) WO2016040154A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11055213B2 (en) 2019-11-06 2021-07-06 International Business Machines Corporation Facilitating localization of code defect

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710367B1 (en) * 2015-10-30 2017-07-18 EMC IP Holding Company LLC Method and system for dynamic test case creation and documentation to the test repository through automation
CN105389257B (zh) * 2015-11-11 2017-12-12 中国建设银行股份有限公司 一种系统参数处理方法、装置及系统
US10642720B2 (en) * 2016-09-15 2020-05-05 Talend, Inc. Test case generator built into data-integration workflow editor
US20180293272A1 (en) * 2017-04-05 2018-10-11 Futurewei Technologies, Inc. Statistics-Based Multidimensional Data Cloning
CN107315681A (zh) * 2017-06-09 2017-11-03 上海爱优威软件开发有限公司 应用程序自启动测试系统、媒质和方法
US10514898B2 (en) * 2017-08-10 2019-12-24 Raju Pandey Method and system to develop, deploy, test, and manage platform-independent software
US10417115B1 (en) * 2018-04-27 2019-09-17 Amdocs Development Limited System, method, and computer program for performing production driven testing
US11797427B2 (en) * 2019-05-22 2023-10-24 Oracle International Corporation Automatic generation of unit tests while running an application
CN110928788B (zh) * 2019-11-22 2023-09-19 泰康保险集团股份有限公司 服务验证方法及设备
CN111352846B (zh) * 2020-03-06 2024-03-19 深圳前海微众银行股份有限公司 测试系统的造数方法、装置、设备及存储介质
US11321306B2 (en) 2020-05-28 2022-05-03 Bank Of America Corporation Cloning of sanitized data records for use in data testing environments
CN112115010B (zh) * 2020-08-27 2024-05-10 深圳市紫金支点技术股份有限公司 一种自助设备的模拟测试方法、智能终端、存储介质
CN113342649B (zh) * 2021-05-31 2023-11-14 上海创景信息科技有限公司 基于真实目标机实现单元测试的方法、介质和设备
CN114860575B (zh) * 2022-03-31 2023-10-03 中国电信股份有限公司 测试数据生成方法及装置、存储介质及电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006252158A (ja) * 2005-03-10 2006-09-21 Nomura Research Institute Ltd 電文処理システムのテストデータの生成装置、方法、及びプログラム
JP2009205239A (ja) * 2008-02-26 2009-09-10 Hitachi Ltd ソフトウェア検証システム
JP2010250669A (ja) * 2009-04-17 2010-11-04 Denso Corp テストケース生成装置、オブジェクト検査装置、およびプログラム
JP2012190063A (ja) * 2011-03-08 2012-10-04 Fujitsu Marketing Ltd データ生成装置及びデータ生成プログラム
JP2013105358A (ja) * 2011-11-15 2013-05-30 Japan Research Institute Ltd プログラムの新旧バージョンに対する差分比較テストシステム及びテスト方法
US20140222752A1 (en) * 2013-02-01 2014-08-07 Ab Initio Technology Llc Data records selection

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7117219B1 (en) * 2000-05-05 2006-10-03 Group 1 Software, Inc. Method and apparatus for creating a lineage of a data field in a data flow system
US7065677B1 (en) * 2003-04-10 2006-06-20 Microsoft Corporation Method for testing operating system components
US7366740B2 (en) * 2004-05-03 2008-04-29 Microsoft Corporation Systems and methods for automatic maintenance and repair of enitites in a data model
US7363616B2 (en) * 2004-09-15 2008-04-22 Microsoft Corporation Systems and methods for prioritized data-driven software testing
WO2007072238A1 (en) * 2005-12-23 2007-06-28 International Business Machines Corporation Method and system for biometric authentication
JP2007304778A (ja) * 2006-05-10 2007-11-22 Nec System Technologies Ltd プログラムのテスト方法、プログラム、テスト装置、及びアプリケーション開発システム
CN100547562C (zh) 2006-10-18 2009-10-07 国际商业机器公司 自动生成可再现运行时问题的单元测试用例的方法和系统
JP2008226056A (ja) * 2007-03-14 2008-09-25 Hitachi Information Systems Ltd テストデータ生成システム
US8069129B2 (en) 2007-04-10 2011-11-29 Ab Initio Technology Llc Editing and compiling business rules
US8126831B2 (en) * 2008-01-24 2012-02-28 Nec Laboratories America, Inc. System and method for dynamically inferring data preconditions over predicates by tree learning
US9189233B2 (en) * 2008-11-24 2015-11-17 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US20100205153A1 (en) * 2009-02-12 2010-08-12 Accenture Global Services Gmbh Data System Architecture to Analyze Distributed Data Sets
CN102227716B (zh) * 2009-03-30 2014-01-01 株式会社野村综合研究所 动作验证装置、动作验证方法、以及动作验证系统
US10102398B2 (en) 2009-06-01 2018-10-16 Ab Initio Technology Llc Generating obfuscated data
EP2440882B1 (en) 2009-06-10 2020-02-12 Ab Initio Technology LLC Generating test data
US8423965B2 (en) * 2009-06-23 2013-04-16 Microsoft Corporation Tracing of data flow
US8745592B1 (en) 2010-01-08 2014-06-03 Google Inc. Input selection for automatic test suite generation
US8510715B1 (en) 2010-01-26 2013-08-13 Google Inc. Coverage analysis using sub-instruction profiling
EP2585949B1 (en) 2010-06-22 2015-03-25 Ab Initio Technology LLC Processing related datasets
US8682910B2 (en) * 2010-08-03 2014-03-25 Accenture Global Services Limited Database anonymization for use in testing database-centric applications
EP2668725B1 (en) * 2011-01-28 2021-12-22 Ab Initio Technology LLC Generating data pattern information
WO2012109771A1 (en) * 2011-02-18 2012-08-23 Hewlett-Packard Development Company, L. P. Generating test data
US9026548B2 (en) * 2011-06-27 2015-05-05 Tata Consultancy Services Limited Database sampling
US9886369B2 (en) * 2011-11-13 2018-02-06 International Business Machines Corporation Dynamic data fabrication for database applications
EP2597573B1 (en) * 2011-11-28 2018-08-29 Tata Consultancy Services Limited Test data generation
US8527813B2 (en) * 2011-12-19 2013-09-03 Siemens Aktiengesellschaft Dynamic reprioritization of test cases during test execution
CN103176973B (zh) * 2011-12-20 2016-04-20 国际商业机器公司 用于生成数据库的测试工作负载的系统和方法
US9659042B2 (en) * 2012-06-12 2017-05-23 Accenture Global Services Limited Data lineage tracking
US8996915B2 (en) * 2012-06-29 2015-03-31 International Business Machines Corporation Test data generation and scale up for database testing
WO2014000269A1 (en) * 2012-06-29 2014-01-03 Hewlett-Packard Development Company, L.P. Rule-based automated test data generation
US9218269B2 (en) * 2012-09-07 2015-12-22 Red Hat Israel, Ltd. Testing multiple target platforms
EP2779044A1 (en) * 2013-03-14 2014-09-17 Tata Consultancy Services Limited System and method to provide management of test data at various lifecycle stages
US9576036B2 (en) * 2013-03-15 2017-02-21 International Business Machines Corporation Self-analyzing data processing job to determine data quality issues
IN2013MU01495A (ja) * 2013-04-22 2015-04-17 Tata Consultancy Services Ltd
JP6882892B2 (ja) 2013-12-18 2021-06-02 アビニシオ テクノロジー エルエルシー データ生成
US9336100B2 (en) * 2013-12-27 2016-05-10 International Business Machines Corporation Efficient debugging of memory miscompare failures in post-silicon validation
CN104077227B (zh) * 2014-07-08 2017-01-04 大连海事大学 一种基于b/s架构的程序源代码的评判系统及方法
GB2529842A (en) * 2014-09-03 2016-03-09 Ibm Generating coverage metrics for black-box testing

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006252158A (ja) * 2005-03-10 2006-09-21 Nomura Research Institute Ltd 電文処理システムのテストデータの生成装置、方法、及びプログラム
JP2009205239A (ja) * 2008-02-26 2009-09-10 Hitachi Ltd ソフトウェア検証システム
JP2010250669A (ja) * 2009-04-17 2010-11-04 Denso Corp テストケース生成装置、オブジェクト検査装置、およびプログラム
JP2012190063A (ja) * 2011-03-08 2012-10-04 Fujitsu Marketing Ltd データ生成装置及びデータ生成プログラム
JP2013105358A (ja) * 2011-11-15 2013-05-30 Japan Research Institute Ltd プログラムの新旧バージョンに対する差分比較テストシステム及びテスト方法
US20140222752A1 (en) * 2013-02-01 2014-08-07 Ab Initio Technology Llc Data records selection

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11055213B2 (en) 2019-11-06 2021-07-06 International Business Machines Corporation Facilitating localization of code defect

Also Published As

Publication number Publication date
KR20170052668A (ko) 2017-05-12
AU2015315522A1 (en) 2017-04-20
WO2016040154A1 (en) 2016-03-17
JP6723989B2 (ja) 2020-07-15
KR102356771B1 (ko) 2022-01-27
US20160070641A1 (en) 2016-03-10
US10007598B2 (en) 2018-06-26
EP3191963A1 (en) 2017-07-19
AU2015315522B2 (en) 2019-08-29
CA2960417C (en) 2023-12-19
SG11201701822RA (en) 2017-04-27
CA2960417A1 (en) 2016-03-17
CN107077413A (zh) 2017-08-18
EP3191963B1 (en) 2023-11-22
CN107077413B (zh) 2021-01-15

Similar Documents

Publication Publication Date Title
JP6723989B2 (ja) データ駆動型検査用フレームワーク
US10275601B2 (en) Flaw attribution and correlation
Rosen et al. Commit guru: analytics and risk prediction of software commits
Shihab et al. An industrial study on the risk of software changes
US10289532B2 (en) Method and system for providing delta code coverage information
US7418453B2 (en) Updating a data warehouse schema based on changes in an observation model
US8832662B2 (en) Rules engine for architectural governance
US8930918B2 (en) System and method for SQL performance assurance services
US20080163015A1 (en) Framework for automated testing of enterprise computer systems
US8904357B2 (en) Dashboard for architectural governance
US20140298286A1 (en) Systems and Methods for Automatically Associating Software Elements and Automatic Gantt Chart Creation
US20180232299A1 (en) Composing future tests
Thongtanunam et al. Will this clone be short-lived? Towards a better understanding of the characteristics of short-lived clones
US8606762B2 (en) Data quality administration framework
Ostrand et al. A Tool for Mining Defect-Tracking Systems to Predict Fault-Prone Files.
KR20090099977A (ko) 예약된 컴포넌트 컨테이너 기반 소프트웨어 개발 방법 및장치
JP7246301B2 (ja) プログラム開発支援システム及びプログラム開発支援方法
Anang et al. Implementation of Test-Driven Development in Data Access Layer within a Business System Development
Sonnleitner et al. Persistence of workflow control data in temporal databases
CN115033215A (zh) 数据流图的构建方法、装置、设备及介质
CN117271320A (zh) 一种基于函数颗粒度的代码变更审查方法
Mukkamala et al. TDMS: test data management system for aviation software
Tiwari An empirical study of the Eclipse Project
Rodr SOA-enabled compliance management: instrumenting, assessing, and analyzing service-based business processes

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170509

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180720

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190626

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190708

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20191002

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20191203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200128

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200427

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200624

R150 Certificate of patent or registration of utility model

Ref document number: 6723989

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250