特許第5963316号(P5963316)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

<>
  • 特許5963316-生成装置、生成方法、及び、プログラム 図000002
  • 特許5963316-生成装置、生成方法、及び、プログラム 図000003
  • 特許5963316-生成装置、生成方法、及び、プログラム 図000004
  • 特許5963316-生成装置、生成方法、及び、プログラム 図000005
  • 特許5963316-生成装置、生成方法、及び、プログラム 図000006
  • 特許5963316-生成装置、生成方法、及び、プログラム 図000007
  • 特許5963316-生成装置、生成方法、及び、プログラム 図000008
  • 特許5963316-生成装置、生成方法、及び、プログラム 図000009
  • 特許5963316-生成装置、生成方法、及び、プログラム 図000010
  • 特許5963316-生成装置、生成方法、及び、プログラム 図000011
  • 特許5963316-生成装置、生成方法、及び、プログラム 図000012
  • 特許5963316-生成装置、生成方法、及び、プログラム 図000013
  • 特許5963316-生成装置、生成方法、及び、プログラム 図000014
  • 特許5963316-生成装置、生成方法、及び、プログラム 図000015
  • 特許5963316-生成装置、生成方法、及び、プログラム 図000016
  • 特許5963316-生成装置、生成方法、及び、プログラム 図000017
  • 特許5963316-生成装置、生成方法、及び、プログラム 図000018
  • 特許5963316-生成装置、生成方法、及び、プログラム 図000019
  • 特許5963316-生成装置、生成方法、及び、プログラム 図000020
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5963316
(24)【登録日】2016年7月8日
(45)【発行日】2016年8月3日
(54)【発明の名称】生成装置、生成方法、及び、プログラム
(51)【国際特許分類】
   G06F 11/36 20060101AFI20160721BHJP
【FI】
   G06F11/36 184
【請求項の数】10
【全頁数】20
(21)【出願番号】特願2014-30275(P2014-30275)
(22)【出願日】2014年2月20日
(65)【公開番号】特開2015-156076(P2015-156076A)
(43)【公開日】2015年8月27日
【審査請求日】2015年11月27日
【早期審査対象出願】
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】宮下 尚
(72)【発明者】
【氏名】田井 秀樹
(72)【発明者】
【氏名】天野 俊一
【審査官】 多胡 滋
(56)【参考文献】
【文献】 特開2011−034274(JP,A)
【文献】 特開平06−012285(JP,A)
【文献】 特開2014−026458(JP,A)
【文献】 特開2008−210275(JP,A)
【文献】 特開2011−044131(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
(57)【特許請求の範囲】
【請求項1】
テスト対象に供給すべきテストシーケンスを生成する生成装置であって、
テストベクタに含まれるべき複数のパラメータのそれぞれについて、各パラメータが取りうる値の中から一の値を選択していくことにより、互いに前記複数のパラメータが取る値の組み合わせが異なる複数のテストベクタを生成するテストベクタ生成部と、
前記テストベクタ生成部が出力する前記複数のテストベクタを含む系列の複数の部分を、それぞれが1以上のテストベクタを含む複数の部分シーケンスとして抽出する抽出部と、
抽出した前記複数の部分シーケンスに基づいて、テストシーケンスを生成するテストシーケンス生成部と、
2以上のテストベクタについて、テストベクタの順序が入れ換え可能となる前記複数のパラメータの値の条件を示す可換性情報を受け取る第2受取部と、
を備え
前記抽出部は、前記可換性情報に基づいて、前記複数のテストベクタを含む系列から、互いに順序を入れ換え可能な前記複数の部分シーケンスを抽出する、
生成装置。
【請求項2】
前記テストベクタ生成部は、前記複数のパラメータのうち予め定められた数のパラメータについて、値の組み合わせが取りうる全てのパターンを網羅する前記複数のテストベクタを生成する請求項1に記載の生成装置。
【請求項3】
前記テストベクタ生成部は、前記複数のテストベクタを含むリストを出力し、
前記抽出部は、前記複数のテストベクタを、前記リストの記載順に応じて並べた系列から前記複数の部分シーケンスを抽出する
請求項1または2に記載の生成装置。
【請求項4】
前記複数のパラメータについて、使用が禁止される値の組み合わせを定義する禁則情報を受け取る第1受取部を更に備え、
前記テストベクタ生成部は、前記禁則情報に基づいて、使用が許可される値の組み合わせをとる前記複数のテストベクタを生成する
請求項1から3のいずれか一項に記載の生成装置。
【請求項5】
前記テスト対象のテストを継続できないエラーを生じさせる、1以上のテストベクタを含む系列の条件を示すエラー条件情報を受け取る第3受取部を更に備え、
前記抽出部は、前記エラー条件情報に基づいて、前記複数の部分シーケンスから、エラーを生じさせない複数の部分シーケンスを抽出し、
前記テストシーケンス生成部は、前記エラーを生じさせない複数の部分シーケンスに基づいて、テストシーケンスを生成する、
請求項1からのいずれか一項に記載の生成装置。
【請求項6】
前記抽出部は、前記エラー条件情報に基づいて、前記複数の部分シーケンスからエラーを生じさせる部分を除外して、エラーを生じさせない複数の部分シーケンスを抽出し、
前記抽出部は、前記複数のテストベクタを含む系列から除外されたエラーを生じさせる部分に基づき、エラーを発生させるテストに用いるエラーシーケンスを更に生成する
請求項に記載の生成装置。
【請求項7】
前記テストシーケンス生成部は、抽出した前記複数の部分シーケンスの巡回群を含む前記テストシーケンスを生成する請求項1からのいずれか一項に記載の生成装置。
【請求項8】
前記テストシーケンス生成部は、抽出した前記複数の部分シーケンスに基づいて、予め指定された指定シーケンス長以上の長さを有する前記テストシーケンスを生成する請求項1からのいずれか一項に記載の生成装置。
【請求項9】
コンピュータによりテスト対象に供給すべきテストシーケンスを生成する生成方法であって、
テストベクタに含まれるべき複数のパラメータのそれぞれについて、各パラメータが取りうる値の中から一の値を選択していくことにより、互いに前記複数のパラメータが取る値の組み合わせが異なる複数のテストベクタを生成するテストベクタ生成段階と、
2以上のテストベクタについて、テストベクタの順序が入れ換え可能となる前記複数のパラメータの値の条件を示す可換性情報を受け取る受取段階と、
前記可換性情報に基づいて、前記テストベクタ生成段階において出力する前記複数のテストベクタを含む系列の複数の部分を、それぞれが1以上のテストベクタを含む互いに順序を入れ換え可能な複数の部分シーケンスとして抽出する抽出段階と、
抽出した前記複数の部分シーケンスに基づいて、テストシーケンスを生成するテストシーケンス生成段階と、
を備える生成方法。
【請求項10】
コンピュータを、テスト対象に供給すべきテストシーケンスを生成する生成装置として機能させるプログラムであって、
実行されるとコンピュータを、
テストベクタに含まれるべき複数のパラメータのそれぞれについて、各パラメータが取りうる値の中から一の値を選択していくことにより、互いに前記複数のパラメータが取る値の組み合わせが異なる複数のテストベクタを生成するテストベクタ生成部と、
2以上のテストベクタについて、テストベクタの順序が入れ換え可能となる前記複数のパラメータの値の条件を示す可換性情報を受け取る第2受取部と、
前記可換性情報に基づいて、前記テストベクタ生成部が出力する前記複数のテストベクタを含む系列の複数の部分を、それぞれが1以上のテストベクタを含む互いに順序を入れ換え可能な複数の部分シーケンスとして抽出する抽出部と、
抽出した前記複数の部分シーケンスに基づいて、テストシーケンスを生成するテストシーケンス生成部と、
して機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、テストシーケンスを生成する生成装置、生成方法、及び、プログラムに関する。
【背景技術】
【0002】
従来、組み合わせテストを利用して多数の入力条件を網羅したテストを行う技法が知られている(例えば、特許文献1及び非特許文献1及び2)。しかし、組み合わせテストを順序列を受理するシステムに適用すると、テスト数及びテスト長がブローアップしてしまう問題が生じる。
【0003】
そこで、順序列を受理するシステムをテストするためにステートマシン又は時制論理等を記述することでテストケースを検証する方法が知られている(例えば、特許文献2及び3)。しかし、一般的に、この方法によると、入力空間が複雑で網羅性の検証が困難となり、テスト対象のシステムが受理する操作列について詳細な仕様が必要となる。また、特許文献2にはテスト対象がオートマトンに還元可能であることを必要とし、特許文献3にはテストケースを生成するための具体的なアルゴリズムが開示されていないという問題がある。
[特許文献1]特開2012−185642号公報
[特許文献2]特開2011−065576号公報
[特許文献3]特開2010−191899号公報
[非特許文献1]"Software fault interactions and implications for software testing." Software Engineering, IEEE Transactions on 30.6 (2004): 418-421.
[非特許文献2]"MUSTC-Testing: Multi-Stage-Combinational Test scheduling at the Register-Transfer Level." VLSI Design, 1995., Proceedings of the 8th International Conference on. IEEE, 1995.
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明は、上記従来の課題を解決するために、順序列を受理するシステムに対して、操作列について詳細な定義をすることなく、テストケースの網羅性を担保する手法を提供する。
【課題を解決するための手段】
【0005】
本発明の第1の態様においては、テスト対象に供給すべきテストシーケンスを生成する生成装置であって、テストベクタに含まれるべき複数のパラメータのそれぞれについて、各パラメータが取りうる値の中から一の値を選択していくことにより、互いに複数のパラメータが取る値の組み合わせが異なる複数のテストベクタを生成するテストベクタ生成部と、テストベクタ生成部が出力する複数のテストベクタを含む系列の複数の部分を、それぞれが1以上のテストベクタを含む複数の部分シーケンスとして抽出する抽出部と、抽出した複数の部分シーケンスに基づいて、テストシーケンスを生成するテストシーケンス生成部と、を備える生成装置、当該生成装置を用いた生成方法、及び、当該生成装置に用いるプログラムを提供する。
【0006】
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではない。また、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【図面の簡単な説明】
【0007】
図1】本実施形態の処理の概要を示す。
図2】本実施形態の生成装置10の構成を示す。
図3】本実施形態の生成装置10の処理フローを示す。
図4】本実施形態に係るテストベクタのパラメータの一例を示す。
図5】本実施形態に係るテストベクタの系列の一例を示す。
図6】本実施形態のS130における抽出部150の処理の一例を示す。
図7】本実施形態に係る部分シーケンスの一例を示す。
図8】本実施形態に係る抽出部150の処理の一例を示す。
図9】本実施形態に係る抽出部150の処理の一例を示す。
図10】本実施形態に係る抽出部150の処理の一例を示す。
図11】本実施形態に係るテストシーケンス生成部160の処理の一例を示す。
図12】本実施形態に係るテストシーケンスの一例を示す。
図13】本実施形態に係るテストシーケンスの一例を示す。
図14】本実施形態に係るテストシーケンスの一例を示す。
図15】本実施形態に係るテストシーケンスの一例を示す。
図16】本実施形態に係るテストシーケンスの一例を示す。
図17】本実施形態に係るテストシーケンスの一例を示す。
図18】生成装置10のテスト対象における状態遷移の網羅性の証明を示す。
図19】コンピュータ1900のハードウェア構成の一例を示す。
【発明を実施するための形態】
【0008】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【0009】
図1は、本実施形態の処理の概要を示す。
【0010】
本実施形態において、生成装置10は、テスト対象(SUT)の操作の仕様とテストシーケンスの長さが設定された設定ファイルをユーザから受け取り、設定ファイルに応じて操作を定義することにより、ペアワイズ法等で複数のテストベクタを生成する。生成装置10は、複数のテストベクタを元に操作の集合からなるテストシーケンスを生成する。
【0011】
その後、テストドライバが、テスト対象にテストシーケンスに基づく操作を実行させ、その結果を取得することでテストシーケンスによるテスト結果を得る。本実施形態に係る生成装置10によると、設定ファイルに基づき、操作及び状態の網羅性を担保し、長さを現実的に実行可能な範囲に抑えたテストシーケンスを生成することができる。
【0012】
図2は、本実施形態の生成装置10の構成を示す。生成装置10は、順序列を受理するテスト対象のシステムに供給すべき連続した操作列であるテストシーケンスを生成する。例えば、生成装置10は、テスト対象に入力される操作であるテストベクタを結合したテストシーケンスを生成する。生成装置10は、第1受取部100、テストベクタ生成部120、第2受取部130、第3受取部140、抽出部150、及び、テストシーケンス生成部160を備える。
【0013】
第1受取部100は、ユーザ端末20等からテストベクタに含まれる因子となる複数のパラメータについて、使用が禁止される値の組み合わせを定義する禁則情報を受け取る。第1受取部100は、受け取った禁則情報をテストベクタ生成部120に供給する。
【0014】
テストベクタ生成部120は、テストベクタの各パラメータの値(すなわち、各因子の水準)を選択していくことにより、互いに複数のパラメータが取る値の組み合わせが異なる複数のテストベクタを生成する。例えば、テストベクタ生成部120は、ペアワイズ法により、複数のパラメータについて、値の組み合わせが取りうる全てのパターンを網羅する複数のテストベクタを生成する。
【0015】
ここで、テストベクタ生成部120は、禁則情報に基づいて、使用が許可される値の組み合わせをとる複数のテストベクタを生成してよい。テストベクタ生成部120は、生成したテストベクタの系列を抽出部150に出力する。
【0016】
第2受取部130は、ユーザ端末20等から2以上のテストベクタについて、テストベクタの順序が入れ換え可能となる複数のパラメータの値の条件を示す可換性情報を受け取る。第2受取部130は、可換性情報を抽出部150に供給する。
【0017】
第3受取部140は、ユーザ端末20等からテスト対象のテストを継続できないエラーを生じさせる、1以上のテストベクタを含む系列の条件を示すエラー条件情報を受け取る。第3受取部140は、エラー条件情報を抽出部150に供給する。
【0018】
抽出部150は、テストベクタ生成部120が出力する複数のテストベクタを含む系列の複数の部分を、それぞれが1以上のテストベクタを含む複数の部分シーケンスとして抽出する。例えば、抽出部150は、可換性情報に基づいて、複数のテストベクタを含む系列から、互いに順序を入れ換え可能な複数の部分シーケンスを抽出する。
【0019】
更に、抽出部150は、抽出した複数の部分シーケンスから、エラー条件情報に基づいてエラーを生じさせる部分を除外して、エラーを生じさせない複数の部分シーケンスを更に抽出してよい。ここで、抽出部150は、複数のテストベクタを含む系列から除外されたエラーを生じさせる部分に基づき、エラーを発生させるテストに用いるエラーシーケンスを更に生成してよい。抽出部150は、エラーを生じさせない複数の部分シーケンス及びエラーシーケンスをテストシーケンス生成部160に供給する。
【0020】
テストシーケンス生成部160は、抽出したエラーを生じさせない複数の部分シーケンスに基づいて、テストシーケンスを生成する。例えば、テストシーケンス生成部160は、抽出したエラーを生じさせない複数の部分シーケンスに基づいて、複数の部分シーケンスの巡回群を含むテストシーケンスを生成する。テストシーケンス生成部160は、エラーシーケンスをテストシーケンスに含めてよい。
【0021】
このように、生成装置10は、テストベクタ生成部120によりテストベクタにおける水準のペアの網羅性が担保されたテストベクタの系列を生成し、抽出部150がテストベクタの系列から互いに可換性のある複数の部分シーケンスを抽出し、テストシーケンス生成部160が部分シーケンスの巡回群を含むテストシーケンスを生成する。これにより、生成装置10は、テスト対象のステートマシン定義をすることなく、現実的なテストシーケンス長で操作列による入力を網羅することができる。
【0022】
図3は、本実施形態の生成装置10の処理フローを示す。本実施形態において、生成装置10は、S110〜S160の処理を実行することにより、テスト対象に対するテストシーケンスを生成する。
【0023】
まず、S110において、第1受取部100は、ユーザ端末20等から、テスト対象に入力される単位操作であるテストベクタに含まれる複数のパラメータについて、使用が禁止される値の組み合わせを定義する禁則情報を受け取る。
【0024】
例えば、図4に示すように、テスト対象に対するテストベクタとして、ID(レコードの識別番号)、OP(操作内容)、Serial(社員番号等の個人識別番号)、及び、Name(名前)の4個のパラメータを指定するデータベースに対する操作を想定する。IDには、1〜3のいずれかの値が入力され得、OPにはINSERT、UPDATE、及び、DELETEのいずれかの値が入力され得、Serialには100、101、102、及び,Nullのいずかの値が入力され得、Nameには、John、Mike、Alice、及び、Nullのいずれかの値が入力され得る。
【0025】
例えば、第1受取部100は、「OPがDelete(レコードの削除)である場合、ID以外のフィールドにはNullとする」禁則情報を受け取る。すなわち、第1受取部100は、禁則情報として「(OP=Delete)and{(Serial=Null)or(Name=Null)}」を受け取る。第1受取部100は、受け取った禁則情報をテストベクタ生成部120に供給する。
【0026】
次にS120において、テストベクタ生成部120は、テストベクタに含まれるべき複数のパラメータのそれぞれについて、各パラメータが取りうる値の中から一の値を選択していくことにより、互いに複数のパラメータが取る値の組み合わせが異なる複数のテストベクタを生成する。例えば、テストベクタ生成部120は、ペアワイズ法、直交表、又はパラメータ値の組み合わせの全パターンを網羅するナイーブな方法等により、複数のパラメータについて、値の組み合わせが取りうる全てのパターンを網羅する複数のテストベクタを含むリストを生成する。
【0027】
なお、テストベクタ生成部120は、テストベクタに含まれる全パラメータについて取りうる値を選択してよい。これに代えて、パラメータのうち予め定められた数のパラメータのみ取りうる値を選択し、残りのパラメータは予め定められた値としてよい。
【0028】
また、テストベクタ生成部120は、第1受取部100から取得した禁則情報に基づいて、使用が許可される値の組み合わせをとる複数のテストベクタを生成する。例えば、テストベクタ生成部120は、禁則情報によりエラーとなることが示されるパラメータの条件をnegativeとしてペアワイズ法により複数のテストベクタを生成してよい。
【0029】
一例として、テストベクタ生成部120は、「OPがDelete(レコードの削除)である場合、ID以外のフィールドにはNullとする」禁則情報に基づいて、ID=DeleteとなりName又はSerialがNullとなるテストベクタを生成し、ID=DeleteとなりName又はSerialがNull以外となるテストベクタを生成しないようにする。
【0030】
具体的には、テストベクタ生成部120は、図5に示すように、図4に示すパラメータの値に基づいて、ペアワイズ法により18個のテストベクタを生成する。図5に示す18個のテストベクタは、「INSERT&102」及び「UPDATE&Mike」等の全ての値のペアを含んでいる。テストベクタ生成部120は、生成した複数のテストベクタを含む系列を抽出部150に出力する。
【0031】
次に、S130において、抽出部150は、複数のテストベクタを含む系列から、1以上のテストベクタが順序付けられて並べられた部分シーケンスを複数個抽出する。
【0032】
例えば、まず、第2受取部130は、ユーザ端末20等から2以上のテストベクタについて、テストベクタの順序が入れ換え可能となる複数のパラメータの値の条件を示す可換性情報を受け取り、抽出部150に供給する。すなわち、第2受取部130は、n個のテストベクタの系列a(a∈{a,a,...a})に含まれる2つのテストベクタa及びaについて、a→aの順序で実行した結果と、a→aの順序で実行した結果が等しくなるテストベクタa及びaのパラメータの条件を可換性情報として抽出部150に供給する。
【0033】
一例として、図5に示すようなレコードに対するテストベクタの場合、IDが同一の2つのテストベクタ(例えば、2番目の[1,UPDATE,101,Mike]のテストベクタと、10番目の[1,UPDATE,NULL,John]のテストベクタ)は順序を逆にすると最後に実行されたUPDATE(更新処理)により結果が変わる。IDが異なる2つのテストベクタ(例えば、1番目の[2,INSERT,102,Mike]のテストベクタと、2番目の[1,UPDATE,101,Mike]のテストベクタ)は異なるレコードに対する処理であるから、順序を逆にして実行しても結果は変わらない。このような場合、第2受取部130は、「IDが異なる操作は可換である」旨の可換性情報を外部から受け取り抽出部150に供給する。可換性情報はテスト対象の仕様に従い、予め作成されたものであってよい。
【0034】
次に、抽出部150は、可換性情報に基づいて、複数のテストベクタをリストの記載順に応じて並べた系列から、それぞれが1以上のテストベクタを含み、互いに順序を入れ換え可能な複数の部分シーケンスを抽出する。例えば、抽出部150は、図5に示すテストベクタの系列から、図7に示す3個の部分シーケンス(G1、G2、及びG3)を抽出する。ここで、各々の部分シーケンス(例えば、G1)に含まれるテストベクタは、他の部分シーケンス(例えば、G2)に含まれるテストベクタとIDが異なるので互いに入れ換え可能となる。
【0035】
ここで、図6にS130における抽出部150の処理の一例を示す。抽出部150は、例えば、S131〜S136に係る処理を実行する。
【0036】
まず、S131において、抽出部150は、n個のテストベクタの系列a(a∈{a,a,...a})に含まれるテストベクタの全ての処理が完了したか判断する。抽出部150は、現在処理中のテストベクタa(1≦m≦n)で全てのテストベクタの全ての処理が完了したと判断する場合(即ちn=mの場合)はS130の処理を終了し、そうでない場合(m<nの場合)は、mに1を追加して処理をS132に進める。
【0037】
S132において、抽出部150は、部分シーケンスの番号iを1とすることにより部分シーケンスGiの番号iを初期化する。その後、抽出部150は処理をS133に進める。
【0038】
次に、S133において、抽出部150は、i番目の部分シーケンスである部分シーケンスGiが空集合か否か判断する。抽出部150は、部分シーケンスGiが空である場合はS136の処理を実行し、空でない場合は処理をS134の処理を実行する。
【0039】
S134において、抽出部150は、可換性情報に基づき、部分シーケンスGiに含まれる少なくとも一のテストベクタとテストベクタaとの可換性を判断する。抽出部150は、両者が可換であると判断する場合には処理をS135に進め、そうでない場合は処理をS136に進める。
【0040】
S135において、抽出部150はiに1を加える処理を実行する。その後、抽出部150は処理をS133に戻す。
【0041】
S136において、抽出部150は部分シーケンスGiにaを加える処理を実行する。その後、抽出部150は処理をS131に戻す。
【0042】
このように、抽出部150は、部分シーケンスaの各々を部分シーケンスGのいずれかに割り当てる。なお、テスト対象のステートマシンが定義されている場合、抽出部150は、S135で追加される部分シーケンスの数の上限をテスト対象の状態数程度とし、iの値が状態数を超えた場合、S135を実行せずに処理をS136に移行してもよい。
【0043】
S130の次に、S140において、抽出部150は、複数の部分シーケンスから、エラーを生じさせる部分を除外してエラーを生じさせない複数の部分シーケンスを抽出する。
【0044】
例えば、まず、第3受取部140は、ユーザ端末20等からテスト対象のテストを継続できないエラーを生じさせる、1以上のテストベクタを含む系列の条件を示すエラー条件情報を受け取り、エラー条件情報を抽出部150に供給する。一例として、第3受取部140は、データベースに対する主キーが重複したレコードの挿入若しくは更新、又は、NULL値を含む不正なレコードの挿入若しくは更新等の不正な操作であって、テスト対象に対して操作を供給すると結果がエラーとなり、その後の操作によっても出力が変化しない操作となるテストベクタ(すなわち、任意の部分シーケンスGxに対してGx・a=0となるテストベクタa)のパラメータの条件を抽出部150に供給する。
【0045】
抽出部150は、エラー条件情報に基づいて、複数の部分シーケンスの各々から、エラーを生じさせるテストベクタを除外して、エラーを生じさせない1以上のテストベクタから構成される複数の部分シーケンス(本明細書において、非エラーシーケンスとも言う)を生成する。
【0046】
次に、S150において、抽出部150は、複数のテストベクタを含む系列から除外されたエラーを生じさせる部分に基づき、エラーを発生させるテストに用いるエラーシーケンスを更に生成する。例えば、抽出部150は、各部分シーケンスについて、エラーを発生されるテストベクタごとに、最初のテストベクタから当該エラーを生じさせるテストベクタに至るまでの1以上のエラーを生じさせないテストベクタを抽出し、この1以上のエラーを生じさせないテストベクタに当該エラーを発生させるテストベクタを追加することにより、エラーシーケンスを生成する。抽出部150は、エラーを発生させるテストベクタごとに複数のエラーシーケンスを生成してよい。
【0047】
図8は、抽出部150が、部分シーケンスG1から生成する非エラーシーケンスG1−N、エラーシーケンスG1−1、エラーシーケンスG1−2、及び、エラーシーケンスG1−3を示す。部分シーケンスG1は、6個のテストベクタ(1)〜(6)を含むが、このうちテストベクタ(2)〜(4)は、Serial又はNameにNullを含むINSERT又はUPDATE操作であるので、エラーを発生させるテストベクタである。
【0048】
抽出部150は、部分シーケンスG1を構成するテストベクタ(1)〜(6)から、エラーを生じさせるテストベクタ(2)〜(4)を除くことにより、テストベクタ(1)、テストベクタ(5)、及び、テストベクタ(6)を含む非エラーシーケンスG1−Nを生成する。
【0049】
また、抽出部150は、最初のテストベクタ(1)からエラーを生じさせるテストベクタ(2)に至るまでの1以上のエラーを生じさせないテストベクタ、すなわちテストベクタ(1)と、エラーを生じさせるテストベクタ(2)〜(4)のそれぞれとを結合させる。これにより、抽出部150は、テストベクタ(1)及び(2)から構成されるエラーシーケンスG1−1、テストベクタ(1)及び(3)から構成されるエラーシーケンスG1−2、並びに、テストベクタ(1)及び(4)から構成されるエラーシーケンスG1−3を生成する。
【0050】
図9は、抽出部150が、部分シーケンスG2から生成する非エラーシーケンスG2−N、エラーシーケンスG2−1、エラーシーケンスG2−2、及び、エラーシーケンスG2−3を示す。
【0051】
図7の処理と同様に、抽出部150は、部分シーケンスG2を構成するテストベクタ(1)〜(5)から、エラーを生じさせるテストベクタ(3)〜(4)を除くことにより、テストベクタ(1)、テストベクタ(2)、及び、テストベクタ(5)を含む非エラーシーケンスG1−Nを生成する。また、抽出部150は、テストベクタ(1)〜(3)から構成されるエラーシーケンスG2−1、並びに、テストベクタ(1)、(2)及び(4)から構成されるエラーシーケンスG2−2を生成する。
【0052】
図10は、抽出部150が、部分シーケンスG3から生成する非エラーシーケンスG3−N、エラーシーケンスG3−1、エラーシーケンスG3−2、及び、エラーシーケンスG3−3を示す。
【0053】
図7の処理と同様に、抽出部150は、部分シーケンスG3を構成するテストベクタ(1)〜(7)から、エラーを生じさせるテストベクタ(2)及び(6)を除くことにより、テストベクタ(1)、テストベクタ(3)〜(5)、及び、テストベクタ(7)を含む非エラーシーケンスG3−Nを生成する。また、抽出部150は、テストベクタ(1)及び(2)から構成されるエラーシーケンスG3−1、並びに、テストベクタ(1)及び(3)〜(6)から構成されるエラーシーケンスG3−2を生成する。
【0054】
抽出部150は、抽出した非エラーシーケンス及びエラーシーケンスをテストシーケンス生成部160に供給する。
【0055】
次に、S160において、テストシーケンス生成部160は、抽出した複数の非エラーシーケンスに基づいて、予め指定された指定シーケンス長以上の長さのテストシーケンスを生成する。また、テストシーケンス生成部160は、エラーシーケンスに基づいて、テストシーケンスを生成する。
【0056】
例えば、テストシーケンス生成部160は、(1)複数の非エラーシーケンスの各々の繰り返し、(2)(1)複数の非エラーシーケンスの各々の繰り返しを結合したもの、(3)複数の非エラーシーケンスの巡回群、及び/又は、(4)複数の非エラーシーケンスの巡回群を結合したものをテストシーケンスとして生成する。
【0057】
図11は、S160におけるテストシーケンス生成部160の処理の一例を示す。ここで、S140で抽出部150が生成した複数の非エラーシーケンスG1−N、G2−N、及び、G3−Nのテストベクタを順序通り結合した操作をそれぞれO1、O2、O3とし、図中の「.」を前後の操作を結合する演算とする。
【0058】
テストシーケンス生成部160は、テストシーケンスとして、(1)O1が予め定められた回数繰り返される操作、O2が予め定められた回数繰り返される操作、及びO3が予め定められた回数繰り返される操作、(2)O1が予め定められた回数繰り返され、その後、O2が予め定められた回数繰り返され、その後、更にO3が予め定められた回数繰り返される操作、(3)O1、O2、O3の順序で実行される操作、O2、O3、O1の順序で実行される操作、及びO3、O1、O2の順序で実行される操作、並びに、(4)O1、O2、O3、O2、O3、O1、O3、O1、O2の順序で実行される操作を生成する。
【0059】
図12〜14は、本実施形態に係るテストシーケンス生成部160が生成するテストシーケンスの一例を示す。例えば、テストシーケンス生成部160は、(1)O1〜O3が予め定められた回数繰り返される操作として、部分シーケンスG1−N〜G3−Nに対応する操作O1〜O3がそれぞれ繰り返されたテストシーケンスを生成する。
【0060】
例えば、図12に示すように、テストシーケンス生成部160は、O1に含まれる[1,UPDATE,101,Mike]、[1,UPDATE,102,John]及び[1,DELETE,NULL,NULL]の3つのテストベクトルを複数回繰り返したテストシーケンスを生成する。
【0061】
例えば、図13に示すように、テストシーケンス生成部160は、O2に含まれる[2,INSERT,102,Mike]、[2,UPDATE,100,Alice]及び[2,DELETE,NULL,NULL]の3つのテストベクトルを複数回繰り返したテストシーケンスを生成する。
【0062】
例えば、図14に示すように、テストシーケンス生成部160は、O3に含まれる[3,INSERT,101,Alice]、[3,UPDATE,100,John]、[3,UPDATE,102,Alice]、[3,DELETE,NULL,NULL]及び[3,INSERT,100,Mike]の5つのテストベクトルを複数回繰り返したテストシーケンスを生成する。
【0063】
図15〜17は、本実施形態に係るテストシーケンス生成部160が生成するテストシーケンスの別の一例を示す。例えば、テストシーケンス生成部160は、(3)O1〜O3が巡回して順番に実行される操作として、部分シーケンスG1−N〜G3−Nに対応するO1、O2、及び、O3が順番に結合されたテストシーケンスを生成する。
【0064】
例えば、図15に示すように、テストシーケンス生成部160は、O1に含まれる[1,UPDATE,101,Mike]、[1,UPDATE,102,John]及び[1,DELETE,NULL,NULL]と、O2に含まれる[2,INSERT,102,Mike]、[2,UPDATE,100,Alice]及び[2,DELETE,NULL,NULL]と、O3に含まれる[3,INSERT,101,Alice]、[3,UPDATE,100,John]、[3,UPDATE,102,Alice]、[3,DELETE,NULL,NULL]及び[3,INSERT,100,Mike]とがこの順番で結合されたテストシーケンスO1.O2.O3を生成する。
【0065】
また例えば、図16に示すように、テストシーケンス生成部160は、O2に含まれる[2,INSERT,102,Mike]、[2,UPDATE,100,Alice]及び[2,DELETE,NULL,NULL]と、O3に含まれる[3,INSERT,101,Alice]、[3,UPDATE,100,John]、[3,UPDATE,102,Alice]、[3,DELETE,NULL,NULL]及び[3,INSERT,100,Mike]と、O1に含まれる[1,UPDATE,101,Mike]、[1,UPDATE,102,John]及び[1,DELETE,NULL,NULL]とがこの順番で結合されたテストシーケンスO2.O3.O1を生成する。
【0066】
また例えば、図17に示すように、テストシーケンス生成部160は、O3に含まれる[3,INSERT,101,Alice]、[3,UPDATE,100,John]、[3,UPDATE,102,Alice]、[3,DELETE,NULL,NULL]及び[3,INSERT,100,Mike]と、O1に含まれる[1,UPDATE,101,Mike]、[1,UPDATE,102,John]及び[1,DELETE,NULL,NULL]と、O2に含まれる[2,INSERT,102,Mike]、[2,UPDATE,100,Alice]及び[2,DELETE,NULL,NULL]とがこの順番で結合されたテストシーケンスO3.O1.O2を生成する。
【0067】
ここで、テストシーケンス生成部160は、抽出部150から受け取ったエラーシーケンスをテストシーケンスに含めてよい。
【0068】
このように、生成装置10は、禁則情報を考慮した上でペアワイズ法等により、複数の因子から水準の組み合わせを選択したテストベクタを生成し、これをテスト対象への入力として扱う。これにより、生成装置10は、単位操作となるテストベクタに含まれる因子の網羅性を確保することができる。
【0069】
また、生成装置10は、生成したテストベクタに結合測を適用し、更に操作順序の可換性に基づいてテストベクタが順序づけられた部分シーケンスを生成する。これにより、生成装置10は、ステートマシン定義をすることなく、ペアワイズ法等の組み合わせテスト手法の出力を、巡回群を適用することにより順序列を受理するテスト対象への適用に用いることができる。
【0070】
また、生成装置10は、エラーを生じさせる操作に係るテストベクタを除去した部分シーケンスに基づいたテストシーケンスを生成し、エラー部分については別のテストシーケンスを生成する。これにより、生成装置10は、テストシーケンスから無駄な操作を省きつつ、エラー処理のテストを別途実行することができる。
【0071】
更に、生成装置10は、エラーが除去された部分シーケンスに巡回群を適用してテストシーケンスを生成する。これにより、生成装置10は、現実的にテスト可能な長さのテストシーケンスによりテスト対象における状態遷移の網羅性を保証することができる。例えば、ナイーブな方法によりテストシーケンスを生成するとkの長さのテストシーケンスとなるが、本実施形態の生成装置10によるとk程度の長さのテストシーケンスとすることができる。
【0072】
なお、生成装置10は、禁則情報、可換性情報、及び/又は、エラー条件情報をユーザ端末等から取得する代わりに、これらの情報を予め記憶装置に記憶しておき、記憶装置から必要に応じて読み出してよい。
【0073】
図18は、生成装置10によるテスト対象における状態遷移の網羅性の証明を示す。ここでは、テスト対象がk個の状態を持つと仮定し、{O1,O2,...Ok}が、試験対象がエラー(Failure)を誘発する操作の場合分けの可能性を網羅していると仮定した場合、生成装置10が(4)複数の非エラーシーケンスの巡回群を結合したもの(O1.O2.O3.O2.O3.O1.O3.O1.O2)によるテストベクタは、全てのエラー(Failure)を誘発する可能性を網羅すること、すなわち、生成装置10がテスト対象における状態遷移の網羅性を保証することを証明する。
【0074】
なお、{O1,O2,...Ok}が、試験対象が受理する操作の場合分けの可能性を網羅するということは、ペアワイズ法及び直交表によるテストから得られる経験的な仮説であるが、多くの事例により有効性が確認されている。
【0075】
(1)定義
ステートマシンとなるテスト対象をSk,l={Q,Σ,Δ}で定義する。ここで、Qは有限個の状態の集合で|Q|=kとする。Σはテスト対象が受理するl種類の操作の剰余類でΣ〜={O}(準同型)を満たす。Δ⊆Q×Σ×Σによって遷移が定義されるものとする。
【0076】
(2)定理
(k≧l)(テストベクタの集合)のときに、TはSk,lの全ての状態を網羅する。これをT↑Sk,lと定義する。
【0077】
(3)証明
kについての帰納法により証明する。
・T↑S1,lの時には自明。
・−T↑Sk,lで成立するとき、Tk+1↑Sk+1,lが成立することを示せばよい。
【0078】
ここで、Sk+1,lで新しく付け加えられた状態をqk+1と表す。また、Sk,lからqk+1まで辿れる経路をox1,...,Oxmと表す。(4)複数の非エラーシーケンスの巡回群を結合したものが∀j;Tk+1⊇Tk.kjであるように構成されていることを利用し、m≦kであることに注意すると、Sk,lからqk+1までの経路はTk+1によってすべて網羅することができる。従って、T↑Sk,lならば、Tk+1↑Sk+1,lが成立し、テスト対象の遷移状態の網羅性が保証される。
【0079】
図19は、生成装置10として機能するコンピュータ1900のハードウェア構成の一例を示す。本実施形態に係るコンピュータ1900は、ホスト・コントローラ2082により相互に接続されるCPU2000、RAM2020、グラフィック・コントローラ2075、及び表示装置2080を有するCPU周辺部と、入出力コントローラ2084によりホスト・コントローラ2082に接続される通信インターフェイス2030、ハードディスクドライブ2040、及びCD−ROMドライブ2060を有する入出力部と、入出力コントローラ2084に接続されるROM2010、フレキシブルディスク・ドライブ2050、及び入出力チップ2070を有するレガシー入出力部を備える。
【0080】
ホスト・コントローラ2082は、RAM2020と、高い転送レートでRAM2020をアクセスするCPU2000及びグラフィック・コントローラ2075とを接続する。CPU2000は、ROM2010及びRAM2020に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィック・コントローラ2075は、CPU2000等がRAM2020内に設けたフレーム・バッファ上に生成する画像データを取得し、表示装置2080上に表示させる。これに代えて、グラフィック・コントローラ2075は、CPU2000等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
【0081】
入出力コントローラ2084は、ホスト・コントローラ2082と、比較的高速な入出力装置である通信インターフェイス2030、ハードディスクドライブ2040、CD−ROMドライブ2060を接続する。通信インターフェイス2030は、有線又は無線によりネットワークを介して他の装置と通信する。また、通信インターフェイスは、通信を行うハードウェアとして機能する。ハードディスクドライブ2040は、コンピュータ1900内のCPU2000が使用するプログラム及びデータを格納する。CD−ROMドライブ2060は、CD−ROM2095からプログラム又はデータを読み取り、RAM2020を介してハードディスクドライブ2040に提供する。
【0082】
また、入出力コントローラ2084には、ROM2010と、フレキシブルディスク・ドライブ2050、及び入出力チップ2070の比較的低速な入出力装置とが接続される。ROM2010は、コンピュータ1900が起動時に実行するブート・プログラム、及び/又は、コンピュータ1900のハードウェアに依存するプログラム等を格納する。フレキシブルディスク・ドライブ2050は、フレキシブルディスク2090からプログラム又はデータを読み取り、RAM2020を介してハードディスクドライブ2040に提供する。入出力チップ2070は、フレキシブルディスク・ドライブ2050を入出力コントローラ2084へと接続するとともに、例えばパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を入出力コントローラ2084へと接続する。
【0083】
RAM2020を介してハードディスクドライブ2040に提供されるプログラムは、フレキシブルディスク2090、CD−ROM2095、又はICカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、RAM2020を介してコンピュータ1900内のハードディスクドライブ2040にインストールされ、CPU2000において実行される。
【0084】
コンピュータ1900にインストールされ、コンピュータ1900を生成装置10として機能させるプログラムは、第1受取モジュールと、テストベクタ生成モジュールと、第2受取モジュールと、第3受取モジュールと、抽出モジュールと、テストシーケンス生成モジュールとを備える。これらのプログラム又はモジュールは、CPU2000等に働きかけて、コンピュータ1900を、第1受取部100と、テストベクタ生成部120と、第2受取部130と、第3受取部140と、抽出部150と、テストシーケンス生成部160としてそれぞれ機能させてよい。
【0085】
これらのプログラムに記述された情報処理は、コンピュータ1900に読込まれることにより、ソフトウェアと上述した各種のハードウェア資源とが協働した具体的手段である第1受取部100と、テストベクタ生成部120と、第2受取部130と、第3受取部140と、抽出部150と、テストシーケンス生成部160として機能する。そして、これらの具体的手段によって、本実施形態におけるコンピュータ1900の使用目的に応じた情報の演算又は加工を実現することにより、使用目的に応じた特有の生成装置10が構築される。
【0086】
一例として、コンピュータ1900と外部の装置等との間で通信を行う場合には、CPU2000は、RAM2020上にロードされた通信プログラムを実行し、通信プログラムに記述された処理内容に基づいて、通信インターフェイス2030に対して通信処理を指示する。通信インターフェイス2030は、CPU2000の制御を受けて、RAM2020、ハードディスクドライブ2040、フレキシブルディスク2090、又はCD−ROM2095等の記憶装置上に設けた送信バッファ領域等に記憶された送信データを読み出してネットワークへと送信し、もしくは、ネットワークから受信した受信データを記憶装置上に設けた受信バッファ領域等へと書き込む。このように、通信インターフェイス2030は、DMA(ダイレクト・メモリ・アクセス)方式により記憶装置との間で送受信データを転送してもよく、これに代えて、CPU2000が転送元の記憶装置又は通信インターフェイス2030からデータを読み出し、転送先の通信インターフェイス2030又は記憶装置へとデータを書き込むことにより送受信データを転送してもよい。
【0087】
また、CPU2000は、ハードディスクドライブ2040、CD−ROMドライブ2060(CD−ROM2095)、フレキシブルディスク・ドライブ2050(フレキシブルディスク2090)等の外部記憶装置に格納されたファイルまたはデータベース等の中から、全部または必要な部分をDMA転送等によりRAM2020へと読み込ませ、RAM2020上のデータに対して各種の処理を行う。そして、CPU2000は、処理を終えたデータを、DMA転送等により外部記憶装置へと書き戻す。このような処理において、RAM2020は、外部記憶装置の内容を一時的に保持するものとみなせるから、本実施形態においてはRAM2020及び外部記憶装置等をメモリ、記憶部、または記憶装置等と総称する。
【0088】
本実施形態における各種のプログラム、データ、テーブル、データベース等の各種の情報は、このような記憶装置上に格納されて、情報処理の対象となる。なお、CPU2000は、RAM2020の一部をキャッシュメモリに保持し、キャッシュメモリ上で読み書きを行うこともできる。このような形態においても、キャッシュメモリはRAM2020の機能の一部を担うから、本実施形態においては、区別して示す場合を除き、キャッシュメモリもRAM2020、メモリ、及び/又は記憶装置に含まれるものとする。
【0089】
また、CPU2000は、RAM2020から読み出したデータに対して、プログラムの命令列により指定された、本実施形態中に記載した各種の演算、情報の加工、条件判断、情報の検索・置換等を含む各種の処理を行い、RAM2020へと書き戻す。例えば、CPU2000は、条件判断を行う場合においては、本実施形態において示した各種の変数が、他の変数または定数と比較して、大きい、小さい、以上、以下、等しい等の条件を満たすか否かを判断し、条件が成立した場合(又は不成立であった場合)に、異なる命令列へと分岐し、またはサブルーチンを呼び出す。
【0090】
また、CPU2000は、記憶装置内のファイルまたはデータベース等に格納された情報を検索することができる。例えば、第1属性の属性値に対し第2属性の属性値がそれぞれ対応付けられた複数のエントリが記憶装置に格納されている場合において、CPU2000は、記憶装置に格納されている複数のエントリの中から第1属性の属性値が指定された条件と一致するエントリを検索し、そのエントリに格納されている第2属性の属性値を読み出すことにより、所定の条件を満たす第1属性に対応付けられた第2属性の属性値を得ることができる。
【0091】
以上に示したプログラム又はモジュールは、外部の記録媒体に格納されてもよい。記録媒体としては、フレキシブルディスク2090、CD−ROM2095の他に、DVD又はCD等の光学記録媒体、MO等の光磁気記録媒体、テープ媒体、ICカード等の半導体メモリ等を用いることができる。また、専用通信ネットワーク又はインターネットに接続されたサーバシステムに設けたハードディスク又はRAM等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをコンピュータ1900に提供してもよい。
【0092】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。そのような変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【0093】
特許請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。
【符号の説明】
【0094】
10 生成装置、20 ユーザ端末、100 第1受取部、120 テストベクタ生成部、130 第2受取部、140 第3受取部、150 抽出部、160 テストシーケンス生成部、1900 コンピュータ、2000 CPU、2010 ROM、2020 RAM、2030 通信インターフェイス、2040 ハードディスクドライブ、2050 フレキシブルディスク・ドライブ、2060 CD−ROMドライブ、2070 入出力チップ、2075 グラフィック・コントローラ、2080 表示装置、2082 ホスト・コントローラ、2084 入出力コントローラ、2090 フレキシブルディスク、2095 CD−ROM
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19