(57)【特許請求の範囲】
【請求項１】
複数のソースプログラムに対して行われる複数のテストをそれぞれ識別するテスト識別情報と、当該テスト識別情報に対応するテストにおいて実行される前記ソースプログラムの組合せに含まれる１以上の命令パターンと、の対応関係を示す情報であるテスト命令対応情報を受け付けるテスト命令対応情報受付部と、
前記複数のソースプログラムに含まれる命令パターンを示す情報である命令出現情報を取得する命令出現情報取得部と、
１以上の前記テスト識別情報の組合せであって、当該テスト識別情報の組合せに対応する命令パターンが、前記命令出現情報が示す命令パターンのうちの予め指定された比率以上の命令パターンと一致するテスト識別情報の組合せを、前記テスト命令対応情報を用いて決定する網羅テスト決定部と、
前記網羅テスト決定部が決定したテスト識別情報の組合せを示す情報を出力する出力部とを備えたプログラムテスト決定装置。
【請求項２】
前記網羅テスト決定部は、前記命令出現情報が示す全ての命令パターンと一致する命令パターンと対応付けられた１以上のテスト識別情報の組合せを決定する請求項１記載のプログラムテスト決定装置。
【請求項３】
前記網羅テスト決定部は、テスト識別情報の数が最も少なくなるテスト識別情報の組合せを決定する請求項１または請求項２記載のプログラムテスト決定装置。
【請求項４】
前記網羅テスト決定部は、前記決定したテスト識別情報の組合せを構成するテスト識別情報に対し、対応する命令パターン数の多い方が早い順番となる順番を決定し、
前記出力部は、前記決定したテスト識別情報の組合せを、前記網羅テスト決定部が決定した順番が判別できるよう出力する請求項１から請求項３いずれか記載のプログラムテスト決定装置。
【請求項５】
前記テスト識別情報と、当該テスト識別情報が示すテストを実行する際に要する工数を示す情報であるテスト別工数情報とが、対応付けられて格納されているテスト別工数情報格納部と、
前記網羅テスト決定部が決定したテスト識別情報の組合せを構成する全てのテスト識別情報について、前記テスト別工数情報格納部からそれぞれに対応付けられた前記テスト別工数情報を取得するテスト別工数情報取得部と、
前記テスト別工数情報取得部が取得したテスト別工数情報が示す工数を加算した情報を用いて、前記１以上のソースプログラムのテストに要する工数を算出する工数算出部とを更に備え、
前記出力部は、前記工数算出部が算出した工数を出力する請求項１から請求項４いずれか記載のプログラムテスト決定装置。
【請求項６】
前記テスト識別情報の一以上は、１以上の前記ソースプログラムの組合せを実行するジョブに対応したテストを識別する情報である請求項１から請求項５いずれか記載のプログラムテスト決定装置。
【請求項７】
テスト命令対応情報受付部と、命令出現情報取得部と、網羅テスト決定部と、出力部とを用いて行われるプログラムテスト決定方法であって、
前記テスト命令対応情報受付部が、複数のソースプログラムに対して行われる複数のテストをそれぞれ識別するテスト識別情報と、当該複数のテスト識別情報に対応するテストにおいて実行されるソースプログラムの組合せに含まれる１以上の命令パターンと、の対応関係を示す情報であるテスト命令対応情報を受け付けるテスト命令対応情報受付ステップと、
前記命令出現情報取得部が、前記複数のソースプログラムに含まれる命令パターンを示す情報である命令出現情報を取得する命令出現情報取得ステップと、
前記網羅テスト決定部が、１以上の前記テスト識別情報の組合せであって、当該テスト識別情報の組合せに対応する命令パターンが、前記命令出現情報が示す命令パターンのうちの予め指定された比率以上の命令パターンと一致するテスト識別情報の組合せを、前記テスト命令対応情報を用いて決定する網羅テスト決定ステップと、
前記出力部が、前記網羅テスト決定ステップで決定したテスト識別情報の組合せを示す情報を出力する出力ステップとを備えたプログラムテスト決定方法。
【請求項８】
コンピュータを、
複数のソースプログラムに対して行われる複数のテストをそれぞれ識別するテスト識別情報と、当該テスト識別情報に対応するテストにおいて実行される前記ソースプログラムの組合せに含まれる１以上の命令パターンと、の対応関係を示す情報であるテスト命令対応情報を受け付けるテスト命令対応情報受付部と、
前記複数のソースプログラムに含まれる命令パターンを示す情報である命令出現情報を取得する命令出現情報取得部と、
１以上の前記テスト識別情報の組合せであって、当該テスト識別情報の組合せに対応する命令パターンが、前記命令出現情報が示す命令パターンのうちの予め指定された比率以上の命令パターンと一致するテスト識別情報の組合せを、前記テスト命令対応情報を用いて決定する網羅テスト決定部と、
前記網羅テスト決定部が決定したテスト識別情報の組合せを示す情報を出力する出力部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、命令パターンを利用してソースプログラムの変換を行う変換装置等のテストに利用されるテスト対象を決定する装置等に関するものである。
【背景技術】
【０００２】
従来、第一命令パターンに対応する旧ソースプログラムの記述箇所を、当該第一命令パターンと対になる第二命令パターンに対応するように変換手段を用いて変換する命令パターン変換ステップと、命令パターン変換ステップにおいて旧ソースプログラムを変換した結果である新ソースプログラムを、出力手段を用いて出力する新プログラム出力ステップとを備えた技術が知られていた。（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第３４９４３７６号（第１頁、第１図等）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記のような技術においては、例えば、命令パターンを用いてソースプログラムの変換を行った場合、命令パターンによるソースプログラムの変換が適切に行われたか否かを、迅速にかつ適切に検証することが困難であるという課題があった。
【０００５】
例えば、従来は、命令パターンを利用した一以上のソースプログラムの変換が適切に行われたか否かを検証するために、変換後の一以上のソースプログラムのそれぞれについて予め用意されたテストを行っていた。しかしながら、変換された一以上のソースプログラムの全てについて、それぞれのソースプログラムを実行させて予め決められたテストを行うことは、非常に時間がかかり、非効率的であった。
【課題を解決するための手段】
【０００６】
本発明のプログラムテスト決定装置は、複数のソースプログラムに対して行われる複数のテストをそれぞれ識別するテスト識別情報と、テスト識別情報に対応するテストにおいて実行されるソースプログラムの組合せに含まれる１以上の命令パターンと、の対応関係を示す情報であるテスト命令対応情報を受け付けるテスト命令対応情報受付部と、複数のソースプログラムに含まれる命令パターンを示す情報である命令出現情報を取得する命令出現情報取得部と、１以上のテスト識別情報の組合せであって、テスト識別情報の組合せに対応する命令パターンが、命令出現情報が示す命令パターンのうちの予め指定された比率以上の命令パターンと一致するテスト識別情報の組合せを、テスト命令対応情報を用いて決定する網羅テスト決定部と、網羅テスト決定部が決定したテスト識別情報の組合せを示す情報を出力する出力部とを備えたプログラムテスト決定装置である。
【０００７】
かかる構成により、命令パターンによるソースプログラムの変換が適切に行われたか否かを、迅速にかつ適切に検証するためのテストの組合せを決定することができる。この結果、例えば、変換対象となるソースプログラムに対応する全てのテストを行う必要がなくなり、テスト期間を短縮することが可能となる。
【０００８】
また、本発明のプログラムテスト決定装置は、前記プログラムテスト決定装置において、網羅テスト決定部は、命令出現情報が示す全ての命令パターンと一致する命令パターンと対応付けられた１以上のテスト識別情報の組合せを検出するプログラムテスト決定装置である。
【０００９】
かかる構成により、ソースプログラムのテスト対象となる部分に現れる全ての命令パターンを、一通り網羅したテストが可能なテストの組合せを決定することができる。
【００１０】
また、本発明のプログラムテスト決定装置は、前記プログラムテスト決定装置において、網羅テスト決定部は、テスト識別情報の数が最も少なくなるテスト識別情報の組合せを決定するプログラムテスト決定装置である。
【００１１】
かかる構成により、テストに要する作業工数が最も少なくなると考えられるテストの組合せを決定することができる。
【００１２】
また、本発明のプログラムテスト決定装置は、前記プログラムテスト決定装置において、網羅テスト決定部は、決定したテスト識別情報の組合せを構成するテスト識別情報に対し、対応する命令パターン数の多い方が早い順番となる順番を決定し、出力部は、検出したテスト識別情報の組合せを、網羅テスト決定部が決定した順番が判別できるよう出力するプログラムテスト決定装置である。
【００１３】
かかる構成により、この順番でテストを行うようにすることで、網羅率の高いテストから順にテストを行うことができ、テストの作業期間を短縮することができる。
【００１４】
また、本発明のプログラムテスト決定装置は、前記プログラムテスト決定装置において、テスト識別情報と、テスト識別情報が示すテストを実行する際に要する工数を示す情報であるテスト別工数情報とが、対応付けられて格納されているテスト別工数情報格納部と、網羅テスト決定部が決定したテスト識別情報の組合せを構成する全てのテスト識別情報について、テスト別工数情報格納部からそれぞれに対応付けられたテスト別工数情報を取得するテスト別工数情報取得部と、テスト別工数情報取得部が取得したテスト別工数情報が示す工数を加算した情報を用いて、１以上のソースプログラムのテストに要する工数を算出する工数算出部とを更に備え、出力部は、工数算出部が算出した工数を出力するプログラムテスト決定装置である。
【００１５】
かかる構成により、命令パターンを用いて変換を行う場合に適した工数を算出することができる。
【００１６】
また、本発明のプログラムテスト決定装置は、前記プログラムテスト決定装置において、テスト識別情報の一以上は、１以上のソースプログラムの組合せを実行するジョブに対応したテストを識別する情報であるプログラムテスト決定装置である。
【００１７】
かかる構成により、ジョブ単位のテストの組合せを決定することができる。
【発明の効果】
【００１８】
本発明によるプログラムテスト決定装置等によれば、命令パターンを用いたソースプログラムの変換が適切に行われたか否かを迅速にかつ適切に検証できるテストを決定することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施の形態にかかるプログラムテスト決定装置のブロック図
【図２】同プログラムテスト決定装置の動作について説明するフローチャート
【図３】同プログラムテスト決定装置の動作について説明するフローチャート
【図４】同プログラムテスト決定装置の動作について説明するフローチャート
【図５】同プログラムテスト決定装置の動作を説明するための、ソースプログラムの一例を示す図
【図６】同プログラムテスト決定装置の動作を説明するための、命令パターンの一例を示す図
【図７】同プログラムテスト決定装置の動作を説明するための、テスト管理情報を示す図
【図８】同プログラムテスト決定装置の動作を説明するための、パターン管理情報を示す図
【図９】同プログラムテスト決定装置の動作を説明するための、テスト命令対応情報を示す図
【図１０】同プログラムテスト決定装置の動作を説明するための、テスト命令対応情報の変形例を示す図
【図１１】同プログラムテスト決定装置の動作を説明するための、順番を示す情報が付与されたテスト識別情報の組合せを示す図
【図１２】同プログラムテスト決定装置の動作を説明するための、テスト別工数情報管理表を示す図
【図１３】同プログラムテスト決定装置の動作を説明するための、表示例を示す図
【図１４】本発明の実施の形態にかかるコンピュータシステムの外観の一例を示す図
【図１５】同コンピュータシステムの構成の一例を示す図
【発明を実施するための形態】
【００２０】
以下、プログラムテスト決定装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
【００２１】
（実施の形態）
【００２２】
図１は、本実施の形態におけるプログラムテスト決定装置１のブロック図である。
【００２３】
プログラムテスト決定装置１は、テスト命令対応情報受付部１０１、命令出現情報取得部１０２、網羅テスト決定部１０３、テスト別工数情報取得部１０４、工数算出部１０５、出力部１０６、テスト別工数情報格納部１０７、テスト識別情報格納部１１０、ソースプログラム格納部１１１、命令パターン格納部１１２、テスト管理情報格納部１１３、パターン管理情報格納部１１４、およびテスト命令対応情報取得部１１５を備えている。
【００２４】
プログラムテスト決定装置１は、例えば、命令パターンを利用してソースプログラムを変換する変換装置や変換方法によって変換された複数のソースプログラムの動作検証等を行うために用いられるテストの組合せを決定するための装置である。
【００２５】
テスト命令対応情報受付部１０１は、複数のソースプログラムに対して行われる複数のテストをそれぞれ識別するテスト識別情報と、当該テスト識別情報に対応するテストにおいて実行されるソースプログラムの組合せに含まれる１以上の命令パターンと、の対応関係を示す情報であるテスト命令対応情報を受け付ける。複数のソースプログラムは、例えば、ユーザ等により予め用意されたテストの対象となるソースプログラムである。
【００２６】
ソースプログラムは、例えば、命令パターンを利用した変換ツール（例えば、変換用ソフトウェア等）を用いて、または命令パターンを利用した変換方法により変換されるソースプログラムである。ただし、ソースプログラムは、例えば、命令パターンを利用した変換ツールや変換方法を用いて変換されたソースプログラムであってもよい。ソースプログラムは、例えば、いわゆるマイグレーション元またはマイグレーション先となるソースプログラムである。ソースプログラムは、それぞれ、ＣＯＢＯＬ言語や、Ｃ言語、ｐｅｒｌ言語等、どのような言語のソースプログラムであっても良い。また、スクリプト等であっても良い。また、これらの言語をカスタマイズした言語のソースプログラムであっても良い。ここでの変換とは、変換前のソースプログラムを、変換後のソースプログラムに変換する変換である。ソースプログラムは、例えば、実行ファイルや実行モジュール等である。なお、複数のソースプログラムは、実質的に複数のソースプログラムとして実行可能なものであればよく、例えば、形式的に一つのファイルを構成している複数のソースプログラムであっても良い。なお、ここで述べる複数のソースプログラムは、複数のテストのいずれかを行う際に、少なくとも一度は読み出されて実行されるソースプログラムであることが好ましい。
【００２７】
命令パターンとは、ソースプログラムにおいて利用されている命令における文字列等の情報の出現するパターン等を示す情報である。また、命令パターンは、命令において出現する文字列等の情報のうちの一部、例えば、変数やリテラル文字や関数名等を、固定されていない情報であることを示すための、予め指定されている字句要素（例えば単語）で置き換えた情報であっても良い。この置き換える情報をここでは例えば変換語と呼ぶ。この変換語については、当該変換語が配置されている位置に配置される情報のデータタイプやデータサイズや属性等が判断可能な情報であることが好ましい。命令パターンは、例えば、命令語と、ユーザ指定語と、変換語と、その他の文字列とのうちの１以上の組み合わせで構成される。また、命令パターンを、ソースプログラムにおける予約語（例えば命令語等）の出現するパターン、非予約語（例えば、変数やリテラル文字や関数名等）の出現するパターン、または予約語および非予約語の出現するパターンと考えても良く、この場合、命令パターンは、例えば、ソースプログラムにおける予約語の出現するパターン、非予約語の出現するパターン、または予約語および非予約語の出現するパターンの少なくとも一つを示す情報であってもよい。具体例を挙げると、命令パターンは、「命令語  ＜引数１＞  ＜引数２＞」という予約語と非予約語の配列パターンを示す情報である。ただし、この場合、「命令語」は、「ＯＰＥＮ」や「ＭＯＶＥ」、「ＣＡＬＬ」等の予約語であり、「＜引数１＞」、「＜引数２＞」は変数文字列である非予約語である。また、命令パターンは、特定の予約語、例えば命令語と不特定の予約語とがどのような順番で配列されているかを示す情報等であっても良い。予約語とは、プログラミング言語の仕様等で定められた、変数名や関数名、クラス名等の識別子名として使用できない字句要素である。
【００２８】
ここでの命令パターンは、テスト命令対応情報受付部１０１が受け付ける複数のソースプログラムから、ユーザ等の手作業や、図示しない命令パターンを取得するツール等を用いて取得された命令パターンである。変換前のソースプログラムに現れる命令パターンであっても良いし、変換前のソースプログラムに対応した当該変換前のソースプログラムを変換するための命令パターンであってもよい。
【００２９】
なお、上述した命令語とは、ソースプログラムとして意味のある字句であり、演算や入出力の処理を指示する語である。ここで述べる命令語とは、例えば、演算子や命令部やトークンの一部等の全てまたは一部である。また、ＣＯＢＯＬ等の言語特有の命令語と考えても良い。
【００３０】
また、変換語とは、ソースプログラムに現れ得る文字列の変換条件と対応付けられた文字列である。具体的には、上述した変数や関数名やリテラル文字等の非固定語の、置き換えに用いられる１以上の文字列である。変換語は、所定の属性やデータタイプ等を有する非固定語が配置されていることを示すための文字列であってもよい。
【００３１】
また、ユーザ指定語とは、ユーザが指定した文字列である。ユーザ指定語は、例えば、変換語への変換を望まない文字列である。
【００３２】
ここで述べるテストとは、例えば、テスト命令対応情報受付部１０１が受け付けた複数のソースプログラムに対して、予めユーザ等により用意された複数のテストである。ここで述べるテストは、例えば、命令パターンを利用して変換された複数のソースプログラムのテストであり、具体的には、変換前のソースプログラムに含まれる第一命令パターンに対応する部分を、当該命令パターンと対になる第二命令パターンに対応するように変換手段を用いて変換して得られた変換後のソースプログラムが正常に動作するか否かを調べるためにユーザ等により実施されるテストである。ここで述べるテストは、正常に動作しない箇所を修復する処理を含むと考えても良い。テストは、例えば、変換後ソースプログラムを実行させて予めテスト用に用意された所定の情報を与えた場合に、当該変換後ソースプログラムが正常に動作した場合に出力されると考えられる所定の情報が、出力されるか否かを判断することで行われる。ソースプログラムが正常に動作するか否かを確認するためにどのようなテストが行われうるかは、通常、各ソースプログラムに対して予め決まっている。ここで述べるテストは、２以上のテストを含んでいてもよい。即ち一のテストはグループ化された複数のテストにより構成されていてもよい。
【００３３】
複数のソースプログラムに対して行われる複数のテストのそれぞれは、例えば、テスト命令対応情報受付部１０１が受け付けた複数のソースプログラムのうちの１以上のソースプログラムの組合せを用いたテストであれば良く、全ての複数のソースプログラムを用いるものでなくてよい。各テスト間においては、ソースプログラムを重複して実行させても良い。各テストは、例えば、一以上のソースプログラムの組合せを呼び出すことによって実行されるジョブ単位で行われるテストである。例えば、各テストはＪＣＬ（Ｊｏｂ  Ｃｏｎｔｒｏｌ  Ｌａｎｇｕａｇｅ）等により１以上のソースプログラムを呼び出して実行されるバッチ処理単位のテストである。また、オンライン処理等については、１以上のソースプログラムによって表示される操作画面単位で行われるテストであっても良い。操作画面単位で行われるテストとは、具体的には、操作画面等に関連して動作する部分についてのテストである。ここで述べるテストは、統合テストであっても良いし、結合テストであっても良いし、モジュールテストであっても良い。
【００３４】
テスト識別情報とは、複数のソースプログラムに対して行われる複数のテストをそれぞれ識別可能な情報であればよい。テスト識別情報は、例えば、テスト名や、テスト項目や、テストケース等である。また、テスト識別情報は、一のテストにおけるテスト対象となるジョブ（処理）を指定する情報でもよい。例えばテスト対象となるバッチ処理を指定するためのバッチ処理名等の情報や、テスト対象となる画面を識別するためのテスト画面名等の情報であっても良い。また、テスト識別情報は、一のテストにおいて実行させる１以上のソースプログラムの組合せを指定する情報、例えばプログラム名の組合せ等でもよい。また、テスト識別情報は、テストにおいて実行される１以上のソースプログラムを呼び出すための、ＪＣＬ等で記述された情報や、テスト対象となる画面を呼び出すために用いられる情報を識別する情報であっても良いし、例えばＪＣＬファイル名等のこれらの情報を識別する情報でもよい。また、テスト識別情報は、テストにおいて実行されるソースプログラム自身であっても良い。
【００３５】
テスト命令対応情報は、テスト識別情報と、このテスト識別情報に対応するテストにおいて実行される複数のソースプログラムのうちの１以上の組合せに含まれる１以上の命令パターンと、の対応関係を示す情報である。テスト命令対応情報は、例えば、テスト識別情報と、命令パターンとを一のレコードの二つの項目の値として管理情報等である。但し、テスト命令対応情報は、例えば、対応するテスト識別情報と、命令パターンとを管理できる情報であればどのような情報であってもよく、データ形式等は問わない。テスト命令対応情報は、複数のテスト識別情報と、複数の命令パターンとを対応付けたものであっても良い。例えば、テスト命令対応情報は、複数のテスト識別情報に対応するテストにおいて実行されるソースプログラムに含まれる命令パターンの全てと、複数のテスト識別情報のそれぞれに対応するテストにおいて実行される命令パターンとの対応関係を示す情報であってもよい。なお、この場合、テスト命令対応情報における複数のテスト識別情報に対応するテストにおいて実行される複数のソースプログラムに含まれる全ての命令パターンにおいては、重複した命令パターンは、一つのみを残して削除するようにしても良い。
【００３６】
テスト命令対応情報においては、１以上のソースプログラムに対して行われる複数のテストに対応した複数のテスト識別情報と、この複数のテスト識別情報が示す複数のテストのそれぞれにおいて実行されるソースプログラムに含まれる１以上の命令パターンとが結果的に対応付けられていればよい。例えば、テスト識別情報と対応付けられる命令パターンは、変換後の命令パターンであっても、変換前の命令パターンであっても良い。例えば、変換前の命令パターンは、変換後の命令パターンと対応しているため、テスト識別情報と変換前の命令パターンとを対応付けることは、テスト識別情報と、テスト識別情報が示すテストにおいて実行される変換後のソースプログラムに含まれる１以上の変換後の命令パターンとを対応付けることと結果的に同じことと考えて良い。
【００３７】
テスト識別情報と、命令パターンとを対応付けるとは、テスト識別情報と命令パターンとを直接対応付けることであっても良いし、テスト識別情報と命令パターンの識別情報とを対応付けることのように、テスト識別情報と命令パターンとを間接的に対応付けることであっても良い。
【００３８】
なお、テスト識別情報が示すテストにおいて実行される１以上のソースプログラムの組に含まれる１以上の命令パターンがどのようにして検出されたものであるかは問わない。また、テスト識別情報と一以上の命令パターンとを対応付けたテスト命令対応情報がどのように生成されたものであるかは問わない。例えば、特許第４１１５５１１号公報に記載されているようなプログラムパターン分析装置等の、比較部が命令パターンのいずれにも一致しないと判断した変換単位情報に対応した命令パターンであって、一致しないと判断された変換単位情報に含まれる文字列のうちの、変換語格納部に格納されている変換条件に一致する文字列を、当該変換条件に対応付けられた変換語に変換して構成された命令パターンを示す情報である比較命令パターンを新たな命令パターンとしてパターン情報格納部に蓄積する技術を用いて、テスト識別情報が示すテストにおいて実行される１以上のソースプログラムの組から、命令パターンを取得しても良い。
【００３９】
テスト命令対応情報受付部１０１は、このようなプログラムパターン分析装置等が出力する命令パターンと、当該命令パターンの抽出元となる１以上のソースプログラムの組を用いたテストを識別するテスト識別情報とを対応付けたテスト命令対応情報を受けつけるようにしても良い。なお、ここでは一例として、後述するテスト命令対応情報取得部１１５が取得したテスト命令対応情報を、テスト命令対応情報受付部１０１が受け付ける場合について説明する。
【００４０】
受け付けとは、キーボードやマウス、タッチパネルなどの入力デバイスから入力された情報の受け付け、有線もしくは無線の通信回線を介して送信された情報の受信、光ディスクや磁気ディスク、半導体メモリなどの記録媒体から読み出された情報の受け付けなどを含む概念である。なお、ここで述べるプログラムとは、コンピュータの行う処理（演算・動作・通信など）の手順を指示したもののことである。
【００４１】
テスト命令対応情報の入力手段は、テンキーやキーボードやマウスやメニュー画面によるもの等、何でも良い。テスト命令対応情報受付部１０１は、テンキーやキーボード等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェア等で実現され得る。なお、テスト命令対応情報受付部１０１が、テスト命令対応情報を作成する装置や、後述するテスト命令対応情報取得部１１５等が取得したテスト命令対応情報を受け付ける場合、このテスト命令対応情報受付部１０１は、入力インターフェース等と考えても良い。
【００４２】
命令出現情報取得部１０２は、複数のソースプログラムに含まれる命令パターンを示す情報である命令出現情報を取得する。ここで述べる複数のソースプログラムは、例えば、複数のテストの少なくともいずれかにおいて実行されるソースプログラムである。命令出現情報は、重複したい命令パターンを有さないものであることが好ましい。命令出現情報取得部１０２がどのように命令出現情報を取得するかは問わない。例えば、命令出現情報取得部１０２は、後述する命令パターン格納部１１２等の格納部に予め格納されている、複数のテストにおいて実行される複数のソースプログラムに含まれる命令パターンを示す命令出現情報を読み出したり、ユーザ等により入力される命令出現情報を受け付けてもよい。取得した命令出現情報は、例えば、図示しない記憶媒体等に蓄積される。
【００４３】
なお、テスト命令対応情報が、複数のテスト識別情報が示すテストにおいて実行される複数のソースプログラムに含まれる命令パターンの全てを取得したものと、複数のテスト識別情報がそれぞれ示すテストにおいて実行される１以上のソースプログラムの組に含まれる命令パターンとの対応関係を示す情報等である場合のように、テスト命令対応情報が、予め、複数のテスト識別情報が示すテストにおいて実行される複数のソースプログラムに含まれる命令パターンの全てを有するものであり、このテスト命令対応情報からテスト識別情報の組合せを決定する場合等においては、命令出現情報取得部１０２は、このテスト命令対応情報から、複数のテスト識別情報が示す複数のテストにおいて実行される複数のソースプログラムに含まれるに命令パターンの全てを取得しても良い。
【００４４】
また、命令出現情報取得部１０２は、例えば、テスト命令対応情報受付部１０１が受け付けたテスト命令対応情報を用いて、複数のテスト識別情報が示すテストにおいて実行されるソースプログラムに含まれる命令パターンを示す情報である命令出現情報を取得してもよい。例えば、命令出現情報取得部１０２は、テスト命令対応情報受付部１０１が受け付けたテスト命令対応情報が示す複数のテスト識別情報にそれぞれ対応付けられた一以上の命令パターンを全て取得して、テスト命令対応情報が示す複数のテスト識別情報に含まれる全ての命令パターンを示す命令出現情報を取得する。なお、命令パターンの全てを取得する際に、重複する命令パターンについては、一つを残して削除することが好ましい。即ち、ユニーク処理を行うようにしても良い。なお、テスト命令対応情報が対応付けている命令パターンが、命令パターンそのものである場合には、命令パターン情報同士が完全一致するか比較して重複を検出し、テスト命令対応情報が対応付けている命令パターンが、命令パターンの識別情報である場合には、命令パターンの識別情報同士が完全一致するか比較して重複を検出すればよい。
【００４５】
なお、テスト命令対応情報に含まれる命令パターンとは、命令パターンそのもので示す情報であっても、命令パターンの識別情報で示す情報であってもよい。
【００４６】
なお、ここで述べる取得とは、受け付けや読み出し等による取得も含む概念である。命令出現情報取得部１０２は、通常、ＭＰＵやメモリ等から実現され得る。命令出現情報取得部１０２の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。また、命令出現情報取得部１０２は、情報を受け付けたり読み出したりするための入力インターフェース等を有していても良い。
【００４７】
網羅テスト決定部１０３は、テスト命令対応情報受付部１０１が受け付けたテスト命令対応情報を用いて、１以上のテスト識別情報の組合せを決定する。ここで述べる決定とは、具体的には、組合せを構成する１以上のテスト識別情報を取得することである。網羅テスト決定部１０３は、具体的には、テスト識別情報の組合せに対応する命令パターンが、命令出現情報が示す命令パターンのうちの予め指定された比率以上の命令パターンと一致するテスト識別情報の組合せを、テスト命令対応情報を用いて決定する。テスト識別情報の組合せは、テストの組合せと考えても良い。
【００４８】
具体例を挙げると、網羅テスト決定部１０３は、テスト命令対応情報受付部１０１が受け付けた全てのテスト命令対応情報に含まれる全ｋ個のテスト識別情報の中からｎ個（但し、ｎは、１からｋまでの自然数）のテスト識別情報を取り出す場合の組合せを求め、テスト識別情報の組合せのそれぞれについて、テスト命令対応情報が示す当該組合せに対応付けられた命令パターンと命令出現情報が示す全ての命令パターンとを比較して、命令出現情報が示す全ての命令パターンのうちの予め指定された比率以上の命令パターンと一致する命令パターンを含んでいるか否か、即ち網羅率が予め指定された比率以上であるか否かを判断していき、所定の比率以上の命令パターンが一致するテスト識別情報の組合せを、テスト対象となるテスト識別情報の組合せに決定する処理を行う。
【００４９】
なお、命令出現情報が示す全ての命令パターンに対する、１以上のテスト識別情報の組合せ等に対応付けられた命令パターンのうちの、命令出現情報が示す命令パターンと一致する命令パターンの比率を、ここでは網羅率と呼ぶ。また、複数のソースプログラムに含まれる命令パターンに対する、１以上のテスト識別情報の組合せに対応したテストにおいて実行されるソースプログラムに含まれる命令パターンのうちの、複数のソースプログラムに含まれる命令パターンと一致する命令パターンの比率を、ここでは網羅率と呼ぶ。
【００５０】
網羅テスト決定部１０３は、例えば、命令出現情報が示す全ての命令パターンに対する、テスト識別情報の組合せに対応する命令パターンのうちの、命令出現情報が示す命令パターンに一致する命令パターンの比率を算出し、その算出結果を用いて、予め指定した比率以上か否かの判断を行う。
【００５１】
ただし、ここでの予め指定した比率以上か否かの判断とは、結果的に予め指定した比率を以上か否かの判断と同様の判断を行うことも含む概念であり、必ずしも比率を算出する必要はない。例えば、予め指定した比率が１００％である場合、取得した全ての命令パターンの数が、命令出現情報が示す全ての命令パターンの数と一致する場合に、予め指定した比率以上であると判断しても良く、このような判断処理も、上述した予め指定された比率以上の命令パターンと一致する命令パターンを含んでいるか否かの判断と考える。また、複数のテスト識別情報に対応付けられている全ての命令パターンの数に対する予め指定した比率の命令パターンの数を算出し、取得した全ての命令パターンの数が、この算出した命令パターンの数以上である場合に、予め指定した比率を超えると判断しても良い。かかることは、以下の処理等においても同様である。なお、以下、命令パターンの数を命令パターン数と称す。
【００５２】
また、網羅テスト決定部１０３は、以下のようにテスト対象となるテスト識別情報の組合せを決定する処理を行ってもよい。例えば、網羅テスト決定部１０３は、テスト命令対応情報受付部１０１が受け付けたテスト命令対応情報に含まれる複数のテスト識別情報のうちの一以上のテスト識別情報の組合せについて、当該組合せを構成する全てのテスト識別情報に対応付けられた全ての命令パターンを取得する。このとき重複する命令パターンについては１つだけを取得するユニーク処理を行う。そして、取得した全ての命令パターンの数が、命令出現情報が示す全ての命令パターンのうちの予め指定された比率以上であるか否かを比率等を算出して判断し、予め指定された比率以上である場合に、そのテスト識別情報の組合せが組合せを決定する条件を満たすと判断して、そのテスト識別情報の組合せを予め指定された比率以上の命令パターンと一致する命令パターンに対応したテスト識別情報の組合せとして決定する。予め指定された比率以上でない場合は、このような決定は行わない。このような処理を、組合せを変更しながら実行することで、命令出現情報が示す全ての命令パターンのうちの予め指定された比率以上の命令パターンと一致する命令パターンに対応した１以上のテスト識別情報の組合せを決定することができる。なお、上記において予め指定した比率以上であるか否かの判断は、例えば、比率についての予め図示しない記憶媒体等に用意されたしきい値との比較等により行われる。
【００５３】
なお、テスト命令対応情報受付部１０１が受け付けた全てのテスト識別情報を用いる組合せについては、全てのテスト識別情報の組合せに含まれる全ての命令パターンと、命令出現情報が示す全ての命令パターンとが常に一致するため、上記のような組合せを決定する処理から除外してもよい。
【００５４】
また、上記のようなテスト識別情報の組合せが所定数、例えば１つだけ決定された時点で、決定する処理を終了しても良いし、終了しなくても良い。また、組合せが複数取得された場合、その中からさらに、予め指定された条件に応じて一の組合せを選択しても良い。例えば、テスト識別情報の組合せに対応する命令パターンのうちの、命令出現情報が示す命令パターンに一致する比率（即ち網羅率）が最も高くなるようなテスト識別情報の組合せを選択するようにしてもよい。
【００５５】
網羅テスト決定部１０３は、命令出現情報が示す全ての命令パターンと一致する命令パターンと対応付けられた１以上のテスト識別情報の組合せを検出するようにしてもよい。即ち、上述した予め指定された比率、即ち網羅率が１００％となる１以上のテスト識別情報の組合せを検出してもよい。これにより、決定されたテスト識別情報の組合せに対応する命令パターンが、テスト命令対応情報受付部１０１が受け付けた１以上のテスト識別情報に対応する命令パターンの全てを網羅することとなる。これにより、決定されたテスト識別情報の組合せを構成する全てのテスト識別情報が示すテストを行うことで、例えば、テスト命令対応情報受付部１０１が受け付けた１以上のテスト識別情報に対応する全ての命令パターンについて、当該命令パターンを用いて行われたソースプログラムの変換が適切なものであるか否かの確認を行うことができる。
【００５６】
また、網羅テスト決定部１０３は、さらに、予め指定された比率以上の命令パターンと対応付けられたテスト識別情報の組合せのうちの、テスト識別情報の数が最も少なくなるテスト識別情報の組合せを決定するようにしてもよい。例えば、上記の具体例のようにして、予め指定された比率以上の命令パターンと対応付けられたテスト識別情報の組合せを検出した後、組合せを構成するテスト識別情報の数が最も少ない組合せを選択するようにしても良い。また、上述した場合のようにテスト識別情報の組合せを検出する際に、組合せを構成するテスト識別情報の数が少ないものから順番に、組合せに含まれるテスト識別情報に対応する命令パターンの数が、命令出現情報が示す全ての命令パターンのうちの予め指定された比率を超えるか否かの判断を行うようにしても良い。そして、比率を超える組合せが検出された時点で、当該検出された組合せを決定する処理を終了しても良い。あるいは、命令パターン数が所定の比率を超える組合せが決定された時点で、当該検出された組合せと同じ数のテスト識別情報の組合せについてだけ、組合せを決定する処理を継続しても良い。このとき、組合せが複数取得された場合、その中からさらに、予め指定された条件に応じて一の組合せを選択しても良い。例えば、重複した命令パターンも全てそのまま残してテスト識別情報の組合せに含まれる命令パターンを全て取得した場合の命令パターン数が、最も多い組合せを選択するようにしてもよいし、テスト識別情報の組合せに対応する命令パターンの、命令出現情報が示す命令パターンに一致する比率（即ち網羅率）が最も高くなるようなテスト識別情報の組合せを選択するようにしてもよい。
【００５７】
また、網羅テスト決定部１０３は、テスト識別情報の組合せを決定後、決定したテスト識別情報の組合せを構成する各テスト識別情報に対し、対応する命令パターン数の多い方が早い順番となるように順番を決定してもよい。ここで決定する順番は、例えば、テストが行われる順番である。例えば、決定された組合せに含まれるテスト識別情報の中から、対応する命令パターン数の多いものから順に、テスト識別情報を検出していき、当該検出した順番の早さが早いものほど、早い順番であることを示す順番を示す情報をテスト識別情報に対応付けるようにしても良い。あるいは、順番を示す情報を対応付ける代わりに、検出した順番が早い順にテスト識別情報をソートしても良い。あるいは、例えば、決定された組合せに含まれるテスト識別情報の中から、対応する命令パターン数の少ないものから順に、テスト識別情報を検出していき、当該検出した順番が早いものほど、遅い順番であることを示す順番を示す情報をテスト識別情報に対応付けるようにしても良い。
【００５８】
網羅テスト決定部１０３は、通常、ＭＰＵやメモリ等から実現され得る。網羅テスト決定部１０３の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００５９】
テスト別工数情報取得部１０４は、網羅テスト決定部１０３が決定したテスト識別情報の組合せを構成する全てのテスト識別情報について、予め各テスト識別情報のそれぞれに対応付けられたテスト別工数情報を取得する。テスト別工数情報とは、各テスト識別情報が示すテストを実行した際に要する工数を示す情報である。工数とは、作業工数である。工数は、テストに必要な時間と考えても良い。工数の単位等は問わない。ここで述べる工数は、テストによって検出されたバグ等を修正する工数を含んでも良い。テスト別工数情報取得部１０４は、例えば、後述するテスト別工数情報格納部１０７に、予めテスト識別情報と対応付けられて格納されているテスト別工数情報から、網羅テスト決定部１０３が決定したテスト識別情報の組合せを構成する全てのテスト識別情報に対応したテスト別工数情報をそれぞれ取得する。
【００６０】
なお、テスト別工数情報取得部１０４は、上記のようにテスト別工数情報を取得する代わりに、網羅テスト決定部１０３が決定したテスト識別情報の組合せを構成する全てのテスト識別情報について、それぞれに対応した命令パターン数を変数とした予め指定された増加関数を用いて、各テスト識別情報を実行させたテストを行う際に要する工数を示す情報であるテスト別工数情報を取得するようにしてもよい。ここで述べる増加関数は、予め指定された増加関数である。増加関数は、例えば、命令パターン数に、予め指定されている正の比率を乗算する関数である。あるいは命令パターン数の範囲に対応して予め用意された、値が増加するに従って、値が増加あるいは維持されるテスト別工数情報から、テスト識別情報に対応した命令パターン数が含まれる範囲に対応付けられたテスト別工数情報を取得しても良い。このような場合も、ここでは、増加関数を用いてテスト別工数情報を取得すると考える。この増加関数は、テスト識別情報ごとや、ソースプログラム毎に予め指定されていても良い。増加関数を示す式等は、例えば、図示しない記憶媒体等に値予め蓄積されている。
【００６１】
テスト別工数情報取得部１０４は、通常、ＭＰＵやメモリ等から実現され得る。テスト別工数情報取得部１０４の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００６２】
工数算出部１０５は、テスト別工数情報取得部１０４が各テスト識別情報について取得したテスト別工数情報が示す工数を加算した情報を用いて、１以上のソースプログラムのテストに要する工数を算出する。例えば、工数算出部１０５は、テスト別工数情報が示す工数を加算した値を、そのまま、テストに要する工数としても良いし、加算した値に、予め指定された値、例えば「１．１」等を乗算して、テストに要する工数として算出しても良い。なお、加算の際に、テスト別工数情報取得部１０４が算出したテスト別工数情報以外の工数を示す値を更に加算するようにしてもよい。例えば、予め指定されたテストの準備の時間や、テスト結果をまとめたりする時間の値を加算してもよい。工数算出部１０５は、通常、ＭＰＵやメモリ等から実現され得る。工数算出部１０５の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００６３】
出力部１０６は、網羅テスト決定部１０３が決定したテスト識別情報の組合せを示す情報を出力する。テスト識別情報の組合せを示す情報は、結果的にテスト識別情報の組合せを示すことができる情報であればよい。テスト識別情報の組合せを示す情報は、例えば、網羅テスト決定部１０３が決定したテスト識別情報の組合せを構成するテスト識別情報である。また、決定されたテスト識別情報の組合せを構成する各テスト識別情報に対応した他の識別情報の組合せ等であっても良い。
【００６４】
また、網羅テスト決定部１０３がテスト識別情報の順番を決定する場合、出力部１０６は、検出したテスト識別情報の組合せを、網羅テスト決定部１０３が決定した順番が判別できるよう出力する。例えば、テスト識別情報を示す情報、例えばテストの識別情報に、順番を示す情報、例えば数字等を付与して出力しても良い。あるいは、テストを行う順番に、テスト識別情報を示す情報をソートして出力しても良い。
【００６５】
また、出力部１０３は、網羅テスト決定部１０３が、順番等を決定する際に算出した各テスト識別情報についての網羅率を示す情報やテスト識別情報の組合せについての命令パターンの網羅率を示す情報を取得し、当該網羅率を示す情報を、例えばテスト識別情報の組合せを示す情報と対応付けて出力するようにしても良い。もしくはこれらの網羅率を、出力部１０６が算出して出力しても良い。
【００６６】
また、出力部１０３は、工数算出部１０５が算出した工数を出力してもよい。例えば、出力部１０３は、算出した工数をテスト識別情報の組合せを示す情報と対応付けて出力するようにしてもよい。
【００６７】
ここで述べる出力とは、ディスプレイへの表示、プロジェクターを用いた投影、プリンタへの印字、音出力、外部の装置への送信、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念である。
【００６８】
出力部１０６は、ディスプレイやスピーカー等の出力デバイスを含むと考えても含まないと考えても良い。出力部１０６は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
【００６９】
テスト別工数情報格納部１０７には、テスト識別情報と、このテスト識別情報が示すテストを実行する際に要する工数を示す情報であるテスト別工数情報とが、対応付けられて格納されている。テスト別工数情報格納部１０７において、テスト識別情報とテスト別工数情報とは、直接対応付けられて格納されていても良いし、間接的に対応付けられて格納されていても良い。間接的に対応付けられているとは、例えば、それぞれに対応する識別情報同士が対応付けられていることや、例えば、それぞれに対応する識別情報同士が対応付けられていることや、一方の情報と他方の情報の識別情報とが対応付けられていること等を意味する。また、これらの情報は、物理的に同じ記憶媒体に格納されていても良いし、物理的に異なる記憶媒体に格納されていても良い。テスト別工数情報格納部１０７にテスト識別情報とテスト別工数情報とが蓄積される過程等は問わない。テスト別工数情報は、例えばユーザ等により予め指定される情報である。テスト別工数情報格納部１０７は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。
【００７０】
テスト識別情報格納部１１０には、２以上の上述したようなテスト識別情報が格納されている。テスト識別情報格納部１０１に格納されるテスト識別情報は、例えば、命令パターンを用いて変換を行った複数のソースプログラムの検証等のために行われるテストの識別情報である。テスト識別情報格納部１０１にテスト識別情報が蓄積される過程等は問わない。テスト識別情報格納部１０１は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。
【００７１】
ソースプログラム格納部１１１には、２以上の上述したようなソースプログラムが格納されている。ソースプログラム格納部１１１に格納されるソースプログラムは、例えば命令パターンを用いた変換対象となる命令パターンあるいは変換された命令パターンである。このソースプログラムは、テスト識別情報格納部１０１に格納されるテスト識別情報のいずれかが示すテストにおいて、テスト対象として実行されるソースプログラムであることが好ましい。ソースプログラム格納部１１１にソースプログラムが蓄積される過程等は問わない。ソースプログラム格納部１１１は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。
【００７２】
命令パターン格納部１１２には、２以上の上述したような命令パターンが格納されている。命令パターン格納部１１２に格納される命令パターンは、例えば、ソースプログラム格納部１１１に格納されている全てのソースプログラムに含まれる命令パターンである。ただし、重複する命令パターンは、ユニーク処理により一つを残して削除されていることが好ましい。各ソースプログラムから命令パターンを取得する処理は、上述したように公知技術であるので説明は省略する。なお、各ソースプログラムから命令パターンを取得する処理は、ユーザ等により手作業で行われても良い。命令パターン格納部１１２に命令パターンが蓄積される過程は問わない。命令パターン格納部１１２は、不揮発の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。
【００７３】
テスト管理情報格納部１１３には、テスト識別情報格納部１１０に格納されているテスト識別情報と、当該テスト識別情報が示すテストにおいて実行される、ソースプログラム格納部１１１に格納されているソースプログラムとを対応付けて管理するテスト管理情報が格納されている。テスト管理情報は、テスト識別情報とソースプログラムとが結果的に対応付けられる情報であれば良い。テスト管理情報は、例えば、テスト識別情報と、ソースプログラムの識別情報であるソースプログラム識別情報とを対応付けた情報である。通常、テスト識別情報と、ソースプログラムとは１対多で対応付けられている。例えば、通常、テストを実行する際に利用されるＪＣＬの情報等に、テストで実行されるソースプログラムの識別情報等が記載されているため、このような情報から、テスト識別情報とソースプログラムとの対応関係を示す情報は取得可能である。テスト管理情報格納部１１３にテスト管理情報が格納される過程は問わない。テスト管理情報格納部１１３は、不揮発の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。
【００７４】
パターン管理情報格納部１１４には、ソースプログラム格納部１１１に格納されているソースプログラムと、命令パターン格納部１１４に格納されている、当該ソースプログラムに含まれる命令パターンとを対応付けて管理するパターン管理情報が格納されている。パターン管理情報は、ソースプログラムと、命令パターンとが結果的に対応付けられる情報であれば良い。パターン管理情報は、例えば、ソースプログラム識別情報と、命令パターンとを対応付けた情報である。また、パターン管理情報は、例えば、ソースプログラム識別情報と、命令パターンの識別情報である命令パターン識別情報とを対応付けた情報であってもよい。通常、ソースプログラムと、命令パターンとは１対多で対応付けられている。ソースプログラムと命令パターンとの対応関係を示す情報は、例えば、各ソースプログラムから命令パターンを取得する処理等において取得可能である。パターン管理情報格納部１１４にテスト管理情報が格納される過程は問わない。パターン管理情報格納部１１４は、不揮発の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。
【００７５】
テスト命令対応情報取得部１１５は、テスト管理情報格納部１１３に格納されているテスト管理情報と、パターン管理情報格納部１１４に格納されているパターン管理情報とを用いて、テスト識別情報と、当該テスト識別情報が示すテストにおいて実行されるソースプログラムに含まれる命令パターンとを対応付けたテスト命令対応情報を、テスト識別情報格納部１１０に格納されている各テスト識別情報について取得する。具体的には、テスト命令対応情報取得部１１５は、テスト識別情報格納部１１０に格納されているテスト識別情報を順次読み出し、当該テスト識別情報に対応付けられた１以上のソースプログラム識別情報を、テスト管理情報格納部１１３に格納されているテスト管理情報から検索等により取得する。次に、テスト命令対応情報取得部１１５は、取得した１以上のソースプログラムの全てに対応付けられた命令パターンを、パターン管理情報格納部１１４に格納されているパターン管理情報から検索等により全て取得する。そして、取得した命令パターンから、重複した命令パターンを一つを除いて削除し、取得された命令パターンを、テスト識別情報と対応付けて図示しない記憶媒体等に蓄積する。この処理と同様の処理を、テスト識別情報格納部１１０に格納されている他のテスト識別情報に対して順次実行することにより、テスト命令対応情報を取得することができる。この実施の形態においては、テスト命令対応情報取得部１１５が取得して出力するテスト命令対応情報を、例えば、テスト命令対応情報受付部１０１が受け付ける。テスト命令対応情報取得部１１５は、通常、ＭＰＵやメモリ等から実現され得る。テスト命令対応情報取得部１１５の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００７６】
次に、プログラムテスト決定装置１の動作の一例について図２のフローチャートを用いて説明する。
【００７７】
（ステップＳ２００）テスト命令対応情報取得部１１５は、２以上のテスト命令対応情報を取得する。なおこの処理の一例の詳細については、後述する。
【００７８】
（ステップＳ２０１）テスト命令対応情報受付部１０１は、ステップＳ２００において取得された２以上のテスト命令対応情報を受け付ける。なお、ユーザ等から手入力されるテスト命令対応情報を受け付けたり、記憶媒体等に記憶されているテスト命令対応情報を読み出して受けつけるようにしても良い。
【００７９】
（ステップＳ２０２）命令出現情報取得部１０２は、テスト命令対応情報が示す複数のテスト識別情報に対応する全ての命令パターンを示す命令出現情報を取得する。ここでは例として、命令パターン格納部１１２に格納されている全ての命令パターンを読み出す。
【００８０】
（ステップＳ２０３）網羅テスト決定部１０３は、命令出現情報が示す全ての命令パターンのうちの、予め指定された比率以上の命令パターンと一致する命令パターンと対応付けられた１以上のテスト識別情報の組合せを、テスト命令対応情報を用いて決定する。なお、この処理の一例の詳細については、後述する。
【００８１】
（ステップＳ２０４）網羅テスト決定部１０３は、ステップＳ２０３において決定したテスト識別情報の組合せを構成する各テスト識別情報について、対応する命令パターンの網羅率を算出する。例えば、ステップＳ２０２において取得した命令出現情報が示す全ての命令パターン数で、テスト命令対応情報が示す、各テスト識別情報に対応した命令パターン数を除算することで、網羅率を算出する。
【００８２】
（ステップＳ２０５）網羅テスト決定部１０３は、ステップＳ２０４において算出した網羅率を用いて、網羅率の高い順にテスト識別情報に対するテストを行う順番を決定する。決定した順番を示す情報と、テスト識別情報とを対応付けて蓄積する。
【００８３】
（ステップＳ２０６）テスト別工数情報取得部１０４は、ステップＳ２０３において決定したテスト識別情報の組合せを構成する各テスト識別情報について、各テスト識別情報に対応したテスト別工数情報を取得する。例えば、テスト別工数情報格納部１０７から、各テスト識別情報と対応付けられたテスト別工数情報を検索により取得する。
【００８４】
（ステップＳ２０７）工数算出部１０５は、ステップＳ２０６において取得したテスト別工数情報が示す工数を加算した値を用いて、複数のソースプログラムについてのテストに要する工数を算出する。
【００８５】
（ステップＳ２０８）出力部１０６は、ステップＳ２０３において決定したテスト識別情報の組合せを出力する。このとき、テスト識別情報の組合せの網羅率や、ステップＳ２０５において決定したテスト順番を示す情報も付加して出力する。また、ステップＳ２０６において算出した工数の値を出力する。そして処理を終了する。
【００８６】
次に、図２のステップＳ２００におけるテスト命令対応情報を取得する処理の詳細について、図３のフローチャートを用いて説明する。
【００８７】
（ステップＳ３０１）テスト命令対応情報取得部１１５は、カウンターｎに１を代入する。
【００８８】
（ステップＳ３０２）テスト命令対応情報取得部１１５は、ｎ番目のテスト識別情報に対応付けられた１以上のソースプログラムを、テスト管理情報格納部１１３に格納されているテスト管理情報を用いて検出する。
【００８９】
（ステップＳ３０３）テスト命令対応情報取得部１１５は、カウンターｍに１を代入する。
【００９０】
（ステップＳ３０４）テスト命令対応情報取得部１１５は、ステップＳ３０２において検出したソースプログラムのうちのｍ番目のソースプログラムと対応付けられた１以上の命令パターンを、パターン管理情報格納部１１４に格納されているパターン管理情報を用いて取得する。取得した命令パターンは、図示しない記憶媒体等に一時記憶する。
【００９１】
（ステップＳ３０５）テスト命令対応情報取得部１１５は、カウンターｍの値を１インクリメントする。
【００９２】
（ステップＳ３０６）テスト命令対応情報取得部１１５は、ステップＳ３０２において検出したソースプログラムにｍ番目のソースプログラムがあるか否かを判断する。ある場合、ステップＳ３０４に戻り、ない場合、ステップＳ３０７に進む。
【００９３】
（ステップＳ３０７）テスト命令対応情報取得部１１５は、ステップＳ３０４に取得した命令パターンの全てを取得する。取得する際に、重複する命令パターンを検出し、重複する命令パターンについては一つを残して削除する。
【００９４】
（ステップＳ３０８）ステップＳ３０７において取得した命令パターンを、ｎ番目のテスト識別情報と対応付けて図示しない記憶媒体等に蓄積する。
【００９５】
（ステップＳ３０９）テスト命令対応情報取得部１１５は、カウンターｎの値を１インクリメントする。
【００９６】
（ステップＳ３１０）テスト命令対応情報取得部１１５は、ｎ番目のテスト識別情報があるか否かを判断する。ある場合、ステップＳ３０２に戻り、ない場合、上位の処理に戻る。なお、ステップＳ３０８において、テスト識別情報と対応付けて蓄積された１以上の命令パターンが、テスト命令対応情報取得部１１５が取得したテスト命令対応情報である。
【００９７】
次に、図２のステップＳ２０３におけるテスト識別情報の組合せを決定する処理の詳細について、図４のフローチャートを用いて説明する。
【００９８】
（ステップＳ４０１）網羅テスト決定部１０３は、カウンターｎに１を代入する。
【００９９】
（ステップＳ４０２）網羅テスト決定部１０３は、ステップＳ２０１において受け付けた一以上のテスト命令対応情報が示す複数のテスト識別情報の中からｎ個のテスト識別情報を取り出した場合のテスト識別情報の組合せを取得する。取得した組合せを示す情報は、例えば、図示しない記憶媒体等に蓄積する。組合せを示す情報は、例えば、組合せに含まれるテスト識別情報を対応付けた情報である。
【０１００】
（ステップＳ４０３）網羅テスト決定部１０３は、カウンターｍに１を代入する。
【０１０１】
（ステップＳ４０４）網羅テスト決定部１０３は、ｎ個のテスト識別情報の組合せのうちのｍ番目のテスト識別情報の組合せに対応した全ての命令パターンを取得する。命令パターンの代わりに、命令パターンの識別情報を取得しても良い。
【０１０２】
（ステップＳ４０５）網羅テスト決定部１０３は、ステップＳ２０２において取得した命令出現情報が示す全ての命令パターンを順番に取り出し、ステップＳ４０４において取得したｎ個のテスト識別情報に対応する命令パターン中に一致するものがあるか否か判断して、一致するものがある命令パターンの数をカウントする。
【０１０３】
（ステップＳ４０６）網羅テスト決定部１０３は、ステップＳ４０５により得られたカウント結果が示す一致する命令パターンの数を、ステップＳ２０２において取得した命令出現情報が示す全ての命令パターン数で除算して、ｎ個のテスト識別情報に含まれる命令パターンの、ステップＳ２０１において受け付けたテスト命令対応情報が示す複数のテスト識別情報に対応する全ての命令パターンに対する網羅率を算出する。そして、算出した網羅率が、予め指定された所定の値以上であるか否かを判断する。所定の値以上であれば、ステップＳ４０７に進み、所定の値以上でない場合、ステップＳ４０８に進む。なお、網羅率が１００％であるか否かを判断する場合等においては、必ずしも網羅率を算出する必要はない。このような場合、上記の処理の代わりに、ステップＳ４０５により得られたカウント結果が示す一致する命令パターンの数が、ステップＳ２０２において取得した命令出現情報が示す全ての命令パターン数と一致するか否かの判断を行うようにしても良い。
【０１０４】
（ステップＳ４０７）網羅テスト決定部１０３は、ステップＳ４０２において取得したｎ個のテスト識別情報の組合せを図示しない記憶媒体等に蓄積する。ｎ個のテスト識別情報の組合せを蓄積する、ということは、ｎ個のテスト識別情報の組合せを示す情報を蓄積することであっても良い。なお、ここでは例として、ステップＳ４０６において算出した網羅率も、ｎ個のテスト識別情報の組合せと対応付けて図示しない記憶媒体等に蓄積する。
【０１０５】
（ステップＳ４０８）網羅テスト決定部１０３は、カウンターｍの値を１インクリメントする。
【０１０６】
（ステップＳ４０９）網羅テスト決定部１０３は、ステップＳ４０２において取得したｎ個のテスト識別情報を取り出した場合の組合せの中に、ｍ番目の組合せがあるか否かを判断する。ある場合、ステップＳ４０４に戻り、ない場合、ステップＳ４１０に進む。
【０１０７】
（ステップＳ４１０）網羅テスト決定部１０３は、ステップＳ４０７において、一組以上のテスト識別情報の組合せが、図示しない記憶媒体等に蓄積されているか否かを判断する。蓄積されている場合、ステップＳ４１２に進み、蓄積されていない場合、ステップＳ４１１に進む。
【０１０８】
（ステップＳ４１１）網羅テスト決定部１０３は、カウンターｎの値を１インクリメントする。そして、ステップＳ４０２に戻る。
【０１０９】
（ステップＳ４１２）網羅テスト決定部１０３は、ステップＳ４０７において蓄積されたテスト識別情報の組合せが複数であるか否かを判断する。複数である場合、ステップＳ４１３に進み、複数でない場合、上位の処理にリターンする。
【０１１０】
（ステップＳ４１３）網羅テスト決定部１０３は、テスト識別情報の組合せと対応付けて蓄積されている網羅率同士を比較して、最も値の大きい網羅率と対応付けられているテスト識別情報の組合せを示す情報を取得する。そして、上位の処理にリターンする。
【０１１１】
なお、ステップＳ４０５において、ステップＳ２０２において取得した命令出現情報が示す全ての命令パターンを順番に取り出し、ステップＳ４０４において取得したｎ個のテスト識別情報に対応した命令パターン中に一致するものがあるか否か判断して、一致するものがある命令パターンの数をカウントする処理を行う代わりに、ステップＳ４０４において取得したｎ個のテスト識別情報に対応した命令パターンの全てを重複がないよう取得して、取得した命令パターンの数をカウントするようにしても良い。ｎ個のテスト識別情報に対応した命令パターンは、命令出現情報が示す命令パターンのいずれかと一致するため、この処理においてもステップＳ４０５と同じカウント値が得られる。この場合、この命令パターン数を、ステップＳ４０６においてカウント値の代わりに用いるようにすればよい。
【０１１２】
以下、本実施の形態におけるプログラムテスト決定装置１の具体的な動作について一例を挙げて説明する。ここでは、例として、ソースプログラム格納部１１１に格納されている複数のソースプログラムを命令パターンを利用した変換ツールで変換した場合において、テスト識別情報の組合せを取得する処理について説明する。
【０１１３】
図５は、ソースプログラム格納部１１１にプログラム識別情報と対応付けて格納されている複数のソースプログラムの一例を示す図である。
【０１１４】
図６は、命令パターン格納部１１２に格納されている命令パターンを示す図である。この命令パターンは、ソースプログラム格納部１１１に格納されている複数のソースプログラムに含まれる全ての命令パターンを取得し、重複をなくした命令パターンであるとする。
【０１１５】
図７は、テスト管理情報格納部１１３に格納されているテスト管理情報を示す図である。テスト管理情報は、「テスト識別情報」と「プログラム識別情報」という項目を有している。「テスト識別情報」は、テスト識別情報格納部１１０に格納されているテスト識別情報を示しており、ここでは、テスト識別情報は、テスト名であるとする。ここでのテストは、ジョブ単位で行われるものとし、テスト名は、例えば、バッチ処理を実行させるためのＪＣＬファイル名や、オンライン処理におけるテスト対象となる画面名等であるとする。なお、ここでは、「バッチ」という文字列で始まるものは、バッチ処理に対するテストを示している。また、「画面」という文字列で始まるものは、オンライン処理における画面単位での処理に対するテストを示しているものとする。「プログラム識別情報」は、ソースプログラム格納部１１１に格納されているソースプログラムに対応する識別情報であるプログラム識別情報である。ここでは、便宜上、１のレコードには、１のテスト識別情報と、当該テスト識別情報が示すテストで実行される１以上のソースプログラムのプログラム識別情報が管理されているものとする。なお、テスト管理情報の全てのレコードに含まれる「テスト識別情報」の値であるテスト識別情報が、テスト識別情報格納部１１０に格納されている。また、このテスト管理情報の全てのレコードに含まれる「プログラム識別情報」の値から重複をなくしたプログラム識別情報に対応するソースプログラムが、ソースプログラム格納部１１１に格納されているものとする。
【０１１６】
図８は、パターン管理情報格納部１１４に格納されているパターン管理情報を示す図である。パターン管理情報は、「プログラム識別情報」と「命令パターン」という項目を有している。「プログラム識別情報」は、図７に示した「プログラム識別情報」に相当する。「命令パターン」は、命令パターン格納部１１１に格納されている命令パターンである。ここでは、便宜上、１のレコードには、１のプログラム識別情報と、当該プログラム識別情報が示すソースプログラムに含まれる１以上の命令パターンが管理されているものとする。このパターン管理情報の全てのレコードに含まれる「プログラム識別情報」の値であるプログラム識別情報に対応するソースプログラムが、ソースプログラム格納部１１１に格納されているものとする。なお、パターン管理情報においては、命令パターンの代わりに、命令パターン格納部１１２に格納された命令パターンと対応付けられた命令パターン識別情報を用いるようにしても良い。
【０１１７】
まず、例えば、ユーザがテスト識別情報の組合せを決定させる指示をプログラムテスト決定装置１に与えると、テスト命令対応情報取得部１１５は、図７に示したテスト管理情報と、図８に示したパターン管理情報とを用いて、テスト識別情報格納部１１０に格納されている各テスト識別情報について、当該テスト識別情報と、当該テスト識別情報が示すテストで実行される１以上のソースプログラムに組まれる１以上の命令パターンとを対応付けたテスト命令対応情報を取得する。
【０１１８】
具体的には、まず、図７に示したテスト管理情報の１つめのレコードから、プログラム識別情報を取得する。ここでは、「プログラムＡ」および「プログラムＢ」を取得する。次に、取得した「プログラムＡ」および「プログラムＢ」のいずれかと一致する「プログラム識別情報」を有するレコードを図８に示したパターン管理情報において検索し、検出されたレコードの「命令パターン」の値である命令パターンを全て取得する。そして、取得した命令パターンにおいて、重複するものを検出し、重複するものは一つを残して削除する。そして、取得した１以上の命令パターンと、テスト管理情報の１つめのレコードのテスト識別情報を対応付けたテスト命令対応情報を取得する。そして、同様の処理を、２つめ以降のレコードについても順次行う。これにより、各テスト識別情報についてのテスト命令対応情報を取得することができる。
【０１１９】
図９は、テスト識別情報格納部１１０に格納されている各テスト識別情報について取得したテスト命令対応情報を示す図である。テスト対応情報は、「テスト識別情報」と、「命令パターン」という項目を有している。「テスト識別情報」は、図７に示したテスト識別情報に相当し、「命令パターン」は図８に示した命令パターンに相当する。ここでは、各テーブルが、それぞれ、一のテスト識別情報に対応したテスト命令対応情報を示している。なお、これらの各テーブルを一つのテーブルにまとめたものが、以下の図１０に示すテスト命令対応情報である。
【０１２０】
図１０は、テスト識別情報と、当該テスト識別情報が示すテストで実行されるソースプログラムに含まれる命令パターンとの対応関係を示すテスト命令対応情報を示す図である。このテスト命令対応情報においては、「命令パターン」という項目と、「バッチＡ」、「バッチＢ」、「バッチＣ」や、「画面Ａ」、「画面Ｂ」等のテスト識別情報に対応した項目とを有している。「命令パターン」は、図８に示したパターン管理情報の「命令パターン」の項目に含まれる全ての命令パターンから重複をなくした命令パターンである。図９に示した複数のテスト識別情報に対応したテスト命令対応情報の全ての命令パターンから、重複をなくしたものと考えても良い。この「命令パターン」は、テスト識別情報格納部１１０に格納されているテスト識別情報が示すテストを行う際に実行されるソースプログラムの少なくともいずれか一つに含まれる命令パターンである。「バッチＡ」、「バッチＢ」、「バッチＣ」や、「画面Ａ」、「画面Ｂ」等の項目名は、テスト識別情報格納部１１０に格納されているテスト識別情報を示している。「バッチＡ」、「バッチＢ」、「バッチＣ」や、「画面Ａ」、「画面Ｂ」等の各項目の、「○」が入っている行に対応する命令パターンは、対応する項目が示すテスト識別情報が示すテストを行う際に、実行される１以上のプログラムに含まれる命令パターンであることを示している。
【０１２１】
次に、テスト命令対応情報受付部１０１は、テスト命令対応情報取得部１１５が取得したテスト命令対応情報を受け付ける。なお、テスト命令対応情報受付部１０１は、実質的に、各テスト識別情報と、命令パターンとの対応関係を示すことができるものであれば、図９に示すような複数のテスト命令対応情報を受け付けても良いし、図１０に示すようなテスト命令対応情報を受け付けても良い。なお、ここでは、テスト命令対応情報取得部１１５が取得したテスト命令対応情報を受け付けるようにしたが、外部から入力されるテスト命令対応情報を受け付けても良い。
【０１２２】
次に命令出現情報取得部１０２は、ソースプログラム格納部１１１に格納されている複数のソースプログラムに含まれる全ての命令パターンである命令出現情報を取得する。ここでは、命令パターン格納部１１２に格納されている図６に示したような命令パターンの全てを取得する。これにより、命令出現情報は、図６に示した命令パターンの群と同様のものとなる。以下、ここでは便宜上、図６を命令出現情報に含まれる命令パターンを示す図としても用いるものとする。
【０１２３】
次に、網羅テスト決定部１０３は、テスト命令対応情報受付部１０１が受け付けた全てのテスト命令対応情報に含まれる全ｋ個のテスト識別情報の中からｎ個（ｎは、１からｋまでの整数）のテスト識別情報を取り出す場合の組合せをｎの値が小さなものから順に求め、ｎの値を設定する毎に、ｎ個のテスト識別情報の組合せに対応する命令パターンと一致する命令出現情報が示す命令パターンの数が、命令出現情報が示す全ての命令パターンのうちの所定の比率以上であるか否か、即ち網羅率が所定の比率以上であるか否かを判断していく。そして、所定の比率以上の命令パターンが一致するテスト識別情報の組合せであって、組合せを構成するｎの値が最小数となるテスト識別情報の組合せを、テスト対象となるテスト識別情報の組合せに決定する処理を行う。
【０１２４】
具体的には以下のように処理を行う。網羅テスト決定部１０３は、テスト命令対応情報受付部１０１が受け付けたテスト命令対応情報に含まれるテスト識別情報について、ｎ＝１個のテスト識別情報を取り出す場合の組合せを取得する。そして、ｎ＝１個のテスト識別情報を取り出した組合せのうちの、ｍ＝１番目のテスト識別情報のくみあわせ、例えば「バッチＡ」というテスト識別情報に含まれる命令パターンをテスト命令対応情報から読み出す。具体的には、図１０に示すようなテスト命令対応情報をテスト命令対応情報受付部１０１が受け付けたとすると、図１０に示したテスト命令対応情報から「バッチＡ」という項目の列のうちの、値が「○」である行を検出し、当該検出された行の「命令パターン」の値を、順次取得し、記憶媒体等に一時記憶する。
【０１２５】
そして、図６に示したような命令出現情報に含まれる命令パターンを、例えば上から順番に取り出し、この取り出した命令パターンと一致する命令パターンが、ｎ＝１個のテスト識別情報の組合せのうちのｍ＝１番目の組合せに対応する命令パターンに存在するか否かを、順次パターンマッチングにより判断していく。そして、一致する命令パターン数をカウントする。
【０１２６】
例えば、図６に示した命令出現情報に含まれる命令パターンの上から１行目の命令パターン「ＩＤＥＮＴＩＦＩＣＡＴＩＯＮ  ＤＩＶＩＳＩＯＮ」と一致する命令パターンは、図１０に示した「バッチＡ」に含まれる命令パターン内において検出される。このため、一致する命令パターンのカウント数を１カウントアップする。
【０１２７】
一方、例えば、図６に示したような命令出現情報に含まれる命令パターンの上から１１行目の命令パターン「ＳＥＬＥＣＴ  変数０１  ＡＳＳＩＧＮ  ＴＯ  変数０２  ＯＲＧＡＮＩＺＡＴＩＯＮ  ＳＥＱＵＥＮＴＩＡＬ…」と一致する命令パターンが、図１０に示した「バッチＡ」に含まれる命令パターン内において検出されない。このため、一致する命令パターンのカウント数は変更されない。
【０１２８】
網羅テスト決定部１０３は、このような処理を、図６に示したような命令出現情報に含まれる全ての命令パターンについて行うことで、ｎ＝１個のテスト識別情報を取り出した組合せのうちのｍ＝１番目のテスト識別情報の組合せに対応する命令パターンのうちの、命令出現情報に含まれる命令パターンと一致する命令パターン数のカウント結果が得られる。このカウント結果を、命令出現情報に含まれる全ての命令パターン数で除算して１００を乗算することで、網羅率（％）を算出する。そして、網羅率が、予め指定された所定の値、即ちしきい値以上であるか否かを判断する。
【０１２９】
ここでは、網羅率のしきい値が「９０」で、算出された網羅率がしきい値未満であったとすると、上記と同様の処理を、ｍ＝２番目以降のテスト識別情報の組合せについて行う。そして、この処理の結果、ｎ＝１個のテスト識別情報を取り出した場合の組合せのいずれにおいても、網羅率がしきい値以上となるテスト識別情報の組合せが検出されなかったとする。
【０１３０】
網羅テスト決定部１０３は、次に、ｎ＝２個のテスト識別情報を取り出す場合の組合せを取得する。そして、ｎ＝２個のテスト識別情報を取り出した組合せのうちの、ｍ＝１番目のテスト識別情報の組合せ、例えば「バッチＡ」というテスト識別情報と、「バッチＢ」というテスト識別情報とに対応する命令パターンをテスト命令対応情報から読み出す。
【０１３１】
そして、図６に示したような命令出現情報に含まれる命令パターンを、例えば上から順番に取り出し、この取り出した命令パターンと一致する命令パターンが、ｎ＝２個のテスト識別情報の組合せのうちのｍ＝１番目の組合せに対応する命令パターン内に存在するか否かを、順次パターンマッチングにより判断していく。そして、一致する命令パターン数をカウントする。
【０１３２】
例えば、図６に示したような命令出現情報に含まれる命令パターンの上から１１行目の命令パターン「ＳＥＬＥＣＴ  変数０１  ＡＳＳＩＧＮ  ＴＯ  変数０２  ＯＲＧＡＮＩＺＡＴＩＯＮ  ＳＥＱＵＥＮＴＩＡＬ…」と一致する命令パターンは、図１０に示したテスト命令対応情報の「バッチＡ」に対応する命令パターン内において検出されないが、図１０に示したテスト命令対応情報の「バッチＢ」に対応する命令パターン内において検出される。このため、一致する命令パターンのカウント数を１カウントアップする。
【０１３３】
このような処理を、網羅テスト決定部１０３は、図６に示したような命令出現情報に含まれる全ての命令パターンについて行うことで、ｎ＝２個のテスト識別情報を取り出した組合せのうちのｍ＝１番目のテスト識別情報の組合せに含まれる命令パターンのうちの、命令出現情報に含まれる命令パターンと一致する命令パターン数のカウント結果が得られる。このカウント結果を、命令出現情報に含まれる全ての命令パターン数で除算して１００を乗算して網羅率を算出し、網羅率が、予め指定された所定の値、即ちしきい値以上であるか否かを判断する。
【０１３４】
ここでは、算出された網羅率がしきい値未満であったとすると、上記と同様の処理を、ｍ＝２番目以降のテスト識別情報の組合せについて行う。そして、この処理の結果、ｎ＝２個のテスト識別情報を取り出した場合の組合せのいずれにおいても、網羅率がしきい値以上となる組合せが検出されなかったとする。
【０１３５】
以下、上記と同様の処理を、テスト命令対応情報受付部１０１が受け付けたテスト命令対応情報に含まれる複数のテスト識別情報のうちの、ｎ個以上のテスト識別情報を取り出す場合の組合せについて、網羅率がしきい値以上となる組合せが検出されるまで、ｎの値を「３」から順次増加させながら繰り返す。
【０１３６】
ここで、例えばｎ＝５個のテスト識別情報を取り出す組合せのうちの、ｍ＝８番目のテスト識別情報の組合せが「バッチＡ」、「バッチＤ」、「画面ａ」、「画面ｂ」、「画面ｄ」であり、このテスト識別情報の組合せに対応する命令パターンの網羅率が９２％であり、初めてしきい値である９０％を超えたとする。
【０１３７】
網羅テスト決定部１０３は、このテスト識別情報の組合せを示す情報を、図示しない記憶媒体等に蓄積する。また、このときの網羅率の値も、テスト識別情報の組合せに対応付けて蓄積する。
【０１３８】
この時点で、網羅テスト決定部１０３は、テスト識別情報の数が最も少なく、かつテスト命令対応情報受付部１０１が受け付けたテスト命令対応情報に含まれる複数のテスト識別情報に含まれる命令パターン数に対する命令パターン数の比率である網羅率がしきい値以上となるテスト識別情報の組合せを取得したこととなるため、上記のような網羅率がしきい値以上であるテスト識別情報の組合せを取得する処理を終了しても良いが、ここでは、ｎ＝５個のテスト識別情報を取り出す組合せの、ｍ＝９以降のテスト識別情報の組合せについても、同様に網羅率がしきい値以上となる組合せが存在する可能性があるため、ｍ＝９以降の組合せについても、上記と同様の処理を順次繰り返し行う。
【０１３９】
このような処理の結果、ｍ＝１２番目のテスト識別情報の組合せであるテスト識別情報「バッチＢ」、「バッチＤ」、「画面ａ」、「画面ｃ」、「画面ｄ」の組合せについても、命令パターンの網羅率が９１％であり、しきい値である９０％を超えたとする。
【０１４０】
網羅テスト決定部１０３は、複数の命令パターンの組合せが検出されたため、検出された組合せについて算出された網羅率を比較する。そして、網羅率が最も高い命令パターンの組合せを示す情報を取得する。ここでは、例えば、ｍ＝８番目のテスト識別情報の組合せ「バッチＡ」、「バッチＤ」、「画面ａ」、「画面ｂ」、「画面ｄ」の網羅率の方が高かったため、このテスト識別情報の組合せを示す情報を網羅テスト決定部１０３は取得する。
【０１４１】
つぎに、網羅テスト決定部１０３は、ｍ＝８番目のテスト識別情報の組合せに含まれる、各テスト識別情報、即ち「バッチＡ」、「バッチＤ」、「画面ａ」、「画面ｂ」、「画面ｄ」のそれぞれについて、含まれる命令パターン数をカウントする。そして、カウント数の多いものから順番を示す情報を付与する。例えば、ここでは、カウント数の多い方から、「画面ａ」、「バッチＡ」、「画面ｂ」、「バッチＤ」、「画面ｄ」の順番であったとすると、それぞれに、順番を示す連番を付与する。この順番を示す情報が、テストが行われる順番を示す。なお、カウント数を用いる代わりに、例えば、網羅率を用いるようにしてもよい。
【０１４２】
図１１は、順番を示す情報が付与されたテスト識別情報の組合せを示す情報である。テスト識別情報の組合せを示す情報は、「テスト識別情報」と「順番」という項目を有している。「テスト識別情報」は、テスト識別情報名である。「順番」は、テスト順番を示す情報である。
【０１４３】
図１２は、テスト別工数情報格納部１０７に格納されているテスト別工数情報を管理するテスト別工数情報管理表である。テスト別工数情報管理表は、「テスト識別情報」と「工数」という項目を有している。「テスト識別情報」はテスト識別情報格納部１１０に格納されているテスト識別情報である。「工数」は、テスト識別情報が示すテストを行う際のテスト別工数情報を示す。ここでの工数の単位は「人／日」であるとする。ここでの工数の値は、ユーザ等により予め設定された値であるとする。
【０１４４】
つぎに、テスト別工数情報取得部１０４は、網羅テスト決定部１０３が決定したテスト識別情報の組合せを構成する各テスト識別情報を検索キーとして、図１２に示すテスト別工数情報管理表から、「テスト識別情報」の値がこの検索キーと一致するレコードを検出し、検出されたレコードの「工数」の値であるテスト別工数情報をそれぞれ取得する。ここでは、「バッチＡ」、「バッチＤ」、「画面ａ」、「画面ｂ」、「画面ｄ」に対応したテスト別工数情報として、「８」、「１２」、「２」、「８」、「４」が取得される。
【０１４５】
工数算出部１０５は、予め指定された演算式を読み出し、テスト別工数情報取得部１０４が取得したテスト別工数情報を、この演算式のパラメータとして代入して、網羅テスト決定部１０３が決定したテスト識別情報を用いたテストに要する工数を算出する。例えば、ここで読み出した演算式が、テスト別工数情報取得部１０４が取得した全てのテスト別工数情報が示す値と、予め指定した定数「６」とを加算して工数を算出する演算式であったとすると、工数算出部１０５が算出するテストの工数は、「４０（日／人）」となる。なお、予め指定した定数は、テストの準備やテスト結果のまとめ等に要する時間として指定された値であるとする。
【０１４６】
出力部１０６は、網羅テスト決定部１０３が決定したテスト識別情報の組合せを示す情報と、当該テスト識別情報のテスト順番を示す情報と、網羅率と、工数算出部１０５が算出した工数とを、図示しないモニタ等に表示する。
【０１４７】
図１３は、出力部１０６の表示例を示す図である。
【０１４８】
また、網羅率が１００％となるテスト識別情報の組合せを決定する場合、網羅テスト決定部１０３は、必ずしも網羅率を算出する必要はなく、命令出現情報に含まれる命令パターンと一致するテスト識別情報の組合せに対応する命令パターンの数が、命令出現情報に含まれる全ての命令パターン数と一致するか否かの判断を行うようにしても良い。このような判断により、網羅率が１００％以上であるか否かが判断できる。
【０１４９】
以上のように、本実施の形態によれば、網羅率が所定の比率以上となるとともに、テス数が最も少なくなるテスト識別情報の組合せを、テストの対象として決定することが可能となる。これにより、命令パターンによるソースプログラムの変換が適切に行われたか否かを、迅速にかつ適切に検証するためのテストの組合せを決定することができる。この結果、例えば、変換対象となるソースプログラムに対応した全てのテストを実行する必要がなくなり、テスト期間を短縮することが可能となる。
【０１５０】
また、複数のテストに対して、網羅率の高いものから順に順番を決定し、決定した順番が判別できるように出力するようにしたことにより、テストスケジュールを短縮することができる。
【０１５１】
例えば、命令パターンを利用した変換ツールを用いたマイグレーションにおいては、変換不備による不具合がある場合、同じ命令パターンを使用しているプログラム全てにおいてエラーとなる。即ち、同じ原因によるバグが大量に発生する。このため、テスト作業の早い段階でできるだけ多くの命令パターンについてテスト確認ができれば、変換ツールの改修、ソースプログラムの再変換を行うことにより、他の全てのソースプログラムにおいて、変換不備による不具合が大幅に減ることとなる。
【０１５２】
また、例えば、通常のテストは、（１）テストデータ作成等の準備作業、（２）テスト実行、（３）出力結果確認、（４）不具合調査、（５）原因箇所のプログラムの修正、（６）テスト結果のまとめ、等の作業内容を含み、通常は、不具合が発生した件数分（２）から（５）の処理が繰り替えされる。従って、網羅率の高いテストから順番にテストを行うことで、命令パターンの検証による不具合の修正を早い段階でまとめて行うことができ、修正が必要な箇所の多くを網羅でき、（２）から（５）の処理を繰り返す回数を減らすことができる。
【０１５３】
また、通常のテストにおいては、テストで検出されたいわゆるバグ等の不具合を修正すると、その修正箇所において新たな不具合が発生したり、修正した箇所同士の間で新たな不具合を発生したりしてしまう可能性がある。このため、網羅率の高いテストから順番にテストを行って最初にできるだけ多くの命令パターンについての不具合を一度に直して、修正箇所が新たに生み出す不具合も修正することで、その後の不具合の発生を減らして、作業スケジュールを短縮することができる。
【０１５４】
また、テスト識別情報と対応付けられたテスト別工数情報を用いて、テストを行うための工数を取得するようにしたことにより、変換ツールを用いた変換結果をテストする際に必要となる作業工数の見積を適切に行うことができる。
【０１５５】
なお、本実施の形態においては、例えば、上記の具体例のように、網羅率のしきい値を１００％未満の値とすることで、テストの効率化を図ることが可能である。例えば、テスト期間の制限等により十分なテストが行えない場合や、全てのテスト識別情報が示すテストを行う前の予備的なテストを行う場合等においては、網羅率のしきい値を１００％以外の値に設定して得られたテスト識別情報の組合せが示すテストを行うことで、命令パターンを用いた変換等が正常に行われているか否かのおおよその検証を、全てのテストを行うよりも短時間で行うことができる。また、このようなテストで異常が有る箇所を修正することで、主要なバグ等を早期に修正することができる。
【０１５６】
なお、本発明は、いわゆるマイグレーション等の、命令パターンを利用してソースプログラムを変換するための変換装置や変換方法の動作検証等のテストに用いられるテスト識別情報の組合せを決定するために用いられるものに限るものではない。
【０１５７】
例えば、複数のソースプログラムに含まれる命令パターンを変更した場合において、当該変更によってソースプログラムが正常に動作するか否かの動作検証等を行う際に実行される１以上のテストの組合せを決定する際にも利用可能である。このような場合においては、変更した命令パターンを網羅するテスト（テスト識別情報）の組合せを決定する際に、本願の構成が利用可能である。
【０１５８】
また、例えば、新人等の経験の浅いプログラマー等が１以上の命令パターンを作成したり変更したりした場合において、作成された、あるいは変更されたソースプログラムが正常に動作するか否かの動作検証等に用いられるテストの組合せを決定する際にも利用可能である。このような場合、プログラマーによって作成された、あるいは変更された命令パターンを網羅するテスト（テスト識別情報）の組合せを決定することで、適切にテストを行うことが可能となる。
【０１５９】
なお、上記実施の形態において、各処理（各機能）は、単一の装置（システム）によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
【０１６０】
また、上記実施の形態において、一の装置に存在する２以上の通信手段（情報送信部など）は、物理的に一の媒体で実現されても良いことは言うまでもない。
【０１６１】
また、上記実施の形態において、各構成要素が実行する処理に関係する情報、例えば、各構成要素が受け付けたり、取得したり、選択したり、生成したり、送信したり、受信したりする情報や、各構成要素が処理で用いるしきい値や数式、アドレス等の情報等は、上記説明で明記していない場合であっても、図示しない記録媒体において、一時的に、あるいは長期にわたって保持されていてもよい。また、その図示しない記録媒体への情報の蓄積を、各構成要素、あるいは、図示しない蓄積部が行ってもよい。また、その図示しない記録媒体からの情報の読み出しを、各構成要素、あるいは、図示しない読み出し部が行ってもよい。
【０１６２】
また、上記実施の形態では、プログラムテスト決定装置がスタンドアロンである場合について説明したが、プログラムテスト決定装置は、スタンドアロンの装置であってもよく、サーバ・クライアントシステムにおけるサーバ装置であってもよい。後者の場合には、出力部や受付部は、通信回線を介して入力を受け付けたり、画面を出力したりすることになる。
【０１６３】
また、上記実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをＣＰＵ等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。
【０１６４】
なお、上記実施の形態におけるプログラムテスト決定装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータを、複数のソースプログラムに対して行われる複数のテストをそれぞれ識別するテスト識別情報と、テスト識別情報に対応するテストにおいて実行されるソースプログラムの組合せに含まれる１以上の命令パターンと、の対応関係を示す情報であるテスト命令対応情報を受け付けるテスト命令対応情報受付部と、複数のソースプログラムに含まれる命令パターンを示す情報である命令出現情報を取得する命令出現情報取得部と、１以上のテスト識別情報の組合せであって、当該テスト識別情報の組合せに対応する命令パターンが、命令出現情報が示す命令パターンのうちの予め指定された比率以上の命令パターンと一致するテスト識別情報の組合せを、テスト命令対応情報を用いて決定する網羅テスト決定部と、網羅テスト決定部が決定したテスト識別情報の組合せを示す情報を出力する出力部として機能させるためのプログラムである。
【０１６５】
なお、上記プログラムにおいて、上記プログラムが実現する機能には、ハードウェアでしか実現できない機能は含まれない。例えば、情報を取得する取得部や、情報を出力する出力部などにおけるモデムやインターフェースカードなどのハードウェアでしか実現できない機能は、上記プログラムが実現する機能には含まれない。
【０１６６】
また、このプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
【０１６７】
図１４は、上記プログラムを実行して、上記実施の形態によるプログラムテスト決定装置を実現するコンピュータの外観の一例を示す模式図である。上記実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムによって実現されうる。
【０１６８】
図１４において、コンピュータシステム９００は、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ドライブ９０５、ＦＤ（Ｆｌｏｐｐｙ（登録商標）  Ｄｉｓｋ）ドライブ９０６を含むコンピュータ９０１と、キーボード９０２と、マウス９０３と、モニタ９０４とを備える。
【０１６９】
図１５は、コンピュータシステム９００の内部構成を示す図である。図１５において、コンピュータ９０１は、ＣＤ−ＲＯＭドライブ９０５、ＦＤドライブ９０６に加えて、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９１１と、ブートアッププログラム等のプログラムを記憶するためのＲＯＭ９１２と、ＭＰＵ９１１に接続され、アプリケーションプログラムの命令を一時的に記憶すると共に、一時記憶空間を提供するＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１３と、アプリケーションプログラム、システムプログラム、及びデータを記憶するハードディスク９１４と、ＭＰＵ９１１、ＲＯＭ９１２等を相互に接続するバス９１５とを備える。なお、コンピュータ９０１は、ＬＡＮへの接続を提供する図示しないネットワークカードを含んでいてもよい。
【０１７０】
コンピュータシステム９００に、上記実施の形態によるプログラムテスト決定装置の機能を実行させるプログラムは、ＣＤ−ＲＯＭ９２１、またはＦＤ９２２に記憶されて、ＣＤ−ＲＯＭドライブ９０５、またはＦＤドライブ９０６に挿入され、ハードディスク９１４に転送されてもよい。これに代えて、そのプログラムは、図示しないネットワークを介してコンピュータ９０１に送信され、ハードディスク９１４に記憶されてもよい。プログラムは実行の際にＲＡＭ９１３にロードされる。なお、プログラムは、ＣＤ−ＲＯＭ９２１やＦＤ９２２、またはネットワークから直接、ロードされてもよい。
【０１７１】
プログラムは、コンピュータ９０１に、上記実施の形態によるプログラムテスト決定装置の機能を実行させるオペレーティングシステム（ＯＳ）、またはサードパーティプログラム等を必ずしも含んでいなくてもよい。プログラムは、制御された態様で適切な機能（モジュール）を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいてもよい。コンピュータシステム９００がどのように動作するのかについては周知であり、詳細な説明は省略する。
【０１７２】
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【０１７３】
以上のように、本発明にかかるプログラムテスト決定装置等は、テストの組合せを決定する装置として適しており、特に、命令パターンを用いたツールにより変換されるソースプログラムを実行させるテストの組合せを決定する装置等として有用である。
【符号の説明】
【０１７４】
１  プログラムテスト決定装置
１０１  テスト命令対応情報受付部
１０２  命令出現情報取得部
１０３  網羅テスト決定部
１０４  テスト別工数情報取得部
１０５  工数算出部
１０６  出力部
１０７  テスト別工数情報格納部
１１０  テスト識別情報格納部
１１１  ソースプログラム格納部
１１２  命令パターン格納部
１１３  テスト管理情報格納部
１１４  パターン管理情報格納部
【図１】
0005411613.tif 000002
【図２】
0005411613.tif 000003
【図３】
0005411613.tif 000004
【図４】
0005411613.tif 000005
【図５】
0005411613.tif 000006
【図６】
0005411613.tif 000007
【図７】
0005411613.tif 000008
【図８】
0005411613.tif 000009
【図９】
0005411613.tif 000010
【図１０】
0005411613.tif 000011
【図１１】
0005411613.tif 000012
【図１２】
0005411613.tif 000013
【図１３】
0005411613.tif 000014
【図１４】
0005411613.tif 000015
【図１５】
0005411613.tif 000016