(57)【要約】【課題】プログラムの改修箇所及び改修による影響の波及箇所に関連するテスト内容を網羅したテストシナリオを自動的に作成することができるシステムを提供する。【解決手段】ステートメント中の条件をノードに含み複合条件網羅を満たす解析木を作成するプログラム解析部１０３と、セルが解析木の葉ノードを表し、セルの境界部が解析木のノードのステートメント中の条件であり内部ノードを表すマトリクスデータを作成するマトリクスデータ作成部１０６と、指定されたセルまたはセルの境界部に基づいてテストシナリオを作成するテストシナリオ出力部１１０を備える。テストシナリオは、セルが指定された場合は、指定されたセルに該当する葉ノードから根ノードに至る経路に含まれるノードの集合で、セルの境界部が指定された場合は、葉ノードから根ノードに至る経路のうち、指定されたセルの境界部に該当する内部ノードを含む経路に含まれるノードの集合である。【選択図】図１
2013008281.tif 000002
【特許請求の範囲】
【請求項１】
プログラムのテストを行う際に使用するテストシナリオを自動で作成するテストシナリオ自動作成システムであって、
前記プログラムに含まれる条件判断ステートメントに含まれる条件と親ノードの条件判断ステートメントの真偽情報とをノードとし前記条件判断ステートメントについて複合条件網羅を満たす解析木を作成するとともに、前記プログラムから少なくとも条件判断ステートメントをキーワードとして抽出するプログラム解析部と、
前記解析木を基に、マトリクス構造のデータであって、マトリクス中のセルが前記解析木の葉ノードを表し、前記セルの境界部が前記解析木のノードの条件判断ステートメントに含まれる条件であるとともに前記解析木の内部ノードを表すマトリクスデータを作成するマトリクスデータ作成部と、
前記プログラム解析部が抽出した前記キーワードを格納するキーワード格納部と、
前記解析木と前記マトリクスデータとを格納するマトリクスデータ格納部と、
前記マトリクスデータを表示する操作画面を作成し、前記操作画面を用いて入力された情報を処理する入出力処理部と、
前記操作画面を用いて指定された前記セルまたは前記セルの境界部に基づいて前記テストシナリオを作成し、出力するテストシナリオ出力部とを備え、
前記テストシナリオは、前記セルが指定された場合は、前記解析木において、指定された前記セルに該当する葉ノードから根ノードに至る経路に含まれるノードの集合であり、前記セルの境界部が指定された場合は、前記解析木において、葉ノードから根ノードに至る経路のうち、指定された前記セルの境界部に該当する前記内部ノードを含む経路に含まれるノードの集合である、
ことを特徴とするテストシナリオ自動作成システム。
【請求項２】
請求項１記載のテストシナリオ自動作成システムであって、
前記入出力処理部は、前記操作画面を用いて入力された前記キーワードを含む条件判断ステートメントを検索し、検索した前記条件判断ステートメントを含む前記プログラムと前記テストシナリオとを前記操作画面に表示し、
前記テストシナリオ出力部は、検索した前記条件判断ステートメントを含む前記テストシナリオを作成し、出力するテストシナリオ自動作成システム。
【請求項３】
請求項１または２記載のテストシナリオ自動作成システムであって、
前記入出力処理部は、前記操作画面に、前記マトリクス中のセルの数を前記テストシナリオの総数として表示するテストシナリオ自動作成システム。
【請求項４】
請求項１から３のいずれか１項記載のテストシナリオ自動作成システムであって、
前記入出力処理部は、前記操作画面に、前記テストシナリオに含まれる条件判断ステートメントを表示するテストシナリオ自動作成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム開発におけるテストシナリオを自動的に作成するシステムに関する。
【背景技術】
【０００２】
テストシナリオを選択し実行するテストシナリオ自動作成システムの一例は、特許文献１に記載されている。特許文献１によるテストシナリオ選択実行システムでは、プログラムを修正する場合は、修正要因毎に修正を特定する修正ＩＤを採番する。修正されたソースファイルをソース構成管理ファイルに登録するときに、修正ＩＤ、ソースファイル名、及びテストシナリオ名などのプログラム修正に関わる情報を対応表に格納する。この登録作業と連動して、修正の確認に使用したテストシナリオをテストシナリオ格納ファイルに登録する。修正ＩＤ、ソースファイル名、ラベル名または日付などが指定されると、対応表から再テストに使用できるテストシナリオを選択し、選択したテストシナリオを実行する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−９１４３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載のシステムは、プログラムの修正作業の確認試験等で使用したテストシナリオをソースファイル単位に登録し、登録したデータを基に、関連するテストシナリオを自動的に選択するシステムである。しかし、このシステムでは、修正を行ったソースファイルに関連するテストシナリオは自動で選択されるが、選択されたテストシナリオが、修正を行ったプログラムの修正箇所、及び修正による影響の波及箇所に関連するテスト内容を網羅している保障はない。テスト内容の網羅ができていない場合、不具合の見逃しが発生し、プログラムの試験の品質は低下する。見逃した不具合は、後工程にて見つかり、追加テストが発生し、試験にかかる工数が増加する可能性がある。そのため、テスト内容を網羅したテストシナリオを作成、選択し、プログラムの試験の品質を向上させる必要がある。
【０００５】
本発明は、プログラムの改修箇所及び改修による影響の波及箇所に関連するテスト内容を網羅したテストシナリオを自動的に作成することができるシステムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明によるテストシナリオ自動作成システムは、プログラムのテストを行う際に使用するテストシナリオを自動で作成し、次のような特徴を有する。
【０００７】
前記プログラムに含まれる条件判断ステートメントに含まれる条件と親ノードの条件判断ステートメントの真偽情報とをノードとし前記条件判断ステートメントについて複合条件網羅を満たす解析木を作成するとともに、前記プログラムから少なくとも条件判断ステートメントをキーワードとして抽出するプログラム解析部を備える。前記解析木を基に、マトリクス構造のデータであって、マトリクス中のセルが前記解析木の葉ノードを表し、前記セルの境界部が前記解析木のノードの条件判断ステートメントに含まれる条件であるとともに前記解析木の内部ノードを表すマトリクスデータを作成するマトリクスデータ作成部を備える。前記プログラム解析部が抽出した前記キーワードを格納するキーワード格納部を備える。前記解析木と前記マトリクスデータとを格納するマトリクスデータ格納部を備える。前記マトリクスデータを表示する操作画面を作成し、前記操作画面を用いて入力された情報を処理する入出力処理部を備える。前記操作画面を用いて指定された前記セルまたは前記セルの境界部に基づいて前記テストシナリオを作成し、出力するテストシナリオ出力部を備える。前記テストシナリオは、前記セルが指定された場合は、前記解析木において、指定された前記セルに該当する葉ノードから根ノードに至る経路に含まれるノードの集合であり、前記セルの境界部が指定された場合は、前記解析木において、葉ノードから根ノードに至る経路のうち、指定された前記セルの境界部に該当する前記内部ノードを含む経路に含まれるノードの集合である。
【発明の効果】
【０００８】
本発明によれば、改修を行ったプログラムのテストを行う場合に、改修箇所及び改修による影響の波及箇所に関連するテスト内容を網羅したテストシナリオを自動的に作成することができる。
【図面の簡単な説明】
【０００９】
【図１】実施例によるテストシナリオ自動作成システムの構成図である。
【図２】操作画面の一例を示す図である。
【図３】テストシナリオ自動作成システムの全体の動作手順の例を表すフローチャートである。
【図４】プログラムの解析の動作手順の例を表すフローチャートである。
【図５】ディスプレイの更新の動作手順の例を表すフローチャートである。
【図６】テストシナリオの出力の動作手順の例を表すフローチャートである。
【図７】原始プログラムの一例を示すコーディングイメージである。
【図８】本システムで作成する解析木の例である。
【図９】本システムで作成するマトリクスデータの例である。
【図１０】キーワード格納部に格納されるキーワードの一例である。
【図１１】テストシナリオ出力部が出力するテストシナリオの一例である。
【発明を実施するための形態】
【００１０】
本発明によるテストシナリオ自動作成システムは、プログラムのテストを行う際に使用するテストシナリオを自動で作成するシステムであり、プログラムに含まれる関数をマトリクス構造で表して表示する。このマトリクスを用いることで、プログラムの改修箇所及び改修による影響の波及箇所に関連するテスト内容を網羅したテストシナリオを選択し、作成することができるので、プログラムの試験の品質を向上させることができる。上記以外の構成及び効果は、以下の実施形態の説明により明らかにされる。
【００１１】
以下、本発明によるテストシナリオ自動作成システムの実施例を、図面を用いて説明する。本実施例では、条件判断ステートメントに関連するテストシナリオを自動的に作成するシステムと、その方法の例を説明する。
【００１２】
図１は、本実施例によるテストシナリオ自動作成システムの構成図である。
【００１３】
テストシナリオ自動作成システム１００は、原始プログラム格納部１０１、プログラム入力部１０２、プログラム解析部１０３、キーワード格納部１０４、マトリクスデータ格納部１０５、マトリクスデータ作成部１０６、入出力処理部１０７、テストシナリオ出力部１１０、及びテストシナリオ格納部１１１を備え、テストシナリオを作成する。原始プログラム格納部１０１、キーワード格納部１０４、マトリクスデータ格納部１０５、及びテストシナリオ格納部１１１は、データを格納する。プログラム入力部１０２、プログラム解析部１０３、マトリクスデータ作成部１０６、及び入出力処理部１０７は、システムの処理を実行する。また、テストシナリオ自動作成システム１００は、ディスプレイ１０８、及び入力装置１０９と接続される。
【００１４】
原始プログラム格納部１０１は、テスト対象となるシステムの原始プログラム（ソースコード）が格納されているデータベースである。
【００１５】
プログラム入力部１０２は、原始プログラム格納部１０１から、テストシナリオを作成するプログラム（原始プログラム）を読込む。
【００１６】
プログラム解析部１０３は、プログラム入力部１０２が読込んだプログラムの解析を行い、条件判断ステートメント、ソース範囲、関数名、モジュール名、定数、及び変数を抽出し、これらをキーワードとしてキーワード格納部１０４に格納する。ここで、抽出する条件判断ステートメントとは、ｉｆ文、ｗｈｉｌｅ文、ｆｏｒ文のようなプログラムの処理の流れを変更するコードのことである。また、ソース範囲としては、ある条件判断ステートメントが記述された行から次の条件判断ステートメントが記述された行の１行前までの行番号を、プログラムに含まれる全ての条件判断ステートメントについて抽出する。
【００１７】
また、プログラム解析部１０３は、プログラム中の関数について解析木を作成し、マトリクスデータ格納部１０５に格納する。この解析木は、条件判断ステートメントに含まれる条件についての情報と親ノードの真偽についての情報を各ノードとする。解析木の一例は、図８を用いて後で説明する。また、解析木を作成した際に、解析木の各ノードのアドレスをキーワードとしてキーワード格納部１０４に格納する。
【００１８】
キーワード格納部１０４は、プログラム解析部１０３が抽出したキーワードを格納するデータベースである。格納されるキーワードの一例は、図１０を用いて後で説明する。
【００１９】
マトリクスデータ格納部１０５は、プログラム解析部１０３が作成した解析木と、マトリクスデータ作成部１０６が作成したマトリクスデータを格納するデータベースである。
【００２０】
マトリクスデータ作成部１０６は、マトリクスデータ格納部１０５に格納されている解析木を基に、解析木をマトリクス構造で表示するためのマトリクスデータを作成し、作成したマトリクスデータをマトリクスデータ格納部１０５に格納する。また、後述するキーワード検索を実行した場合は、キーワード格納部１０４に格納されているキーワードを含むまたはキーワードに該当する関数の解析木を基に、マトリクスを作成する。
【００２１】
マトリクスデータとは、ツリー構造で表現されている解析木を、マトリクス構造（複数のセルと、各セルを区切るセルの境界部とからなるマトリクス）で表現したデータのことである。詳細は後述するが、マトリクスのセルは、解析木の葉ノードを表し、セルの境界部は、各ノードの条件判断ステートメントに含まれる条件を表す。また、セルの境界部は、解析木の内部ノード（葉ノード以外のノード）を表す。セルの境界部により、条件判断ステートメントに含まれる条件の真偽が分けられている（セルの境界部で分けられたセルの一方が真を表し、他方が偽を表す）。すなわち、マトリクスは、解析木の各ノードに対応する条件判断ステートメントの条件の真偽に従ってセルに分割されており、セルの数は、解析木の葉ノードの数である。
【００２２】
ツリー構造のデータをマトリクス構造のデータに変更する処理のことを「マトリクスデータ化処理」と称する。一つの解析木から一つのマトリクスデータが作成され、解析木とマトリクスデータは一対一に対応してマトリクスデータ格納部１０５に格納される。以下、マトリクスデータを「マトリクス」とも称する。マトリクスデータの一例は、図９を用いて後で説明する。
【００２３】
入出力処理部１０７は、操作画面を作成してディスプレイ１０８に表示する。操作画面には、マトリクスデータ格納部１０５に格納されているマトリクスデータと、プログラム入力部１０２が読込んだプログラムと、このプログラムに含まれる関数を表示する。また、入出力処理部１０７は、入力装置１０９から入力された情報を基に処理を行い、ディスプレイ１０８の表示を更新する。
【００２４】
ディスプレイ１０８は、入出力処理部１０７から送られてくるデータを逐次表示する。ディスプレイ１０８の画面レイアウトの一例は、図２を用いて後で説明する。
【００２５】
入力装置１０９は、マウスやキーボードなど、オペレータがテストシナリオ自動作成システム１００に対して入力や操作を行うための装置である。オペレータは、入力装置１０９を用いて、ディスプレイ１０８に表示される画面を操作することができる。
【００２６】
テストシナリオ出力部１１０は、マトリクスデータ格納部１０５とキーワード格納部１０４から抽出した情報を基にテストシナリオを作成し、予め定めた所定のフォーマットに合わせて出力する。
【００２７】
テストシナリオ格納部１１１は、テストシナリオ出力部１１０が出力したテストシナリオを格納する。テストシナリオのレイアウトの一例は、図１１を用いて後で説明する。
【００２８】
図２は、テストシナリオ自動作成システム１００の実行時に、ディスプレイ１０８に表示される画面の一例を示す図である。ディスプレイ１０８には、入出力処理部１０７が作成した操作画面２００が表示される。
【００２９】
操作画面２００は、リスト表示部２０１、プログラム表示部２０２、マトリクス表示部２０３、キーワード入力部２０４、探索ボタン２０５、クリアボタン２０６、テストシナリオ出力ボタン２０７、及び終了ボタン２０８を有する。
【００３０】
リスト表示部２０１は、プログラム入力部１０２が読込んだプログラムに含まれる関数の名前、すなわち解析を行った関数名のリストを表示する。
【００３１】
プログラム表示部２０２は、リスト表示部２０１で選択されている関数のプログラムを表示する。
【００３２】
マトリクス表示部２０３は、リスト表示部２０１で選択されている関数に対応するマトリクス（マトリクス構造で表示したマトリクスデータ）を表示する。マトリクス表示部２０３の下部に、選択されている関数について得られるテストシナリオの総数２０９（選択されている関数に対するテストシナリオの全てのパターン数）を表示する。テストシナリオの総数２０９は、後述するように、表示しているマトリクスに含まれるセルの数（解析木の葉ノードの数に等しい）である。オペレータは、マトリクス表示部２０３に表示されたマトリクスのセルやセルの境界部を選択することで、選択されている関数について得られる全てのテストシナリオの中から、実行したいテストシナリオを特定することができる。マトリクスについては、図９を用いて後述する。
【００３３】
キーワード入力部２０４は、オペレータからキーワードの入力を受け付ける。探索ボタン２０５は、キーワード入力部２０４が受け付けたキーワードを用いてキーワード検索を実行するためのボタンである。クリアボタン２０６は、現在の表示を初期化するためのボタンである。テストシナリオ出力ボタン２０７は、テストシナリオを出力するためのボタンである。終了ボタン２０８は、テストシナリオ自動作成システム１００の実行を終了するためのボタンである。
【００３４】
リスト表示部２０１、プログラム表示部２０２、及びマトリクス表示部２０３にそれぞれ表示されている関数名、プログラム、及びマトリクスのセルは、オペレータによる操作や入出力処理部１０７の処理結果に応じて、表示が更新される。表示が更新されると、更新対象の関数名、プログラム、セル、及びセルの境界部は、強調表示される。すなわち、表示が変更された部分は、強調表示される。また、オペレータが選択して指定した関数名、プログラム、セル、またはセルの境界部も強調表示される。
【００３５】
強調表示の方法は、色を変える、ハッチングなどを施して背景を変える、または点滅表示するなど、任意の方法を用いることができる。セルの境界部を強調表示する場合は、境界部を表す線の太さを変えることもできる。図２では、一例としてハッチングで強調表示をしており、リスト表示部２０１、プログラム表示部２０２、及びマトリクス表示部２０３の中のハッチング部分が更新対象を示している。
【００３６】
プログラム表示部２０２とマトリクス表示部２０３は、互いに連動している。従って、プログラム表示部２０２の条件判断ステートメントを指定すると、マトリクス表示部２０３にて、指定した条件判断ステートメントに関連するセルの表示を更新することができる。指定した条件判断ステートメントに関連するセルとは、解析木の根ノードから葉ノードに至る複数の経路（根ノードと葉ノードを含む）のうちで指定した条件判断ステートメントの条件を持つノードを含む経路の葉ノードを表すセルのことである。
【００３７】
尚、マトリクス表示部２０３に表示されるマトリクスの形状（セルの配置）は、セルの数や大きさにより変えることができる。セルの大きさは、セルが表している葉ノードから根ノードに至る経路に含まれるノードの数により異なり、このノードの数が多いほどセルは小さくなる。
【００３８】
テストシナリオ出力ボタン２０７が操作されると、指定されて強調表示されているマトリクスのセルとセルの境界部に関連するテストシナリオを出力する。
【００３９】
マトリクスのセルに関連するテストシナリオとは、解析木においてセルが表している葉ノードから根ノードに至る経路に含まれるノードの集合であり、これらのノードの条件判断ステートメントに含まれる条件と親ノードの真偽についての情報とを含む。
【００４０】
マトリクスのセルの境界部に関連するテストシナリオとは、解析木において、葉ノードから根ノードに至る経路のうち、セルの境界部が表している内部ノードを含む経路に含まれるノードの集合であり、これらのノードの条件判断ステートメントに含まれる条件と親ノードの真偽についての情報とを含む。すなわち、セルの境界部が表している内部ノードの下方にある葉ノードから根ノードに至る経路に含まれるノード集合であり、これらのノードの条件判断ステートメントに含まれる条件と親ノードの真偽についての情報とを含む。マトリクスのセルの境界部に関連するテストシナリオは、通常、複数存在する。
【００４１】
また、マトリクス表示部２０３のセルを選択して指定することで、プログラム表示部２０２にて、指定したセルに関連するテストシナリオに含まれる条件判断ステートメントの表示を更新することができる。従って、各テストシナリオがどの条件判断ステートメントを含んでいるのかを把握しながら、操作画面２００の操作をすることができる。
【００４２】
キーワード入力部２０４にキーワードが入力され、探索ボタン２０５が操作されると、入出力処理部１０７がキーワード検索を実行する。キーワード検索により、キーワードを含む（キーワードがノードのアドレスの場合は、「キーワードに該当する」の意味である。以下同じ）関数のリスト、プログラム、及びマトリクスを操作画面２００に表示することが可能である。従って、キーワード検索により、キーワードを含んでいるテストシナリオを作成し、出力することができる。例えば、入力したキーワードを含む条件判断ステートメントを検索し、この条件判断ステートメントを含むテストシナリオを作成して出力することができる。また、入力したノードのアドレスに該当する条件判断ステートメントを検索し、この条件判断ステートメントを含むテストシナリオを作成して出力することができる。
【００４３】
次に、図３、図４、図５、及び図６に示すフローチャートを用いて、テストシナリオ自動作成システム１００の動作手順を説明する。
【００４４】
図３は、テストシナリオ自動作成システム１００の全体の動作手順の例を表すフローチャートである。
【００４５】
まず、プログラム解析部１０３は、入力されたプログラム（原始プログラム）の解析を行い（Ｓ３０１）、プログラム中の関数について解析木を作成する。プログラムの解析については、図４を用いて動作手順を後述する。
【００４６】
解析結果である解析木をマトリクスで表示するために、マトリクスデータ作成部１０６は、解析木のマトリクスデータ化処理を行い（Ｓ３０２）、マトリクスデータを作成する。マトリクスデータ化処理では、解析木の葉ノードをマトリクスのセルとし、解析木の内部ノード（条件判断ステートメントに含まれる条件）をセルの境界部とする。葉ノードから根ノードに至る経路において、経路に含まれるノードの数が多いと、葉ノードに係わる条件判断ステートメントが多い（すなわち、根ノードから葉ノードに至るまでに多くの条件を経ている）ことになり、葉ノードが表すセルの大きさは小さくなる。
【００４７】
入出力処理部１０７は、作成したマトリクスデータ、解析したプログラムに含まれる関数のリスト、及び関数のプログラムを、ディスプレイ１０８に表示する（Ｓ３０３）。
【００４８】
次に、入出力処理部１０７は、入力装置１０９から入力された値の解析を行う（Ｓ３０４）。オペレータが入力装置１０９を用いて入力を行うまでの間、すなわち入力装置１０９からの入力がない場合は、以後の処理を実行せずに入力を待つ（Ｓ３０５）。オペレータからの入力があり入力値が「終了」である場合（Ｓ３０６）は、テストシナリオ自動作成システム１００は処理を終了する。オペレータからの入力があり入力値が「終了」でない場合（Ｓ３０６）は、入出力処理部１０７は、ディスプレイ１０８の更新を行う（Ｓ３０７）。ディスプレイ１０８の更新については、図５を用いて動作手順を後述する。
【００４９】
ディスプレイ１０８の更新の処理後、テストシナリオ出力部１１０は、テストシナリオを作成し、テストシナリオの出力を行う（Ｓ３０８）。
【００５０】
テストシナリオの出力（Ｓ３０８）の終了後、入出力処理部１０７は、再び入力値の解析を行う（Ｓ３０４）。
【００５１】
テストシナリオ自動作成システム１００は、以上のようにして、オペレータから「終了」が入力されるまで、処理を続ける。
【００５２】
図４は、図３に示したフローチャートにおけるプログラムの解析（Ｓ３０１）の動作手順の例を表すフローチャートである。プログラムの解析（Ｓ３０１）は、プログラム解析部１０３が実行する。
【００５３】
まず、入力として与えられた原始プログラムＤ４０１の字句解析を行う（Ｓ４０２）。字句解析には、従来の手法を用いることができる。
【００５４】
字句解析を行った後、字句解析の結果を利用して構文解析を行う（Ｓ４０３）。構文解析には、従来の手法を用いることができる。構文解析（Ｓ４０３）の際に、原始プログラムＤ４０１に含まれる関数を抽出するとともに、条件判断ステートメントと、条件判断ステートメントで使用されているキーワードＤ４０４とを抽出し、抽出した関数について解析木Ｄ４０５を作成する。
【００５５】
解析木Ｄ４０５の葉ノードから根ノードに至る経路に含まれるノードの集合が、解析木Ｄ４０５から得られるテストシナリオである。解析木Ｄ４０５の葉ノードは複数あるので、解析木Ｄ４０５から得られるテストシナリオは、各葉ノードから根ノードに至る経路の数だけ存在する。これらのテストシナリオは、それぞれ内容（パターン）が異なる。解析木の作成方法と作成した解析木の一例は、図８を用いて後で説明する。
【００５６】
図５は、図３に示したフローチャートにおけるディスプレイ１０８の更新（Ｓ３０７）の動作手順の例を表すフローチャートである。ディスプレイ１０８の更新（Ｓ３０７）は、オペレータによる操作画面２００の操作に従い、入出力処理部１０７が実行する。オペレータは、入力装置１０９を用いて、操作画面２００に表示されている関数、ステートメント、及びマトリクスのセルを指定することができる。また、オペレータは、キーワード入力部２０４と探索ボタン２０５を操作してキーワード検索を行うことができ、クリアボタン２０６を操作して操作画面２００のクリアを指定することができる。
【００５７】
まず、操作画面２００（図２を参照）のリスト表示部２０１に表示されている関数のリストにおいて関数が指定された場合（Ｓ５０１）は、リスト表示部２０１の表示更新（Ｓ５０２）を行って、指定された関数を強調表示する。さらに、プログラム表示部２０２の表示更新（Ｓ５０３）を行って、指定された関数のプログラムをプログラム表示部２０２に表示し、マトリクス表示部２０３の表示更新（Ｓ５０４）を行って、指定された関数についてのマトリクスをマトリクス表示部２０３に表示する。
【００５８】
プログラム表示部２０２に表示されているプログラムにおいて条件判断ステートメントが指定された場合（Ｓ５０５）は、プログラム表示部２０２の表示更新（Ｓ５０３）を行って、指定された条件判断ステートメントを強調表示する。さらに、マトリクス表示部２０３の表示更新（Ｓ５０４）を行って、マトリクス表示部２０３に表示されている当該プログラムのマトリクスにおいて、指定された条件判断ステートメントに関連するセルを強調表示する。
【００５９】
マトリクス表示部２０３に表示されているマトリクスにおいてセルやセルの境界部が指定された場合（Ｓ５０６）は、マトリクス表示部２０３の表示更新（Ｓ５０４）を行って、指定されたセルやセルの境界部を強調表示する。さらに、プログラム表示部２０２の表示更新（Ｓ５０３）を行って、プログラム表示部２０２に表示されているプログラムにおいて、指定されたセルやセルの境界部に関連するテストシナリオにて使用されている条件判断ステートメントを強調表示する。
【００６０】
尚、プログラム表示部２０２の表示更新（Ｓ５０３）において、条件判断ステートメントを強調表示するときは、条件判断ステートメントの全体を強調表示してもよく、一部（例えば、条件判断ステートメントの１行目と最終行のみ、または１行目のみ）を強調表示してもよい。図２に示したプログラム表示部２０２では、条件判断ステートメントの１行目のみを強調表示している。
【００６１】
入出力処理部１０７によってキーワード検索が行われた場合（Ｓ５０７）は、検索の終了後に、リスト表示部２０１、プログラム表示部２０２、及びマトリクス表示部２０３の表示更新を行い（Ｓ５０２、Ｓ５０３、及びＳ５０４）、キーワードを含むまたはキーワードに関連する関数、プログラム、及びマトリクスを表示する。このとき、キーワードを含むまたはキーワードに関連する部分を強調表示してもよい。
【００６２】
マトリクス表示部２０３の表示更新（Ｓ５０４）により、指定された条件判断ステートメントに関連するセルを強調表示することで、テストシナリオの網羅度を視覚的に分かりやすく表示することができる。テストシナリオの網羅度は、得られるテストシナリオの総数（テストシナリオの全てのパターン数）に対する作成したテストシナリオの数である。マトリクス中のセルの数が得られるテストシナリオの総数であるので、テストシナリオの網羅度は、マトリクスのセルのうち強調表示されたセルの割合として表示することができる。
【００６３】
クリアボタン２０６が操作されて操作画面２００のクリアが指定された場合（Ｓ５０８）は、リスト表示部２０１、プログラム表示部２０２、及びマトリクス表示部２０３に表示している全ての情報を初期化し、操作画面２００を初期表示に更新する（Ｓ５０９）。
【００６４】
尚、Ｓ５０１、Ｓ５０５、Ｓ５０６、Ｓ５０７、及びＳ５０８において、指定や検索が行われない場合は、操作画面２００を更新しない。
【００６５】
図６は、図３に示したフローチャートにおけるテストシナリオの出力（Ｓ３０８）の動作手順の例を表すフローチャートである。テストシナリオの出力（Ｓ３０８）は、オペレータが操作画面２００のテストシナリオ出力ボタン２０７を操作して指定すると、テストシナリオ出力部１１０が実行する。
【００６６】
まず、テストシナリオの出力が指定された場合（Ｓ６０１）は、マトリクスのセルまたはセルの境界部が１つ以上指定されているか（選択状態にあるか）を検索する（Ｓ６０２）。
【００６７】
セルまたはセルの境界部が１つ以上指定されている場合は、指定されているセルまたはセルの境界部に関連するテストシナリオを、マトリクスデータ格納部１０５に格納されている解析木から特定する（Ｓ６０４）。Ｓ６０４にて特定するテストシナリオは、セルが指定されている場合は、指定されているセルが表している葉ノードから根ノードに至る経路に含まれるノードの集合（葉ノードと根ノードを含む）である（後述する図８を参照）。セルの境界部が指定されている場合は、指定されているセルの境界部が表している内部ノードの下方にある葉ノードから根ノードに至る経路に含まれるノードの集合（葉ノードと根ノードを含む）である。
【００６８】
特定したテストシナリオに含まれているノードの情報と、キーワード格納部１０４に格納されている条件判断ステートメントの情報とをリンクさせ、条件判断ステートメントの情報が含まれたテストシナリオ作成する（Ｓ６０５）。
【００６９】
Ｓ６０５にて作成したテストシナリオを、予め定めた所定のフォーマットに従って、テストシナリオ格納部１１１に出力する（Ｓ６０６）。
【００７０】
Ｓ６０２において、マトリクスのセルまたはセルの境界部が１つ以上指定されていない場合（すなわち、セルとセルの境界部のどちらも指定されていない場合）は、テストシナリオの出力が不可である旨を表すエラーメッセージをディスプレイ１０８に出力し（Ｓ６０３）、テストシナリオは出力しない。
【００７１】
図７は、図４に示した原始プログラムＤ４０１の一例を示すコーディングイメージである。原始プログラムＤ４０１は、原始プログラム格納部１０１に格納されている。図７に示した原始プログラムＤ４０１は、２つの条件判断ステートメントを有し、１番目の条件判断ステートメントは条件Ａと条件Ｂを含み、２番目の条件判断ステートメントは条件Ｃを含む。
【００７２】
図８は、プログラム解析部１０３が構文解析の結果に基づいて作成した解析木の一例を表している。プログラム解析部１０３は、図７に示した原始プログラムを解析し、条件判断ステートメントについて複合条件網羅を満たす解析木である複合条件網羅対応解析木８００を作成する。尚、解析木の形状は、原始プログラムＤ４０１のプログラム構造に合った形状に変化する。
【００７３】
複合条件網羅は、ソフトウェアのテスト手法の一つである制御パステスト（プログラム中のコードが全て実行されるようにテストデータを与えるテスト方法）において、条件判断ステートメントの「真」と「偽」の可能な組み合わせを全て実行する。従って、複合条件網羅は、全命令語を１回は実行する命令網羅や、条件判断ステートメントが「真」と「偽」になる両方を実行する分岐網羅よりも試験密度（単位ステップ数あたりの試験数）が高く、他のテストよりもシステムの高信頼性が確保できる。
【００７４】
複合条件網羅対応解析木８００の各ノードは、図８に示したように、当該ノードに対応する条件判断ステートメントの情報と、当該ノードの親ノードの条件判断ステートメントの真偽情報（親ノードの条件判断ステートメントが真であるか偽であるかについての情報。「親ノード真偽の情報」と称する）とを保持している。また、葉ノードは、条件判断ステートメントの情報でＮＵＬＬを保持しており、根ノードは、親ノード真偽の情報でＮＵＬＬを保持している。
【００７５】
例えば、ノード８０１、８０２、８０３、及び８０４は、それぞれ、条件判断ステートメントの情報として、ＮＵＬＬ、条件Ｃ、条件Ｂ、及び条件Ａを保持し（ノード８０１は葉ノードである）、親ノード真偽の情報として、真、真、偽、及びＮＵＬＬを保持している（ノード８０４は根ノードである）。
【００７６】
複合条件網羅対応解析木８００の葉ノードから根ノードに至る経路に含まれるノードの集合（葉ノードと根ノードを含む）が、複合条件網羅対応解析木８００から得られるテストシナリオである。テストシナリオは、葉ノードの数だけ存在し、それぞれ内容（パターン）が異なる。
【００７７】
また、解析木とマトリクスは一対一の関係となっている。解析木の葉ノードがマトリクスの１つのセルを表しており、解析木の各ノードの条件判断ステートメントに含まれる条件がセルの境界部を表している。セルの境界部は、条件判断ステートメントに含まれる条件の真偽によって、マトリクスを分割している。すなわち、セルは、解析木の各ノードに対応する条件判断ステートメントの条件の真偽に従って、セルの境界部によって区切られている。セルの数は、解析木の葉ノードの数である。また、解析木の葉ノードから根ノードに至る経路に含まれるノードの集合が、１つのテストシナリオである。従って、セルの数は、考えられるテストシナリオの総数（テストシナリオの全パターン数）を表す。
【００７８】
図９は、マトリクスデータ作成部１０６が複合条件網羅対応解析木８００から作成したマトリクスデータの一例を示している。マトリクスデータは、プログラム解析部１０３が作成したツリー構造の解析木を、マトリクス構造に変更したデータである。マトリクスデータは、プログラム解析部１０３で作成される解析木に合った形状で作成される。
【００７９】
図９に示したマトリクスデータ９００は、図８に示した複合条件網羅対応解析木８００をマトリクス構造に変換した例である。マトリクスの各セルを区切るセルの境界部９０１、９０２、９０３、９０４、及び９０５（点線で囲んだ線）は、複合条件網羅対応解析木８００の各ノードが保持している条件判断ステートメントの条件を表している。マトリクスの各セルは、複合条件網羅対応解析木８００の葉ノードを表している。
【００８０】
例えば、セルの境界部９０１（条件Ａ）は、複合条件網羅対応解析木８００のノード８０４（根ノード）を表しており、図９においてセルの境界部９０１の左側は条件Ａが「真」の場合であり、右側は「偽」の場合である。
【００８１】
セルの境界部９０３（条件Ｂ）は、ノード８０３を表しており、図９においてセルの境界部９０３の上側は条件Ｂが「真」の場合であり、下側は「偽」の場合である。
【００８２】
セルの境界部９０４（条件Ｃ）は、ノード８０２を表しており、図９においてセルの境界部９０４の左側は条件Ｃが「真」の場合であり、右側は「偽」の場合である。
【００８３】
また、例えば、セル９１０は、セルの境界部９０１（条件Ａ）、９０３（条件Ｂ）、及び９０４（条件Ｃ）に区切られたセルであり、複合条件網羅対応解析木８００の葉ノードであるノード８０１を表している。セル９１０は、条件Ａが「偽」、条件Ｂが「真」、条件Ｃが「真」の場合に対応する。
【００８４】
図９では、マトリクスのセルの中に、各セルに対応するテストシナリオを記載している。各セルに対応するテストシナリオとは、上述したように、各セルが表す葉ノードから根ノードに至る経路に含まれるノードの集合（葉ノードと根ノードを含む）である。
【００８５】
例えば、セル９１０は、図８に示した葉ノードであるノード８０１を表し、ノード８０１から根ノードであるノード８０４に至る経路に含まれるノードの集合は、ノード８０１、８０２、８０３、及び８０４である。ノード８０４（ノード８０３の親ノード）は、条件判断ステートメントの条件Ａを保有しており、ノード８０３は、親ノード真偽の情報として「偽」を保有しているので、テストシナリオは、条件Ａを「偽」とした場合のものである。以下同様に、ノード８０３〜８０１について、各ノードの保有する条件判断ステートメントと当該ノードの子ノードが保有する親ノード真偽の情報とに基づいてテストシナリオを定めると、条件Ｂは「真」、条件Ｃは「真」となる。従って、セル９１０に対応するテストシナリオは、条件Ａを「偽」、条件Ｂを「真」、条件Ｃを「真」とした場合のテストシナリオである。
【００８６】
図１０は、図７に示した原始プログラムを解析した場合において、キーワード格納部１０４に格納されるキーワードの一例である。キーワード格納部１０４には、プログラム解析部１０３が解析して作成したキーワードが格納されている。図１０に示す例では、１つのエントリに、キーワードの格納番号（Ｎｏ）１００１、モジュール名１００２、関数名１００３、条件判断ステートメントのソース範囲１００４、解析木のノードアドレス１００５、及び条件判断ステートメント１００６の項目を備える。図１０には示していないが、定数や変数をキーワードに含めてもよい。キーワード検索を行う際には、エントリ内に含まれている情報に対して検索を行い、キーワードを含むエントリを特定する。
【００８７】
図１１は、図７に示した原始プログラムを対象とした場合において、テストシナリオ出力部１１０が出力するテストシナリオの一例である。テストシナリオには、指定したセルのテストシナリオを実現させるための条件判断ステートメントが実行順に記載されている。１つのエントリは、実行順番１１０１、モジュール名１１０２、関数名１１０３、条件判断ステートメントのソース範囲１１０４、条件判断ステートメント１１０５、及び条件判断ステートメントの結果１１０６を備える。図１１に示したテストシナリオは、図９に示したマトリクスのセル９１０を指定した場合のテストシナリオである。
【００８８】
尚、本発明は、上記の実施例に限定されるものではなく、様々な変形例を実施態様としてとることができる。例えば、上記の実施例は、本発明の一実施態様を分かりやすく詳細に説明したものであり、本発明は、必ずしも説明した全ての構成を備えるものに限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【００８９】
また、上記の構成、機能、処理部、及び処理手段等は、これらの一部または全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよい。また、上記の構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、及びファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Solid State Drive）等の記録装置、またはＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に保存することができる。
【００９０】
また、制御線や情報線は、説明上必要と考えられるものを記載しており、必ずしも製品上必要な全ての制御線や情報線を示しているとは限らない。実際には、殆ど全ての構成が相互に接続されていると考えてもよい。
【００９１】
本発明によるテストシナリオ自動作成システムによれば、以下のような作用効果が得られる。
【００９２】
１．テスト対象プログラムを指定することで、プログラムをマトリクスで表現することができ、テストシナリオの総数、テストシナリオの網羅度を視覚的に捕らえることができ、テストシナリオの選択が容易になる。また、テストシナリオの試験密度、プログラムの構造を把握することができる。
【００９３】
２．複合条件網羅を満たす解析木である複合条件網羅対応解析木からマトリクスを作成し、テストシナリオを作成する。このため、プログラムの追加や変更の改修作業が発生した場合でも、改修箇所及び改修による影響の波及箇所に関連するテスト内容を網羅したテストシナリオを作成し、関連のないテストシナリオを除外することができる。従って、テストシナリオの作成にかかる工数と、テストの実施にかかる工数を削減できる。
３．制御パステストの中でも命令網羅や条件網羅よりも基準が厳しい複合条件網羅を対象としていることで、プログラムのバグを早期発見することができ、後工程でバグが発見され修正コストが上がるのを防ぎ、品質の高いシステムを作ることができる。
【符号の説明】
【００９４】
１００…テストシナリオ自動作成システム、１０１…原始プログラム格納部、１０２…プログラム入力部、１０３…プログラム解析部、１０４…キーワード格納部、１０５…マトリクスデータ格納部、１０６…マトリクスデータ作成部、１０７…入出力処理部、１０８…ディスプレイ、１０９…入力装置、１１０…テストシナリオ出力部、１１１…テストシナリオ格納部、２００…操作画面、２０１…リスト表示部、２０２…プログラム表示部、２０３…マトリクス表示部、２０４…キーワード入力部、２０５…探索ボタン、２０６…クリアボタン、２０７…テストシナリオ出力ボタン、２０８…終了ボタン、２０９…テストシナリオの総数、８００…複合条件網羅対応解析木、８０１、８０２、８０３、８０４…ノード、９００…マトリクスデータ、９０１、９０２、９０３、９０４、９０５…セルの境界部、９１０…セル、１００１…格納番号、１００２…モジュール名、１００３…関数名、１００４…ソース範囲、１００５…解析木のノードアドレス、１００６…条件判断ステートメント、１１０１…実行順番、１１０２…モジュール名、１１０３…関数名、１１０４…ソース範囲、１１０５…条件判断ステートメント、１１０６…条件判断ステートメントの結果。
【図１】
2013008281.tif 000003
【図２】
2013008281.tif 000004
【図３】
2013008281.tif 000005
【図４】
2013008281.tif 000006
【図５】
2013008281.tif 000007
【図６】
2013008281.tif 000008
【図７】
2013008281.tif 000009
【図８】
2013008281.tif 000010
【図９】
2013008281.tif 000011
【図１０】
2013008281.tif 000012
【図１１】
2013008281.tif 000013