以下、図面に基づいて、本願の開示するテストケース生成方法、テストケース生成プログラムおよびテストケース生成装置の実施例を詳細に説明する。なお、本実施例により、開示技術が限定されるものではない。また、以下の実施例は、矛盾しない範囲で適宜組みあわせてもよい。
図1は、実施例のテストケース生成装置の構成の一例を示すブロック図である。図1に示すテストケース生成装置100には、結合テストの対象となる複数のモジュールについて、モジュールごとのテストケースが入力される。また、テストケース生成装置100には、組み合わせ表サイズの初期値が、例えば、ユーザによって入力されて設定される。テストケース生成装置100は、複数のモジュールごとに抽出したテストケースを組み合わせる際に、各テストケースを有限サイズの組み合わせ表と、組み合わせ表のデータ項目間の制約式とに変換する。テストケース生成装置100は、制約式の解を算出する。制約式の解は、例えば、SMT(Satisfiability Modulo Theories)ソルバを用いて算出される。テストケース生成装置100は、算出した解に基づいて結合テストのテストケース(以下、結合テストケースともいう。)を生成する。これにより、テストケース生成装置100は、条件網羅を満たす最少の結合テストケースを得ることができる。
ここで、図2から図6を用いて、結合テストケースについて説明する。図2は、結合テストケースの生成の一例を示す図である。図2の例では、プログラム開発の一例として、銀行業務のATM(Automated Teller Machine)処理について説明する。ATM処理は、例えば、入力チェックを行うモジュールX、取引チェックを行うモジュールY、および、取引を実施するモジュールZの3つのモジュールに分割されて開発される。ATM処理の機能をテストするためには、これらのモジュールごとにテストケースを抽出し、抽出したテストケースを組み合わせることで結合テストケースを生成する。図2の例では、モジュールX、Y、Zのそれぞれについてテストケースを抽出して組み合わせることでATM処理の結合テストケースを生成する。
図3は、モジュールXのテストケースの一例を示す図である。図3の例では、モジュールXのテストケースとして、ID「X01」から「X09」までの9つのテストケースが挙げられる。各テストケースの条件としては、通帳の有無、カードの有無、取引が通帳記帳、預け入れおよび引出しのいずれであるか、暗証番号が正か不正であるか、エラーであるか否かが挙げられる。ID「X01」、「X02」は、通帳記帳の場合のテストケースであり、カードの有無は問わずに通帳が挿入されていなければエラーとなる。ID「X03」から「X06」は、預け入れの場合のテストケースであり、カードおよび通帳のうち1つ以上があれば預け入れ可能であるが、カードおよび通帳のどちらも無ければエラーとなる。ID「X07」から「X09」は、引出しの場合のテストケースであり、通帳の有無は問わずに、カードが挿入されていなければエラーとし、暗証番号が正しくない場合もエラーとする。
図4は、モジュールYのテストケースの一例を示す図である。図4の例では、モジュールYのテストケースとして、ID「Y01」から「Y05」までの5つのテストケースが挙げられる。各テストケースの条件としては、取引、金額およびエラーが挙げられる。ID「Y01」、「Y02」は、引出しの場合のテストケースであり、金額が50万円を超えるとエラーとなる。ID「Y03」、「Y04」は、預け入れの場合のテストケースであり、金額が100万円を超えるとエラーとなる。ID「Y05」は、通帳記帳の場合のテストケースであり、モジュールYでは、エラーを発生させない。
図5は、モジュールZのテストケースの一例を示す図である。図5の例では、モジュールZのテストケースとして、ID「Z01」から「Z04」までの4つのテストケースが挙げられる。モジュールZのテストケースでは、取引および通帳の条件に基づいて、通帳記帳、引出し処理および預け入れ処理についての更新処理が設定される。
図6は、結合テストケースの一例を示す図である。図6は、図3から図5の各テストケースを組み合わせたものであり、ID「X01」から「X09」、「Y01」から「Y05」、および、「Z01」から「Z04」の各テストケースが、少なくとも1回以上テストされる条件網羅を満たす。図6の例では、結合テストとして、11個のテストケースを用いることで、結合テストを行うことができる。
ところで、結合テストケースにおける各モジュールのテストケースの組み合わせは、爆発的に増大する場合がある。組み合わせ件数を削減するには、例えば、以下の3点を適用することができる。まず、1点目は、モジュールごとの各テストケースを事前に正常または異常ケースに分割し、正常ケース優先で異常ケースまでの各組み合わせルートに沿って組み合わせを行う。2点目は、仕様書からテストケースを取得するときに、仕様書の頭から順番に取得するのではなく、選択済条件節集合にない条件節を一番多く持つテストケースを優先して取得し、組み合わせを行う。3点目は、全組み合わせ後ではなく、1組ずつのテストケースの組み合わせを生成する度に、条件網羅による絞り込みアルゴリズムを適用する。なお、アルゴリズムの終了は、途中で選択済条件節集合が全条件節集合に一致する場合である。これにより、残りの組み合わせは行わないため、組み合わせ件数を削減できる。
しかしながら、上述の選択済条件節集合を用いる場合には、得られる結合テストケースが条件網羅を満たす最少セットでない場合がある。例えば、本来は、2つの結合テストケースで全条件節をカバーできるのに、上述の選択済条件節集合を用いると、4つの結合テストケースが生成される場合がある。なお、本条件においては、総当りでは12個の結合テストケースがある場合を想定する。本条件に対して上述の選択済条件節集合を用いる場合には、総当りの場合に比べて結合テストケースの数は減少しているが、最少セットではない。これは、条件節がバランスよく取得出来ていないため局所解に落ち込んでしまい、最少セットとならないためである。これに対し、本発明では、条件網羅を満たす最少の結合テストケースを得ることができる。
次に、テストケース生成装置の構成について説明する。図1に示すように、テストケース生成装置100は、入力部111と、出力部112と、表示部113と、操作部114と、記憶部120と、制御部130とを有する。なお、テストケース生成装置100は、図1に示す機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや音声出力デバイス等の機能部を有することとしてもかまわない。
入力部111は、例えば、媒体読取装置である。入力部111は、CD−ROMやDVDディスク、USB(Universal Serial Bus)メモリ等の可搬型記録媒体に記憶された各モジュールのテストケースを読み込む。すなわち、入力部111には、記録媒体から各モジュールのテストケースが入力される。入力部111は、入力された各モジュールのテストケースを制御部130に出力する。なお、入力部111は、他の情報処理装置と通信可能な通信部とし、他の情報処理装置から各モジュールのテストケースを受信して入力されるようにしてもよい。
出力部112は、例えば、媒体書込装置である。出力部112は、制御部130から入力された結合テストケースを記録媒体に書き込んで出力する。また、出力部112は、他の情報処理装置と通信可能な通信部とし、他の情報処理装置に結合テストケースを送信するようにしてもよい。なお、入力部111と出力部112は、一体化してもよい。
表示部113は、各種情報を表示するための表示デバイスである。表示部113は、例えば、表示デバイスとして液晶ディスプレイ等によって実現される。表示部113は、制御部130から入力された各種表示画面を表示する。各種表示画面は、例えば、各モジュールのテストケース、結合テストケース、各種メッセージ等を表示する表示画面が挙げられる。
操作部114は、ユーザから各種操作を受け付ける入力デバイスである。操作部114は、例えば、入力デバイスとして、キーボードやマウス等によって実現される。操作部114は、ユーザによって入力された操作を操作情報として制御部130に出力する。なお、操作部114は、入力デバイスとして、タッチパネル等によって実現されるようにしてもよく、表示部113の表示デバイスと、操作部114の入力デバイスとは、一体化されるようにしてもよい。
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、ハードディスクや光ディスク等の記憶装置によって実現される。記憶部120は、組み合わせ表記憶部121を有する。また、記憶部120は、制御部130での処理に用いる情報、例えば、制約式の解を繰り返し算出する場合における現在解等を記憶する。
組み合わせ表記憶部121は、各モジュールのテストケースに基づいて生成される組み合わせ表を記憶する。図7は、組み合わせ表記憶部の一例を示す図である。図7に示すように、組み合わせ表記憶部121は、「_isnull」、「a」、「b」、「c」、「x」、「y」、「p1」から「p8」といった項目を有する。組み合わせ表記憶部121は、例えば、テストケースごとに1レコードとして記憶する。組み合わせ表記憶部121の行数は、組み合わせ表サイズの初期値または更新値に基づいて決定される。なお、図7の例では、組み合わせ表サイズが「4」であり、一度、制約式の解を算出した結果を記憶した状態である。
「_isnull」は、行の有効または無効を示す情報である。「_isnull」は、「F」の場合には当該行の制約を掛け、「T」の場合には当該行の制約を掛けないことを示す。「a」、「b」および「c」は、各モジュールのテストケースにおける条件中の変数である。なお、変数に代入される数値は、SMTソルバにより選択される。「x」および「y」は、モジュール名に対応し、それぞれのモジュールのテストケースのIDを示す情報である。また、「x」および「y」は、モジュールの数に応じて増減する。「p1」から「p8」は、それぞれテストケース内の条件節に対応し、対応する条件節が使われるか否かを示す条件節フラグである。「p1」から「p8」は、対応する条件節が使われる場合を「T」で示し、対応する条件節が使われない場合を「F」で示す。また、「p1」から「p8」は、条件節の数に応じて増減する。なお、「T」は、真偽値の真、つまりTrueを表し、「F」は、真偽値の偽、つまりFalseを表す。
図1の説明に戻って、制御部130は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等によって、内部の記憶装置に記憶されているプログラムがRAMを作業領域として実行されることにより実現される。また、制御部130は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現されるようにしてもよい。制御部130は、変換部131と、算出部132と、生成部133とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、図1に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。また、制御部130は、各処理工程の入出力や変換結果である組み合わせ表および各制約式を各種表示画面として表示部113に出力するようにしてもよい。なお、以下の説明では、各制約式について、SMTソルバの1つであるYicesの書式で記述している。
変換部131は、入力部111からモジュールごとのテストケースが入力されると、各テストケースを有限サイズの組み合わせ表と、組み合わせ表のデータ項目間の制約式とに変換する。ここで、以下の説明で用いるモジュールXおよびYのテストケースを図8および図9に示す。図8は、モジュールXのテストケースの一例を示す図である。図8に示すモジュールXのテストケース21は、「X1」から「X4」までの4つのテストケースを有し、条件内に変数として「a」および「b」を有する。図9は、モジュールYのテストケースの一例を示す図である。図9に示すモジュールYのテストケース22は、「Y1」から「Y4」までの4つのテストケースを有し、条件内に変数として「a」、「b」および「c」を有する。
変換部131は、モジュールごとのテストケースから変数を抽出する。変換部131は、テストケース21から変数「a」および「b」を抽出し、テストケース22から変数「a」、「b」および「c」を抽出する。変換部131は、テストケース21とテストケース22とで重複する変数を排除して、変数「a」、「b」および「c」を抽出する。
変換部131は、モジュールごとのテストケースから条件節を抽出する。変換部131は、テストケース21から条件節「a=1」、「a!=1」、「b>0」および「b<=0」を抽出する。変換部131は、テストケース22から条件節「a=1」、「a!=1」、「b>10」、「b<=10」、「c=1」および「c!=1」を抽出する。変換部131は、テストケース21とテストケース22とで重複する条件節を排除して、条件節「a=1」、「a!=1」、「b>0」、「b<=0」、「b>10」、「b<=10」、「c=1」および「c!=1」を抽出する。
変換部131は、抽出した変数、条件節、モジュール名、および、予めユーザにより設定された組み合わせ表サイズの初期値に基づいて、組み合わせ表を表現する第1制約式を生成する。なお、組み合わせ表サイズの初期値は、例えば、「4」とする。ここで、図10を用いて、第1制約式と、第1制約式で表現される組み合わせ表との一例について説明する。図10は、組み合わせ表のデータ構造および制約式の一例を示す図である。図10の例では、第1制約式23で組み合わせ表24を表現する。組み合わせ表24は、データ項目として、「_isnull」、「a」から「c」の変数欄25、「x」および「y」のモジュール名欄26、および、「p1」から「p8」の条件節フラグ欄27を有する。第1制約式23の式28aは、組み合わせ表24のデータ項目欄28bを表している。第1制約式23の式29aは、組み合わせ表サイズが4行、つまり組み合わせ表24の行29bを表している。すなわち、第1制約式23は、組み合わせ表24のデータ構造を示している。
変換部131は、モジュールごとのテストケースの各行について、変数と条件節フラグとの対応付けを行う第2制約式を生成する。ここで、図11を用いて、対応付けの一例について説明する。図11は、変数と条件節フラグとの対応付けを行う制約式の生成の一例を示す図である。図11の例では、テストケース21のID「X1」に対応する第2制約式は、case関数を用いて第2制約式30で表わされる。第2制約式30の式31は、ID「X1」の条件節「a=1」と「b>0」とを表している。第2制約式30の式32は、条件節フラグ「p1」と「p3」とを表している。第2制約式30を満たす場合には、組み合わせ表24では、対応する条件節フラグが「T」となる。変換部131は、他の行および他のモジュールのテストケースの各行についても同様に、第2制約式を生成する。
変換部131は、モジュールごとのテストケースIDとcase関数で定義した制約とを紐付ける第3制約式を生成する。ここで、図12を用いて、紐付けの一例について説明する。図12は、モジュールごとのテストケースIDとcase関数で定義した制約とを紐付ける制約式の一例を示す図である。図12の例では、モジュールXに対応する第3制約式は、assign関数を用いて第3制約式33で表わされる。また、第3制約式33は、さらに他の第3制約式と後述する第4制約式と合わせて、各制約式の制約を受けることを示す第5制約式34から呼び出される関係にある。第3制約式33の式35は、モジュールXのテストケースIDの範囲を指定する。第3制約式33の式36は、テストケースIDと、第2制約式であるcase関数とを紐付ける。すなわち、第3制約式33は、モジュールXについて、IDが「1」から「4」の範囲であり、各IDには、caseX1からX4の関数が紐付けられていることを示す。第3制約式33は、組み合わせ表24では、項目「x」の列に対応する。変換部131は、他のモジュールについても同様に、第3制約式を生成する。
変換部131は、テストケース割り当て後の残りの条件節フラグを決定する第4制約式を生成する。ここで、図13を用いて、残りの条件節フラグの決定の一例について説明する。図13は、テストケース割り当て後の残りの条件節フラグを決定する制約式の一例を示す図である。図13の例では、残りの条件節フラグを決定する第4制約式は、setAllFlags関数を用いて第4制約式40で表わされる。第4制約式40は、組み合わせ表24では、複数のセル41が対応する。なお、各セル41に入る「T」または「F」は、SMTソルバによって割り当てられる変数「a」から「c」の値によって変化する。
変換部131は、上述の第1制約式で表現される組み合わせ表の行に、第2制約式から第4制約式までの各制約式の制約を受けることを示す第5制約式を生成する。図12に示す第5制約式34は、combine関数を用いて表わされ、式37がモジュールXのテストケースを割り当てる第3制約式33を示し、式38がモジュールYのテストケースを割り当てる第3制約式を示す。また、第5制約式34では、式39が図13に示す第4制約式40を示す。
変換部131は、条件節フラグ列に関する第6制約式、すなわち、有効行の条件節フラグ列において1つ以上「T」が存在するという制約を付加する第6制約式を生成する。ここで、図14を用いて、有効行の条件節フラグ列において1つ以上「T」が存在するという制約の付加の一例について説明する。図14は、条件節フラグ列に関する制約式の一例を示す図である。図14の例では、第6制約式は、assertおよびexistRecordSet関数を用いて第6制約式42で表わされる。第6制約式42の式43は、テーブルインスタンスを用意することを示す。第6制約式42の式44は、組み合わせ表24の各行のテストケースの組み合わせを示す。第6制約式42の式45は、組み合わせ表24の条件節フラグ列に1つ以上「T」が存在するという制約を示す。例えば、式45aは、条件節フラグ「p1」の列45bに「T」が存在するという制約を示す。
第6制約式42の式45に示すexistRecordSet関数にかかる第7制約式について、図15を用いて説明する。図15は、条件節フラグ列の制約式の一例を示す図である。図15の例では、第7制約式46の式47は、組み合わせ表24の条件節フラグ列において、1〜4行目のいずれかが「T」であることを示す。第7制約式46の式48は、「_isnull」列が「F」である場合に制約をかけることを示す。第7制約式46の式49は、式47内の「isPass」の定義を示す。
変換部131は、上述の第1制約式から第7制約式を全て満たす組み合わせ表の解が存在することを宣言する第8制約式を生成する。つまり、第8制約式は、第1制約式から第7制約式で表わされる制約を含む組み合わせ表24を表す制約式である。すなわち、第8制約式は、複数モジュールの各テストケースを制約式に変換したものである。変換部131は、生成した第8制約式を算出部132に出力する。なお、変換部131は、算出部132から再変換指示が入力されると、組み合わせ表サイズの更新値を用いて、再度、制約式の生成を実行する。
図1の説明に戻って、算出部132は、変換部131から第8制約式が入力されると、SMTソルバを用いて第8制約式の解を算出する。算出部132は、算出の結果、充足解が存在するか否かを判定する。算出部132は、充足解が存在する場合には、充足解を現在解として記憶部120に記憶する。また、算出部132は、組み合わせ表サイズを1減らして更新値とし、再度、制約式の生成を実行させる再変換指示を変換部131に出力する。
算出部132は、充足解が存在しない場合には、記憶部120を参照し、現在解が存在するか否かを判定する。算出部132は、現在解が存在する場合には、結合テストケースを生成する生成指示を生成部133に出力する。なお、現在解は、1サイクル前の充足解である。算出部132は、現在解が存在しない場合には、組み合わせ表サイズの初期値を増やすことを促すメッセージを表示部113に出力する。
生成部133は、算出部132から生成指示が入力されると、記憶部120を参照し、現在解に基づいて結合テストケースを生成する。生成部133は、生成した結合テストケースを出力部112に出力する。ここで、図16を用いて充足解、すなわち現在解に基づく結合テストケースの生成の一例について説明する。図16は、充足解に基づく結合テストケースの生成の一例を示す図である。図16の例では、充足解50は、モジュールごとのテストケースIDを含む。例えば、充足解50のテストケースID52は、モジュールXのID「3」およびモジュールYのID「3」の組み合わせのテストケースであることを示す。図16の例では、第8制約式の解が算出され、各セルに値が入力された状態の組み合わせ表24は4行であるので、結合テストケース53は、4つのテストケースを有する。すなわち、結合テストケース53は、モジュール名欄の領域51のモジュールXおよびモジュールYの組み合わせに基づいて、ID「X3Y3」、「X1Y1」、「X4Y4」および「X1Y2」で示すテストケースとなる。
このように、図8から図16の例では、得られる結合テストケースが条件網羅を満たす最少セットである4つとなる。なお、図8から図16の例では、総当りでは16個の結合テストケースとなる。また、上述の選択済条件節集合を用いる場合では、4つの結合テストケースとなり、図8から図16の例と同数となる。
図16の例は、第8制約式の充足解が算出できた場合であるが、充足解が算出できない場合もある。図17は、結合テストケースの解の一例を示す図である。図17に示すように、充足解50は、第8制約式の充足解が算出できた場合の充足解の一例である。出力54は、SMTソルバであるYicesで充足解がない場合のメッセージの一例である。なお、充足解がない場合とは、例えば、図16に示す組み合わせ表24において、条件節フラグ列のうち、1つ以上の列が全て「F」である場合が挙げられる。つまり、当該場合においては、全て「F」の条件節フラグ列の条件節は、いずれのテストケースにおいてもテストされないことになる。
次に、実施例のテストケース生成装置100の動作について説明する。図18は、実施例のテストケース生成処理の一例を示すフローチャートである。
変換部131は、入力部111からモジュールごとのテストケースが入力されると、各テストケースを有限サイズの組み合わせ表と、組み合わせ表のデータ項目間の制約式とに変換する変換処理を実行する(ステップS1)。ここで、図19を用いて変換処理について説明する。図19は、変換処理の一例を示すフローチャートである。変換部131は、モジュールごとのテストケースから変数を抽出する(ステップS11)。また、変換部131は、モジュールごとのテストケースから条件節を抽出する(ステップS12)。
変換部131は、抽出した変数、条件節、モジュール名、および、組み合わせ表サイズの初期値または更新値に基づいて、組み合わせ表を表現する第1制約式を生成する(ステップS13)。変換部131は、モジュールごとのテストケースの各行について、変数と条件節フラグとの対応付けを行う第2制約式を生成する(ステップS14)。変換部131は、モジュールごとのテストケースIDとcase関数で定義した制約とを紐付ける第3制約式を生成する(ステップS15)。
変換部131は、テストケース割り当て後の残りの条件節フラグを決定する第4制約式を生成する(ステップS16)。変換部131は、組み合わせ表の行に第2から第4制約式の制約を受けることを示す第5制約式を生成する(ステップS17)。変換部131は、条件節フラグ列に関する第6および第7制約式を生成する(ステップS18)。変換部131は、上述の第1から第7制約式を全て満たす組み合わせ表の解が存在することを宣言する第8制約式を生成する(ステップS19)。すなわち、変換部131は、複数モジュールの各テストケースを第8制約式に変換する。変換部131は、生成した第8制約式を算出部132に出力する。これにより、テストケース生成装置100は、複数モジュールの各テストケースを第8制約式に変換できる。
図18の説明に戻って、算出部132は、変換部131から第8制約式が入力されると、SMTソルバを用いて第8制約式の解を算出する(ステップS2)。算出部132は、算出の結果、充足解が存在するか否かを判定する(ステップS3)。算出部132は、充足解が存在する場合には(ステップS3:肯定)、充足解を現在解として記憶部120に記憶する(ステップS4)。また、算出部132は、組み合わせ表サイズを1減らして更新値とし(ステップS5)、ステップS1に戻る。
算出部132は、充足解が存在しない場合には(ステップS3:否定)、記憶部120を参照し、現在解が存在するか否かを判定する(ステップS6)。算出部132は、現在解が存在する場合には(ステップS6:肯定)、結合テストケースを生成する生成指示を生成部133に出力する。生成部133は、算出部132から生成指示が入力されると、記憶部120を参照し、現在解に基づいて結合テストケースを生成する(ステップS7)。生成部133は、生成した結合テストケースを出力部112に出力する(ステップS8)。算出部132は、現在解が存在しない場合には(ステップS6:否定)、組み合わせ表サイズの初期値を増やすことを促すメッセージを表示部113に出力する(ステップS9)。これにより、テストケース生成装置100は、条件網羅を満たす最少の結合テストケースを得ることができる。すなわち、条件網羅を満たす最少の結合テストケースを用いた結合テストの実施工数を削減できる。
このように、テストケース生成装置100は、複数のモジュールごとに抽出したテストケースを組み合わせる際に、各テストケースを有限サイズの組み合わせ表と、組み合わせ表のデータ項目間の制約式とに変換する。テストケース生成装置100は、制約式の解を算出する。テストケース生成装置100は、算出した解に基づいて結合テストのテストケースを生成する。その結果、条件網羅を満たす最少の結合テストケースを得ることができる。
また、テストケース生成装置100は、SMTソルバを用いて制約式の解を算出する。その結果、条件網羅を満たす最少の結合テストケースを得ることができる。
また、テストケース生成装置100は、組み合わせ表のサイズを小さくしながら制約式の解を繰り返し算出する。その結果、条件網羅を満たす最少の結合テストケースを得ることができる。
また、テストケース生成装置100は、制約式の解が充足解でない場合には、算出された1サイクル前の充足解に基づいて結合テストのテストケースを生成する。その結果、条件網羅を満たす最少の結合テストケースを得ることができる。
また、テストケース生成装置100では、制約式は、全てのデータ項目に、それぞれ真が1つ以上存在する制約条件を含む。その結果、条件網羅を満たす最少の結合テストケースを得ることができる。
なお、上記実施例では、各制約式は、SMTソルバの1つであるYicesの書式で記述しているが、これに限定されない。各制約式は、例えば、他のSMTソルバの書式で記述されてもよい。
また、上記実施例では、SMTソルバを用いて第8制約式の解を算出した結果、充足解が存在せず、現在解も存在しない場合には、組み合わせ表サイズの初期値を増やすことを促すメッセージを出力して処理を終了したが、これに限定されない。例えば、当該場合には、組み合わせ表サイズを1増加させて更新値とし、再度、変換処理を行うようにしてもよい。これにより、組み合わせ表サイズの初期値が適切な値でなかった場合であっても、条件網羅を満たす最少の結合テストケースを得ることができる。
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、算出部132と生成部133とを統合してもよい。また、図示した各処理は、上記の順番に限定されるものではなく、処理内容を矛盾させない範囲において、同時に実施してもよく、順序を入れ替えて実施してもよい。
さらに、各装置で行われる各種処理機能は、CPU(またはMPU、MCU(Micro Controller Unit)等のマイクロ・コンピュータ)上で、その全部または任意の一部を実行するようにしてもよい。また、各種処理機能は、CPU(またはMPU、MCU等のマイクロ・コンピュータ)で解析実行されるプログラム上、またはワイヤードロジックによるハードウェア上で、その全部または任意の一部を実行するようにしてもよいことは言うまでもない。
ところで、上記の実施例で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することで実現できる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図20は、テストケース生成プログラムを実行するコンピュータの一例を示す図である。
図20に示すように、コンピュータ200は、各種演算処理を実行するCPU201と、データ入力を受け付ける入力装置202と、モニタ203とを有する。また、コンピュータ200は、記憶媒体からプログラム等を読み取る媒体読取装置204と、各種装置と接続するためのインタフェース装置205と、他の情報処理装置等と有線または無線により接続するための通信装置206とを有する。また、コンピュータ200は、各種情報を一時記憶するRAM207と、ハードディスク装置208とを有する。また、各装置201〜208は、バス209に接続される。
ハードディスク装置208には、図1に示した変換部131、算出部132および生成部133の各処理部と同様の機能を有するテストケース生成プログラムが記憶される。また、ハードディスク装置208には、組み合わせ表記憶部121、および、テストケース生成プログラムを実現するための各種データが記憶される。入力装置202は、例えば、コンピュータ200の管理者から操作情報、管理情報等の各種情報の入力を受け付ける。モニタ203は、例えば、コンピュータ200の管理者に対して表示画面、管理情報の画面および各種画面を表示する。媒体読取装置204は、例えば、図1に示した入力部111と同等の機能を有し、記録媒体に記録された各モジュールのテストケースを読み取る。また、媒体読取装置204は、媒体書込装置と一体化され、図1に示した出力部112と同等の機能を有し、結合テストケースを記録媒体に書き込む。インタフェース装置205は、例えば印刷装置等が接続される。通信装置206は、例えば、図1に示した入力部111および出力部112の一例である通信部と同様の機能を有し図示しないネットワークと接続される。通信装置206は、例えば、他の情報処理装置から各モジュールのテストケースを受信し、他の情報処理装置に結合テストケースを送信するようにしてもよい。
CPU201は、ハードディスク装置208に記憶された各プログラムを読み出して、RAM207に展開して実行することで、各種の処理を行う。また、これらのプログラムは、コンピュータ200を図1に示した変換部131、算出部132および生成部133として機能させることができる。
なお、上記のテストケース生成プログラムは、必ずしもハードディスク装置208に記憶されている必要はない。例えば、コンピュータ200が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ200が読み出して実行するようにしてもよい。コンピュータ200が読み取り可能な記憶媒体は、例えば、CD−ROMやDVDディスク、USBメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、LAN等に接続された装置にこのテストケース生成プログラムを記憶させておき、コンピュータ200がこれらからテストケース生成プログラムを読み出して実行するようにしてもよい。
以上、本実施例を含む実施の形態に関し、さらに以下の付記を開示する。
(付記1)複数のモジュールごとに抽出したテストケースを組み合わせる際に、前記各テストケースを有限サイズの組み合わせ表と、前記組み合わせ表のデータ項目間の制約式とに変換し、
前記制約式の解を算出し、
算出した解に基づいて結合テストのテストケースを生成する
処理をコンピュータが実行することを特徴とするテストケース生成方法。
(付記2)前記算出する処理は、SMTソルバを用いて前記制約式の解を算出する、ことを特徴とする付記1に記載のテストケース生成方法。
(付記3)前記算出する処理は、前記組み合わせ表のサイズを小さくしながら前記制約式の解を繰り返し算出する、ことを特徴とする付記1または2に記載のテストケース生成方法。
(付記4)前記生成する処理は、前記制約式の解が充足解でない場合には、算出された1サイクル前の充足解に基づいて結合テストのテストケースを生成する、ことを特徴とする付記3に記載のテストケース生成方法。
(付記5)前記制約式は、全ての前記データ項目に、それぞれ真が1つ以上存在する制約条件を含むことを特徴とする付記1〜4のいずれか1つに記載のテストケース生成方法。
(付記6)複数のモジュールごとに抽出したテストケースを組み合わせる際に、前記各テストケースを有限サイズの組み合わせ表と、前記組み合わせ表のデータ項目間の制約式とに変換し、
前記制約式の解を算出し、
算出した解に基づいて結合テストのテストケースを生成する
処理をコンピュータに実行させることを特徴とするテストケース生成プログラム。
(付記7)前記算出する処理は、SMTソルバを用いて前記制約式の解を算出する、ことを特徴とする付記6に記載のテストケース生成プログラム。
(付記8)前記算出する処理は、前記組み合わせ表のサイズを小さくしながら前記制約式の解を繰り返し算出する、ことを特徴とする付記6または7に記載のテストケース生成プログラム。
(付記9)前記生成する処理は、前記制約式の解が充足解でない場合には、算出された1サイクル前の充足解に基づいて結合テストのテストケースを生成する、ことを特徴とする付記8に記載のテストケース生成プログラム。
(付記10)前記制約式は、全ての前記データ項目に、それぞれ真が1つ以上存在する制約条件を含むことを特徴とする付記6〜9のいずれか1つに記載のテストケース生成プログラム。
(付記11)複数のモジュールごとに抽出したテストケースを組み合わせる際に、前記各テストケースを有限サイズの組み合わせ表と、前記組み合わせ表のデータ項目間の制約式とに変換する変換部と、
前記制約式の解を算出する算出部と、
算出した解に基づいて結合テストのテストケースを生成する生成部と、
を有することを特徴とするテストケース生成装置。
(付記12)前記算出部は、SMTソルバを用いて前記制約式の解を算出する、ことを特徴とする付記11に記載のテストケース生成装置。
(付記13)前記算出部は、前記組み合わせ表のサイズを小さくしながら前記制約式の解を繰り返し算出する、ことを特徴とする付記11または12に記載のテストケース生成装置。
(付記14)前記生成部は、前記制約式の解が充足解でない場合には、算出された1サイクル前の充足解に基づいて結合テストのテストケースを生成する、ことを特徴とする付記13に記載のテストケース生成装置。
(付記15)前記制約式は、全ての前記データ項目に、それぞれ真が1つ以上存在する制約条件を含むことを特徴とする付記11〜14のいずれか1つに記載のテストケース生成装置。