(57)【要約】      （修正有）【課題】可読性の低下が抑制されたテスト仕様書を作成する。【解決手段】テスト仕様書作成プログラム３３０ａは、コンピュータ３００に、下記の処理を実行させる。テストケースの集合に含まれる第１のテストケースと、第１のテストケース以外のテストケースとの異なる度合いを示す距離を算出する処理を実行させる。テストケースの集合の中から第１のテストケースとの距離が所定値以上となるテストケースの集合である第１の集合を抽出する処理を実行させる。第１の集合から代表となる第２のテストケースを抽出する処理を実行させる。第１のテストケースとテストケースの集合の中で第１の集合に含まれないテストケースとの第１の差分を抽出し、第２のテストケースと、第１の集合に含まれる、第２のテストケース以外のテストケースとの第２の差分を抽出する処理を実行させる。第１の差分及び第２の差分が記載されたテスト仕様書を作成する処理を実行させる。【選択図】図２０
2014215841.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
テストケースの集合に含まれる第１のテストケースと、前記テストケースの集合に含まれる該第１のテストケース以外のテストケースとの異なる度合いを示す距離を算出し、
前記距離に基づいて、前記テストケースの集合の中から、前記第１のテストケースとの前記距離が所定値以上となるテストケースの集合である第１の集合を抽出し、
前記第１の集合から、当該第１の集合における代表となる第２のテストケースを抽出し、
前記第１のテストケースと、前記テストケースの集合の中で前記第１の集合に含まれないテストケースとの第１の差分を抽出し、
前記第２のテストケースと、前記第１の集合に含まれる、前記第２のテストケース以外のテストケースとの第２の差分を抽出し、
抽出された前記第１の差分及び前記第２の差分が記載されたテスト仕様書を作成する
処理を実行させることを特徴とするテスト仕様書作成プログラム。
【請求項２】
前記コンピュータに、さらに、
前記第１の集合に含まれるテストケースをベクトルで表した場合のベクトル重心と、前記第１の集合に含まれるテストケースとの距離を算出する処理を実行させ、
前記第２のテストケースを抽出する処理は、前記ベクトル重心と前記第１の集合に含まれるテストケースとの距離に基づいて、前記第１の集合から、前記ベクトル重心に最も近いテストケースを前記第２のテストケースとして抽出する
ことを特徴とする請求項１に記載のテスト仕様書作成プログラム。
【請求項３】
テストケースの集合に含まれる第１のテストケースと、前記テストケースの集合に含まれる該第１のテストケース以外のテストケースとの異なる度合いを示す距離を算出する算出部と、
前記距離に基づいて、前記テストケースの集合の中から、前記第１のテストケースとの前記距離が所定値以上となるテストケースの集合である第１の集合を抽出する第１の抽出部と、
前記第１のテストケースと、前記テストケースの集合の中で前記第１の集合に含まれないテストケースとの第１の差分を抽出する第２の抽出部と、
前記第２のテストケースと、前記第１の集合に含まれる、前記第２のテストケース以外のテストケースとの第２の差分を抽出する第３の抽出部と
抽出された前記第１の差分及び前記第２の差分が記載されたテスト仕様書を作成する作成部と、
を有することを特徴とするテスト仕様書作成装置。
【請求項４】
コンピュータが、
テストケースの集合に含まれる第１のテストケースと、前記テストケースの集合に含まれる該第１のテストケース以外のテストケースとの異なる度合いを示す距離を算出し、
前記距離に基づいて、前記テストケースの集合の中から、前記第１のテストケースとの前記距離が所定値以上となるテストケースの集合である第１の集合を抽出し、
前記第１の集合から、当該第１の集合における代表となる第２のテストケースを抽出し、
前記第１のテストケースと、前記テストケースの集合の中で前記第１の集合に含まれないテストケースとの第１の差分を抽出し、
前記第２のテストケースと、前記第１の集合に含まれる、前記第２のテストケース以外のテストケースとの第２の差分を抽出し、
抽出された前記第１の差分及び前記第２の差分が記載されたテスト仕様書を作成する
処理を実行することを特徴とするテスト仕様書作成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テスト仕様書作成プログラム、テスト仕様書作成装置及びテスト仕様書作成方法に関する。
【背景技術】
【０００２】
従来、テストケースを単に並べるのではなく、基本となるテストケースを定め、その他のテストケースについては基本となるテストケースとの差分を記述することで、何をテストしているのかを明確とし、レビューしやすくしたテスト仕様書の作成方法が存在する。ここで、基本となるテストケースは、代表テストケースとも称され、その他のテストケースは、派生テストケースとも称される。
【先行技術文献】
【非特許文献】
【０００３】
【特許文献１】特開２０１０−２３７０号公報
【特許文献２】特開２００８−５２３５９号公報
【特許文献３】特開２０１１−２４８８８７号公報
【特許文献４】特開２０１１−２５３４６５号公報
【特許文献５】特開２０１０−２１８１５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来のテスト仕様書の作成方法では、テスト仕様書の可読性が低下する場合があるという問題がある。例えば、従来のテスト仕様書の作成方法では、派生テストケースについて代表テストケースとの差分を自動的に生成するために、代表テストケースと派生テストケースとの差分を派生テストケースごとに抽出することが考えられる。しかしながら、代表テストケースと派生テストケースとの差分を派生テストケースごとに抽出する方法では、同一のテストケースが重複するような派生テストケースが多数生成される場合がある。同一のテストケースが重複するような派生テストケースが多数生成された場合には、テスト仕様書の可読性が低下する。
【０００５】
１つの側面では、本発明は、可読性の低下が抑制されたテスト仕様書を作成することを目的とする。
【課題を解決するための手段】
【０００６】
１態様では、テスト仕様書作成プログラムは、コンピュータに、テストケースの集合に含まれる第１のテストケースと、テストケースの集合に含まれる第１のテストケース以外のテストケースとの異なる度合いを示す距離を算出する処理を実行させる。テスト仕様書作成プログラムは、コンピュータに、距離に基づいて、テストケースの集合の中から、第１のテストケースとの距離が所定値以上となるテストケースの集合である第１の集合を抽出する処理を実行させる。テスト仕様書作成プログラムは、コンピュータに、第１の集合から、第１の集合における代表となる第２のテストケースを抽出する処理を実行させる。テスト仕様書作成プログラムは、コンピュータに、第１のテストケースと、テストケースの集合の中で第１の集合に含まれないテストケースとの第１の差分を抽出する処理を実行させる。テスト仕様書作成プログラムは、コンピュータに、第２のテストケースと、第１の集合に含まれる、第２のテストケース以外のテストケースとの第２の差分を抽出する処理を実行させる。テスト仕様書作成プログラムは、コンピュータに、抽出された第１の差分及び第２の差分が記載されたテスト仕様書を作成する処理を実行させる。
【発明の効果】
【０００７】
可読性の低下が抑制されたテスト仕様書を作成することができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施例に係るテスト仕様書作成装置の機能構成の一例を示す図である。
【図２】図２は、テストケース集合ファイルの一例を示す図である。
【図３】図３は、差分ベーステスト仕様書の一例を示す図である。
【図４】図４は、実施例に係る算出部が実行する処理の一例について説明するための図である。
【図５】図５は、実施例に係る算出部が実行する処理の一例を説明するための図である。
【図６】図６は、実施例に係る第１の抽出部が実行する処理の一例を説明するための図である。
【図７】図７は、派生テストケースと、ベクトル重心との距離の算出方法の一例について説明するための図である。
【図８】図８は、派生テストケースと、ベクトル重心との距離の算出方法の一例について説明するための図である。
【図９】図９は、実施例に係る第１の抽出部が実行する処理の一例を説明するための図である。
【図１０】図１０は、実施例に係る第２の抽出部が実行する処理の一例を説明するための図である。
【図１１】図１１は、実施例に係る第２の抽出部が実行する処理の一例を説明するための図である。
【図１２】図１２は、実施例に係る第３の抽出部が実行する処理の一例を説明するための図である。
【図１３】図１３は、実施例に係る第３の抽出部が実行する処理の一例を説明するための図である。
【図１４】図１４は、実施例に係るテスト仕様書作成処理の手順を示すフローチャートである。
【図１５】図１５は、実施例に係る距離算出処理の手順を示すフローチャートである。
【図１６】図１６は、実施例に係る第１の差分抽出処理の手順を示すフローチャートである。
【図１７】図１７は、実施例に係る第２の差分抽出処理の手順を示すフローチャートである。
【図１８】図１８は、従来の技術により作成された差分ベーステスト仕様書の一例を示す図である。
【図１９】図１９は、実施例に係る差分ベーステスト仕様書の一例を示す図である。
【図２０】図２０は、テスト仕様書作成プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【０００９】
以下に、本願の開示するテスト仕様書作成プログラム、テスト仕様書作成装置及びテスト仕様書作成方法の実施例を図面に基づいて詳細に説明する。なお、実施例は開示の技術を限定するものではない。
【００１０】
［テスト仕様書作成装置の構成］
実施例に係るテスト仕様書作成装置について説明する。図１は、実施例に係るテスト仕様書作成装置の機能構成の一例を示す図である。図１に示すように、テスト仕様書作成装置１０は、入力部１１と、表示部１２と、記憶部１３と、制御部１４とを有する。
【００１１】
入力部１１は、制御部１４に各種の情報を入力する。例えば、入力部１１は、ユーザから後述のテスト仕様書作成処理を実行する指示を受け付けて、受け付けた指示を制御部１４に入力する。なお、テスト仕様書作成処理を実行する指示には、代表テストケースの番号が付加されている。また、入力部１１は、ユーザから、差分ベーステスト仕様書を表示する指示を受け付けて、受け付けた指示を制御部１４に入力する。入力部１１のデバイスの一例としては、キーボードやマウスなどが挙げられる。
【００１２】
表示部１２は、各種の情報を表示する。例えば、表示部１２は、後述の表示制御部１４ｆの制御により差分ベーステスト仕様書を表示する。表示部１２のデバイスの一例としては、液晶ディスプレイなどが挙げられる。
【００１３】
記憶部１３は、制御部１４で実行される各種プログラムを記憶する。また、記憶部１３は、テストケース集合ファイル１３ａ、テストケーステーブル１３ｂ、サブ集合テーブル１３ｃ、差分テストケーステーブル１３ｄ、テスト仕様書テンプレート１３ｅ、差分ベーステスト仕様書１３ｆを記憶する。
【００１４】
テストケース集合ファイル１３ａは、テストケースの集合が登録されたファイルである。図２は、テストケース集合ファイルの一例を示す図である。図２の例に示すように、テストケース集合ファイル１３ａは、複数のテストケースを有する。図２の例では、テストケース集合ファイル１３ａには、番号（Ｎｏ．）が「１」から「１８」までの１８個のテストケースが含まれている。例えば、番号が「１」のテストケースは、変数Ａの値を「ａ１」、変数Ｂの値を「ｂ３」、変数Ｃの値を「ｃ１」、変数Ｄの値を「ｄ１」、変数Ｅの値を「ｅ１」、変数Ｆの値を「ｆ２」とし、他の変数については次のように設定するテストケースである。すなわち、番号が「１」のテストケースは、更に、変数Ｇの値を「ｇ１」、変数Ｈの値を「ｈ１」、変数Ｉの値を「ｉ１」、変数Ｋの値を「ｋ１」、変数Ｊの値を「ｊ１」、変数Ｌの値を「ｌ１」及び「ｌ３」とするテストケースである。他の番号のテストケースについても同様である。
【００１５】
テストケーステーブル１３ｂには、後述の算出部１４ａによりテストケースがレコードごとに登録される。テストケーステーブル１３ｂは、「Ｎｏ．」、「テストデータ条件」、「代表」、「距離スコア」の各項目を有する。「Ｎｏ．」の項目には、テストケースの番号が後述の算出部１４ａにより登録される。「テストデータ条件」には、「Ｎｏ．」の項目に登録された番号によって識別されるテストケースが後述の算出部１４ａにより登録される。「代表」の項目には、「Ｎｏ．」の項目に登録された番号によって識別されるテストケースが代表テストケースである場合には、代表テストケースであることを示す「ｔ」が後述の算出部１４ａにより登録される。また、「代表」の項目には、「Ｎｏ．」の項目に登録された番号によって識別されるテストケースが派生テストケースである場合には、派生テストケースであることを示す「ｆ」が後述の算出部１４ａにより登録される。また、「距離スコア」の項目には、「Ｎｏ．」の項目に登録された番号によって識別されるテストケースについて後述の算出部１４ａにより算出された距離が登録される。なお、テストケーステーブル１３ｂでは、新規のレコードが追加された上で、後述の算出部１４ａにより、追加されたレコードの「Ｎｏ．」、「テストデータ条件」、「代表」、「距離スコア」の各項目に各種の内容が登録される。
【００１６】
サブ集合テーブル１３ｃには、後述の距離が所定値（例えば、１４）以上となるテストケースが後述の第１の抽出部１４ｂにより登録される。ここで、後述の距離が所定値以上となるテストケースの集合は、サブ集合と称される。サブ集合テーブル１３ｃは、「Ｎｏ．」、「テストデータ条件」、「サブ代表」の各項目を有する。「Ｎｏ．」の項目には、テストケースの番号が後述の第１の抽出部１４ｂにより登録される。「テストデータ条件」には、「Ｎｏ．」の項目に登録された番号によって識別されるテストケースが後述の第１の抽出部１４ｂにより登録される。「サブ代表」の項目には、「Ｎｏ．」の項目に登録された番号によって識別されるテストケースが、サブ集合における代表テストケースである場合には、サブ集合における代表テストケースであることを示す「ｔ」が後述の第１の抽出部１４ｂにより登録される。また、「サブ代表」の項目には、「Ｎｏ．」の項目に登録された番号によって識別されるテストケースが、サブ集合における派生テストケースである場合には、派生テストケースであることを示す「ｆ」が後述の第１の抽出部１４ｂにより登録される。なお、サブ集合テーブル１３ｃでは、新規のレコードが追加された上で、後述の第１の抽出部１４ｂにより、追加されたレコードの「Ｎｏ．」、「テストデータ条件」、「サブ代表」の各項目に各種の内容が登録される。
【００１７】
差分テストケーステーブル１３ｄには、後述の追加条件、後述の削除条件が後述の第２の抽出部１４ｃ及び後述の第３の抽出部１４ｄにより登録される。差分テストケーステーブル１３ｄは、「Ｎｏ．」、「追加条件」、「削除条件」、「親Ｎｏ．」の各項目を有する。「Ｎｏ．」の項目には、テストケースの番号が後述の第２の抽出部１４ｃまたは後述の第３の抽出部１４ｄにより登録される。「追加条件」の項目には、後述の第２の抽出部１４ｃまたは後述の第３の抽出部１４ｄにより後述の追加条件が登録される。「削除条件」の項目には、後述の第２の抽出部１４ｃまたは後述の第３の抽出部１４ｄにより後述の削除条件が登録される。「親Ｎｏ．」の項目には、「Ｎｏ．」の項目に登録された番号によって識別されるテストケースが派生テストケースである場合に、派生テストケースに対する代表テストケースの番号が後述の第２の抽出部１４ｃまたは後述の第３の抽出部１４ｄにより登録される。
【００１８】
テスト仕様書テンプレート１３ｅは、テスト仕様書を作成する際に用いられるテンプレートである。テスト仕様書テンプレート１３ｅは、「ＮＯ．」、「代表／派生」、「概要」、「テスト条件」、「（削除要件）」、「確認項目」、「期待結果」、「合否判定」の各項目を有する。テスト仕様書テンプレート１３ｅの各項目に、後述の作成部１４ｅにより、差分テストケーステーブル１３ｄの登録内容が登録されることによって、後述の差分ベーステスト仕様書１３ｆが生成される。
【００１９】
差分ベーステスト仕様書１３ｆは、上述したように、テスト仕様書テンプレート１３ｅの各項目に、差分テストケーステーブル１３ｄの登録内容が登録されることによって生成される。図３は、差分ベーステスト仕様書の一例を示す図である。図３の例に示す差分ベーステスト仕様書１３ｆは、番号が２から１４までのテストケースが、派生テストケースであり、かかる派生テストケースに対する代表テストケースが、番号が１のテストケースであることを示す。また、図３の例に示す差分ベーステスト仕様書１３ｄは、番号が１４のテストケースがサブ集合における代表テストケースであり、番号が１５から１８までのテストケースが、サブ集合における派生テストケースであることを示す。
【００２０】
記憶部１３は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。
【００２１】
制御部１４は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図１に示すように、制御部１４は、算出部１４ａと、第１の抽出部１４ｂと、第２の抽出部１４ｃと、第３の抽出部１４ｄと、作成部１４ｅと、表示制御部１４ｆとを有する。
【００２２】
算出部１４ａは、テストケース集合ファイル１３ａが示すテストケースの集合に含まれる代表テストケースと、複数の派生テストケースのそれぞれとの異なる度合いを示す距離を算出する。算出部１４ａの一態様について説明する。図４は、実施例に係る算出部が実行する処理の一例について説明するための図である。例えば、算出部１４ａは、入力部１１からテスト仕様書作成処理を実行する指示が入力されると、まず、テストケース集合ファイル１３ａを取得する。そして、算出部１４ａは、テストケーステーブル１３ｂに、テストケース集合ファイル１３ａが示すテストケースの個数分のレコードを追加する。続いて、算出部１４ａは、図４の例に示すように、追加されたレコードの「Ｎｏ．」の項目に、テストケース集合ファイル１３ａが示すテストケースの番号を登録する。また、算出部１４ａは、図４の例に示すように、追加されたレコードの「テストデータ条件」の項目に、テストケース集合ファイル１３ａが示すテストケースを登録する。このようにして算出部１４ａは、テストケース集合ファイル１３ａに含まれる全てのテストケースと番号をテストケーステーブル１３ｂに登録する。
【００２３】
そして、算出部１４ａは、テスト仕様書作成処理を実行する指示に付加された代表テストケースの番号を取得する。そして、算出部１４ａは、テストケーステーブル１３ｂの全レコードの中から、取得した番号が「Ｎｏ．」の項目に登録されたレコードを特定する。例えば、図４の例に示すテストケーステーブル１３ｂが記憶部１３に記憶され、取得した番号が「１」である場合には、算出部１４ａは、次の処理を行う。すなわち、算出部１４ａは、図４の例に示すテストケーステーブル１３ｂの全レコードの中から、番号「１」が「Ｎｏ．」の項目に登録された１番目のレコードを特定する。そして、算出部１４ａは、テストケーステーブル１３ｂにおいて、特定したレコードの「代表」の項目に、代表テストケースであることを示す「ｔ」を登録する。例えば、算出部１４ａは、図４の例に示すように、テストケーステーブル１３ｂの１番目のレコードの「代表」の項目に、「ｔ」を登録する。
【００２４】
そして、算出部１４ａは、テストケーステーブル１３ｂにおいて、代表テストケースであることを示す「ｔ」が「代表」の項目に登録されたレコード以外の全てのレコードの「代表」の項目に、派生テストケースであることを示す「ｆ」を登録する。例えば、算出部１４ａは、先の図４の例に示すように、テストケーステーブル１３ｂの２番目のレコードから１８番目のレコードまでの各レコードの「代表」の項目に、「ｆ」を登録する。
【００２５】
続いて、算出部１４ａは、テストケーステーブル１３ｂにおいて、「代表」の項目に「ｔ」が登録されたレコードの「テストデータ条件」の項目に登録された代表テストケースを取得する。
【００２６】
そして、算出部１４ａは、テストケーステーブル１３ｂにおいて、「代表」の項目に「ｆ」が登録されたレコードのうち、未選択のレコードがあるか否かを判定する。未選択のレコードがある場合には、算出部１４ａは、未選択のレコードを１つ選択する。そして、算出部１４ａは、選択したレコードの「テストデータ条件」の項目に登録されたテストケース（派生テストケース）を取得する。
【００２７】
続いて、算出部１４ａは、距離算出処理を実行する。距離算出処理において、算出部１４ａは、取得した代表テストケースの全ての節を図示しない代表節集合テーブルに格納する。ここで、テストケースの節について説明する。テストケースの節とは、例えば、記号「∧」で結ばれた変数の値のことを指す。例えば、先の図２の例に示すテストケース集合ファイル１３ａに含まれる番号が「１」のテストケースの節は、「Ａ＝＝ａ１」、「Ｂ＝＝ｂ３」、・・・、「Ｌ＝＝ｌ３」の各々である。
【００２８】
そして、算出部１４ａは、取得した派生テストケースの全ての節を図示しない派生節集合テーブルに格納する。続いて、算出部１４ａは、距離を示す距離変数の値を「０」に設定して、距離変数の値を初期化する。なお、ここでいう「距離」は、代表テストケースと派生テストケースとの異なる度合いを示す。
【００２９】
続いて、算出部１４ａは、代表節集合テーブル内に未選択の節があるか否かを判定する。未選択の節がある場合には、算出部１４ａは、代表節集合テーブル内の未選択の節を１つ選択する。そして、算出部１４ａは、選択した代表節集合テーブル内の節が、派生節集合テーブル内にあるか否かを判定する。選択した代表節集合テーブル内の節が、派生節集合テーブル内にない場合には、算出部１４ａは、距離変数の値を１インクリメントする。
【００３０】
そして、算出部１４ａは、代表節集合テーブル内に未選択の節がなくなるまで、１つずつ、未選択の節を選択する。また、算出部１４ａは、未選択の節を選択するたびに、選択した代表節集合テーブル内の節が、派生節集合テーブル内にあるか否かを判定する上述した処理を行う。そして、選択した代表節集合テーブル内の節が、派生節集合テーブル内にない場合には、算出部１４ａは、距離変数の値を１インクリメントする上述した処理を行う。これにより、代表テストケースにあって、派生テストケースにない節の個数が距離変数に設定される。
【００３１】
続いて、算出部１４ａは、派生節集合テーブル内に未選択の節があるか否かを判定する。未選択の節がある場合には、算出部１４ａは、派生節集合テーブル内の未選択の節を１つ選択する。そして、算出部１４ａは、選択した派生節集合テーブル内の節が、代表節集合テーブル内にあるか否かを判定する。選択した派生節集合テーブル内の節が、代表節集合テーブル内にない場合には、算出部１４ａは、距離変数の値を１インクリメントする。
【００３２】
そして、算出部１４ａは、派生節集合テーブル内に未選択の節がなくなるまで、１つずつ、未選択の節を選択する。また、算出部１４ａは、未選択の節を選択するたびに、選択した派生節集合テーブル内の節が、代表節集合テーブル内にあるか否かを判定する上述した処理を行う。そして、選択した派生節集合テーブル内の節が、代表節集合テーブル内にない場合には、算出部１４ａは、距離変数の値を１インクリメントする上述した処理を行う。これにより、派生テストケースにあって、代表テストケースにない節の個数が距離変数に更に加えられる。すなわち、距離変数が示す距離の値は、代表テストケースにあって、派生テストケースにない節の個数と、派生テストケースにあって、代表テストケースにない節の個数との和になる。また、本実施例でいう距離は、代表テストケースにあって、派生テストケースにない節の個数と、派生テストケースにあって、代表テストケースにない節の個数との和である。そして、算出部１４ａは、距離算出処理を終了する。
【００３３】
距離算出処理が終了すると、算出部１４ａは、テストケーステーブル１３ｂにおいて、選択したレコード（派生テストケースを有するレコード）の「距離スコア」の項目に、距離変数の値、すなわち、距離を設定する。
【００３４】
そして、算出部１４ａは、テストケーステーブル１３ｂにおいて、「代表」の項目に「ｆ」が登録されたレコードの中に未選択のレコードがなくなるまで、「代表」の項目に「ｆ」が登録されたレコードを１つずつ選択する。そして、算出部１４ａは、レコードを１つずつ選択するたびに、選択したレコードの「テストデータ条件」の項目に登録されたテストケース（派生テストケース）を取得する上述した処理を行う。そして、算出部１４ａは、再び距離算出処理を実行する。距離算出処理が終了すると、算出部１４ａは、テストケーステーブル１３ｂにおいて、選択したレコード（派生テストケースを有するレコード）の「距離スコア」の項目に、距離変数の値を設定する上述した処理を行う。上述した処理を実行することで、算出部１４ａは、代表テストケースと、全ての派生テストケースとの各距離を算出し、算出した距離をテストケーステーブル１３ｂに登録する。図５は、実施例に係る算出部が実行する処理の一例を説明するための図である。算出部１４ａは、代表テストケースと、全ての派生テストケースとの各距離を算出し、図５の例に示すように、派生テストケースが「テストデータ条件」の項目に登録されたレコードの「距離スコア」の項目に、距離を登録する。
【００３５】
第１の抽出部１４ｂは、代表テストケースと派生テストケースとの距離に基づいて、派生テストケースの中から、代表テストケースとの距離が所定値以上となるテストケースの集合であるサブ集合を抽出する。そして、第１の抽出部１４ｂは、抽出したサブ集合から、サブ集合における代表テストケースを抽出する。
【００３６】
第１の抽出部１４ｂの一態様について説明する。例えば、第１の抽出部１４ｂは、テストケーステーブル１３ｂにおいて、「代表」の項目に「ｆ」が登録された選択済みのレコードを未選択とした上で、次の処理を行う。すなわち、第１の抽出部１４ｂは、テストケーステーブル１３ｂにおいて、「代表」の項目に「ｆ」が登録されたレコードの中に、未選択のレコードがあるか否かを判定する。未選択のレコードがある場合には、第１の抽出部１４ｂは、未選択のレコードを１つ選択する。そして、第１の抽出部１４ｂは、選択したレコードの「距離スコア」の項目に登録された距離を取得する。
【００３７】
続いて、第１の抽出部１４ｂは、取得した距離が、所定の閾値、例えば、１４以上であるか否かを判定する。取得した距離が所定の閾値以上である場合には、第１の抽出部１４ｂは、選択したレコードの「テストデータ条件」の項目に登録されたテストケース及び「Ｎｏ．」の項目に登録された番号を取得する。そして、第１の抽出部１４ｂは、サブ集合テーブル１３ｃにレコードを追加して、追加されたレコードの「ＮＯ．」の項目に、取得した番号を登録するとともに、「テストデータ条件」の項目に、取得したテストケースを登録する。続いて、第１の抽出部１４ｂは、テストケーステーブル１３ｂにおいて選択したレコードを削除する。
【００３８】
そして、第１の抽出部１４ｂは、テストケーステーブル１３ｂにおいて、「代表」の項目に「ｆ」が登録されたレコードの中に、未選択のレコードがなくなるまで、１つずつ、未選択のレコードを選択する。また、第１の抽出部１４ｂは、未選択のレコードを選択するたびに、選択したレコードの「距離スコア」の項目に登録された距離を取得する上述した処理を行う。そして、第１の抽出部１４ｂは、取得した距離が、所定の閾値以上であるか否かを判定する上述した処理を行う。そして、取得した距離が所定の閾値以上である場合には、第１の抽出部１４ｂは、選択したレコードの「テストデータ条件」の項目に登録されたテストケース及び「Ｎｏ．」の項目に登録された番号を取得する上述した処理を行う。そして、第１の抽出部１４ｂは、サブ集合テーブル１３ｃにレコードを追加して、追加されたレコードの「ＮＯ．」の項目に、取得した番号を登録するとともに、「テストデータ条件」の項目に、取得したテストケースを登録する上述した処理を行う。続いて、第１の抽出部１４ｂは、テストケーステーブル１３ｂにおいて選択したレコードを削除する上述した処理を行う。上述した処理を実行することにより、第１の抽出部１４ｂは、距離が所定の閾値以上となる派生テストケースを、テストケーステーブル１３ｂからサブ集合テーブル１３ｃに移動する。すなわち、第１の抽出部１４ｂは、代表テストケースと派生テストケースとの距離に基づいて、派生テストケースの中から、代表テストケースとの距離が所定値以上となるサブ集合を抽出する。
【００３９】
図６は、実施例に係る第１の抽出部が実行する処理の一例を説明するための図である。ここで、上述した所定の閾値が「１４」である場合について説明する。図６の例に示すように、第１の抽出部１４ｂは、テストケーステーブル１３ｂにおいて、所定の閾値「１４」以上のテストケースを番号とともにサブ集合テーブル１３ｃに登録する。そして、図６の例に示すように、第１の抽出部１４ｂは、テストケーステーブル１３ｂにおいて選択したレコードを削除する。
【００４０】
そして、第１の抽出部１４ｂは、サブ集合テーブル１３ｃに登録された派生テストケースと、ベクトル重心との距離を算出する。ここで、テストケースとベクトル重心との距離の算出方法の一例について、図７、図８を参照して説明する。図７及び図８は、派生テストケースと、ベクトル重心との距離の算出方法の一例について説明するための図である。ここで、サブ集合テーブル１３ｂに登録された１つ目のテストケースが（Ａ＝ａ１）∧（Ｂ＝ｂ２）∧（Ｃ＝ｃ１）∧（Ｄ＝ｄ２）であり、２つ目のテストケースが（Ａ＝ａ１）∧（Ｂ＝ｂ２）∧（Ｃ＝ｃ２）∧（Ｄ＝ｄ２）である。また、サブ集合テーブル１３ｂに登録された３つ目のテストケースが（Ａ＝ａ２）∧（Ｂ＝ｂ３）∧（Ｃ＝ｃ２）∧（Ｄ＝ｄ２）であり、４つ目のテストケースが（Ａ＝ａ１）∧（Ｂ＝ｂ４）∧（Ｃ＝ｃ２）∧（Ｄ＝ｄ３）∧（Ｅ＝ｅ１）である。また、サブ集合テーブル１３ｂに登録された５つ目のテストケースが（Ａ＝ａ１）∧（Ｂ＝ｂ２）∧（Ｃ＝ｃ３）∧（Ｄ＝ｄ２）である。サブ集合テーブル１３ｂに上述したような５つのテストケースが登録された場合に、１つ目のテストケースのベクトル表現は、図７に示すように、（１，０，１，０，０，１，０，０，１，０，０）となる。また、２つ目のテストケースのベクトル表現は、図７に示すように、（１，０，１，０，０，０，１，０，１，０，０）となる。また、３つ目のテストケースのベクトル表現は、図７に示すように、（０，１，０，１，０，０，１，０，１，０，０）となる。また、４つ目のテストケースのベクトル表現は、図７に示すように、（１，０，０，０，１，０，１，０，０，１，１）となる。また、５つ目のテストケースのベクトル表現は、図７に示すように、（１，０，１，０，０，０，０，１，１，０，０）となる。
【００４１】
そして、ベクトル重心は、図８の例に示すような値となる。そして、第１の抽出部１４ｂは、１つ目のテストケースとベクトル重心との距離を次のような式で算出する。すなわち、第１の抽出部１４ｂは（１−０．８）２＋（０−０．２）２＋（１−０．６）２＋（０−０．２）２＋（０−０．２）２＋（１−０．２）２＋（０−０．６）２＋（０−０．２）２＋（１−０．８）２＋（０−０．２）２＋（０−０．２）２＝１．４８を算出する。
【００４２】
同様に、第１の抽出部１４ｂは、２つ目のテストケースとベクトル重心との距離「０．６８」を算出し、３つ目のテストケースとベクトル重心との距離「２．６８」を算出する。また、第１の抽出部１４ｂは、４つ目のテストケースとベクトル重心との距離「３．２８」を算出し、５つ目のテストケースとベクトル重心との距離「１．４８」を算出する。上述したような方法で、第１の抽出部１４ｂは、派生テストケースとベクトル重心との距離を算出する。
【００４３】
そして、第１の抽出部１４ｂは、ベクトル重心からの距離が最も近い派生テストケースをサブ集合における代表テストケース（サブ代表テストケース）とする。すなわち、第１の抽出部１４ｂは、サブ集合テーブル１３ｃにおいて、ベクトル重心からの距離が最も近い派生テストケースが「テストデータ条件」の項目に登録されたレコードの「サブ代表」の項目に、サブ代表テストケースであることを示す「ｔ」を登録する。ここで、ベクトル重心との距離が最も近い派生テストケースは、サブ集合テーブル１３ｃに登録された派生テストケースの中で他の派生テストケースと同一の節を最も多く有する。
【００４４】
次に、第１の抽出部１４ｂは、サブ集合テーブル１３ｃにおいて、サブ代表テストケースが「テストデータ条件」の項目に登録されたレコード以外の全てのレコードの「サブ代表」の項目に、サブ集合における派生テストケースであることを示す「ｆ」を登録する。図９は、実施例に係る第１の抽出部が実行する処理の一例を説明するための図である。図９の例に示すように、第１の抽出部１４ｂは、ベクトル重心からの距離が最も近い、番号が「１２」の派生テストケースが「テストデータ条件」の項目に登録されたレコードの「サブ代表」の項目に「ｔ」を登録する。また、図９の例に示すように、第１の抽出部１４ｂは、サブ代表テストケースが「テストデータ条件」の項目に登録されたレコード以外の全てのレコードの「サブ代表」の項目に、サブ集合における派生テストケースであることを示す「ｆ」を登録する。
【００４５】
上述した処理を実行することによって、第１の抽出部１４ｂは、サブ代表テストケースとサブ集合における派生テストケースとを抽出する。
【００４６】
第２の抽出部１４ｃは、代表テストケースと派生テストケースとの差分を抽出する。第２の抽出部１４ｃの一態様について説明する。第１の抽出部１４ｂによりサブ代表テストケースとサブ集合における派生テストケースとが抽出されると、第２の抽出部１４ｃは、次の処理を行う。すなわち、第２の抽出部１４ｃは、テストケーステーブル１３ｂにおいて、「代表」の項目に「ｆ」が登録されたレコードの「テストデータ条件」の項目に登録されたテストケースを差分分析対象集合として抽出する。これに加えて、第２の抽出部１４ｃは、サブ集合テーブル１３ｃにおいて、「サブ代表」の項目に「ｔ」が登録されたテストケースをも差分分析対象集合として抽出する。
【００４７】
そして、第２の抽出部１４ｃは、差分分析対象集合内のテストケースの中に、未選択のテストケースがあるか否かを判定する。未選択のテストケースがある場合には、第２の抽出部１４ｃは、未選択のテストケースを１つ選択する。そして、第２の抽出部１４ｃは、第１の差分抽出処理を実行する。第１の差分抽出処理において、第２の抽出部１４ｃは、代表テストケースの全ての節を図示しない代表節集合テーブルに格納する。続いて、第２の抽出部１４ｃは、選択したテストケースの全ての節を図示しない派生節集合テーブルに格納する。
【００４８】
続いて、第２の抽出部１４ｃは、差分テストケーステーブル１３ｄにレコードを追加し、追加したレコードの「Ｎｏ．」の項目に、選択したテストケースの番号を登録し、追加したレコードの「親Ｎｏ．」の項目に、代表テストケースの番号を登録する。
【００４９】
そして、第２の抽出部１４ｃは、派生節集合テーブル内に、未選択の節があるか否かを判定する。未選択の節がある場合には、第２の抽出部１４ｃは、未選択の節を１つ選択する。そして、第２の抽出部１４ｃは、選択した節が、代表節集合テーブル内にあるか否かを判定する。選択した節が、代表節集合テーブル内にない場合には、第２の抽出部１４ｃは、差分テストケーステーブル１３ｄに追加したレコードの「追加条件」の項目に、選択した節を追加する。このように、差分テストケーステーブル１３ｄが有する「追加条件」の項目には、派生テストケースまたはサブ代表テストケースにあって、代表テストケースにない節が登録される。
【００５０】
そして、第２の抽出部１４ｃは、派生節集合テーブル内に、未選択の節がなくなるまで、未選択の節を１つずつ選択する。また、第２の抽出部１４ｃは、未選択の節を選択するたびに、選択した節が、代表節集合テーブル内にあるか否かを判定する上述した処理を行う。そして、選択した節が、代表節集合テーブル内にない場合には、第２の抽出部１４ｃは、差分テストケーステーブル１３ｄに追加したレコードの「追加条件」の項目に、選択した節を追加する上述した処理を行う。上述した処理を実行することにより、第２の抽出部１４ｃは、選択した派生テストケースの全ての節について、代表テストケースにあるか否かの判定を行い、節が代表テストケースにない場合には、追加したレコードの「追加条件」の項目に登録する。図１０は、実施例に係る第２の抽出部が実行する処理の一例を説明するための図である。図１０の例に示すように、第２の抽出部１４ｃは、差分テストケーステーブル１３ｄが有する「追加条件」の項目に、派生テストケースまたはサブ代表テストケースにあって、代表テストケースにない節を登録する。
【００５１】
そして、派生節集合テーブル内に、未選択の節がない場合には、第２の抽出部１４ｃは、代表節集合テーブル内に、未選択の節があるか否かを判定する。未選択の節がある場合には、第２の抽出部１４ｃは、未選択の節を１つ選択する。そして、第２の抽出部１４ｃは、選択した節が、派生節集合テーブル内にあるか否かを判定する。選択した節が、派生節集合テーブル内にない場合には、第２の抽出部１４ｃは、差分テストケーステーブル１３ｄに追加したレコードの「削除条件」の項目に、選択した節を追加する。このように、差分テストケーステーブル１３ｄが有する「削除条件」の項目には、代表テストケースにあって、派生テストケースまたはサブ代表テストケースにない節が登録される。
【００５２】
そして、第２の抽出部１４ｃは、代表節集合テーブル内に、未選択の節がなくなるまで、未選択の節を１つずつ選択する。また、第２の抽出部１４ｃは、未選択の節を選択するたびに、選択した節が、派生節集合テーブル内にあるか否かを判定する上述した処理を行う。そして、選択した節が、派生節集合テーブル内にない場合には、第２の抽出部１４ｃは、差分テストケーステーブル１３ｄに追加したレコードの「削除条件」の項目に、選択した節を追加する上述した処理を行う。上述した処理を実行することにより、第２の抽出部１４ｃは、選択した代表テストケースの全ての節について、派生テストケースにあるか否かの判定を行い、節が派生テストケースにない場合には、追加したレコードの「削除条件」の項目に登録する。図１１は、実施例に係る第２の抽出部が実行する処理の一例を説明するための図である。図１１の例に示すように、第２の抽出部１４ｃは、差分テストケーステーブル１３ｄが有する「削除条件」の項目に、代表テストケースにあって、派生テストケースまたはサブ代表テストケースにない節を登録する。そして、第２の抽出部１４ｃは、第１の差分抽出処理を終了する。
【００５３】
第１の差分抽出処理が終了すると、第２の抽出部１４ｃは、差分分析対象集合内のテストケースの中に、未選択のテストケースがなくなるまで、未選択のテストケースを１つずつ選択する。そして、第２の抽出部１４ｃは、未選択のテストケースを選択するたびに、第１の差分抽出処理を実行する。すなわち、第２の抽出部１４ｃは、差分分析対象集合内の全てのテストケースについて、代表テストケースとの差分を抽出する。
【００５４】
第３の抽出部１４ｄは、サブ代表テストケースと、サブ集合における派生テストケースとの差分を抽出する。
【００５５】
第３の抽出部１４ｄの一態様について説明する。第２の抽出部１４ｃにより、差分分析対象集合内の全てのテストケースについて、代表テストケースとの差分が抽出されると、第３の抽出部１４ｄは、次の処理を行う。すなわち、サブ集合テーブル１３ｃにおいて、「サブ代表」の項目に「ｆ」が登録されたレコードの中に、未選択のレコードがあるか否かを判定する。未選択のレコードがある場合には、第３の抽出部１４ｄは、未選択のレコードを１つ選択する。そして、第３の抽出部１４ｄは、選択したレコードの「テストデータ条件」に登録されたサブ集合における派生テストケースを選択する。そして、第３の抽出部１４ｄは、第２の差分抽出処理を実行する。第２の差分抽出処理において、第３の抽出部１４ｄは、サブ代表テストケースの全ての節を図示しない代表節集合テーブルに格納する。続いて、第３の抽出部１４ｄは、選択したサブ集合における派生テストケースの全ての節を図示しない派生節集合テーブルに格納する。
【００５６】
続いて、第３の抽出部１４ｄは、差分テストケーステーブル１３ｄにレコードを追加し、追加したレコードの「Ｎｏ．」の項目に、選択したサブ集合における派生テストケースの番号を登録する。また、第３の抽出部１４ｄは、追加したレコードの「親Ｎｏ．」の項目に、サブ代表テストケースの番号を登録する。
【００５７】
そして、第３の抽出部１４ｄは、派生節集合テーブル内に、未選択の節があるか否かを判定する。未選択の節がある場合には、第３の抽出部１４ｄは、未選択の節を１つ選択する。そして、第３の抽出部１４ｄは、選択した節が、代表節集合テーブル内にあるか否かを判定する。選択した節が、代表節集合テーブル内にない場合には、第３の抽出部１４ｄは、差分テストケーステーブル１３ｄに追加したレコードの「追加条件」の項目に、選択した節を追加する。このように、差分テストケーステーブル１３ｄが有する「追加条件」の項目には、サブ集合における派生テストケースにあって、サブ代表テストケースにない節が登録される。
【００５８】
そして、第３の抽出部１４ｄは、派生節集合テーブル内に、未選択の節がなくなるまで、未選択の節を１つずつ選択する。また、第３の抽出部１４ｄは、未選択の節を選択するたびに、選択した節が、代表節集合テーブル内にあるか否かを判定する上述した処理を行う。そして、選択した節が、代表節集合テーブル内にない場合には、第３の抽出部１４ｄは、差分テストケーステーブル１３ｄに追加したレコードの「追加条件」の項目に、選択した節を追加する上述した処理を行う。上述した処理を実行することにより、第３の抽出部１４ｄは、選択したサブ集合における派生テストケースの全ての節について、次のような処理を行う。すなわち、第３の抽出部１４ｄは、サブ代表テストケースにあるか否かの判定を行い、節がサブ代表テストケースにない場合には、追加したレコードの「追加条件」の項目に登録する。図１２は、実施例に係る第３の抽出部が実行する処理の一例を説明するための図である。図１２の例に示すように、第３の抽出部１４ｄは、差分テストケーステーブル１３ｄが有する「追加条件」の項目に、サブ集合における派生テストケースにあって、サブ代表テストケースにない節を登録する。
【００５９】
そして、派生節集合テーブル内に、未選択の節がない場合には、第３の抽出部１４ｄは、代表節集合テーブル内に、未選択の節があるか否かを判定する。未選択の節がある場合には、第３の抽出部１４ｄは、未選択の節を１つ選択する。そして、第３の抽出部１４ｄは、選択した節が、派生節集合テーブル内にあるか否かを判定する。選択した節が、派生節集合テーブル内にない場合には、第３の抽出部１４ｄは、差分テストケーステーブル１３ｄに追加したレコードの「削除条件」の項目に、選択した節を追加する。このように、差分テストケーステーブル１３ｄが有する「削除条件」の項目には、サブ代表テストケースにあって、サブ集合における派生テストケースにない節が登録される。
【００６０】
そして、第３の抽出部１４ｄは、代表節集合テーブル内に、未選択の節がなくなるまで、未選択の節を１つずつ選択する。また、第３の抽出部１４ｄは、未選択の節を選択するたびに、選択した節が、派生節集合テーブル内にあるか否かを判定する上述した処理を行う。そして、選択した節が、派生節集合テーブル内にない場合には、第３の抽出部１４ｄは、差分テストケーステーブル１３ｄに追加したレコードの「削除条件」の項目に、選択した節を追加する上述した処理を行う。上述した処理を実行することにより、第３の抽出部１４ｄは、選択したサブ代表テストケースの全ての節について、次のような処理を行う。すなわち、第３の抽出部１４ｄは、サブ集合における派生テストケースにあるか否かの判定を行い、節がサブ集合における派生テストケースにない場合には、追加したレコードの「削除条件」の項目に登録する。図１３は、実施例に係る第３の抽出部が実行する処理の一例を説明するための図である。図１３の例に示すように、第３の抽出部１４ｄは、差分テストケーステーブル１３ｄが有する「削除条件」の項目に、サブ代表テストケースにあって、サブ集合における派生テストケースにない節を登録する。そして、第３の抽出部１４ｄは、第２の差分抽出処理を終了する。
【００６１】
第２の差分抽出処理が終了すると、第３の抽出部１４ｄは、サブ集合テーブル１３ｃにおいて、「サブ代表」の項目に「ｆ」が登録されたレコードの中に、未選択のレコードがなくなるまで、未選択のレコードを１つずつ選択する。そして、第３の抽出部１４ｄは、未選択のレコードを選択するたびに、選択したレコードの「テストデータ条件」に登録されたサブ集合における派生テストケースを選択する。そして、第３の抽出部１４ｄは、再び、第２の差分抽出処理を実行する。すなわち、第３の抽出部１４ｄは、サブ集合における全ての派生テストケースについて、サブ代表テストケースとの差分を抽出する。
【００６２】
作成部１４ｅは、派生テストケースと代表テストケースとの差分、及び、サブ代表テストケースとサブ集合における派生テストケースとの差分が記載されたテスト仕様書を作成する。例えば、作成部１４ｅは、差分テストケーステーブル１３ｄの「追加条件」の項目に登録された節を、テスト仕様書テンプレート１３ｅの「テスト条件」の項目に登録する。これに加えて、作成部１４ｅは、差分テストケーステーブル１３ｄの「削除条件」の項目に登録された節を、テスト仕様書テンプレート１３ｅの「（削除条件）」の項目に登録する。さらに、作成部１４ｅは、差分テストケーステーブル１３ｄの「ＮＯ．」の項目に登録された番号を、テスト仕様書テンプレート１３ｅの「Ｎｏ．」の項目に登録する。これにより、先の図３に示すような差分ベーステスト仕様書１３ｆが作成される。作成部１４ｅは、作成した差分ベーステスト仕様書１３ｆを記憶部１３に格納する。
【００６３】
表示制御部１４ｆは、各種の情報の表示を制御する。例えば、表示制御部１４ｆは、入力部１１から、差分ベーステスト仕様書を表示する指示が入力されると、記憶部１３から差分ベーステスト仕様書１３ｆを取得し、差分ベーステスト仕様書１３ｆを表示するように、表示部１２を制御する。
【００６４】
制御部１４は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などのハードワイヤードロジックである。または、制御部１４は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などにプログラムを実行させることにより実現される。  
【００６５】
［処理の流れ］
次に、本実施例に係るテスト仕様書作成装置１０の処理の流れを説明する。図１４は、実施例に係るテスト仕様書作成処理の手順を示すフローチャートである。このテスト仕様書作成処理の実行タイミングとしては様々なタイミングが考えられる。例えば、テスト仕様書作成処理は、テスト仕様書作成処理を実行する指示が入力部１１から制御部１４に入力された場合に、制御部１４により実行される。
【００６６】
図１４に示すように、算出部１４ａは、テストケース集合ファイル１３ａに含まれる全てのテストケースと番号をテストケーステーブル１３ｂに登録する（Ｓ１０１）。そして、算出部１４ａは、テスト仕様書作成処理を実行する指示に付加された代表テストケースの番号を取得し、テストケーステーブル１３ｂの全レコードの中から、取得した番号が「Ｎｏ．」の項目に登録されたレコードを特定する。そして、算出部１４ａは、テストケーステーブル１３ｂにおいて、特定したレコードの「代表」の項目に、代表テストケースであることを示す「ｔ」を登録する（Ｓ１０２）。
【００６７】
そして、算出部１４ａは、テストケーステーブル１３ｂにおいて、代表テストケースであることを示す「ｔ」が「代表」の項目に登録されたレコード以外の全てのレコードの「代表」の項目に、派生テストケースであることを示す「ｆ」を登録する（Ｓ１０３）。
【００６８】
続いて、算出部１４ａは、テストケーステーブル１３ｂにおいて、「代表」の項目に「ｔ」が登録されたレコードの「テストデータ条件」の項目に登録された代表テストケースを取得する（Ｓ１０４）。
【００６９】
そして、算出部１４ａは、テストケーステーブル１３ｂにおいて、「代表」の項目に「ｆ」が登録されたレコードのうち、未選択のレコードがあるか否かを判定する（Ｓ１０５）。未選択のレコードがある場合（Ｓ１０５；Ｙｅｓ）には、算出部１４ａは、未選択のレコードを１つ選択する（Ｓ１０６）。そして、算出部１４ａは、選択したレコードの「テストデータ条件」の項目に登録されたテストケース（派生テストケース）を取得する（Ｓ１０７）。
【００７０】
続いて、算出部１４ａは、距離算出処理を実行する（Ｓ１０８）。図１５は、実施例に係る距離算出処理の手順を示すフローチャートである。図１５に示すように、算出部１４ａは、取得した代表テストケースの全ての節を図示しない代表節集合テーブルに格納する（Ｓ２０１）。
【００７１】
そして、算出部１４ａは、取得した派生テストケースの全ての節を図示しない派生節集合テーブルに格納する（Ｓ２０２）。続いて、算出部１４ａは、距離を示す距離変数の値を「０」に設定して、距離変数の値を初期化する（Ｓ２０３）。
【００７２】
続いて、算出部１４ａは、代表節集合テーブル内に未選択の節があるか否かを判定する（Ｓ２０４）。未選択の節がある場合（Ｓ２０４；Ｙｅｓ）には、算出部１４ａは、代表節集合テーブル内の未選択の節を１つ選択する（Ｓ２０５）。そして、算出部１４ａは、選択した代表節集合テーブル内の節が、派生節集合テーブル内にあるか否かを判定する（Ｓ２０６）。選択した代表節集合テーブル内の節が、派生節集合テーブル内にある場合（Ｓ２０６；Ｙｅｓ）には、算出部１４ａは、Ｓ２０４に戻る。一方、選択した代表節集合テーブル内の節が、派生節集合テーブル内にない場合（Ｓ２０６；Ｎｏ）には、算出部１４ａは、距離変数の値を１インクリメントし（Ｓ２０７）、Ｓ２０４に戻る。
【００７３】
未選択の節がない場合（Ｓ２０４；Ｎｏ）には、算出部１４ａは、派生節集合テーブル内に未選択の節があるか否かを判定する（Ｓ２０８）。未選択の節がある場合（Ｓ２０８；Ｙｅｓ）には、算出部１４ａは、派生節集合テーブル内の未選択の節を１つ選択する（Ｓ２０９）。そして、算出部１４ａは、選択した派生節集合テーブル内の節が、代表節集合テーブル内にあるか否かを判定する（Ｓ２１０）。選択した派生節集合テーブル内の節が、代表節集合テーブル内にある場合（Ｓ２１０；Ｙｅｓ）には、算出部１４ａは、Ｓ２０８に戻る。一方、選択した派生節集合テーブル内の節が、代表節集合テーブル内にない場合（Ｓ２１０；Ｎｏ）には、算出部１４ａは、距離変数の値を１インクリメントし（Ｓ２１１）、Ｓ２０８に戻る。また、派生節集合テーブル内に未選択の節がない場合（Ｓ２０８；Ｎｏ）には、算出部１４ａは、処理結果を制御部１４の内部メモリに格納し、リターンする。
【００７４】
図１４の説明に戻り、算出部１４ａは、テストケーステーブル１３ｂにおいて、選択したレコード（派生テストケースを有するレコード）の「距離スコア」の項目に、距離変数の値、すなわち、距離を登録し（Ｓ１０９）、Ｓ１０５に戻る。
【００７５】
未選択のレコードがない場合（Ｓ１０５；Ｎｏ）には、第１の抽出部１４ｂは、テストケーステーブル１３ｂにおいて、「代表」の項目に「ｆ」が登録された選択済みのレコードを未選択とする（Ｓ１１０）。そして、第１の抽出部１４ｂは、テストケーステーブル１３ｂにおいて、「代表」の項目に「ｆ」が登録されたレコードの中に、未選択のレコードがあるか否かを判定する（Ｓ１１１）。未選択のレコードがある場合（Ｓ１１１；Ｙｅｓ）には、第１の抽出部１４ｂは、未選択のレコードを１つ選択する（Ｓ１１２）。そして、第１の抽出部１４ｂは、選択したレコードの「距離スコア」の項目に登録された距離を取得する（Ｓ１１３）。
【００７６】
続いて、第１の抽出部１４ｂは、取得した距離が、所定の閾値、例えば、１４以上であるか否かを判定する（Ｓ１１４）。取得した距離が所定の閾値以上でない場合（Ｓ１１４；Ｎｏ）には、第１の抽出部１４ｂは、Ｓ１１１に戻る。一方、取得した距離が所定の閾値以上である場合（Ｓ１１４；Ｙｅｓ）には、第１の抽出部１４ｂは、選択したレコードの「テストデータ条件」の項目に登録されたテストケース及び「Ｎｏ．」の項目に登録された番号を取得する。そして、第１の抽出部１４ｂは、サブ集合テーブル１３ｃにレコードを追加して、追加されたレコードの「ＮＯ．」の項目に、取得した番号を登録するとともに、「テストデータ条件」の項目に、取得したテストケースを登録する（Ｓ１１５）。続いて、第１の抽出部１４ｂは、テストケーステーブル１３ｂにおいて選択したレコードを削除し（Ｓ１１６）、Ｓ１１１に戻る。
【００７７】
一方、未選択のレコードがない場合（Ｓ１１１；Ｎｏ）には、第１の抽出部１４ｂは、サブ集合テーブル１３ｃに登録された派生テストケースと、ベクトル重心との距離を算出する（Ｓ１１７）。そして、第１の抽出部１４ｂは、ベクトル重心からの距離が最も近い派生テストケースをサブ集合における代表テストケース（サブ代表テストケース）とする。すなわち、第１の抽出部１４ｂは、サブ集合テーブル１３ｃにおいて、ベクトル重心からの距離が最も近い派生テストケースが「テストデータ条件」の項目に登録されたレコードの「サブ代表」の項目に、次のような値を登録する。すなわち、第１の抽出部１４ｂは、サブ代表テストケースであることを示す「ｔ」を登録する（Ｓ１１８）。
【００７８】
第１の抽出部１４ｂは、サブ集合テーブル１３ｃにおいて、サブ代表テストケースが「テストデータ条件」の項目に登録されたレコード以外の全てのレコードの「サブ代表」の項目に「ｆ」を登録する（Ｓ１１９）。
【００７９】
第２の抽出部１４ｃは、テストケーステーブル１３ｂにおいて、「代表」の項目に「ｆ」が登録されたレコードの「テストデータ条件」の項目に登録されたテストケースを差分分析対象集合として抽出する。これに加えて、第２の抽出部１４ｃは、サブ集合テーブル１３ｃにおいて、「サブ代表」の項目に「ｔ」が登録されたテストケースをも差分分析対象集合として抽出する（Ｓ１２０）。
【００８０】
そして、第２の抽出部１４ｃは、差分分析対象集合内のテストケースの中に、未選択のテストケースがあるか否かを判定する（Ｓ１２１）。未選択のテストケースがある場合（Ｓ１２１；Ｙｅｓ）には、第２の抽出部１４ｃは、未選択のテストケースを１つ選択する（Ｓ１２２）。そして、第２の抽出部１４ｃは、第１の差分抽出処理を実行し（Ｓ１２３）、Ｓ１２１に戻る。図１６は、実施例に係る第１の差分抽出処理の手順を示すフローチャートである。図１６に示すように、第２の抽出部１４ｃは、代表テストケースの全ての節を図示しない代表節集合テーブルに格納する（Ｓ３０１）。続いて、第２の抽出部１４ｃは、選択したテストケースの全ての節を図示しない派生節集合テーブルに格納する（Ｓ３０２）。
【００８１】
続いて、第２の抽出部１４ｃは、差分テストケーステーブル１３ｄにレコードを追加し、追加したレコードの「Ｎｏ．」の項目に、選択したテストケースの番号を登録し、追加したレコードの「親Ｎｏ．」の項目に、代表テストケースの番号を登録する（Ｓ３０３）。
【００８２】
そして、第２の抽出部１４ｃは、派生節集合テーブル内に、未選択の節があるか否かを判定する（Ｓ３０４）。未選択の節がある場合（Ｓ３０４；Ｙｅｓ）には、第２の抽出部１４ｃは、未選択の節を１つ選択する（Ｓ３０５）。そして、第２の抽出部１４ｃは、選択した節が、代表節集合テーブル内にあるか否かを判定する（Ｓ３０６）。選択した節が、代表節集合テーブル内にある場合（Ｓ３０６；Ｙｅｓ）には、第２の抽出部１４ｃは、Ｓ３０４に戻る。一方、選択した節が、代表節集合テーブル内にない場合（Ｓ３０６；Ｎｏ）には、第２の抽出部１４ｃは、差分テストケーステーブル１３ｄに追加したレコードの「追加条件」の項目に、選択した節を追加し（Ｓ３０７）、Ｓ３０４に戻る。
【００８３】
そして、派生節集合テーブル内に、未選択の節がない場合（Ｓ３０４；Ｎｏ）には、第２の抽出部１４ｃは、代表節集合テーブル内に、未選択の節があるか否かを判定する（Ｓ３０８）。未選択の節がある場合（Ｓ３０８；Ｙｅｓ）には、第２の抽出部１４ｃは、未選択の節を１つ選択する（Ｓ３０９）。そして、第２の抽出部１４ｃは、選択した節が、派生節集合テーブル内にあるか否かを判定する（Ｓ３１０）。選択した節が、派生節集合テーブル内にある場合（Ｓ３１０；Ｙｅｓ）には、第２の抽出部１４ｃは、Ｓ３０８に戻る。一方、選択した節が、派生節集合テーブル内にない場合（Ｓ３１０；Ｎｏ）には、第２の抽出部１４ｃは、差分テストケーステーブル１３ｄに追加したレコードの「削除条件」の項目に、選択した節を追加し（Ｓ３１１）、Ｓ３０８に戻る。
【００８４】
また、未選択の節がない場合（Ｓ３０８；Ｎｏ）には、第２の抽出部１４ｃは、処理結果を制御部１４の内部メモリに格納し、リターンする。
【００８５】
図１の説明に戻り、差分分析対象集合内のテストケースの中に、未選択のテストケースがない場合（Ｓ１２１；Ｎｏ）には、第３の抽出部１４ｄは、次の処理を行う。すなわち、第３の抽出部１４ｄは、サブ集合テーブル１３ｃにおいて、「サブ代表」の項目に「ｆ」が登録されたレコードの中に、未選択のレコードがあるか否かを判定する（Ｓ１２４）。未選択のレコードがある場合（Ｓ１２４；Ｙｅｓ）には、第３の抽出部１４ｄは、未選択のレコードを１つ選択する（Ｓ１２５）。そして、第３の抽出部１４ｄは、選択したレコードの「テストデータ条件」に登録されたサブ集合における派生テストケースを選択する（Ｓ１２６）。そして、第３の抽出部１４ｄは、第２の差分抽出処理を実行し（Ｓ１２７）、Ｓ１２４に戻る。図１７は、実施例に係る第２の差分抽出処理の手順を示すフローチャートである。図１７に示すように、第３の抽出部１４ｄは、サブ代表テストケースの全ての節を図示しない代表節集合テーブルに格納する（Ｓ４０１）。続いて、第３の抽出部１４ｄは、選択したサブ集合における派生テストケースの全ての節を図示しない派生節集合テーブルに格納する（Ｓ４０２）。
【００８６】
続いて、第３の抽出部１４ｄは、差分テストケーステーブル１３ｄにレコードを追加し、追加したレコードの「Ｎｏ．」の項目に、選択したサブ集合における派生テストケースの番号を登録する。そして、第３の抽出部１４ｄは、追加したレコードの「親Ｎｏ．」の項目に、サブ代表テストケースの番号を登録する（Ｓ４０３）。
【００８７】
そして、第３の抽出部１４ｄは、派生節集合テーブル内に、未選択の節があるか否かを判定する（Ｓ４０４）。未選択の節がある場合（Ｓ４０４；Ｙｅｓ）には、第３の抽出部１４ｄは、未選択の節を１つ選択する（Ｓ４０５）。そして、第３の抽出部１４ｄは、選択した節が、代表節集合テーブル内にあるか否かを判定する（Ｓ４０６）。選択した節が、代表節集合テーブル内にある場合（Ｓ４０６；Ｙｅｓ）には、第３の抽出部１４ｄは、Ｓ４０４に戻る。一方、選択した節が、代表節集合テーブル内にない場合（Ｓ４０６；Ｎｏ）には、第３の抽出部１４ｄは、差分テストケーステーブル１３ｄに追加したレコードの「追加条件」の項目に、選択した節を追加し（Ｓ４０７）、Ｓ４０４に戻る。
【００８８】
そして、派生節集合テーブル内に、未選択の節がない場合（Ｓ４０４；Ｎｏ）には、第３の抽出部１４ｄは、代表節集合テーブル内に、未選択の節があるか否かを判定する（Ｓ４０８）。未選択の節がある場合（Ｓ４０８；Ｙｅｓ）には、第３の抽出部１４ｄは、未選択の節を１つ選択する（Ｓ４０９）。そして、第３の抽出部１４ｄは、選択した節が、派生節集合テーブル内にあるか否かを判定する（Ｓ４１０）。選択した節が、派生節集合テーブル内にある場合（Ｓ４１０；Ｙｅｓ）には、第３の抽出部１４ｄは、Ｓ４０８に戻る。一方、選択した節が、派生節集合テーブル内にない場合（Ｓ４１０；Ｎｏ）には、第３の抽出部１４ｄは、差分テストケーステーブル１３ｄに追加したレコードの「削除条件」の項目に、選択した節を追加し（Ｓ４１１）、Ｓ４０８に戻る。代表節集合テーブル内に、未選択の節がない場合（Ｓ４０８；Ｎｏ）には、第３の抽出部１４ｄは、処理結果を制御部１４の内部メモリに格納し、リターンする。
【００８９】
図１４の説明に戻り、サブ集合テーブル１３ｃにおいて、「サブ代表」の項目に「ｆ」が登録されたレコードの中に、未選択のレコードがない場合（Ｓ１２４；Ｎｏ）には、作成部１４ｅは、差分ベーステスト仕様書１３ｆを作成する（Ｓ１２８）。そして、作成部１４ｅは、作成した差分ベーステスト仕様書１３ｆを記憶部１３に格納し（Ｓ１２９）、処理を終了する。
【００９０】
図１８は、従来の技術により作成された差分ベーステスト仕様書の一例を示す図である。図１８の例に示す差分ベーステスト仕様書は、派生テストケースと代表テストケースとの差分しか記載されていない。また、図１８の例に示す差分ベーステスト仕様書では、番号が４〜７のテストケースにおいて、共通の節「Ｄ＝＝ｄ２」及び「Ｆ＝＝ｆ１」を有するにも関わらず、派生テストケースと代表テストケースとの差分しか記載されていないため、可読性が低下する。また、図１８の例に示す差分ベーステスト仕様書は、派生テストケースの節の数を示すトータル距離スコアが「１９」であり、トータル距離スコアの数の多さからも可読性が良好でないといえる。
【００９１】
図１９は、実施例に係る差分ベーステスト仕様書の一例を示す図である。図１９に示す差分ベーステスト仕様書１３ｆは、テスト仕様書作成装置１０により作成されたものである。図１９の例に示す差分ベーステスト仕様書１３ｆは、派生テストケースと代表テストケースとの差分に加え、サブ代表テストケースとサブ集合における派生テストケースとの差分が記載される。そのため、差分ベーステスト仕様書１３ｆは、可読性の低下を抑制する。また、図１９の例に示す差分ベーステスト仕様書１３ｆは、派生テストケースの節の数を示すトータル距離スコアが「１０」であり、トータル距離スコアの点からも可読性の低下が抑制されるといえる。
【００９２】
上述してきたように、テスト仕様書作成装置１０は、テストケース集合ファイル１３ａが示すテストケースの集合に含まれる代表テストケースと、派生テストケースとの異なる度合いを示す距離を算出する。テスト仕様書作成装置１０は、代表テストケースと派生テストケースとの距離に基づいて、派生テストケースの中から、代表テストケースとの距離が所定値以上となるテストケースの集合であるサブ集合を抽出する。そして、テスト仕様書作成装置１０は、抽出したサブ集合から、サブ集合における代表テストケースを抽出する。続いて、テスト仕様書作成装置１０は、代表テストケースと派生テストケースとの差分を抽出する。また、テスト仕様書作成装置１０は、サブ代表テストケースと、サブ集合における派生テストケースとの差分を抽出する。テスト仕様書作成装置１０は、派生テストケースと代表テストケースとの差分、及び、サブ代表テストケースとサブ集合における派生テストケースとの差分が記載されたテスト仕様書を作成する。したがって、テスト仕様書作成装置１０によれば、派生テストケースと代表テストケースとの差分に加えて、サブ代表テストケースとサブ集合における派生テストケースとの差分が記載されたテスト仕様書を作成する。すなわち、テスト仕様書作成装置１０によれば、同一のテストケースが重複するような派生テストケースの集合の中で、さらに、代表のテストケースと、派生テストケースの差分を抽出し、抽出した差分を記述されたテスト仕様書を作成する。それゆえ、テスト仕様書作成装置１０によれば、可読性の低下が抑制されたテスト仕様書を作成することができる。
【００９３】
また、テスト仕様書作成装置１０によれば、ベクトル重心からの距離が最も近い派生テストケースをサブ集合における代表テストケース（サブ代表テストケース）とする。すなわち、テスト仕様書作成装置１０は、サブ集合テーブル１３ｃに登録された派生テストケースの中で他の派生テストケースと同一の節を最も多く有する派生テストケースをサブ代表テストケースとする。このため、上述したトータル距離スコアが少なくなり、さらに、可読性の低下が抑制されたテスト仕様書を作成することができる。
【００９４】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよい。例えば、実施例などにおいて説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。
【００９５】
また、各種の負荷や使用状況などに応じて、実施例などにおいて説明した各処理の各ステップでの処理を任意に細かくわけたり、あるいはまとめたりすることができる。また、ステップを省略することもできる。
【００９６】
また、各種の負荷や使用状況などに応じて、実施例などにおいて説明した各処理の各ステップでの処理の順番を変更できる。
【００９７】
また、図示した装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【００９８】
［テスト仕様書作成プログラム］
また、上記のテスト仕様書作成装置１０のテスト仕様書作成処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図２０を用いて、上記のテスト仕様書作成装置１０と同様の機能を有するテスト仕様書作成プログラムを実行するコンピュータの一例を説明する。
【００９９】
図２０は、テスト仕様書作成プログラムを実行するコンピュータを示す図である。図２０に示すように、コンピュータ３００は、ＣＰＵ（Central  Processing  Unit）３１０、ＲＯＭ（Read  Only  Memory）３２０、ＨＤＤ（Hard  Disk  Drive）３３０、ＲＡＭ（Random  Access  Memory）３４０を有する。これら３００〜３４０の各部は、バス３５０を介して接続される。
【０１００】
ＨＤＤ３３０には、上記の実施例で示す算出部１４ａ、第１の抽出部１４ｂ、第２の抽出部１４ｃ、第３の抽出部１４ｄ、作成部１４ｅ、表示制御部１４ｆと同様の機能を発揮するテスト仕様書作成プログラム３３０ａが予め記憶される。なお、テスト仕様書作成プログラム３３０ａについては、適宜分離しても良い。
【０１０１】
そして、ＣＰＵ３１０が、テスト仕様書作成プログラム３３０ａをＨＤＤ３３０から読み出して実行する。
【０１０２】
そして、ＨＤＤ３３０には、図２の例に示す記憶部１３に記憶された金属モデルデータが設けられる。
【０１０３】
そして、ＣＰＵ３１０は、ＨＤＤ３３０から各種のデータを読み出してＲＡＭ３４０に格納する。さらに、ＣＰＵ３１０は、ＲＡＭ３４０に格納された各種のデータを用いて、テスト仕様書作成プログラム３３０ａを実行する。なお、ＲＡＭ３４０に格納される各データは、常に全てのデータがＲＡＭ３４０に格納されなくともよく、全てのデータのうち処理に用いられるデータのみがＲＡＭ３４０に格納されれば良い。
【０１０４】
なお、上記したテスト仕様書作成プログラム３３０ａについては、必ずしも最初からＨＤＤ３３０に記憶させなくともよい。
【０１０５】
例えば、コンピュータ３００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。  
【０１０６】
さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ３００に接続される「他のコンピュータ（またはサーバ）」などにプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【符号の説明】
【０１０７】
１０      テスト仕様書作成装置
１３      記憶部
１３ａ    テストケース集合ファイル
１３ｂ    テストケーステーブル
１３ｃ    サブ集合テーブル
１３ｄ    差分テストケーステーブル
１３ｅ    テスト仕様書テンプレート
１３ｆ    差分ベーステスト仕様書
１４      制御部
１４ａ    算出部
１４ｂ    第１の抽出部
１４ｃ    第２の抽出部
１４ｄ    第３の抽出部
１４ｅ    作成部
１４ｆ    表示制御部
【図１】
2014215841.tif 000003
【図２】
2014215841.tif 000004
【図３】
2014215841.tif 000005
【図４】
2014215841.tif 000006
【図５】
2014215841.tif 000007
【図６】
2014215841.tif 000008
【図７】
2014215841.tif 000009
【図８】
2014215841.tif 000010
【図９】
2014215841.tif 000011
【図１０】
2014215841.tif 000012
【図１１】
2014215841.tif 000013
【図１２】
2014215841.tif 000014
【図１３】
2014215841.tif 000015
【図１４】
2014215841.tif 000016
【図１５】
2014215841.tif 000017
【図１６】
2014215841.tif 000018
【図１７】
2014215841.tif 000019
【図１８】
2014215841.tif 000020
【図１９】
2014215841.tif 000021
【図２０】
2014215841.tif 000022