(57)【要約】      （修正有）【課題】効率的に統合テスト仕様書を生成する。【解決手段】テストケース組合せ取得部２２による、複数のテストケース仕様書に含まれるテストケースの組合せを取得する処理と、充足可能判定部２４による、取得したテストケースの組合せが充足可能な組合せか否かを判定する処理を繰り返し実行する。テストケース組合せ取得部２２は、判定する処理で充足可能でない組合せと判定されたテストケースの組合せに含まれ、互いの項目が充足可能性を満たさない二項目を有するテストケースの組合せを除外して取得する。後処理部２６は、充足可能な組合せと判定されたテストケースの組合せを出力することで、複数のテストケース仕様書を結合する。【選択図】図６
2017004216.tif 000002
【特許請求の範囲】
【請求項１】
複数のテストケース仕様書を結合するテストケース仕様書結合方法であって、
前記複数のテストケース仕様書に含まれるテストケースの組合せを取得する処理と、当該取得したテストケースの組合せが充足可能な組合せか否かを判定する処理とを繰り返し、
充足可能な組合せと判定された前記テストケースの組合せを出力する
処理をコンピュータが実行し、
前記テストケースの組合せを取得する処理は、前記判定する処理で充足可能でない組合せと判定されたテストケースの組合せに含まれ、互いの項目が充足可能性を満たさない二項目を有するテストケースの組合せを除外して前記取得を行う
ことを特徴とするテストケース仕様書結合方法。
【請求項２】
前記判定する処理による判定結果をもとに、充足可能でない組合せと判定された前記テストケースの組合せに含まれる、互いの項目が充足可能性を満たさない二項目を示す第１の項目情報を蓄積する処理をさらにコンピュータが実行し、
前記テストケースの組合せを取得する処理は、前記蓄積された第１の項目情報をもとに、互いの項目が充足可能性を満たさない二項目を有するテストケースの組合せを除外する
ことを特徴とする請求項１に記載のテストケース仕様書結合方法。
【請求項３】
前記蓄積する処理は、前記判定する処理による判定結果をもとに、充足可能な組合せと判定された前記テストケースの組合せに含まれる、互いの項目が充足可能性を満たす二項目を示す第２の項目情報を蓄積し、
前記判定する処理は、前記蓄積された第１の項目情報および第２の項目情報をもとに、取得したテストケースの組合せが充足可能な組合せか否かを判定する
ことを特徴とする請求項２に記載のテストケース仕様書結合方法。
【請求項４】
複数のテストケース仕様書を結合するテストケース仕様書結合プログラムであって、
前記複数のテストケース仕様書に含まれるテストケースの組合せを取得する処理と、当該取得したテストケースの組合せが充足可能な組合せか否かを判定する処理とを繰り返し、
充足可能な組合せと判定された前記テストケースの組合せを出力する
処理をコンピュータに実行させ、
前記テストケースの組合せを取得する処理は、前記判定する処理で充足可能でないと判定されたテストケースの組合せに含まれる、充足可能性を満たさない２つの項目を含むテストケースの組合せを除外して前記取得を行う
ことを特徴とするテストケース仕様書結合プログラム。
【請求項５】
複数のテストケース仕様書を結合するテストケース仕様書結合装置であって、
前記複数のテストケース仕様書に含まれるテストケースの組合せを取得する取得部と、
前記取得したテストケースの組合せが充足可能な組合せか否かを判定する判定部と、
前記取得部によるテストケースの組合せの取得と、前記判定部による判定とを繰り返して充足可能な組合せと判定された前記テストケースの組合せを出力する処理部とを有し、
前記取得部は、前記判定部で充足可能でないと判定されたテストケースの組合せに含まれる、充足可能性を満たさない２つの項目を含むテストケースの組合せを除外して前記取得を行う
ことを特徴とするテストケース仕様書結合装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、テストケース仕様書結合方法、テストケース仕様書結合プログラムおよびテストケース仕様書結合装置に関する。
【背景技術】
【０００２】
従来、統合テストにおいて、複数のシステム（SS:System  Specification）仕様書それぞれからテストケース仕様書を生成し、これらのテストケース仕様書を結合して１つの統合テスト（IT:Integration  Test）仕様書を生成する技術が知られている。このテストケース仕様書の結合においては、網羅性向上のため、全てのテストケース仕様書に含まれるテストケースの全組合せについて、充足可能性を確認する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１９０２０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記の従来技術では、充足可能性を確認するテストケースの組合せの数が膨大になる（爆発する）場合があり、効率的に統合テスト仕様書を生成することが困難である。
【０００５】
１つの側面では、効率的に統合テスト仕様書を生成することを可能とするテストケース仕様書結合方法、テストケース仕様書結合プログラムおよびテストケース仕様書結合装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
第１の案では、複数のテストケース仕様書を結合するテストケース仕様書結合方法であって、複数のテストケース仕様書に含まれるテストケースの組合せを取得する処理と、取得したテストケースの組合せが充足可能な組合せか否かを判定する処理とを繰り返す処理をコンピュータが実行する。また、充足可能な組合せと判定されたテストケースの組合せを出力する処理をコンピュータが実行する。テストケースの組合せを取得する処理は、判定する処理で充足可能でない組合せと判定されたテストケースの組合せに含まれ、互いの項目が充足可能性を満たさない二項目を有するテストケースの組合せを除外して取得を行う。
【発明の効果】
【０００７】
本発明の１実施態様によれば、効率的に統合テスト仕様書を生成できる。
【図面の簡単な説明】
【０００８】
【図１】図１は、一実施形態にかかる統合テスト装置を説明する説明図である。
【図２】図２は、一実施形態にかかる統合テスト装置のハードウェア構成を例示するブロック図である。
【図３】図３は、一実施形態にかかる統合テスト装置の機能構成を例示するブロック図である。
【図４】図４は、ＡＴＭの利用シナリオの統合テスト内容を説明する説明図である。
【図５】図５は、統合テストを実行するためのテストケース仕様書の一例を説明する説明図である。
【図６】図６は、テストケース仕様書結合部の機能構成を例示するブロック図である。
【図７】図７は、一実施形態にかかる統合テスト装置の動作を例示するフローチャートである。
【図８】図８は、テストケース組み合わせ取得の動作を例示するフローチャートである。
【図９】図９は、テストケース組み合わせ取得の動作を例示する図８より続くフローチャートである。
【図１０】図１０は、テストケース仕様書の一例を説明する説明図である。
【図１１】図１１は、動作例（Ｓ４０、Ｓ４１）を説明する説明図である。
【図１２】図１２は、動作例（Ｓ４２、Ｓ４３）を説明する説明図である。
【図１３】図１３は、動作例（Ｓ４４、Ｓ４５）を説明する説明図である。
【図１４】図１４は、動作例（Ｓ４６、Ｓ４７）を説明する説明図である。
【図１５】図１５は、動作例（Ｓ４８、Ｓ４９）を説明する説明図である。
【図１６】図１６は、動作例（Ｓ５０、Ｓ５１）を説明する説明図である。
【図１７】図１７は、動作例（Ｓ５２、Ｓ５３）を説明する説明図である。
【図１８】図１８は、動作例（Ｓ５４、Ｓ５５）を説明する説明図である。
【図１９】図１９は、テストケース組み合わせの出力を説明する説明図である。
【図２０】図２０は、比較例における正常・異常ケースへの分割を説明する説明図である。
【図２１】図２１は、比較例におけるテストケース組み合わせを説明する説明図である。
【図２２】図２２は、比較例における動作（Ｓ６０〜Ｓ６２）を説明する説明図である。
【図２３】図２３は、比較例における動作（Ｓ６３〜Ｓ６６）を説明する説明図である。
【図２４】図２４は、比較例における動作（Ｓ６７、Ｓ６８）を説明する説明図である。
【図２５】図２５は、比較例における動作（Ｓ７０〜Ｓ７２）を説明する説明図である。
【図２６】図２６は、比較例における動作（Ｓ７３、Ｓ７４）を説明する説明図である。
【図２７】図２７は、比較例における動作（Ｓ７５〜Ｓ７７）を説明する説明図である。
【図２８】図２８は、比較例におけるテストケース組み合わせの出力を説明する説明図である。
【図２９】図２９は、比較例におけるＵＮＳＡＴとなる組み合わせの繰り返しを説明する説明図である。
【発明を実施するための形態】
【０００９】
以下、図面を参照して、実施形態にかかるテストケース仕様書結合方法、テストケース仕様書結合プログラムおよびテストケース仕様書結合装置を説明する。実施形態において同一の機能を有する構成には同一の符号を付し、重複する説明は省略する。なお、以下の実施形態で説明するテストケース仕様書結合方法、テストケース仕様書結合プログラムおよびテストケース仕様書結合装置は、一例を示すに過ぎず、実施形態を限定するものではない。また、以下の各実施形態は、矛盾しない範囲内で適宜組みあわせてもよい。
【００１０】
図１は、一実施形態にかかる統合テスト装置１０を説明する説明図である。図１に示すように、テストケース仕様書結合装置としての統合テスト装置１０は、例えば金融システム向けに、複数のＳＳ仕様書１から１つのＩＴ仕様書２を自動生成する装置である。
【００１１】
図２は、一実施形態にかかる統合テスト装置１０のハードウェア構成を例示するブロック図である。図２に示すように、統合テスト装置１０は、ＣＰＵ（Central  Processing  Unit）９０、ＲＯＭ（Read  Only  Memory）９２、ＲＡＭ（Random  Access  Memory）９４を有する。また、統合テスト装置１０は、記憶部（ここではＨＤＤ（Hard  Disk  Drive））９６、ネットワークインタフェース９７、表示部９３、入力部９５及び可搬型記憶媒体用ドライブ９９を有する。これら統合テスト装置１０の構成各部は、バス９８に接続されている。統合テスト装置１０では、ＲＯＭ９２あるいはＨＤＤ９６に格納されているプログラム（テストケース仕様書結合プログラムを含む）或いは可搬型記憶媒体用ドライブ９９が可搬型記憶媒体９１から読み取ったプログラム（テストケース仕様書結合プログラムを含む）をＣＰＵ９０が実行することにより、各機能構成（図３参照）を実現する。
【００１２】
なお、プログラムについては、必ずしも最初からＲＯＭ９２、ＨＤＤ９６、可搬型記憶媒体９１に記憶させておく必要はない。例えば、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介して統合テスト装置１０に接続される他のコンピュータまたはサーバ装置などに各プログラムを記憶させておき、統合テスト装置１０がこれらから各プログラムを取得して実行するようにしてもよい。
【００１３】
図３は、一実施形態にかかる統合テスト装置１０の機能構成を例示するブロック図である。図３に示すように、統合テスト装置１０は、ＣＰＵ９０がプログラムを実行することで、プログラム変換部１２、テストケース仕様書生成部１４、テストケース仕様書結合部１６およびＩＴ仕様書変換部１８としての機能が実現されている。
【００１４】
プログラム変換部１２は、ＳＳ仕様書（例えば表データ）をそれぞれJava（登録商標）プログラムに変換する。
【００１５】
テストケース仕様書生成部１４は、シンボリック実行技術を用いてJava（登録商標）プログラムを解析し、テストケース仕様書（XMLデータ）を生成する。
【００１６】
テストケース仕様書結合部１６は、全てのテストケース仕様書に含まれるテストケースの組合せのうち充足可能な組合せを抽出し、結合したテストケース仕様書として出力する。なお、テストケース仕様書結合部１６の詳細については、後述する。
【００１７】
ＩＴ仕様書変換部１８は、結合したテストケース仕様書（XMLデータ）を、人間が理解可能なＩＴ仕様書（例えば表データ）に変換する。
【００１８】
ここで、本実施形態におけるテストケース仕様書の一例について、図４、図５を参照して説明する。図４は、ＡＴＭ（Automated  Teller  Machine）の利用シナリオの統合テスト内容を説明する説明図である。図５は、図４の統合テストを実行するためのテストケース仕様書の一例を説明する説明図である。
【００１９】
図４に示すように、統合テストのチェック項目は６種類（通帳、カード、取引、暗証番号、金額、エラー）あり、各チェック項目に対してあり得るチェック内容が定まっている。また、図５に示すように、本例では、テストケース仕様書は３つ（Ｘ，Ｙ，Ｚ）となり、ＸとＹはチェック系の仕様書で、Ｚは更新系の仕様書である。ここで、チェック系仕様書とは、システム状態やユーザ入力の様々な条件（項目とも呼ぶ）をチェックし、チェック結果によって正常ケースと異常ケースに分割するものである。一方、更新系仕様書は、システム状態やユーザ入力の様々な条件をチェックし、チェック結果によってシステム状態やユーザ入力値を更新する物である。また、各テストケース仕様書には順序が予め決められており、本例では、Ｘ→Ｙ→Ｚとなっている。更に、テストケース仕様書Ｘは９件のテストケースを有し、テストケース仕様書Ｙは４件のテストケースを有し、テストケース仕様書Ｚは４件のテストケースを有する。
【００２０】
例えば、テストケース仕様書Ｘの場合、ＩＤ＝Ｘ０１、Ｘ０２では、通帳記帳において、カードの有無を問わず、通帳が挿入されていなければエラーになることが示されている。また、ＩＤ＝Ｘ０３〜Ｘ０６では、預入れにおいて、カード及び通帳のいずれか又は両方でも預入れが可能だが、カード及び通帳の両方がなければエラーになることが示されている。また、ＩＤ＝Ｘ０７〜Ｘ０９では、引き出しの場合、通帳の有無を問わず、カードが挿入されていなければエラーとなり、暗証番号が正しくない場合にもエラーとなることが示されている。
【００２１】
また、テストケース仕様書Ｙの場合、ＩＤ＝Ｙ０１、Ｙ０２では、引き出しの場合に、金額が５０万円を超えるとエラーになることが示されている。また、ＩＤ＝Ｙ０３、Ｙ０４では、預入れの場合に、１００万円を超えるとエラーになることが示されている。
【００２２】
また、テストケース仕様書Ｚの場合、ＩＤ＝Ｚ０１〜Ｚ０４では、条件によって更新処理が異なることが示されている。
【００２３】
図６は、テストケース仕様書結合部１６の機能構成を例示するブロック図である。図６に示すように、テストケース仕様書結合部１６は、前処理部２０、テストケース組合せ取得部２２、充足可能性判定部２４、後処理部２６および記憶部２８を有する。
【００２４】
前処理部２０は、テストケース仕様書生成部１４から出力されたテストケース仕様書（XMLデータ）を読み込み、条件を解析する。また、前処理部２０は、全てのテストケースに含まれる条件節の集合（全条件節集合３１）を作成する。例えば、図５の例では、テストケース仕様書Ｘ〜Ｚにおける各ＩＤにおける条件節（ＩＤ＝Ｘ０１の｛通帳＝無、取引＝通帳記帳、エラー＝０｝、ＩＤ＝Ｘ０２の｛通帳＝有、取引＝通帳記帳、エラー＝１｝…）の和集合が全条件節集合３１として作成され、記憶部２８に格納される。
【００２５】
テストケース組合せ取得部２２は、テストケースの組合せを１組ずつ作成し、その組合せが所定条件を満たす場合に、充足可能性判定部２４で充足可能性判定を行う組合せとして取得する。具体的には、テストケース組合せ取得部２２は、作成したテストケースの組合せの中から、充足可能性判定部２４において充足可能でない組合せと判定されたテストケースの組合せに含まれ、互いの項目が充足可能性を満たさない二項目を有するテストケースの組合せを除外した上で、組合せの取得を行う。
【００２６】
充足可能性判定部２４は、テストケース組合せ取得部２２が取得したテストケースの組合せをＳＡＴソルバ（Satisfiability  Solver）実行用数式コードに変換する。また、充足可能性判定部２４は、ＳＡＴソルバ実行用数式コードを入力とし、ＳＡＴソルバを実行して、充足可能（ＳＡＴ）となった組合せを抽出する。ここで、ＳＡＴソルバは、Yicesなどであり、与えられた条件や式を解析して充足可能性を判定する。この場合、ＳＡＴソルバは、与えられた条件や式を満たす解釈やモデル、値セットが１つでも見つかった場合に充足可能（ＳＡＴ）を出力し、見つからなかった場合に充足不可能（ＵＮＳＡＴ）を出力する。
【００２７】
後処理部２６は、テストケースのＩＤを整理するなどして、充足可能なテストケースの組合せを正規化し、正規化したテストケースの組合せをXMLデータに変換して、ＩＴ仕様書変換部１８に出力する。
【００２８】
記憶部２８は、テストケース組合せ取得部２２、テストケース組合せ取得部２２および充足可能性判定部２４で更新・参照される集合３０、ＳＡＴ二項関係情報３４およびＵＮＳＡＴ二項関係情報３５等の各種情報を記憶する。集合３０は、処理で用いる全条件節集合３１、選択済条件節集合３２、選択済組合せＩＤ集合３３等の各集合である。全条件節集合３１は、全てのテストケースに含まれる条件節の集合である。選択済条件節集合３２は、テストケース組合せ取得部２２が取得したテストケースの組合せに含まれる条件節を選択済の条件節として随時格納する集合である。選択済組合せＩＤ集合３３は、テストケース組合せ取得部２２が取得したテストケースの組合せを示すＩＤ（図５に例示したＩＤ＝Ｘ０１、Ｙ０１…など）を選択済のＩＤとして随時格納する集合である。
【００２９】
ＳＡＴ二項関係情報３４は、充足可能性判定部２４が充足可能性を判定した結果、充足可能（ＳＡＴ）と判定されたテストケースの組合せに含まれる、互いの項目が充足可能性を満たす二項目を示す情報である。ＵＮＳＡＴ二項関係情報３５は、充足可能性判定部２４が充足可能性を判定した結果、充足不可能（ＵＮＳＡＴ）と判定されたテストケースに含まれる、互いの項目が充足可能性を満たさない二項目を示す情報である。ＳＡＴ二項関係情報３４およびＵＮＳＡＴ二項関係情報３５には、二項目を示すＩＤ等の情報が格納される。充足可能性判定部２４は、ＳＡＴ二項関係情報３４を参照することで、互いの項目が充足可能性を満たさない二項目を特定し、この二項目を有するテストケースの組合せを除外する。
【００３０】
図７は、一実施形態にかかる統合テスト装置１０の動作を例示するフローチャートである。図７に示す処理の前提として、例えば、図５に示すようなテストケース仕様書がテストケース仕様書生成部１４から入力されるものとする。具体的には、テストケース仕様書は、Ｘ、Ｙ、Ｚの３種類があり、Ｘ、Ｙがチェック系仕様書で、Ｚが更新系仕様書となっている。また、テストケース仕様書の順序は、Ｘ→Ｙ→Ｚの順となっており、生成されたテストケース件数（テストケース仕様書が含むテストケースの数）は、Ｘが４、Ｙが４、Ｚが３となっている。
【００３１】
また、前処理部２０は、図７の処理の前に、全てのテストケースに含まれる条件節の和集合を全条件節集合３１とする。また、図７の処理が開始される時点では、選択済条件節集合３２および選択済組合せＩＤ集合３３を空にしておく。なお、選択済条件節集合３２には、テストケース組合せ取得部２２が取得したテストケースの組合せに含まれる条件節が随時格納される。また、選択済組合せＩＤ集合３３には、テストケース組合せ取得部２２が取得したテストケースの組合せを示すＩＤが随時格納される。
【００３２】
図７に示すように、処理が開始されると、テストケース組合せ取得部２２は、全条件節集合３１および選択済条件節集合３２を参照し、選択済条件節集合３２が全条件節集合３１に一致するか否かを判定する（Ｓ１）。一致する場合（Ｓ１：ＹＥＳ）、テストケース組合せ取得部２２は、全てのテストケースの組合せを取得済み（条件を網羅した）ことから、処理を終了する。例えば、処理を開始した直後のＳ１では、全条件節集合３１に対して選択済条件節集合３２は空であることから、一致しないものと判定される。
【００３３】
一致しない場合（Ｓ１：ＮＯ）、テストケース組合せ取得部２２は、テストケース組合せを取得する処理を行い（Ｓ２）、選択したテストケースの組合せを示すＩＤを選択済組合せＩＤ集合３３へ追加する（Ｓ３）。例えば、図５に示すようなＸ、Ｙ、Ｚのテストケース仕様書からテストケースを組み合わせて取得する場合には、｛Ｘ０１、Ｙ０１、Ｚ０１｝などのテストケースの組合せを示すＩＤの組が選択済組合せＩＤ集合３３へ追加される。
【００３４】
ここで、テストケース組合せを取得する処理（Ｓ２）の詳細について説明する。図８は、テストケース組み合わせ取得の動作を例示するフローチャートである。図９は、テストケース組み合わせ取得の動作を例示する図８より続くフローチャートである。なお、図８および図９におけるｋは、仕様書の総数を示す値である。また、ｉは、仕様書の中で処理対象として選択中の仕様書を示す値（ｉ番目）である。なお、ｉの初期値は１とする。
【００３５】
図８に示すように、処理が開始されると、テストケース組合せ取得部２２は、選択中の仕様書を示すｉの値が１であるか否かを判定する（Ｓ１０）。ここで、ｉの値が１である場合（Ｓ１０：ＹＥＳ）、テストケース組合せ取得部２２はＳ１１へ処理を進める。また、ｉの値が１でない場合（Ｓ１０：ＮＯ）、テストケース組合せ取得部２２はＳ１７へ処理を進める。
【００３６】
Ｓ１１において、テストケース組合せ取得部２２は、テストケース仕様書生成部１４から入力されるテストケース仕様書の全テストケースの中で、選択済組合せＩＤ集合３３に含まれるテストケースの組合せを除外して選択対象の組合せを作成する（Ｓ１１）。
【００３７】
次いで、テストケース組合せ取得部２２は、作成した選択対象の組み合わせが空であるか否かを判定する（Ｓ１２）。選択済組合せＩＤ集合３３に含まれるテストケースの組合せを除外した結果、作成した選択対象の組み合わせが空である場合（Ｓ１２：ＹＥＳ）には、全テストケースの組み合わせを網羅したことから、テストケース組合せ取得部２２は処理を終了する。
【００３８】
作成した選択対象の組み合わせが空でない場合（Ｓ１２：ＮＯ）、テストケース組合せ取得部２２は、選択済の条件節についての選択済条件節集合３２を参照し、選択対象の組み合わせから未選択の条件節が最多となるテストケースを選択する（Ｓ１３）。
【００３９】
次いで、テストケース組合せ取得部２２は、テストケースにおけるエラーの値をもとに、正常ケースまたは異常ケースの判定を行う（Ｓ１４）。例えば、エラーの値が０である場合は正常ケースとし、エラーの値が１である場合は異常ケースとする場合には、エラー＝０のものを正常ケースと判定し、エラー＝１のものを異常ケースと判定する。
【００４０】
正常ケースである場合（Ｓ１４：正常ケース）、テストケース組合せ取得部２２は、選択したテストケースを示すＩＤを選択済組合せＩＤ集合３３へ追加し（Ｓ１５）、ｉの値をインクリメント（ｉ：＝ｉ＋１）して（Ｓ１６）、Ｓ１０へ処理を戻す。また、異常ケースである場合（Ｓ１４：異常ケース）、テストケース組合せ取得部２２は、Ｓ３７へ処理を進め、１〜ｋ番目のテストケース仕様書において選択したテストケース組み合わせを出力する（Ｓ３７）。すなわち、異常ケースである場合には、次の手順のテストケース仕様書に進むことがないことから、Ｓ１０へ戻るループから直に出るようにする。このＳ３７で出力されたテストケース組み合わせが、Ｓ２において取得される組み合わせである。
【００４１】
Ｓ１７において、テストケース組合せ取得部２２は、選択中の仕様書を示すｉの値が１＜ｉ＜ｋであるか否かを判定する（Ｓ１７）。ｉの値が１＜ｉ＜ｋでない場合（Ｓ１７：ＹＥＳ）は、最後のテストケース仕様書まで正常なテストケースを選択し、テストケースの組み合わせを取得した場合である。このｉの値が１＜ｉ＜ｋでない場合（Ｓ１７：ＮＯ）、テストケース組合せ取得部２２は、Ｓ３０へ処理を進める。
【００４２】
ｉの値が１＜ｉ＜ｋである場合（Ｓ１７：ＹＥＳ）、テストケース組合せ取得部２２は、Ｓ１１と同様、テストケース仕様書生成部１４から入力されるテストケース仕様書の全テストケースの中で、選択済組合せＩＤ集合３３に含まれるテストケースの組合せを除外して選択対象の組合せを作成する（Ｓ１８）。
【００４３】
次いで、テストケース組合せ取得部２２は、ＵＮＳＡＴ二項関係情報３５を参照し、作成された選択対象のテストケースの組合せの中からＵＮＳＡＴ（充足不可能）と判定されている二項目を有する組み合わせを除外する。具体的には、テストケース組合せ取得部２２は、１からｉ−１番目に選択済ＩＤと充足不可能（ＵＮＳＡＴ）な二項関係になるｉ番目のＩＤを選択対象の組み合わせから除外する（Ｓ１９）。
【００４４】
次いで、テストケース組合せ取得部２２は、Ｓ１２と同様、選択対象の組み合わせが空であるか否かを判定する（Ｓ２０）。選択対象の組み合わせが空である場合（Ｓ２０：ＹＥＳ）、テストケース組合せ取得部２２は、選択済組合せＩＤ集合３３をクリアし（Ｓ２１）、ｉの値をデクリメント（ｉ：＝ｉ−１）して（Ｓ２２）、Ｓ１０へ処理を戻す。
【００４５】
作成した選択対象の組み合わせが空でない場合（Ｓ２０：ＮＯ）、テストケース組合せ取得部２２は、Ｓ１３と同様、選択対象の組み合わせから未選択の条件節が最多となるテストケースを選択する（Ｓ２３）。
【００４６】
次いで、テストケース組合せ取得部２２は、Ｓ１４と同様、テストケースにおけるエラーの値をもとに、正常ケースまたは異常ケースの判定を行う（Ｓ２４）。
【００４７】
正常ケースである場合（Ｓ２４：正常ケース）、テストケース組合せ取得部２２は、選択したテストケースを示すＩＤを選択済組合せＩＤ集合３３へ追加し（Ｓ２５）、ｉの値をインクリメント（ｉ：＝ｉ＋１）して（Ｓ２６）、Ｓ１０へ処理を戻す。また、異常ケースである場合（Ｓ２４：異常ケース）、テストケース組合せ取得部２２は、Ｓ３７へ処理を進め、１〜ｋ番目のテストケース仕様書において選択したテストケース組み合わせを出力する（Ｓ３７）。
【００４８】
Ｓ３０において、テストケース組合せ取得部２２は、Ｓ１１、Ｓ１８と同様、テストケース仕様書生成部１４から入力されるテストケース仕様書の全テストケースの中で、選択済組合せＩＤ集合３３に含まれるテストケースの組合せを除外して選択対象の組合せを作成する（Ｓ３０）。
【００４９】
次いで、テストケース組合せ取得部２２は、Ｓ１９と同様、ＵＮＳＡＴ二項関係情報３５を参照し、作成された選択対象のテストケースの組合せの中からＵＮＳＡＴ（充足不可能）と判定されている二項目を有する組み合わせを除外する。具体的には、テストケース組合せ取得部２２は、１からｉ−１番目に選択済ＩＤと充足不可能（ＵＮＳＡＴ）な二項関係になるｉ番目のＩＤを選択対象の組み合わせから除外する（Ｓ３１）。
【００５０】
次いで、テストケース組合せ取得部２２は、選択済組合せＩＤ集合３３を参照し、ｋ−１番目までに選択済ＩＤを利用して、選択済組合せＩＤになるＩＤを選択対象の組み合わせから削除する（Ｓ３２）。
【００５１】
次いで、テストケース組合せ取得部２２は、Ｓ１２、Ｓ２０と同様、選択対象の組み合わせが空であるか否かを判定する（Ｓ３３）。選択対象の組み合わせが空である場合（Ｓ３３：ＹＥＳ）、テストケース組合せ取得部２２は、選択済組合せＩＤ集合３３をクリアし（Ｓ３４）、ｉの値をデクリメント（ｉ：＝ｉ−１）して（Ｓ３５）、Ｓ１０へ処理を戻す。
【００５２】
作成した選択対象の組み合わせが空でない場合（Ｓ３３：ＮＯ）、テストケース組合せ取得部２２は、Ｓ１３、Ｓ２３と同様、選択対象の組み合わせから未選択の条件節が最多となるテストケースを選択する（Ｓ３６）。次いで、テストケース組合せ取得部２２は、１〜ｋ番目のテストケース仕様書において選択したテストケース組み合わせを出力する（Ｓ３７）。
【００５３】
図７に戻り、Ｓ３以降の処理を説明する。Ｓ３に次いで、充足可能性判定部２４は、Ｓ２で取得した組み合わせテストケースの全条件節が選択済条件節集合３２の部分集合になっているか否かを判定する（Ｓ４）。Ｓ２で取得したテストケースの全条件節が選択済条件節集合３２の部分集合になっている場合（Ｓ４：ＹＥＳ）は、その全条件節について、Ｓ４に続く充足可能性判定（Ｓ５）を既に行っていることとなる。したがって、Ｓ２で取得したテストケースの全条件節が選択済条件節集合３２の部分集合になっている場合（Ｓ４：ＹＥＳ）、充足可能性判定部２４は、Ｓ１へ処理を戻す。
【００５４】
Ｓ２で取得したテストケースの全条件節が選択済条件節集合３２の部分集合になっていない場合（Ｓ４：ＮＯ）、充足可能性判定部２４は、組み合わせたテストケースの条件（項目）についての充足可能性判定をＳＡＴソルバにより実行する（Ｓ５）。
【００５５】
Ｓ５における充足可能性判定については、ＳＡＴ二項関係情報３４およびＵＮＳＡＴ二項関係情報３５に格納されたＳＡＴ／ＵＮＳＡＴの二項関係を用いてもよい。具体的には、充足可能性判定部２４は、ＳＡＴ二項関係情報３４およびＵＮＳＡＴ二項関係情報３５を参照し、組み合わせたテストケースに含まれる全条件節がＳＡＴ二項関係情報３４に含まれる場合には、ＳＡＴ（充足可能）であると判定する。また、充足可能性判定部２４は、組み合わせたテストケースに含まれる全条件節の中の２つの条件がＵＮＳＡＴ二項関係情報３５に含まれる場合には、ＵＮＳＡＴ（充足不可能）であると判定する。
【００５６】
このように、ＳＡＴ二項関係情報３４およびＵＮＳＡＴ二項関係情報３５に格納されたＳＡＴ／ＵＮＳＡＴの二項関係を用いて充足可能性判定を行う場合には、ＳＡＴソルバを用いることなく、容易に充足可能性を判定できる。
【００５７】
Ｓ５においてＳＡＴ（充足可能）である場合、充足可能性判定部２４は、組み合わせ内に含まれる全二項関係をＳＡＴ二項関係情報３４へ追加する（Ｓ６）。具体的には、充足可能性判定部２４は、組み合わせに含まれる全条件節について、２つの条件の組み合わせの全てをＳＡＴ二項関係情報３４へ追加する。次いで、充足可能性判定部２４は、組み合わせ内の全条件節を選択済条件節集合３２に追加して（Ｓ７）、Ｓ１へ処理を戻す。
【００５８】
Ｓ５においてＵＮＳＡＴ（充足不可能）である場合、充足可能性判定部２４は、組み合わせ内の全条件節の中の２つの条件の組み合わせ全てについて、ＳＡＴ／ＵＮＳＡＴの二項関係を特定する。具体的には、充足可能性判定部２４は、２つの条件の組み合わせ全てについて、ＳＡＴソルバによりＳＡＴ／ＵＮＳＡＴを特定する。そして、充足可能性判定部２４は、ＳＡＴと特定した二項関係（２つの条件を示すＩＤなど）をＳＡＴ二項関係情報３４へ、ＵＮＳＡＴと特定した二項関係をＵＮＳＡＴ二項関係情報３５へそれぞれ追加する（Ｓ８）。
【００５９】
以上のように、統合テスト装置１０は、テストケース組合せ取得部２２において複数のテストケース仕様書に含まれるテストケースの組合せを取得する処理と、充足可能性判定部２４において取得したテストケースの組合せが充足可能な組合せか否かを判定する処理とを繰り返す。次いで、統合テスト装置１０は、充足可能性判定部２４において充足可能な組合せと判定されたテストケースの組合せを後処理部２６より出力する。そして、テストケース組合せ取得部２２における処理では、ＵＮＳＡＴ二項関係情報３５を参照することで、充足可能でない組合せと判定されたテストケースの組合せに含まれ、互いの項目が充足可能性を満たさない二項目を有するテストケースの組合せを除外して、テストケースの組み合わせを取得する。したがって、統合テスト装置１０は、互いの項目が充足可能性を満たさない二項目を有するテストケースの組合せを充足可能性を判定する前に除外することで、充足可能性を確認するテストケースの組合せの数が膨大になる（爆発する）ことを抑止できる。このため、統合テスト装置１０は、効率的に統合テスト仕様書を生成することができる。
【００６０】
（動作例）
ここで、より具体的な複数のテストケース仕様書を結合して統合テスト仕様書を作成する場合の統合テスト装置１０の動作例を説明する。
【００６１】
図１０は、テストケース仕様書の一例を説明する説明図である。図１０に示すように、テストケース仕様書は、３つ（Ｘ，Ｙ，Ｚ）となり、ＸとＹはチェック系の仕様書で、Ｚは更新系の仕様書である。また、各テストケース仕様書には順序が予め決められており、図１０の例では、Ｘ→Ｙ→Ｚとなっている。更に、テストケース仕様書Ｘは５件のテストケースを有し、テストケース仕様書Ｙは４件のテストケースを有し、テストケース仕様書Ｚは３件のテストケースを有する。また、テストケース仕様書の各テストケースの条件（前処理部２０によるＸＭＬ解析後のテストケースのＩＤと条件式）は、ＩＤおよびパス条件の項目で示す内容のものであるものとする。例えば、条件式を分かり易く表現するために変数（Ａ、Ｂ…）や値（ｐ、ｑ…）を用いることとしている。また、ｅｒｒｏｒについては、ｅｒｒｏｒ＝０が正常を意味し、ｅｒｒｏｒ＝１が異常を意味している。また、更新系のテストケース仕様書にはｅｒｒｏｒ節はないものとする。
【００６２】
また、前処理部２０により、テストケース仕様書のパス条件に含まれる全ての条件式が全条件節集合３１に格納されているものとする。具体的には、全条件節集合３１には、｛Ａ＝１、Ａ！＝３、Ａ＝２、Ａ！＝２、Ｂ＞０、Ｂ＜１００、Ｂ≧２００、Ｂ＞３００、Ｃ＝”ｐ”、Ｃ！＝”ｐ”、Ｃ！＝”ｑ”、Ｄ＝ｔｒｕｅ、Ｄ＝ｆａｌｓｅ｝が格納されている。また、選択済条件節集合３２、選択済組合せＩＤ集合３３、ＳＡＴ二項関係情報３４およびＵＮＳＡＴ二項関係情報３５は、空であるものとする。
【００６３】
図１１〜図１８は、図７におけるＳ１において全条件節集合３１と選択済条件節集合３２とが一致して処理が終了するまでの動作例（Ｓ４０〜Ｓ５５）を説明する説明図である。なお、図１１〜図１８において、各ＩＤの項目の隣に記載された数字は、選択済条件節集合３２との比較による未選択条件節の数を示している。例えば、図１１におけるＸ０１の隣に記載された３は、Ａ＝１、Ｂ＜１００、Ｃ＝”ｐ”の３つの条件節において、未選択条件節の数が３であることを示している。
【００６４】
図１１に示すように、最初のテスト組み合わせ取得では、テストケース組合せ取得部２２により「Ｘ０１Ｙ０４Ｚ０１」が得られる（Ｓ４０）。具体的には、テストケース仕様書Ｘ（ｉ＝１）については、Ｘ０１〜Ｘ０５の中で、未選択条件節が最多となるテストケースであるＸ０１が選ばれる。また、テストケース仕様書Ｙ（ｉ＝２）については、ＵＮＳＡＴ二項関係情報３５は空のために選択対象は全部であり、選択対象から条件節が最多となるＹ０４が選ばれる。また、テストケース仕様書Ｚ（ｉ＝３）については、ＵＮＳＡＴ二項関係情報３５は空のために選択対象は全部であり、選択対象から条件節が最多となるＺ０１が選ばれる。
【００６５】
次いで、充足可能性判定部２４により「Ｘ０１Ｙ０４Ｚ０１」の充足可能性判定が行われる（Ｓ４１）。具体的には、「Ｘ０１Ｙ０４Ｚ０１」が選択済組合せＩＤ集合３３に追加され、ＳＡＴソルバにより「Ｘ０１Ｙ０４Ｚ０１」の充足可能性判定が実行される。この充足可能性判定では、Ｃ＝”ｐ”＆Ｃ！＝”ｐ”のコンフリクトでＵＮＳＡＴとされる。次いで、ＵＮＳＡＴ／ＳＡＴの二項関係が特定され、ＳＡＴ＝Ｘ０１Ｚ０１／ＵＮＳＡＴ＝Ｘ０１Ｙ０４、Ｙ０４Ｚ０１としてＳＡＴ二項関係情報３４およびＵＮＳＡＴ二項関係情報３５にそれぞれ格納される。
【００６６】
図１２に示すように、続くテスト組み合わせ取得では、テストケース組合せ取得部２２により「Ｘ０１Ｙ０１Ｚ０１」が得られる（Ｓ４２）。具体的には、テストケース仕様書Ｘ（ｉ＝１）については、Ｘ０１〜Ｘ０５の中で、未選択条件節が最多となるテストケースであるＸ０１が選ばれる。また、テストケース仕様書Ｙ（ｉ＝２）については、Ｘ０１に対してＹ０４がＵＮＳＡＴであるため、Ｘ０４以外から条件節が最多となるテストケースが選ばれる。ここで、同じ数のものが複数ある場合はランダムに選ばれ、例えばＹ０１が選ばれる。また、テストケース仕様書Ｚ（ｉ＝３）については、Ｘ０１、Ｙ０１に関係するＺのテストケースがＵＮＳＡＴに含まれていないことから選択対象は全部であり、選択対象から条件節が最多となるＺ０１が選ばれる。
【００６７】
次いで、充足可能性判定部２４により「Ｘ０１Ｙ０１Ｚ０１」の充足可能性判定が行われる（Ｓ４３）。具体的には、「Ｘ０１Ｙ０１Ｚ０１」が選択済組合せＩＤ集合３３に追加され、ＳＡＴソルバにより「Ｘ０１Ｙ０１Ｚ０１」の充足可能性判定が実行される。この充足可能性判定では、コンフリクトがなくＳＡＴとされ、「Ｘ０１Ｙ０１Ｚ０１」を出力の充足可能な組み合わせに追加して、全ての条件節を選択済条件節集合３２に追加する。また、ＳＡＴとなったため、全ての二項関係をＳＡＴ二項関係情報３４に追加する。
【００６８】
図１３に示すように、続くテスト組み合わせ取得では、テストケース組合せ取得部２２により「Ｘ０３Ｙ０４Ｚ０３」が得られる（Ｓ４４）。具体的には、テストケース仕様書Ｘ（ｉ＝１）については、Ｘ０１〜Ｘ０５の中で、未選択条件節が最多となるテストケースであるＸ０３が選ばれる。また、テストケース仕様書Ｙ（ｉ＝２）については、Ｘ０３に対するＵＮＳＡＴなものがないことから選択対象は全部であり、選択対象から条件節が最多となるＹ０４が選ばれる。また、テストケース仕様書Ｚ（ｉ＝３）については、Ｙ０４に対してＺ０１はＵＮＳＡＴであるため、Ｚ０１以外から条件節が最多となるテストケースが選ばれる。ここで、同じ数のものが複数ある場合はランダムに選ばれ、例えばＺ０３が選ばれる。
【００６９】
次いで、充足可能性判定部２４より「Ｘ０３Ｙ０４Ｚ０３」の充足可能性判定が行われる（Ｓ４５）。具体的には、「Ｘ０３Ｙ０４Ｚ０３」が選択済組合せＩＤ集合３３に追加され、ＳＡＴソルバにより「Ｘ０３Ｙ０４Ｚ０３」の充足可能性判定が実行される。この充足可能性判定では、Ａ＝１＆Ａ＝２のコンフリクトでＵＮＳＡＴとされる。次いで、ＵＮＳＡＴ／ＳＡＴの二項関係が特定され、ＳＡＴ＝Ｙ０４Ｚ０３／ＵＮＳＡＴ＝Ｘ０３Ｙ０４、Ｘ０３Ｚ０３としてＳＡＴ二項関係情報３４およびＵＮＳＡＴ二項関係情報３５にそれぞれ格納される。
【００７０】
図１４に示すように、続くテスト組み合わせ取得では、テストケース組合せ取得部２２により「Ｘ０３Ｙ０２」が得られる（Ｓ４６）。具体的には、テストケース仕様書Ｘ（ｉ＝１）については、Ｘ０１〜Ｘ０５の中で、未選択条件節が最多となるテストケースであるＸ０３が選ばれる。また、テストケース仕様書Ｙ（ｉ＝２）については、Ｘ０３に対してＹ０４がＵＮＳＡＴであるため、Ｙ０４以外から条件節が最多となるＹ０２が選ばれる。ここで、Ｙ０２は異常ケースであるため、テストケース仕様書Ｚ（ｉ＝３）からの選択は行われない。
【００７１】
次いで、充足可能性判定部２４より「Ｘ０３Ｙ０２」の充足可能性判定が行われる（Ｓ４７）。具体的には、「Ｘ０３Ｙ０２」が選択済組合せＩＤ集合３３に追加され、ＳＡＴソルバにより「Ｘ０３Ｙ０２」の充足可能性判定が実行される。この充足可能性判定では、Ａ＝１＆Ａ＝２のコンフリクトでＵＮＳＡＴとされる。次いで、ＵＮＳＡＴ／ＳＡＴの二項関係が特定され、ＵＮＳＡＴ＝Ｘ０３Ｙ０２がＵＮＳＡＴ二項関係情報３５に格納される。
【００７２】
図１５に示すように、続くテスト組み合わせ取得では、テストケース組合せ取得部２２により「Ｘ０３Ｙ０３」が得られる（Ｓ４８）。具体的には、テストケース仕様書Ｘ（ｉ＝１）については、Ｘ０１〜Ｘ０５の中で、未選択条件節が最多となるテストケースであるＸ０３が選ばれる。また、テストケース仕様書Ｙ（ｉ＝２）については、Ｘ０３に対してＹ０２、Ｙ０４がＵＮＳＡＴであるため、Ｙ０２、Ｙ０４以外から条件節が最多となるＹ０３が選ばれる。ここで、Ｙ０３は異常ケースであるため、テストケース仕様書Ｚ（ｉ＝３）からの選択は行われない。
【００７３】
次いで、充足可能性判定部２４より「Ｘ０３Ｙ０３」の充足可能性判定が行われる（Ｓ４９）。具体的には、「Ｘ０３Ｙ０３」が選択済組合せＩＤ集合３３に追加され、ＳＡＴソルバにより「Ｘ０３Ｙ０３」の充足可能性判定が実行される。この充足可能性判定では、Ａ＝１＆Ａ＝２のコンフリクトでＵＮＳＡＴとされる。次いで、ＵＮＳＡＴ／ＳＡＴの二項関係が特定され、ＵＮＳＡＴ＝Ｘ０３Ｙ０３がＵＮＳＡＴ二項関係情報３５に格納される。
【００７４】
図１６に示すように、続くテスト組み合わせ取得では、テストケース組合せ取得部２２により「Ｘ０３Ｙ０１Ｚ０２」が得られる（Ｓ５０）。具体的には、テストケース仕様書Ｘ（ｉ＝１）については、Ｘ０１〜Ｘ０５の中で、未選択条件節が最多となるテストケースであるＸ０３が選ばれる。また、テストケース仕様書Ｙ（ｉ＝２）については、Ｘ０３に対してＹ０２、Ｙ０３、Ｙ０４がＵＮＳＡＴであるため、Ｙ０２、Ｙ０３、Ｙ０４以外から条件節が最多となるＹ０１が選ばれる。また、テストケース仕様書Ｚ（ｉ＝３）については、Ｘ０３に対してＺ０３はＵＮＳＡＴであるため、Ｚ０３以外から条件節が最多となるＺ０２が選ばれる。
【００７５】
次いで、充足可能性判定部２４より「Ｘ０３Ｙ０１Ｚ０２」の充足可能性判定が行われる（Ｓ５１）。具体的には、「Ｘ０３Ｙ０１Ｚ０２」が選択済組合せＩＤ集合３３に追加され、ＳＡＴソルバにより「Ｘ０３Ｙ０１Ｚ０２」の充足可能性判定が実行される。この充足可能性判定では、コンフリクトがなくＳＡＴとされ、「Ｘ０３Ｙ０１Ｚ０２」を出力の充足可能な組み合わせに追加して、全ての条件節を選択済条件節集合３２に追加する。また、ＳＡＴとなったため、全ての二項関係をＳＡＴ二項関係情報３４に追加する。
【００７６】
図１７に示すように、続くテスト組み合わせ取得では、テストケース組合せ取得部２２により「Ｘ０５Ｙ０４Ｚ０３」が得られる（Ｓ５２）。具体的には、テストケース仕様書Ｘ（ｉ＝１）については、Ｘ０１〜Ｘ０５の中で、未選択条件節が最多となるテストケースであるＸ０５が選ばれる。また、テストケース仕様書Ｙ（ｉ＝２）については、Ｘ０５に対するＵＮＳＡＴなものがないことから選択対象は全部であり、選択対象から条件節が最多となるＹ０４が選ばれる。また、テストケース仕様書Ｚ（ｉ＝３）については、Ｙ０４に対してＺ０１はＵＮＳＡＴであるため、Ｚ０１以外から条件節が最多となるＺ０３が選ばれる。
【００７７】
次いで、充足可能性判定部２４より「Ｘ０５Ｙ０４Ｚ０３」の充足可能性判定が行われる（Ｓ５３）。具体的には、「Ｘ０５Ｙ０４Ｚ０３」が選択済組合せＩＤ集合３３に追加され、ＳＡＴソルバにより「Ｘ０５Ｙ０４Ｚ０３」の充足可能性判定が実行される。この充足可能性判定では、コンフリクトがなくＳＡＴとされ、「Ｘ０５Ｙ０４Ｚ０３」を出力の充足可能な組み合わせに追加して、全ての条件節を選択済条件節集合３２に追加する。また、ＳＡＴとなったため、全ての二項関係をＳＡＴ二項関係情報３４に追加する。
【００７８】
図１８に示すように、続くテスト組み合わせ取得では、テストケース組合せ取得部２２により「Ｘ０５Ｙ０２」が得られる（Ｓ５４）。具体的には、テストケース仕様書Ｘ（ｉ＝１）については、Ｘ０１〜Ｘ０５の中で、未選択条件節が最多となるテストケースであるＸ０５が選ばれる。また、テストケース仕様書Ｙ（ｉ＝２）については、Ｘ０５に対するＵＮＳＡＴなものがないことから選択対象は全部であり、選択対象から条件節が最多となるＹ０２が選ばれる。ここで、Ｙ０２は異常ケースであるため、テストケース仕様書Ｚ（ｉ＝３）からの選択は行われない。
【００７９】
次いで、充足可能性判定部２４より「Ｘ０５Ｙ０２」の充足可能性判定が行われる（Ｓ５４）。具体的には、「Ｘ０５Ｙ０２」が選択済組合せＩＤ集合３３に追加され、ＳＡＴソルバにより「Ｘ０５Ｙ０２」の充足可能性判定が実行される。この充足可能性判定では、コンフリクトがなくＳＡＴとされ、「Ｘ０５Ｙ０２」を出力の充足可能な組み合わせに追加して、全ての条件節を選択済条件節集合３２に追加する。また、ＳＡＴとなったため、全ての二項関係をＳＡＴ二項関係情報３４に追加する。また、選択済条件節集合３２と全条件節集合３１とが一致したため、テストケースの組み合わせは終了する。
【００８０】
図１９は、テストケース組み合わせの出力を説明する説明図である。図１９に示すように、統合テスト装置１０は、充足可能な組み合わせである「Ｘ０１Ｙ０１Ｚ０１」、「Ｘ０３Ｙ０１Ｚ０２」、「Ｘ０５Ｙ０４Ｚ０３」、「Ｘ０５Ｙ０２」をもとに、テストケースを組み合わせたものを統合テスト仕様書として出力する。この統合テスト仕様書の出力における、上述した動作例（Ｓ４０〜Ｓ５５）において、テストケースを組み合わせて充足可能性を判定した回数は７回である。また、充足可能なものとして組み合わせたテストケースは４件である。
【００８１】
（比較例）
次に、図１０と同じ複数のテストケース仕様書を結合して統合テスト仕様書を作成する場合の比較例を説明する。なお、比較例では、テストケースを正常・異常ケースへ分割した後に、テストケース組み合わせて充足可能性を判定するものとする。
【００８２】
図２０は、比較例における正常・異常ケースへの分割を説明する説明図である。図２０に示すように、比較例では、ｅｒｒｏｒ節をもとに、正常ケースと異常ケースとに分割する。
【００８３】
図２１は、比較例におけるテストケース組み合わせを説明する説明図である。図２１に示すように、比較例では、丸数字の１〜４で示したルートでテストケースの組み合わせを取得する。
【００８４】
具体的には、以下の条件の下、次の組合せを取得する。
（Ａ）正常ケースを多く含むテストケースの組合せを優先する。
（Ｂ）テストケース組合せに含まれる条件節のうち、選択済条件節集合に含まれない条件節が多い組合せを優先して選択する。
（Ｃ）空の異常ケースを含む組合せは空とする、という条件の下、次の組合せを取得する。
【００８５】
上記（Ａ）の条件を適用すると、丸数字の１に示すように、「Ｘ＿正常→Ｙ＿正常→Ｚ＿正常」が最優先となる。また、次に優先されるのは丸数字の２の「Ｘ＿正常→Ｙ＿正常→Ｚ＿異常」だが、Ｚ＿異常は空であるので、（Ｃ）の条件より、組合せが空となる。また、次に優先されるのは、丸数字３の「Ｘ＿正常→Ｙ＿異常」であり、その次に優先されるのは、丸数字４の「Ｘ＿異常」である。
【００８６】
図２２〜２７は、丸数字１、３、４のルート順にテストケースを組み合わせて充足可能性を判定する比較例における動作（Ｓ６０〜Ｓ７７）を説明する説明図である。なお、図２２〜２７において、充足可能性（ＳＡＴ／ＵＮＳＡＴ）の判定結果の隣に記載された数字は、テストケースを組み合わせて判定を行った回数を示している。
【００８７】
図２２〜図２４に示すように、丸数字の１に示す「Ｘ＿正常→Ｙ＿正常→Ｚ＿正常」については、Ｘ０１、Ｘ０３、Ｘ０５の一つと、Ｙ０１、Ｙ０１の一つと、Ｚ０１〜Ｚ０３の一つとを組み合わせたケースについて、充足可能性を判定する（Ｓ６０〜Ｓ６８）。具体的には、テストケースを組み合わせて判定を行った回数は９回となる。
【００８８】
また、図２５〜図２７に示すように、丸数字３の「Ｘ＿正常→Ｙ＿異常」については、Ｘ０１、Ｘ０３、Ｘ０５の一つと、Ｙ０１、Ｙ０１の一つとを組み合わせたケースについて、充足可能性を判定する（Ｓ７０〜Ｓ７７）。具体的には、テストケースを組み合わせて判定を行った回数は、１０回目〜１４回目の５回となる。なお、丸数字４の「Ｘ＿異常」については、他のテストケース仕様書との組み合わせが無く、充足不可となる要因がないことから、充足可能ものと扱う。
【００８９】
図２８は、比較例におけるテストケース組み合わせの出力を説明する説明図である。図２８に示すように、比較例では、充足可能な組み合わせである「Ｘ０１Ｙ０１Ｚ０１」、「Ｘ０３Ｙ０１Ｚ０２」、「Ｘ０５Ｙ０４Ｚ０３」、「Ｙ０１Ｙ０３」、「Ｘ０５Ｙ０２」、「Ｘ２」、「Ｘ４」をもとに、テストケースを組み合わせたものを統合テスト仕様書として出力する。この統合テスト仕様書の出力における、上述した動作例（Ｓ６０〜Ｓ７７）において、テストケースを組み合わせて充足可能性を判定した回数は１４回である。また、充足可能なものとして組み合わせたテストケースは７件である。
【００９０】
図２９は、比較例におけるＵＮＳＡＴとなる組み合わせの繰り返しを説明する説明図である。図２９に示すように、比較例では、互いの項目が充足可能性を満たさない（コンフリクトを生じる）二項目（Ｘ０１Ｘ０４）を有するテストケースの組合せを除外しない。このため、Ｓ６０でＵＮＳＡＴとなった後のＳ６１、Ｓ６２において、ＵＮＳＡＴを生じさせるＸ０１Ｘ０４を含む組み合わせを繰り返して判定することとなる。
【００９１】
したがって、比較例では、上述した動作例の７回よりも回数の多い１４回の充足可能性判定が行われることとなる。また、条件の網羅を達成していれば、テストケースの件数は少ないほうがテスト実施によい。この観点からも、４件の動作例の方が、７件の比較例よりもよい結果が得られている。
【符号の説明】
【００９２】
１…ＳＳ仕様書
２…ＩＴ仕様書
１０…統合テスト装置
１２…プログラム変換部
１４…テストケース仕様書生成部
１６…テストケース仕様書結合部
１８…ＩＴ仕様書変換部
２０…前処理部
２２…テストケース組合せ取得部
２４…充足可能性判定部
２６…後処理部
２８…記憶部
３０…集合
３１…全条件節集合
３２…選択済条件節集合
３３…選択済組合せＩＤ集合
３４…ＳＡＴ二項関係情報
３５…ＵＮＳＡＴ二項関係情報
９０…ＣＰＵ
９１…可搬型記憶媒体
９２…ＲＯＭ
９３…表示部
９４…ＲＡＭ
９５…入力部
９６…ＨＤＤ
９７…ネットワークインタフェース
９８…バス
９９…可搬型記憶媒体用ドライブ
【図１】
2017004216.tif 000003
【図２】
2017004216.tif 000004
【図３】
2017004216.tif 000005
【図４】
2017004216.tif 000006
【図５】
2017004216.tif 000007
【図６】
2017004216.tif 000008
【図７】
2017004216.tif 000009
【図８】
2017004216.tif 000010
【図９】
2017004216.tif 000011
【図１０】
2017004216.tif 000012
【図１１】
2017004216.tif 000013
【図１２】
2017004216.tif 000014
【図１３】
2017004216.tif 000015
【図１４】
2017004216.tif 000016
【図１５】
2017004216.tif 000017
【図１６】
2017004216.tif 000018
【図１７】
2017004216.tif 000019
【図１８】
2017004216.tif 000020
【図１９】
2017004216.tif 000021
【図２０】
2017004216.tif 000022
【図２１】
2017004216.tif 000023
【図２２】
2017004216.tif 000024
【図２３】
2017004216.tif 000025
【図２４】
2017004216.tif 000026
【図２５】
2017004216.tif 000027
【図２６】
2017004216.tif 000028
【図２７】
2017004216.tif 000029
【図２８】
2017004216.tif 000030
【図２９】
2017004216.tif 000031