(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-26
(45)【発行日】2025-01-10
(54)【発明の名称】決定論的順序でテストを実行すること
(51)【国際特許分類】
G06F 11/36 20060101AFI20241227BHJP
【FI】
G06F11/36 184
(21)【出願番号】P 2022548937
(86)(22)【出願日】2021-02-09
(86)【国際出願番号】 IB2021051033
(87)【国際公開番号】W WO2021171117
(87)【国際公開日】2021-09-02
【審査請求日】2023-07-21
(32)【優先日】2020-02-28
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】ヒックス、アンドリュー
(72)【発明者】
【氏名】ロウリンス、ライアン、トーマス
(72)【発明者】
【氏名】ファーマン、デボラ
(72)【発明者】
【氏名】ギルデイン、マイケル
【審査官】今川 悟
(56)【参考文献】
【文献】特開2013-077124(JP,A)
【文献】国際公開第2016/170937(WO,A1)
【文献】特開2013-125420(JP,A)
【文献】特開2015-156076(JP,A)
【文献】Dale BLUE ほか,Practical Fault Localization with Combinatorial Test Design,2019 IEEE International Conference on Software Testing, Verification and Validation Workshops(ICSTW),[online],2019年06月06日,[令和6年7月16日検索]、インターネット<URL:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8728912>
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
(57)【特許請求の範囲】
【請求項1】
テスト対象システム(SUT)における欠陥を検出および限局する方法であって、
前記SUTへの入力を属性値ペアの集合としてモデル化することと、
前記属性値ペアの集合からの各属性値ペアに確率値を割り当てることと、
少なくとも一部、対応する確率値に基づいて属性値ペアの1つまたは複数の組み合わせを除外することによって、前記属性値ペアの全ての可能な組み合わせを含むカルテシアン積空間を縮小テスト空間に縮小することと、
前記縮小テスト空間の完全nワイズ・カバレッジを提供するテスト・ベクトルの初期セットを生成することと、
前記テスト・ベクトルの初期セットからテスト・ケースの初期セットを生成することと、
前記テスト・ケースの初期セットを実行して実行結果の第1のセットを取得することと、
前記実行結果の第1のセットに少なくとも一部基づいて、1つまたは複数のテスト・ケースが実行に失敗したと判断することと、
選択した失敗テスト・ケースから新たなテスト・ケースのセットを生成することと、
前記新たなテスト・ケースのセットを実行して実行結果の第2のセットを取得することと、
前記実行結果の第2のセットに少なくとも一部基づいて前記欠陥を検出および限局することと、
を含む、方法。
【請求項2】
前記カルテシアン積空間が、前記SUTのアーキテクチャ制限に基づいてさらに縮小される、請求項1に記載の方法。
【請求項3】
前記アーキテクチャ制限が、第2の属性が特定の属性値を有する場合に第1の属性が1つもしくは複数の候補属性値をとることができないという要件、前記第2の属性が前記特定の属性値を有する場合に前記第1の属性が特定の候補属性値をとらなければならないという要件、または前記第2の属性が前記特定の属性値を有する場合に第3の属性を導入するための要件のうちの少なくとも1つを含む、請求項2に記載の方法。
【請求項4】
属性値ペアおよび対応する確率値が、ハッシュで表される、請求項1に記載の方法。
【請求項5】
テストされる第1の属性値ペアに、第2の属性値ペアの第2の確率値よりも高い第1の確率値が割り当てられる、請求項1に記載の方法。
【請求項6】
前記実行結果の第2のセットに少なくとも一部基づいて前記欠陥を検出および限局することが、前記欠陥を引き起こす属性値の特定の組み合わせを判断することを含む、請求項1に記載の方法。
【請求項7】
前記欠陥を引き起こす前記属性値の特定の組み合わせに少なくとも一部基づいて失敗テスト・ケースの回帰バケットを生成することをさらに含む、請求項6に記載の方法。
【請求項8】
前記新たなテスト・ケースのセットを生成することが、前記選択した失敗テスト・ケース内の各属性に関連して、少なくとも一部、前記選択した失敗テスト・ケース内の前記属性についてのそれぞれの属性値を実行に失敗した前記1つまたは複数のテスト・ケースのいずれにも存在しない前記属性についてのそれぞれの他の候補属性値に変更することによって、新たなテスト・ケースのそれぞれのサブセットを生成することを含む、請求項1に記載の方法。
【請求項9】
テスト・ベクトルの初期セットを生成することが、前記属性値ペアの集合に関連付けられた前記縮小テスト空間の完全nワイズ・カバレッジを提供するテスト・ベクトルの初期セットを生成することを含み、選択した失敗テスト・ケースから新たなテスト・ケースのセットを生成することが、前記選択した失敗テスト・ケース内のそれぞれの属性値を変更してそれぞれの新たなテスト・ケースを生成することを含む、請求項1に記載の方法。
【請求項10】
システムであって、
メモリと、
前記メモリに連結されたプロセッサであって、前記プロセッサが、テスト対象システム(SUT)における欠陥を検出および限局する方法を実行するように構成され、前記方法が、
前記SUTへの入力を属性値ペアの集合としてモデル化することと、
前記属性値ペアの集合からの各属性値ペアに確率値を割り当てることと、
少なくとも一部、対応する確率値に基づいて属性値ペアの1つまたは複数の組み合わせを除外することによって、前記属性値ペアの全ての可能な組み合わせを含むカルテシアン積空間を縮小テスト空間に縮小することと、
前記縮小テスト空間の完全nワイズ・カバレッジを提供するテスト・ベクトルの初期セットを生成することと、
前記テスト・ベクトルの初期セットからテスト・ケースの初期セットを生成することと、
前記テスト・ケースの初期セットを実行して実行結果の第1のセットを取得することと、
前記実行結果の第1のセットに少なくとも一部基づいて、1つまたは複数のテスト・ケースが実行に失敗したと判断することと、
選択した失敗テスト・ケースから新たなテスト・ケースのセットを生成することと、
前記新たなテスト・ケースのセットを実行して実行結果の第2のセットを取得することと、
前記実行結果の第2のセットに少なくとも一部基づいて前記欠陥を検出および限局することと、
を含む、前記プロセッサと、
を備えるシステム。
【請求項11】
前記カルテシアン積空間が、前記SUTのアーキテクチャ制限に基づいてさらに縮小される、請求項10に記載のシステム。
【請求項12】
前記アーキテクチャ制限が、第2の属性が特定の属性値を有する場合に第1の属性が1つもしくは複数の候補属性値をとることができないという要件、前記第2の属性が前記特定の属性値を有する場合に前記第1の属性が特定の候補属性値をとらなければならないという要件、または前記第2の属性が前記特定の属性値を有する場合に第3の属性を導入するための要件のうちの少なくとも1つを含む、請求項11に記載のシステム。
【請求項13】
属性値ペアおよび対応する確率値が、ハッシュで表される、請求項10に記載のシステム。
【請求項14】
テストされる第1の属性値ペアに、第2の属性値ペアの第2の確率値よりも高い第1の確率値が割り当てられる、請求項10に記載のシステム。
【請求項15】
前記実行結果の第2のセットに少なくとも一部基づいて前記欠陥を検出および限局することが、前記欠陥を引き起こす属性値の特定の組み合わせを判断することを含む、請求項10に記載のシステム。
【請求項16】
前記方法が、前記欠陥を引き起こす前記属性値の特定の組み合わせに少なくとも一部基づいて失敗テスト・ケースの回帰バケットを生成することをさらに含む、請求項15に記載のシステム。
【請求項17】
テスト対象システム(SUT)における欠陥を検出および限局する方法であって、
前記SUTへの入力を属性値ペアの集合としてモデル化することと、
前記属性値ペアの集合からの各属性値ペアに確率値を割り当てることと、
少なくとも一部、対応する確率値に基づいて属性値ペアの1つまたは複数の組み合わせを除外することによって、前記属性値ペアの全ての可能な組み合わせを含むカルテシアン積空間を縮小テスト空間に縮小することと、
前記縮小テスト空間の完全nワイズ・カバレッジを提供するテスト・ベクトルの初期セットを生成することと、
前記テスト・ベクトルの初期セットからテスト・ケースの初期セットを生成することと、
前記テスト・ケースの初期セットを実行して実行結果の第1のセットを取得することと、
前記実行結果の第1のセットに少なくとも一部基づいて、1つまたは複数のテスト・ケースが実行に失敗したと判断することと、
選択した失敗テスト・ケースから新たなテスト・ケースのセットを生成することであって、前記新たなテスト・ケースのセットを生成することが、前記選択した失敗テスト・ケース内の各属性に関連して、少なくとも一部、前記選択した失敗テスト・ケース内の前記属性についてのそれぞれの属性値を実行に失敗した前記1つまたは複数のテスト・ケースのいずれにも存在しない前記属性についてのそれぞれの他の候補属性値に変更することによって、新たなテスト・ケースのそれぞれのサブセットを生成することを含む、前記生成することと、
前記新たなテスト・ケースのセットを実行して実行結果の第2のセットを取得することと、
前記実行結果の第2のセットに少なくとも一部基づいて前記欠陥を検出および限局することと、
を含む、方法。
【請求項18】
属性値ペアおよび対応する確率値が、ハッシュ値で表される、請求項17に記載の方法。
【請求項19】
テスト対象システム(SUT)における欠陥を検出および限局する方法であって、
前記SUTへの入力を属性値ペアの集合としてモデル化することと、
少なくとも一部、対応する確率値に基づいて属性値ペアの1つまたは複数の組み合わせを除外することによって、前記属性値ペアの全ての可能な組み合わせを含むテスト空間を縮小テスト空間に縮小することと、
前記属性値ペアの集合に関連付けられた前記縮小テスト空間の完全nワイズ・カバレッジを提供するテスト・ベクトルの初期セットを生成することと、
前記テスト・ベクトルの初期セットからテスト・ケースの初期セットを生成することと、
前記テスト・ケースの初期セットを実行して実行結果の第1のセットを取得することと、
前記実行結果の第1のセットに少なくとも一部基づいて、1つまたは複数のテスト・ケースが実行に失敗したと判断することと、
選択した失敗テスト・ケースから新たなテスト・ケースのセットを生成することであって、前記新たなテスト・ケースのセットを生成することが、前記選択した失敗テスト・ケース内のそれぞれの属性値を変更してそれぞれの新たなテスト・ケースを生成することを含む、前記生成することと、
前記新たなテスト・ケースのセットを実行して実行結果の第2のセットを取得することと、
前記実行結果の第2のセットに少なくとも一部基づいて前記欠陥を検出および限局することと、
を含む、方法。
【請求項20】
属性値ペアおよび対応する確率値が、ハッシュで表される、請求項19に記載の方法。
【請求項21】
コンピュータ・プログラムであって、請求項1ないし9または請求項17ないし20のいずれか1項に記載の
方法をコンピュータに実行させるための、コンピュータ・プログラム。
【請求項22】
コンピュータ・プログラムを記録したコンピュータ可読記憶媒体であって、前記コンピュータ・プログラムは、請求項1ないし9または請求項17ないし20のいずれか1項に記載の
方法をコンピュータに実行させるための、前記コンピュータ・プログラムである、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータ・プログラムのテストに関し、より詳細には、テスト・ケース・インフラストラクチャの縮小に関する。
【背景技術】
【0002】
コンピュータ化デバイスは、文書を書くことから信号機の制御まで、我々の生活のほとんど全ての側面を制御する。しかしながら、新たに設計されたコンピュータ化デバイスは、エラーが生じ易いことが多く、したがって、エラーを発見し補正するテスト段階を必要とする。テスト段階は、コンピュータ化デバイスを設計する際の最も困難なタスクの1つと考えられる。エラーを発見しないことの代償は、コンピュータ化デバイスの利用方法次第では莫大であることがあるため、徹底的なテストが重要である。ソフトウェアをチェックするためのカバレッジ・ツールは、評価されているソフトウェアがテスト中にどのくらいうまく実行されているかの尺度を提供し、それによりソフトウェアが高品質であるという保証のレベルを与える。
【発明の概要】
【0003】
本発明の1つまたは複数の実施形態によれば、テスト対象システム(SUT)における欠陥を検出および限局する方法は、SUTへの入力を属性値ペアの集合としてモデル化することと、属性値ペアの集合からの各属性値ペアに確率値を割り当てることと、を含む。方法は、少なくとも一部、対応する確率値に基づいて属性値ペアの1つまたは複数の組み合わせを除外することによって、属性値ペアの全ての可能な組み合わせを含むカルテシアン積空間を縮小テスト空間に縮小することをさらに含む。方法は、縮小テスト空間の完全nワイズ・カバレッジを提供するテスト・ベクトルの初期セットを生成することをさらに含む。方法は、テスト・ベクトルの初期セットからテスト・ケースの初期セットを生成することをさらに含む。方法は、テスト・ケースの初期セットを実行して実行結果の第1のセットを取得することをさらに含む。方法は、実行結果の第1のセットに少なくとも一部基づいて、1つまたは複数のテスト・ケースが実行に失敗したと判断することをさらに含む。方法は、選択した失敗テスト・ケースから新たなテスト・ケースのセットを生成することをさらに含む。方法は、新たなテスト・ケースのセットを実行して実行結果の第2のセットを取得することをさらに含む。方法は、実行結果の第2のセットに少なくとも一部基づいて欠陥を検出および限局することをさらに含む。
【0004】
本発明の1つまたは複数の実施形態において、カルテシアン積空間が、SUTのアーキテクチャ制限に基づいてさらに縮小される。さらに、本発明の1つまたは複数の実施形態において、アーキテクチャ制限が、第2の属性が特定の属性値を有する場合に第1の属性が1つもしくは複数の候補属性値をとることができないという要件、第2の属性が特定の属性値を有する場合に第1の属性が特定の候補属性値をとらなければならないという要件、または第2の属性が特定の属性値を有する場合に第3の属性を導入するための要件のうちの少なくとも1つを含む。
【0005】
本発明の1つまたは複数の実施形態において、属性値ペアおよび対応する確率値が、ハッシュで表される。さらに、テストされる第1の属性値ペアに、第2の属性値ペアの第2の確率値よりも高い第1の確率値が割り当てられる。
【0006】
本発明の1つまたは複数の実施形態において、実行結果の第2のセットに少なくとも一部基づいて欠陥を検出および限局することが、欠陥を引き起こす属性値の特定の組み合わせを判断することを含む。欠陥を引き起こす属性値の特定の組み合わせに少なくとも一部基づいて失敗テスト・ケースの回帰バケットを生成すること。
【0007】
技術的解決策は、本発明の1つまたは複数の実施形態におけるシステム、コンピュータ・プログラム製品、装置、機械、デバイス、または他の実用的な用途によっても実施され得る。
【0008】
追加的に、本発明の1つまたは複数の実施形態において、テスト対象システム(SUT)における欠陥を検出および限局するための方法は、SUTへの入力を属性値ペアの集合としてモデル化することを含む。方法は、属性値ペアの集合からの各属性値ペアに確率値を割り当てることをさらに含む。方法は、少なくとも一部、対応する確率値に基づいて属性値ペアの1つまたは複数の組み合わせを除外することによって、属性値ペアの全ての可能な組み合わせを含むカルテシアン積空間を縮小テスト空間に縮小することをさらに含む。方法は、縮小テスト空間の完全nワイズ・カバレッジを提供するテスト・ベクトルの初期セットを生成することをさらに含む。方法は、テスト・ベクトルの初期セットからテスト・ケースの初期セットを生成することをさらに含む。方法は、テスト・ケースの初期セットを実行して実行結果の第1のセットを取得することをさらに含む。方法は、実行結果の第1のセットに少なくとも一部基づいて、1つまたは複数のテスト・ケースが実行に失敗したと判断することをさらに含む。方法は、選択した失敗テスト・ケースから新たなテスト・ケースのセットを生成することであって、新たなテスト・ケースのセットを生成することが、選択した失敗テスト・ケース内の各属性に関連して、少なくとも一部、選択した失敗テスト・ケース内の属性についてのそれぞれの属性値を実行に失敗した1つまたは複数のテスト・ケースのいずれにも存在しない属性についてのそれぞれの他の候補属性値に変更することによって、新たなテスト・ケースのそれぞれのサブセットを生成することを含む、生成することをさらに含む。方法は、新たなテスト・ケースのセットを実行して実行結果の第2のセットを取得することをさらに含む。方法は、実行結果の第2のセットに少なくとも一部基づいて欠陥を検出および限局することをさらに含む。
【0009】
1つの態様によれば、テスト対象システム(SUT)における欠陥を検出および限局する方法であって、SUTへの入力を属性値ペアの集合としてモデル化することと、属性値ペアの集合からの各属性値ペアに確率値を割り当てることと、少なくとも一部、対応する確率値に基づいて属性値ペアの1つまたは複数の組み合わせを除外することによって、属性値ペアの全ての可能な組み合わせを含むカルテシアン積空間を縮小テスト空間に縮小することと、縮小テスト空間の完全nワイズ・カバレッジを提供するテスト・ベクトルの初期セットを生成することと、テスト・ベクトルの初期セットからテスト・ケースの初期セットを生成することと、テスト・ケースの初期セットを実行して実行結果の第1のセットを取得することと、実行結果の第1のセットに少なくとも一部基づいて、1つまたは複数のテスト・ケースが実行に失敗したと判断することと、選択した失敗テスト・ケースから新たなテスト・ケースのセットを生成することと、新たなテスト・ケースのセットを実行して実行結果の第2のセットを取得することと、実行結果の第2のセットに少なくとも一部基づいて欠陥を検出および限局することと、を含む、方法が提供される。
【0010】
別の態様によれば、システムであって、メモリと、メモリに連結されたプロセッサであって、プロセッサが、テスト対象システム(SUT)における欠陥を検出および限局する方法を実行するように構成され、方法が、SUTへの入力を属性値ペアの集合としてモデル化することと、属性値ペアの集合からの各属性値ペアに確率値を割り当てることと、少なくとも一部、対応する確率値に基づいて属性値ペアの1つまたは複数の組み合わせを除外することによって、属性値ペアの全ての可能な組み合わせを含むカルテシアン積空間を縮小テスト空間に縮小することと、縮小テスト空間の完全nワイズ・カバレッジを提供するテスト・ベクトルの初期セットを生成することと、テスト・ベクトルの初期セットからテスト・ケースの初期セットを生成することと、テスト・ケースの初期セットを実行して実行結果の第1のセットを取得することと、実行結果の第1のセットに少なくとも一部基づいて、1つまたは複数のテスト・ケースが実行に失敗したと判断することと、選択した失敗テスト・ケースから新たなテスト・ケースのセットを生成することと、新たなテスト・ケースのセットを実行して実行結果の第2のセットを取得することと、実行結果の第2のセットに少なくとも一部基づいて欠陥を検出および限局することと、を含む、プロセッサと、を備えるシステムが提供される。
【0011】
別の態様によれば、プロセッサによる実行時にSUTにおける欠陥を検出および限局する方法をプロセッサに実行させるコンピュータ実行可能命令が記憶されたコンピュータ可読記憶媒体を含む、コンピュータ・プログラム製品であって、方法が、SUTへの入力を属性値ペアの集合としてモデル化することと、属性値ペアの集合からの各属性値ペアに確率値を割り当てることと、少なくとも一部、対応する確率値に基づいて属性値ペアの1つまたは複数の組み合わせを除外することによって、属性値ペアの全ての可能な組み合わせを含むカルテシアン積空間を縮小テスト空間に縮小することと、縮小テスト空間の完全nワイズ・カバレッジを提供するテスト・ベクトルの初期セットを生成することと、テスト・ベクトルの初期セットからテスト・ケースの初期セットを生成することと、テスト・ケースの初期セットを実行して実行結果の第1のセットを取得することと、実行結果の第1のセットに少なくとも一部基づいて、1つまたは複数のテスト・ケースが実行に失敗したと判断することと、選択した失敗テスト・ケースから新たなテスト・ケースのセットを生成することと、新たなテスト・ケースのセットを実行して実行結果の第2のセットを取得することと、実行結果の第2のセットに少なくとも一部基づいて欠陥を検出および限局することと、を含む、コンピュータ・プログラム製品が提供される。
【0012】
別の態様によれば、テスト対象システム(SUT)における欠陥を検出および限局する方法であって、SUTへの入力を属性値ペアの集合としてモデル化することと、属性値ペアの集合からの各属性値ペアに確率値を割り当てることと、少なくとも一部、対応する確率値に基づいて属性値ペアの1つまたは複数の組み合わせを除外することによって、属性値ペアの全ての可能な組み合わせを含むカルテシアン積空間を縮小テスト空間に縮小することと、縮小テスト空間の完全nワイズ・カバレッジを提供するテスト・ベクトルの初期セットを生成することと、テスト・ベクトルの初期セットからテスト・ケースの初期セットを生成することと、テスト・ケースの初期セットを実行して実行結果の第1のセットを取得することと、実行結果の第1のセットに少なくとも一部基づいて、1つまたは複数のテスト・ケースが実行に失敗したと判断することと、選択した失敗テスト・ケースから新たなテスト・ケースのセットを生成することであって、新たなテスト・ケースのセットを生成することが、選択した失敗テスト・ケース内の各属性に関連して、少なくとも一部、選択した失敗テスト・ケース内の属性についてのそれぞれの属性値を実行に失敗した1つまたは複数のテスト・ケースのいずれにも存在しない属性についてのそれぞれの他の候補属性値に変更することによって、新たなテスト・ケースのそれぞれのサブセットを生成することを含む、生成することと、新たなテスト・ケースのセットを実行して実行結果の第2のセットを取得することと、実行結果の第2のセットに少なくとも一部基づいて欠陥を検出および限局することと、を含む、方法が提供される。
【0013】
別の態様によれば、テスト対象システム(SUT)における欠陥を検出および限局する方法であって、SUTへの入力を属性値ペアの集合としてモデル化することと、少なくとも一部、対応する確率値に基づいて属性値ペアの1つまたは複数の組み合わせを除外することによって、属性値ペアの全ての可能な組み合わせを含むテスト空間を縮小テスト空間に縮小することと、属性値ペアの集合に関連付けられた縮小テスト空間の完全nワイズ・カバレッジを提供するテスト・ベクトルの初期セットを生成することと、テスト・ベクトルの初期セットからテスト・ケースの初期セットを生成することと、テスト・ケースの初期セットを実行して実行結果の第1のセットを取得することと、実行結果の第1のセットに少なくとも一部基づいて、1つまたは複数のテスト・ケースが実行に失敗したと判断することと、選択した失敗テスト・ケースから新たなテスト・ケースのセットを生成することであって、新たなテスト・ケースのセットを生成することが、選択した失敗テスト・ケース内のそれぞれの属性値を変更してそれぞれの新たなテスト・ケースを生成することを含む、生成することと、新たなテスト・ケースのセットを実行して実行結果の第2のセットを取得することと、実行結果の第2のセットに少なくとも一部基づいて欠陥を検出および限局することと、を含む、方法が提供される。
【0014】
追加の技術的特徴および利益が、本発明の技術を通して実現される。本発明の実施形態および態様が、本明細書において詳細に説明され、特許請求される主題の一部と考えられる。より良く理解するために、詳細な説明および図面を参照する。
【0015】
本発明の好適な実施形態は、ここで単なる例として、以下の図面を参照して説明される。
【図面の簡単な説明】
【0016】
【
図1】本発明の1つまたは複数の実施形態による、コンピュータ化環境の概略図を示す。
【
図2】本発明の実施形態による、テスト・インフラストラクチャを提供するモジュールを表すブロック図である。
【
図3】本発明の1つまたは複数の例としての実施形態による、組み合わせテスト設計(CTD)を用いた欠陥検出および限局、ならびに検出された欠陥を顕在化させる失敗テスト・ケースの回帰バケットの生成を示す概略ハイブリッド・データ・フロー/ブロック図である。
【
図4】本発明の1つまたは複数の実施形態による、例としてのCTDベクトルのセットを示す。
【
図5】本発明の1つまたは複数の実施形態による、例としてのCTDベクトルを示す。
【
図6】本発明の1つまたは複数の例としての実施形態による、CTD技術を用いてnワイズ欠陥を検出および限局するため、ならびに検出されたnワイズ欠陥を顕在化させる失敗テスト・ケースの回帰バケットを生成するための、例示的方法のプロセス・フロー図である。
【
図7】本発明の1つまたは複数の実施形態による、テスト・インフラストラクチャにおいてテスト対象システムのために動作されるテストの決定論的順序を提供するためのフローチャートを示す。
【
図8】本発明の1つまたは複数の実施形態による、コンピュータ・システムを示す。
【発明を実施するための形態】
【0017】
本明細書で示される図は、例示である。本発明の思想から逸脱することなく、図面またはそこに説明される動作に対して多くの変形が存在し得る。例えば、アクションは、異なる順序で実行されてもよく、またはアクションが、追加され、削除され、もしくは修正されてもよい。また、「連結される」という用語およびその変形は、2つの要素間に通信経路を有することを述べ、要素間に介在要素/接続のない要素間の直接接続を意味するものではない。これらの変形の全てが、明細書の一部と考えられる。
【0018】
本発明の例示的実施形態は、特に、組み合わせテスト設計(CTD)技術を用いて欠陥検出および限局を実行するため、ならびに検出された欠陥を顕在化させるテスト・ケースの回帰バケットを生成するための、デバイス、システム、方法、コンピュータ可読媒体、技術、および方法論に関する。本発明の例示的実施形態では、検出および限局された欠陥が、テスト対象システム(SUT)において生じる。SUTは、ハードウェア・システムまたはソフトウェア・システムであってもよい。さらに、本発明の例示的実施形態では、欠陥検出および限局は、SUTに対するアーキテクチャ制限を遵守しながら実行され得る。
【0019】
追加的に、SUTをテストするためのカバレッジ・ツールは、SUTがテスト中にどれだけうまく動作しているかの尺度を提供し、それによりSUTが高品質であるというあるレベルの保証が得られる。ステートメント・カバレッジ、ライン・カバレッジ、条件カバレッジ、パス・カバレッジ、メソッド・カバレッジなどの、当技術分野において既知のいくつかの種類のカバレッジが存在する。1つのさらなるカバレッジ方法は、機能カバレッジである。機能カバレッジは、所定の機能的挙動を検査したテストの量、部分、または類似のメトリックを測定するように設計される。機能カバレッジが測定されると、品質保証(QA)要員は、テストされていない挙動を検査するための追加テストを設計し得る。
【0020】
しかしながら、テスト・インフラストラクチャは、非常にコストがかかる場合があり、製品、テスト、および環境を絶え間なく最適化しなければ、テスト・サイクル毎のコストは増加する。多くのテストが追加されるにつれて、より多くのテスト・スイートが動作し、サポート・サービスの複雑性が、各テスト・サイクルのコストと共に増加する。テスト環境、テスト依存関係、およびテスト・スイートは、出荷されている製品(即ちSUT)と同一の厳密さで管理される必要がある。したがって、テスト・インフラストラクチャを管理することが技術的課題であり、同様に、テスト・インフラストラクチャの効率的な縮小が技術的課題である。テスト・インフラストラクチャの縮小は、SUTのテスト品質の低下を意味しないことに留意されたい。むしろ、技術的課題は、テスト品質がテスト・インフラストラクチャの縮小と共に改善されるべきであるということである。
【0021】
本発明の実施形態は、そのような技術的課題に対処する。本発明の1つまたは複数の実施形態によれば、SUTのためのテスト・ケースの縮小セットが、システム上で実行される。システムはSUTとは異なり、SUTは、システムを用いて実行されていることに留意されたい。テスト・ケースの縮小セットは、組み合わせテスト設計(CTD)を用いて生成され得る。エラーは、その縮小セットから失敗するテストのサブセットに基づいて識別され得る。さらに、本発明の1つまたは複数の実施形態によれば、逆CTDが、システムにおける欠陥を限局するために使用される。
【0022】
本発明の1つまたは複数の実施形態によれば、CTDは、ペアワイズ・インタラクション、nタプル・インタラクション、またはその他などのインタラクション要件に関して行われる。テスト計画は、インタラクション要件が満たされることを保証する十分なカバレッジ・タスクを提供し得る。いくつかの例示的実施形態では、テスト計画は、機能カバレッジ・モデルを用いたテスト空間のモデル化に基づく。テスト空間は、入力、シナリオ、構成、アプリケーションの内部状態、またはテストされる必要があり得る任意の他の態様を表し得る。機能カバレッジ・モデルは、機能属性のセットを含み得る。本発明の他の実施形態では、カバレッジ・モデルは、ステートメント・カバレッジ、ライン・カバレッジ、条件カバレッジ、パス・カバレッジ、メソッド・カバレッジなどの、当技術分野において既知のいくつかの種類のカバレッジから1つを含み得る。カバレッジの種類は、本明細書に記載されるテスト・インフラストラクチャ技術の縮小に影響を及ぼさない。
【0023】
さらに、テスト計画に関して、テスト空間は、SUT上で実行され得る潜在テストを定義し得る。テストは、カバレッジ・タスクとは対照的に、1つだけの潜在テストに関連付けられ得る。本発明のいくつかの例示的実施形態では、いくつかの異なるテストが、同一の潜在テストを保持し得る。
【0024】
本発明のいくつかの例示的実施形態では、CTDの手法に対する動機付けは、大抵のエラーが少数の機能属性間のインタラクションに依存するということである。CTDアルゴリズムは、スケーラビリティの問題にも対処し得る。CTDアルゴリズムは、組み合わせ空間が大きすぎて明示的に表すことができないと仮定する場合があり、それらは、様々な技術を用いて、全ての可能な組み合わせを明示的に列挙することなく最適化されたテスト計画を生成しようと試みる。そのようなアルゴリズムの例が、直交配列または被覆配列問題への縮小であり得る。それらの技術は、値の組み合わせに与える制限の種類、または要求されるインタラクション・レベルの種類において制限され、モデル変数の数が増加するにつれてスケーラビリティの問題にやはりぶつかる。
【0025】
本発明の例としての実施形態では、SUTへの入力は、属性値ペアの集合としてモデル化される。より具体的には、SUTへの入力は、属性の集合としモデル化されてもよく、そのそれぞれが、1つまたは複数の対応する属性値をとり得る。本発明の例としての実施形態では、属性値ペアの全ての可能な組み合わせを含むカルテシアン積空間全体が、テスト空間全体の完全nワイズ・カバレッジを提供するテスト・ベクトルのより小さなセットに縮小され得る。例えば、4つの異なる属性A、B、C、およびDがモデル化されると仮定される場合、かつ属性Aが4つの別個の値をとることができ、属性Bが3つの別個の値をとることができ、属性Cが3つの別個の値をとることができ、属性Dが2つの別個の値をとることができるとさらに仮定される場合、属性値ペアの可能な組み合わせの総数は、4×3×3×2=72となる。したがって、この例示的な例では、カルテシアン積空間全体が、属性値ペアの72の異なる組み合わせを含む。前述した通り、属性値ペアのこれらの72の異なる組み合わせは、カルテシアン積空間の完全nワイズ・カバレッジを依然として提供する組み合わせのより小さなセットに縮小され得る。例えば、上記で導入された同じ例を参照すると、完全ペアワイズ・カバレッジが求められる場合、72の異なる組み合わせが、属性値のあらゆる可能なペアワイズ・インタラクションを一緒に含む、12の別個の組み合わせに減少され得る。nワイズ・カバレッジを提供するために必要な、減少された数の組み合わせは、nが増加するにつれて対数的に増加し得る。
【0026】
本発明の例示的実施形態では、属性値ペアの全ての組み合わせを含むカルテシアン積空間全体が、所望のnについて完全nワイズ・カバレッジを提供するCTDテスト・ベクトルのより小さなセットに縮小される。複雑なハードウェアまたはソフトウェア・システムにおいては、属性の総数および対応する候補属性値が極めて大きい場合があり、その場合、カルテシアン積空間全体を作り上げる属性値の可能な組み合わせの総数は、天文学的に大きくなることがあり、それによって、全ての可能な組み合わせをテストすることは事実上実行不可能となる。カルテシアン積空間全体を、完全nワイズ・カバレッジをやはり提供する大幅に小さな数のCTDテスト・ベクトルに縮小することによって、テスト空間における全ての可能な組み合わせを直接テストしなくても、任意のnワイズ(またはm<nの場合にmワイズ)欠陥が検出されることが可能となる。
【0027】
本発明の例示的実施形態において、縮小を実行し、完全nワイズ・カバレッジを提供するCTDベクトルの縮小セットを識別するために、二分決定図などが使用され得る。本発明の例としての実施形態では、生成される各CTDテスト・ベクトルは、属性値の一意な組み合わせを含み、CTDテスト・ベクトルのセットは、属性値の全ての可能なnワイズ・インタラクションを一緒に含む。特に、各CTDベクトルは、モデル化される属性の数に対応する次元を有し得る。その場合、CTDベクトルの各成分は、対応する属性のそれぞれの属性値である。しかしながら、生成されるCTDベクトルのセットは、一意ではない場合がある。即ち、CTDベクトルの複数の異なるセットが存在することがあり、そのそれぞれが完全nワイズ・カバレッジを提供する。本発明の例としての実施形態では、CTDベクトルが、完全nワイズ・カバレッジを依然として確保しながら、ランダムに選択され得る。他の例としての実施形態では、CTDベクトルの初期セットは、例えば、CTDベクトルのセットの中の特定の属性値の表現を増加または減少させるなど考慮して特定の基準で選択され得る。
【0028】
本発明の例示的実施形態では、CTDテスト・ベクトルの初期セットが一旦生成されると、それらは、テスト・ケースの対応するセットを生成するために使用される。例えば、CTDテスト・ベクトルのセットは、各CTDベクトルのためのそれぞれの対応するテスト・ケースを生成するように構成されるテスト・ケース生成ツールへの入力として、提供され得る。各テスト・ケースは、対応するCTDベクトルに含まれる属性値の特定の組み合わせ間のインタラクションをテストするように設計され得る。
【0029】
本発明の例示的実施形態では、次いで、テスト・ケースが実行される。各テスト・ケースの実行は、テスト・ケースに関連付けられた属性値の組み合わせがnワイズ(もしくはm<nの場合にmワイズ)エラーを含まないことを示す成功の実行結果、またはテスト・ケースに関連付けられた属性値の組み合わせがnワイズ(もしくはm<nの場合にmワイズ)エラーを含むことを示す失敗の実行結果のいずれかの結果をもたらす。本発明の例としての実施形態では、特定の失敗テスト・ケースが次いで選択され、逆組み合わせ論(inverse combinatorics)が失敗テスト・ケースに適用されてバグを顕在化させることが可能なテスト・ケースの新たなセットを作り出す。本発明の例示的実施形態では、選択した失敗テスト・ケースへの逆組み合わせ論の適用は、属性毎にそれぞれの新たなテスト・ケースを生成することを含む。したがって、生成される新たなテスト・ケースの数は、属性の数に等しくなり得る。本発明の例示的実施形態では、それぞれの新たなテスト・ケースにおいて、選択した失敗テスト・ケース内の対応する属性の属性値が、どの失敗テスト・ケースにも存在しない属性についての属性値に変更され、他の各属性についてのそれぞれの属性値は、選択した失敗テスト・ケースに存在するものから変更されない。
【0030】
成功の実行結果を生じるそれらの新たなテスト・ケースは、次いで、nワイズ(またはm<nの場合にmワイズ)エラーを検出および限局するために査定され得る。特に、エラーを引き起こす特定の属性値ペアは、実行が成功する新たなテスト・ケースに基づいて識別され得る。テスト・ケースの回帰バケットは、次いで、属性値ペアのエラーを生じさせる組み合わせに基づいて生成され得る。より具体的には、エラーを引き起こすと判断される属性値を含む属性値の全ての可能な組み合わせが判断されてもよく、これらの組み合わせをテストするための対応するテスト・ケースの回帰バケットが、例えば、手動テスタにより使用するために出力され得る。特に、本発明の例としての実施形態では、回帰バケットに含まれる全てのテスト・ケースは、バグが修正されるまで実行時に失敗し、バグ修正後は、全ての回帰バケット・テスト・ケースが合格するはずである(即ち、成功の実行結果を生じる)。
【0031】
本発明の例示的実施形態では、アーキテクチャ制限が、SUTに適用され得る。アーキテクチャ制限は、SUTへの入力に対する多様な制限のうちのいずれかを含み得る。例えば、例としての制限は、所与の属性が特定の属性値を有する場合に、1つまたは複数の他の属性が、ある属性値を有することから除外されることであってもよい。別の例としてのアーキテクチャ制限は、所与の属性が特定の属性値を有する場合に、1つまたは複数の他の属性が、ある属性値を有しなければならないということであってもよい。さらに別の例としてのアーキテクチャ制限は、特定の属性が特定の属性値を有する場合にのみ、新たな属性が導入されることであってもよい。アーキテクチャ制限の上記の例は、単なる例示であり、網羅的ではないことを理解されたい。
【0032】
本発明の例示的実施形態では、所望の完全nワイズ・カバレッジを提供するCTDベクトルの初期セットへのカルテシアン空間全体の縮小を実行する前に、アーキテクチャ制限が考慮される。即ち、本発明の例示的実施形態では、任意のアーキテクチャ制限に違反する属性値の特定の組み合わせは、カルテシアン積空間から最初に除外され、次いで、所望の完全nワイズ・カバレッジを提供するCTDベクトルのセットへの縮小が実行される。このようにして、アーキテクチャ制限に違反する属性値の組み合わせがCTDベクトルの初期セットに含まれないことが保証され得る。さらに、本発明の例示的実施形態では、初期CTDベクトルに対応する選択したテスト・ケースが失敗し、かつnワイズ・エラーを検出および限局するように設計された新たなテスト・ケースのセットを取得するための拡大のために選択されるとき、その拡大は、いかなるアーキテクチャ制限も考慮に入れることなく最初に実行され得る。次いで、アーキテクチャ制限に違反する任意の新たなテスト・ケースが除外され得る。このようにして、拡大は、失敗テスト・ケースの近傍におけるテスト空間の可能な限り多くのカバレッジを提供することが保証され得る。加えて、本発明の例示的実施形態では、失敗テスト・ケースの回帰バケットが、アーキテクチャ制限に関係なく最初に生成されてもよく、次いで、アーキテクチャ制限に違反する任意のテスト・ケースが、回帰バケットから除外されてもよい。即ち、nワイズ・エラーまたはより低い次数のエラーを引き起こす属性値の特定の組み合わせを含む、カルテシアン積テスト空間全体における全ての可能な組み合わせに対応するテスト・ケースが、最初に生成され、次いで制限に違反するいかなるテスト・ケースも除外するように縮小され得る。代替的に、回帰バケットに含まれるテスト・ケースは、CTDベクトルの初期セットが選択される、縮小されたカルテシアン空間から選択されてもよく、その場合、回帰バケットは、エラーを引き起こす属性値のサブセットを含み、かついかなるアーキテクチャ制限にも違反しない、属性値の組み合わせのみを含むように生成される。
【0033】
本発明の例としての実施形態は、コンピュータ技術に様々な改善をもたらす技術的効果を生じる様々な技術的特徴を含む。例えば、本発明の例示的実施形態は、選択した失敗テスト・ケースからテスト・ケースのセットを拡大するための、逆組み合わせ論の技術的特徴を含む。この技術的特徴は、nワイズ欠陥またはより低い次数の欠陥が、拡大の単一の繰り返しの中で検出および限局されることを可能にする。この技術的効果は、デバッグおよび欠陥検出コンピュータ技術に対する改善を表す。それは、欠陥の検出および限局を容易にするように特に設計された方式で、選択した失敗テスト・ケースの周囲の追加テスト・ケースの生成を自動化するからである。よって、本発明の例としての実施形態による新たなテスト・ケースの自動生成は、手動によるテスト・ケース生成よりも効率的に欠陥を顕在化させることおよび基本的に異なる方法論を用いることを可能にする。本発明の例示的実施形態は、nワイズ欠陥を引き起こす属性値の特定のサブセットを含む属性値の全ての可能な組み合わせをテストする、テスト・ケースの回帰バケットを生成する技術的特徴も含む。よって、回帰バケットは、欠陥の補正前は全て失敗し、かつ欠陥の補正後に全て合格するテスト・ケースのみを含む。よって、本発明の例としての実施形態による失敗テスト・ケースの回帰バケットの自動生成は、そのそれぞれが失敗することが確実である、テスト・ケースのセットを有するテスタまたは自動テスト・アルゴリズムを提供することによってコンピュータ技術に対する改善をもたらし、それによって、テスタまたは自動テスト・アルゴリズムが、テスト・ケースの回帰バケットを使用して、デバッグ実行後全てのテスト・ケースが最終的に合格するときに、欠陥が補正されていることを検証し得る。
【0034】
CTDを用いて生成されるテストを使用することに伴う技術的課題は、特定順序のアクションの動作がSUT上で実行される必要があるテスト・プログラムを生成する場合にある。この場合、本CTD技術を用いてテスト空間を縮小することが技術的課題である。例えば、以下のアクション(A、B、およびC)がSUT上で任意の順序で発生し得ること、ならびに、次のアクションが起こる前に発生する各アクションの中に、テストがブレークポイントのセットを有することを必要とすることを考える。
アクションA<完了まで実行、ブレークポイント1で停止、ブレークポイント2で停止、ブレークポイント3で停止>
アクションB<完了まで実行、ブレークポイント4で停止、ブレークポイント5で停止>
アクションC<完了まで実行、ブレークポイント6で停止>
【0035】
ここで、アクションA、B、およびCのそれぞれが、SUTによって/SUT上で実行され得る動作であり得る。各アクションは、少なくとも1つの属性に関連付けられてもよく、特定の値がテスト毎に属性に割り当てられ得る。割り当てられた値に基づいて、所望の結果がテストから予期される。所望の結果が得られる場合、テストは合格であると考えられ、そうでない場合、テストは失敗であると考えられる。例えば、アクションAは、第1のテストにおいて値a1、第2のテストにおいて値a2などが割り当てられる、属性A-aに関連付けられ得る。A-aに割り当てられる値は、各テストにおいて異なり得る。a1、a2などの値は、例えば、a1=完了まで実行、a2=ブレークポイント1で停止、a3=ブレークポイント2で停止、およびa4=ブレークポイント3で停止と指定されている。
【0036】
ここで、上記のアクションA、B、およびCを参照して、アクションの以下の動作順序、ABC、ACB、BAC、BCA、CAB、およびCBAのいずれかが、SUTのテストに必要なものであると考える。これらの動作順序のいずれかにおいて、アクションのいずれかが完了まで実行されず、ブレークポイントで停止し、次いで、別のアクションが行われた後にのみ完了まで実行される場合、動作順序は、以下の4つの例のようになり得る。
1. A<ブレークポイント1で停止>-B<完了まで実行>-A<完了まで実行>-C<完了まで実行>
2. A<ブレークポイント1で停止>-B<完了まで実行>-C<完了まで実行>-A<完了まで実行>
3. A<ブレークポイント1で停止>-B<完了まで実行>-A<ブレークポイント3で停止>-C<完了まで実行>-A<完了まで実行>
4. A<ブレークポイント2で停止>-B<ブレークポイント4で停止>-A<完了まで実行>-C<ブレークポイント6で停止>-B<完了まで実行>-C<完了まで実行>
【0037】
組み合わせ縮小において使用される属性/値ペアを識別する本CTD技術を考慮して、本CTDベースのテスト・インフラストラクチャは、特定の動作順序の各ケースをカバーする複数のモデルを作成する。ここで、1つのモデルが、アクション自体の順序について生成されなければならず、次いで、別個の第2のモデルが、各アクションの実行状態(即ち、属性に割り当てられた値)を表現しなければならない。さらに、モデルは、使用されるべきテスト空間を識別するために重複しなければならない。これは時間がかかるだけでなく、エラーも生じ易い。
【0038】
本発明の実施形態は、そのような技術的課題に対処する。本発明の1つまたは複数の実施形態によれば、技術的課題は、特定の動作順序を有するテストを必要とする属性を識別すること、および制限(例えば、アクションAはアクションBの前に発生しなければならない)をさらに識別することによって対処される。さらに、属性の一意な値の全カルテシアン積が判断される。組み合わせ縮小およびテスト・ケース減少は、次いで、カルテシアン積を用いたテストのセットに適用されて、任意の冗長テストを除去する。本発明の1つまたは複数の実施形態では、属性および制限を識別すること、ならびにカルテシアン積を生成することが、単一ステップで、即ち単一モデルを用いて、実行され得る。
【0039】
本発明の1つまたは複数の実施形態では、順序付けについての情報は、SUTのためのテスト・プログラムを生成するためにCTD縮小および拡大を実行しているシステムへのペイロードとして使用される、マルコフ連鎖を用いて記憶され得る。マルコフ連鎖は、各イベントの確率が、前のイベントにおいて到達される状態のみに依存する、可能なイベントのシーケンスを記述する確率モデルである。
【0040】
ここで
図1を参照すると、
図1は、本発明の実施形態による、コンピュータ化環境の概略図を示す。コンピュータ化環境100は、1つまたは複数のコンピュータ化ツールを含み得る。図はブロック図の1つの可能な例であること、およびいくつかのコンポーネントは明確化のために図示されないことがあることに留意されたい。
【0041】
本発明の1つまたは複数の実施形態では、開発者、QAスタッフ・メンバ、テスタ、設計者、検証エンジニアなどのユーザ110が、コンピュータ化環境100と対話し得る。ユーザ110は、端末、ディスプレイ、キーボード、入力デバイスなどの、マンマシン・インターフェース(MMI)112を利用し得る。
【0042】
本発明のいくつかの例示的実施形態では、カバレッジ・モデル定義ツール102は、機能カバレッジ・モデルなどのテスト・カバレッジ・モデルを定義するために利用され得る。本発明のいくつかの例示的実施形態では、ユーザ110は、テストされる属性、例えば、機能カバレッジがテストされている場合は機能属性を定義し得る。本発明のいくつかの例示的実施形態では、類似のツールが、テスト空間を定義するために利用され得る。いくつかの例示的実施形態では、カバレッジ・モデルは、テスト・モデルとして利用されるように適合され得る。
【0043】
本発明のいくつかの例示的実施形態では、テスト実行エンジン108は、SUTをテストするために利用され得る。SUTは、ハードウェア、ファームウェア、ソフトウェア、それらの組み合わせ、または任意の他の種類のコンピュータ化デバイスであってもよいことに留意されたい。テスト実行エンジン108は、シミュレーションベース検証ツール、テスト生成プラットフォームなどであってもよい。テスト実行エンジン108は、テスト計画ツール106に動作可能に連結され、テスト計画に従ってテストを実行するように構成され得る。いくつかの例示的実施形態では、テスト計画ツール106は、テスト実行エンジン108が実行するためのテストを提供し得る。動的検証は、SUTのテストよりも幅広い概念であり、テスト計画、カバレッジ分析などをさらに含むことに留意されたい。テスト実行エンジン108は、動的検証中に実行され得る動作範囲全体の態様1つだけを提供し、「動的検証」という用語をより狭く解釈するために使用されるべきではない。
【0044】
本発明のいくつかの例示的実施態様では、カバレッジ分析ツール104は、テスト実行エンジン108によって実行される動的検証に基づいて、SUTのためのテスト空間のカバレッジを測定するように構成される。例えば、カバレッジ分析ツール104は、機能カバレッジ分析ツールであってもよい。カバレッジ分析ツール104は、テスト実行エンジン108によって実行される動的検証の間カバーされたカバレッジ・タスクを示す、カバレッジ・テスト空間または定義されたテスト計画の一部などのカバレッジ測定値を提供する。ユーザ110は、カバレッジ測定値またはカバーされたタスクのリストあるいはその両方をレビューし得る。
【0045】
本発明のいくつかの例示的実施形態では、テスト計画ツール106は、カバーされるテスト計画を定義し得る。本発明のいくつかの例示的実施形態では、テスト計画は、カバーされるカバレッジ・タスクのセットであってもよい。本発明のいくつかの例示的実施形態では、テスト計画ツール106は、SUTの特定態様をカバーするように知られ/推定されるテストを含むデータストアに記憶されるテスト・ベンチマークなどに基づいて、テスト計画をカバーすると見られるテストを提供し得る。別の例として、テスト計画ツール106は、カバレッジ・タスクをカバーするようなテストを生成するように構成される。ユーザ110は、テスト計画、選択したテストなどをレビューし得る。本発明のいくつかの例示的実施形態では、ユーザ110は、テスト計画ツール106のためのパラメータを提供して、所望のインタラクション・レベルなどのテスト計画の目的を判断する際に使用し得る。本発明の実施形態は、生成されたテストにおけるいかなる冗長性の除去も可能にする。
【0046】
図1の図示は、カバレッジ・モデル定義ツール102、カバレッジ分析ツール104、テスト計画ツール106、およびテスト実行エンジン108を含む特定のコンポーネントを用いて記載されているが、本発明の実施形態は、これらのコンポーネントまたはシステム構成に限定されず、より少ないまたは追加のコンポーネントを採用した他のシステム構成を用いて実施され得る。
【0047】
図2は、本発明の実施形態による、テスト・インフラストラクチャを提供するモジュールを表すブロック図である。より具体的には、インフラストラクチャは、テスト生成器208を含む。テスト生成器208は、テスト・ケース202のリポジトリなどのテスト・インフラストラクチャにアクセスし、テスト・ケース202のリポジトリは、SUT214の正当性を検証するために利用可能なテスト・ケースのスイートを記憶する。各テスト・ケースは、SUT214に適用される入力、および(その正当な動作を示すための)この入力に応答して返されるべき予期される応答を指定する。典型的には、テスト・ケースは、セット(テスト・スイート)、例えばSUT214の異なるコンポーネントについての各テスト・スイートに編成される。
【0048】
テスト生成器208は、SUT214上のテストの実行毎に実行バケットを作成する。バケットは、(XMLベースなどの)機械可読言語における所望のテスト・ケースを実行させるために行われる動作を指定する。特に、完全テストの場合、利用可能なテスト・ケースの全てが、SUT214の各コンポーネント上で実行され、逆に、回帰テストの場合、実行は、選択したテスト・ケースのサブセットに限定される。そのように取得されたバケットは、ファイルに保存され得る。
【0049】
テスト生成器208は、本発明の1つまたは複数の実施形態に従って、イベント順序付け情報220を受信する。イベント順序付け情報220は、本明細書に記載される属性/動作のセットについての特定順序を示す。例えば、イベント順序付け情報220は、属性がテストされる所定の順序を示す。イベント順序付け情報220は、本発明の1つまたは複数の実施形態においてマルコフ連鎖の形態で提供され得る。テスト生成器208は、イベント順序付け情報220に基づいてバケット212内のテストを順序付けする。
【0050】
テスト実行エンジン108は、ファイルから読み出されるバケットの実行を制御する。バケットの各テスト・ケースの場合、これは、SUT214への対応する入力の適用を伴う。それに応答して、SUT214は、対応する出力をテスト実行エンジン108に返す。テスト実行エンジン108は、その出力を(例えば、ファイルから抽出される)対応する予期される応答と比較することによって、テスト・ケースの結果を判断する。テスト・ケースの結果(即ち、2つの値が合致するときは肯定的で、そうでないときは否定的)は、ログに保存される。例えば、これは、標準テスト・トラッキング・ツール(TTT)を用いて実現され得る。テストの(現在の)実行結果が、それらの分析のためのログにおいて利用可能である。
【0051】
大規模で複雑なSUT214の場合、テスト・ケース・インフラストラクチャ202は、大量の二重テスト・アクション/テスト・ケースを含み得る。本発明のある実施形態によれば、これらの課題に対処するために開発された1つの技術は、フィンガープリント・リポジトリ206の使用を、テスト・リポジトリ202に記憶された複数の回帰テストに対応するフィンガープリントのセットを含む情報のストアと組み合わせる。一実施形態では、フィンガープリントは、フィンガープリント生成器204によって生成される。例えば、フィンガープリント・リポジトリ206は、テスト・リポジトリ202に記憶されたテストの、全てではないがほとんどのフィンガープリントと、本の索引に類似した、テスト・インフラストラクチャ全体を通してテストのコピーが位置する場所への参照と、を含み得る。各フィンガープリントは、対応するテスト・ケースによってカバーされる特定のコード・パスを一意に識別する。このようにして、システムは、冗長かつ場合によっては二重である、フィンガープリント(および対応するテスト)を識別し得る。
【0052】
本発明の実施形態によれば、テスト生成器208によって生成され、テスト実行エンジン108によって実行される回帰テストの結果216の処理は、それぞれの生成された回帰テストの実行中に通過するコード・パスの判断、およびコード・パスに少なくとも一部基づいて実行された回帰テスト毎のフィンガープリントの生成を含み得る。本発明のいくつかの実施形態では、これらのステップは、フィンガープリント生成器204によって実行され得る。
【0053】
冗長性分析器218は、テスト生成器208によって生成される全てのテスト・ケースに対応するフィンガープリントをフィンガープリント・リポジトリ206に記憶された複数のフィンガープリントと比較する。冗長性分析器218は、フィンガープリント・リポジトリ206に記憶された1つまたは複数のフィンガープリントと合致するフィンガープリントを有する、テスト生成器208によって生成された回帰テスト・ケースのリストを提供する。この情報は、(以下に記述されるように)テスト・リポジトリ202から二重テスト・ケースを選択および破棄するために使用される。
【0054】
図3は、本発明の1つまたは複数の例としての実施形態による、CTD技術を用いた欠陥検出および限局、ならびに検出された欠陥を顕在化させる失敗テスト・ケースの回帰バケットの生成を示す、概略ハイブリッド・データ・フロー/ブロック図である。
図6は、本発明の1つまたは複数の例としての実施形態による、CTD技術を用いてnワイズ欠陥を検出および限局するため、ならびに検出されたnワイズ欠陥を顕在化させる失敗テスト・ケースの回帰バケットを生成するための、例示的方法600のプロセス・フロー図である。
図6は、
図1、
図2、および
図3と併せて説明される。
【0055】
本発明の例としての実施形態による例示的方法、ならびに方法を実行するための対応するデータ構造(例えば、モジュール、ユニット、および他のそのようなコンポーネント)が、ここで説明される。
図6に示される方法600または
図7に示される方法700あるいはその両方の各動作が、本明細書に記載されたモジュールなどのうちの1つまたは複数によって実行され得ることに留意されたい。これらのモジュールは、本明細書に記載されたハードウェア、ソフトウェア、またはファームウェア、あるいはそれらの組み合わせの任意の組み合わせで実施され得る。ある例としての実施形態では、これらのモジュールのうちの1つまたは複数が、処理回路による実行時に1つまたは複数の動作を実行させるコンピュータ実行可能命令を含むソフトウェア・モジュールまたはファームウェア・モジュールあるいはその両方として少なくとも一部、実施され得る。例としての実施形態を実施するように構成されているとして本明細書に記載されるシステムまたはデバイスは、1つまたは複数の処理回路を含んでもよく、そのそれぞれが、1つまたは複数の処理ユニットまたはノードを含み得る。コンピュータ実行可能命令は、処理ユニットによる実行時に、コンピュータ実行可能プログラム・コードに含まれるかまたはコンピュータ実行可能プログラム・コードによって参照される入力データが出力データをもたらすようにアクセスされ処理され得る、コンピュータ実行可能プログラム・コードを含み得る。
【0056】
本発明の例としての実施形態において、
図3と併せて
図6を参照すると、方法600のブロック602において、SUT214への入力が属性値ペア302の集合としてモデル化される。任意の数の属性が、SUT入力をモデル化するために使用されてもよく、各属性は、任意の数の候補属性値をとり得る。ブロック604において、1つまたは複数のnワイズ・カバレッジCTDベクトル生成モジュール304のコンピュータ実行可能命令が、属性値ペア302の集合に関連付けられたカルテシアン積空間全体のnワイズ・カバレッジを提供する、CTDベクトルの初期セット306を生成するために実行される。
【0057】
特に、属性値ペア302の全ての可能な組み合わせを含むカルテシアン積空間全体が、テスト空間全体の完全nワイズ・カバレッジを提供するCTDテスト・ベクトルのより小さなセット306に縮小される。本発明の例としての実施形態では、CTDベクトルのセット306によって提供される完全nワイズ・カバレッジは、完全ペアワイズ・カバレッジであってもよい。例えば、3つの属性、即ち、
図4に示される「名前」属性、「色」属性、および「形状」属性がモデル化されると仮定される場合、かつ「名前」属性が4つの別個の属性(デール、レイチェル、アンドリュー、およびライアン)をとることができ、「色」属性が2つの別個の属性(緑、青)をとることができ、「形状」属性が3つの別個の属性(円、四角、三角)をとることができるとさらに仮定される場合、属性値ペアの可能な組み合わせの総数は、4×3×2=24となる。したがって、この例示的な例では、カルテシアン積空間全体が、属性値ペアの24の異なる組み合わせを含むことになる。
【0058】
属性値ペアの24の異なる組み合わせが、カルテシアン積空間の完全nワイズ・カバレッジをやはり提供する組み合わせのより小さなセット(即ち、CTDベクトルのセット306)に縮小され得る。例えば、完全ペアワイズ・カバレッジが求められる場合、24の異なる組み合わせが、属性値の全ての可能なペアワイズ・インタラクションを共に含む12の別個の組み合わせに縮小され得る。CTDベクトルの例としてのセット400が、
図4に示される。CTDベクトルの例としてのセット400は、属性「名前」、「色」、および「形状」の属性値間の全てのペアワイズ・インタラクションを含む。
【0059】
縮小を実行し、完全nワイズ・カバレッジを提供するCTDベクトルの縮小セット306を識別するために、二分決定図などが使用され得る。CTDベクトルのセット306内の各CTDベクトルは属性値の一意な組み合わせを含むが、CTDベクトルのセット306自体が、一意ではないことがある。即ち、CTDベクトルの複数の異なるセットが存在してもよく、そのそれぞれが、完全nワイズ・カバレッジを提供する。例えば、
図4は、記載された例としての属性および属性値についてのCTDベクトルの例としてのセット400を示しているが、属性値の異なる組み合わせを含むCTDベクトルの代替セットが完全nワイズ・カバレッジも独立して提供し得ることを理解されたい。CTDベクトルの例としてのセット400が完全ペアワイズ・カバレッジおよび部分的3ワイズ・カバレッジを提供するが、より大きな数のCTDベクトルが、完全3ワイズ・カバレッジを提供するために必要であることを、さらに理解されたい。さらに概して述べると、nが増加するにつれて、完全nワイズ・カバレッジを提供するために必要なCTDベクトルの数が、nと共に対数的に増加する。
【0060】
図5は、CTDベクトルのセット306に含まれ得る種類の例としてのCTDベクトル500を示す。例としてのCTDベクトル500は、複数の属性502を含む。前述の通り、属性502は、SUT214への入力をモデル化するために使用され得る。属性502は、属性値504に関連付けられ得る。特に、各属性502は、対応する属性値504を有してもよく、属性値504は、属性がとることが可能な1つまたは複数の候補属性値のうちの1つであってもよい。
【0061】
さらに、本発明の1つまたは複数の実施形態によれば、nワイズ・カバレッジCTDベクトル生成モジュール304は、イベント順序付け情報220を遵守しない組み合わせを識別し除外することによって、属性値ペア302の集合に関連付けられたカルテシアン積空間全体を縮小する。本発明の1つまたは複数の実施形態では、イベント順序付け情報220は、SUT214に関連付けられたアーキテクチャ制限を生成するために使用される。カルテシアン積空間全体が、SUT214に対するアーキテクチャ制限を満たさない組み合わせを除外するように縮小された後、nワイズ・カバレッジCTDベクトル生成モジュール304は、CTDベクトルのさらに縮小された初期セット306を生成する。本発明の例としての実施形態では、各CTDベクトル306は、SUT214に対するアーキテクチャ制限に違反する属性値の無効な組み合わせを除外する、縮小されたテスト空間からのみ選択される。ここで、無効な組み合わせは、イベント順序付け情報220に合致しない属性のシーケンスを含む。
【0062】
その結果、イベント順序付け情報220に従って特定の第1の属性が特定の第2の属性の前に使用されなければならないというアーキテクチャ制限が、カルテシアン積空間に対して生成される。例えば、アクションAは、どんな場合でもアクションBの前に実行されなければならない。アーキテクチャ制限は、追加的に、SUT214への入力に対する多様な制限のうちのいずれかを含み得る。例えば、例としての制限は、所与の属性が特定の属性値を有する場合に、1つまたは複数の他の属性が、ある属性値を有することから除外されることであってもよい。別の例としてのアーキテクチャ制限は、所与の属性が特定の属性値を有する場合に、1つまたは複数の他の属性が、ある属性値を有しなければならないということであってもよい。さらに別の例としてのアーキテクチャ制限は、特定の属性が特定の属性値を有する場合にのみ、新たな属性が導入されるということであってもよい。アーキテクチャ制限の上記の例は、単なる例示であり、網羅的ではないことを理解されたい。
【0063】
本発明の例示的実施形態では、アーキテクチャ制限は、所望の完全nワイズ・カバレッジを提供するCTDベクトルの初期セット306へのカルテシアン空間全体の縮小を実行する前に、方法600において考慮される。即ち、任意のアーキテクチャ制限に違反する属性値の特定の組み合わせは、カルテシアン積空間から最初に除外され、次いで、所望の完全nワイズ・カバレッジを提供するCTDベクトルのセット306への縮小が実行される。このようにして、アーキテクチャ制限に違反する属性値の組み合わせがCTDベクトルの初期セット306に含まれないことが保証され得る。
【0064】
再び
図6を参照すると、方法600のブロック606において、本発明の例としての実施形態では、テスト・ケース生成モジュール208は、CTDテスト・ベクトルの初期セット306から、テスト・ケース202の対応するセットを生成するために実行されてもよく、テスト・ケース202の対応するセットは、次いで、テスト・ケース実行モジュール108によって実行されて、テスト・ケース毎の実行結果(合格または失敗)がもたらされる。
【0065】
例えば、CTDテスト・ベクトルのセット306は、CTDベクトル毎のそれぞれの対応するテスト・ケースを生成するテスト・ケース生成ツール208への入力として提供され得る。テスト・ケース202のセット内の各テスト・ケースは、CTDベクトルのセット306の対応するCTDベクトルに含まれる属性値の特定の組み合わせ間のインタラクションをテストする。CTDベクトルのセットおよびそれらの対応するテスト・ケースが、ここでの時点において、交換可能に説明または図示され、あるいはその両方が行われ得ることを理解されたい。例えば、
図4に示されるCTDベクトルの例としてのセット400は、CTDベクトルのセット400によって表される属性値の特定の組み合わせをテストする、テスト・ケースの対応するセットとして交換可能に考えられ得る。
【0066】
加えて、テスト生成器208は、本発明の1つまたは複数の実施形態に従って、イベント順序付け情報220を受信する。イベント順序付け情報220は、本明細書に記載される属性/動作のセットについての特定順序を示す。イベント順序付け情報220は、本発明の1つまたは複数の実施形態においてマルコフ連鎖の形態で提供され得る。テスト生成器208は、イベント順序付け情報220に基づいてバケット212内のテストを順序付けする。
【0067】
方法600のブロック608において、テスト・ケース実行モジュール108のコンピュータ実行可能命令が、テスト・ケース202のセット内の任意のテスト・ケースが失敗したかどうかを判断するために実行される。本発明の例としての実施形態において、各テスト・ケース202の実行は、対応するCTDベクトル306に含まれる属性値の組み合わせがnワイズ(もしくはm<nの場合にmワイズ)エラーを含まないことを示す成功の実行結果、または対応するCTDベクトル306における属性値の組み合わせがnワイズ(もしくはm<nの場合にmワイズ)エラーを含むことを示す失敗の実行結果のいずれかの結果をもたらす。
【0068】
図4に示される例を参照すると、CTDベクトルの例としてのセット400に対応するテスト・ケースは、ブロック606において実行されて、テスト・ケース毎のそれぞれの実行結果をもたらす。特に、2つのテスト・ケース402および404は、失敗をもたらすとして
図4に例示的に示されている。失敗テスト・ケース402は、属性値の以下の組み合わせ、デール、青、三角をテストする。デール、青、三角は、それぞれ名前属性、色属性、および形状属性に対応する。失敗テスト・ケース404は、属性値の以下の組み合わせ、デール、青、円をテストする。デール、青、円は、それぞれ名前属性、色属性、および形状属性に対応する。「デール」および「青」は、失敗テスト・ケース402に対応するCTDベクトル、および失敗テスト・ケース404に対応するCTDベクトルの両方に存在するが、「デール」および「青」がペアワイズ・エラーを生成しているかどうか、「デール」および(「三角」もしくは「円」)がペアワイズ・エラーを生成しているかどうか、または「青」および(「三角」または「円」)がペアワイズ・エラーを生成しているかどうかについては、プロセスのこの段階では不明確である。方法600の後続動作は、逆組み合わせ論を利用して、nワイズ・エラー(
図4に示される例の場合のペアワイズ・エラー)を引き起こしている属性値の特定の組み合わせを検出および限局するために、選択した失敗テスト・ケースの周りのテスト・ケースを拡大し得る。
【0069】
ブロック608における否定的な判断に応答して、テスト・ケース202の初期セットのいずれも失敗しなかったため、方法600は終了し得る。CTDベクトルの初期セット306(それに基づいてテスト・ケース202のセットが生成される)は、完全nワイズ・カバレッジを提供したため、それは、nワイズ・エラーまたはより低い次数のエラーが存在しないことが保証され得る。しかしながら、テスト・ケース202の初期セット内の全てのテスト・ケースの実行成功は、より高い次数のエラー(k>nの場合にkワイズ)が存在しないことを保証しない。
【0070】
一方、ブロック608の肯定的判断が、テスト・ケース202のセットの実行が1つまたは複数の失敗テスト・ケース314をもたらすことを示すことに応答して、方法600は、逆CTDテスト・ケース生成モジュール316を用いて、特定の失敗テスト・ケース314を実行および選択し、選択した失敗テスト・ケース314に逆組み合わせ論を適用してnワイズ・エラーまたはより低い次数のエラーを引き起こしている属性値の組み合わせを検出および限局するために使用されることが可能なテスト・ケース318の新たなセットを作り出すことを含む。
【0071】
本発明の例示的実施形態では、選択した失敗テスト・ケース314への逆組み合わせ論の適用は、属性毎にそれぞれの新たなテスト・ケース318を生成することを含む。したがって、生成される新たなテスト・ケースの数は、属性の数に等しくなり得る。例としての実施形態では、それぞれの新たなテスト・ケース318において、対応する属性の選択した失敗テスト・ケース314における属性値は、いかなる他の失敗テスト・ケースにも存在しない属性についての属性値に変更され、他の各属性についてのそれぞれの属性値は、選択した失敗テスト・ケース314に存在するものから変更されない。
【0072】
図4に示される例を再び参照して、失敗テスト・ケース402がブロック610において選択されると仮定すると、新たなテスト・ケース406の例としてのセットが生成され得る。本発明の例としての実施形態では、それぞれの例としての新たなテスト・ケース406は、選択した失敗テスト・ケース402内の対応する属性の属性値を任意の他の失敗テスト・ケースに存在しない異なる値に変更することによって生成され得る。例えば、CTDベクトル<アンドリュー、青、三角>に対応する第1の新たなテスト・ケースは、失敗テスト・ケース402における「名前」属性の属性値を「デール」から「アンドリュー」へ変更する一方、他の属性についての属性値を失敗テスト・ケース402と同一に保つことによって取得される。同様に、CTDベクトル<デール、緑、三角>に対応する第2の新たなテスト・ケースは、失敗テスト・ケース402における「色」属性の属性値を「青」から「緑」へ変更する一方、他の属性についての属性値を失敗テスト・ケース402と同一に保つことによって取得される。最後に、CTDベクトル<デール、青、四角>に対応する第3の新たなテスト・ケースは、失敗テスト・ケース402における「形状」属性の属性値を「三角」から「四角」へ変更する一方、他の属性についての属性値を失敗テスト・ケース402と同一に保つことによって取得される。
【0073】
それぞれの新たなテスト・ケース406を取得するために変更されるそれぞれの属性値が、選択した失敗テスト・ケース402には明らかに存在しないことを理解されたい。さらに、それぞれの変更された属性値は、いかなる他の失敗テスト・ケース(例えば、失敗テスト・ケース404)にも存在しない。具体的には、第1の新たなテスト・ケースについて変更された属性値「アンドリュー」は、どの失敗テスト・ケースにも存在せず、第2の新たなテスト・ケースについて変更された属性値「緑」は、どの失敗テスト・ケースにも存在せず、第3の新たなテスト・ケースについて変更された属性値「四角」は、どの失敗テスト・ケースにも存在しない。
【0074】
選択した失敗テスト・ケース314に対して逆組み合わせ論を実行することによって新たなテスト・ケース318のセットを生成した後、テスト・ケース実行モジュール108は、方法600のブロック612において、新たなテスト・ケース318を実行するために使用される。さらに、ブロック614において、1つまたは複数のnワイズ・エラー限局モジュール322は、変更すると合格する新たなテスト・ケースをもたらす、選択した失敗テスト・ケース314内の属性およびそれらの対応する元の失敗属性値に基づいて、nワイズ・エラーまたはより低い次数のエラーを検出および限局する。特に、nワイズ・エラー限局モジュール322のコンピュータ実行可能命令は、新たなテスト・ケース318のセットについての実行結果320を評価して成功の実行結果をもたらす新たなテスト・ケースに基づいてnワイズ・エラーまたはより低い次数のエラーを検出および限局するために、実行される。本明細書で使用される、より低い次数のエラーは、CTDベクトルのセット306による完全nワイズ・カバレッジを想定して、m<nの場合のmワイズ・エラーを指している。
【0075】
ペアワイズ・エラーの検出および限局を想定する
図4に示される例を再び参照すると、新たなテスト・ケース406のセットの実行は、CTDベクトル<アンドリュー、青、三角>に対応する第1の新たなテスト・ケースが合格し、CTDベクトル<デール、緑、三角>に対応する第2の新たなテスト・ケースが合格し、CTDベクトル<デール、青、四角>に対応する第3の新たなテスト・ケースが失敗するという結果になる。例としての実施形態では、失敗テスト402の「三角」から第3の新たなテスト・ケースの「四角」に属性値を変更することによって失敗の結果が続くため、nワイズ・エラー限局モジュール322は、第3の新たなテスト・ケースについての失敗の実行結果に基づいて、「形状」属性はペアワイズ・エラーの一因ではないと判断する。
【0076】
一方、nワイズ・エラー限局モジュール322は、実行が合格した新たなテスト・ケースを取得するために属性値が変更された属性が、ペアワイズ・エラーの一因であると判断し得る。具体的には、本発明の例としての実施形態では、CTDベクトル<アンドリュー、青、三角>に対応する第1の新たなテスト・ケースについての成功の実行結果に基づいて、nワイズ・エラー限局モジュール322は、「名前」属性および元の失敗属性値「デール」がペアワイズ・エラーの一因であると判断する。同様に、例としての実施形態では、CTDベクトル<デール、緑、三角>に対応する第2の新たなテスト・ケースについての成功の実行結果に基づいて、nワイズ・エラー限局モジュール322は、「色」属性および元の失敗属性値「青」もペアワイズ・エラーの一因であると判断する。
【0077】
よって、新たなテスト・ケース318のセットについての実行結果320に基づいて、nワイズ・エラー限局モジュール322は、
図4に示される例において、属性値「デール」および「青」をそれぞれ有する属性「名前」および「色」が、ペアワイズ・エラーの原因であると判断し得る。さらに概して述べると、nワイズ・エラー限局モジュール322は、新たなケース318のセットについての実行結果320の評価に基づいて、nワイズ・エラーまたはより低い次数のエラーを引き起こす特定の属性値ペア、より具体的には、合格する新たなテスト・ケースを取得するために選択した失敗テスト・ケースにおいて変更された元の属性値を判断し得る。
【0078】
図4に示される例は、完全ペアワイズ・カバレッジを提供するCTDベクトルの初期セット400を想定し、その場合に、ペアワイズ・エラーまたはより低い次数のエラー(例えば、エラーを引き起こす単一属性値)は、選択した失敗テスト・ケースに逆組み合わせ論を適用するただ1つの合格において検出および限局されて、新たなテスト・ケース318のセットを取得し得る。概して、CTDベクトルの初期セット306がnワイズ・カバレッジを提供する場合、選択した失敗テスト・ケースに対して逆組み合わせ論を適用するただ1つの合格が、nワイズ・エラーまたはより低い次数のエラーを明らかにする。k>nの場合のkワイズ・エラーは、完全nワイズ・カバレッジを提供するCTDベクトルの初期セットを用いて検出可能であってもよいが、CTDベクトルの初期セット306は全てのkワイズ・インタラクションを含まないため、これは保証できない。しかしながら、完全nワイズ・カバレッジ(例えば、完全ペアワイズ・カバレッジ)を提供するCTDベクトルの初期セット306は、k>nの場合にある程度のkワイズ・カバレッジ(例えば、3ワイズ・カバレッジ)を提供してもよく、よって、選択される特定のCTDベクトルに基づいて、方法600は、選択した失敗テスト・ケースに逆組み合わせ論を提供するただ1つの合格において、または複数の合格後に、kワイズ・エラーを明らかにし得る。
【0079】
再び
図6を参照すると、方法600のブロック616において、1つまたは複数の回帰バケット生成モジュール326のコンピュータ実行可能命令が、元の失敗属性値ペアを含むカルテシアン積空間における全ての可能な組み合わせを含む失敗テスト・ケースの回帰バケット212を生成および出力するために実行される。回帰バケット生成モジュール326は、本発明の例としての実施形態において、属性値ペアのエラー生成サブセット324の標識を入力として受信し、検出されたエラーを引き起こしている特定の属性値を含むカルテシアン積空間における全ての可能な組み合わせに対応するテスト・ケースのみを含む、回帰バケット212を判断および出力する。
【0080】
図4の例を再び参照すると、回帰バケット生成モジュール326は、ペアワイズ・エラーを引き起こしている属性「名前」および「色」ならびに対応する属性値「デール」および「青」を入力として受信し、「デール」および「青」を含むカルテシアン積空間における全ての属性値組み合わせを判断し、これらの組み合わせの全てに対応するテスト・ケースを回帰バケット212に投入する。この例では、回帰バケット212は、以下のテスト・ケース、(デール、青、三角)、(デール、青、円)、および(デール、青、四角)を含む。回帰バケット212内のテスト・ケースのそれぞれが、属性「名前」および「色」に対して属性値「デール」および「青」をそれぞれ含み、それらは共に、検出されたペアワイズ・エラーの原因となっており、回帰バケット212内の各テスト・ケースは、失敗することが保証されている。本発明の例としての実施形態では、回帰バケット212は、手動によるテスタまたは別の自動デバッグ・アルゴリズムにより使用するために出力され得る。失敗テスト・ケースの回帰バケット212は、エラーが修正されたときにのみ、回帰バケット212に含まれる全てのテストが合格するため、検出されたエラーが補正されているかどうかを検証するために使用され得る。よって、回帰バケット212内の任意のテスト・ケースが、エラーを補正するための試みにおいてSUT214に対して行われた修正にも関わらず失敗し続ける場合、これは、エラーが完全に解決されていないことを示す。
【0081】
テスト・インフラストラクチャでの別の技術的課題は、SUT214の品質を検証するときに、SUT214が受け得る可能な限り多くのシナリオを十分にカバーするために多様で頑健なテスト・シーケンスが使用されなければならないということである。あるシナリオは、本明細書に記載されるように、所与のサービスまたはパスが実行されることを保証するために特定順序のイベントが生じることを必要とする。いくつかのシナリオは、特定順序のイベントが生じることを必要としない場合がある。これらのシナリオがテストされる場合、技術的課題は、SUT214が動作しそうな製作環境を表すために、さらなるランダム性をテスト・システムに導入することである。
【0082】
本発明の1つまたは複数の実施形態は、マルコフ連鎖を用いることによってそのような技術的課題に対処する。マルコフ連鎖は、SUT214が所与の状態にある間に生じる特定イベントのランダムな確率に基づいて、SUT214における状態変化をモデル化するために使用される、数学的構成概念である。任意の所与の状態に生じるイベントの確率は、テスト・インフラストラクチャにより実行されるテスト・ケースによってSUT214が受ける次数またはランダム性の程度を制御するように調整されてもよい。
【0083】
図7は、本発明の1つまたは複数の実施形態による、テスト・インフラストラクチャにおいてSUT214のために実行するテストの決定論的順序を提供するためのフローチャートを示す。図示される方法700は、ブロック702において、テストのための属性値ペアをモデル化することを含む。モデル化は、方法600において実行されるものと類似である。方法は、ブロック704において属性値ペアに確率係数を割り当てることをさらに含む。本発明の1つまたは複数の実施形態では、各属性値ペアに、それぞれの確率値が割り当てられる。
【0084】
確率値は、テスト・ケースを生成するために選択される属性値の確率を示す。代替的に、または加えて、確率値は、テストのバケット212において実行されるように選択されている属性値に関連付けられたテスト・ケースの確率を示す。確率値は、より高い(またはより低い)機会で特定の属性値がテストされることを容易にするために、テスト・エンジニアによって手動で構成され得る。例では、確率値を「1」に設定することによって、属性値ペアがテストされることが保証される。一方、確率値を「0」に設定することによって、属性値ペアがテストされないことが保証される。
【0085】
本発明の1つまたは複数の実施形態では、ブロック706において、選択した属性値ペアおよびそれらのそれぞれ割り当てられた確率値が、ハッシュ値の形態で記憶される。言い換えると、ハッシュは、属性値ペアおよびそのペアに割り当てられた確率値を表す。本発明の1つまたは複数の実施形態では、一意なハッシュが属性値ペアおよびその確率値のそれぞれについて生成される。本発明の1つまたは複数の実施形態では、一意なハッシュを確保するために、素数係数、乗算などの演算が使用され得る。属性値ペアおよび対応する確率値は、その結果ハッシュ・テーブルとして記憶され、プロセッサが、二分決定図などの技術を用いて完全nワイズ・カバレッジを提供するCTDベクトルの縮小セット306を識別するために縮小を実行することを容易にする。二分決定図は、本明細書の他の場所に記載されるように適用され得る。
【0086】
方法700のブロック708において、nワイズ・カバレッジCTDベクトル生成モジュール304は、SUT214に関連付けられたアーキテクチャ制限を遵守しない組み合わせを識別し除外することによって、属性値ペア302の集合に関連付けられたカルテシアン積空間全体を縮小する。例えば、イベント順序付け情報220、属性の特定値についての制限、およびその他の種類のアーキテクチャ制限が、属性値ペアの1つまたは複数に関連付けられ得る。
【0087】
SUT214に対するアーキテクチャ制限を満たさない組み合わせを除外するようにカルテシアン積空間全体が縮小された後、方法700のブロック710において、nワイズ・カバレッジCTDベクトル生成モジュール304は、CTDベクトルのさらに縮小された初期セット306を生成する。例としての実施形態では、各CTDベクトル306は、SUT214に対するアーキテクチャ制限に違反する属性値の無効な組み合わせを除外する、縮小されたテスト空間からのみ選択される。CTDベクトル306は、属性値ペアに割り当てられた確率値に基づいて選択される。確率値が属性値ペアの選択に影響を有することを容易にするために、マルコフ連鎖が、各選択を状態として表すために使用される。マルコフ連鎖の数学的構成概念は、次いで、システムが所要の状態(即ち、現在選択されている属性値ペア)にある間に生じる特定イベントの確率(即ち、特定の属性値ペアの選択)に基づいて状態変化をモデル化する。
【0088】
方法700のブロック712において、方法600のブロック606と同様に、テスト・ケース202の初期セットは、CTDベクトルの初期セット306から生成され、実行される。ブロック714において、方法600のブロック608における判断と同様に、テスト・ケース202のいずれかが失敗したかどうかについての判断が行われる。ブロック714における否定的判断に応答して、テスト・ケース202のいずれも失敗実行結果を生み出さないため、方法700は終了する。一方、ブロック714における肯定的判断に応答して、方法700は、ブロック716に進み、そこで、逆CTDテスト・ケース生成モジュール316は、選択した失敗テスト・ケースから新たなテスト・ケース318を生成する。
【0089】
本発明の1つまたは複数の実施形態では、選択した失敗テスト・ケース内のその属性についての属性値を、失敗テスト・ケースのいずれにも存在しないその属性についてそれぞれの他の候補属性値に変更することによって、新たなテスト・ケースのそれぞれのセットが属性毎に生成される。例えば、属性についての属性値を、属性が有するのに適した、かつどの失敗テスト・ケースにも存在しない別の属性値に変更することによって、選択した失敗テスト・ケース内の属性毎に単一の新たなテスト・ケースが生成される。どの失敗テスト・ケースにも存在しない属性について複数の属性値が存在し得るが、生成されたそれぞれの新たなテスト・ケースは、そのような属性値を1つだけテストし、それによって、新たなテストを生成するこの技術では、選択した失敗テスト・ケース内の対応する属性値をどの失敗テスト・ケースにも存在しない1つの他の属性値へ単に変動させることによって、それぞれの新たなテスト・ケースが生成され得る。
【0090】
代替的に、本発明の1つまたは複数の実施形態では、選択した失敗テスト・ケース内の各属性について、どの失敗テスト・ケースにも存在しない属性についての可能な属性値毎に、新たなテスト・ケースが生成される。よって、この第2の技術によれば、どの失敗テスト・ケースにも存在しない属性について複数の属性値が存在する場合、そのような属性値毎に新たなテスト・ケースが生成される。
【0091】
図4に示される例では、例えば、上記の第1の技術に従って新たなテスト・ケース406のセットを取得するために、逆組み合わせ論が失敗テスト・ケース402に適用される。即ち、選択した失敗テスト・ケース402内の属性についての対応する属性値を、どの失敗テスト・ケースにも存在しない別の候補属性値に変更することによって、選択した失敗テスト・ケース402内の属性毎に単一の新たなテスト・ケースが生成されるように示される。一方、新たなテスト・ケース406のセットが、上記の第2の技術に従って生成された場合、属性値「ライアン」および「レイチェル」もまた、どの失敗テスト・ケースにも存在しないため、新たなテスト・ケース406のセットは、以下の追加テスト・ケース、(ライアン、青、三角)および(レイチェル、青、三角)を含む。
【0092】
さらに、逆CTDテスト・ケース生成モジュール316は、SUT214に対するアーキテクチャ制限に違反する新たなテスト・ケースのいずれかを除外する。逆組み合わせ論の拡大によって取得される新たなテスト・ケース318のセットは、その結果、1つまたは複数のアーキテクチャ制限に違反する1つまたは複数の新たなテスト・ケースを除外すること(および除外しないこと)によってより小さなセットに縮小される。特に、初期CTDベクトル306に対応する選択したテスト・ケースが、失敗し、かつnワイズ・エラーを検出および限局するように設計された新たなテスト・ケース318のセットを取得するための拡大のために選択されるとき、いかなるアーキテクチャ制限も考慮に入れることなく、拡大が最初に実行され得る。次いで、アーキテクチャ制限に違反する拡大から生成される任意の新たなテスト・ケースが、新たなテスト・ケース318のセットから除外され得る。このようにして、拡大によって失敗テスト・ケースの近傍におけるテスト空間の可能な限り多くのカバレッジが提供されることが保証され得る。
【0093】
さらに、方法700は、方法600のブロック612と同様に、ブロック718において、新たなテスト318の縮小セットを実行することを含む。方法700のブロック720において、方法600のブロック614と同様に、変更すると合格する新たなテスト・ケースを作り出す、選択した失敗テスト・ケース内の属性およびそれらの対応する属性値に少なくとも一部基づいて、nワイズ・エラーが検出および限局される。さらに、ブロック722において、失敗テスト・ケースの回帰バケット212は、方法600のブロック616と同様に生成される。回帰バケット212が、SUT214に対するアーキテクチャ制限を遵守し、かつ失敗生成属性値を含む、属性値ペアの全ての可能な組み合わせをカバーするように、回帰バケット212内の各テスト・ケースは、属性値ペアの欠陥生成サブセット324を含む属性値の特定の組み合わせに対応する。さらに、ブロック724において、アーキテクチャ制限に違反する任意の失敗テスト・ケースが、回帰バケット212から除外され得る。
【0094】
その結果、方法700は、失敗テスト・ケースの回帰バケット212が、アーキテクチャ制限に関係なく生成されることを容易にし、次いで、アーキテクチャ制限に違反する任意のテスト・ケースが、回帰バケット212から除外され得る。即ち、nワイズ・エラーまたはより低い次数のエラーを引き起こす属性値の特定の組み合わせを含む、カルテシアン積テスト空間全体における全ての可能な組み合わせに対応するテスト・ケースが、最初に生成され、かつ回帰バケット212に含まれてもよく、次いで回帰バケット212は、制限に違反するいかなるテスト・ケースも除外するように縮小され得る。代替的な例としての実施形態では、回帰バケット212に含まれるテスト・ケースは、CTDベクトルの初期セットが選択される、縮小されたカルテシアン空間から選択されてもよく、その場合、回帰バケット212は、エラーを引き起こす属性値のサブセットを含み、かついかなるアーキテクチャ制限にも違反しない、属性値の組み合わせのみを含むように生成される。
【0095】
加えて、選択されるテストは、各属性値ペアに対して調整された確率値に基づく。したがって、より高い確率値を有する第1の属性値ペアは、第1の属性値ペアよりも低い確率値を有する第2の属性値ペアよりも、より高いテスト機会を有する。テスト・エンジニアは、それに応じてCTDベースのテスト・インフラストラクチャにおけるテストの選択を制御し得る。
【0096】
ここで
図8を参照すると、コンピュータ・システム800は、概して、本発明の実施形態に従って示されている。コンピュータ・システム800は、本明細書に記載されるように、様々な通信技術を利用する任意の数および組み合わせのコンピューティング・デバイスおよびネットワークを含むかまたは利用し、あるいはその両方である、電子コンピュータ・フレームワークであり得る。コンピュータ・システム800は、異なるサービスに変更し、またはそれ以外から独立していくつかの特徴を再構成する能力を用いて、容易にスケール可能であり、拡張可能であり、モジュール式であり得る。コンピュータ・システム800は、例えば、サーバ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、またはスマートフォンであってもよい。いくつかの例では、コンピュータ・システム800は、クラウド・コンピューティング・ノードであってもよい。コンピュータ・システム800は、コンピュータ・システムによって実行されている、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈において説明され得る。概して、プログラム・モジュールは、特定のタスクを実行し、または特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含み得る。コンピュータ・システム800は、通信ネットワークを通してリンクされたリモート処理デバイスによってタスクが実行される、分散型クラウド・コンピューティング環境において実施され得る。分散型クラウド・コンピューティング環境では、プログラム・モジュールが、メモリ記憶デバイスを含むローカルおよびリモート両方のコンピュータ・システム記憶媒体に位置し得る。
【0097】
図8に示されるように、コンピュータ・システム800は、1つまたは複数の中央処理装置(CPU)801a、801b、801cなど(まとめて、または概してプロセッサ801と呼ばれる)を有する。プロセッサ801は、シングルコア・プロセッサ、マルチコア・プロセッサ、コンピューティング・クラスタ、または任意の数の他の構成であってもよい。プロセッサ801は、処理回路とも呼ばれ、システム・バス802を介してシステム・メモリ803および様々な他のコンポーネントに連結される。システム・メモリ803は、読み取り専用メモリ(ROM)804およびランダム・アクセス・メモリ(RAM)805を含み得る。ROM804は、システム・バス802に連結され、基本入出力システム(BIOS)を含んでもよく、BIOSは、コンピュータ・システム800のある基本機能を制御する。RAMは、プロセッサ801により使用するために、システム・バス802に連結された読み取り書き込み用メモリである。システム・メモリ803は、動作中に上記命令の動作のための一時メモリ空間を提供する。システム・メモリ803は、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ、フラッシュ・メモリ、または任意の他の適当なメモリ・システムを含み得る。
【0098】
コンピュータ・システム800は、システム・バス802に連結された入力/出力(I/O)アダプタ806および通信アダプタ807を含む。I/Oアダプタ806は、ハード・ディスク808または任意の他の類似のコンポーネントあるいはその両方と通信するスモール・コンピュータ・システム・インターフェース(SCSI)・アダプタであってもよい。I/Oアダプタ806およびハード・ディスク808は、本明細書では大規模ストレージ810とまとめて呼ばれる。
【0099】
コンピュータ・システム800上で実行するためのソフトウェア811は、大規模ストレージ810に記憶され得る。大規模ストレージ810は、プロセッサ801により読み取り可能な有形記憶媒体の例である。ソフトウェア811は、様々な図面に関して本明細書で以下に記載されるように、コンピュータ・システム800を動作させる、プロセッサ801による実行のための命令として記憶される。コンピュータ・プログラム製品の例およびそのような命令の実行は、本明細書でより詳細に論じられる。通信アダプタ807は、システム・バス802をネットワーク812と相互接続し、ネットワーク812は、外部ネットワークであってもよく、コンピュータ・システム800が他のそのようなシステムと通信することを可能にする。一実施形態では、システム・メモリ803および大規模ストレージ810の一部が、オペレーティング・システムを集合的に記憶し、オペレーティング・システムは、
図8に示される様々なコンポーネントの機能を協調させるための、IBM(R) Corporationのz/OS(R)またはAIX(R)オペレーティング・システムなどの任意の適当なオペレーティング・システムであってもよい。
【0100】
追加入力/出力デバイスが、ディスプレイ・アダプタ815およびインターフェース・アダプタ816を介してシステム・バス802に接続されるように示される。一実施形態では、アダプタ806、807、815、および816は、中間バス・ブリッジ(図示せず)を介してシステム・バス802に接続される1つまたは複数のI/Oバスに接続され得る。ディスプレイ819(例えば、スクリーンまたはディスプレイ・モニタ)は、ディスプレイ・アダプタ815によってシステム・バス802に接続され、ディスプレイ・アダプタ815は、グラフィックス集約型アプリケーションおよびビデオ・コントローラの性能を改善するためのグラフィックス・コントローラを含み得る。キーボード821、マウス822、スピーカ823などが、インターフェース・アダプタ816を介してシステム・バス802に相互接続され得る。インターフェース・アダプタ816は、例えば複数のデバイス・アダプタを単一の集積回路に統合するスーパーI/Oチップを含み得る。ハード・ディスク・コントローラ、ネットワーク・アダプタ、およびグラフィックス・アダプタなどの周辺デバイスを接続するための適当なI/Oバスは、典型的には、ペリフェラル・コンポーネント・インターコネクト(PCI)などの共通プロトコルを含む。よって、
図8に構成されるように、コンピュータ・システム800は、プロセッサ801の形態の処理ケイパビリティ、システム・メモリ803および大規模ストレージ810を含むストレージ・ケイパビリティ、キーボード821およびマウス822などの入力手段、ならびにスピーカ823およびディスプレイ819を含む出力ケイパビリティを含む。
【0101】
いくつかの実施形態では、通信アダプタ807は、特にインターネット・スモール・コンピュータ・システム・インターフェースなどの任意の適当なインターフェースまたはプロトコルを用いてデータを送信し得る。ネットワーク812は、特に、セルラー・ネットワーク、無線ネットワーク、ワイド・エリア・ネットワーク(WAN)、ローカル・エリア・ネットワーク(LAN)、またはインターネットであってもよい。外部コンピューティング・デバイスは、ネットワーク812を通してコンピュータ・システム800に接続し得る。いくつかの例では、外部コンピューティング・デバイスは、外部ウェブサーバまたはクラウド・コンピューティング・ノードであってもよい。
【0102】
図8のブロック図は、コンピュータ・システム800が
図8に示されるコンポーネントの全てを含むことを示すように意図されないことを理解されたい。むしろ、コンピュータ・システム800は、
図8に示されない、任意の適切な、より少ないまたは追加のコンポーネント(例えば、追加メモリ・コンポーネント、組み込みコントローラ、モジュール、追加ネットワーク・インターフェースなど)を含み得る。さらに、コンピュータ・システム800に関して本明細書に記載された実施形態は、任意の適切なロジックで実施され得る。ロジックは、本明細書に参照されるように、様々な実施形態において、任意の適当なハードウェア(例えば、特にプロセッサ、組み込みコントローラ、もしくは特定用途向け集積回路)、ソフトウェア(例えば、特にアプリケーション)、ファームウェア、またはハードウェア、ソフトウェア、およびファームウェアの任意の適当な組み合わせを含み得る。
【0103】
本発明の1つまたは複数の実施形態では、コンピュータ・システム800は、SUTがコンピュータ・システム800によって使用されているコンピュータ・プログラムまたはハードウェア・コンポーネントである環境100であってもよい。本発明の1つまたは複数の実施形態では、コンピュータ・システム800は、SUT214であってもよく、SUT214は、サーバ・クラスタの一部である。
【0104】
本発明は、任意の可能な統合の技術的詳細レベルにおけるシステム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組み合わせであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有する、コンピュータ可読記憶媒体(または複数の媒体)を含み得る。
【0105】
コンピュータ可読記憶媒体は、命令実行デバイスにより使用するための命令を保持および記憶し得る有形デバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または前述したものの任意の適当な組み合わせであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な実施例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令をその上に記録させる溝内の隆起構造などの機械的に符号化されたデバイス、および前述したものの任意の適当な組み合わせを含む。本明細書で用いられるコンピュータ可読記憶媒体は、電波もしくは他の自由伝播する電磁波、導波管もしくは他の送信媒体を通って伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または電線を通って送信される電気信号などの、一過性信号それ自体であると解釈されるべきではない。
【0106】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくは無線ネットワーク、またはそれらの組み合わせを介して外部コンピュータまたは外部記憶デバイスに、ダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組み合わせを含み得る。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体の記憶用にコンピュータ可読プログラム命令を転送する。
【0107】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、またはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの手続き型プログラミング言語を含む、1つもしくは複数のプログラミング言語の任意の組み合わせで書かれたソース・コードもしくはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に、ユーザのコンピュータ上で部分的に、スタンドアロン・ソフトウェア・パッケージとして、ユーザのコンピュータ上で部分的にかつリモート・コンピュータ上で部分的に、またはリモート・コンピュータもしくはサーバ上で完全に、実行してもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意の種類のネットワークを通してユーザのコンピュータに接続されてもよく、または、接続は、(例えば、インターネット・サービス・プロバイダを用いてインターネットを通して)外部コンピュータに対して行われてもよい。いくつかの実施形態では、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することによって、コンピュータ可読プログラム命令を実行し得る。
【0108】
本発明の態様は、本発明の実施形態による、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して、本明細書において説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組み合わせが、コンピュータ可読プログラム命令によって実施され得ると理解されたい。
【0109】
コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施する手段を作成するように、これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または機械を製造するための他のプログラマブル・データ処理装置のプロセッサに提供されてもよい。命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作の態様を実施する命令を含む製品を含むように、これらのコンピュータ可読プログラム命令は、また、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはそれらの組み合わせに特定の方式で機能するように指示し得る、コンピュータ可読記憶媒体に記憶されてもよい。
【0110】
コンピュータ、他のプログラマブル装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施するように、コンピュータ可読プログラム命令は、また、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させてコンピュータ実施プロセスを生み出すために、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードされてもよい。
【0111】
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の考えられる実施態様のアーキテクチャ、機能性、および動作を例示する。この点に関して、フローチャートまたはブロック図内の各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部を表し得る。いくつかの代替実施態様において、ブロック内に記載された機能は、図面中に記載された順序以外で発生してもよい。例えば、連続して示される2つのブロックが、実際には、実質的に同時に実行されてもよく、または、ブロックが、関係する機能性次第で逆の順序で実行されることがあってもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組み合わせが、指定された機能もしくは動作を実行し、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用ハードウェア・ベース・システムによって実施され得ることにも留意されたい。
【0112】
本発明の様々な実施形態の説明は、例示の目的で提示されているが、網羅的であること、または開示される実施形態に限定することを意図するものではない。多くの修正および変形が、説明された実施形態の範囲および思想から逸脱することなく当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、実際の用途、もしくは市場で発見される技術を超える技術的改善を最もよく説明するため、または他の当業者が本明細書で説明された実施形態を理解できるようにするために、選択された。
【0113】
本発明の様々な実施形態が、関連する図面を参照して本明細書において説明される。本発明の代替実施形態は、この発明の範囲から逸脱することなく考案され得る。様々な接続および位置関係(例えば、上、下、隣接など)が、以下の説明および図面における要素間で述べられている。これらの接続または位置関係あるいはその両方が、特段の指定がない限り、直接または間接であってもよく、本発明は、この点に関して限定することを意図するものではない。したがって、要素の連結は、直接連結または間接連結のいずれかを指してもよく、要素間の位置関係は、直接または間接の位置関係であってもよい。さらに、本明細書で説明される様々なタスクおよび処理ステップは、本明細書で詳細に説明されない追加ステップまたは機能性を有する、より包括的な手続きまたはプロセスに組み込まれ得る。
【0114】
以下の定義および略称は、特許請求の範囲および明細書の解釈のために使用されるものとする。本明細書で使用される、「備える(comprises)」、「備えている(comprising)」、「含む(includes)」、「含んでいる(including)」、「有する(has)」、「有している(having)」、「包含する(contains)」、もしくは「包含している(containing)」という用語、またはそれらの任意の他の変形は、非排他的包含を含むように意図するものである。例えば、要素のリストを含む合成物、混合物、プロセス、方法、物品、または装置は、必ずしもそれらの要素だけに限定されず、明示的に列挙されない他の要素、またはそのような合成物、混合物、プロセス、方法、物品、もしくは装置に固有の他の要素を含み得る。
【0115】
追加的に、「例示的」という用語は、「例、事例、または例示として機能すること」を意味するために、本明細書において使用される。本明細書において「例示的」と説明される任意の実施形態または設計は、必ずしも他の実施形態または設計よりも好適または有利であると解釈されるべきではない。「少なくとも1つの」および「1つまたは複数の」という用語は、1以上の任意の整数、即ち、1、2、3、4などを含むように理解され得る。「複数の」という用語は、2以上の任意の整数、即ち、2、3、4、5などを含むように理解され得る。「接続」という用語は、間接「接続」および直接「接続」の両方を含み得る。
【0116】
「約」、「実質的に」、「ほぼ」という用語およびそれらの変形は、本出願の出願時点に入手可能な機器に基づく特定の数量の測定値に関連する誤差の程度を含むことを意図するものである。例えば、「約」は、所与の値の±8%、または5%、または2%の範囲を含み得る。
【0117】
簡潔さのために、本発明の態様を作成し使用することに関連する従来技術は、本明細書において詳細に説明されるとは限らない。特に、本明細書で説明される様々な技術的特徴を実施するコンピューティング・システムおよび特定のコンピュータ・プログラムの様々な態様は、周知である。したがって、簡潔にするために、多くの従来の実施態様の詳細は、本明細書で簡潔に述べられるだけであり、あるいは周知のシステムもしくはプロセスまたはその両方の詳細を提供することなく完全に省略される。