(57)【特許請求の範囲】
【請求項１】
複数のモジュールごとに抽出したテストケースを組み合わせる際に、前記各テストケースを有限サイズの組み合わせ表と、前記組み合わせ表のデータ項目間の制約式とに変換し、
前記制約式の解を算出し、
算出した解に基づいて結合テストのテストケースを生成する
処理をコンピュータが実行することを特徴とするテストケース生成方法。
【請求項２】
前記算出する処理は、ＳＭＴソルバを用いて前記制約式の解を算出する、ことを特徴とする請求項１に記載のテストケース生成方法。
【請求項３】
前記算出する処理は、前記組み合わせ表のサイズを小さくしながら前記制約式の解を繰り返し算出する、ことを特徴とする請求項１または２に記載のテストケース生成方法。
【請求項４】
前記生成する処理は、前記制約式の解が充足解でない場合には、算出された１サイクル前の充足解に基づいて結合テストのテストケースを生成する、ことを特徴とする請求項３に記載のテストケース生成方法。
【請求項５】
前記制約式は、全ての前記データ項目に、それぞれ真が１つ以上存在する制約条件を含むことを特徴とする請求項１〜４のいずれか１つに記載のテストケース生成方法。
【請求項６】
複数のモジュールごとに抽出したテストケースを組み合わせる際に、前記各テストケースを有限サイズの組み合わせ表と、前記組み合わせ表のデータ項目間の制約式とに変換し、
前記制約式の解を算出し、
算出した解に基づいて結合テストのテストケースを生成する
処理をコンピュータに実行させることを特徴とするテストケース生成プログラム。
【請求項７】
複数のモジュールごとに抽出したテストケースを組み合わせる際に、前記各テストケースを有限サイズの組み合わせ表と、前記組み合わせ表のデータ項目間の制約式とに変換する変換部と、
前記制約式の解を算出する算出部と、
算出した解に基づいて結合テストのテストケースを生成する生成部と、
を有することを特徴とするテストケース生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テストケース生成方法、テストケース生成プログラムおよびテストケース生成装置に関する。
【背景技術】
【０００２】
プログラム開発では、全体の機能を複数のモジュールに分割して開発し、開発したモジュールを結合することで、全体の機能を実現することがある。複数のモジュールを結合したときの全体の機能のテストとしては、個々のモジュールごとにテストケースを抽出し、抽出したテストケースを組み合わせたテストケースを用いる結合テストが知られている。結合テストでは、各モジュール内の条件について少なくとも１回はテストする条件網羅を満たすテストケースを用いる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−２３２８１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、条件網羅を満たす結合テストケースを得るために、各モジュール内の条件を組み合わせると、結合テストケースの組み合わせが爆発的に増大する場合がある。結合テストケースの組み合わせの爆発的な増大を抑制するために、無効なテストケースを生成させない等により、組み合わせ件数を削減することが求められる。
【０００５】
一つの側面では、本発明は、条件網羅を満たす最少の結合テストケースを得ることができるテストケース生成方法、テストケース生成プログラムおよびテストケース生成装置を提供することにある。
【課題を解決するための手段】
【０００６】
一つの態様では、テストケース生成方法は、複数のモジュールごとに抽出したテストケースを組み合わせる際に、前記各テストケースを有限サイズの組み合わせ表と、前記組み合わせ表のデータ項目間の制約式とに変換する処理をコンピュータが実行する。テストケース生成方法は、前記制約式の解を算出する処理をコンピュータが実行する。テストケース生成方法は、算出した解に基づいて結合テストのテストケースを生成する処理をコンピュータが実行する。
【発明の効果】
【０００７】
条件網羅を満たす最少の結合テストケースを得ることができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施例のテストケース生成装置の構成の一例を示すブロック図である。
【図２】図２は、結合テストケースの生成の一例を示す図である。
【図３】図３は、モジュールＸのテストケースの一例を示す図である。
【図４】図４は、モジュールＹのテストケースの一例を示す図である。
【図５】図５は、モジュールＺのテストケースの一例を示す図である。
【図６】図６は、結合テストケースの一例を示す図である。
【図７】図７は、組み合わせ表記憶部の一例を示す図である。
【図８】図８は、モジュールＸのテストケースの一例を示す図である。
【図９】図９は、モジュールＹのテストケースの一例を示す図である。
【図１０】図１０は、組み合わせ表のデータ構造および制約式の一例を示す図である。
【図１１】図１１は、変数と条件節フラグとの対応付けを行う制約式の生成の一例を示す図である。
【図１２】図１２は、モジュールごとのテストケースＩＤとｃａｓｅ関数で定義した制約とを紐付ける制約式の一例を示す図である。
【図１３】図１３は、テストケース割り当て後の残りの条件節フラグを決定する制約式の一例を示す図である。
【図１４】図１４は、条件節フラグ列に関する制約式の一例を示す図である。
【図１５】図１５は、条件節フラグ列の制約式の一例を示す図である。
【図１６】図１６は、充足解に基づく結合テストケースの生成の一例を示す図である。
【図１７】図１７は、結合テストケースの解の一例を示す図である。
【図１８】図１８は、実施例のテストケース生成処理の一例を示すフローチャートである。
【図１９】図１９は、変換処理の一例を示すフローチャートである。
【図２０】図２０は、テストケース生成プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【０００９】
以下、図面に基づいて、本願の開示するテストケース生成方法、テストケース生成プログラムおよびテストケース生成装置の実施例を詳細に説明する。なお、本実施例により、開示技術が限定されるものではない。また、以下の実施例は、矛盾しない範囲で適宜組みあわせてもよい。
【実施例】
【００１０】
図１は、実施例のテストケース生成装置の構成の一例を示すブロック図である。図１に示すテストケース生成装置１００には、結合テストの対象となる複数のモジュールについて、モジュールごとのテストケースが入力される。また、テストケース生成装置１００には、組み合わせ表サイズの初期値が、例えば、ユーザによって入力されて設定される。テストケース生成装置１００は、複数のモジュールごとに抽出したテストケースを組み合わせる際に、各テストケースを有限サイズの組み合わせ表と、組み合わせ表のデータ項目間の制約式とに変換する。テストケース生成装置１００は、制約式の解を算出する。制約式の解は、例えば、ＳＭＴ（Satisfiability  Modulo  Theories）ソルバを用いて算出される。テストケース生成装置１００は、算出した解に基づいて結合テストのテストケース（以下、結合テストケースともいう。）を生成する。これにより、テストケース生成装置１００は、条件網羅を満たす最少の結合テストケースを得ることができる。
【００１１】
ここで、図２から図６を用いて、結合テストケースについて説明する。図２は、結合テストケースの生成の一例を示す図である。図２の例では、プログラム開発の一例として、銀行業務のＡＴＭ（Automated  Teller  Machine）処理について説明する。ＡＴＭ処理は、例えば、入力チェックを行うモジュールＸ、取引チェックを行うモジュールＹ、および、取引を実施するモジュールＺの３つのモジュールに分割されて開発される。ＡＴＭ処理の機能をテストするためには、これらのモジュールごとにテストケースを抽出し、抽出したテストケースを組み合わせることで結合テストケースを生成する。図２の例では、モジュールＸ、Ｙ、Ｚのそれぞれについてテストケースを抽出して組み合わせることでＡＴＭ処理の結合テストケースを生成する。
【００１２】
図３は、モジュールＸのテストケースの一例を示す図である。図３の例では、モジュールＸのテストケースとして、ＩＤ「Ｘ０１」から「Ｘ０９」までの９つのテストケースが挙げられる。各テストケースの条件としては、通帳の有無、カードの有無、取引が通帳記帳、預け入れおよび引出しのいずれであるか、暗証番号が正か不正であるか、エラーであるか否かが挙げられる。ＩＤ「Ｘ０１」、「Ｘ０２」は、通帳記帳の場合のテストケースであり、カードの有無は問わずに通帳が挿入されていなければエラーとなる。ＩＤ「Ｘ０３」から「Ｘ０６」は、預け入れの場合のテストケースであり、カードおよび通帳のうち１つ以上があれば預け入れ可能であるが、カードおよび通帳のどちらも無ければエラーとなる。ＩＤ「Ｘ０７」から「Ｘ０９」は、引出しの場合のテストケースであり、通帳の有無は問わずに、カードが挿入されていなければエラーとし、暗証番号が正しくない場合もエラーとする。
【００１３】
図４は、モジュールＹのテストケースの一例を示す図である。図４の例では、モジュールＹのテストケースとして、ＩＤ「Ｙ０１」から「Ｙ０５」までの５つのテストケースが挙げられる。各テストケースの条件としては、取引、金額およびエラーが挙げられる。ＩＤ「Ｙ０１」、「Ｙ０２」は、引出しの場合のテストケースであり、金額が５０万円を超えるとエラーとなる。ＩＤ「Ｙ０３」、「Ｙ０４」は、預け入れの場合のテストケースであり、金額が１００万円を超えるとエラーとなる。ＩＤ「Ｙ０５」は、通帳記帳の場合のテストケースであり、モジュールＹでは、エラーを発生させない。
【００１４】
図５は、モジュールＺのテストケースの一例を示す図である。図５の例では、モジュールＺのテストケースとして、ＩＤ「Ｚ０１」から「Ｚ０４」までの４つのテストケースが挙げられる。モジュールＺのテストケースでは、取引および通帳の条件に基づいて、通帳記帳、引出し処理および預け入れ処理についての更新処理が設定される。
【００１５】
図６は、結合テストケースの一例を示す図である。図６は、図３から図５の各テストケースを組み合わせたものであり、ＩＤ「Ｘ０１」から「Ｘ０９」、「Ｙ０１」から「Ｙ０５」、および、「Ｚ０１」から「Ｚ０４」の各テストケースが、少なくとも１回以上テストされる条件網羅を満たす。図６の例では、結合テストとして、１１個のテストケースを用いることで、結合テストを行うことができる。
【００１６】
ところで、結合テストケースにおける各モジュールのテストケースの組み合わせは、爆発的に増大する場合がある。組み合わせ件数を削減するには、例えば、以下の３点を適用することができる。まず、１点目は、モジュールごとの各テストケースを事前に正常または異常ケースに分割し、正常ケース優先で異常ケースまでの各組み合わせルートに沿って組み合わせを行う。２点目は、仕様書からテストケースを取得するときに、仕様書の頭から順番に取得するのではなく、選択済条件節集合にない条件節を一番多く持つテストケースを優先して取得し、組み合わせを行う。３点目は、全組み合わせ後ではなく、１組ずつのテストケースの組み合わせを生成する度に、条件網羅による絞り込みアルゴリズムを適用する。なお、アルゴリズムの終了は、途中で選択済条件節集合が全条件節集合に一致する場合である。これにより、残りの組み合わせは行わないため、組み合わせ件数を削減できる。
【００１７】
しかしながら、上述の選択済条件節集合を用いる場合には、得られる結合テストケースが条件網羅を満たす最少セットでない場合がある。例えば、本来は、２つの結合テストケースで全条件節をカバーできるのに、上述の選択済条件節集合を用いると、４つの結合テストケースが生成される場合がある。なお、本条件においては、総当りでは１２個の結合テストケースがある場合を想定する。本条件に対して上述の選択済条件節集合を用いる場合には、総当りの場合に比べて結合テストケースの数は減少しているが、最少セットではない。これは、条件節がバランスよく取得出来ていないため局所解に落ち込んでしまい、最少セットとならないためである。これに対し、本発明では、条件網羅を満たす最少の結合テストケースを得ることができる。
【００１８】
次に、テストケース生成装置の構成について説明する。図１に示すように、テストケース生成装置１００は、入力部１１１と、出力部１１２と、表示部１１３と、操作部１１４と、記憶部１２０と、制御部１３０とを有する。なお、テストケース生成装置１００は、図１に示す機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや音声出力デバイス等の機能部を有することとしてもかまわない。
【００１９】
入力部１１１は、例えば、媒体読取装置である。入力部１１１は、ＣＤ−ＲＯＭやＤＶＤディスク、ＵＳＢ（Universal  Serial  Bus）メモリ等の可搬型記録媒体に記憶された各モジュールのテストケースを読み込む。すなわち、入力部１１１には、記録媒体から各モジュールのテストケースが入力される。入力部１１１は、入力された各モジュールのテストケースを制御部１３０に出力する。なお、入力部１１１は、他の情報処理装置と通信可能な通信部とし、他の情報処理装置から各モジュールのテストケースを受信して入力されるようにしてもよい。
【００２０】
出力部１１２は、例えば、媒体書込装置である。出力部１１２は、制御部１３０から入力された結合テストケースを記録媒体に書き込んで出力する。また、出力部１１２は、他の情報処理装置と通信可能な通信部とし、他の情報処理装置に結合テストケースを送信するようにしてもよい。なお、入力部１１１と出力部１１２は、一体化してもよい。
【００２１】
表示部１１３は、各種情報を表示するための表示デバイスである。表示部１１３は、例えば、表示デバイスとして液晶ディスプレイ等によって実現される。表示部１１３は、制御部１３０から入力された各種表示画面を表示する。各種表示画面は、例えば、各モジュールのテストケース、結合テストケース、各種メッセージ等を表示する表示画面が挙げられる。
【００２２】
操作部１１４は、ユーザから各種操作を受け付ける入力デバイスである。操作部１１４は、例えば、入力デバイスとして、キーボードやマウス等によって実現される。操作部１１４は、ユーザによって入力された操作を操作情報として制御部１３０に出力する。なお、操作部１１４は、入力デバイスとして、タッチパネル等によって実現されるようにしてもよく、表示部１１３の表示デバイスと、操作部１１４の入力デバイスとは、一体化されるようにしてもよい。
【００２３】
記憶部１２０は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、ハードディスクや光ディスク等の記憶装置によって実現される。記憶部１２０は、組み合わせ表記憶部１２１を有する。また、記憶部１２０は、制御部１３０での処理に用いる情報、例えば、制約式の解を繰り返し算出する場合における現在解等を記憶する。
【００２４】
組み合わせ表記憶部１２１は、各モジュールのテストケースに基づいて生成される組み合わせ表を記憶する。図７は、組み合わせ表記憶部の一例を示す図である。図７に示すように、組み合わせ表記憶部１２１は、「＿ｉｓｎｕｌｌ」、「ａ」、「ｂ」、「ｃ」、「ｘ」、「ｙ」、「ｐ１」から「ｐ８」といった項目を有する。組み合わせ表記憶部１２１は、例えば、テストケースごとに１レコードとして記憶する。組み合わせ表記憶部１２１の行数は、組み合わせ表サイズの初期値または更新値に基づいて決定される。なお、図７の例では、組み合わせ表サイズが「４」であり、一度、制約式の解を算出した結果を記憶した状態である。
【００２５】
「＿ｉｓｎｕｌｌ」は、行の有効または無効を示す情報である。「＿ｉｓｎｕｌｌ」は、「Ｆ」の場合には当該行の制約を掛け、「Ｔ」の場合には当該行の制約を掛けないことを示す。「ａ」、「ｂ」および「ｃ」は、各モジュールのテストケースにおける条件中の変数である。なお、変数に代入される数値は、ＳＭＴソルバにより選択される。「ｘ」および「ｙ」は、モジュール名に対応し、それぞれのモジュールのテストケースのＩＤを示す情報である。また、「ｘ」および「ｙ」は、モジュールの数に応じて増減する。「ｐ１」から「ｐ８」は、それぞれテストケース内の条件節に対応し、対応する条件節が使われるか否かを示す条件節フラグである。「ｐ１」から「ｐ８」は、対応する条件節が使われる場合を「Ｔ」で示し、対応する条件節が使われない場合を「Ｆ」で示す。また、「ｐ１」から「ｐ８」は、条件節の数に応じて増減する。なお、「Ｔ」は、真偽値の真、つまりＴｒｕｅを表し、「Ｆ」は、真偽値の偽、つまりＦａｌｓｅを表す。
【００２６】
図１の説明に戻って、制御部１３０は、例えば、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等によって、内部の記憶装置に記憶されているプログラムがＲＡＭを作業領域として実行されることにより実現される。また、制御部１３０は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現されるようにしてもよい。制御部１３０は、変換部１３１と、算出部１３２と、生成部１３３とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部１３０の内部構成は、図１に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。また、制御部１３０は、各処理工程の入出力や変換結果である組み合わせ表および各制約式を各種表示画面として表示部１１３に出力するようにしてもよい。なお、以下の説明では、各制約式について、ＳＭＴソルバの１つであるＹｉｃｅｓの書式で記述している。
【００２７】
変換部１３１は、入力部１１１からモジュールごとのテストケースが入力されると、各テストケースを有限サイズの組み合わせ表と、組み合わせ表のデータ項目間の制約式とに変換する。ここで、以下の説明で用いるモジュールＸおよびＹのテストケースを図８および図９に示す。図８は、モジュールＸのテストケースの一例を示す図である。図８に示すモジュールＸのテストケース２１は、「Ｘ１」から「Ｘ４」までの４つのテストケースを有し、条件内に変数として「ａ」および「ｂ」を有する。図９は、モジュールＹのテストケースの一例を示す図である。図９に示すモジュールＹのテストケース２２は、「Ｙ１」から「Ｙ４」までの４つのテストケースを有し、条件内に変数として「ａ」、「ｂ」および「ｃ」を有する。
【００２８】
変換部１３１は、モジュールごとのテストケースから変数を抽出する。変換部１３１は、テストケース２１から変数「ａ」および「ｂ」を抽出し、テストケース２２から変数「ａ」、「ｂ」および「ｃ」を抽出する。変換部１３１は、テストケース２１とテストケース２２とで重複する変数を排除して、変数「ａ」、「ｂ」および「ｃ」を抽出する。
【００２９】
変換部１３１は、モジュールごとのテストケースから条件節を抽出する。変換部１３１は、テストケース２１から条件節「ａ＝１」、「ａ！＝１」、「ｂ＞０」および「ｂ＜＝０」を抽出する。変換部１３１は、テストケース２２から条件節「ａ＝１」、「ａ！＝１」、「ｂ＞１０」、「ｂ＜＝１０」、「ｃ＝１」および「ｃ！＝１」を抽出する。変換部１３１は、テストケース２１とテストケース２２とで重複する条件節を排除して、条件節「ａ＝１」、「ａ！＝１」、「ｂ＞０」、「ｂ＜＝０」、「ｂ＞１０」、「ｂ＜＝１０」、「ｃ＝１」および「ｃ！＝１」を抽出する。
【００３０】
変換部１３１は、抽出した変数、条件節、モジュール名、および、予めユーザにより設定された組み合わせ表サイズの初期値に基づいて、組み合わせ表を表現する第１制約式を生成する。なお、組み合わせ表サイズの初期値は、例えば、「４」とする。ここで、図１０を用いて、第１制約式と、第１制約式で表現される組み合わせ表との一例について説明する。図１０は、組み合わせ表のデータ構造および制約式の一例を示す図である。図１０の例では、第１制約式２３で組み合わせ表２４を表現する。組み合わせ表２４は、データ項目として、「＿ｉｓｎｕｌｌ」、「ａ」から「ｃ」の変数欄２５、「ｘ」および「ｙ」のモジュール名欄２６、および、「ｐ１」から「ｐ８」の条件節フラグ欄２７を有する。第１制約式２３の式２８ａは、組み合わせ表２４のデータ項目欄２８ｂを表している。第１制約式２３の式２９ａは、組み合わせ表サイズが４行、つまり組み合わせ表２４の行２９ｂを表している。すなわち、第１制約式２３は、組み合わせ表２４のデータ構造を示している。
【００３１】
変換部１３１は、モジュールごとのテストケースの各行について、変数と条件節フラグとの対応付けを行う第２制約式を生成する。ここで、図１１を用いて、対応付けの一例について説明する。図１１は、変数と条件節フラグとの対応付けを行う制約式の生成の一例を示す図である。図１１の例では、テストケース２１のＩＤ「Ｘ１」に対応する第２制約式は、ｃａｓｅ関数を用いて第２制約式３０で表わされる。第２制約式３０の式３１は、ＩＤ「Ｘ１」の条件節「ａ＝１」と「ｂ＞０」とを表している。第２制約式３０の式３２は、条件節フラグ「ｐ１」と「ｐ３」とを表している。第２制約式３０を満たす場合には、組み合わせ表２４では、対応する条件節フラグが「Ｔ」となる。変換部１３１は、他の行および他のモジュールのテストケースの各行についても同様に、第２制約式を生成する。
【００３２】
変換部１３１は、モジュールごとのテストケースＩＤとｃａｓｅ関数で定義した制約とを紐付ける第３制約式を生成する。ここで、図１２を用いて、紐付けの一例について説明する。図１２は、モジュールごとのテストケースＩＤとｃａｓｅ関数で定義した制約とを紐付ける制約式の一例を示す図である。図１２の例では、モジュールＸに対応する第３制約式は、ａｓｓｉｇｎ関数を用いて第３制約式３３で表わされる。また、第３制約式３３は、さらに他の第３制約式と後述する第４制約式と合わせて、各制約式の制約を受けることを示す第５制約式３４から呼び出される関係にある。第３制約式３３の式３５は、モジュールＸのテストケースＩＤの範囲を指定する。第３制約式３３の式３６は、テストケースＩＤと、第２制約式であるｃａｓｅ関数とを紐付ける。すなわち、第３制約式３３は、モジュールＸについて、ＩＤが「１」から「４」の範囲であり、各ＩＤには、ｃａｓｅＸ１からＸ４の関数が紐付けられていることを示す。第３制約式３３は、組み合わせ表２４では、項目「ｘ」の列に対応する。変換部１３１は、他のモジュールについても同様に、第３制約式を生成する。
【００３３】
変換部１３１は、テストケース割り当て後の残りの条件節フラグを決定する第４制約式を生成する。ここで、図１３を用いて、残りの条件節フラグの決定の一例について説明する。図１３は、テストケース割り当て後の残りの条件節フラグを決定する制約式の一例を示す図である。図１３の例では、残りの条件節フラグを決定する第４制約式は、ｓｅｔＡｌｌＦｌａｇｓ関数を用いて第４制約式４０で表わされる。第４制約式４０は、組み合わせ表２４では、複数のセル４１が対応する。なお、各セル４１に入る「Ｔ」または「Ｆ」は、ＳＭＴソルバによって割り当てられる変数「ａ」から「ｃ」の値によって変化する。
【００３４】
変換部１３１は、上述の第１制約式で表現される組み合わせ表の行に、第２制約式から第４制約式までの各制約式の制約を受けることを示す第５制約式を生成する。図１２に示す第５制約式３４は、ｃｏｍｂｉｎｅ関数を用いて表わされ、式３７がモジュールＸのテストケースを割り当てる第３制約式３３を示し、式３８がモジュールＹのテストケースを割り当てる第３制約式を示す。また、第５制約式３４では、式３９が図１３に示す第４制約式４０を示す。
【００３５】
変換部１３１は、条件節フラグ列に関する第６制約式、すなわち、有効行の条件節フラグ列において１つ以上「Ｔ」が存在するという制約を付加する第６制約式を生成する。ここで、図１４を用いて、有効行の条件節フラグ列において１つ以上「Ｔ」が存在するという制約の付加の一例について説明する。図１４は、条件節フラグ列に関する制約式の一例を示す図である。図１４の例では、第６制約式は、ａｓｓｅｒｔおよびｅｘｉｓｔＲｅｃｏｒｄＳｅｔ関数を用いて第６制約式４２で表わされる。第６制約式４２の式４３は、テーブルインスタンスを用意することを示す。第６制約式４２の式４４は、組み合わせ表２４の各行のテストケースの組み合わせを示す。第６制約式４２の式４５は、組み合わせ表２４の条件節フラグ列に１つ以上「Ｔ」が存在するという制約を示す。例えば、式４５ａは、条件節フラグ「ｐ１」の列４５ｂに「Ｔ」が存在するという制約を示す。
【００３６】
第６制約式４２の式４５に示すｅｘｉｓｔＲｅｃｏｒｄＳｅｔ関数にかかる第７制約式について、図１５を用いて説明する。図１５は、条件節フラグ列の制約式の一例を示す図である。図１５の例では、第７制約式４６の式４７は、組み合わせ表２４の条件節フラグ列において、１〜４行目のいずれかが「Ｔ」であることを示す。第７制約式４６の式４８は、「＿ｉｓｎｕｌｌ」列が「Ｆ」である場合に制約をかけることを示す。第７制約式４６の式４９は、式４７内の「ｉｓＰａｓｓ」の定義を示す。
【００３７】
変換部１３１は、上述の第１制約式から第７制約式を全て満たす組み合わせ表の解が存在することを宣言する第８制約式を生成する。つまり、第８制約式は、第１制約式から第７制約式で表わされる制約を含む組み合わせ表２４を表す制約式である。すなわち、第８制約式は、複数モジュールの各テストケースを制約式に変換したものである。変換部１３１は、生成した第８制約式を算出部１３２に出力する。なお、変換部１３１は、算出部１３２から再変換指示が入力されると、組み合わせ表サイズの更新値を用いて、再度、制約式の生成を実行する。
【００３８】
図１の説明に戻って、算出部１３２は、変換部１３１から第８制約式が入力されると、ＳＭＴソルバを用いて第８制約式の解を算出する。算出部１３２は、算出の結果、充足解が存在するか否かを判定する。算出部１３２は、充足解が存在する場合には、充足解を現在解として記憶部１２０に記憶する。また、算出部１３２は、組み合わせ表サイズを１減らして更新値とし、再度、制約式の生成を実行させる再変換指示を変換部１３１に出力する。
【００３９】
算出部１３２は、充足解が存在しない場合には、記憶部１２０を参照し、現在解が存在するか否かを判定する。算出部１３２は、現在解が存在する場合には、結合テストケースを生成する生成指示を生成部１３３に出力する。なお、現在解は、１サイクル前の充足解である。算出部１３２は、現在解が存在しない場合には、組み合わせ表サイズの初期値を増やすことを促すメッセージを表示部１１３に出力する。
【００４０】
生成部１３３は、算出部１３２から生成指示が入力されると、記憶部１２０を参照し、現在解に基づいて結合テストケースを生成する。生成部１３３は、生成した結合テストケースを出力部１１２に出力する。ここで、図１６を用いて充足解、すなわち現在解に基づく結合テストケースの生成の一例について説明する。図１６は、充足解に基づく結合テストケースの生成の一例を示す図である。図１６の例では、充足解５０は、モジュールごとのテストケースＩＤを含む。例えば、充足解５０のテストケースＩＤ５２は、モジュールＸのＩＤ「３」およびモジュールＹのＩＤ「３」の組み合わせのテストケースであることを示す。図１６の例では、第８制約式の解が算出され、各セルに値が入力された状態の組み合わせ表２４は４行であるので、結合テストケース５３は、４つのテストケースを有する。すなわち、結合テストケース５３は、モジュール名欄の領域５１のモジュールＸおよびモジュールＹの組み合わせに基づいて、ＩＤ「Ｘ３Ｙ３」、「Ｘ１Ｙ１」、「Ｘ４Ｙ４」および「Ｘ１Ｙ２」で示すテストケースとなる。
【００４１】
このように、図８から図１６の例では、得られる結合テストケースが条件網羅を満たす最少セットである４つとなる。なお、図８から図１６の例では、総当りでは１６個の結合テストケースとなる。また、上述の選択済条件節集合を用いる場合では、４つの結合テストケースとなり、図８から図１６の例と同数となる。
【００４２】
図１６の例は、第８制約式の充足解が算出できた場合であるが、充足解が算出できない場合もある。図１７は、結合テストケースの解の一例を示す図である。図１７に示すように、充足解５０は、第８制約式の充足解が算出できた場合の充足解の一例である。出力５４は、ＳＭＴソルバであるＹｉｃｅｓで充足解がない場合のメッセージの一例である。なお、充足解がない場合とは、例えば、図１６に示す組み合わせ表２４において、条件節フラグ列のうち、１つ以上の列が全て「Ｆ」である場合が挙げられる。つまり、当該場合においては、全て「Ｆ」の条件節フラグ列の条件節は、いずれのテストケースにおいてもテストされないことになる。
【００４３】
次に、実施例のテストケース生成装置１００の動作について説明する。図１８は、実施例のテストケース生成処理の一例を示すフローチャートである。
【００４４】
変換部１３１は、入力部１１１からモジュールごとのテストケースが入力されると、各テストケースを有限サイズの組み合わせ表と、組み合わせ表のデータ項目間の制約式とに変換する変換処理を実行する（ステップＳ１）。ここで、図１９を用いて変換処理について説明する。図１９は、変換処理の一例を示すフローチャートである。変換部１３１は、モジュールごとのテストケースから変数を抽出する（ステップＳ１１）。また、変換部１３１は、モジュールごとのテストケースから条件節を抽出する（ステップＳ１２）。
【００４５】
変換部１３１は、抽出した変数、条件節、モジュール名、および、組み合わせ表サイズの初期値または更新値に基づいて、組み合わせ表を表現する第１制約式を生成する（ステップＳ１３）。変換部１３１は、モジュールごとのテストケースの各行について、変数と条件節フラグとの対応付けを行う第２制約式を生成する（ステップＳ１４）。変換部１３１は、モジュールごとのテストケースＩＤとｃａｓｅ関数で定義した制約とを紐付ける第３制約式を生成する（ステップＳ１５）。
【００４６】
変換部１３１は、テストケース割り当て後の残りの条件節フラグを決定する第４制約式を生成する（ステップＳ１６）。変換部１３１は、組み合わせ表の行に第２から第４制約式の制約を受けることを示す第５制約式を生成する（ステップＳ１７）。変換部１３１は、条件節フラグ列に関する第６および第７制約式を生成する（ステップＳ１８）。変換部１３１は、上述の第１から第７制約式を全て満たす組み合わせ表の解が存在することを宣言する第８制約式を生成する（ステップＳ１９）。すなわち、変換部１３１は、複数モジュールの各テストケースを第８制約式に変換する。変換部１３１は、生成した第８制約式を算出部１３２に出力する。これにより、テストケース生成装置１００は、複数モジュールの各テストケースを第８制約式に変換できる。
【００４７】
図１８の説明に戻って、算出部１３２は、変換部１３１から第８制約式が入力されると、ＳＭＴソルバを用いて第８制約式の解を算出する（ステップＳ２）。算出部１３２は、算出の結果、充足解が存在するか否かを判定する（ステップＳ３）。算出部１３２は、充足解が存在する場合には（ステップＳ３：肯定）、充足解を現在解として記憶部１２０に記憶する（ステップＳ４）。また、算出部１３２は、組み合わせ表サイズを１減らして更新値とし（ステップＳ５）、ステップＳ１に戻る。
【００４８】
算出部１３２は、充足解が存在しない場合には（ステップＳ３：否定）、記憶部１２０を参照し、現在解が存在するか否かを判定する（ステップＳ６）。算出部１３２は、現在解が存在する場合には（ステップＳ６：肯定）、結合テストケースを生成する生成指示を生成部１３３に出力する。生成部１３３は、算出部１３２から生成指示が入力されると、記憶部１２０を参照し、現在解に基づいて結合テストケースを生成する（ステップＳ７）。生成部１３３は、生成した結合テストケースを出力部１１２に出力する（ステップＳ８）。算出部１３２は、現在解が存在しない場合には（ステップＳ６：否定）、組み合わせ表サイズの初期値を増やすことを促すメッセージを表示部１１３に出力する（ステップＳ９）。これにより、テストケース生成装置１００は、条件網羅を満たす最少の結合テストケースを得ることができる。すなわち、条件網羅を満たす最少の結合テストケースを用いた結合テストの実施工数を削減できる。
【００４９】
このように、テストケース生成装置１００は、複数のモジュールごとに抽出したテストケースを組み合わせる際に、各テストケースを有限サイズの組み合わせ表と、組み合わせ表のデータ項目間の制約式とに変換する。テストケース生成装置１００は、制約式の解を算出する。テストケース生成装置１００は、算出した解に基づいて結合テストのテストケースを生成する。その結果、条件網羅を満たす最少の結合テストケースを得ることができる。
【００５０】
また、テストケース生成装置１００は、ＳＭＴソルバを用いて制約式の解を算出する。その結果、条件網羅を満たす最少の結合テストケースを得ることができる。
【００５１】
また、テストケース生成装置１００は、組み合わせ表のサイズを小さくしながら制約式の解を繰り返し算出する。その結果、条件網羅を満たす最少の結合テストケースを得ることができる。
【００５２】
また、テストケース生成装置１００は、制約式の解が充足解でない場合には、算出された１サイクル前の充足解に基づいて結合テストのテストケースを生成する。その結果、条件網羅を満たす最少の結合テストケースを得ることができる。
【００５３】
また、テストケース生成装置１００では、制約式は、全てのデータ項目に、それぞれ真が１つ以上存在する制約条件を含む。その結果、条件網羅を満たす最少の結合テストケースを得ることができる。
【００５４】
なお、上記実施例では、各制約式は、ＳＭＴソルバの１つであるＹｉｃｅｓの書式で記述しているが、これに限定されない。各制約式は、例えば、他のＳＭＴソルバの書式で記述されてもよい。
【００５５】
また、上記実施例では、ＳＭＴソルバを用いて第８制約式の解を算出した結果、充足解が存在せず、現在解も存在しない場合には、組み合わせ表サイズの初期値を増やすことを促すメッセージを出力して処理を終了したが、これに限定されない。例えば、当該場合には、組み合わせ表サイズを１増加させて更新値とし、再度、変換処理を行うようにしてもよい。これにより、組み合わせ表サイズの初期値が適切な値でなかった場合であっても、条件網羅を満たす最少の結合テストケースを得ることができる。
【００５６】
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、算出部１３２と生成部１３３とを統合してもよい。また、図示した各処理は、上記の順番に限定されるものではなく、処理内容を矛盾させない範囲において、同時に実施してもよく、順序を入れ替えて実施してもよい。
【００５７】
さらに、各装置で行われる各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ（Micro  Controller  Unit）等のマイクロ・コンピュータ）上で、その全部または任意の一部を実行するようにしてもよい。また、各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ等のマイクロ・コンピュータ）で解析実行されるプログラム上、またはワイヤードロジックによるハードウェア上で、その全部または任意の一部を実行するようにしてもよいことは言うまでもない。
【００５８】
ところで、上記の実施例で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することで実現できる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図２０は、テストケース生成プログラムを実行するコンピュータの一例を示す図である。
【００５９】
図２０に示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０１と、データ入力を受け付ける入力装置２０２と、モニタ２０３とを有する。また、コンピュータ２００は、記憶媒体からプログラム等を読み取る媒体読取装置２０４と、各種装置と接続するためのインタフェース装置２０５と、他の情報処理装置等と有線または無線により接続するための通信装置２０６とを有する。また、コンピュータ２００は、各種情報を一時記憶するＲＡＭ２０７と、ハードディスク装置２０８とを有する。また、各装置２０１〜２０８は、バス２０９に接続される。
【００６０】
ハードディスク装置２０８には、図１に示した変換部１３１、算出部１３２および生成部１３３の各処理部と同様の機能を有するテストケース生成プログラムが記憶される。また、ハードディスク装置２０８には、組み合わせ表記憶部１２１、および、テストケース生成プログラムを実現するための各種データが記憶される。入力装置２０２は、例えば、コンピュータ２００の管理者から操作情報、管理情報等の各種情報の入力を受け付ける。モニタ２０３は、例えば、コンピュータ２００の管理者に対して表示画面、管理情報の画面および各種画面を表示する。媒体読取装置２０４は、例えば、図１に示した入力部１１１と同等の機能を有し、記録媒体に記録された各モジュールのテストケースを読み取る。また、媒体読取装置２０４は、媒体書込装置と一体化され、図１に示した出力部１１２と同等の機能を有し、結合テストケースを記録媒体に書き込む。インタフェース装置２０５は、例えば印刷装置等が接続される。通信装置２０６は、例えば、図１に示した入力部１１１および出力部１１２の一例である通信部と同様の機能を有し図示しないネットワークと接続される。通信装置２０６は、例えば、他の情報処理装置から各モジュールのテストケースを受信し、他の情報処理装置に結合テストケースを送信するようにしてもよい。
【００６１】
ＣＰＵ２０１は、ハードディスク装置２０８に記憶された各プログラムを読み出して、ＲＡＭ２０７に展開して実行することで、各種の処理を行う。また、これらのプログラムは、コンピュータ２００を図１に示した変換部１３１、算出部１３２および生成部１３３として機能させることができる。
【００６２】
なお、上記のテストケース生成プログラムは、必ずしもハードディスク装置２０８に記憶されている必要はない。例えば、コンピュータ２００が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ２００が読み出して実行するようにしてもよい。コンピュータ２００が読み取り可能な記憶媒体は、例えば、ＣＤ−ＲＯＭやＤＶＤディスク、ＵＳＢメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、ＬＡＮ等に接続された装置にこのテストケース生成プログラムを記憶させておき、コンピュータ２００がこれらからテストケース生成プログラムを読み出して実行するようにしてもよい。
【００６３】
以上、本実施例を含む実施の形態に関し、さらに以下の付記を開示する。
【００６４】
（付記１）複数のモジュールごとに抽出したテストケースを組み合わせる際に、前記各テストケースを有限サイズの組み合わせ表と、前記組み合わせ表のデータ項目間の制約式とに変換し、
前記制約式の解を算出し、
算出した解に基づいて結合テストのテストケースを生成する
処理をコンピュータが実行することを特徴とするテストケース生成方法。
【００６５】
（付記２）前記算出する処理は、ＳＭＴソルバを用いて前記制約式の解を算出する、ことを特徴とする付記１に記載のテストケース生成方法。
【００６６】
（付記３）前記算出する処理は、前記組み合わせ表のサイズを小さくしながら前記制約式の解を繰り返し算出する、ことを特徴とする付記１または２に記載のテストケース生成方法。
【００６７】
（付記４）前記生成する処理は、前記制約式の解が充足解でない場合には、算出された１サイクル前の充足解に基づいて結合テストのテストケースを生成する、ことを特徴とする付記３に記載のテストケース生成方法。
【００６８】
（付記５）前記制約式は、全ての前記データ項目に、それぞれ真が１つ以上存在する制約条件を含むことを特徴とする付記１〜４のいずれか１つに記載のテストケース生成方法。
【００６９】
（付記６）複数のモジュールごとに抽出したテストケースを組み合わせる際に、前記各テストケースを有限サイズの組み合わせ表と、前記組み合わせ表のデータ項目間の制約式とに変換し、
前記制約式の解を算出し、
算出した解に基づいて結合テストのテストケースを生成する
処理をコンピュータに実行させることを特徴とするテストケース生成プログラム。
【００７０】
（付記７）前記算出する処理は、ＳＭＴソルバを用いて前記制約式の解を算出する、ことを特徴とする付記６に記載のテストケース生成プログラム。
【００７１】
（付記８）前記算出する処理は、前記組み合わせ表のサイズを小さくしながら前記制約式の解を繰り返し算出する、ことを特徴とする付記６または７に記載のテストケース生成プログラム。
【００７２】
（付記９）前記生成する処理は、前記制約式の解が充足解でない場合には、算出された１サイクル前の充足解に基づいて結合テストのテストケースを生成する、ことを特徴とする付記８に記載のテストケース生成プログラム。
【００７３】
（付記１０）前記制約式は、全ての前記データ項目に、それぞれ真が１つ以上存在する制約条件を含むことを特徴とする付記６〜９のいずれか１つに記載のテストケース生成プログラム。
【００７４】
（付記１１）複数のモジュールごとに抽出したテストケースを組み合わせる際に、前記各テストケースを有限サイズの組み合わせ表と、前記組み合わせ表のデータ項目間の制約式とに変換する変換部と、
前記制約式の解を算出する算出部と、
算出した解に基づいて結合テストのテストケースを生成する生成部と、
を有することを特徴とするテストケース生成装置。
【００７５】
（付記１２）前記算出部は、ＳＭＴソルバを用いて前記制約式の解を算出する、ことを特徴とする付記１１に記載のテストケース生成装置。
【００７６】
（付記１３）前記算出部は、前記組み合わせ表のサイズを小さくしながら前記制約式の解を繰り返し算出する、ことを特徴とする付記１１または１２に記載のテストケース生成装置。
【００７７】
（付記１４）前記生成部は、前記制約式の解が充足解でない場合には、算出された１サイクル前の充足解に基づいて結合テストのテストケースを生成する、ことを特徴とする付記１３に記載のテストケース生成装置。
【００７８】
（付記１５）前記制約式は、全ての前記データ項目に、それぞれ真が１つ以上存在する制約条件を含むことを特徴とする付記１１〜１４のいずれか１つに記載のテストケース生成装置。
【符号の説明】
【００７９】
１００  テストケース生成装置
１１１  入力部
１１２  出力部
１１３  表示部
１１４  操作部
１２０  記憶部
１２１  組み合わせ表記憶部
１３０  制御部
１３１  変換部
１３２  算出部
１３３  生成部
【図１】
0006497267.tif 000002
【図２】
0006497267.tif 000003
【図３】
0006497267.tif 000004
【図４】
0006497267.tif 000005
【図５】
0006497267.tif 000006
【図６】
0006497267.tif 000007
【図７】
0006497267.tif 000008
【図８】
0006497267.tif 000009
【図９】
0006497267.tif 000010
【図１０】
0006497267.tif 000011
【図１１】
0006497267.tif 000012
【図１２】
0006497267.tif 000013
【図１３】
0006497267.tif 000014
【図１４】
0006497267.tif 000015
【図１５】
0006497267.tif 000016
【図１６】
0006497267.tif 000017
【図１７】
0006497267.tif 000018
【図１８】
0006497267.tif 000019
【図１９】
0006497267.tif 000020
【図２０】
0006497267.tif 000021