(57)【要約】【課題】一つの側面では、本発明は、テスト結果の正当性の判定処理を短時間で行うことができるプログラム、情報処理装置及び情報処理方法を提供することにある。【解決手段】  抽出処理を行う抽出プログラムにより抽出されたデータ群に対する処理を実行するプログラムであって、データ群から前記抽出プログラムにより第１抽出条件で抽出した第１データ群及び該データ群から前記抽出プログラムにより第２抽出条件で抽出した第２データ群の数を取得し、前記データ群から前記第２抽出条件により抽出されるべき第１推定データ群の数と、前記第１データ群から前記第２抽出条件により抽出されるべき第２推定データ群の数とを加えた数と、取得した第２データ群の数とが一致するか否かを判定する処理を情報処理装置に実行させる。【選択図】図１
2015114910.tif 000002
【特許請求の範囲】
【請求項１】
抽出処理を行う抽出プログラムにより抽出されたデータ群に対する処理を実行するプログラムであって、
データ群から前記抽出プログラムにより第１抽出条件で抽出した第１データ群及び該データ群から前記抽出プログラムにより第２抽出条件で抽出した第２データ群の数を取得し、
前記データ群から前記第２抽出条件により抽出されるべき第１推定データ群の数と、前記第１データ群から前記第２抽出条件により抽出されるべき第２推定データ群の数とを加えた数と、取得した第２データ群の数とが一致するか否かを判定する処理を情報処理装置に実行させるプログラム。
【請求項２】
前記第１抽出条件又は第２抽出条件はデータ群に含まれる文字列と抽出する文字列とが一致することを条件とし、
前記第１データ群又は第２データ群は前記第１抽出条件又は第２抽出条件における一致した文字列とする
請求項１に記載のプログラム。
【請求項３】
前記第１抽出条件又は第２抽出条件はデータ群に含まれる文字列の一部と抽出する文字列とが一致することを条件とする
請求項１又は請求項２に記載のプログラム。
【請求項４】
抽出処理を行う抽出プログラムにより抽出されたデータ群に対する処理を実行する情報処理装置であって、
データ群から前記抽出プログラムにより第１抽出条件で抽出した第１データ群及び該データ群から前記抽出プログラムにより第２抽出条件で抽出した第２データ群の数を取得する取得部と、
前記データ群から前記第２抽出条件により抽出されるべき第１推定データ群の数と、前記第１データ群から前記第２抽出条件により抽出されるべき第２推定データ群の数とを加えた加算データ群の数を推定する推定部と、
推定した加算データ群の数と、取得した第２データ群の数とが一致するか否かを判定するデータ判定部とを備える情報処理装置。
【請求項５】
抽出処理を行う抽出プログラムにより抽出されたデータ群に対する処理を実行する情報処理装置を用いた情報処理方法であって、
データ群から前記抽出プログラムにより第１抽出条件で抽出した第１データ群及び該データ群から前記抽出プログラムにより第２抽出条件で抽出した第２データ群の数を取得し、
前記データ群から前記第２抽出条件により抽出されるべき第１推定データ群の数と、前記第１データ群から前記第２抽出条件により抽出されるべき第２推定データ群の数とを加えた加算データ群の数を推定し、
推定した加算データ群の数と、取得した第２データ群の数とが一致するか否かを判定する情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアが実行する処理のテストを行うプログラム、情報処理装置及び情報処理方法に関する。
【背景技術】
【０００２】
データベースに格納されたデータを抽出条件に従って抽出する処理を行うソフトウェアのテストは、例えば、抽出条件それぞれについて、正常に抽出処理がなされた場合の抽出結果を予め保持しておき、テストの際に、正常な抽出結果の内容と、テスト時の抽出結果のデータ内容とを比較して、抽出処理が正常に行われたか否かを判定する技術が知られている（例えば、特許文献１、特許文献２）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−２８０２３１号公報
【特許文献２】特開２００７−０１１５１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記した技術では出力されたデータ毎にテスト結果の正当性の判定を行っているため、抽出されるデータベースのデータ容量の増大に伴って処理に要する時間が増加する。
【０００５】
一つの側面では、本発明は、テスト結果の正当性の判定処理を短時間で行うことができるプログラム、情報処理装置及び情報処理方法を提供することにある。
【課題を解決するための手段】
【０００６】
一態様のプログラムは抽出処理を行う抽出プログラムにより抽出されたデータ群に対する処理を実行するプログラムであって、データ群から前記抽出プログラムにより第１抽出条件で抽出した第１データ群及び該データ群から前記抽出プログラムにより第２抽出条件で抽出した第２データ群の数を取得し、前記データ群から前記第２抽出条件により抽出されるべき第１推定データ群の数と、前記第１データ群から前記第２抽出条件により抽出されるべき第２推定データ群の数とを加えた数と、取得した第２データ群の数とが一致するか否かを判定する処理を情報処理装置に実行させる。
【発明の効果】
【０００７】
一態様によれば、テスト結果の正当性の判定処理を短時間で行うことができる。
【図面の簡単な説明】
【０００８】
【図１】情報処理装置のハードウェア群を示すブロック図である。
【図２】各種データテーブルの一覧を示すブロック図である。
【図３】ランダムテーブルのデータ構造の一例を示す説明図である。
【図４】書き換えテーブルのデータ構造の一例を示す説明図である。
【図５】ワークテーブルのデータ構造の一例を示す説明図である。
【図６】件数テーブルのデータ構造の一例を示す説明図である。
【図７】組み合わせテーブルのデータ構造の一例を示す説明図である。
【図８】上書きテーブルのデータ構造の一例を示す説明図である。
【図９】マスタテーブルのデータ構造の一例を示す説明図である。
【図１０】正解テーブルのデータ構造の一例を示す説明図である。
【図１１】テスト結果判定処理を行ったマスタテーブルの一例を示す説明図である。
【図１２】ＣＰＵの処理手順を示すフローチャートである。
【図１３】テストデータ生成処理の手順の一例を示すフローチャートである。
【図１４】テストデータ生成処理の手順の一例を示すフローチャートである。
【図１５】テストデータ生成処理の手順の一例を示すフローチャートである。
【図１６】テストデータ生成処理の手順の一例を示すフローチャートである。
【図１７】正解行数生成処理の手順の一例を示すフローチャートである。
【図１８】正解行数生成処理の手順の一例を示すフローチャートである。
【図１９】正解行数生成処理の手順の一例を示すフローチャートである。
【図２０】正解行数生成処理の手順の一例を示すフローチャートである。
【図２１】テスト結果判定処理の手順の一例を示すフローチャートである。
【図２２】テスト結果判定処理の手順の一例を示すフローチャートである。
【図２３】実施の形態２に係る各種データテーブルの一覧を示すブロック図である。
【図２４】展開テーブルのデータ構造の一例を示す説明図である。
【図２５】実施の形態２に係るＣＰＵの処理手順を示すフローチャートである。
【図２６】展開テーブル生成処理の手順の一例を示すフローチャートである。
【図２７】ＣＰＵが行う障害箇所特定処理の一例を示す説明図である。
【図２８】障害箇所特定処理の手順の一例を示すフローチャートである。
【図２９】障害箇所特定処理の手順の一例を示すフローチャートである。
【図３０】障害箇所特定処理の手順の一例を示すフローチャートである。
【図３１】実施の形態３に係る情報処理装置のハードウェア群を示すブロック図である。
【図３２】実施の形態３に係る情報処理装置ハードウェア群の機能ブロック図である。
【発明を実施するための形態】
【０００９】
実施の形態１
図１は情報処理装置１のハードウェア群を示すブロック図である。情報処理装置１はソフトウェアに対して行われるテスト結果の正当性を確認するプログラムを実行するコンピュータであり、例えばパーソナルコンピュータ、サーバコンピュータ等である。図１に示す情報処理装置１は、ＣＰＵ(Central Processing Unit)１１、記憶部１２、入力部１３、出力部１４を備える。
【００１０】
ＣＰＵ１１は、バスを介してハードウェア各部と接続されている。ＣＰＵ１１は例えば一又は複数のＣＰＵ又はマルチコアＣＰＵ等を備える。ＣＰＵ１１は、記憶部１２に記憶された制御プログラム１２Ｐに従いハードウェアの各部を制御する。
【００１１】
記憶部１２は、ＲＯＭ（Read Only Memory）及びＲＡＭ（Random Access Memory）を備えている。ＲＯＭは例えばＥＥＰＲＯＭ（Electrically Erasable Programmable ROM）又はフラッシュメモリ等の不揮発性のメモリ素子である。またＲＡＭはＳＲＡＭ（Static Random Access Memory）又はＤＲＡＭ（Dynamic Random Access Memory）等の揮発性メモリ素子で構成されている。記憶部１２は、ＣＰＵ１１が処理を行う際に必要とする種々のデータ、ＣＰＵ１１が実行するプログラム１２Ｐ、抽出処理を行う抽出プログラム１３Ｐ及びデータテーブル１２Ｔを格納する。データテーブル１２Ｔは、情報処理装置１が処理に用いるために必要なデータを格納した複数のテーブルから構成されている。
【００１２】
入力部１３はマウス、キーボード又はタッチパネル等の入力デバイスであり、受け付けた操作情報をＣＰＵ１１へ出力する。出力部１４は表示装置（図示せず）に表示させる画像データを出力する。
【００１３】
図２は各種データテーブルの一覧を示すブロック図である。データテーブル１２Ｔは、ランダムテーブルＴ１、書き換えテーブルＴ２、ワークテーブルＴ３、件数テーブルＴ４、組み合わせテーブルＴ５、上書きテーブルＴ６、マスタテーブルＴ７、正解テーブルＴ８を備える。
【００１４】
次に本実施の形態で用いられるデータテーブル１２Ｔについて説明する。図３はランダムテーブルＴ１のデータ構造の一例を示す説明図である。ランダムテーブルＴ１はランダムな文字列を各欄に生成したテーブルである。ランダムテーブルＴ１はデータ項目１列、データ項目２列、データ項目３列等を備える。ＣＰＵ１１は予め記憶部１２に記憶されたランダムテーブルＴ１の行数（ＮＵＭ＿Ｒ）、列数（ＮＵＭ＿Ｌ）、項目の最少文字数（ＭＩＮＩ＿Ｌ）、項目の最大文字数（ＭＡＸ＿Ｌ）等を含む各種設定データを読み込む。ＣＰＵ１１は各種設定データに基づいてランダムな文字列をランダムテーブルＴ１の各欄に生成することによりランダムテーブルＴ１を生成する（例えば特開２００１−２５６０７６号公報参照）。なお、図３に示したランダムテーブルＴ１は行数を８、列数を３、項目の最少文字数を１、項目の最大文字数を１０としたが、行数又は列数を例えば１００万行以上としたテーブルを用いてもよい。
【００１５】
図４は書き換えテーブルＴ２のデータ構造の一例を示す説明図である。書き換えテーブルＴ２は抽出する文字列を記憶したテーブルである。書き換えテーブルＴ２はデータ項目１列、データ項目２列、データ項目３列等を備える。ＣＰＵ１１は書き換えデータの入力を受け付ける。ＣＰＵ１１は入力された書き換えデータから書き換えテーブルＴ２を生成する。なお、書き換えテーブルＴ２は予め記憶部１２に記憶していてもよい。
【００１６】
図５はワークテーブルＴ３のデータ構造の一例を示す説明図である。ワークテーブルＴ３は書き換えテーブルＴ２から後述する上書きテーブルＴ６を生成するためのテーブルである。ワークテーブルＴ３はデータ項目１列、データ項目２列、データ項目３列等を備える。ＣＰＵ１１は生成したテーブルの各欄にランダムで書き換えテーブルＴ２の各列の行番号を対応づけたデータ群を生成し、生成したデータ群によりワークテーブルＴ３を生成する。
【００１７】
なお、図５に示したワークテーブルＴ３は行数を５、列数を３、項目の最少文字数を１、項目の最大文字数を１０としたが、行数又は列数を例えば１０万行以上としたテーブルを用いてもよい。
【００１８】
図６は件数テーブルＴ４のデータ構造の一例を示す説明図である。件数テーブルＴ４はワークテーブルＴ３に書き換えテーブルＴ２の各列の行番号が記憶された回数を記憶するテーブルである。件数テーブルＴ４はデータ項目１列、データ項目２列、データ項目３列等を備える。ＣＰＵ１１はワークテーブルＴ３に書き換えテーブルＴ２の各列の行番号が記憶された回数を計数する。ＣＰＵ１１は計数した回数を要素毎に件数テーブルＴ４に記憶する。
【００１９】
具体的にはＣＰＵ１１が件数テーブルＴ４を生成する処理の一例は以下の通りである。ＣＰＵ１１はワークテーブルＴ３の１列目の１行目及び１列目の４行目に「１」が記憶された場合、件数テーブルＴ４の１列目の１行目に「２」を記憶する。ＣＰＵ１１はワークテーブルＴ３の２列目の１行目に「１」が記憶された場合、件数テーブルＴ４の２列目の１行目に「１」を記憶する。ＣＰＵ１１はワークテーブルＴ３の３列目の１行目に「１」が記憶された場合、件数テーブルＴ４の３列目の１行目に「１」を記憶する。ＣＰＵ１１は以下同様の処理を各行に対して行う。
【００２０】
図７は組み合わせテーブルＴ５のデータ構造の一例を示す説明図である。組み合わせテーブルＴ５はデータ群に対応づけられた行番号の組み合わせを示す行番号組み合わせに関するデータを記憶したテーブルである。組み合わせテーブルＴ５は組み合わせ列、組み合わせ数列等を備える。組み合わせ列には書き換えテーブルＴ２の各列の行番号を組み合わせることにより行番号組み合わせが記憶される。組み合わせ数列にはワークテーブルＴ３に同一の行番号組み合わせが記憶された回数を示す組み合わせ数が記憶される。
【００２１】
ＣＰＵ１１は書き換え用テーブルＴ２及びワークテーブルＴ３を参照し、書き換えテーブルＴ２の行数を書き換えテーブルＴ２の列数個組み合わせることにより行番号組み合わせを生成する。ＣＰＵ１１は同一の行番号組み合わせの数を計数する。ＣＰＵ１１は計数した行番号組み合わせの数を組み合わせテーブルＴ５に記憶する。
【００２２】
具体的にはＣＰＵ１１が組み合わせテーブルＴ５を生成する処理の一例は以下の通りである。ＣＰＵ１１は書き換え用テーブルＴ２及びワークテーブルＴ３を参照する。ＣＰＵ１１は「１，１，１」から「４，４，４」までの全ての組み合わせを組み合わせテーブルＴ５に記憶する。ＣＰＵ１１はワークテーブルＴ３から行番号組み合わせ「１，１，１」を計数する。ＣＰＵ１１は行番号組み合わせ「１，１，１」がワークテーブルＴ３の１行目に記憶された行番号組み合わせを計数し、組み合わせ数列の１行目に「１」を記憶する。ＣＰＵ１１はワークテーブルＴ３から行番号組み合わせ「２，１，１」を計数する。ＣＰＵ１１は行番号組み合わせ「２，１，１」がワークテーブルＴ３の各行に記憶されていないと判定し、組み合わせ数列の２行目に「０」を記憶する。ＣＰＵ１１は以下同様の処理を「４，４，４」まで行う。
【００２３】
図８は上書きテーブルＴ６のデータ構造の一例を示す説明図である。上書きテーブルＴ６はランダムテーブルＴ１に上書きするためのテーブルである。上書きテーブルＴ６はデータ項目１列、データ項目２列、データ項目３列等を備える。ＣＰＵ１１はワークテーブルＴ３に対応づけられた書き換えテーブルＴ２の各列の行番号に書き換えテーブルＴ２の各要素を割り振ることにより、上書きテーブルＴ６を生成する。
【００２４】
具体的にはＣＰＵ１１が組み合わせテーブルＴ５を生成する処理の一例は以下の通りである。ＣＰＵ１１はワークテーブルＴ３の１列目の１行目に「１」が記憶されていた場合、書き換えテーブルＴ２の１列目の１行目の「ａａａ」を上書きテーブルＴ６の１列目の１行目に記憶する。ＣＰＵ１１はワークテーブルＴ３の２列目の１行目に「１」が記憶されていた場合、書き換えテーブルＴ２の２列目の１行目の「アイウ」を上書きテーブルＴ６の２列目の１行目に記憶する。ＣＰＵ１１はワークテーブルＴ３の３列目の１行目に「１」が記憶されていた場合、書き換えテーブルＴ２の３列目の１行目の「ナポレオン」を上書きテーブルＴ６の３列目の１行目に記憶する。ＣＰＵ１１は以下同様の処理を各行に対して行う。
【００２５】
図９はマスタテーブルＴ７のデータ構造の一例を示す説明図である。マスタテーブルＴ７はランダムテーブルＴ１に上書きテーブルＴ６を上書きしたデータ群を記憶したテーブルである。マスタテーブルＴ７はデータ項目１列、データ項目２列、データ項目３列等を備える。ＣＰＵ１１はランダムテーブルＴ１にランダムで上書きテーブルＴ６の各行を上書きすることによりマスタテーブルＴ７を生成する。なお、ＣＰＵ１１はランダムテーブルＴ１に上書きテーブルＴ６の各行をそのままの配列で上書きすることによりマスタテーブルＴ７を生成してもよい。
【００２６】
図１０は正解テーブルＴ８のデータ構造の一例を示す説明図である。正解テーブルＴ８は抽出プログラム１３Ｐにより抽出する要素に関連するデータを記憶したテーブルである。正解テーブルＴ８は予め記憶部１２に記憶されている。正解テーブルＴ８はテスト番号列、タイプ列、検索列、正解列番号列、正解行番号列、組み合わせ列、抽出数列、テスト番号総数列等を備える。
【００２７】
テスト番号列にはＣＰＵ１１がテストを行う順番を示すテスト番号が記憶されている。タイプ列には抽出プログラム１３ＰによりＣＰＵ１１が行う検索の第１抽出条件又は第２抽出条件等の抽出条件が記憶されている。第１抽出条件とはテスト番号に対応づけられた検索の抽出条件である。第２抽出条件とは第１抽出条件に対応づけられたテスト番号の次に行われる検索の抽出条件である。検索の抽出条件とは例えばＡ１、Ａ２、Ｂ等である。Ａ１はデータ群に含まれる文字列と抽出する文字列とが一致することを条件とする。Ａ２はデータ群に含まれる文字列の一部と抽出する文字列とが一致することを条件とする。Ｂはデータ群に含まれる文字列の組み合わせと抽出する文字列の組み合わせとが一致することを条件とする。
【００２８】
検索列には抽出プログラム１３ＰによりＣＰＵ１１が検索する文字列を示す検索文字列が記憶されている。検索文字列には例えば「アイウエ」、「ａａａ,アイウ,ナポレオン」等が記憶される。正解列番号列にはデータ群から抽出条件により抽出される抽出データ群の抽出列番号が予め記憶される。抽出列番号とはデータ群から抽出条件により抽出される抽出データ群の列番号である。正解行番号列には第１、第２データ群等の抽出データ群の行番号が予め記憶される。第１データ群とはデータ群から第１抽出条件により抽出される文字列又は文字列の組み合わせである。第２データ群とはデータ群から第２抽出条件により抽出される文字列又は文字列の組み合わせである。組み合わせ列には抽出プログラム１３ＰによりＣＰＵ１１が抽出する行番号組み合わせが予め記憶される。抽出数列には抽出プログラム１３ＰによりＣＰＵ１１が抽出する行数を示す抽出行数が予め記憶される。テスト番号総数列にはテスト番号の総数が予め記憶される。
【００２９】
ＣＰＵ１１は前記データ群から前記第２抽出条件により抽出されるべき第１推定データ群の数と、前記第１データ群から前記第２抽出条件により抽出されるべき第２推定データ群の数とを加えた加算データ群の数を推定する。具体的にはＣＰＵ１１は記憶部１２に予め記憶された第１推定データ群及び第２データ群の行番号とデータ群の行番号とが一致した数を計数することにより加算データ群を推定する。ＣＰＵ１１は正解テーブルＴ８、ワークテーブルＴ３及び組み合わせテーブルＴ５に基づいて推定した抽出データ群の数を示す正解行数をＳＥＩＫＡＩ（）に記憶する。ＳＥＩＫＡＩ（）は正解行数を保存する配列であり、配列のインデックスにはテスト番号が格納される。すなわちＳＥＩＫＡＩ（）には推定された第１データ群、第２データ群の数が記憶される。
【００３０】
図１１はテスト結果判定処理を行ったマスタテーブルＴ７の一例を示す説明図である。以下に、ＣＰＵ１１が行うテスト結果判定処理を図１１を参照しながら説明する。
【００３１】
図１１Ａはテスト番号が１のテスト結果判定処理を行ったマスタテーブルＴ７を示す説明図である。図１１Ａに示すように、マスタテーブルＴ７をタイプＡ２により検索文字列「アイウエ」で検索する。ＣＰＵ１１はマスタテーブルＴ７の６行目及び８行目から「アイウエ」を抽出する。ＣＰＵ１１は抽出した行数を抽出件数（１）に記憶する。抽出件数（）は抽出した行数を保存する配列であり、配列のインデックスにはテスト番号が格納される。
【００３２】
ＣＰＵ１１は抽出件数（１）とＳＥＩＫＡＩ（１）とが一致したか否かを判定する。ＣＰＵ１１は抽出件数（１）とＳＥＩＫＡＩ（１）とが一致しなかった場合、実施したテストに正当性があるか否かを示す判定（１）にＮＧを記憶する。判定（）の引数は抽出件数を示す。ＮＧは実施したテストに正当性がないことを示す。ＣＰＵ１１は抽出件数（１）とＳＥＩＫＡＩ（１）とが一致した場合、判定（１）にＯＫを記憶する。ＯＫは実施したテストに正当性があることを示す。ＣＰＵ１１は抽出件数（１）とＳＥＩＫＡＩ（１）とが一致し、判定（１）にＯＫを記憶する。
【００３３】
ＣＰＵ１１はマスタテーブルＴ７の６行目に記憶された「ｃｃｃ」、「アイウエオ」、「エメルソン」をマスタテーブルＴ７の９行目に追加する。ＣＰＵ１１はマスタテーブルＴ７の８行目に記憶された「ａｂａａ」、「カキクアイウエ」、「ポンテ」をマスタテーブルＴ７の１０行目に追加する。
【００３４】
図１１Ｂはテスト番号が２のテスト結果判定処理を行ったマスタテーブルＴ７を示す説明図である。図１１Ｂに示すように、ＣＰＵ１１はマスタテーブルＴ７をタイプＡ１により検索文字列「アイウ」を検索する。ＣＰＵ１１はマスタテーブルＴ７の８行目から「カキクアイウエ」を誤って抽出する。ＣＰＵ１１は行数１を抽出件数（２）に記憶する。ＣＰＵ１１は抽出件数（２）とＳＥＩＫＡＩ（２）とが一致し、判定（２）にＯＫを記憶する。
【００３５】
ＣＰＵ１１はマスタテーブルＴ７の８行目に記憶された「ａｂａａ」、「カキクアイウエ」、「ポンテ」をマスタテーブルＴ７の１１行目に追加する。
【００３６】
図１１Ｃはテスト番号が３のテスト結果判定処理を行ったマスタテーブルＴ７を示す説明図である。図１１Ｃに示すように、ＣＰＵ１１はマスタテーブルＴ７をタイプＢにより検索文字列「ａａａ,アイウ,ナポレオン」を検索する。ＣＰＵ１１はマスタテーブルＴ７の２行目から「ａａａ」、「アイウ」、「ナポレオン」を抽出する。ＣＰＵ１１は抽出した行数２を抽出件数（３）に記憶する。ＣＰＵ１１は抽出件数（３）とＳＥＩＫＡＩ（３）とが一致せず、判定（３）にＮＧを記憶する。ＣＰＵ１１はマスタテーブルＴ７の２行目に記憶された「ａａａ」、「アイウ」、「ナポレオン」をマスタテーブルＴ７の１２行目に追加する。
【００３７】
図１２はＣＰＵ１１の処理手順を示すフローチャートである。ＣＰＵ１１はランダムテーブルＴ１及びワークテーブルＴ３等の各種設定データを設定する（ステップＳ１）。具体的にはＣＰＵ１１はＮＵＭ＿Ｒ、ＮＵＭ＿Ｌ、ＭＩＮＩ＿Ｌ、ＭＡＸ＿Ｌ等の設定データを設定する。
【００３８】
ＣＰＵ１１は書き換えデータの入力を受け付ける（ステップＳ２）。ＣＰＵ１１は入力した書き換えデータから書き換えテーブルＴ２を生成する（ステップＳ３）。ＣＰＵ１１はテストデータ生成処理を行う（ステップＳ４）。ＣＰＵ１１は正解件数生成処理を行う（ステップＳ５）。ＣＰＵ１１はテスト結果判定処理を行い（ステップＳ６）、処理を終了する。
【００３９】
図１３〜図１６はテストデータ生成処理の手順の一例を示すフローチャートである。ＣＰＵ１１は各種設定データを読み込む（ステップＳ１１）。具体的にはＣＰＵ１１はＮＵＭ＿Ｒ、ＮＵＭ＿Ｌ、ＭＩＮＩ＿Ｌ、ＭＡＸ＿Ｌ等の設定データを読み込む。ＣＰＵ１１は各種設定データに基づいてランダムな文字列をランダムテーブルＴ１の各欄に生成することによりランダムテーブルＴ１を生成する（ステップＳ１２）。
【００４０】
ＣＰＵ１１は書き換えテーブルＴ２を読み込む（ステップＳ１３）。書き換えデータをＳＯＵＲＣＥ(ｉ，ｊ)に記憶する（ステップＳ１４）。ＳＯＵＲＣＥ（）は書き換えデータを保存した配列である。ループ変数ｉは行番号を格納する配列のインデックスとして用いられる。ループ変数ｊは列番号を格納する配列のインデックスとして用いられる。
【００４１】
ＣＰＵ１１は書き換えテーブルＴ２における列毎の行番号の総数をＮ（ｊ）に記憶する（ステップＳ１５）。Ｎ（ｊ）は書き換えデータの列毎における行番号の総数を保存した配列である。ＣＰＵ１１は１〜Ｎ（ｊ）の数字をＷＯＲＫ(ｉ，ｊ)のｊ列毎にランダムで記憶する（ステップＳ１６）。ＷＯＲＫ()はデータ群であり、書き換えデータの行番号を保存する配列である。ＣＰＵ１１はＷＯＲＫ(ｉ，ｊ)をワークテーブルＴ３に記憶する（ステップＳ１７）。
【００４２】
ＣＰＵ１１はワークテーブルＴ３を参照し、ワークテーブルＴ３に書き換えテーブルＴ２の各列の行番号が記憶された回数を計数する（ステップＳ１８）。ＣＰＵ１１は計数した回数を件数テーブルＴ４に記憶する（ステップＳ１９）。
【００４３】
ＣＰＵ１１はループ変数ｉを１に設定する（ステップＳ２０）。ＣＰＵ１１はループ変数ｊを１に設定する（ステップＳ２１）。ＣＰＵ１１は書き換えデータの行番号を保存する変数ＬにＷＯＲＫ(ｉ，ｊ)の値を記憶する（ステップＳ２２）。ＣＰＵ１１はＢＡＳＥＤＡＴＡ(ｉ，ｊ)にＳＯＵＲＣＥ（Ｌ，ｊ）を記憶する（ステップＳ２３）。ＢＡＳＥＤＡＴＡ()は上書きデータを保存する配列である。すなわち、ＣＰＵ１１は上書きテーブルＴ６のｉ行のｊ列に書き換えテーブルＴ２のＬ行のｊ列に記憶された要素を記憶する。
【００４４】
ＣＰＵ１１はループ変数ｊを１増加させる（ステップＳ２４）。ＣＰＵ１１はループ変数ｊがＮＵＭ＿Ｒを超えたか否かを判定する（ステップＳ２５）。ＣＰＵ１１はループ変数ｊがＮＵＭ＿Ｒを超えなかったと判定した場合（ステップＳ２５：ＮＯ）、ステップＳ２２に戻り、処理を続ける。ＣＰＵ１１はループ変数ｊがＮＵＭ＿Ｒを超えたと判定した場合（ステップＳ２５：ＹＥＳ）、ループ変数ｉを１増加させる（ステップＳ２６）。ＣＰＵ１１はループ変数ｉがＮＵＭ＿Ｄを超えたか否かを判定する（ステップＳ２７）。ＣＰＵ１１はループ変数ｉがＮＵＭ＿Ｄを超えなかったと判定した場合（ステップＳ２７：ＮＯ）、ステップＳ２１に戻り、処理を続ける。
【００４５】
ＣＰＵ１１はループ変数ｉがＮＵＭ＿Ｄを超えたと判定した場合（ステップＳ２７：ＹＥＳ）、ワークテーブルＴ３を参照し、書き換えテーブルＴ２の行数を書き換えテーブルＴ２の列数個掛け合わせた組み合わせ総数を計数する（ステップＳ２８）。具体的には以下の式により組み合わせ総数を計数する。
ＮＵＭ＝Ｎ（１）×Ｎ（２）×……×Ｎ（ＮＵＭ＿Ｒ）
【００４６】
ＣＰＵ１１は計数した組み合わせ総数を正解テーブルＴ８に記憶する（ステップＳ２９）。ＣＰＵ１１は書き換えテーブルＴ２に基づいて行番号組み合わせを生成する（ステップＳ３０）。具体的にはＣＰＵ１１は書き換えテーブルＴ２の行数を書き換えテーブルＴ２の列数個組み合わせることにより行番号組み合わせを生成する。ＣＰＵ１１は生成した行番号組み合わせを組み合わせ番号Ｌ（ｉ）及び組み合わせテーブルＴ５に記憶する（ステップＳ３１）。組み合わせ番号Ｌ（）は行番号組み合わせを保存する配列である。ＣＰＵ１１はワークテーブルＴ３に組み合わせ番号Ｌ（ｉ）に記憶した同一の行番号組み合わせの数を計数する（ステップＳ３２）。ＣＰＵ１１は計数した同一の行番号組み合わせの数を変数ＳＵ及び組み合わせテーブルＴ５に記憶する（ステップＳ３３）。変数ＳＵは計数した同一の行番号組み合わせの数を記憶する変数である。
【００４７】
ＣＰＵ１１はワークテーブルＴ３からＮＵＭ＿Ｄ個の行番号をランダムに抽出する（ステップＳ３４）。ＣＰＵ１１は抽出した値をＬＩＮＥ＿Ｏ(ｉ)に記憶する（ステップＳ３５）。ＬＩＮＥ＿Ｏ（）はランダムに抽出した行番号を保存した配列である。
【００４８】
ＣＰＵ１１はループ変数iを１に設定する（ステップＳ３６）。ＣＰＵ１１は変数ＬにＬＩＮＥ＿Ｏ（ｉ）の値を記憶する（ステップＳ３７）。変数Ｌはランダムに抽出した行番号を保存する変数である。ＣＰＵ１１はループ変数ｊを１に設定する（ステップＳ３８）。ＣＰＵ１１はＤＡＴＡ（Ｌ，ｊ）にＢＡＳＥＤＡＴＡ(ｉ，ｊ)を記憶する（ステップＳ３９）。ＤＡＴＡ（）はマスタテーブルＴ７に保存する配列である。すなわち、ＣＰＵ１１はマスタテーブルＴ７のＬ行ｊ列に上書きテーブルＴ６のｉ行ｊ列の要素を記憶する。
【００４９】
ＣＰＵ１１はループ変数ｊを１増加させる（ステップＳ４０）。ＣＰＵ１１はループ変数ｊがＮＵＭ＿Ｒを超えているか否かを判定する（ステップＳ４１）。ＣＰＵ１１はループ変数ｊがＮＵＭ＿Ｒを超えていないと判定した場合（ステップＳ４１：ＮＯ）、ステップＳ３９に戻り、処理を続ける。ＣＰＵ１１はループ変数ｊがＮＵＭ＿Ｒを超えていると判定した場合（ステップＳ４１：ＹＥＳ）、ループ変数ｉを１増加させる（ステップＳ４２）。ＣＰＵ１１はループ変数ｉがＮＵＭ＿Ｄを超えているか否かを判定する（ステップＳ４３）。ＣＰＵ１１はループ変数ｉがＮＵＭ＿Ｄを超えていないと判定した場合（ステップＳ４３：ＮＯ）、ステップＳ３７に戻り、処理を続ける。ＣＰＵ１１はループ変数ｉがＮＵＭ＿Ｄを超えていると判定した場合（ステップＳ４３：ＹＥＳ）、テストデータ生成処理を終了し、処理を正解行数生成処理に移す。
【００５０】
図１７〜図２０は正解行数生成処理の手順の一例を示すフローチャートである。ＣＰＵ１１はＨＩＴ(ａ，ｉ)を０に初期化する（ステップＳ５１）。ＨＩＴ（）はＣＰＵ１１がテスト番号を示す変数であるループ変数ａにおいて書き換えテーブルＴ２から行番号ｉの要素が抽出されるか否かを記憶する配列である。すなわちＨＩＴ（）はデータ群からループ変数ａに対応づけられた抽出条件により行番号ｉの抽出データ群が抽出されるか否かを記憶している。例えばＨＩＴ(ａ，ｉ)が１であった場合、テスト番号ａに対応づけられた抽出条件により行番号ｉの要素をマスタテーブルＴ７から抽出することを意味する。あるいはＨＩＴ(ａ，ｉ)が０であった場合、テスト番号ａに対応づけられた抽出条件により行番号ｉの要素をマスタテーブルＴ７から抽出しないことを意味する。
【００５１】
ＣＰＵ１１は正解テーブルＴ８を読み込む（ステップＳ５２）。ＣＰＵ１１はループ変数ａを１に設定する（ステップＳ５３）。ＣＰＵ１１は組み合わせテーブルＴ５を読み込む（ステップＳ５４）。
【００５２】
ＣＰＵ１１は正解テーブルＴ８におけるタイプ列のａ行目がＡ１であるか否かを判定する（ステップＳ５５）。ＣＰＵ１１はタイプ列のａ行目がＡ１であると判定した場合（ステップＳ５５：ＹＥＳ）、正解テーブルＴ８における正解行番号列のａ行目を変数Ｍに記憶する（ステップＳ５６）。変数Ｍは記憶部１２に予め記憶された抽出データ群の行番号を保存する変数である。ＣＰＵ１１は正解テーブルＴ８における正解列番号列のａ行目を変数ｒに記憶する（ステップＳ５７）。変数ｒは記憶部１２に予め記憶された抽出データ群の列番号を保存する変数である。ＣＰＵ１１は検索した回数を示すループ変数ｉを１に設定する（ステップＳ５８）。ＣＰＵ１１はＷＯＲＫ（ｉ，ｒ)が変数Ｍであるか否かを判定する（ステップＳ５９）。すなわちＣＰＵ１１は記憶部１２に予め記憶された抽出データ群の行番号とデータ群の行番号とが一致するか否かを判定する
【００５３】
ＣＰＵ１１はＷＯＲＫ（ｉ，ｒ)が変数Ｍでないと判定した場合（ステップＳ５９：ＮＯ）、ＣＰＵ１１はループ変数ｉを１増加させ、（ステップＳ６０）、ステップＳ５９に戻り、処理を続ける。ＣＰＵ１１はＷＯＲＫ（ｉ，ｒ)が変数Ｍであると判定した場合（ステップＳ５９：ＹＥＳ）、ＨＩＴ（ａ，ｉ)に１を記憶させる（ステップＳ６１）。ＣＰＵ１１はＨＩＴ＿ＳＵ（ｉ）に組み合わせ数ＳＵを記憶し（ステップＳ６２）、処理をステップＳ８０に移す。ＨＩＴ＿ＳＵ（）は組み合わせテーブルＴ５に記憶した同一の行番号組み合わせの数を保存する配列である。
【００５４】
ＣＰＵ１１は正解テーブルＴ８におけるタイプ列のａ行目がＡ１でないと判定した場合（ステップＳ５５：ＮＯ）、正解テーブルＴ８におけるタイプ列のａ行目がＡ２であるか否かを判定する（ステップＳ６３）。正解テーブルＴ８における正解行番号列のａ行目をＬＩＮＥ（ｊ）に記憶する（ステップＳ６４）。ＬＩＮＥ（）は抽出する行番号を保存する配列である。ＣＰＵ１１は正解テーブルＴ８における正解列番号列のａ行目を変数ｒに記憶する（ステップＳ６５）。ＣＰＵ１１はループ変数ｊを１に設定する（ステップＳ６６）。
【００５５】
ＣＰＵ１１はループ変数ｉを１に設定する（ステップＳ６７）。ＣＰＵ１１はＷＯＲＫ（ｉ，ｒ)がＬＩＮＥ（ｊ）と同一であるか否かを判定する（ステップＳ６８）。すなわちＣＰＵ１１は書き換えデータのｉ行のｒ列に保存された行番号がｊ列において抽出する行番号と一致するか否かを判定する。ＣＰＵ１１はＷＯＲＫ（ｉ，ｒ) がＬＩＮＥ（ｊ）と同一でない判定した場合（ステップＳ６８：ＮＯ）、ＣＰＵ１１はループ変数ｉを１増加させ、（ステップＳ６９）、ステップＳ６８に戻り、処理を続ける。ＣＰＵ１１はＷＯＲＫ（ｉ，ｒ)がＬＩＮＥ（ｊ）と同一であると判定した場合（ステップＳ６８：ＹＥＳ）、ＨＩＴ（ａ，ｉ)に１を記憶させる（ステップＳ７０）。すなわちＨＩＴ（）はデータ群からループ変数ａに対応づけられた抽出条件により行番号ｉの抽出データ群が抽出されるか否かを記憶している。ＣＰＵ１１はＨＩＴ＿ＳＵ（ｉ）に組み合わせ数ＳＵを記憶する（ステップＳ７１）。すなわちＣＰＵ１１は計数した行番号ｉの同一の行番号組み合わせを抽出データ群（第１データ群）の数としてＨＩＴ＿ＳＵ（ｉ）に記憶する。
【００５６】
ＣＰＵ１１はループ変数ｊを１増加させる（ステップＳ７２）。ＣＰＵ１１はループ変数ｊがＮＵＭ＿Ｒを超えたか否かを判定する（ステップＳ７３）。ＣＰＵ１１はループ変数ｊがＮＵＭ＿Ｒを超えなかったと判定した場合（ステップＳ７３：ＮＯ）、ステップＳ６７に戻り、処理を続ける。ＣＰＵ１１はループ変数ｊがＮＵＭ＿Ｒを超えたと判定した場合（ステップＳ７３：ＹＥＳ）、処理をステップＳ８０に移す。
【００５７】
ＣＰＵ１１は正解テーブルＴ８におけるタイプ列のａ行目がＡ２でないと判定した場合（ステップＳ６３：ＮＯ）、抽出する行番号組み合わせをＲＯＷ（１，２……ＮＵＭ＿Ｒ）に記憶する（ステップＳ７４）。ＲＯＷ（）は行番号組み合わせを保存する配列であり、配列のインデックスには列番号が格納される。ＲＯＷ（１，２……ＮＵＭ＿Ｒ）には例えば（１，１，１）等が保存される。ＣＰＵ１１はループ変数ｉを１に設定する（ステップＳ７５）。ＣＰＵ１１はＷＯＲＫ（ｉ，１，２……ＮＵＭ＿Ｒ)がＲＯＷ（１、２……ＮＵＭ＿Ｒ）と同一であるか否かを判定する（ステップＳ７６）。すなわち、ＣＰＵ１１は書き換えデータのｉ行に保存された行番号組み合わせが抽出する行番号組み合わせと一致するか否かを判定する。
【００５８】
ＣＰＵ１１はＷＯＲＫ（ｉ，１，２……ＮＵＭ＿Ｒ)がＲＯＷ（１，２……ＮＵＭ＿Ｒ）と同一でないと判定した場合（ステップＳ７６：ＮＯ）、ＣＰＵ１１はループ変数ｉを１増加させ（ステップＳ７７）、ステップＳ７６に戻り、処理を続ける。ＣＰＵ１１はＷＯＲＫ（ｉ，１，２……ＮＵＭ＿Ｒ)がＲＯＷ（１，２……ＮＵＭ＿Ｒ）であると判定した場合（ステップＳ７６：ＹＥＳ）、ＨＩＴ（ａ，ｉ)に１を記憶させる（ステップＳ７８）。ＣＰＵ１１はＨＩＴ＿ＳＵ（ｉ）に組み合わせ数ＳＵを記憶し（ステップＳ７９）、処理をステップＳ８０に移す。
【００５９】
ＣＰＵ１１はループ変数ａを１増加させる（ステップＳ８０）。ＣＰＵ１１はループ変数ａが正解テーブルＴ８に記憶されたテスト番号総数を示すＴＥＳＴ＿ＮＵＭを超えたか否かを判定する（ステップＳ８１）。ＣＰＵ１１はループ変数ａがＴＥＳＴ＿ＮＵＭを超えなかったと判定した場合（ステップＳ８１：ＮＯ）、処理をステップＳ５４に移す。ＣＰＵ１１はループ変数ａがＴＥＳＴ＿ＮＵＭを超えたと判定した場合（ステップＳ８１：ＹＥＳ）、ループ変数ｉを１に設定する（ステップＳ８２）。ＣＰＵ１１はループ変数ａを１に設定する（ステップＳ８３）。
【００６０】
ＣＰＵ１１は書き換えテーブルＴ２から抽出する行数を示す抽出回数ＷＬを０に設定する（ステップＳ８４）。抽出回数ＷＬはＣＰＵ１１が行番号ｉの抽出データ群（第１データ群）を抽出した回数を示す。ＣＰＵ１１はＨＩＴ（ａ，ｉ）が１であるか否かを判定する（ステップＳ８５）。ＣＰＵ１１はＨＩＴ（ａ，ｉ）が１であると判定した場合（ステップＳ８５：ＹＥＳ）、抽出回数ＷＬを１増加させ（ステップＳ８６）、処理をステップＳ８７に移す。すなわちＣＰＵ１１はＨＩＴ（ａ，ｉ）が１であるか否かを判定し、ＨＩＴ（ａ，ｉ）が１であると判定した場合、抽出回数ＷＬを増加させることにより、記憶部１２に記憶された抽出データ群（第１データ群）の行番号と一致したデータ群の行番号の数を計数する。ＣＰＵ１１はＨＩＴ（ａ，ｉ）が１でないと判定した場合（ステップＳ８５：ＮＯ）、ＣＰＵ１１はループ変数ａを１増加させる（ステップＳ８７）。ＨＩＴ＿ＳＵＭ（ａ，ｉ）にＨＩＴ＿ＳＵ（ｉ）×抽出回数ＷＬを記憶する（ステップＳ８８）。ＨＩＴ＿ＳＵＭ（）はデータ群から抽出される抽出データ群の数を保存する配列である。すなわちＣＰＵ１１は抽出データ群（第１データ群）を抽出した回数に同一の行番号組み合わせを乗算することにより、計数したデータ群の行番号の数と記憶部１２に記憶された第１データ群の行番号と一致した行番号の数との和を計数する。ＣＰＵ１１はループ変数ａがＴＥＳＴ＿ＮＵＭを超えたか否かを判定する（ステップＳ８９）。
【００６１】
ＣＰＵ１１はループ変数ａがＴＥＳＴ＿ＮＵＭを超えなかったと判定した場合（ステップＳ８９：ＮＯ）、処理をステップＳ８５に移す。ＣＰＵ１１はループ変数ａがＴＥＳＴ＿ＮＵＭを超えたと判定した場合（ステップＳ８９：ＹＥＳ）、ＣＰＵ１１はループ変数ｉを１増加させる（ステップＳ９０）。ＣＰＵ１１はｉが組み合わせ総数を超えたか否かを判定する（ステップＳ９１）。ＣＰＵ１１はｉがＮＵＭ＿Ｄを超えなかったと判定した場合（ステップＳ９１：ＮＯ）、処理をステップＳ８３に移す。ＣＰＵ１１はｉが組み合わせ総数を超えたと判定した場合（ステップＳ９１：ＹＥＳ）、ループ変数ａを１に設定する（ステップＳ９２）。
【００６２】
ＣＰＵ１１はループ変数ｉを１に設定する（ステップＳ９３）。ＣＰＵ１１はマスタテーブルＴ７からテスト番号毎に推定した抽出行数を示す正解行番号数ＷＫを０に設定する（ステップＳ９４）。ＣＰＵ１１は正解行番号数ＷＫにＨＩＴ＿ＳＵＭ（ａ，ｉ）を追加する（ステップＳ９５）。すなわちＣＰＵ１１は推定した夫々の抽出データ群の和を計数する。ＣＰＵ１１はループ変数ｉを１増加させる（ステップＳ９６）。ＣＰＵ１１はループ変数ｉが組み合わせ総数を超えたか否かを判定する（ステップＳ９７）。ＣＰＵ１１はループ変数ｉが組み合わせ総数を超えなかったと判定した場合（ステップＳ９７：ＮＯ）、処理をステップＳ９５に移す。ＣＰＵ１１はループ変数ｉが組み合わせ総数を超えたと判定した場合（ステップＳ９７：ＹＥＳ）、ＣＰＵ１１はＳＥＩＫＡＩ（ａ）に正解行番号数ＷＫを記憶する（ステップＳ９８）。
【００６３】
ＣＰＵ１１はループ変数ａを１増加させる（ステップＳ９９）。ＣＰＵ１１はループ変数ａがＴＥＳＴ＿ＮＵＭを超えたか否かを判定する（ステップＳ１００）。ＣＰＵ１１はループ変数ａがＴＥＳＴ＿ＮＵＭを超えなかったと判定した場合（ステップＳ１００：ＮＯ）、処理をステップＳ９３に移す。ＣＰＵ１１はループ変数ａがＴＥＳＴ＿ＮＵＭを超えたと判定した場合（ステップＳ１００：ＹＥＳ）、正解行数生成処理を終了し処理をテスト結果判定処理に移す。
【００６４】
図２１〜図２２はテスト結果判定処理の手順の一例を示すフローチャートである。ＣＰＵ１１はループ変数ａを１に設定する（ステップＳ１１１）。ＣＰＵ１１は正解テーブルＴ８を読み込み、抽出プログラム１３Ｐによりテスト項目（ａ）に基づいて行番号及び行数を抽出（取得）する（ステップＳ１１２）。テスト項目（）はテスト番号ａに対応づけられた抽出条件を保存した配列である。すなわち、ＣＰＵ１１は抽出プログラム１３ＰによりマスタテーブルＴ７のデータ群からテスト番号ａに対応づけられた第１抽出条件により第１データ群を抽出する。
【００６５】
ＣＰＵ１１は抽出した行数を抽出件数（ａ）に記憶する（ステップＳ１１３）。ＣＰＵ１１は抽出件数（ａ）とＳＥＩＫＡＩ（ａ）とが同一であるか否かを判定する（ステップＳ１１４）。すなわち、ＣＰＵ１１は抽出したデータ群の数と、推定したデータ群の数の和とを比較する抽出した行数と正解行数とを比較することにより同一であるか否かを判定する。ＣＰＵ１１は抽出件数（ａ）とＳＥＩＫＡＩ（ａ）とが同一でないと判定した場合（ステップＳ１１４：ＮＯ）、判定（ａ）にＮＧを記憶する（ステップＳ１１５）。ＣＰＵ１１はテスト番号Ｋにループ変数ａを記憶し（ステップＳ１１６）、処理を終了する。
【００６６】
ＣＰＵ１１は抽出件数（ａ）とＳＥＩＫＡＩ（ａ）とが同一であると判定した場合（ステップＳ１１４：ＹＥＳ）、判定（ａ）にＯＫを記憶する（ステップＳ１１７）。マスタテーブルＴ７の最後の行に抽出した行番号の要素を追加する（ステップＳ１１８）。ＣＰＵ１１は正解テーブルＴ８を読み込み、テスト項目（ａ＋１）に基づいて行番号及び行数を抽出する（ステップＳ１１９）。すなわち、ＣＰＵ１１はマスタテーブルＴ７のデータ群からテスト番号ａ＋１に対応づけられた第２抽出条件により第２データ群を抽出する。
【００６７】
ＣＰＵ１１は抽出した行数を抽出件数（ａ＋１）に記憶する（ステップＳ１２０）。ＣＰＵ１１は抽出件数（ａ＋１）とＳＥＩＫＡＩ（ａ＋１）とが同一であるか否かを判定する（ステップＳ１２１）。すなわち、ＣＰＵ１１は抽出した第２データ群の数と、推定した第１推定データ群及び第２推定データ群の数を加算した加算データ群と一致したか否かを判定する。ＣＰＵ１１は抽出件数（ａ＋１）とＳＥＩＫＡＩ（ａ＋１）とが同一でないと判定した場合（ステップＳ１２１：ＮＯ）、判定（ａ＋１）にＮＧを記憶する（ステップＳ１２２）。ＣＰＵ１１はテスト番号Ｋ＋１にループ変数ａ＋１を記憶し（ステップＳ１２３）、処理を終了する。
【００６８】
ＣＰＵ１１は抽出件数（ａ＋１）とＳＥＩＫＡＩ（ａ＋１）とが同一であると判定した場合（Ｓ１２１：ＹＥＳ）、判定（ａ＋１）にＯＫを記憶する（ステップＳ１２４）。ＣＰＵ１１はループ変数ａを１増加させる（ステップＳ１２５）。ＣＰＵ１１はループ変数ａがＴＥＳＴ＿ＮＵＭを超えたか否かを判定する（ステップＳ１２６）。ＣＰＵ１１はループ変数ａがＴＥＳＴ＿ＮＵＭを超えなかったと判定した場合（ステップＳ１２６：ＮＯ）、処理をステップＳ１１８に移す。ＣＰＵ１１はループ変数ａがＴＥＳＴ＿ＮＵＭを超えたと判定した場合（ステップＳ１２６：ＹＥＳ）、テスト結果判定処理を終了し、処理を終了する。
【００６９】
本実施の形態ではＣＰＵ１１がワークテーブルＴ３から抽出した行数と正解行数とが同一であるか否かを判定することにより、テスト結果の正当性の判定処理を短時間で行うことができる。
【００７０】
本実施の形態ではＣＰＵ１１がＷＯＲＫ（ｉ，ｒ)が変数Ｍであるか否かを判定する、このことにより、文字列が一致するか否かによりテスト結果の正当性の判定処理を行うことができる。
【００７１】
本実施の形態ではＣＰＵ１１がＷＯＲＫ（ｉ，ｒ)がＬＩＮＥ（ｊ）と同一であるか否かを判定する。このことにより文字列の一部が一致するか否かによりテスト結果の正当性の判定処理を行うことができる。
【００７２】
本実施の形態ではＣＰＵ１１はＷＯＲＫ（ｉ，（１，２……ＮＵＭ＿Ｒ）)がＲＯＷ（１、２……ＮＵＭ＿Ｒ）と同一であるか否かを判定する。このことにより文字列の組み合わせが一致するか否かによりテスト結果の正当性の判定処理を行うことができる。
【００７３】
実施の形態２
以下本発明の実施の形態２をその実施の形態を示す図面に基づいて詳述する。図２３は実施の形態２に係る各種データテーブルの一覧を示すブロック図である。以下、特に説明する構成、作用以外の構成及び作用は実施の形態１と同等であり、簡潔のため記載を省略する。データテーブル１２Ｔはさらに展開テーブルＴ９を備える。
【００７４】
図２４は展開テーブルＴ９のデータ構造の一例を示す説明図である。展開テーブルＴ９は組み合わせテーブルＴ５における各行の要素の組み合わせを記憶したテーブルである。展開テーブルＴ９はデータ項目１列、データ項目２列、データ項目３列等を備える。ＣＰＵ１１は書き換えテーブルＴ２及び組み合わせテーブルＴ５に基づいて各行の要素の組み合わせを示す展開データを生成する。ＣＰＵ１１は生成した展開データを展開テーブルＴ９に記憶することにより展開テーブルＴ９を生成する。
【００７５】
具体的にはＣＰＵ１１が展開テーブルＴ９を生成する処理の一例は以下の通りである。ＣＰＵ１１は組み合わせテーブルＴ５の１列目の１行目に１が記憶されていた場合、書き換えテーブルＴ２の１列目の１行目に「ａａａ」が記憶されているので、展開テーブルＴ９の１列目の１行目に「ａａａ」を記憶する。ＣＰＵ１１は組み合わせテーブルＴ５の２列目の１行目に１が記憶されていた場合、書き換えテーブルＴ２の２列目の１行目に「アイウ」が記憶されているので、展開テーブルＴ９の２列目の１行目に「アイウ」を記憶する。ＣＰＵ１１は組み合わせテーブルＴ５の３列目の１行目に１が記憶されていた場合、書き換えテーブルＴ２の３列目の１行目に「ナポレオン」が記憶されているので、展開テーブルＴ９の３列目の１行目に「ナポレオン」を記憶する。ＣＰＵ１１は以下同様の処理を各行に対して行う。
【００７６】
図２５は実施の形態２に係るＣＰＵ１１の処理手順の一例を示すフローチャートである。ステップＳ７及びステップＳ８以外の処理は上述の実施の形態１に係るＣＰＵ１１の処理手順と同様であるので、簡潔のため説明を省略する。
【００７７】
ＣＰＵ１１はステップＳ６の処理を終了した後、展開テーブル生成処理を行う（ステップＳ７）。ＣＰＵ１１は障害箇所特定処理を行い（ステップＳ８）、処理を終了する。
【００７８】
図２６は展開テーブル生成処理の手順の一例を示すフローチャートである。ＣＰＵ１１は組み合わせテーブルＴ５を読み込む（ステップＳ１３１）。ＣＰＵ１１は書き換えテーブルＴ２を読み込む（ステップＳ１３２）。ＣＰＵ１１は書き換えテーブルＴ２及び組み合わせテーブルＴ５に基づいて各行の要素の組み合わせを示す展開データを生成する（ステップＳ１３３）。具体的にはＣＰＵ１１は組み合わせテーブルＴ５の各列の行番号に書き換えテーブルＴ２の各列の行番号に対応した各要素を記憶させることにより展開データを生成する。ＣＰＵ１１は生成した展開データを展開テーブルＴ９に記憶する（ステップＳ１３４）。
【００７９】
図２７はＣＰＵが行う障害箇所特定処理の一例を示す説明図である。図２７Ａ１はテスト番号３におけるＣＰＵ１１が抽出する行番号を推定した正解行番号の要素を列挙した説明図である。
【００８０】
ＣＰＵ１１はテスト番号Ｋの１つ前のテスト番号から順にＨＩＴ（ａ，ｉ）が１であるか否かを判定する。ＨＩＴ＿ＤＡＴＡ（）は正解行番号の要素の組み合わせを保存する配列である。ＣＰＵ１１はＨＩＴ（ａ，ｉ）が１であると判定した場合、展開データのｉ行をＨＩＴ＿ＤＡＴＡ（ｉ）に記憶する。すなわち、ＣＰＵ１１はＨＩＴ（ａ，ｉ）が１であると判定した場合、展開データのｉ行をＨＩＴ＿ＤＡＴＡ（ｉ）に記憶する。
【００８１】
ＣＰＵ１１はＨＩＴ＿ＤＡＴＡ（ｉ）と一致する要素がＯＵＴ＿ＤＡＴＡ（ａ，（１,２…ＯＵＴ＿ＮＵＭ（ａ））にあるか否かを判定する。ＯＵＴ＿ＮＵＭ（）は正解の行番号を保存する配列である。ＯＵＴ＿ＤＡＴＡ（ａ，（１,２…ＯＵＴ＿ＮＵＭ（ａ））は抽出した行の要素の組み合わせを保存する配列である。ＣＰＵ１１はＨＩＴ＿ＤＡＴＡ（ｉ）と一致する要素がＯＵＴ＿ＤＡＴＡ（ａ，（１,２…ＯＵＴ＿ＮＵＭ（ａ））にないと判定した場合、各種情報を出力する。
【００８２】
ＣＰＵ１１の具体的な処理を以下に示す。ＣＰＵ１１は図２７Ａ１に示したテスト番号３における正解の行の要素の組み合わせ「ａａａ,アイウ,ナポレオン」と図２７Ｂ１に示した抽出した行の要素の組み合わせ「ａｂａａ,カキクアイウエ,ポンテ」とが一致しなかったと判定する。ＣＰＵ１１は正解の行番号である２行と抽出した行番号である８行と正解の行の組み合わせ「ａａａ,アイウ,ナポレオン」とテスト番号２とを出力部１４に出力する。
【００８３】
図２８〜図３０は障害箇所特定処理の手順の一例を示すフローチャートである。ＣＰＵ１１はループ変数ａをテスト番号Ｋから１を引算した数に設定する（ステップＳ１４１）。ＣＰＵ１１はループ変数ｉを１に設定する（ステップＳ１４２）。ＣＰＵ１１はＳＵＭに０を設定する（ステップＳ１４３）。ＳＵＭは正解行数を示す変数である。
【００８４】
ＣＰＵ１１はＨＩＴ（ａ，ｉ）が１であるか否かを判定する（ステップＳ１４４）。ＣＰＵ１１はＨＩＴ（ａ，ｉ）が１でないと判定した場合（ステップＳ１４４：ＮＯ）、ステップＳ１４７に処理を移す。ＣＰＵ１１はＨＩＴ（ａ，ｉ）が１であると判定した場合（ステップＳ１４４：ＹＥＳ）、展開テーブルＴ９のｉ行をＨＩＴ＿ＤＡＴＡ（ｉ）に記憶する（ステップＳ１４５）。すなわちＣＰＵ１１は展開テーブルＴ９のｉ行を抽出した行の要素の組み合わせとして保存する。ＣＰＵ１１はＳＵＭをＳＵＭ＋ＨＩＴ＿ＳＵＭ（ａ，ｉ）増加させる（ステップＳ１４６）。ＣＰＵ１１はループ変数ｉを１増加させる（ステップＳ１４７）。
【００８５】
ＣＰＵ１１はループ変数ｉがＮＵＭ＿Ｄを超えたか否かを判定する（ステップＳ１４８）。ＣＰＵ１１はループ変数ｉがＮＵＭ＿Ｄを超えなかったと判定した場合（ステップＳ１４８：ＮＯ）、ステップＳ１４４に処理を移す。ＣＰＵ１１はループ変数ｉがＮＵＭ＿Ｄを超えたと判定した場合（ステップＳ１４８：ＹＥＳ）、ＯＵＴ＿ＮＵＭ（ａ）及び展開データに基づいて、ＯＵＴ＿ＤＡＴＡ（ａ，（１，２…ＯＵＴ＿ＮＵＭ（ａ）））を生成する（ステップＳ１４９）。ＯＵＴ＿ＤＡＴＡ（）は抽出した行の要素を保存する配列である。具体的にはＣＰＵ１１はＯＵＴ＿ＮＵＭ（ａ）に展開テーブルＴ９の要素を記憶することによりＯＵＴ＿ＤＡＴＡ（ａ，（１，２…ＯＵＴ＿ＮＵＭ（ａ）））を生成する。
【００８６】
ＣＰＵ１１はループ変数ＣＬに１を設定する（ステップＳ１５０）。ＣＰＵ１１はＨＩＴ＿ＤＡＴＡ（ＣＬ）と一致する要素がＯＵＴ＿ＤＡＴＡ（ａ，（１，２…ＯＵＴ＿ＮＵＭ（ａ））にあるか否か判定する（ステップＳ１５１）。すなわち、ＣＰＵ１１は抽出した抽出データ群（第１データ群）の数と推定した抽出データ群の数とを比較とを比較して一致するか否かを判定する。ＣＰＵ１１はＨＩＴ＿ＤＡＴＡ（ＣＬ）と一致する要素がＯＵＴ＿ＤＡＴＡ（ａ，（１，２…ＯＵＴ＿ＮＵＭ（ａ））にあると判定した場合（ステップＳ１５１：ＹＥＳ）、ステップＳ１５４に処理を移す。
【００８７】
ＣＰＵ１１はＨＩＴ＿ＤＡＴＡ（ＣＬ）と一致する要素がＯＵＴ＿ＤＡＴＡ（ａ，（１，２…ＯＵＴ＿ＮＵＭ（ａ））にないと判定した場合（ステップＳ１５１：ＮＯ）、ＨＩＴ＿ＤＡＴＡ（ＣＬ）、ＨＩＴ＿ＳＵＭ（ａ，ＣＬ）、ＯＵＴ＿ＤＡＴＡ（ａ，（１，２…ＯＵＴ＿ＮＵＭ（ａ）））、ループ変数ａを出力部１４に出力する（ステップＳ１５２）。すなわちＣＰＵ１１は行番号、正解行数、抽出した行番号、誤った抽出を行ったテスト番号を出力部１４に出力する。ＣＰＵ１１はＦＬＡＧをＯＮにする（ステップＳ１５３）。
【００８８】
ＣＰＵ１１はＣＬを１増加する（ステップＳ１５４）。ＣＰＵ１１はｉがＮＵＭ＿Ｄを超えているか否かを判定する（ステップＳ１５５）。ＣＰＵ１１はｉがＮＵＭ＿Ｄを超えていないと判定した場合（ステップＳ１５５：ＮＯ）、処理をステップＳ１５１に移す。ＣＰＵ１１はｉがＮＵＭ＿Ｄを超えていると判定した場合（ステップＳ１５５：ＹＥＳ）、ＦＬＡＧがＯＮであるか否かを判定する（ステップＳ１５６）。ＣＰＵ１１はＦＬＡＧがＯＮであると判定した場合（ステップＳ１５６：ＹＥＳ）、障害箇所特定処理を終了し、処理を終了する。
【００８９】
ＣＰＵ１１はＦＬＡＧがＯＮでないと判定した場合（ステップＳ１５６：ＮＯ）、ループ変数ａを１減少させる（ステップＳ１５７）。ＣＰＵ１１はループ変数ａがテスト番号ｋを超えたか否かを判定する（ステップＳ１５８）。ＣＰＵ１１はループ変数ａがテスト番号ｋを超えなかったと判定した場合（ステップＳ１５８：ＮＯ）、ステップＳ１４２に処理を移す。ＣＰＵ１１はループ変数ａがテスト番号ｋを超えたと判定した場合（ステップＳ１５８：ＹＥＳ）、障害箇所特定処理を終了し、処理を終了する。
【００９０】
本実施の形態では誤った抽出を行ったテスト番号を短時間で抽出することができる。
【００９１】
本実施の形態ではユーザが誤った抽出を行ったテストの詳細な情報を短時間で確認することができる。
【００９２】
実施の形態３
以下本発明の実施の形態３をその実施の形態を示す図面に基づいて詳述する。図３１は実施の形態３に係る情報処理装置１のハードウェア群を示すブロック図である。以下、特に説明する構成、作用以外の構成及び作用は実施の形態１と同等であり、簡潔のため記載を省略する。
【００９３】
情報処理装置１を動作させるためのプログラムは、ディスクドライブ等の読み取り部１５にＣＤ−ＲＯＭ、ＤＶＤ（Digital Versatile Disc）ディスク、メモリーカード、又はＵＳＢ（Universal Serial Bus）メモリ等の可搬型記録媒体１６Ａを読み取らせて記憶部１２に記憶してもよい。また当該プログラムを記憶したフラッシュメモリ等の半導体メモリ１６Ｂを情報処理装置１内に実装しても良い。通信部１７は、例えば無線ＬＡＮカード又は携帯電話用通信モジュール等であり、通信網Ｎを介して他のサーバコンピュータに接続されている。当該プログラムは、通信部１７によりインターネット等の通信網Ｎを介して接続される他のサーバコンピュータ（図示せず）からダウンロードすることも可能である。以下にその内容を説明する。
【００９４】
図３１に示す情報処理装置１は、上述した各種ソフトウェア処理を実行するプログラムを、可搬型記録媒体１６Ａ又は半導体メモリ１６Ｂから読み取り、あるいは、通信網Ｎを介して他のサーバコンピュータ（図示せず）からダウンロードする。当該プログラムは、プログラム１２Ｐとしてインストールされ、記憶部１２にロードして実行される。これより上述した情報処理装置１として機能する。
【００９５】
図３２は実施の形態３に係る情報処理装置１のハードウェア群を示すブロック図である。ＣＰＵ１１がプログラム１２Ｐを実行することにより、情報処理装置１は以下のように動作する。取得部１１ａはデータ群から前記抽出プログラム１３Ｐにより第１抽出条件で抽出した第１データ群及び該データ群から前記抽出プログラム１３Ｐにより第２抽出条件で抽出した第２データ群の数を取得する。推定部１１ｂは前記データ群から前記第２抽出条件により抽出されるべき第１推定データ群の数と、前記第１データ群から前記第２抽出条件により抽出されるべき第２推定データ群の数とを加えた加算データ群の数を推定する。データ判定部１１ｃは推定した加算データ群の数と、取得した第２データ群の数とが一致するか否かを判定する。
【００９６】
以上の実施の形態１から２を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）    
抽出処理を行う抽出プログラムにより抽出されたデータ群に対する処理を実行するプログラムであって、
データ群から前記抽出プログラムにより第１抽出条件で抽出した第１データ群及び該データ群から前記抽出プログラムにより第２抽出条件で抽出した第２データ群の数を取得し、
前記データ群から前記第２抽出条件により抽出されるべき第１推定データ群の数と、前記第１データ群から前記第２抽出条件により抽出されるべき第２推定データ群の数とを加えた加算データ群の数を推定し、
推定した加算データ群の数と、取得した第２データ群の数とが一致するか否かを判定する処理を情報処理装置に実行させるプログラム。
（付記２）
前記加算データ群の数は、記憶部に予め記憶された第１推定データ群及び第２推定データ群の行番号と、前記データ群の行番号とが一致した数を計数することにより推定する
付記１に記載のプログラム。
（付記３）    
前記第１抽出条件又は第２抽出条件はデータ群に含まれる文字列と抽出する文字列とが一致することを条件とし、
前記第１データ群又は第２データ群は前記第１抽出条件又は第２抽出条件における一致した文字列とする
付記１又は付記２に記載のプログラム。
（付記４）    
前記第１抽出条件又は第２抽出条件はデータ群に含まれる文字列の一部と抽出する文字列とが一致することを条件とする
付記１から付記３のいずれか１つに記載のプログラム。
（付記５）
前記第１抽出条件又は第２抽出条件はデータ群に含まれる文字列の組み合わせと抽出する文字列の組み合わせとが一致することを条件とし、
前記第１データ群又は第２データ群は前記第１抽出条件又は第２抽出条件における一致した文字列の組み合わせとする
付記１から付記４のいずれか１つに記載のプログラム。
（付記６）
前記第１データ群の要素と前記第１推定データ群の要素とを比較する
付記１から付記５のいずれか１つに記載のプログラム。
（付記７）
前記第１データ群の要素と前記第１推定データ群の要素とが比較して一致しなかった場合、前記第１データ群の行番号と前記第１推定データ群の行番号とを出力する
付記１から付記６のいずれか１つに記載のプログラム。
（付記８）    
抽出処理を行う抽出プログラムにより抽出されたデータ群に対する処理を実行する情報処理装置であって、
データ群から前記抽出プログラムにより第１抽出条件で抽出した第１データ群及び該データ群から前記抽出プログラムにより第２抽出条件で抽出した第２データ群の数を取得する取得部と、
前記データ群から前記第２抽出条件により抽出されるべき第１推定データ群の数と、前記第１データ群から前記第２抽出条件により抽出されるべき第２推定データ群の数とを加えた加算データ群の数を推定する推定部と、
推定した加算データ群の数と、取得した第２データ群の数とが一致するか否かを判定するデータ判定部とを備える情報処理装置。
（付記９）    
抽出処理を行う抽出プログラムにより抽出されたデータ群に対する処理を実行する情報処理装置を用いた情報処理方法であって、
データ群から前記抽出プログラムにより第１抽出条件で抽出した第１データ群及び該データ群から前記抽出プログラムにより第２抽出条件で抽出した第２データ群の数を取得し、
前記データ群から前記第２抽出条件により抽出されるべき第１推定データ群の数と、前記第１データ群から前記第２抽出条件により抽出されるべき第２推定データ群の数とを加えた加算データ群の数を推定し、
推定した加算データ群の数と、取得した第２データ群の数とが一致するか否かを判定する情報処理方法。
【００９７】
今回開示された実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００９８】
１１    ＣＰＵ
１２    記憶部
１２Ｐ  制御プログラム
１３Ｐ  抽出プログラム
１３    入力部
１４    出力部
Ｔ１    ランダムテーブル
Ｔ２    書き換えテーブル
Ｔ３    ワークテーブル
Ｔ４    件数テーブル
Ｔ５    組み合わせテーブル
Ｔ６    上書きテーブル
Ｔ７    マスタテーブル
Ｔ８    正解テーブル
１２Ｔ  データテーブル
【図１】
2015114910.tif 000003
【図２】
2015114910.tif 000004
【図３】
2015114910.tif 000005
【図４】
2015114910.tif 000006
【図５】
2015114910.tif 000007
【図６】
2015114910.tif 000008
【図７】
2015114910.tif 000009
【図８】
2015114910.tif 000010
【図９】
2015114910.tif 000011
【図１０】
2015114910.tif 000012
【図１１】
2015114910.tif 000013
【図１２】
2015114910.tif 000014
【図１３】
2015114910.tif 000015
【図１４】
2015114910.tif 000016
【図１５】
2015114910.tif 000017
【図１６】
2015114910.tif 000018
【図１７】
2015114910.tif 000019
【図１８】
2015114910.tif 000020
【図１９】
2015114910.tif 000021
【図２０】
2015114910.tif 000022
【図２１】
2015114910.tif 000023
【図２２】
2015114910.tif 000024
【図２３】
2015114910.tif 000025
【図２４】
2015114910.tif 000026
【図２５】
2015114910.tif 000027
【図２６】
2015114910.tif 000028
【図２７】
2015114910.tif 000029
【図２８】
2015114910.tif 000030
【図２９】
2015114910.tif 000031
【図３０】
2015114910.tif 000032
【図３１】
2015114910.tif 000033
【図３２】
2015114910.tif 000034