以下に、本願の開示するテスト仕様書作成プログラム、テスト仕様書作成装置及びテスト仕様書作成方法の実施例を図面に基づいて詳細に説明する。なお、実施例は開示の技術を限定するものではない。
[テスト仕様書作成装置の構成]
実施例に係るテスト仕様書作成装置について説明する。図1は、実施例に係るテスト仕様書作成装置の機能構成の一例を示す図である。図1に示すように、テスト仕様書作成装置10は、入力部11と、表示部12と、記憶部13と、制御部14とを有する。
入力部11は、制御部14に各種の情報を入力する。例えば、入力部11は、ユーザから後述のテスト仕様書作成処理を実行する指示を受け付けて、受け付けた指示を制御部14に入力する。なお、テスト仕様書作成処理を実行する指示には、代表テストケースの番号が付加されている。また、入力部11は、ユーザから、差分ベーステスト仕様書を表示する指示を受け付けて、受け付けた指示を制御部14に入力する。入力部11のデバイスの一例としては、キーボードやマウスなどが挙げられる。
表示部12は、各種の情報を表示する。例えば、表示部12は、後述の表示制御部14fの制御により差分ベーステスト仕様書を表示する。表示部12のデバイスの一例としては、液晶ディスプレイなどが挙げられる。
記憶部13は、制御部14で実行される各種プログラムを記憶する。また、記憶部13は、テストケース集合ファイル13a、テストケーステーブル13b、サブ集合テーブル13c、差分テストケーステーブル13d、テスト仕様書テンプレート13e、差分ベーステスト仕様書13fを記憶する。
テストケース集合ファイル13aは、テストケースの集合が登録されたファイルである。図2は、テストケース集合ファイルの一例を示す図である。図2の例に示すように、テストケース集合ファイル13aは、複数のテストケースを有する。図2の例では、テストケース集合ファイル13aには、番号(No.)が「1」から「18」までの18個のテストケースが含まれている。例えば、番号が「1」のテストケースは、変数Aの値を「a1」、変数Bの値を「b3」、変数Cの値を「c1」、変数Dの値を「d1」、変数Eの値を「e1」、変数Fの値を「f2」とし、他の変数については次のように設定するテストケースである。すなわち、番号が「1」のテストケースは、更に、変数Gの値を「g1」、変数Hの値を「h1」、変数Iの値を「i1」、変数Kの値を「k1」、変数Jの値を「j1」、変数Lの値を「l1」及び「l3」とするテストケースである。他の番号のテストケースについても同様である。
テストケーステーブル13bには、後述の算出部14aによりテストケースがレコードごとに登録される。テストケーステーブル13bは、「No.」、「テストデータ条件」、「代表」、「距離スコア」の各項目を有する。「No.」の項目には、テストケースの番号が後述の算出部14aにより登録される。「テストデータ条件」には、「No.」の項目に登録された番号によって識別されるテストケースが後述の算出部14aにより登録される。「代表」の項目には、「No.」の項目に登録された番号によって識別されるテストケースが代表テストケースである場合には、代表テストケースであることを示す「t」が後述の算出部14aにより登録される。また、「代表」の項目には、「No.」の項目に登録された番号によって識別されるテストケースが派生テストケースである場合には、派生テストケースであることを示す「f」が後述の算出部14aにより登録される。また、「距離スコア」の項目には、「No.」の項目に登録された番号によって識別されるテストケースについて後述の算出部14aにより算出された距離が登録される。なお、テストケーステーブル13bでは、新規のレコードが追加された上で、後述の算出部14aにより、追加されたレコードの「No.」、「テストデータ条件」、「代表」、「距離スコア」の各項目に各種の内容が登録される。
サブ集合テーブル13cには、後述の距離が所定値(例えば、14)以上となるテストケースが後述の第1の抽出部14bにより登録される。ここで、後述の距離が所定値以上となるテストケースの集合は、サブ集合と称される。サブ集合テーブル13cは、「No.」、「テストデータ条件」、「サブ代表」の各項目を有する。「No.」の項目には、テストケースの番号が後述の第1の抽出部14bにより登録される。「テストデータ条件」には、「No.」の項目に登録された番号によって識別されるテストケースが後述の第1の抽出部14bにより登録される。「サブ代表」の項目には、「No.」の項目に登録された番号によって識別されるテストケースが、サブ集合における代表テストケースである場合には、サブ集合における代表テストケースであることを示す「t」が後述の第1の抽出部14bにより登録される。また、「サブ代表」の項目には、「No.」の項目に登録された番号によって識別されるテストケースが、サブ集合における派生テストケースである場合には、派生テストケースであることを示す「f」が後述の第1の抽出部14bにより登録される。なお、サブ集合テーブル13cでは、新規のレコードが追加された上で、後述の第1の抽出部14bにより、追加されたレコードの「No.」、「テストデータ条件」、「サブ代表」の各項目に各種の内容が登録される。
差分テストケーステーブル13dには、後述の追加条件、後述の削除条件が後述の第2の抽出部14c及び後述の第3の抽出部14dにより登録される。差分テストケーステーブル13dは、「No.」、「追加条件」、「削除条件」、「親No.」の各項目を有する。「No.」の項目には、テストケースの番号が後述の第2の抽出部14cまたは後述の第3の抽出部14dにより登録される。「追加条件」の項目には、後述の第2の抽出部14cまたは後述の第3の抽出部14dにより後述の追加条件が登録される。「削除条件」の項目には、後述の第2の抽出部14cまたは後述の第3の抽出部14dにより後述の削除条件が登録される。「親No.」の項目には、「No.」の項目に登録された番号によって識別されるテストケースが派生テストケースである場合に、派生テストケースに対する代表テストケースの番号が後述の第2の抽出部14cまたは後述の第3の抽出部14dにより登録される。
テスト仕様書テンプレート13eは、テスト仕様書を作成する際に用いられるテンプレートである。テスト仕様書テンプレート13eは、「NO.」、「代表/派生」、「概要」、「テスト条件」、「(削除要件)」、「確認項目」、「期待結果」、「合否判定」の各項目を有する。テスト仕様書テンプレート13eの各項目に、後述の作成部14eにより、差分テストケーステーブル13dの登録内容が登録されることによって、後述の差分ベーステスト仕様書13fが生成される。
差分ベーステスト仕様書13fは、上述したように、テスト仕様書テンプレート13eの各項目に、差分テストケーステーブル13dの登録内容が登録されることによって生成される。図3は、差分ベーステスト仕様書の一例を示す図である。図3の例に示す差分ベーステスト仕様書13fは、番号が2から14までのテストケースが、派生テストケースであり、かかる派生テストケースに対する代表テストケースが、番号が1のテストケースであることを示す。また、図3の例に示す差分ベーステスト仕様書13dは、番号が14のテストケースがサブ集合における代表テストケースであり、番号が15から18までのテストケースが、サブ集合における派生テストケースであることを示す。
記憶部13は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。
制御部14は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図1に示すように、制御部14は、算出部14aと、第1の抽出部14bと、第2の抽出部14cと、第3の抽出部14dと、作成部14eと、表示制御部14fとを有する。
算出部14aは、テストケース集合ファイル13aが示すテストケースの集合に含まれる代表テストケースと、複数の派生テストケースのそれぞれとの異なる度合いを示す距離を算出する。算出部14aの一態様について説明する。図4は、実施例に係る算出部が実行する処理の一例について説明するための図である。例えば、算出部14aは、入力部11からテスト仕様書作成処理を実行する指示が入力されると、まず、テストケース集合ファイル13aを取得する。そして、算出部14aは、テストケーステーブル13bに、テストケース集合ファイル13aが示すテストケースの個数分のレコードを追加する。続いて、算出部14aは、図4の例に示すように、追加されたレコードの「No.」の項目に、テストケース集合ファイル13aが示すテストケースの番号を登録する。また、算出部14aは、図4の例に示すように、追加されたレコードの「テストデータ条件」の項目に、テストケース集合ファイル13aが示すテストケースを登録する。このようにして算出部14aは、テストケース集合ファイル13aに含まれる全てのテストケースと番号をテストケーステーブル13bに登録する。
そして、算出部14aは、テスト仕様書作成処理を実行する指示に付加された代表テストケースの番号を取得する。そして、算出部14aは、テストケーステーブル13bの全レコードの中から、取得した番号が「No.」の項目に登録されたレコードを特定する。例えば、図4の例に示すテストケーステーブル13bが記憶部13に記憶され、取得した番号が「1」である場合には、算出部14aは、次の処理を行う。すなわち、算出部14aは、図4の例に示すテストケーステーブル13bの全レコードの中から、番号「1」が「No.」の項目に登録された1番目のレコードを特定する。そして、算出部14aは、テストケーステーブル13bにおいて、特定したレコードの「代表」の項目に、代表テストケースであることを示す「t」を登録する。例えば、算出部14aは、図4の例に示すように、テストケーステーブル13bの1番目のレコードの「代表」の項目に、「t」を登録する。
そして、算出部14aは、テストケーステーブル13bにおいて、代表テストケースであることを示す「t」が「代表」の項目に登録されたレコード以外の全てのレコードの「代表」の項目に、派生テストケースであることを示す「f」を登録する。例えば、算出部14aは、先の図4の例に示すように、テストケーステーブル13bの2番目のレコードから18番目のレコードまでの各レコードの「代表」の項目に、「f」を登録する。
続いて、算出部14aは、テストケーステーブル13bにおいて、「代表」の項目に「t」が登録されたレコードの「テストデータ条件」の項目に登録された代表テストケースを取得する。
そして、算出部14aは、テストケーステーブル13bにおいて、「代表」の項目に「f」が登録されたレコードのうち、未選択のレコードがあるか否かを判定する。未選択のレコードがある場合には、算出部14aは、未選択のレコードを1つ選択する。そして、算出部14aは、選択したレコードの「テストデータ条件」の項目に登録されたテストケース(派生テストケース)を取得する。
続いて、算出部14aは、距離算出処理を実行する。距離算出処理において、算出部14aは、取得した代表テストケースの全ての節を図示しない代表節集合テーブルに格納する。ここで、テストケースの節について説明する。テストケースの節とは、例えば、記号「∧」で結ばれた変数の値のことを指す。例えば、先の図2の例に示すテストケース集合ファイル13aに含まれる番号が「1」のテストケースの節は、「A==a1」、「B==b3」、・・・、「L==l3」の各々である。
そして、算出部14aは、取得した派生テストケースの全ての節を図示しない派生節集合テーブルに格納する。続いて、算出部14aは、距離を示す距離変数の値を「0」に設定して、距離変数の値を初期化する。なお、ここでいう「距離」は、代表テストケースと派生テストケースとの異なる度合いを示す。
続いて、算出部14aは、代表節集合テーブル内に未選択の節があるか否かを判定する。未選択の節がある場合には、算出部14aは、代表節集合テーブル内の未選択の節を1つ選択する。そして、算出部14aは、選択した代表節集合テーブル内の節が、派生節集合テーブル内にあるか否かを判定する。選択した代表節集合テーブル内の節が、派生節集合テーブル内にない場合には、算出部14aは、距離変数の値を1インクリメントする。
そして、算出部14aは、代表節集合テーブル内に未選択の節がなくなるまで、1つずつ、未選択の節を選択する。また、算出部14aは、未選択の節を選択するたびに、選択した代表節集合テーブル内の節が、派生節集合テーブル内にあるか否かを判定する上述した処理を行う。そして、選択した代表節集合テーブル内の節が、派生節集合テーブル内にない場合には、算出部14aは、距離変数の値を1インクリメントする上述した処理を行う。これにより、代表テストケースにあって、派生テストケースにない節の個数が距離変数に設定される。
続いて、算出部14aは、派生節集合テーブル内に未選択の節があるか否かを判定する。未選択の節がある場合には、算出部14aは、派生節集合テーブル内の未選択の節を1つ選択する。そして、算出部14aは、選択した派生節集合テーブル内の節が、代表節集合テーブル内にあるか否かを判定する。選択した派生節集合テーブル内の節が、代表節集合テーブル内にない場合には、算出部14aは、距離変数の値を1インクリメントする。
そして、算出部14aは、派生節集合テーブル内に未選択の節がなくなるまで、1つずつ、未選択の節を選択する。また、算出部14aは、未選択の節を選択するたびに、選択した派生節集合テーブル内の節が、代表節集合テーブル内にあるか否かを判定する上述した処理を行う。そして、選択した派生節集合テーブル内の節が、代表節集合テーブル内にない場合には、算出部14aは、距離変数の値を1インクリメントする上述した処理を行う。これにより、派生テストケースにあって、代表テストケースにない節の個数が距離変数に更に加えられる。すなわち、距離変数が示す距離の値は、代表テストケースにあって、派生テストケースにない節の個数と、派生テストケースにあって、代表テストケースにない節の個数との和になる。また、本実施例でいう距離は、代表テストケースにあって、派生テストケースにない節の個数と、派生テストケースにあって、代表テストケースにない節の個数との和である。そして、算出部14aは、距離算出処理を終了する。
距離算出処理が終了すると、算出部14aは、テストケーステーブル13bにおいて、選択したレコード(派生テストケースを有するレコード)の「距離スコア」の項目に、距離変数の値、すなわち、距離を設定する。
そして、算出部14aは、テストケーステーブル13bにおいて、「代表」の項目に「f」が登録されたレコードの中に未選択のレコードがなくなるまで、「代表」の項目に「f」が登録されたレコードを1つずつ選択する。そして、算出部14aは、レコードを1つずつ選択するたびに、選択したレコードの「テストデータ条件」の項目に登録されたテストケース(派生テストケース)を取得する上述した処理を行う。そして、算出部14aは、再び距離算出処理を実行する。距離算出処理が終了すると、算出部14aは、テストケーステーブル13bにおいて、選択したレコード(派生テストケースを有するレコード)の「距離スコア」の項目に、距離変数の値を設定する上述した処理を行う。上述した処理を実行することで、算出部14aは、代表テストケースと、全ての派生テストケースとの各距離を算出し、算出した距離をテストケーステーブル13bに登録する。図5は、実施例に係る算出部が実行する処理の一例を説明するための図である。算出部14aは、代表テストケースと、全ての派生テストケースとの各距離を算出し、図5の例に示すように、派生テストケースが「テストデータ条件」の項目に登録されたレコードの「距離スコア」の項目に、距離を登録する。
第1の抽出部14bは、代表テストケースと派生テストケースとの距離に基づいて、派生テストケースの中から、代表テストケースとの距離が所定値以上となるテストケースの集合であるサブ集合を抽出する。そして、第1の抽出部14bは、抽出したサブ集合から、サブ集合における代表テストケースを抽出する。
第1の抽出部14bの一態様について説明する。例えば、第1の抽出部14bは、テストケーステーブル13bにおいて、「代表」の項目に「f」が登録された選択済みのレコードを未選択とした上で、次の処理を行う。すなわち、第1の抽出部14bは、テストケーステーブル13bにおいて、「代表」の項目に「f」が登録されたレコードの中に、未選択のレコードがあるか否かを判定する。未選択のレコードがある場合には、第1の抽出部14bは、未選択のレコードを1つ選択する。そして、第1の抽出部14bは、選択したレコードの「距離スコア」の項目に登録された距離を取得する。
続いて、第1の抽出部14bは、取得した距離が、所定の閾値、例えば、14以上であるか否かを判定する。取得した距離が所定の閾値以上である場合には、第1の抽出部14bは、選択したレコードの「テストデータ条件」の項目に登録されたテストケース及び「No.」の項目に登録された番号を取得する。そして、第1の抽出部14bは、サブ集合テーブル13cにレコードを追加して、追加されたレコードの「NO.」の項目に、取得した番号を登録するとともに、「テストデータ条件」の項目に、取得したテストケースを登録する。続いて、第1の抽出部14bは、テストケーステーブル13bにおいて選択したレコードを削除する。
そして、第1の抽出部14bは、テストケーステーブル13bにおいて、「代表」の項目に「f」が登録されたレコードの中に、未選択のレコードがなくなるまで、1つずつ、未選択のレコードを選択する。また、第1の抽出部14bは、未選択のレコードを選択するたびに、選択したレコードの「距離スコア」の項目に登録された距離を取得する上述した処理を行う。そして、第1の抽出部14bは、取得した距離が、所定の閾値以上であるか否かを判定する上述した処理を行う。そして、取得した距離が所定の閾値以上である場合には、第1の抽出部14bは、選択したレコードの「テストデータ条件」の項目に登録されたテストケース及び「No.」の項目に登録された番号を取得する上述した処理を行う。そして、第1の抽出部14bは、サブ集合テーブル13cにレコードを追加して、追加されたレコードの「NO.」の項目に、取得した番号を登録するとともに、「テストデータ条件」の項目に、取得したテストケースを登録する上述した処理を行う。続いて、第1の抽出部14bは、テストケーステーブル13bにおいて選択したレコードを削除する上述した処理を行う。上述した処理を実行することにより、第1の抽出部14bは、距離が所定の閾値以上となる派生テストケースを、テストケーステーブル13bからサブ集合テーブル13cに移動する。すなわち、第1の抽出部14bは、代表テストケースと派生テストケースとの距離に基づいて、派生テストケースの中から、代表テストケースとの距離が所定値以上となるサブ集合を抽出する。
図6は、実施例に係る第1の抽出部が実行する処理の一例を説明するための図である。ここで、上述した所定の閾値が「14」である場合について説明する。図6の例に示すように、第1の抽出部14bは、テストケーステーブル13bにおいて、所定の閾値「14」以上のテストケースを番号とともにサブ集合テーブル13cに登録する。そして、図6の例に示すように、第1の抽出部14bは、テストケーステーブル13bにおいて選択したレコードを削除する。
そして、第1の抽出部14bは、サブ集合テーブル13cに登録された派生テストケースと、ベクトル重心との距離を算出する。ここで、テストケースとベクトル重心との距離の算出方法の一例について、図7、図8を参照して説明する。図7及び図8は、派生テストケースと、ベクトル重心との距離の算出方法の一例について説明するための図である。ここで、サブ集合テーブル13bに登録された1つ目のテストケースが(A=a1)∧(B=b2)∧(C=c1)∧(D=d2)であり、2つ目のテストケースが(A=a1)∧(B=b2)∧(C=c2)∧(D=d2)である。また、サブ集合テーブル13bに登録された3つ目のテストケースが(A=a2)∧(B=b3)∧(C=c2)∧(D=d2)であり、4つ目のテストケースが(A=a1)∧(B=b4)∧(C=c2)∧(D=d3)∧(E=e1)である。また、サブ集合テーブル13bに登録された5つ目のテストケースが(A=a1)∧(B=b2)∧(C=c3)∧(D=d2)である。サブ集合テーブル13bに上述したような5つのテストケースが登録された場合に、1つ目のテストケースのベクトル表現は、図7に示すように、(1,0,1,0,0,1,0,0,1,0,0)となる。また、2つ目のテストケースのベクトル表現は、図7に示すように、(1,0,1,0,0,0,1,0,1,0,0)となる。また、3つ目のテストケースのベクトル表現は、図7に示すように、(0,1,0,1,0,0,1,0,1,0,0)となる。また、4つ目のテストケースのベクトル表現は、図7に示すように、(1,0,0,0,1,0,1,0,0,1,1)となる。また、5つ目のテストケースのベクトル表現は、図7に示すように、(1,0,1,0,0,0,0,1,1,0,0)となる。
そして、ベクトル重心は、図8の例に示すような値となる。そして、第1の抽出部14bは、1つ目のテストケースとベクトル重心との距離を次のような式で算出する。すなわち、第1の抽出部14bは(1−0.8)2+(0−0.2)2+(1−0.6)2+(0−0.2)2+(0−0.2)2+(1−0.2)2+(0−0.6)2+(0−0.2)2+(1−0.8)2+(0−0.2)2+(0−0.2)2=1.48を算出する。
同様に、第1の抽出部14bは、2つ目のテストケースとベクトル重心との距離「0.68」を算出し、3つ目のテストケースとベクトル重心との距離「2.68」を算出する。また、第1の抽出部14bは、4つ目のテストケースとベクトル重心との距離「3.28」を算出し、5つ目のテストケースとベクトル重心との距離「1.48」を算出する。上述したような方法で、第1の抽出部14bは、派生テストケースとベクトル重心との距離を算出する。
そして、第1の抽出部14bは、ベクトル重心からの距離が最も近い派生テストケースをサブ集合における代表テストケース(サブ代表テストケース)とする。すなわち、第1の抽出部14bは、サブ集合テーブル13cにおいて、ベクトル重心からの距離が最も近い派生テストケースが「テストデータ条件」の項目に登録されたレコードの「サブ代表」の項目に、サブ代表テストケースであることを示す「t」を登録する。ここで、ベクトル重心との距離が最も近い派生テストケースは、サブ集合テーブル13cに登録された派生テストケースの中で他の派生テストケースと同一の節を最も多く有する。
次に、第1の抽出部14bは、サブ集合テーブル13cにおいて、サブ代表テストケースが「テストデータ条件」の項目に登録されたレコード以外の全てのレコードの「サブ代表」の項目に、サブ集合における派生テストケースであることを示す「f」を登録する。図9は、実施例に係る第1の抽出部が実行する処理の一例を説明するための図である。図9の例に示すように、第1の抽出部14bは、ベクトル重心からの距離が最も近い、番号が「12」の派生テストケースが「テストデータ条件」の項目に登録されたレコードの「サブ代表」の項目に「t」を登録する。また、図9の例に示すように、第1の抽出部14bは、サブ代表テストケースが「テストデータ条件」の項目に登録されたレコード以外の全てのレコードの「サブ代表」の項目に、サブ集合における派生テストケースであることを示す「f」を登録する。
上述した処理を実行することによって、第1の抽出部14bは、サブ代表テストケースとサブ集合における派生テストケースとを抽出する。
第2の抽出部14cは、代表テストケースと派生テストケースとの差分を抽出する。第2の抽出部14cの一態様について説明する。第1の抽出部14bによりサブ代表テストケースとサブ集合における派生テストケースとが抽出されると、第2の抽出部14cは、次の処理を行う。すなわち、第2の抽出部14cは、テストケーステーブル13bにおいて、「代表」の項目に「f」が登録されたレコードの「テストデータ条件」の項目に登録されたテストケースを差分分析対象集合として抽出する。これに加えて、第2の抽出部14cは、サブ集合テーブル13cにおいて、「サブ代表」の項目に「t」が登録されたテストケースをも差分分析対象集合として抽出する。
そして、第2の抽出部14cは、差分分析対象集合内のテストケースの中に、未選択のテストケースがあるか否かを判定する。未選択のテストケースがある場合には、第2の抽出部14cは、未選択のテストケースを1つ選択する。そして、第2の抽出部14cは、第1の差分抽出処理を実行する。第1の差分抽出処理において、第2の抽出部14cは、代表テストケースの全ての節を図示しない代表節集合テーブルに格納する。続いて、第2の抽出部14cは、選択したテストケースの全ての節を図示しない派生節集合テーブルに格納する。
続いて、第2の抽出部14cは、差分テストケーステーブル13dにレコードを追加し、追加したレコードの「No.」の項目に、選択したテストケースの番号を登録し、追加したレコードの「親No.」の項目に、代表テストケースの番号を登録する。
そして、第2の抽出部14cは、派生節集合テーブル内に、未選択の節があるか否かを判定する。未選択の節がある場合には、第2の抽出部14cは、未選択の節を1つ選択する。そして、第2の抽出部14cは、選択した節が、代表節集合テーブル内にあるか否かを判定する。選択した節が、代表節集合テーブル内にない場合には、第2の抽出部14cは、差分テストケーステーブル13dに追加したレコードの「追加条件」の項目に、選択した節を追加する。このように、差分テストケーステーブル13dが有する「追加条件」の項目には、派生テストケースまたはサブ代表テストケースにあって、代表テストケースにない節が登録される。
そして、第2の抽出部14cは、派生節集合テーブル内に、未選択の節がなくなるまで、未選択の節を1つずつ選択する。また、第2の抽出部14cは、未選択の節を選択するたびに、選択した節が、代表節集合テーブル内にあるか否かを判定する上述した処理を行う。そして、選択した節が、代表節集合テーブル内にない場合には、第2の抽出部14cは、差分テストケーステーブル13dに追加したレコードの「追加条件」の項目に、選択した節を追加する上述した処理を行う。上述した処理を実行することにより、第2の抽出部14cは、選択した派生テストケースの全ての節について、代表テストケースにあるか否かの判定を行い、節が代表テストケースにない場合には、追加したレコードの「追加条件」の項目に登録する。図10は、実施例に係る第2の抽出部が実行する処理の一例を説明するための図である。図10の例に示すように、第2の抽出部14cは、差分テストケーステーブル13dが有する「追加条件」の項目に、派生テストケースまたはサブ代表テストケースにあって、代表テストケースにない節を登録する。
そして、派生節集合テーブル内に、未選択の節がない場合には、第2の抽出部14cは、代表節集合テーブル内に、未選択の節があるか否かを判定する。未選択の節がある場合には、第2の抽出部14cは、未選択の節を1つ選択する。そして、第2の抽出部14cは、選択した節が、派生節集合テーブル内にあるか否かを判定する。選択した節が、派生節集合テーブル内にない場合には、第2の抽出部14cは、差分テストケーステーブル13dに追加したレコードの「削除条件」の項目に、選択した節を追加する。このように、差分テストケーステーブル13dが有する「削除条件」の項目には、代表テストケースにあって、派生テストケースまたはサブ代表テストケースにない節が登録される。
そして、第2の抽出部14cは、代表節集合テーブル内に、未選択の節がなくなるまで、未選択の節を1つずつ選択する。また、第2の抽出部14cは、未選択の節を選択するたびに、選択した節が、派生節集合テーブル内にあるか否かを判定する上述した処理を行う。そして、選択した節が、派生節集合テーブル内にない場合には、第2の抽出部14cは、差分テストケーステーブル13dに追加したレコードの「削除条件」の項目に、選択した節を追加する上述した処理を行う。上述した処理を実行することにより、第2の抽出部14cは、選択した代表テストケースの全ての節について、派生テストケースにあるか否かの判定を行い、節が派生テストケースにない場合には、追加したレコードの「削除条件」の項目に登録する。図11は、実施例に係る第2の抽出部が実行する処理の一例を説明するための図である。図11の例に示すように、第2の抽出部14cは、差分テストケーステーブル13dが有する「削除条件」の項目に、代表テストケースにあって、派生テストケースまたはサブ代表テストケースにない節を登録する。そして、第2の抽出部14cは、第1の差分抽出処理を終了する。
第1の差分抽出処理が終了すると、第2の抽出部14cは、差分分析対象集合内のテストケースの中に、未選択のテストケースがなくなるまで、未選択のテストケースを1つずつ選択する。そして、第2の抽出部14cは、未選択のテストケースを選択するたびに、第1の差分抽出処理を実行する。すなわち、第2の抽出部14cは、差分分析対象集合内の全てのテストケースについて、代表テストケースとの差分を抽出する。
第3の抽出部14dは、サブ代表テストケースと、サブ集合における派生テストケースとの差分を抽出する。
第3の抽出部14dの一態様について説明する。第2の抽出部14cにより、差分分析対象集合内の全てのテストケースについて、代表テストケースとの差分が抽出されると、第3の抽出部14dは、次の処理を行う。すなわち、サブ集合テーブル13cにおいて、「サブ代表」の項目に「f」が登録されたレコードの中に、未選択のレコードがあるか否かを判定する。未選択のレコードがある場合には、第3の抽出部14dは、未選択のレコードを1つ選択する。そして、第3の抽出部14dは、選択したレコードの「テストデータ条件」に登録されたサブ集合における派生テストケースを選択する。そして、第3の抽出部14dは、第2の差分抽出処理を実行する。第2の差分抽出処理において、第3の抽出部14dは、サブ代表テストケースの全ての節を図示しない代表節集合テーブルに格納する。続いて、第3の抽出部14dは、選択したサブ集合における派生テストケースの全ての節を図示しない派生節集合テーブルに格納する。
続いて、第3の抽出部14dは、差分テストケーステーブル13dにレコードを追加し、追加したレコードの「No.」の項目に、選択したサブ集合における派生テストケースの番号を登録する。また、第3の抽出部14dは、追加したレコードの「親No.」の項目に、サブ代表テストケースの番号を登録する。
そして、第3の抽出部14dは、派生節集合テーブル内に、未選択の節があるか否かを判定する。未選択の節がある場合には、第3の抽出部14dは、未選択の節を1つ選択する。そして、第3の抽出部14dは、選択した節が、代表節集合テーブル内にあるか否かを判定する。選択した節が、代表節集合テーブル内にない場合には、第3の抽出部14dは、差分テストケーステーブル13dに追加したレコードの「追加条件」の項目に、選択した節を追加する。このように、差分テストケーステーブル13dが有する「追加条件」の項目には、サブ集合における派生テストケースにあって、サブ代表テストケースにない節が登録される。
そして、第3の抽出部14dは、派生節集合テーブル内に、未選択の節がなくなるまで、未選択の節を1つずつ選択する。また、第3の抽出部14dは、未選択の節を選択するたびに、選択した節が、代表節集合テーブル内にあるか否かを判定する上述した処理を行う。そして、選択した節が、代表節集合テーブル内にない場合には、第3の抽出部14dは、差分テストケーステーブル13dに追加したレコードの「追加条件」の項目に、選択した節を追加する上述した処理を行う。上述した処理を実行することにより、第3の抽出部14dは、選択したサブ集合における派生テストケースの全ての節について、次のような処理を行う。すなわち、第3の抽出部14dは、サブ代表テストケースにあるか否かの判定を行い、節がサブ代表テストケースにない場合には、追加したレコードの「追加条件」の項目に登録する。図12は、実施例に係る第3の抽出部が実行する処理の一例を説明するための図である。図12の例に示すように、第3の抽出部14dは、差分テストケーステーブル13dが有する「追加条件」の項目に、サブ集合における派生テストケースにあって、サブ代表テストケースにない節を登録する。
そして、派生節集合テーブル内に、未選択の節がない場合には、第3の抽出部14dは、代表節集合テーブル内に、未選択の節があるか否かを判定する。未選択の節がある場合には、第3の抽出部14dは、未選択の節を1つ選択する。そして、第3の抽出部14dは、選択した節が、派生節集合テーブル内にあるか否かを判定する。選択した節が、派生節集合テーブル内にない場合には、第3の抽出部14dは、差分テストケーステーブル13dに追加したレコードの「削除条件」の項目に、選択した節を追加する。このように、差分テストケーステーブル13dが有する「削除条件」の項目には、サブ代表テストケースにあって、サブ集合における派生テストケースにない節が登録される。
そして、第3の抽出部14dは、代表節集合テーブル内に、未選択の節がなくなるまで、未選択の節を1つずつ選択する。また、第3の抽出部14dは、未選択の節を選択するたびに、選択した節が、派生節集合テーブル内にあるか否かを判定する上述した処理を行う。そして、選択した節が、派生節集合テーブル内にない場合には、第3の抽出部14dは、差分テストケーステーブル13dに追加したレコードの「削除条件」の項目に、選択した節を追加する上述した処理を行う。上述した処理を実行することにより、第3の抽出部14dは、選択したサブ代表テストケースの全ての節について、次のような処理を行う。すなわち、第3の抽出部14dは、サブ集合における派生テストケースにあるか否かの判定を行い、節がサブ集合における派生テストケースにない場合には、追加したレコードの「削除条件」の項目に登録する。図13は、実施例に係る第3の抽出部が実行する処理の一例を説明するための図である。図13の例に示すように、第3の抽出部14dは、差分テストケーステーブル13dが有する「削除条件」の項目に、サブ代表テストケースにあって、サブ集合における派生テストケースにない節を登録する。そして、第3の抽出部14dは、第2の差分抽出処理を終了する。
第2の差分抽出処理が終了すると、第3の抽出部14dは、サブ集合テーブル13cにおいて、「サブ代表」の項目に「f」が登録されたレコードの中に、未選択のレコードがなくなるまで、未選択のレコードを1つずつ選択する。そして、第3の抽出部14dは、未選択のレコードを選択するたびに、選択したレコードの「テストデータ条件」に登録されたサブ集合における派生テストケースを選択する。そして、第3の抽出部14dは、再び、第2の差分抽出処理を実行する。すなわち、第3の抽出部14dは、サブ集合における全ての派生テストケースについて、サブ代表テストケースとの差分を抽出する。
作成部14eは、派生テストケースと代表テストケースとの差分、及び、サブ代表テストケースとサブ集合における派生テストケースとの差分が記載されたテスト仕様書を作成する。例えば、作成部14eは、差分テストケーステーブル13dの「追加条件」の項目に登録された節を、テスト仕様書テンプレート13eの「テスト条件」の項目に登録する。これに加えて、作成部14eは、差分テストケーステーブル13dの「削除条件」の項目に登録された節を、テスト仕様書テンプレート13eの「(削除条件)」の項目に登録する。さらに、作成部14eは、差分テストケーステーブル13dの「NO.」の項目に登録された番号を、テスト仕様書テンプレート13eの「No.」の項目に登録する。これにより、先の図3に示すような差分ベーステスト仕様書13fが作成される。作成部14eは、作成した差分ベーステスト仕様書13fを記憶部13に格納する。
表示制御部14fは、各種の情報の表示を制御する。例えば、表示制御部14fは、入力部11から、差分ベーステスト仕様書を表示する指示が入力されると、記憶部13から差分ベーステスト仕様書13fを取得し、差分ベーステスト仕様書13fを表示するように、表示部12を制御する。
制御部14は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などのハードワイヤードロジックである。または、制御部14は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などにプログラムを実行させることにより実現される。
[処理の流れ]
次に、本実施例に係るテスト仕様書作成装置10の処理の流れを説明する。図14は、実施例に係るテスト仕様書作成処理の手順を示すフローチャートである。このテスト仕様書作成処理の実行タイミングとしては様々なタイミングが考えられる。例えば、テスト仕様書作成処理は、テスト仕様書作成処理を実行する指示が入力部11から制御部14に入力された場合に、制御部14により実行される。
図14に示すように、算出部14aは、テストケース集合ファイル13aに含まれる全てのテストケースと番号をテストケーステーブル13bに登録する(S101)。そして、算出部14aは、テスト仕様書作成処理を実行する指示に付加された代表テストケースの番号を取得し、テストケーステーブル13bの全レコードの中から、取得した番号が「No.」の項目に登録されたレコードを特定する。そして、算出部14aは、テストケーステーブル13bにおいて、特定したレコードの「代表」の項目に、代表テストケースであることを示す「t」を登録する(S102)。
そして、算出部14aは、テストケーステーブル13bにおいて、代表テストケースであることを示す「t」が「代表」の項目に登録されたレコード以外の全てのレコードの「代表」の項目に、派生テストケースであることを示す「f」を登録する(S103)。
続いて、算出部14aは、テストケーステーブル13bにおいて、「代表」の項目に「t」が登録されたレコードの「テストデータ条件」の項目に登録された代表テストケースを取得する(S104)。
そして、算出部14aは、テストケーステーブル13bにおいて、「代表」の項目に「f」が登録されたレコードのうち、未選択のレコードがあるか否かを判定する(S105)。未選択のレコードがある場合(S105;Yes)には、算出部14aは、未選択のレコードを1つ選択する(S106)。そして、算出部14aは、選択したレコードの「テストデータ条件」の項目に登録されたテストケース(派生テストケース)を取得する(S107)。
続いて、算出部14aは、距離算出処理を実行する(S108)。図15は、実施例に係る距離算出処理の手順を示すフローチャートである。図15に示すように、算出部14aは、取得した代表テストケースの全ての節を図示しない代表節集合テーブルに格納する(S201)。
そして、算出部14aは、取得した派生テストケースの全ての節を図示しない派生節集合テーブルに格納する(S202)。続いて、算出部14aは、距離を示す距離変数の値を「0」に設定して、距離変数の値を初期化する(S203)。
続いて、算出部14aは、代表節集合テーブル内に未選択の節があるか否かを判定する(S204)。未選択の節がある場合(S204;Yes)には、算出部14aは、代表節集合テーブル内の未選択の節を1つ選択する(S205)。そして、算出部14aは、選択した代表節集合テーブル内の節が、派生節集合テーブル内にあるか否かを判定する(S206)。選択した代表節集合テーブル内の節が、派生節集合テーブル内にある場合(S206;Yes)には、算出部14aは、S204に戻る。一方、選択した代表節集合テーブル内の節が、派生節集合テーブル内にない場合(S206;No)には、算出部14aは、距離変数の値を1インクリメントし(S207)、S204に戻る。
未選択の節がない場合(S204;No)には、算出部14aは、派生節集合テーブル内に未選択の節があるか否かを判定する(S208)。未選択の節がある場合(S208;Yes)には、算出部14aは、派生節集合テーブル内の未選択の節を1つ選択する(S209)。そして、算出部14aは、選択した派生節集合テーブル内の節が、代表節集合テーブル内にあるか否かを判定する(S210)。選択した派生節集合テーブル内の節が、代表節集合テーブル内にある場合(S210;Yes)には、算出部14aは、S208に戻る。一方、選択した派生節集合テーブル内の節が、代表節集合テーブル内にない場合(S210;No)には、算出部14aは、距離変数の値を1インクリメントし(S211)、S208に戻る。また、派生節集合テーブル内に未選択の節がない場合(S208;No)には、算出部14aは、処理結果を制御部14の内部メモリに格納し、リターンする。
図14の説明に戻り、算出部14aは、テストケーステーブル13bにおいて、選択したレコード(派生テストケースを有するレコード)の「距離スコア」の項目に、距離変数の値、すなわち、距離を登録し(S109)、S105に戻る。
未選択のレコードがない場合(S105;No)には、第1の抽出部14bは、テストケーステーブル13bにおいて、「代表」の項目に「f」が登録された選択済みのレコードを未選択とする(S110)。そして、第1の抽出部14bは、テストケーステーブル13bにおいて、「代表」の項目に「f」が登録されたレコードの中に、未選択のレコードがあるか否かを判定する(S111)。未選択のレコードがある場合(S111;Yes)には、第1の抽出部14bは、未選択のレコードを1つ選択する(S112)。そして、第1の抽出部14bは、選択したレコードの「距離スコア」の項目に登録された距離を取得する(S113)。
続いて、第1の抽出部14bは、取得した距離が、所定の閾値、例えば、14以上であるか否かを判定する(S114)。取得した距離が所定の閾値以上でない場合(S114;No)には、第1の抽出部14bは、S111に戻る。一方、取得した距離が所定の閾値以上である場合(S114;Yes)には、第1の抽出部14bは、選択したレコードの「テストデータ条件」の項目に登録されたテストケース及び「No.」の項目に登録された番号を取得する。そして、第1の抽出部14bは、サブ集合テーブル13cにレコードを追加して、追加されたレコードの「NO.」の項目に、取得した番号を登録するとともに、「テストデータ条件」の項目に、取得したテストケースを登録する(S115)。続いて、第1の抽出部14bは、テストケーステーブル13bにおいて選択したレコードを削除し(S116)、S111に戻る。
一方、未選択のレコードがない場合(S111;No)には、第1の抽出部14bは、サブ集合テーブル13cに登録された派生テストケースと、ベクトル重心との距離を算出する(S117)。そして、第1の抽出部14bは、ベクトル重心からの距離が最も近い派生テストケースをサブ集合における代表テストケース(サブ代表テストケース)とする。すなわち、第1の抽出部14bは、サブ集合テーブル13cにおいて、ベクトル重心からの距離が最も近い派生テストケースが「テストデータ条件」の項目に登録されたレコードの「サブ代表」の項目に、次のような値を登録する。すなわち、第1の抽出部14bは、サブ代表テストケースであることを示す「t」を登録する(S118)。
第1の抽出部14bは、サブ集合テーブル13cにおいて、サブ代表テストケースが「テストデータ条件」の項目に登録されたレコード以外の全てのレコードの「サブ代表」の項目に「f」を登録する(S119)。
第2の抽出部14cは、テストケーステーブル13bにおいて、「代表」の項目に「f」が登録されたレコードの「テストデータ条件」の項目に登録されたテストケースを差分分析対象集合として抽出する。これに加えて、第2の抽出部14cは、サブ集合テーブル13cにおいて、「サブ代表」の項目に「t」が登録されたテストケースをも差分分析対象集合として抽出する(S120)。
そして、第2の抽出部14cは、差分分析対象集合内のテストケースの中に、未選択のテストケースがあるか否かを判定する(S121)。未選択のテストケースがある場合(S121;Yes)には、第2の抽出部14cは、未選択のテストケースを1つ選択する(S122)。そして、第2の抽出部14cは、第1の差分抽出処理を実行し(S123)、S121に戻る。図16は、実施例に係る第1の差分抽出処理の手順を示すフローチャートである。図16に示すように、第2の抽出部14cは、代表テストケースの全ての節を図示しない代表節集合テーブルに格納する(S301)。続いて、第2の抽出部14cは、選択したテストケースの全ての節を図示しない派生節集合テーブルに格納する(S302)。
続いて、第2の抽出部14cは、差分テストケーステーブル13dにレコードを追加し、追加したレコードの「No.」の項目に、選択したテストケースの番号を登録し、追加したレコードの「親No.」の項目に、代表テストケースの番号を登録する(S303)。
そして、第2の抽出部14cは、派生節集合テーブル内に、未選択の節があるか否かを判定する(S304)。未選択の節がある場合(S304;Yes)には、第2の抽出部14cは、未選択の節を1つ選択する(S305)。そして、第2の抽出部14cは、選択した節が、代表節集合テーブル内にあるか否かを判定する(S306)。選択した節が、代表節集合テーブル内にある場合(S306;Yes)には、第2の抽出部14cは、S304に戻る。一方、選択した節が、代表節集合テーブル内にない場合(S306;No)には、第2の抽出部14cは、差分テストケーステーブル13dに追加したレコードの「追加条件」の項目に、選択した節を追加し(S307)、S304に戻る。
そして、派生節集合テーブル内に、未選択の節がない場合(S304;No)には、第2の抽出部14cは、代表節集合テーブル内に、未選択の節があるか否かを判定する(S308)。未選択の節がある場合(S308;Yes)には、第2の抽出部14cは、未選択の節を1つ選択する(S309)。そして、第2の抽出部14cは、選択した節が、派生節集合テーブル内にあるか否かを判定する(S310)。選択した節が、派生節集合テーブル内にある場合(S310;Yes)には、第2の抽出部14cは、S308に戻る。一方、選択した節が、派生節集合テーブル内にない場合(S310;No)には、第2の抽出部14cは、差分テストケーステーブル13dに追加したレコードの「削除条件」の項目に、選択した節を追加し(S311)、S308に戻る。
また、未選択の節がない場合(S308;No)には、第2の抽出部14cは、処理結果を制御部14の内部メモリに格納し、リターンする。
図1の説明に戻り、差分分析対象集合内のテストケースの中に、未選択のテストケースがない場合(S121;No)には、第3の抽出部14dは、次の処理を行う。すなわち、第3の抽出部14dは、サブ集合テーブル13cにおいて、「サブ代表」の項目に「f」が登録されたレコードの中に、未選択のレコードがあるか否かを判定する(S124)。未選択のレコードがある場合(S124;Yes)には、第3の抽出部14dは、未選択のレコードを1つ選択する(S125)。そして、第3の抽出部14dは、選択したレコードの「テストデータ条件」に登録されたサブ集合における派生テストケースを選択する(S126)。そして、第3の抽出部14dは、第2の差分抽出処理を実行し(S127)、S124に戻る。図17は、実施例に係る第2の差分抽出処理の手順を示すフローチャートである。図17に示すように、第3の抽出部14dは、サブ代表テストケースの全ての節を図示しない代表節集合テーブルに格納する(S401)。続いて、第3の抽出部14dは、選択したサブ集合における派生テストケースの全ての節を図示しない派生節集合テーブルに格納する(S402)。
続いて、第3の抽出部14dは、差分テストケーステーブル13dにレコードを追加し、追加したレコードの「No.」の項目に、選択したサブ集合における派生テストケースの番号を登録する。そして、第3の抽出部14dは、追加したレコードの「親No.」の項目に、サブ代表テストケースの番号を登録する(S403)。
そして、第3の抽出部14dは、派生節集合テーブル内に、未選択の節があるか否かを判定する(S404)。未選択の節がある場合(S404;Yes)には、第3の抽出部14dは、未選択の節を1つ選択する(S405)。そして、第3の抽出部14dは、選択した節が、代表節集合テーブル内にあるか否かを判定する(S406)。選択した節が、代表節集合テーブル内にある場合(S406;Yes)には、第3の抽出部14dは、S404に戻る。一方、選択した節が、代表節集合テーブル内にない場合(S406;No)には、第3の抽出部14dは、差分テストケーステーブル13dに追加したレコードの「追加条件」の項目に、選択した節を追加し(S407)、S404に戻る。
そして、派生節集合テーブル内に、未選択の節がない場合(S404;No)には、第3の抽出部14dは、代表節集合テーブル内に、未選択の節があるか否かを判定する(S408)。未選択の節がある場合(S408;Yes)には、第3の抽出部14dは、未選択の節を1つ選択する(S409)。そして、第3の抽出部14dは、選択した節が、派生節集合テーブル内にあるか否かを判定する(S410)。選択した節が、派生節集合テーブル内にある場合(S410;Yes)には、第3の抽出部14dは、S408に戻る。一方、選択した節が、派生節集合テーブル内にない場合(S410;No)には、第3の抽出部14dは、差分テストケーステーブル13dに追加したレコードの「削除条件」の項目に、選択した節を追加し(S411)、S408に戻る。代表節集合テーブル内に、未選択の節がない場合(S408;No)には、第3の抽出部14dは、処理結果を制御部14の内部メモリに格納し、リターンする。
図14の説明に戻り、サブ集合テーブル13cにおいて、「サブ代表」の項目に「f」が登録されたレコードの中に、未選択のレコードがない場合(S124;No)には、作成部14eは、差分ベーステスト仕様書13fを作成する(S128)。そして、作成部14eは、作成した差分ベーステスト仕様書13fを記憶部13に格納し(S129)、処理を終了する。
図18は、従来の技術により作成された差分ベーステスト仕様書の一例を示す図である。図18の例に示す差分ベーステスト仕様書は、派生テストケースと代表テストケースとの差分しか記載されていない。また、図18の例に示す差分ベーステスト仕様書では、番号が4〜7のテストケースにおいて、共通の節「D==d2」及び「F==f1」を有するにも関わらず、派生テストケースと代表テストケースとの差分しか記載されていないため、可読性が低下する。また、図18の例に示す差分ベーステスト仕様書は、派生テストケースの節の数を示すトータル距離スコアが「19」であり、トータル距離スコアの数の多さからも可読性が良好でないといえる。
図19は、実施例に係る差分ベーステスト仕様書の一例を示す図である。図19に示す差分ベーステスト仕様書13fは、テスト仕様書作成装置10により作成されたものである。図19の例に示す差分ベーステスト仕様書13fは、派生テストケースと代表テストケースとの差分に加え、サブ代表テストケースとサブ集合における派生テストケースとの差分が記載される。そのため、差分ベーステスト仕様書13fは、可読性の低下を抑制する。また、図19の例に示す差分ベーステスト仕様書13fは、派生テストケースの節の数を示すトータル距離スコアが「10」であり、トータル距離スコアの点からも可読性の低下が抑制されるといえる。
上述してきたように、テスト仕様書作成装置10は、テストケース集合ファイル13aが示すテストケースの集合に含まれる代表テストケースと、派生テストケースとの異なる度合いを示す距離を算出する。テスト仕様書作成装置10は、代表テストケースと派生テストケースとの距離に基づいて、派生テストケースの中から、代表テストケースとの距離が所定値以上となるテストケースの集合であるサブ集合を抽出する。そして、テスト仕様書作成装置10は、抽出したサブ集合から、サブ集合における代表テストケースを抽出する。続いて、テスト仕様書作成装置10は、代表テストケースと派生テストケースとの差分を抽出する。また、テスト仕様書作成装置10は、サブ代表テストケースと、サブ集合における派生テストケースとの差分を抽出する。テスト仕様書作成装置10は、派生テストケースと代表テストケースとの差分、及び、サブ代表テストケースとサブ集合における派生テストケースとの差分が記載されたテスト仕様書を作成する。したがって、テスト仕様書作成装置10によれば、派生テストケースと代表テストケースとの差分に加えて、サブ代表テストケースとサブ集合における派生テストケースとの差分が記載されたテスト仕様書を作成する。すなわち、テスト仕様書作成装置10によれば、同一のテストケースが重複するような派生テストケースの集合の中で、さらに、代表のテストケースと、派生テストケースの差分を抽出し、抽出した差分を記述されたテスト仕様書を作成する。それゆえ、テスト仕様書作成装置10によれば、可読性の低下が抑制されたテスト仕様書を作成することができる。
また、テスト仕様書作成装置10によれば、ベクトル重心からの距離が最も近い派生テストケースをサブ集合における代表テストケース(サブ代表テストケース)とする。すなわち、テスト仕様書作成装置10は、サブ集合テーブル13cに登録された派生テストケースの中で他の派生テストケースと同一の節を最も多く有する派生テストケースをサブ代表テストケースとする。このため、上述したトータル距離スコアが少なくなり、さらに、可読性の低下が抑制されたテスト仕様書を作成することができる。
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよい。例えば、実施例などにおいて説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。
また、各種の負荷や使用状況などに応じて、実施例などにおいて説明した各処理の各ステップでの処理を任意に細かくわけたり、あるいはまとめたりすることができる。また、ステップを省略することもできる。
また、各種の負荷や使用状況などに応じて、実施例などにおいて説明した各処理の各ステップでの処理の順番を変更できる。
また、図示した装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
[テスト仕様書作成プログラム]
また、上記のテスト仕様書作成装置10のテスト仕様書作成処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図20を用いて、上記のテスト仕様書作成装置10と同様の機能を有するテスト仕様書作成プログラムを実行するコンピュータの一例を説明する。
図20は、テスト仕様書作成プログラムを実行するコンピュータを示す図である。図20に示すように、コンピュータ300は、CPU(Central Processing Unit)310、ROM(Read Only Memory)320、HDD(Hard Disk Drive)330、RAM(Random Access Memory)340を有する。これら300〜340の各部は、バス350を介して接続される。
HDD330には、上記の実施例で示す算出部14a、第1の抽出部14b、第2の抽出部14c、第3の抽出部14d、作成部14e、表示制御部14fと同様の機能を発揮するテスト仕様書作成プログラム330aが予め記憶される。なお、テスト仕様書作成プログラム330aについては、適宜分離しても良い。
そして、CPU310が、テスト仕様書作成プログラム330aをHDD330から読み出して実行する。
そして、HDD330には、図2の例に示す記憶部13に記憶された金属モデルデータが設けられる。
そして、CPU310は、HDD330から各種のデータを読み出してRAM340に格納する。さらに、CPU310は、RAM340に格納された各種のデータを用いて、テスト仕様書作成プログラム330aを実行する。なお、RAM340に格納される各データは、常に全てのデータがRAM340に格納されなくともよく、全てのデータのうち処理に用いられるデータのみがRAM340に格納されれば良い。
なお、上記したテスト仕様書作成プログラム330aについては、必ずしも最初からHDD330に記憶させなくともよい。
例えば、コンピュータ300に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、コンピュータ300がこれらからプログラムを読み出して実行するようにしてもよい。
さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータ300に接続される「他のコンピュータ(またはサーバ)」などにプログラムを記憶させておく。そして、コンピュータ300がこれらからプログラムを読み出して実行するようにしてもよい。