(57)【特許請求の範囲】
【請求項１】
コンピュータプログラムに従いデータ処理を行うコンピュータが第１の状態から第２の状態に変化する際に前記第２の状態の決定に用いられ得るパラメータを水準とし、複数の水準のうち互いに排他的に選択され得る同種の水準のグループを因子とするとき、１以上の因子の各々から選択された１の水準の組み合わせであるパターンを示すパターンデータの１以上の集まりにより当該コンピュータプログラムに含まれるバグの検出のためのテスト仕様を示すテスト仕様データを生成するテスト仕様生成装置であって、
１以上の因子の各々を示す１以上の因子データと、前記１以上の因子データの各々に関し当該因子データにより示される因子に含まれる１以上の水準の各々を各々示す１以上の水準データと、前記１以上の水準データの各々に関し当該水準データにより示される水準が関与するバグ存在確率推定値の指標を示すバグ存在確率指標データと、を記憶する記憶手段と、
前記記憶手段に記憶されている前記因子データ、前記水準データおよび前記バグ存在確率指標データに従い、前記１以上の因子と、前記１以上の因子の各々に含まれる前記１以上の水準と、前記１以上の水準の各々に関する前記バグ存在確率推定値の指標とを表示し、テスト仕様を設計するユーザに対し前記１以上の因子の中から１以上の因子を選択し、当該選択した１以上の因子の各々に関し当該因子に含まれる１以上の水準の中から１以上の水準を選択することを促す画面である因子水準選択画面を示す因子水準選択画面データを生成する因子水準選択画面データ生成手段と、
前記因子水準選択画面データに従い前記因子水準選択画面の表示を行う装置に対し前記テスト仕様を設計するユーザが前記因子水準選択画面を見ながら行った操作に応じて当該装置により生成されたデータであって、前記因子水準選択画面に表示されている前記１以上の因子の中から前記テスト仕様を設計するユーザにより選択された１以上の因子と、当該選択された１以上の因子の各々に関し当該因子に含まれる１以上の水準の中から前記テスト仕様を設計するユーザにより選択された１以上の水準とを示すデータである選択因子水準データを取得する選択因子水準データ取得手段と、
所定の規則に従い、前記選択因子水準データ取得手段により取得された前記選択因子水準データにより示される１以上の因子の各々に関し、当該因子に含まれる前記選択因子水準データにより示される１以上の水準の中から１の水準を選択し、当該選択した１以上の水準の組み合わせであるパターンを示すパターンデータを１以上生成し、当該１以上のパターンデータを含むテスト仕様データを生成するテスト仕様データ生成手段と
を備える装置。
【請求項２】
前記テスト仕様データ生成手段により生成された前記テスト仕様データに含まれる前記１以上のパターンデータの各々に関し、当該パターンデータにより示されるパターンを表示し、バグ検出を行うユーザに対し当該パターンデータにより示されるパターンに関するバグの有無の入力を促す画面であるテスト仕様表示画面を示すテスト仕様表示画面データを生成するテスト仕様表示画面データ生成手段と、
前記テスト仕様表示画面データに従い前記テスト仕様表示画面の表示を行う装置に対し前記バグ検出を行うユーザが前記テスト仕様表示画面を見ながら行った操作に応じて当該装置により生成されたデータであって、前記テスト仕様表示画面に表示される１以上のパターンの各々に関し各々バグの有無を示すデータであるバグ検出データを取得するバグ検出データ取得手段と、
前記バグ検出データ取得手段により過去に取得された１以上のバグ検出データに基づき前記バグ存在確率指標データを生成するバグ存在確率指標データ生成手段と
を備える
請求項１に記載の装置。
【請求項３】
パターンの数の閾値を示すパターン数閾値データを取得するパターン数閾値データ取得手段と、
前記テスト仕様データ生成手段により生成されるテスト仕様データに含まれる１以上のパターンデータに関し、当該１以上のパターンデータの各々により各々示される１以上のパターンに含まれる１以上の水準の各々に関する前記バグ存在確率推定値の指標に基づき当該１以上のパターンをテスト仕様から除外した場合に増加する未検出バグ存在確率推定値の指標を示す未検出バグ存在確率指標データを生成する未検出バグ存在確率指標データ生成手段と
を備え、
前記テスト仕様データ生成手段は、前記パターン数閾値データ取得手段により取得されたパターン数閾値データにより示される閾値以下の数であり、かつ、前記所定の規則に従う条件下において、前記未検出バグ存在確率指標データ生成手段により生成される前記未検出バグ存在確率指標データにより示される前記未検出バグ存在確率推定値の指標が最小となる１以上のパターンデータを含む前記テスト仕様データを生成する
請求項１または２に記載の装置。
【請求項４】
前記テスト仕様データ生成手段により生成される１以上のパターンデータの各々に関し、当該パターンデータにより示されるパターンに従ったバグ検出に伴うコストを示すコストデータを取得するコストデータ取得手段と、
テストに伴う総コストの閾値を示す総コスト閾値データを取得する総コスト閾値データ取得手段と、
前記テスト仕様データ生成手段により生成されるテスト仕様データに含まれる１以上のパターンデータに関し、当該１以上のパターンデータの各々により各々示される１以上のパターンに含まれる１以上の水準の各々に関する前記バグ存在確率推定値の指標に基づき当該１以上のパターンをテスト仕様から除外した場合に増加する未検出バグ存在確率推定値の指標を示す未検出バグ存在確率指標データを生成する未検出バグ存在確率指標データ生成手段と、
前記テスト仕様データ生成手段により生成されるテスト仕様データに含まれる１以上のパターンデータに関し、当該１以上のパターンデータの各々により各々示される１以上のパターンに関し前記コストデータ取得手段により取得された前記コストデータにより示されるコストに基づき、当該１以上のパターンデータを含むテスト仕様データに従ったテストに伴う総コストを算出する総コスト算出手段と
を備え、
前記テスト仕様データ生成手段は、前記総コスト算出手段により算出される総コストが前記総コスト閾値データ取得手段により取得された総コスト閾値データにより示される総コスト以下であり、かつ、前記所定の規則に従う条件下において、前記未検出バグ存在確率指標データ生成手段により生成される前記未検出バグ存在確率指標データにより示される前記未検出バグ存在確率推定値の指標が最小となる１以上のパターンデータを含む前記テスト仕様データを生成する
請求項１または２に記載の装置。
【請求項５】
前記記憶手段は、前記選択因子水準データ取得手段により過去に取得された１以上の選択因子水準データを記憶し、
前記記憶手段により記憶されている前記過去に取得された１以上の選択因子水準データに基づき、テスト仕様を生成する任意のユーザにより過去に選択された任意の一の水準に関し、当該一の水準が当該一の水準が属する因子においてテスト仕様を生成する任意のユーザにより選択された確率である水準選択確率を示す水準選択確率データを生成する水準選択確率データ生成手段を備え、
前記因子水準選択画面データ生成手段は、前記１以上の因子と、前記１以上の因子の各々に含まれる前記１以上の水準と、前記１以上の水準の各々に関する前記バグ存在確率推定値の指標とに加え、前記水準選択確率データ生成手段により生成される前記水準選択確率データに従い、前記１以上の水準の各々に関する前記水準選択確率を表示する画面である前記因子水準選択画面を示す前記因子水準選択画面データを生成する
請求項１乃至４のいずれかに記載の装置。
【請求項６】
前記記憶手段は、前記選択因子水準データ取得手段により過去に取得された１以上の選択因子水準データを記憶し、
前記選択因子水準データ取得手段により取得された前記選択因子水準データにより、新たな一の因子が選択されたことが示された場合、前記記憶手段に記憶されている前記過去に取得された１以上の選択因子水準データに基づき、テスト仕様を生成する任意のユーザにより当該一の因子とともに過去に選択された因子の各々に関し、当該因子が選択された確率である因子選択確率を示す因子選択確率データを生成する因子選択確率データ生成手段と、
前記因子選択確率データ生成手段により生成された前記因子選択確率データに基づき所定の規則に従い１以上の因子を選択し、前記テスト仕様を設計するユーザに対し当該１以上の因子の選択を促す画面である推奨因子表示画面を示す推奨因子表示画面データを生成する推奨因子表示画面データ生成手段と
を備える
請求項１乃至５のいずれかに記載の装置。
【請求項７】
テスト対象のコンピュータプログラムに従ったデータ処理を行うプログラム実行手段と、
前記テスト仕様表示画面の表示を行う装置に対し、前記テスト対象のコンピュータプログラムに従って生成される画面を示す画面データを送信する送信手段と、
前記送信手段により送信された画面データに従い前記テスト仕様表示画面の表示を行う装置において表示された画面に対し前記バグ検出を行うユーザが入力したデータを前記テスト仕様表示画面の表示を行う装置から受信する受信手段と、
前記受信手段により受信されたデータを前記テスト対象のコンピュータプログラムに従ったデータ処理におけるパラメータを示すデータとして前記プログラム実行手段に引き渡すデータ引渡手段と
を備える請求項２に記載の装置。
【請求項８】
コンピュータを、請求項１に記載の装置が備える前記記憶手段、前記因子水準選択画面データ生成手段、前記選択因子水準データ取得手段および前記テスト仕様データ生成手段として機能させるプログラム。
【請求項９】
前記コンピュータを、請求項２に記載の装置が備える前記テスト仕様表示画面データ生成手段、前記バグ検出データ取得手段および前記バグ存在確率指標データ生成手段として機能させる請求項８に記載のプログラム。
【請求項１０】
前記コンピュータを、請求項３に記載の装置が備える前記パターン数閾値データ取得手段、前記未検出バグ存在確率指標データ生成手段および前記テスト仕様データ生成手段として機能させる請求項８または９に記載のプログラム。
【請求項１１】
前記コンピュータを、請求項４に記載の装置が備える前記コストデータ取得手段、前記総コスト閾値データ取得手段、前記未検出バグ存在確率指標データ生成手段、前記総コスト算出手段および前記テスト仕様データ生成手段として機能させる請求項８または９に記載のプログラム。
【請求項１２】
前記コンピュータを、請求項５に記載の装置が備える前記記憶手段、前記水準選択確率データ生成手段および前記因子水準選択画面データ生成手段として機能させる請求項８乃至１１のいずれかに記載のプログラム。
【請求項１３】
前記コンピュータを、請求項６に記載の装置が備える前記記憶手段、前記因子選択確率データ生成手段および前記推奨因子表示画面データ生成手段として機能させる請求項８乃至１２のいずれかに記載のプログラム。
【請求項１４】
前記コンピュータを、請求項７に記載の装置が備える前記プログラム実行手段、前記送信手段、前記受信手段および前記データ引渡手段として機能させる請求項９に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータプログラムに含まれる可能性のあるバグを検出するための技術に関する。
【背景技術】
【０００２】
コンピュータに対するデータ処理の指示群であるコンピュータプログラム（以下、単に「プログラム」とも呼ぶ）には、プログラミング時に生じたエラーであるバグが含まれている可能性がある。プログラマーは通常、リリース前のプログラムに従ったデータ処理を実際にコンピュータに行わせ、ある状態のコンピュータに対しサンプルとしての操作を行い、その操作に応じてコンピュータが意図した状態に変化するか否かを確認する。以下、本願においてこの状態変化の確認作業を「テスト」と呼ぶ。
【０００３】
上記のテストにおいてコンピュータが意図せぬ状態に変化した場合、その前後の状態および操作に関連するプログラム内のコード群の中にバグが存在していることが分かり、バグの検出がなされたことになる。
【０００４】
プログラマーは、上記のようにバグの検出を行うと、関連するコード群を読み解きながら、バグの特定および修正を行う。
【０００５】
上記のバグ特定の作業を軽減するための技術として、例えば特許文献１には、コンピュータが意図せぬ状態変化をしたケース（反例）を多数集積し、それらの反例に関与する処理のうち登場頻度が高い処理を特定することで、バグの存在箇所の推測を可能とする技術が提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−２０５０６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記のバグ検出のためのテストを網羅的かつ効率的に行うためには、テスト作業を行う前にテスト仕様を決定しておく必要がある。テスト仕様とは、「Aという状態のコンピュータに対し、Xという操作を行い、Bという状態に正しく変化したか否かを確認せよ」というバグ検出のための作業を、コンピュータが取り得る多数の状態の各々に関し、ユーザが行う可能性のある様々な操作について列挙したものである。
【０００８】
いったん上記のようなテスト仕様が準備されると、バグ検出の作業は比較的単純な作業となるため、低コストで高い精度のバグ検出が可能となる。
【０００９】
テスト仕様の作成にあたり、コンピュータが取り得る状態はプログラムの仕様書などから特定され、通常その数は有限である。一方、コンピュータの状態を変化させ得る操作は無数に有り得る。
【００１０】
例えば、プログラムに従いコンピュータがユーザに対しデータ入力を促すテキストボックスを表示している状態において、ユーザはそのテキストボックスに入力する可能性のある文字列は無限にある。従って、コンピュータの状態が正しく変化するか否かを確認するために、それら全ての文字列を入力してみることはできない。
【００１１】
ただし、例えばテキストボックスに「あ」を入力した場合に正しい状態に変化する場合、「い」を入力した場合にも正しい状態に変化する確率は極めて高い。それらのデータはいずれも全角ひらがな１文字であり、その属性がほぼ同一であるためである。従って、「全角ひらがな１文字の入力」という操作のパターンに関し、例えば「あ」の入力といったそのパターンに従った操作を１つ行ってテストを行えば、同じパターンに従った他の操作を繰り返す必要はない。すなわち、ある状態のコンピュータに対し、無数の操作が行われる可能性があっても、それらをパターン化することで、有限数のテストによりバグ検出の目的を達することができる。
【００１２】
操作をパターン化する手順は例えば以下のとおりである。まず、コンピュータの状態変化に影響を与え得る要因を特定する。上記のテキストボックスの例においては、例えば入力する文字列の属性である「半角／全角」「文字種別」「文字数」が状態変化に影響する要因として考えられる。本願において、コンピュータの状態変化に影響を与え得ると思われるこれらの要因を「因子」と呼ぶ。
【００１３】
次に、各因子に関し、可能性のある具体的な操作内容を1以上（通常は複数）のグループに分類する。例えば、テキストボックスに入力される文字列は、因子「半角／全角」に関しては、例えば「半角」「全角」「半角全角混合」のように分類することができる。また、因子「文字種別」に関しては、例えば「ひらがな」「カタカナ」「漢字」「数字」「記号」「英大文字」「英小文字」「複数文字種別混合」のように分類することができる。また、因子「文字数」に関しては、例えば「０文字」「１文字」「２文字以上、最大文字数未満」「最大文字数」のように分類することができる。これらの分類、すなわち、各因子に着目して具体的な操作をグループ化したものを、本願において「水準」と呼ぶ。
【００１４】
上記のように因子と水準を決定すると、続いて、各因子から１つずつ水準を選択し、それらの水準の組み合わせを１つのパターンとして生成する。そのように生成されるパターンが、１つのテストの内容を示す。
【００１５】
例えば、因子「全角／半角」に関して水準「全角」を選択し、因子「文字種別」に関して水準「ひらがな」を選択し、因子「文字数」に関して水準「１文字」を選択して生成されるパターン（「全角／半角」＝「全角」、「文字種別」＝「ひらがな」、「文字数」＝「１文字」）は、「テキストボックスに全角ひらがな１文字を入力した際にコンピュータが正しく状態変化するかチェックする」というテストの内容を示すパターンとなる。従って、このパターンに従い、バグ検出者はテキストボックスにいずれかの全角ひらがな１文字（例えば、「あ」でもよいし、「い」でもよい）の入力を行い、コンピュータが正しく状態変化をするか否かをチェックすることになる。
【００１６】
以上がテストのために操作をパターン化する手順の説明である。
【００１７】
例えば上記のテキストボックスのようなテスト対象のオブジェクトまたはオブジェクト群に関し、１つのパターンに従ってテストでは不十分である。例えば、全角ひらがな１文字の入力ではエラーが出なくても、他のパターンに従った文字列、例えば半角カタカナ最大文字数を入力した場合にはエラーが出るかも知れないためである。従って、精度の高いテストを行うためには、テスト対象のオブジェクトまたはオブジェクト群に関し、多数の異なるパターンを生成する必要がある。
【００１８】
例えば、上記の例のように、３つの因子「全角／半角」「文字種別」「文字数」の各々に関する水準が３個、８個、４個である場合、生成され得るパターンの数は３×８×４＝９６となる。
【００１９】
上述したように、１つのパターンは１つのテストの内容を示す。従って、テスト対象のプログラムに従ってコンピュータにより表示される複数のユーザインタフェースの各々に含まれるテスト対象の複数のオブジェクト（またはオブジェクト群）の各々に関し、上記のように多数のパターンを生成すると、それらのパターンの集合体がすなわちテスト仕様書となる。バグ検出者は、テスト仕様書に含まれるパターンの各々に従った操作を行い、コンピュータの状態が正しく変化するか否かをチェックし、その結果を記録していくことで、網羅的なテストを効率的に行うことができる。
【００２０】
このように、テスト仕様書は概ね以下の手順で作成される。
（１）テスト対象のプログラムの仕様書などに基づき、いずれのオブジェクト（オブジェクト群）に対する操作をテスト対象とするかを特定する。
（２）（１）でテスト対象として特定したオブジェクト（オブジェクト群）の各々に関し、確認すべき内容（状態変化のどこを確認するか）を特定する。
（３）（２）で特定した確認すべき内容の各々に関し、因子を特定する。
（４）（３）で特定した因子の各々に関し、水準を特定する。
（５）（３）および（４）で特定した因子および水準に基づき、パターンを生成する。
（６）（５）で生成したパターン群をテスト仕様書とする。
【００２１】
ところで、テストに要するコストは、（５）で生成されるパターンの数により大きく影響を受ける。例えば、テスト対象の１つのプログラムにユーザインタフェースが１０個あり、各ユーザインタフェースにテスト対象となるオブジェクト（オブジェクト群）が平均１００個あり、各テスト対象のオブジェクト（オブジェクト群）に関し平均１００個のパターンを生成したとすると、そのプログラムに関し生成されるパターンの数は１０×１００×１００＝１００，０００個となる。
【００２２】
従って、仮に１つのパターンに従ったテスト作業に関し１００円のコストがかかるとすれば、テスト作業全体に要するコストは１００円×１００，０００個＝１０，０００，０００円となる。
【００２３】
プログラムの開発業者としては、上記のテストに要するコストを可能な限り削減したい、というニーズがある。コスト削減のためには上記のテスト仕様書の作成手順における（５）で生成されるパターンの数を減らす必要があるが、その方法の一つとして、（４）において特定した水準のうち重要でないと思われるものを間引き、（５）においては間引いた水準を用いたパターンを生成しない、ということが考えられる。
【００２４】
コスト削減のためにパターン数を減らす目的で水準を間引く場合、いずれの水準を間引くかによってテストの精度が大きく左右され得る。しかしながら、従来、どの水準を間引くかはテスト仕様設計者の経験や勘により決定されていた。従って、パターン生成時に水準を間引くと、テストの精度を必ずしも十分に担保できない、という問題があった。
【００２５】
本発明は、上述した事情に鑑み、プログラムのバグ検出のためのテスト仕様書の作成において、テストの精度を十分に担保しつつテストに要するコストの削減を可能とする手段を提供することを目的とする。
【課題を解決するための手段】
【００２６】
上記の目的を達するために、本発明は、
コンピュータプログラムに従いデータ処理を行うコンピュータが第１の状態から第２の状態に変化する際に前記第２の状態の決定に用いられ得るパラメータを水準とし、複数の水準のうち互いに排他的に選択され得る同種の水準のグループを因子とするとき、１以上の因子の各々から選択された１の水準の組み合わせであるパターンを示すパターンデータの１以上の集まりにより当該コンピュータプログラムに含まれるバグの検出のためのテスト仕様を示すテスト仕様データを生成するテスト仕様生成装置であって、
１以上の因子の各々を示す１以上の因子データと、前記１以上の因子データの各々に関し当該因子データにより示される因子に含まれる１以上の水準の各々を各々示す１以上の水準データと、前記１以上の水準データの各々に関し当該水準データにより示される水準が関与するバグ存在確率推定値の指標を示すバグ存在確率指標データと、を記憶する記憶手段と、
前記記憶手段に記憶されている前記因子データ、前記水準データおよび前記バグ存在確率指標データに従い、前記１以上の因子と、前記１以上の因子の各々に含まれる前記１以上の水準と、前記１以上の水準の各々に関する前記バグ存在確率推定値の指標とを表示し、テスト仕様を設計するユーザに対し前記１以上の因子の中から１以上の因子を選択し、当該選択した１以上の因子の各々に関し当該因子に含まれる１以上の水準の中から１以上の水準を選択することを促す画面である因子水準選択画面を示す因子水準選択画面データを生成する因子水準選択画面データ生成手段と、
前記因子水準選択画面データに従い前記因子水準選択画面の表示を行う装置に対し前記テスト仕様を設計するユーザが前記因子水準選択画面を見ながら行った操作に応じて当該装置により生成されたデータであって、前記因子水準選択画面に表示されている前記１以上の因子の中から前記テスト仕様を設計するユーザにより選択された１以上の因子と、当該選択された１以上の因子の各々に関し当該因子に含まれる１以上の水準の中から前記テスト仕様を設計するユーザにより選択された１以上の水準とを示すデータである選択因子水準データを取得する選択因子水準データ取得手段と、
所定の規則に従い、前記選択因子水準データ取得手段により取得された前記選択因子水準データにより示される１以上の因子の各々に関し、当該因子に含まれる前記選択因子水準データにより示される１以上の水準の中から１の水準を選択し、当該選択した１以上の水準の組み合わせであるパターンを示すパターンデータを１以上生成し、当該１以上のパターンデータを含むテスト仕様データを生成するテスト仕様データ生成手段と
を備える装置
を第１の実施態様として提案する。
【００２７】
また本発明は、上記の第１の実施態様にかかる装置において、
前記テスト仕様データ生成手段により生成された前記テスト仕様データに含まれる前記１以上のパターンデータの各々に関し、当該パターンデータにより示されるパターンを表示し、バグ検出を行うユーザに対し当該パターンデータにより示されるパターンに関するバグの有無の入力を促す画面であるテスト仕様表示画面を示すテスト仕様表示画面データを生成するテスト仕様表示画面データ生成手段と、
前記テスト仕様表示画面データに従い前記テスト仕様表示画面の表示を行う装置に対し前記バグ検出を行うユーザが前記テスト仕様表示画面を見ながら行った操作に応じて当該装置により生成されたデータであって、前記テスト仕様表示画面に表示される１以上のパターンの各々に関し各々バグの有無を示すデータであるバグ検出データを取得するバグ検出データ取得手段と、
前記バグ検出データ取得手段により過去に取得された１以上のバグ検出データに基づき前記バグ存在確率指標データを生成するバグ存在確率指標データ生成手段と
を備える
という構成を第２の実施態様として提案する。
【００２８】
また本発明は、上記の第１または第２の実施態様にかかる装置において、
パターンの数の閾値を示すパターン数閾値データを取得するパターン数閾値データ取得手段と、
前記テスト仕様データ生成手段により生成されるテスト仕様データに含まれる１以上のパターンデータに関し、当該１以上のパターンデータの各々により各々示される１以上のパターンに含まれる１以上の水準の各々に関する前記バグ存在確率推定値の指標に基づき当該１以上のパターンをテスト仕様から除外した場合に増加する未検出バグ存在確率推定値の指標を示す未検出バグ存在確率指標データを生成する未検出バグ存在確率指標データ生成手段と
を備え、
前記テスト仕様データ生成手段は、前記パターン数閾値データ取得手段により取得されたパターン数閾値データにより示される閾値以下の数であり、かつ、前記所定の規則に従う条件下において、前記未検出バグ存在確率指標データ生成手段により生成される前記未検出バグ存在確率指標データにより示される前記未検出バグ存在確率推定値の指標が最小となる１以上のパターンデータを含む前記テスト仕様データを生成する
という構成を第３の実施態様として提案する。
【００２９】
また本発明は、上記の第１または第２の実施態様にかかる装置において、
前記テスト仕様データ生成手段により生成される１以上のパターンデータの各々に関し、当該パターンデータにより示されるパターンに従ったバグ検出に伴うコストを示すコストデータを取得するコストデータ取得手段と、
テストに伴う総コストの閾値を示す総コスト閾値データを取得する総コスト閾値データ取得手段と、
前記テスト仕様データ生成手段により生成されるテスト仕様データに含まれる１以上のパターンデータに関し、当該１以上のパターンデータの各々により各々示される１以上のパターンに含まれる１以上の水準の各々に関する前記バグ存在確率推定値の指標に基づき当該１以上のパターンをテスト仕様から除外した場合に増加する未検出バグ存在確率推定値の指標を示す未検出バグ存在確率指標データを生成する未検出バグ存在確率指標データ生成手段と、
前記テスト仕様データ生成手段により生成されるテスト仕様データに含まれる１以上のパターンデータに関し、当該１以上のパターンデータの各々により各々示される１以上のパターンに関し前記コストデータ取得手段により取得された前記コストデータにより示されるコストに基づき、当該１以上のパターンデータを含むテスト仕様データに従ったテストに伴う総コストを算出する総コスト算出手段と
を備え、
前記テスト仕様データ生成手段は、前記総コスト算出手段により算出される総コストが前記総コスト閾値データ取得手段により取得された総コスト閾値データにより示される総コスト以下であり、かつ、前記所定の規則に従う条件下において、前記未検出バグ存在確率指標データ生成手段により生成される前記未検出バグ存在確率指標データにより示される前記未検出バグ存在確率推定値の指標が最小となる１以上のパターンデータを含む前記テスト仕様データを生成する
という構成を第４の実施態様として提案する。
【００３０】
また本発明は、上記の第１乃至第４のいずれかの実施態様にかかる装置において、
前記記憶手段は、前記選択因子水準データ取得手段により過去に取得された１以上の選択因子水準データを記憶し、
前記記憶手段により記憶されている前記過去に取得された１以上の選択因子水準データに基づき、テスト仕様を生成する任意のユーザにより過去に選択された任意の一の水準に関し、当該一の水準が当該一の水準が属する因子においてテスト仕様を生成する任意のユーザにより選択された確率である水準選択確率を示す水準選択確率データを生成する水準選択確率データ生成手段を備え、
前記因子水準選択画面データ生成手段は、前記１以上の因子と、前記１以上の因子の各々に含まれる前記１以上の水準と、前記１以上の水準の各々に関する前記バグ存在確率推定値の指標とに加え、前記水準選択確率データ生成手段により生成される前記水準選択確率データに従い、前記１以上の水準の各々に関する前記水準選択確率を表示する画面である前記因子水準選択画面を示す前記因子水準選択画面データを生成する
という構成を第５の実施態様として提案する。
【００３１】
また本発明は、上記の第１乃至第５のいずれかの実施態様にかかる装置において、
前記記憶手段は、前記選択因子水準データ取得手段により過去に取得された１以上の選択因子水準データを記憶し、
前記選択因子水準データ取得手段により取得された前記選択因子水準データにより、新たな一の因子が選択されたことが示された場合、前記記憶手段に記憶されている前記過去に取得された１以上の選択因子水準データに基づき、テスト仕様を生成する任意のユーザにより当該一の因子とともに過去に選択された因子の各々に関し、当該因子が選択された確率である因子選択確率を示す因子選択確率データを生成する因子選択確率データ生成手段と、
前記因子選択確率データ生成手段により生成された前記因子選択確率データに基づき所定の規則に従い１以上の因子を選択し、前記テスト仕様を設計するユーザに対し当該１以上の因子の選択を促す画面である推奨因子表示画面を示す推奨因子表示画面データを生成する推奨因子表示画面データ生成手段と
を備える
という構成を第６の実施態様として提案する。
【００３２】
また本発明は、上記の第２の実施態様にかかる装置において、
テスト対象のコンピュータプログラムに従ったデータ処理を行うプログラム実行手段と、
前記テスト仕様表示画面の表示を行う装置に対し、前記テスト対象のコンピュータプログラムに従って生成される画面を示す画面データを送信する送信手段と、
前記送信手段により送信された画面データに従い前記テスト仕様表示画面の表示を行う装置において表示された画面に対し前記バグ検出を行うユーザが入力したデータを前記テスト仕様表示画面の表示を行う装置から受信する受信手段と、
前記受信手段により受信されたデータを前記テスト対象のコンピュータプログラムに従ったデータ処理におけるパラメータを示すデータとして前記プログラム実行手段に引き渡すデータ引渡手段と
を備える
という構成を第７の実施態様として提案する。
【００３３】
また本発明は、コンピュータを、上記の第１乃至第７の実施態様にかかる装置が備える各手段として機能させるプログラムを、各々、第８乃至第１４の実施態様として提案する。
【発明の効果】
【００３４】
上記の第１の実施態様にかかる装置によれば、テスト仕様設計者は、テスト仕様書の作成に伴うパターン生成の際、各因子の水準毎に表示されるバグ存在確率推定値の指標に基づき、バグ存在確率推定値が高い水準を優先的に選択し、バグ存在確率推定値が低い水準を優先的に間引くことで、テストの精度をあまり下げることなく、テスト仕様に含まれるパターンの数を削減することができる。
【００３５】
上記の第２の実施態様にかかる装置によれば、テスト仕様設計者により設計されたテスト仕様書に従いバグ検出者が行ったバグ検出の結果がフィードバックされ、各因子の各水準に関するバグ存在確率推定値の指標の生成に利用される。その結果、バグ存在確率推定値の指標を生成するためのデータを別途取得する必要がなく、テスト仕様設計に伴うコストが削減される。
【００３６】
上記の第３の実施態様にかかる装置によれば、テスト仕様設計者が、例えばテスト依頼者の予算等に基づき決定されたテスト数、すなわちテスト仕様書に含まれるパターンの数の上限を装置に入力することで、装置により自動的にパターンの間引きが行われ、上限数以下の数のパターンの生成が行われる。その際、未検出バグが存在する確率が低くなるようにパターンの間引きが行われるため、テストの精度があまり下がることがない。
【００３７】
上記の第４の実施態様にかかる装置によれば、テスト仕様設計者が、例えばテスト依頼者から提示されたテストに関する予算額を装置に入力することで、装置により自動的にパターンの間引きが行われ、予算額以下の費用で可能なテスト仕様を構成するパターンの生成が行われる。その際、未検出バグが存在する確率が低くなるようにパターンの間引きが行われるため、テストの精度があまり下がることがない。
【００３８】
上記の第５の実施態様にかかる装置によれば、過去に他のプログラムに関し設計されたテスト仕様書において各水準が選択された確率が表示されるため、テスト仕様設計者はいずれの水準を優先的に選択すべきかを判断する際の指標を得ることができる。
【００３９】
上記の第６の実施態様にかかる装置によれば、テスト仕様設計者がテスト仕様書の作成に際し、ある因子を選択した場合、過去に他のプログラムに関し設計されたテスト仕様書において当該因子とともに高い頻度で選択された因子が提示される。そのため、テスト仕様設計者はいずれの因子を選択すべきかを判断する際の指標を得ることができる。
【００４０】
上記の第７の実施態様にかかる装置によれば、テスト仕様設計者が用いる装置がＡＳＰ（Application Service Provider）としての役割を果たし、バグ検出者がテスト作業に仕様する装置に対しテスト対象のプログラムがオンラインで提供される。そのため、バグ検出者はテスト対象のプログラムを自分の装置にインストールする必要がない。
【００４１】
上記の第８乃至第１４の実施態様にかかるプログラムによれば、汎用のコンピュータを用いて、各々、上記の第１乃至第７の実施態様にかかる装置を実現することができる。
【図面の簡単な説明】
【００４２】
【図１】図１は、本発明の一実施例にかかるテスト仕様生成システムの全体構成を示した図である。
【図２】図２は、本発明の一実施例にかかるサーバ装置の記憶部に記憶されているプロジェクトテーブルのデータ構成を模式的に示した図である。
【図３】図３は、本発明の一実施例にかかるテスト対象のプログラムのユーザインタフェース群を模式的に示した図である。
【図４】図４は、本発明の一実施例にかかるサーバ装置の記憶部に記憶されている確認エリアテーブルのデータ構成を模式的に示した図である。
【図５】図５は、本発明の一実施例にかかるサーバ装置の記憶部に記憶されている確認項目テンプレートテーブルのデータ構成を模式的に示した図である。
【図６】図６は、本発明の一実施例にかかるサーバ装置の記憶部に記憶されている確認項目テーブルのデータ構成を模式的に示した図である。
【図７】図７は、本発明の一実施例にかかるサーバ装置の記憶部に記憶されている因子水準テンプレートテーブルのデータ構成を模式的に示した図である。
【図８】図８は、本発明の一実施例にかかるテスト仕様設計者の端末装置に表示される因子水準選択画面を模式的に示した図である。
【図９】図９は、本発明の一実施例にかかるテスト仕様設計者の端末装置に表示される推奨因子表示画面を模式的に示した図である。
【図１０】図１０は、本発明の一実施例にかかるサーバ装置の記憶部に記憶されている因子水準テーブルのデータ構成を模式的に示した図である。
【図１１】図１１は、本発明の一実施例にかかるサーバ装置において行われるパターン生成方法の一例を説明するための図である。
【図１２】図１２は、本発明の一実施例にかかるサーバ装置の記憶部に記憶されているパターンテーブルのデータ構成を模式的に示した図である。
【図１３】図１３は、本発明の一実施例にかかるテスト仕様設計者の端末装置に表示されるテスト仕様データ生成画面を模式的に示した図である。
【図１４】図１４は、本発明の一実施例にかかるサーバ装置の記憶部に記憶されているテスト仕様データのデータ構成を模式的に示した図である。
【図１５】図１５は、本発明の一実施例にかかるバグ検出者の端末装置に表示されるテスト仕様表示画面を模式的に示した図である。
【発明を実施するための形態】
【００４３】
［１．実施例］
以下に本発明の一実施例にかかるテスト仕様生成システム１の構成および動作を説明する。図１は、テスト仕様生成システム１の全体構成を示した図である。テスト仕様生成システム１は、テスト仕様設計者によるテスト仕様の設計を支援するとともに、バグ検出者によるバグ検出作業のプラットフォームを提供するサーバ装置１１、テスト仕様設計者により操作される端末装置１２、バグ検出者により操作される端末装置１３を備えている。サーバ装置１１と端末装置１２、サーバ装置１１と端末装置１３は、互いにインターネット１９を介して各種データの送受信が可能である。
【００４４】
サーバ装置１１、端末装置１２および端末装置１３は、各々、汎用のコンピュータに、本発明にかかるアプリケーションプログラムに従った処理を実行させることにより実現される。従って、それらのハードウェア構成についての説明は省略する。
【００４５】
サーバ装置１１は、本発明にかかるサーバ装置用のアプリケーションプログラム（以下、「サーバ用アプリ」と呼ぶ）に従った処理を行うことにより、以下の機能構成部を備える装置として機能する。
【００４６】
記憶部：サーバ用アプリや後述の各種データテーブルなど、各種データを記憶する。
因子水準選択画面データ生成部：テスト仕様設計者がパターン生成に用いる因子および水準を選択するための因子水準選択画面を示すデータを生成する。
選択因子水準データ取得部：テスト仕様設計者により端末装置１２において選択された因子および水準を示す選択因子水準データを取得する。
テスト仕様データ生成部：選択因子水準データに基づき、テスト仕様設計者の操作に応じた所定の規則に従い、パターンの生成を行い、生成したパターン群を示すテスト仕様データを生成する。
テスト仕様表示画面データ生成部：バグ検出者が端末装置１３を用いてバグ検出を行う際にバグ検出者に対しテスト仕様を表示するためのテスト仕様表示画面を示すテスト仕様表示画面データを生成する。
【００４７】
バグ検出データ取得部：バグ検出者により端末装置１３に入力された、各パターンに従ったバグ検出の結果を示すバグ検出データを取得する。
バグ存在確率指標データ生成部：過去に他のプログラムに関し行われたバグ検出の結果に基づき、各水準に伴うバグ存在確率の推定値を示すバグ存在確率指標データを生成する。
コストデータ取得部：テスト仕様に含まれる各パターンに関し、そのパターンに従ったバグ検出を行う場合に要するコストを示すコストデータを取得する。
総コスト閾値データ取得部：テスト仕様設計者により端末装置１２において入力される、テスト全体にかけられるコストの上限額を示す総コスト閾値データを取得する。
未検出バグ存在確率指標データ生成部：テスト仕様に従いバグ検出が行われた場合のテスト全体における未検出バグ存在確率の推定値を示す未検出バグ存在確率指標データを生成する。
【００４８】
総コスト算出部：テスト仕様に従ってバグ検出を行った場合のバグ検出に要する総コストを算出する。
水準選択確率データ生成部：過去に他のプログラムに関し設計されたテスト仕様に基づき、各水準に関し、その水準が属する因子においてその水準がパターン生成のために選択された確率を示す水準選択確率データを生成する。
因子選択確率データ生成部：過去に他のプログラムに関し設計されたテスト仕様に基づき、テスト仕様設計者により端末装置１２において選択された因子とともに過去に選択されている因子の各々に関し、その因子が選択されている確率を示す因子選択確率データを生成する。
推奨因子表示画面データ生成部：テスト仕様設計者により端末装置１２において新たな因子が選択された際、その因子に関し生成された因子選択確率データが高い因子を所定数（例えば、上位３つ）表示することで、テスト仕様設計者に対しそれらの因子の選択を推奨する推奨因子表示画面を示す推奨因子表示画面データを生成する。
プログラム実行部：テスト対象のプログラムに従った処理を行う。
【００４９】
送信部：端末装置１２および端末装置１３に対し、各種データを送信する。
受信部：端末装置１２および端末装置１３から、各種データを受信する。
データ引渡部：プログラム実行部によるテスト対象のプログラムに従った処理において、バグ検出者により端末装置１３において行われた操作に応じて端末装置１３から送信されてくるデータをプログラム実行部に対し引き渡す。
【００５０】
端末装置１２および端末装置１３は、ともにＷｅｂブラウザプログラムに従った処理を実行可能なコンピュータであり、以下の機能構成部を備える。
【００５１】
受信部：サーバ装置１１から各種データを受信する。
表示部：サーバ装置１１から受信した画面データなどに従い、テスト仕様設計者もしくはバグ検出者が各種操作を行うためのユーザインタフェースを表示する。
操作部：テスト仕様設計者もしくはバグ検出者の操作に応じて所定のデータを生成することで、テスト仕様設計者もしくはバグ検出者によるデータ入力を受け付ける。
送信部：サーバ装置１１に対し各種データを送信する。
記憶部：サーバ装置１１から受信したデータやテスト仕様設計者もしくはバグ検出者により入力されたデータなどの各種データを記憶する。
【００５２】
サーバ装置１１の記憶部には、テスト仕様設計者によるテスト仕様の設計を支援するための各種データおよびバグ検出者によるバグ検出の作業を支援するための各種データが記憶されている。
【００５３】
図２は、サーバ装置１１の記憶部に記憶されているプロジェクトテーブルのデータ構成を模式的に示した図である。プロジェクトテーブルは、プログラムのテストを行うテスト業者が顧客から受注した（または受注予定の）テスト対象のプログラムに関するデータを格納するデータテーブルである。プロジェクトテーブルはテスト対象のプログラムの各々に対応するデータレコードの集まりであり、各データレコードは以下のデータフィールドを有している。
【００５４】
プログラムＩＤ：テスト対象のプログラムを識別するデータを格納する。
プログラム名：テスト対象のプログラムの名称を示すデータを格納する。
顧客名：テストの依頼主である顧客の名称を示すデータを格納する。
納期：テスト結果の納品期限を示すデータを格納する。
総コスト上限：バグ検出作業全体にかけられる総コストの上限額を示すデータを格納する。
全組み合わせ仕様のコスト：テスト仕様設計者により選択された因子および水準を用いて、パターンを全組み合わせに関し生成した場合のテスト仕様（全組み合わせ仕様）に関し、そのテスト仕様に従ったバグ検出を行った場合のコストを示すデータを格納する。
推奨仕様のコスト：テスト仕様設計者により選択された因子および水準を用いて、テスト仕様設計者により選択された方法により生成されたパターンを含むテスト仕様（推奨仕様）に関し、そのテスト仕様に従ってバグ検出を行った場合のコストを示すデータを格納する。
推奨仕様の未検出バグ存在確率推定値：上記の推奨仕様に関し、そのテスト仕様に従ってバグ検出を行った場合の未検出バグ存在確率の推定値を示すデータを格納する。
間引き仕様のコスト：上記の推奨仕様からパターンの間引きを行うことにより総コスト上限以下のコストで可能なバグ検出作業を示すテスト仕様としてサーバ装置１１により自動的に生成されたテスト仕様（間引き仕様）に関し、そのテスト仕様に従ってバグ検出を行った場合のコストを示すデータを格納する。
間引き仕様の未検出バグ存在確率推定値：上記の間引き仕様に関し、そのテスト仕様に従ってバグ検出を行った場合の未検出バグ存在確率の推定値を示すデータを格納する。
【００５５】
テスト対象のプログラムに従い、コンピュータは通常、ユーザがコンピュータと対話を行うための複数のユーザインタフェース（画面）を表示する。それぞれのユーザインタフェースには通常、ユーザに対し情報を提示したり、ユーザがコンピュータに対し行う操作を受け付けたりするためのオブジェクトが含まれている。それらのオブジェクトもしくはオブジェクト群がコンピュータの状態変化に関与する。従って、プログラムのテストにおいては、まず、それらのオブジェクト群を互いに関連する一群のオブジェクト群（またはオブジェクト）に区分することが行われる。通常、互いに関連する一群のオブジェクト群はユーザインタフェース内で互いに近接した位置に配置されるため、それらのオブジェクト群を含む領域を以下、「確認エリア」と呼ぶ。
【００５６】
図３は、上述したテスト対象のプログラム、ユーザインタフェース（画面）、確認エリアの関係を説明するために、あるプログラムのユーザインタフェース群を模式的に示した図である。図３に示すユーザインタフェース群は、業務の進捗管理を行うための小さなプログラムのユーザインタフェース群であり、それらは、起動時に表示されるトップ画面（図３の左図）と、トップ画面で「グラフ表示」ボタンがクリック等された際に表示されるグラフ表示画面（図３の右図）の２つのユーザインタフェースで構成されている。
【００５７】
トップ画面は、例えば以下の３つの確認エリアに区分される。
プロジェクト選択エリアａ１
キーワード検索エリアａ２
グラフ表示指示エリアａ３
【００５８】
また、グラフ表示画面は、例えば以下の４つの確認エリアに区分される。
プロジェクト名表示エリアｂ１
グラフ表示エリアｂ２
グラフ表示期間指示エリアｂ３
グラフ表示形式（日週月）指示エリアｂ４
【００５９】
サーバ装置１１の記憶部には上記の確認エリアに関するデータを格納する確認エリアテーブルが記憶されている。図４は確認エリアテーブルのデータ構成を模式的に示した図である。確認エリアテーブルはテスト対象のプログラム毎に設けられ、いずれのプログラムに対応する確認エリアテーブルであるかを示すプログラムＩＤを伴っている。
【００６０】
確認エリアテーブルは確認エリアの各々に対応するデータレコードの集まりであり、各データレコードは以下のデータフィールドを有している。
【００６１】
確認エリアＩＤ：確認エリアを識別するデータを格納する。
画面名：テスト対象のプログラムに従いコンピュータのディスプレイに表示される画面、すなわちユーザインタフェースの名称を示すデータを格納する。
ＵＲＩ：ＡＳＰとして機能するサーバ装置１１から提供されるテスト対象のプログラムのユーザインタフェース（画面）を識別するＵＲＩ（Uniform Resource Identifier）を格納する。
確認エリア：確認エリアをバグ検出者に伝える説明を示すデータを格納する。例えば、図３の左図の例では、「画面上のプロジェクト選択エリア」、「画面下のキーワード検索エリア」などのテキストデータを格納する。
【００６２】
続いて、確認エリアの各々に関し、テスト仕様設計者により１以上の確認項目が特定される。例えば、図３の左図のキーワード検索エリアａ２に関しては、例えば以下の確認項目が考えられる。
「テキストボックスに文字が入力できる」
「ボタンのクリックに応じてリストボックスに表示される項目が正しく絞り込まれる」
【００６３】
これらの確認項目の多くは、他のプロジェクトの確認エリアに関しても同様に用いられることが多い。従って、頻繁に使われる確認項目はテンプレート化されてサーバ装置１１の記憶部に予め記憶されている。図５は、テンプレート化された確認項目に関するデータを格納する確認項目テンプレートテーブルのデータ構成を模式的に示した図である。
【００６４】
確認項目テンプレートテーブルはテンプレート化された確認項目の各々に対応するデータレコードの集まりであり、各データレコードは以下のデータフィールドを有している。
【００６５】
重要度レベル：確認項目の一般的な重要度を示すデータを格納する。
正常・異常：確認項目が、ユーザにより正常な操作が行われた際のコンピュータの状態変化を確認するものか、ユーザにより異常な操作が行われた際のコンピュータの状態変化を確認するものか、と示すデータを格納する。
区分：確認項目を分類した区分を示すデータを格納する。例えば、グラフの表示形式に関する確認項目であることを示す「グラフ（表示形式）」などがこのデータフィールドに格納されるデータ例である。
確認項目：確認項目の内容を示すデータを格納する。例えば、先に例示した「テキストボックスに文字が入力できる」「ボタンのクリックに応じてリストボックスに表示される項目が正しく絞り込まれる」などがこのデータフィールドに格納されるデータ例である。
【００６６】
なお、確認項目テンプレートテーブルの上記データフィールドのうち、「重要度レベル」〜「区分」はテスト仕様設計者がテスト仕様の設計を行う際の参考情報として利用される。また、「正常・異常」はバグ検出者によるバグ検出の作業においてバグ検出者に対し表示され、バグ検出時の参考情報としても利用される。
【００６７】
テスト仕様設計者は端末装置１２を用いて、上記の確認項目テンプレートテーブルに適当な確認項目が登録されている場合はその確認項目を選択し、適当な確認項目が確認項目テンプレートテーブルに登録されていない場合は新たにその確認項目を個別に入力することで、テスト対象の確認エリアの各々に関し、確認項目の設定を行う。そのように設定された確認項目に関するデータは、端末装置１２からサーバ装置１１に送信され、確認項目テーブルに格納されるとともに、確認項目テンプレートテーブルにも登録される。
【００６８】
図６は、サーバ装置１１の記憶部に記憶される確認項目テーブルのデータ構成を模式的に示した図である。確認項目テーブルは確認エリア毎に設けられ、いずれの確認エリアに関する確認項目テーブルであるかを識別するためにプログラムＩＤおよび確認エリアＩＤが伴っている。確認項目テーブルに含まれる各データレコードは、確認項目テンプレートテーブル（図５）が有するデータフィールドに加え、以下のデータフィールドを有している。
【００６９】
確認項目ＩＤ：確認項目を識別するデータを格納する。
全組み合わせ仕様のコスト：この確認項目に関し、全組み合わせ仕様に従ってバグ検出を行った場合のコストを示すデータを格納する。
推奨仕様のコスト：この確認項目に関し、推奨仕様に従ってバグ検出を行った場合のコストを示すデータを格納する。
推奨仕様の未検出バグ存在確率推定値：この確認項目に関し、推奨仕様に従ってバグ検出を行った場合の未検出バグ存在確率の推定値を示すデータを格納する。
間引き仕様のコスト：この確認項目に関し、間引き仕様に従ってバグ検出を行った場合のコストを示すデータを格納する。
間引き仕様の未検出バグ存在確率推定値：この確認項目に関し、間引き仕様に従ってバグ検出を行った場合の未検出バグ存在確率の推定値を示すデータを格納する。
【００７０】
続いて、確認項目の各々に関し、テスト仕様設計者によりパターン生成に用いられる因子と水準の設定が行われる。例えば、図３の左図のキーワード検索エリアａ２に関してテスト仕様設計者により「テキストボックスに文字が入力できる」という確認項目が設定された場合、その確認項目に関して、例えば以下のような因子が選択されることが考えられる。
因子「半角／全角」
因子「文字種別」
因子「文字数」
【００７１】
さらに、選択された上記の因子の各々に関し、例えば以下のような水準が選択されることが考えられる。
因子「半角／全角」に関し、水準「半角」、水準「全角」、水準「半角全角混合」
因子「文字種別」に関し、水準「ひらがな」、水準「カタカナ」、水準「漢字」、水準「数字」、水準「記号」、水準「英大文字」、水準「英小文字」、水準「複数文字種別混合」
因子「文字数」に関し、水準「０文字」、水準「１文字」、水準「２文字以上、最大文字数未満」、水準「最大文字数」
【００７２】
これらの因子および因子に含まれる水準の多くは、他のプロジェクトの確認項目に関しても同様に用いられることが多い。従って、頻繁に使われる因子および水準はテンプレート化されてサーバ装置１１の記憶部に予め記憶されている。図７は、テンプレート化された因子・水準に関するデータを格納する因子水準テンプレートテーブルのデータ構成を模式的に示した図である。因子水準テンプレートテーブルの各データレコードは以下のデータフィールドを有している。
【００７３】
因子：因子の内容を示すデータを格納する。
コスト増減率：因子に応じたコスト増減率を示すデータを格納する。因子によってバグ検出の作業が容易なものや手間のかかるものがあるため、容易な因子が用いられるパターンに関しては、例えばパターン当たりの標準コストに０．８（８０％）を乗じ、手間のかかる因子が用いられるパターンに関しては、例えばパターン当たりの標準コストに１．２（１２０％）を乗じることで、コスト調整を行う場合がある。このフィールドにはその際の８０％、１２０％などの数値が格納される。
水準：水準の内容を示すデータを格納する。なお、１つの因子に対応して複数の水準が格納され得る。
バグ存在確率推定値：過去に他のテスト対象のプログラムに関し行われたバグ検出の結果に基づき算出された、対応する水準が関与するバグが存在する確率の推定値を格納する。具体的には、対象の水準を含むパターンに従いバグ検出作業が行われた回数を分母とし、バグが検出されたパターンに関してそのパターンに含まれる水準で１を除した数を合計した数を分子とした場合の比率（％）を示す。例えば、ある水準を含むパターンに従い過去にバグ検出作業が行われた回数が１２００回であり、そのうち、３つの水準を含むパターンにおいて１回、４つの水準を含むパターンにおいて２回、バグが検出された場合、この水準に関するバグ存在確率推定値は、｛（１÷３）＋（２÷４）｝÷１２００×１００≒０．０６９４（％）となる。
水準選択確率：水準選択確率を示すデータを格納する。水準選択確率とは、過去に他のテスト対象のプログラムに関し設計されたテスト仕様において、この水準を含む因子が選択された数を分母とし、この水準が選択された数を分子とした場合の比率（％）を示す。例えば、過去のテスト仕様設計時のパターン生成において、ある水準を含む因子が選択された回数が２５０回であり、それらのうち、その水準が選択された回数が２００回である場合、この水準に関する水準選択確率は２００÷２５０×１００＝８０（％）となる。
【００７４】
因子水準テンプレートテーブルのデータフィールドのうち、フィールド「コスト増減率」はサーバ装置１１においてコスト算出に用いられ、フィールド「水準選択確率」はテスト仕様設計者によるテスト仕様の設計において水準選択時に端末装置１２において表示され、テスト仕様設計者が水準を選択する際の参考情報として利用される。
【００７５】
テスト仕様設計者は端末装置１２を用いて、上記の因子水準テンプレートテーブルに適当な因子および水準が登録されている場合はその因子および水準を順次選択し、適当な因子および水準が因子水準テンプレートテーブルに登録されていない場合は新たにその因子および水準を個別に入力することで、確認項目の各々に関し、因子・水準の設定を行う。そのように新たに設定された因子・水準は因子水準テンプレートテーブルにも登録される。
【００７６】
図８は、テスト仕様設計者が個々の確認項目に関し因子および水準を選択するための画面である因子水準選択画面を模式的に示した図である。因子水準選択画面を示すデータである因子水準選択画面データは、因子水準テンプレートテーブルに格納されているデータに基づきサーバ装置１１により生成され、サーバ装置１１から端末装置１２に送信されて、端末装置１２における因子水準選択画面に用いられる。
【００７７】
因子水準選択画面には、以下のエリアが含まれている。
確認項目表示エリアｃ１
因子水準選択エリアｃ２
キーワード検索エリアｃ３
因子水準追加エリアｃ４
パターン生成指示エリアｃ５
生成パターン情報表示エリアｃ６
【００７８】
確認項目表示エリアｃ１には、パターン生成の対象となる確認項目を特定する情報、すなわち、プログラム名、画面名、確認エリアおよび確認項目が表示される。
【００７９】
因子水準選択エリアｃ２には、因子水準テンプレートテーブルに格納されている因子および水準がリスト表示され、テスト仕様設計者はそれらの因子および水準に対応するチェックボックスにチェックを入れることで、パターン生成に用いる因子および水準を選択することができる。
【００８０】
一般的に、テスト仕様設計者はまず、因子の選択を行う。テスト仕様設計者により、因子水準選択エリアｃ２において新たな因子が選択されると、端末装置１２の表示部には図９に模式的に示すような推奨因子表示画面がポップアップ表示される。推奨因子表示画面には、過去に設計されたテスト仕様の各確認項目に関するパターン生成において、テスト仕様設計者により新たに選択された因子とともに選択され、まだ現在設計中の確認項目のパターン生成のために選択されていない因子が、その選択された確率の高い順に例えば３個、その選択された確率である因子選択確率とともに表示される。
【００８１】
推奨因子表示画面に表示される因子は、先にテスト仕様設計者が選択した因子とともに高い確率で選択されている因子であるため、今パターンの生成を行おうとしている確認項目においても選択されるべき因子である可能性が高い。
【００８２】
テスト仕様設計者は推奨因子表示画面に表示される因子を選択すべきか否かを判断し、選択すべきと判断した因子があればその因子のチェックボックスをチェックする。そのようにチェックされた因子は、因子水準選択画面（図８）の因子水準選択エリアｃ２において自動的に選択される。また、そのように選択された因子に基づき、新たな推奨因子表示画面の表示が行われる。
【００８３】
因子水準選択エリアｃ２に表示される因子の中に適当な因子が見つからない場合、テスト仕様設計者は因子水準追加エリアｃ４に表示される「因子追加」ボタンをクリック等することで、新たな因子を追加することもできる。その際、その因子のコスト増減率の設定も行われる。また、新たに追加された因子には水準が未登録であるため、テスト仕様設計者は続いて「水準追加」ボタンをクリック等して、水準の登録を行う。なお、新たに登録された水準に関するバグ存在確率推定値および水準選択確率は「不明」となる。そのように新たに登録された因子および水準は、因子水準テンプレートテーブルにも登録される。
【００８４】
テスト仕様設計者は因子の選択を終えると、続いて、選択した因子の各々に関し、その因子に属する水準の中からパターン生成に用いる水準を順次選択する。
【００８５】
因子水準選択エリアｃ２に表示される水準の各々には、その水準に関するバグ存在確率推定値と水準選択確率が表示される。一般的に、バグ存在確率推定値が高いものはバグに関与する可能性の高い水準であるため、優先的に選択されるべき水準である可能性が高い。また、水準選択確率が高いものは、その因子の中で過去に多くのテスト仕様設計者が高い頻度で選択した水準であるため、やはり優先的に選択されるべき水準である可能性が高い。テスト仕様設計者はそれらの情報を参考としながら、テスト対象のプログラムの特性などを考慮しつつ、水準の選択を行う。
【００８６】
因子水準選択エリアｃ２に表示される水準の中に適当な水準が見つからない場合、テスト仕様設計者は因子水準追加エリアｃ４に表示される「水準追加」ボタンをクリック等することで、新たな水準を追加することもできる。その場合、新たに登録された水準に関するバグ存在確率推定値および水準選択確率は「不明」となる点や因子水準テンプレートテーブルに新たに追加された水準が登録される点は既に述べたとおりである。
【００８７】
なお、テスト仕様設計者はキーワード検索エリアｃ３に含まれるテキストボックスにキーワードを入力し「検索」ボタンをクリック等することで、因子水準選択エリアｃ２に表示される因子および水準を、名称にそのキーワードを含むものに絞り込むことができる。例えば、グラフに関する因子・水準を選択したい場合、テキストボックスにキーワード「グラフ」を入力し、「検索」ボタンをクリック等することで、例えば、キーワード「グラフ」を名称に含む因子とその因子に属する全ての水準と、キーワード「グラフ」を名称に含む水準を含む因子に属する全ての水準とが因子水準選択エリアｃ２に表示される。テスト仕様設計者はこのようなキーワードによる絞り込みにより、選択したい因子・水準を容易に発見することができる。
【００８８】
端末装置１２は、上記のようにテスト仕様設計者により因子もしくは水準が選択されると、選択された因子もしくは水準を示す選択因子水準データを生成し、サーバ装置１１に送信する。サーバ装置１１は選択因子水準データに従い、テスト仕様設計者により選択された因子および水準に関するデータを格納する因子水準テーブルを生成し、記憶部に記憶する。
【００８９】
図１０は、因子水準テーブルのデータ構成を模式的に示した図である。因子水準テーブルの各データレコードは、因子水準テンプレートテーブル（図７）のデータレコードが有するデータフィールのうち、フィールド「水準選択確率」以外の全てのデータフィールドを有する。
【００９０】
先に述べた推奨因子表示画面は、過去に他のプログラムに関し生成された因子水準テーブル（図１０）に基づきサーバ装置１１において生成される推奨因子表示画面データに従い、端末装置１２において表示される。以下にサーバ装置１１が推奨因子表示画面データを生成する際の動作につき説明する。
【００９１】
例えば、現在設計中のテスト仕様において、ある確認項目に関するパターン生成のためにテスト仕様設計者により因子「文字種別」が新たに選択されたとする。端末装置１２は選択された因子「文字種別」を示すデータをサーバ装置１１に送信する。サーバ装置１１は、記憶部に記憶している過去に生成した因子水準テーブルのうち因子「文字種別」を含むものを抽出し、その数をカウントする。
【００９２】
続いて、サーバ装置１１はそれらの抽出した因子水準テーブルに含まれる因子「文字種別」以外の因子（例えば、因子「文字数」など）の各々に関し、その因子を含む因子水準テーブルの数をカウントする。後者の数を前者の数で除して得られる比率が、各因子が因子「文字種」とともに選択された確率、すなわち因子選択確率となる。サーバ装置１１は、そのように算出した因子選択確率の高いものから順にそれらの因子を並べる。
【００９３】
サーバ装置１１は、現在、パターン生成のための因子・水準の選択を行っている確認項目に関し、既にテスト仕様設計者により選択されている因子を示すデータを、テスト仕様設計者によりそれらが選択された際に端末装置１２から受信している。サーバ装置１１はそれらのデータに従い、上述の因子選択確率の高い順にソートした因子の中から既に選択されている因子を除き、上位３個の因子を選択する。サーバ装置１１はそのように選択した３個の因子をそれらの因子選択確率とともに表示するとともに、テスト仕様設計者に対しそれらのいずれかの選択を促す画面を示す推奨因子表示画面データを生成する。
【００９４】
以上が、サーバ装置１１が推奨因子表示画面データを生成する際の動作である。サーバ装置１１は生成した推奨因子表示画面データを端末装置１２に送信する。端末装置１２は推奨因子表示画面データに従い、図９に示されるような推奨因子表示画面を表示する。
【００９５】
テスト仕様設計者は因子および水準の選択を完了すると、続いて、パターン生成指示エリアｃ５に含まれる「全組み合わせ」ボタン〜「１因子１水準」ボタンのいずれかをクリック等することで、パターン生成の指示を行う。
【００９６】
パターンは、テスト仕様設計者により選択された１以上の因子の各々に関し、それらの因子に属するテスト仕様設計者に選択された１以上の水準の中から１つの水準を順次選択することにより生成される。
【００９７】
例えば、ある確認項目のパターン生成のために、テスト仕様設計者により以下の因子が選択されたものとする。
因子「半角／全角」
因子「文字種別」
因子「文字数」
【００９８】
さらに、テスト仕様設計者により、各因子につき、以下の水準が選択されたものとする。
因子「全角／半角」：水準「半角」、水準「全角」、水準「半角全角混合」（３水準）
因子「文字種別」：水準「ひらがな」、水準「カタカナ」、水準「漢字」、水準「英大文字」、水準「英小文字」、水準「複数文字種別混合」（６水準）
因子「文字数」：水準「０文字」、水準「１文字」、水準「２文字以上、最大文字数未満」、水準「最大文字数」（４水準）
【００９９】
上記の場合、例えば以下のようなパターンが生成され得る。
（「半角／全角」＝「半角」、「文字種別」＝「ひらがな」、「文字数」＝「１文字」）
（「半角／全角」＝「全角」、「文字種別」＝「カタカナ」、「文字数」＝「最大文字数」）
【０１００】
「全組み合わせ」「オールペア」「プライオリティメソッド」「全水準網羅」「１因子１水準」は各々、パターン生成の方法の名称である。
【０１０１】
「全組み合わせ」は、選択された因子・水準の範囲内において、全ての組み合わせをパターンとして生成する方法である。全組み合わせによって生成されるパターンの数は、通常、各因子に関し選択された水準の数の積となる。例えば上記の例の場合、生成されるパターンの数は３×６×４＝７２となる。
【０１０２】
なお、上記の例の場合、「文字数」＝「０文字」の場合、因子「全角／半角」および因子「文字種別」は不定となるため、（「半角／全角」＝「半角」、「文字種別」＝「ひらがな」、「文字数」＝「０文字」）（「半角／全角」＝「半角」、「文字種別」＝「カタカナ」、「文字数」＝「０文字」）などのパターンの区別は無意味となる。そのような場合、例えばテスト仕様設計者により、それらのパターンは統合され、（「半角／全角」＝「−」、「文字種別」＝「−」、「文字数」＝「０文字」）のように書き換えられる。もしくは、それらのイレギュラーな処理の手順を因子水準テンプレートテーブルに予め登録しておくことで、サーバ装置１１により自動的に上記の書き換え作業が行われるようにしてもよい。
【０１０３】
「オールペア」は、選択された複数の因子の中から任意に選択した２個の因子に注目した場合、それらの２個の因子に含まれる水準に関し全ての組み合わせが１以上のパターンに必ず含まれるように、最小限数のパターンを生成する方法である。
【０１０４】
図１１は、「オールペア」に従ったパターン生成を説明するための図である。図１１において、列「１」〜「１６」の各々は１つのパターンを示している。例えば、列「１」はパターン（「Ａ」＝「Ａ１」、「Ｃ」＝「Ｃ１」、「Ｂ」＝Ｂ２」、「Ｄ」＝Ｄ２」）を示している。
【０１０５】
例えば、因子「Ａ」と因子「Ｃ」に注目すると、それらの因子に含まれる水準の組み合わせは全部で３×４＝１２通りあるが、その１２通りの全てが、列「１」〜「１６」のいずれかのパターンに必ず１以上、含まれている。他のいずれの２個の因子に注目した場合も同様である。
【０１０６】
上記のように「オールペア」により生成されるパターン群に従ったバグ検出作業を行うと、１つの因子に含まれる水準単体ではエラーを生じないが、２つの因子の各々に含まれる２個の水準が組み合わされるとエラーを生じる、という性質のバグを漏れなく検出することができる。バグの多くは水準単体でエラーを生じ、２つの水準の組み合わせにより初めてエラーを生じるバグは少ない。さらに、３つの水準の組み合わせにより初めてエラーを生じるバグは極めて少ない。「オールペア」は３つ以上の水準の組み合わせにより初めてエラーを生じるような極めて稀なバグの検出漏れは許容するが、２つの水準の組み合わせにより初めてエラーを生じるようなバグの検出は確実に行うことにより、一般的に精度とコストのバランスが取れたパターン生成を行う。
【０１０７】
「プライオリティメソッド」は、テスト仕様設計者により各因子において重要な水準（プライオリティ水準）として指定された水準を高い頻度で含むようにパターン生成を行う保方である。具体的には、まず、テスト仕様設計者により各因子に関し、重要な水準がプライオリティ水準として指定される。その後、サーバ装置１１により複数の因子のうち１つの因子が注目因子として選択される。続いて、注目因子については全ての水準を網羅するように水準の選択が順次行われ、注目因子以外の因子についてはプライオリティ水準が選択されてパターン生成が行われる。全ての因子が網羅されるように注目因子を順次変更しながら、同様のパターン生成が繰り返えされる。その結果、プライオリティ水準を基軸としたパターン生成が行われる。
【０１０８】
「全水準網羅」は、全ての水準がいずれかのパターンにおいて必ず１度は含まれるように、最小限数のパターン生成を行う方法である。また、「１因子１水準」は、１因子から任意に選択された１水準により構成される１つのパターンのみを生成する方法である。
【０１０９】
テスト仕様設計者により、因子水準選択画面（図８）のパターン生成指示エリアｃ５に含まれるいずれかのボタンがクリック等されると、クリック等されたボタンに応じたパターン生成方法を示すデータが端末装置１２からサーバ装置１１に送信される。サーバ装置１１はそのデータにより指定されたパターン生成方法に従い、因子水準テーブル（図１０）に格納されているデータを用いてパターンの生成を行う。
【０１１０】
サーバ装置１１は生成したパターンを示すパターンデータを、図１２に示すデータ構成のパターンテーブルに格納する。パターンテーブルには、それらのパターンがいずれの確認項目に関しいずれのパターン生成方法に従い生成されたかを示すデータとして、プログラムＩＤ、確認エリアＩＤ、確認項目ＩＤ、「オールペア」などのパターン生成方法名を示すデータが伴っている。パターンテーブルは生成されたパターンの各々に関するデータレコードの集まりであり、各データレコードは以下のデータフィールドを有している。
【０１１１】
パターン：生成されたパターンの内容を示すパターンデータを格納する。
コスト：生成されたパターンに含まれる各水準に対応するコスト増減率を標準コストに乗じて算出されるコストを示すデータを格納する。
【０１１２】
上記のように、テスト仕様設計者により選択された因子・水準を用いて、テスト仕様設計者により指定されたパターン生成方法に従い生成されたパターンテーブルが、推奨仕様のテスト仕様データの生成に用いられる。以下、このパターンテーブルを「推奨パターンテーブル」と呼ぶ。
【０１１３】
また、サーバ装置１１は、「全組み合わせ」以外のパターン生成方法がテスト仕様設計者により選択された場合、「全組み合わせ」と比較してどの程度のコストが削減されたかを示すため、「全組み合わせ」に従ったパターンも生成し、生成したパターンに関するパターンテーブル（図１２）を生成する。このように生成されるパターンテーブルが、全組み合わせ仕様のテスト仕様データの生成に用いられ、コスト比較や未検出バグ存在確率の算出の基準となる。以下、このパターンテーブルを「全組み合わせパターンテーブル」と呼ぶ。
【０１１４】
続いて、サーバ装置１１は因子水準選択画面（図８）の生成パターン情報表示エリアｃ６に表示するデータを生成する。具体的には、まずサーバ装置１１は、推奨パターンテーブルに含まれるパターンデータの数を示すデータを「パターン数」を示すデータとして生成する。またサーバ装置１１は、推奨パターンテーブルのフィールド「コスト」に示される金額の合計額を示すデータを「コスト」を示すデータとして生成する。また、サーバ装置１１は、全組み合わせパターンテーブルのフィールド「コスト」に示される金額の合計額を算出し、その合計額から推奨パターンテーブルに基づき算出した合計額を差し引いた金額を示すデータを「削除されたコスト」を示すデータとして生成する。
【０１１５】
さらに、サーバ装置１１は「未検出バグ存在確率推定値」を示すデータを算出する。未検出バグ存在確率推定値とは、「全組み合わせ」に従い生成されるパターンのうち、テスト仕様に含まれるパターンに従ったバグ検出作業においては検出されず、テスト仕様に含まれないパターンに従ったバグ検出作業において初めて検出されるバグの存在確率の推定値である。
【０１１６】
例えば、テスト仕様設計者により「オールペア」が指定され、「オールペア」に従って生成されたパターンが最終的にテスト仕様に採用されたとする。例えば、図１１に例示した因子・水準に関して言えば、「全組み合わせ」に従い生成されるパターン数は３×４×４×２＝９６であり、「オールペア」に従い生成されたパターン数は１６である。従って、８０パターンが省略されたことになる。
【０１１７】
ここで、省略されない１６パターンによって、１水準単体もしくは２水準の組み合わせにより生じるエラーを引き起こすバグは全て検出される。従って、未検出のバグとは、３水準以上の組み合わせによって初めて生じるエラーを引き起こすバグであり、かつ、省略されない１６パターンに含まれる３水準以上の組み合わせにより検出されるバグを除いたものの存在確率となる。
【０１１８】
図１１の例の場合、因子Ａ、Ｃ、Ｄの３因子に注目すると、それらの因子から各々選択される３水準の組み合わせの数は全部で３×４×２＝２４となる。図１１に示される「オールペア」に従い生成されたパターンにおいては、列「９」と「１０」が（「Ａ」＝「Ａ２」、「Ｃ」＝「Ｃ４」、「Ｄ」＝「Ｄ２」）で同一であり、列「１２」と「１３」が（「Ａ」＝「Ａ３」、「Ｃ」＝「Ｃ２」、「Ｄ」＝「Ｄ２」）で同一であり、列「１４」と「１５」が（「Ａ」＝「Ａ３」、「Ｃ」＝「Ｃ３」、「Ｄ」＝「Ｄ１」）で同一である。従って、図１１に示される「オールペア」に従い生成されたパターンにおいては、２４パターンのうち１６−３＝１３パターンがカバーされており、２４−１３＝１１パターンに関してはカバーされていないことになる。
【０１１９】
例えば、パターン（「Ａ」＝「Ａ３」、「Ｃ」＝「Ｃ３」、「Ｄ」＝「Ｄ２」）は図１１に示されるパターンには含まれない。従って、これら３水準の組み合わせにより初めて生じるエラーは、図１１に示されるパターンに従ったバグ検出作業においては検出されない。
【０１２０】
ここで、パターン（「Ａ」＝「Ａ３」、「Ｃ」＝「Ｃ３」、「Ｄ」＝「Ｄ２」）の組み合わせにより初めて生じるエラーは、水準「Ａ３」のバグ存在確率推定値をＰ１、水準「Ｃ３」のバグ存在確率推定値をＰ２、水準「Ｄ２」のバグ存在確率推定値をＰ３とすると、このパターンにより生じる未検出バグ存在確率推定値Ｑは例えば以下の式で推定される。
Ｑ＝（Ｐ１＋Ｐ２＋Ｐ３）×ｑ２
【０１２１】
ここで、ｑは、１水準単体もしくは２水準の組み合わせによりエラーを引き起こすバグの数を分母とし、２水準の組み合わせにより初めてエラーを引き起こすバグの数を分子とした比率であり、過去のテスト結果等から統計的に算出された定数である。
【０１２２】
例えば、水準「Ａ３」のバグ存在確率推定値Ｐ１は、水準「Ａ３」単体でエラーを引き起こすバグの存在確率推定値を近似している。２水準の組み合わせで初めてエラーを引き起こすバグは単体でエラーを引き起こすバグと比べ、かなりその数が少ないためである。従って、Ｐ１×ｑは水準「Ａ３」が他の１つの水準と組み合わされた場合に初めてエラーを引き起こすバグの存在確率推定値を示す。そして、Ｐ１×ｑ２は、水準「Ａ３」が他の２つの水準と組み合わされた場合に初めてエラーを引き起こすバグの存在確率推定値を示す。
【０１２３】
同様に、Ｐ２×ｑ２は水準「Ｃ３」が他の２つの水準と組み合わされた場合に初めてエラーを引き起こすバグの存在確率推定値を示し、Ｐ３×ｑ２は水準「Ｄ２」が他の２つの水準と組み合わされた場合に初めてエラーを引き起こすバグの存在確率推定値を示す。従って、それらを合計した（Ｐ１＋Ｐ２＋Ｐ３）×ｑ２が、パターン（「Ａ」＝「Ａ３」、「Ｃ」＝「Ｃ３」、「Ｄ」＝「Ｄ２」）の組み合わせにより初めて生じるエラーを引き起こすバグの存在確率推定値を示す。ここで、パターン（「Ａ」＝「Ａ３」、「Ｃ」＝「Ｃ３」、「Ｄ」＝「Ｄ２」）の組み合わせはテスト仕様に含まれないため、このバグ存在確率推定値（Ｐ１＋Ｐ２＋Ｐ３）×ｑ２が、未検出バグ存在確率推定値Ｑとなる。
【０１２４】
サーバ装置１１は、推奨パターンにおいてカバーされない他の３水準の組み合わせのパターンや、４水準の組み合わせのパターンの各々に関し、上記のような未検出バグ存在確率推定値の算出を行い、それらを合計することで、その確認項目に関する「未検出バグ存在確率推定値」を示すデータを生成する。
【０１２５】
サーバ装置１１は、上記のように生成した「パターン数」「コスト」「削除されたコスト」「未検出バグ存在確率推定値」を示すデータを端末装置１２に送信する。端末装置１２はそれらのデータを因子水準選択画面（図８）の生成パターン情報表示エリアｃ６に表示する。テスト仕様設計者はそれらのデータを参考としながら、必要に応じて因子・水準の選択やパターン生成方法の選択を繰り返し、その確認項目に関するパターン生成の調整を行う。
【０１２６】
テスト仕様設計者は、確認項目の各々に関し、上述した因子水準選択画面（図８）における因子・水準の選択とパターン生成の指示の操作を繰り返す。
【０１２７】
テスト仕様設計者の操作により、全ての確認項目に関しパターン生成が行われると、サーバ装置１１はまず、各確認項目に関する全組み合わせ推奨パターンテーブル（図１２）のフィールド「コスト」の合計値を全組み合わせ仕様全体のコストとして算出する。
【０１２８】
また、サーバ装置１１は各確認項目に関する推奨パターンテーブル（図１２）のフィールド「コスト」の合計値を推奨仕様全体のコストとして算出する。また、サーバ装置１１は各確認項目に関し算出した未検出バグ存在確率推定値の合計値を推奨仕様全体の未検出バグ存在確率推定値として算出する。
【０１２９】
続いて、サーバ装置１１は、上記のように算出した推奨仕様全体のコストがプロジェクトテーブル（図３）のフィールド「総コスト上限」を超過している場合、間引き仕様のパターンテーブル（以下、「間引きパターンテーブル」と呼ぶ）を以下のように生成する。
【０１３０】
サーバ装置１１は、各確認項目に関する因子水準テーブル（図１０）に示される水準のうち、バグ存在確率推定値が小さいものを優先的に選択し、選択した水準を削除した因子水準テーブルに従いパターンテーブル（図１２）を順次生成し、生成したパターンテーブルに基づきテスト仕様全体のコストおよび未検出バグ存在確率推定値を算出する処理を繰り返す。サーバ装置１１は、そのように算出したコストが総コスト上限以下となるパターンテーブルのうち、未検出バグ存在確率推定値が最小となるものを間引きパターンテーブルとして選択する。なお、このように選択された間引きパターンテーブルに基づき算出されたコストおよび未検出バグ存在確率推定値が、間引き仕様全体のコストおよび未検出バグ存在確率推定値となる。
【０１３１】
サーバ装置１１は、上記のように全組み合わせ仕様のコストと、推奨仕様および間引き仕様の各々に関するコストおよび未検出バグ存在確率推定値を算出すると、テスト仕様設計者が最終的なテスト仕様を示すテスト仕様データを生成するためのテスト仕様データ生成画面を示すテスト仕様データ生成画面データを生成し、端末装置１２に送信する。
【０１３２】
図１３は、テスト仕様データ生成画面データに従い端末装置１２に表示されるテスト仕様データ生成画面を模式的に示した図である。テスト仕様データ生成画面には、プロジェクトの基本情報（プログラム名、顧客名、納期、総コスト上限）と、サーバ装置１１において算出された各テスト仕様のコストおよび未検出バグ存在確率推定値が表示される。
【０１３３】
テスト仕様設計者は、テスト仕様データ生成画面に表示される各テスト仕様のコストおよび未検出バグ存在確率推定値を参考とし、それらのいずれかを選択する。テスト仕様設計者が選択したテスト仕様のチェックボックスにチェックをした後、「テスト仕様生成」ボタンをクリック等すると、その操作に応じて、サーバ装置１１は選択されたテスト仕様のパターンテーブル（図１２）に従い、テスト仕様データを生成する。
【０１３４】
図１４は、テスト仕様データのデータ構成を模式的に示した図である。テスト仕様データは、バグ検出作業の内容を示すパターンの各々に関するデータレコードの集まりであり、テスト対象のプログラムの名称および納期を示すデータが伴っている。テスト仕様データの各データレコードには以下のデータフィールドが含まれている。
【０１３５】
画面名：テスト対象のプログラムに従いコンピュータのディスプレイに表示される画面、すなわちユーザインタフェースの名称を示すデータを格納する。
ＵＲＩ：ＡＳＰとして機能するサーバ装置１１から提供されるテスト対象のプログラムのユーザインタフェース（画面）を識別するＵＲＩを格納する。
確認エリア：確認エリアをバグ検出者に伝える説明を示すデータを格納する。
正常・異常：確認項目が、ユーザにより正常な操作が行われた際のコンピュータの状態変化を確認するものか、ユーザにより異常な操作が行われた際のコンピュータの状態変化を確認するものか、と示すデータを格納する。
確認項目：確認項目の内容を示すデータを格納する。
パターン：パターンの内容を示すデータを格納する。
バグ検出の有無：バグ検出者により入力される、バグ検出作業の結果を示すデータを格納する。なお、サーバ装置１１によりテスト仕様データが生成された際、このフィールドにはデータが格納されていない。
【０１３６】
以上により、サーバ装置１１によるテスト仕様データの生成が完了する。その後、テスト業者が顧客からテストを受注すると、テスト仕様設計者からバグ検出者に対し、バグ検出作業の指示とともに、このプロジェクトのバグ検出のためのＵＲＩが通知される。バグ検出者が端末装置１３を用いてそのＵＲＩをブラウザに入力し、サーバ装置１１にアクセスすると、サーバ装置１１から端末装置１３に対し、バグ検出者がバグ検出作業を行うための画面を示すテスト仕様表示画面データが送信され、端末装置１３の表示部には図１５に示すようなテスト仕様表示画面が表示される。
【０１３７】
テスト仕様表示画面の上部エリアには、テスト仕様データの内容が表示される。バグ検出者によりテスト仕様データのいずれかの行が選択されると、選択された行に表示されるＵＲＩにより特定されるユーザインタフェースを示す画面データがサーバ装置１１から端末装置１３に送信され、テスト仕様表示画面の上部エリアにそのユーザインタフェースが表示される。
【０１３８】
バグ検出者は表示されたユーザインタフェースに含まれる、テスト仕様データに示される確認エリアにおいて、テスト仕様データに示されるパターンに従いデータ入力などの操作を行う。それらの操作に応じたデータが端末装置１３からサーバ装置１１に送信され、サーバ装置１１のプログラム実行部において、端末装置１３から送信されてくるデータに応じたテスト対象のプログラムに従った処理が行われる。そして、その処理の結果を示す画面データがサーバ装置１１から端末装置１３に送信される。その結果、端末装置１３において、バグ検出者は自分が行った操作に応じて、テスト対象のプログラムがどのように状態変化をするかを確認することができる。
【０１３９】
バグ検出者は、テスト仕様データに示される確認項目の内容に従い、正しい状態変化が行われるか否かを確認し、正しい状態変化が行われる場合はテスト仕様データのフィールド「バグ検出の有無」に「無」を、正しい状態変化が行われなかった場合は「有」を入力する。バグ検出者により入力されたそれらのデータは端末装置１３からサーバ装置１１に送信され、サーバ装置１１においてテスト仕様データ（図１４）に格納される。
【０１４０】
バグ検出者により、テスト仕様表示画面に表示されるテスト仕様データの全ての行のフィールド「バグ検出の有無」に「無」または「有」が入力されると、このプロジェクトに関するバグ検出作業が完了することになる。
【０１４１】
バグ検出作業の完了に伴い、サーバ装置１１の記憶部にはフィールド「バグ検出の有無」に「無」または「有」が全て格納されたテスト仕様データ（図１４）が出来上がる。このテスト仕様データは、テストの結果を示すデータとしてテスト業者からテスト依頼主の顧客への報告書作成に用いられる。
【０１４２】
また、フィールド「バグ検出の有無」へのデータ入力が完了したテスト仕様データ（図１４）に加え、テスト仕様データの生成に用いられた因子水準テーブル（図１０）、パターンテーブル（図１２）などはサーバ装置１１の記憶部に保存され、その後の新たなプロジェクトに関するテスト仕様の設計において、水準選択確率やバグ存在確率推定値の算出、推奨因子の選択等に用いられる。
【０１４３】
以上のように、テスト仕様生成システム１によれば、テスト仕様設計者がプログラムのバグ検出のためのテスト仕様を設計する際、因子の選択や水準の選択における判断材料となる各種情報がテスト仕様設計者に対し提示されるため、テストの精度を十分に担保しつつテストに要するコストの削減を可能とするような優れたテスト仕様の設計が可能となる。
【０１４４】
［２．変形例］
上述した実施例は本発明の技術的思想の範囲内において様々に変形可能である。以下にそのような変形の例を示す。
【０１４５】
上述した実施例においては、総コスト額としてテスト全体の費用上限が指定され、その費用上限を超えないようにサーバ装置１１において間引き仕様が自動的に生成される構成が採用されている。費用上限は間引き仕様を生成する際の閾値の一例であって、例えば、生成されるパターン数の上限値を間引き仕様生成時の閾値とする構成が採用されてもよい。パターン毎のコストが一定の場合、総コスト額は総パターン数に比例するため、閾値として総パターン数を用いることと、総コスト額を用いることは同義である。
【０１４６】
上述した実施例においては、サーバ装置１１と端末装置１２およびサーバ装置１１と端末装置１３が互いにインターネット１９を介してデータ通信を行うことによりテスト仕様生成システム１が実現される構成が採用されている。これらの装置の２つもしくは３つの機能を１つの装置が行う構成が採用されてもよい。例えば、サーバ装置１１が端末装置１２の機能を兼ねる場合、テスト仕様設計者は端末装置１２を用いてサーバ装置１１にアクセスする代わりに、サーバ装置１１を直接操作することにより、テスト仕様の設計を行うことができる。
【０１４７】
また、サーバ装置１１が端末装置１３の機能を兼ねる場合、バグ検出者は端末装置１３を用いてサーバ装置１１にアクセスする代わりに、サーバ装置１１を直接操作することにより、バグ検出作業を行うことができる。また、テスト仕様設計者がバグ検出者でもある場合、端末装置１２と端末装置１３は同じ端末装置でもよい。
【０１４８】
また、サーバ装置１１が互いに連携動作する複数の装置群で構成されてもよい。
【０１４９】
上述した実施例においては、サーバ装置１１がテスト対象のプログラムのＡＳＰとして機能し、バグ検出者は端末装置１３のブラウザ機能を用いてサーバ装置１１にアクセスすることで、テスト対象のプログラムに対する操作を行ったり、その操作に応じたコンピュータの状態変化の確認を行ったりすることができる。これに代えて、端末装置１３にテスト対象のプログラムをインストールし、バグ検出者はサーバ装置１１にアクセスすることなく、端末装置１３において実行されるテスト対象のプログラムの挙動を確認する構成が採用されてもよい。
【０１５０】
その場合、バグ検出者はテスト仕様データに関しては端末装置１３を用いてサーバ装置１１にアクセスしてそれを閲覧し、バグ検出作業の結果を入力するようにしてもよいし、例えばサーバ装置１１からテスト仕様データを端末装置１３にダウンロードし、ダウンロードしたテスト仕様データを用いてその閲覧やデータ入力を行うようにしてもよい。後者の場合、バグ検出者はバグ検出作業が完了した際、端末装置１３を用いてバグ検出結果を示すデータの入力されたテスト仕様データをサーバ装置１１にアップロードすることで、サーバ装置１１はそのデータをその後のテスト仕様の設計等に用いることができる。
【０１５１】
上述した実施例においては、サーバ装置１１、端末装置１２および端末装置１３は一般的なコンピュータに本発明にかかるプログラムに従ったデータ処理を行わせることにより実現されるものとしたが、例えばそれらの装置が備える機能構成部の各々の機能を実行可能なハードウェアを組み合わせて、いわゆる専用機としてそれらの装置が実現されてもよい。
【０１５２】
上述した実施例においては、テスト対象の画面（ユーザインタフェース）を特定するデータとしてＵＲＩが用いられるものとしたが、例えば「起動→メニュー→グラフ表示」などのようにプログラムを実行中のコンピュータに対する操作手順を示すデータなど、他の種類のデータによりテスト対象の画面を特定する構成が採用されてもよい。
【０１５３】
上述した実施例において採用されている推奨因子の選択の方法は一例であって、他の方法により推奨因子の選択が行われてもよい。例えば、最後に選択された因子とともに高い確率で選択されている因子を推奨するのに代えて、それまでにその確認項目に関し選択されている複数の因子の組み合わせ（もしくはそれに近い組み合わせ）とともに高い確率で選択されている因子を推奨因子として選択する構成が採用されてもよい。
【０１５４】
上述した実施例において採用されている水準選択確率、因子選択確率、バグ存在確率推定値、未検出バグ存在確率推定値の算出方法は一例であって、本発明を限定するものではない。水準選択確率は過去に各水準が選択された確率を示すものであれば如何なる確率でもよく、因子選択確率は過去にある因子とともに他の因子が選択された確率を示すものであれば如何なる確率であってもよい。また、バグ存在確率推定値はある水準に関連するバグの存在確率の推定値を示す指標であれば如何なる仕様であってもよく、未検出バグ存在確率推定値はある確認項目に関しパターンの省略に伴い生じる未検出バグの存在確率の推定値を示す指標であれば如何なる指標であってもよい。
【０１５５】
上述した実施例において採用されているコストの算出方法は一例であって、他のコストの算出方法が採用されてもよい。例えば、因子毎にコスト増減率を設定する代わりに水準毎にコスト増減率を設定したり、コスト増減率ではなくコスト増減額を設定したりしてもよいし、全てのパターンを同額とし、特にそれらのコスト増減率やコスト増減額といった設定を行わない、という構成が採用されてもよい。
【０１５６】
上述した実施例においては、間引き仕様の生成の際、水準を間引くことによりパターン数を減らし、コスト削減を行う構成が採用されているが、それに代えて、もしくはそれに加えて、他の方法によりパターン数を減らす構成が採用されてもよい。例えば、テスト仕様設計者の選択に従い「全組み合わせ」によるパターン生成が行われている確認項目に関し、「オールペア」によるパターン生成に変更することで生成されるパターン数を減らす方法、因子単位で間引きを行うことにより生成されるパターン数を減らす方法などが採用されてもよい。
【０１５７】
上述した実施例において、バグ検出者のバグ検出能力を評価するために、テスト対象のプログラムに意図的なバグを混入させ、混入させたバグによりエラーが発生するパターンに関して、サーバ装置１１において予めテスト仕様データのデータレコードにその旨を示すフラグデータなどを格納しておく構成が採用されてもよい。テスト仕様設計者などのテスト管理者は、バグ検出者によりフィールド「バグ検出の有無」にバグ検出結果の入力されたテスト仕様データのうち、意図的なバグによりエラーが発生するパターンに関するデータレコードのフィールド「バグ検出の有無」に正しく「有」が入力されているかを確認することで、バグ検出者によりバグ検出作業が正しく行われているか否かを確認することができる。
【産業上の利用可能性】
【０１５８】
本発明は、広くプログラム開発において利用され、いわゆるサービス業に貢献する。
【符号の説明】
【０１５９】
１…テスト仕様生成システム、１１…サーバ装置、１２…図、１２…端末装置、１３…図、１３…端末装置、１４…図、１５…図、１９…インターネット
【図１】
0005787404.tif 000002
【図２】
0005787404.tif 000003
【図３】
0005787404.tif 000004
【図４】
0005787404.tif 000005
【図５】
0005787404.tif 000006
【図６】
0005787404.tif 000007
【図７】
0005787404.tif 000008
【図８】
0005787404.tif 000009
【図９】
0005787404.tif 000010
【図１０】
0005787404.tif 000011
【図１１】
0005787404.tif 000012
【図１２】
0005787404.tif 000013
【図１３】
0005787404.tif 000014
【図１４】
0005787404.tif 000015
【図１５】
0005787404.tif 000016