(57)【要約】      （修正有）【課題】処理の流れに関わるソフトウェア仕様から、実行パスベース及び入出力ベース双方を考慮した適宜なカバレッジを満たすテストケースを効率的に生成可能とする。【解決手段】テストケース生成装置１００において、記憶装置２０３は、仕様情報（１１１）及びカバレッジ基準（１１５）の情報を格納し、ＣＰＵ２０１は、仕様情報より条件項目と結果項目と各項目値とを条件結果項目（１１２）として抽出し、仕様情報より仕様内の各実行パス（１１３）を抽出し、条件結果項目および項目値に基づき、各条件項目の項目値の組み合わせとこれに対応する結果項目の項目値のパターンたるルールを生成し、当該各ルールが示す処理内容と実行パスとの対応関係を特定して、ルールと実行パスとの対応関係を示す条件結果対応表（１１６）を生成し、カバレッジ基準に対応したルールないし実行パスを条件結果対応表で検索しテストケース（１１４）を生成する。【選択図】図１
2015204065.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアにおける処理の流れに関わる仕様情報と、テストケースのカバレッジ基準の情報とを格納した記憶装置と、
前記仕様情報より、前記流れでの分岐条件を示す条件項目と、該条件項目以外の実行内容を示す結果項目と、前記条件項目および前記結果項目のそれぞれ取りうる項目値と、を条件結果項目として抽出し記憶装置に格納する条件結果項目抽出処理と、
前記仕様情報より、該当仕様内の各実行パスを抽出する実行パス抽出処理と、
前記条件結果項目および前記項目値に基づき、各条件項目の項目値の組み合わせとこれに対応する結果項目の項目値のパターンたるルールを生成し、当該各ルールが示す処理内容と前記実行パスとの対応関係を特定して、前記ルールと前記実行パスとの対応関係を示す条件結果対応表を生成し記憶装置に格納する条件結果対応表生成処理と、
前記カバレッジ基準の情報が示す条件に対応したルールないし実行パスを、前記条件結果対応表で検索し、当該検索したルールないし実行パスと前記仕様情報とに基づき、所定の生成アルゴリズムによりテストケースを生成するテストケース生成処理と、を実行する演算装置と、
を備えることを特徴とするテストケース生成装置。
【請求項２】
前記記憶装置は、
前記流れに関わる仕様情報のうち、前記条件項目及び前記結果項目の各表記を特定し、前記各表記から前記条件項目及び前記結果項目とその項目値とを抽出する抽出ルールと、前記実行パスにおける開始条件及び終了条件と、を含む抽出ルール情報を格納し、
前記演算装置は、
前記条件結果項目抽出処理において、前記抽出ルール情報における前記抽出ルールにより、前記条件項目、前記結果項目、及び、前記条件項目及び前記結果項目の各項目値を抽出し、前記条件結果項目として記憶装置に格納し、
前記実行パス抽出処理において、前記流れの仕様情報と前記抽出ルール情報が示す前記開始条件とに基づき、前記流れの中での開始点特定に応じて実行パス抽出を開始し、前記流れの中での前記終了条件に応じて特定した終了点までをひとつの実行パスとして抽出する、
ものであることを特徴とする請求項１に記載のテストケース生成装置。
【請求項３】
前記記憶装置は、
前記抽出ルール情報として、前記流れの中で関係する前記条件項目及び前記結果項目の間の組み合わせの制約条件を規定した補足ルールを更に格納し、
前記演算装置は、
前記条件結果項目抽出処理において、前記抽出ルール情報における前記抽出ルールおよび前記補足ルールにより、前記条件項目、前記結果項目、及び、前記条件項目及び前記結果項目の各項目値を、前記補足ルールの規定を満たす制限下で抽出し、前記条件結果項目として記憶装置に格納する、
ものであることを特徴とする請求項１に記載のテストケース生成装置。
【請求項４】
前記記憶装置は、
前記カバレッジ基準の情報として、生成するテストケースが実行パスベースのカバレッジを評価するものか、入出力ベースのカバレッジを評価するものかを示すカバレッジ種別を更に格納しており、
前記演算装置は、
前記テストケース生成処理において、前記カバレッジ基準の情報が示すカバレッジ種別に応じて前記テストケースの生成を実行するものである、
を特徴とする請求項１に記載のテストケース生成装置。
【請求項５】
前記演算装置は、
前記条件結果項目抽出処理において、前記抽出した条件結果項目を表示装置に表示し、前記条件結果項目に関する修正指示を入力装置から受け付けて、前記条件結果項目の修正処理を行う条件結果項目処理を更に実行するものである、
ことを特徴とする請求項１に記載のテストケース生成装置。
【請求項６】
前記演算装置は、
前記条件結果項目補正処理において、入力装置で受け付ける修正指示として、前記流れの中で関係する前記条件項目及び前記結果項目の間の組み合わせの制約条件を規定した補足ルールを受け付けるものである、
ことを特徴とする請求項５に記載のテストケース生成装置。
【請求項７】
ソフトウェアにおける処理の流れに関わる仕様情報と、テストケースのカバレッジ基準の情報とを格納した記憶装置を備えるコンピュータが、
前記仕様情報より、前記流れでの分岐条件を示す条件項目と、該条件項目以外の実行内容を示す結果項目と、前記条件項目および前記結果項目のそれぞれ取りうる項目値と、を条件結果項目として抽出し記憶装置に格納する条件結果項目抽出処理と、
前記仕様情報より、該当仕様内の各実行パスを抽出する実行パス抽出処理と、
前記条件結果項目および前記項目値に基づき、各条件項目の項目値の組み合わせとこれに対応する結果項目の項目値のパターンたるルールを生成し、当該各ルールが示す処理内容と前記実行パスとの対応関係を特定して、前記ルールと前記実行パスとの対応関係を示す条件結果対応表を生成し記憶装置に格納する条件結果対応表生成処理と、
前記カバレッジ基準の情報が示す条件に対応したルールないし実行パスを、前記条件結果対応表で検索し、当該検索したルールないし実行パスと前記仕様情報とに基づき、所定の生成アルゴリズムによりテストケースを生成するテストケース生成処理と、
実行することを特徴とするテストケース生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テストケース生成装置及びテストケース生成方法に関するものであり、具体的には、処理の流れに関わるソフトウェア仕様から、実行パスベース、及び入出力ベース双方を考慮した適宜なカバレッジを満たすテストケースを効率的に生成可能とする技術に関する。
【背景技術】
【０００２】
ソフトウェア開発では、顧客からの要望等を要件定義として纏め、この要件定義に基づき、必要となる機能の設計、詳細化を行い、その実装を行う。こうして開発されるソフトウェアに関するテストは、実装が仕様通りに行われているかを確認するための工程であり、ソフトウェアの品質を確保する重要な工程である。
【０００３】
上述したテスト工程における確認項目のうち、特にソフトウェアの機能に着目したテストを機能テストと呼ぶ。なお、こうした機能に関わるテスト以外には、例えば、処理性能を確認するための性能テスト、負荷テストなどがある。
【０００４】
機能テストの実施に当たっては、ソフトウェアにおける処理の流れや、入力データ間の制約条件等の設計情報に着目し、実装したソフトウェアが期待された動作するか確認することになる。その際、機能が取りうる処理の流れ、或いは、取りうる入力データの組合せの全てを確認することが困難な場合には、カバレッジ基準を設定し、そのカバレッジを満たすようテストを行う。
【０００５】
そうしたカバレッジ基準のうち、実装コードベースのカバレッジ基準としては、各実行ステートメントが少なくとも一回は実行される実行パス網羅（Ｃ０網羅）や、条件分岐に着目し、各条件分岐において、各分岐を少なくとも一回は通過するようにテストを行う条件網羅（Ｃ１網羅）などが知られている。
【０００６】
また、状態遷移図などの設計書をベースとした場合には、各状態遷移を少なくとも一回は通過するようにテストを行う遷移パス網羅、或いは、入力データの取りうる値の組合せが設計情報として与えられている場合には、取りうる組合せに着目し、少なくともＮ組の組合せが1回は現れるようにテストを行うｎ−ｗｉｓｅ網羅など、様々なカバレッジ基準
が知られている。
【０００７】
これらのカバレッジ基準のうち、ソフトウェア開発に伴い作成した設計書の記載内容、或いは、開発基準等にあわせたカバレッジ基準を採用し、上述のテストを実施することになる。こうしたソフトウェアのテストに伴うテストケースの生成技術として、以下のような技術が従来から提案されている。すなわち、ＵＭＬ（Ｕｎｉｆｉｅｄ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ）のシーケンス図を元に、当該シーケンス図に関連するクラス図のＯＣＬ（Ｏｂｊｅｃｔ  Ｃｏｎｓｔｒａｉｎｔ  Ｌａｎｇｕａｇｅ）表現を与えることで、シーケンス図から抽出される実行パスと、クラス図のＯＣＬ表現から与えられる事前・事後条件を元に、実行パスベースと入出力ベース双方のカバレッジ基準を評価し、テストケースを自動生成する方法（非特許文献１参照）などである。ここで、実行パスベースのカバレッジ基準とは、処理の流れに着目し、実行ステートメントや分岐条件の実行可否をカバレッジを評価するカバレッジ基準であり、入出力ベースのカバレッジ基準とは、入力、出力、或いは、入出力の対応関係から、取り得る組み合わせに対してカバレッジを評価するカバレッジ基準である。前者は主にホワイトボックステスト、後者は主にブラックボックステストのカバレッジを評価するために用いられる。なお、例えば、前述のＣ０網羅
やＣ１網羅は、実行パスベースであり、ｎ−ｗｉｓｅ網羅は、入出力ベースのカバレッジ基準である。 
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】Ｌｉ  Ｂａｏ−Ｌｉｎ，  Ｌｉ  Ｚｈｉ−ｓｈｕ，  Ｌｉ  Ｑｉｎｇ，  Ｃｈｅｎ  Ｙａｎ  Ｈｏｎｇ、”Ｔｅｓｔ  ｃａｓｅ  ａｕｔｏｍａｔｉｏｎ  ｇｅｎｅｒａｔｉｏｎ  ｆｒｏｍ  ＵＭＬ  ｓｅｑｕｅｎｃｅ  ｄｉａｇｒａｍ  ｅｘｐｒｅｓｓｉｏｎ”、２００７  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｃｏｍｐｕｔａｔｉｏｎａｌ  Ｉｎｔｅｌｌｉｇｅｎｃｅ  ａｎｄ  Ｓｅｃｕｒｉｔｙ、ＩＥＥＥ  Ｃｏｍｐｕｔｅｒ  Ｓｏｃｉｅｔｙ、  ｐｐ．１０４８−１０５２、２００７．
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述の従来技術においては、ＵＭＬのシーケンス図とクラス図を元に、機能テストを実施するためのテストケースの自動生成を行っている。また、その自動生成に当たっては、実行パス及び入出力の双方のカバレッジを考慮したテストケースの生成が可能である。しかしながら、シーケンス図とクラス図のＯＣＬ表現により、処理の流れを示す仕様（シーケンス図）と、当該シーケンス図に関連する事前、事後条件の双方を予め設計しておく必要がある。また、処理の流れを示す仕様は、シーケンス図であり、事前、事後条件の記述は、ＯＣＬ（Ｏｂｊｅｃｔ  Ｃｏｎｓｔｒａｉｎｔ  Ｌａｎｇｕａｇｅ）を前提としている。従って、テストケース生成に際して事前に設計、定義しておくべき事項が多く、適用性が限定的となりがちであり、工程数も増え開発効率が良好とは言えない。
【００１０】
そこで本発明の目的は、処理の流れに関わるソフトウェア仕様から、実行パスベース及び入出力ベース双方を考慮した適宜なカバレッジを満たすテストケースを効率的に生成可能とする技術を提供することにある。
【課題を解決するための手段】
【００１１】
上記課題を解決する本発明のテストケース生成装置は、ソフトウェアにおける処理の流れに関わる仕様情報と、テストケースのカバレッジ基準の情報とを格納した記憶装置と、前記仕様情報より、前記流れでの分岐条件を示す条件項目と、該条件項目以外の実行内容を示す結果項目と、前記条件項目および前記結果項目のそれぞれ取りうる項目値と、を条件結果項目として抽出し記憶装置に格納する条件結果項目抽出処理と、前記仕様情報より、該当仕様内の各実行パスを抽出する実行パス抽出処理と、前記条件結果項目および前記項目値に基づき、各条件項目の項目値の組み合わせとこれに対応する結果項目の項目値のパターンたるルールを生成し、当該各ルールが示す処理内容と前記実行パスとの対応関係を特定して、前記ルールと前記実行パスとの対応関係を示す条件結果対応表を生成し記憶装置に格納する条件結果対応表生成処理と、前記カバレッジ基準の情報が示す条件に対応したルールないし実行パスを、前記条件結果対応表で検索し、当該検索したルールないし実行パスと前記仕様情報とに基づき、所定の生成アルゴリズムによりテストケースを生成するテストケース生成処理と、を実行する演算装置と、を備えることを特徴とする。
【００１２】
また、本発明のテストケース生成方法は、ソフトウェアにおける処理の流れに関わる仕様情報と、テストケースのカバレッジ基準の情報とを格納した記憶装置を備えるコンピュータが、前記仕様情報より、前記流れでの分岐条件を示す条件項目と、該条件項目以外の実行内容を示す結果項目と、前記条件項目および前記結果項目のそれぞれ取りうる項目値と、を条件結果項目として抽出し記憶装置に格納する条件結果項目抽出処理と、前記仕様情報より、該当仕様内の各実行パスを抽出する実行パス抽出処理と、前記条件結果項目お
よび前記項目値に基づき、各条件項目の項目値の組み合わせとこれに対応する結果項目の項目値のパターンたるルールを生成し、当該各ルールが示す処理内容と前記実行パスとの対応関係を特定して、前記ルールと前記実行パスとの対応関係を示す条件結果対応表を生成し記憶装置に格納する条件結果対応表生成処理と、前記カバレッジ基準の情報が示す条件に対応したルールないし実行パスを、前記条件結果対応表で検索し、当該検索したルールないし実行パスと前記仕様情報とに基づき、所定の生成アルゴリズムによりテストケースを生成するテストケース生成処理と、実行することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、処理の流れに関わるソフトウェア仕様から、実行パスベース及び入出力ベース双方を考慮した適宜なカバレッジを満たすテストケースを効率的に生成可能となる。
【図面の簡単な説明】
【００１４】
【図１】第一の実施例におけるテストケース生成装置のハードウェア構成例を示す図である。
【図２】第一の実施例におけるテストケース生成装置の構成を示す図である。
【図３】第一の実施例におけるテストケース生成方法の全体処理の流れを示す図である。
【図４】第一の実施例におけるテストケース生成処理の概要を示す図である。
【図５】第一の実施例におけるカバレッジ基準一覧表の例を示す図である。
【図６】第一の実施例における処理の流れに関わる仕様例を示す図である。
【図７】第一、及び、第二の実施例における、条件結果項目の抽出するための処理の概要を示す図である。
【図８】第一の実施例における仕様例の条件結果項目を示す図である。
【図９】第一の実施例における仕様例の抽出された実行パスの例を示す図である。
【図１０】第一の実施例におけるルール一覧表の例を示す図である。
【図１１】第一の実施例における仕様例から生成されたルールに基づき生成した条件結果対応表と、生成テストケースの一例を示す図である。
【図１２】第二の実施例における処理の流れに関わる仕様例を示す図である。
【図１３】第二の実施例における条件結果項目例を示す図である。
【図１４】第二の実施例における仕様例から実行パスを抽出するための抽出ルールの一例を示す図である。
【図１５】第二の実施例における補足ルール一覧を示す図である。
【図１６】第一、及び、第二の実施例における、実行パスを抽出するための処理の概要を示す図である。
【図１７】第二の実施例における仕様例の抽出された実行パスの例を示す図である。
【図１８】第二の実施例におけるルール一覧表の例を示す図である。
【図１９】第二の実施例における仕様例から生成されたルールに基づき生成した条件結果対応表と、生成テストケースの一例を示す図である。
【発明を実施するための形態】
【００１５】
以下に本発明の実施形態について図面を用いて詳細に説明する。図１は、第一の実施例におけるテストケース生成装置１００を実現するハードウェア構成例を示す図である。テストケース生成装置１００は、演算装置たるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）２０１、揮発性記憶装置で構成されるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０２、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）やハードディスクドライブなど適宜な不揮発性記憶装置で構成される外部記憶装置２０３、当該テストケース生成装置１００の各構成２０１〜２０６を接続する内部パスたるインターフェイス２０４、処理データの表示を行うディスプレイ等の表示装置２０５、およびユーザから
のキー入力や音声入力を受け付ける入力装置２０６、を備える。なお、外部記憶装置２０３内には、本実施形態のテストケース生成装置１００として必要な機能を実装する為のプログラム２１０の他に、後述する記憶部１１１〜１１７の記憶領域が確保されている。
【００１６】
また上述のＣＰＵ２０１は、外部記憶装置２０３に保持されるプログラム２１０をＲＡＭ２０２に読み出すなどして実行し装置自体の統括制御を行なうとともに各種判定、演算及び制御処理を行なう。このようにＲＡＭ２０２上にロードしたプログラム２１０を実行することで、後述する機能部、すなわち記述形式検証部１０１、仕様入力部１０２、条件結果項目抽出部１０７、条件結果項目補正部１０３、テスト仕様生成部１０４、テスト仕様登録部１０５、実行パス抽出部１０８、テストケース生成部１０９、条件結果対応表生成部１１０の各処理部をプロセスとして具現化する。
【００１７】
次に、こうしたハードウェア構成のテストケース生成装置１００が備える各機能について図２に基づき説明する。図２は第一の実施例におけるテストケース生成装置１００の構成例を示す図である。図２に示すテストケース生成装置１００は、処理の流れに関わるソフトウェア仕様から、実行パスベース及び入出力ベース双方を考慮した適宜なカバレッジを満たすテストケースを効率的に生成可能とするとするコンピュータ装置である。
【００１８】
このテストケース生成装置１００は、上述の通り、外部記憶装置２０３に備えるプログラム２１０をＲＡＭ２０２にロードし実行することで実装される、以下の機能部を備えている。すなわち、記述形式検証部１０１、仕様入力部１０２、条件結果項目補正部１０３、テスト仕様生成部１０４、テスト仕様登録部１０５、結果項目抽出部１０７、実行パス抽出部１０８、テストケース生成部１０９、および条件結果対応生成部１１０の各処理部である。
【００１９】
上述の機能部のうち仕様入力部１０２は、テストケース生成対象となるソフトウェアの処理の流れに関わる仕様のユーザ入力を入力装置２０６より受け付け、外部記憶装置２０３の仕様記憶部１１１に格納する機能を果たす。また、記述形式検証部１０１は、入力装置２０６で入力された上述の処理の流れに関わる仕様の記述形式が、予め定めた所望形式、文法に基づいたものか検証する機能を果たす。
【００２０】
また、条件結果項目抽出部１０７は、上述のように入力装置２０６で入力された処理の流れに関わる仕様から、当該流れでの分岐条件を示す条件項目と、該条件項目以外の実行内容を示す結果項目と、上述の条件項目および結果項目のそれぞれ取りうる項目値と、を条件結果項目として抽出し、これを条件結果項目記憶部１１２に格納する機能を果たす。また、条件結果項目補正部１０３は、ユーザ入力を入力装置２０６で受け付けて、条件結果項目抽出部１０７が抽出した条件結果項目に関して、修正を行う機能を果たす。
【００２１】
また、実行パス抽出部１０８は、上述の条件結果項目記憶部１１２に格納された条件結果項目、及び、仕様記憶部１１１に格納された上述の処理の流れに関わる仕様から、テストケースを生成するための実行パスを抽出し、これを実行パス記憶部１１３に格納する機能を果たす。
【００２２】
また、テストケース生成部１１５は、上述の仕様記憶部１１１に格納された処理の流れを示す仕様、及び、条件結果項目記憶部１１２内に記憶された条件結果項目、及び、実行パス記憶部１１３内に格納された実行パスを受け取り、カバレッジ基準記憶部１１５に格納された、カバレッジ基準の内、ユーザ指定されたカバレッジ基準を満たすテストケースを生成する機能を果たす。なお、カバレッジ基準記憶部１１５には、テストケース生成部１０９でのテストケースの生成、及び、生成したテストケースのカバレッジを評価するためのカバレッジ評価方法を格納している。
【００２３】
また、テスト仕様生成部１０４は、生成されたテストケースを画面、または、紙等に出力する機能を果たし、テスト仕様登録部１０５は、生成済みのテストケースをテストケース記憶部１１４に格納する機能を果たす。
【００２４】
以下、第一の実施例におけるテストケース生成方法の実際手順について図に基づき説明する。以下で説明するテストケース生成方法に対応する各種動作は、テストケース生成装置１００がＲＡＭ２０２に読み出して実行するプログラム２１０によって実現される。そして、このプログラム２１０は、以下に説明される各種の動作を行うためのコードから構成されている。
【００２５】
図３は、第一の実施例におけるテストケース生成方法の全体処理例を示すフロー図である。ここではまず、この図３に示した処理フローの概略を用いて、テストケース生成方法の処理の流れについて説明する。
【００２６】
まずステップ３００において、テストケース生成装置１００の仕様入力部１０２は、入力装置２０６を介して、ユーザ入力３１０として、処理の流れに関わる仕様を受付け、これを仕様記憶部１１１に格納する。このユーザ入力３１０を受け付ける際、記述形式検証部１０１が、ユーザにより入力された仕様と、予め定めた記述形式または文法（特に図示しないがテストケース生成装置１００の外部記憶装置２０３にテンプレートが予め保持されている）とを照合し、仕様が上述の記述形式または文法に準拠しているか検証し、指定の記述形式を満たす仕様のみ受け付けるようにしてもよい。
【００２７】
また、上述で受け付ける仕様は、仕様作成用の専用ソフトウェアやオフィスソフトなどを、入力装置２０６及び出力装置２０５にてユーザ側に提供し、これらソフトウェアを介して作成動作を受け付け、その結果を受け付けるとしてもよいし、これらのソフトウェアを用いて作成されたデータをユーザ入力３１０として受け付けてもよい。
【００２８】
次にステップ３０２において、テストケース生成装置１００の条件結果項目抽出部１０７は、上述のステップ３０１でユーザ入力された、処理の流れに関わる仕様から、条件項目及び結果項目を抽出する。
【００２９】
また、ステップ３０３において、上述のステップ３０２で抽出された条件項目及び結果項目に対し、テストケース生成装置１００の入出力補正部１０３は、ユーザ入力３１１に応じて、上述の仕様から抽出された条件項目及び結果項目の修正、及び、結果項目への規定値の設定を行う。また入出力補正部１０３は、上述のステップ３０２において仕様内の記述からは抽出できなかったが、設計上存在することが明らかな条件結果項目の項目値や、設計上予め存在しないことが明らかである入力の組合せに関してユーザ入力を受け付ける。また入出力補正部１０３は、次のステップ３０４の「実行パス抽出」において、実行パス上、抽出された結果項目が不定になる場合に規定値を予めユーザが設定する際にこれを受け付ける。
【００３０】
こうしたステップ３０３の処理により、後述するステップ３０７におけるテストケース生成処理において、テストケース生成時に、取りうる条件項目の組合せを明確にする、期待結果が不定とならないように結果項目を明確にする、或いは、予め発生し得ない条件項目の組合せを明らかにすることで、不要なテストケースの生成を防ぐことが可能となる。但し、当該ステップ３０３は省略可能である。
【００３１】
次にステップ３０４において、テストケース生成装置１００の実行パス抽出部１０８は、仕様記憶部１１１内に格納されている、上述の処理の流れに関わる仕様、及び、条件結
果項目記憶部１１２内の条件結果項目を用いて、処理の流れに関わる仕様から取りうる全実行パスを抽出し、その抽出結果を実行パス記憶部１１３に格納する。
【００３２】
また、ステップ３０５において、テストケース生成装置１００の条件結果対応表作成部１１０は、上述の仕様記憶部１１１内の処理の流れに関わる仕様、条件結果項目記憶部１１２内の条件結果項目、及び、実行パス記憶部１１３内の実行パスから、実行パスごとに条件項目の項目値の組み合わせと、対応する期待結果とからなる対応表を作成する。
【００３３】
続いてステップ３０６において、テストケース生成装置１００のテストケース生成部１１０は、ユーザ入力３１２を受付け、カバレッジ基準記憶部１１５内に格納されたカバレッジ基準からユーザ入力３１２が示すユーザ所望のカバレッジ基準を特定する。このカバレッジ基準は、ステップ３０７のテストケース生成処理において生成するテストケースが満たすべき基準となる。
【００３４】
ここでステップ３０７におけるテストケース生成処理について、図４に基づいて説明する。なお、当該ステップ３０７のテストケース生成処理では、図５に示すカバレッジ基準一覧表４１０（カバレッジ基準記憶部１１５にて保持）に記載されたカバレッジ基準を元に、下記の処理を行うことで、所望のカバレッジ基準を満たすテストケースを生成する。図５に例示するカバレッジ基準一覧表４１０は、カバレッジ基準を一意に識別するためのカバレッジ識別子（ＩＤ欄）４１１、カバレッジ基準を実行パスベースで評価するか、入出力ベースで評価するかを示すカバレッジ種別（種別欄）４１２、カバレッジ基準の名称を格納するカバレッジ名称（名称（略称）欄）４１３、カバレッジ基準を満たすテストケースを生成するための処理プログラムを記載するカバレッジ生成処理名称（生成欄) ４１４、カバレッジを評価するためのカバレッジ評価のためのプログラムを記載するカバレッジ評価処理名称（評価欄）４１５、及び、カバレッジの概要を説明するカバレッジ概要（概要欄）４１６から構成される。 
この場合、テストケース生成装置１００のテストケース生成部１０９は、ステップ４０１において処理を開始し、続くステップ４０２においてユーザ入力３１２から入力された生成パラメータ（カバレッジ基準）の種別を確認し、実行パスベースのカバレッジ基準か、否かを判断する。実行パスベースの場合であった場合（４０２：Ｙｅｓ）、テストケース生成部１０９は、処理をステップ４０３へ進め、そうでなかった場合（４０２：Ｎｏ）には処理をステップ４０４に進める。
【００３５】
次にステップ４０３において、テストケース生成部１０９は、上述のカバレッジ基準一覧表４１０のカバレッジ生成処理名称欄４１３を参照し、仕様記憶部１１１内に格納された仕様、及び、実行パス格納部１１３内に格納された実行パスを用いてテストケースの生成を行う。また、ステップ４０４において、テストケース生成部１０９は、上述のカバレッジ基準一覧表４１０のカバレッジ生成処理名称欄４１３を参照し、仕様記憶部１１内に格納された仕様、及び、条件結果項目格納部１１２を参照し、テストケースの生成を行う。
【００３６】
続いてステップ４０５において、テストケース生成部１０９は、詳細は後述する条件結果対応表（条件結果対応表記憶部１１６にて保持）を参照し、上述のステップ４０３またはステップ４０４で生成されたテストケースの対応から、重複テストケースを削除する。
【００３７】
次にステップ４０６において、テストケース生成部１０９は、上述までで生成されたテストケースのカバレッジを評価し、カバレッジ基準が満たされている場合には（４０６：Ｙｅｓ）、処理をステップ４０７へ進めてフローを終了する。他方、カバレッジ基準が満たされていない場合（４０６：Ｎｏ）、テストケース生成部１０９は、処理をステップ４０２に戻す。
【００３８】
続いて、上述の図３、４にて述べた、条件結果項目抽出とテストケース生成のより具体的な内容について、図６に示す、処理の流れに関わる仕様、を例に挙げて説明する。図６は、第一の実施例における、処理の流れに関わる仕様１６０の一例を示す図である。ここでまず、図６に示すフローチャート１６０、すなわち処理の流れの仕様、について説明しておく。このフローチャート１６０は、ステップ３０１の仕様の入力受付（図３）において、ユーザ入力３１０によって入力され、仕様記憶部１１１に格納されているものとする。
【００３９】
このフローチャート１６０において、例えばデータを正常に受信した場合の処理の流れ（ステップ５０１〜ステップ５０８）は、ステップ５００において処理を開始し、ステップ５０２においてデータ受信処理を呼び出し、ステップ５０３において上述のステップ５０２のデータ受信処理がタイムアウト時間６０秒を超えたか判定し、超えた場合にはステップ５０８へ、そうでなければ（６０秒以下であれば）、ステップ５０４に進む。またステップ５０４において、受信データチェック処理を呼び出し、ステップ５０５に進む。次にステップ５０５において、上述のステップ５０４での受信データチェック処理の結果、受信データ状態が正常の場合にはステップ５０９へ、そうでない（異常）の場合には、ステップ５１０へ進む。まあ、ステップ５０６において、メッセージに正常終了を代入し、ステップ５０２においてリトライ回数を０にリセットしてステップ５０７でフローを終了する。
【００４０】
他方、データ受信（ステップ５０２）において、データ受信に失敗した場合の処理の流れ（ステップ５０９からステップ５１０）は、ステップ５０９において、ログ情報として、エラーメッセージを代入し、ステップ５１０に進み、ステップ５１０において、メッセージに受信失敗を代入し、ステップ５０１に進む。
【００４１】
また、受信データ状態が異常で、受信したデータに誤りがある場合（ステップ５０５：異常）の処理の流れ（ステップ５１１からステップ５１４）は、ステップ５１１において、リトライ回数が３を超える場合には、ステップ５１３へ、それ以外（３未満）の場合には、ステップ５１２に進む。また、ステップ５１２において、メッセージに受信データ異常を代入し、ステップ５０１に進む。また、ステップ５１３において、ログに警告メッセージを代入し、ステップ５１４に進み、ステップ５１４において、リトライ回数を１つ増加し、ステップ５０７でフローを終了する。
【００４２】
こうしたフローチャート１６０に対し、条件結果項目抽出部１０７が、図７に示す手順で条件結果項目の抽出処理を実行すると、図８に示す条件結果項目一覧表６００を得て、テストケース生成部１０９はこれを利用可能となる。この場合条件結果項目抽出部１０７は、ステップ１３００において処理を開始し、ステップ１３０１においてフローチャート１６０における各ステップの種別が「条件」である場合（ステップ１３０１：条件）、ステップ１３０２へ、そうでなければ（ステップ１３０１：結果）、ステップ１３０３に処理を進める。
【００４３】
またステップ１３０２において、条件結果項目抽出部１０７は、フローチャート１６０の該当ステップの記述を条件項目とし、該当条件項目が示す分岐条件の値を項目値として抽出し、ステップ１３０４に進む。図６のフローチャート１６０の例であれば、条件分岐（ステップ５０３、ステップ５０５、ステップ５１１）の該当ステップの記述から、条件項目名称として「タイムアウト」、「受信データ状態」、および「リトライ回数」が抽出され、また、該当ステップから項目値として、「＞６０秒」、「≦６０秒」、「正常」、「異常」、「≦３」、「＞３」、が抽出される。
【００４４】
次にステップ１３０３において、条件結果項目抽出部１０７は、上述のステップ１３０３と同様に、フローチャート１６０中の条件分岐ステップ以外のステップの記述を結果項目として、その記述が指定する値を結果項目の項目値として抽出し、ステップ１３０４に進む。図６のフローチャート１６０の例であれば、処理（ステップ５０１、ステップ５０２、ステップ５０４、ステップ５０６、ステップ５０９、ステップ５１０、ステップ５１２、ステップ５１３、ステップ５１４）から、結果項目として「リトライ回数」、「データ受信」、「受信データチェック」、「ログ」、「メッセージ」が抽出され、結果項目値として「０にリセット」、「呼び出し有り」、「呼び出し無し」、「エラーメッセージ」、「警告メッセージ」、「正常終了」、「受信失敗」、「受信データ異常」などが抽出される。
【００４５】
なお、上述のフローチャート１６０が含むステップ（処理）では、該当処理の記法を「Ａ：＝Ｂ」の形式で記述することとする。これにより、結果項目および結果項目値の抽出では、「Ａ」を項目名称、「Ｂ」を項目値として抽出できる。また、フローチャート１６０における定義済み処理（ステップ５０２、５０４、５０９）は、「呼び出し有」、「呼び出し無」といった項目値が予め定められており、結果項目および結果項目値の抽出では、該当処理の記述から項目名称を抽出し、結果項目値として「呼び出し有」「呼び出し無」を抽出することとする。なお、これらの条件項目および結果項目らの抽出ルールは事前に定義可能である。この抽出ルールに基づく項目の抽出処理は、第二の実施例において説明する。
【００４６】
続いて図６のフローの説明に戻る。ステップ１３０４において、条件結果項目抽出部１０７は、フローチャート１６０内の全てのステップに対し、上述のステップ１３０１、１３０２、１３０３の各処理が完了している場合（ステップ１３０４：Ｙｅｓ）、ステップ１３０５へ進み処理を終了する。他方、そうでなければ（ステップ１３０４：Ｎｏ）、条件結果項目抽出部１０７はステップ１３０１に処理を戻す。
【００４７】
こうして得られた条件結果項目一覧表６００は、図８に示すように、条件項目および結果項目を識別するための項目識別子（Ｎｏ欄）６０１、条件項目か結果項目かを示す項目種別（種別欄）６０２、条件項目ないし結果項目の名称を格納する項目名称（名称欄）６０３、各条件項目ないし結果項目が取りうる値の候補を記載する項目値（候補値欄）６０４、および、各条件結果項目の説明を記載する項目概要（概要欄）６０５から構成される。
【００４８】
なお、この条件結果項目一覧表６００に対する項目修正・規定値設定（図３：ステップ３０３）は、例えば、フローチャート１６０に記述されていない項目値の追加やフローチャート１６０上で結果が確定しない結果項目に対して、ユーザが規定値を設定する処理となる。
【００４９】
例えば、図６のフローチャート１６０では、ステップ５１１の処理において、リトライ回数が３回以下の場合、メッセージに代入される値は不定となる。このような場合に、結果項目として「出力無」を追加し、規定値として追加した「出力無」を追加することで、テストケースの生成の際、期待結果を不定となることを防ぐことができる。なお、図８の条件結果項目一覧６００では、規定値は、項目値欄に下線を用いて表現している。
【００５０】
また、上記以外の項目値を修正する場合の例としては、分岐条件に「それ以外」など、Ｅｌｓｅ文相当の文言が含まれている状況に対応するものとなる。この場合、該当する条件項目名の取りうる項目値として、抽出結果である「それ以外」をそのまま用いるのではなく、具体的な項目値を設定するようにしてもよい。
【００５１】
次に、上述のステップ３０４における実行パス抽出とステップ３０５の条件結果対応表の作成の詳細について説明する。この場合、実行パス抽出部１０８は、例えばフローチャート１６０内の開始記号５００から各ステップを条件分岐等に従って順次辿る探索を開始し、フローチャート１６０内の全実行パスを抽出する。その結果、得られた実行パスの例として、例えば図９に例示した実行パス（１）７０１では、フローチャート１６０における以下の実行パスを表している。
【００５２】
ステップ５００：開始記号
ステップ５０１：リトライ回数：＝０に設定
ステップ５０２：データ受信
ステップ５０３：タイムアウト？（分岐条件  ＞６０秒）
ステップ５０９：ログ：＝エラーメッセージ
ステップ５１０：メッセージ：＝受信失敗
ステップ５０７：終了
また同様に、図９に例示した実行パス（２）７０２では、フローチャート１６０における下記の実行パスに対応する。
【００５３】
ステップ５００：開始記号
ステップ５０１：リトライ回数：＝０に設定
ステップ５０２：データ受信
ステップ５０３：タイムアウト？（分岐条件  ≦６０秒）
ステップ５０４：受信データチェック
ステップ５０５：受信データ状態？  （分岐条件  正常）
ステップ５０６：メッセージ：＝正常終了
ステップ５０７：終了
また同様に、図９に例示した実行パス（３）７０３では、フローチャート１６０における下記の実行パスに対応する。
【００５４】
ステップ５００：開始記号
ステップ５０１：リトライ回数：＝０に設定
ステップ５０２：データ受信
ステップ５０３：タイムアウト？（分岐条件  ≦６０秒）
ステップ５０４：受信データチェック
ステップ５０５：受信データ状態？  （分岐条件  正常）
ステップ５０６：メッセージ：＝正常終了
ステップ５０７：終了
なお、図６のフローチャート１６０では、「リトライ回数：＝０に設定（ステップ５０１）」、「リトライ回数：＝１つ増加（ステップ５１４）」等と記述しているが、「リトライ回数：＝リトライ回数＋１（ステップ５１４）」等、演算子を用いて記述することで、実際の計算結果を計算するようにしてもよい。また、上記の実行パス抽出において、例えば、実行パスがループ(以前、実行したパスに戻る場合)している場合には、ループまでをひとつの実行パスとして抽出してもよいし、ループ終了後の結果を算出し、実行パスとしてもよい。
【００５５】
一方、条件結果対応表生成部１１０は、上述のステップ３０５（条件結果表の作成）に伴って、上述のようにして得られた実行パスそれぞれをルールに変換して、図１０に例示するルール一覧表７１０を生成する。このルール一覧表７１０において、例えば、ルール識別子７１１が「１」のルールは実行パス（１）に対応している。条件結果対応表生成部１１０は、このルール一覧表７１０の各レコードにおいて、該当実行パス上に存在する条件分岐の情報を左辺７１３に、結果項目の情報を右辺７１４側に対応させて設定する処理
を実行し、実行パスからルールへの変換を行っている。
【００５６】
こうしたルール一覧表７１０は、ルールを識別するためのＩＤを記載したルール識別子（＃欄）７１１をキーとして、該当ルールの種別を表すルール種別(種別欄)７１２、および、ルールの内容を記載するための左辺欄７１３と右辺欄７１４から構成される。このうち左辺欄７１３および右辺欄７１４は、それぞれ条件結果項目と対応する項目値を格納する名称と値欄とから構成される。こうしたルール一覧表７１０における各ルールは、そのデータ構造が、「条件項目Ｃ１の項目値ｃ１、かつ、条件項目Ｃ２の項目値がｃ２、かつ、・・・ならば、結果項目Ｂ１の項目値はb１、かつ、・・・」といった論理式形式によ
る仕様記述に対応する。
【００５７】
条件結果対応表生成部１１０は、上述のごとく生成したルール一覧表７１０より条件結果対応表を作成することとなる（図３：ステップ３０５）。この場合、条件結果対応表生成部１１０は、ルール一覧表７１０における、各条件項目ないし結果項目とその項目値と、条件項目値の組み合わせと、その組み合わせに対応する結果項目の項目値とを対応付けることで、条件結果対応表を生成する。
【００５８】
図１１は、図１０のルール一覧表７１０から生成された条件結果対応表８００の構成例を示す図である。ここに示すとおり条件結果対応表８００は、条件項目および結果項目とその項目値を記載する条件結果項目欄８０３と、条件項目値の組み合わせと、その組み合わせに対応する結果項目の項目値を記載するルール欄８０４との二つの列から構成されている。
【００５９】
また、条件結果対応表８００は、条件項目を記載するための条件行８０１、結果項目を記載する結果行８０２、および、ルール列内の各ルールと実行パスとの対応を記載する実行パス対応行８０５、ルール列内の各ルールと生成テストケースとの対応を記載するテストケース列８０６から構成される。
【００６０】
なお、図１１に示した条件結果項目対応表８００内の各ルール（１）〜（８）は、対応する項目値に全て"○"を用いている。すなわち、全て同じ記号を用いて記憶しているが、各ルールは、各実行パス内に含まれる条件項目、結果項目と、それ以外がわかるように記憶するようにしてもよい。
【００６１】
例えば、実行パス（２）７０２に対応するルールは、図１１のルール列１，２列目に対応する。このとき、実行パス内に含まれる条件項目「タイムアウト≦６０秒」や結果項目「データ受信：＝有」に対応するルール列の該当欄を"○"で記載し、それ以外の条件項目「リトライ回数」「ログ：＝出力無し」は、"―"で記載するようにしても良い。
【００６２】
一方、テストケース生成部１０９は、上述の条件結果対応表８００を利用してテストケース生成の処理を実行することとなる（図３：ステップ３０７）。この処理の概要については図４に基づき既述であるが、あらため具体的に説明する。テストケース生成部１０９は、カバレッジ基準一覧表４１０にてユーザ選択されたカバレッジ基準（種別欄４１２）内の種別に従い、実行パスベース、入出力ベース、いずれのカバレッジ基準であるかを判断し、それぞれのカバレッジ基準に準拠してテストケースの生成を行う。例えば、ユーザ選択が実行パスベースのカバレッジ基準であった場合には、図６に記載したフローチャート１６０（処理の流れに関する仕様)、及び、ステップ３０４で生成した実行パスを用い
て、カバレッジ基準一覧表４１０のテストケース生成処理４１４欄に記載のテストケース生成処理を用いてテストケースの生成を行う（ステップ４０３）。
【００６３】
また入出力ベースでのテストケースを生成する場合、テストケース生成部１０９は、同
様にカバレッジ基準一覧表４１０のテストケース生成処理４１４欄内に記載のテストケース生成処理を用いて、ステップ３０５で生成した条件結果項目一覧６００、及び、生成した条件結果対応表８００を用いてテストケースの生成を行う（ステップ４０４）。
【００６４】
なお、カバレッジ基準を満たすテストケースの生成、評価処理は、カバレッジ基準ごと、カバレッジ生成処理名称４１４、および、カバレッジ評価処理名称４１５で指定された各処理内で、各カバレッジを満たすようなテストケースの生成、評価が可能なように任意に実装すればよい。例えば、実行文網羅（ＳＣ、Ｃ０）であれば、抽出した全ての実行パスをランダムに選択し、処理の流れに関わる仕様の全てを処理が選択されるまで、実行パスの選択を繰り返せばよい。
【００６５】
ステップ４０５においてテストケース生成部１０９は、条件結果対応表８００内の実行パス対応欄８０５により、生成した実行パスベースのテストケースと、入出力対応ベースのテストケースとに重複があるか否かを確認し、重複するテストケースを削除する。
【００６６】
次にステップ４０６においてテストケース生成部１０９は、設定パラメータとして与えたカバレッジ基準に対するテストケース生成処理を全て行ったか否かを検査し、生成していないカバレッジ基準がある場合には、ステップ４０２に戻り、未生成のカバレッジ基準に対応するテストケースを生成するため、上記の処理を繰り返す。
【００６７】
なお、このとき生成したテストケースが設定パラメータとして与えたカバレッジ基準に準拠しているかを、カバレッジ評価処理欄４１５内の処理を用いて判定するようにし、未生成のカバレッジ基準に対応するテストケースが生成済みか否かを判断するようにしても良い。
【００６８】
また、上記の重複テストケースの削除（ステップ４０５）は、ステップ４０３、及び、ステップ４０４内のテストケース生成の際、生成済みのテストケースを条件結果対応表８００上で確認することで、ステップ４０３、及び、ステップ４０４内で行っても良い。
【００６９】
なお、図５に記載したカバレッジ基準一覧４１０は、カバレッジ基準の一例であり、これ以外のカバレッジ基準を含んでもよい。また、図５のカバレッジ基準一覧表４１０にて例示したカバレッジ基準は、処理の流れに関わる仕様と実行パス（実行パスベースの場合）、または、条件結果項目一覧（入出力ベースの場合）のみからカバレッジ評価が可能な基準のみを例示したが、これ以外のカバレッジ基準を含んでもよい。
【００７０】
例えば、特定の処理、あるいは、条件分岐を通る全ての実行パスをテストケースとする場合には、以下のようにすればよい。まず、カバレッジ基準一覧表４１０に、上記のカバレッジ基準として、カバレッジ種別４１２に「実行パス」、カバレッジ生成処理名称４１３に「特定ステートメント網羅」とし、カバレッジ生成処理名称４１４、カバレッジ評価処理名称４１５に、テストケース生成、評価のための処理を追加する。
【００７１】
この場合、ステップ３０６の生成パラメータの設定処理において、ユーザ入力３１２より、生成するテストケース生成処理として「特定ステートメント網羅」を指定するとともに、処理の流れを表す仕様から、特定の処理、あるいは、条件を合わせて入力するようにすればよい。例えば、図６のフローチャートでは、ユーザ入力３１２によりステップ５００からステップ５１４のいずれかを入力するようにすればよい。
【００７２】
なお、図１１のテストケース欄８０６は、実行パスベースのカバレッジ基準の内、判断文網羅（ＤＣ）、及び、入出力ベースのカバレッジ基準のｎ条件組合せ網羅(ｎ−ｗｉｓ
ｅ)に基づき、テストケース生成を行った結果の一例を示している。図１１のテストケー
ス欄８０６に示したとおり、図１１に例示した生成テストケースでは、実行パスベース、入出力ベース、それぞれのテストケース生成結果から、ルール列１に記載のテストケースが重複しており、テスト実行時に本テストケースに関わるテスト実行の重複を防ぐことが可能となる。このように、実行パス及び条件／結果の各項目対応、及び、カバレッジに対応したテストケースの生成に際し、テストケース間の重複チェックを行うことが可能である。これにより、それぞれのカバレッジを満たすようにテストケースの生成した場合、重複したテストケースを生成することを防ぎ、効率的なテスト実行を実現することも可能である。
【００７３】
なお、上記の例では、条件／結果の各項目は、実際のプログラム上の変数ではなく、仕様設計時に利用される設計情報である。実施にソフトウェアのテストを行う場合には、条件／結果の各項目、及び、その項目値に、具体的な実装上の変数名、変数値等を割当てるようにすることで、上記テストケースと実際のテスト実行時の入出力変数との対応を取るようにすれば良い。
【００７４】
次に、第二の実施例について説明する。この第二の実施例では、図１４に記載した抽出ルール一覧１２００に基づき、図７、及び、図１６に示した条件結果項目抽出処理、及び、実行パス抽出処理に従い、条件結果項目の抽出（ステップ３０２）、及び、実行パスの抽出(ステップ３０４)を行う。
【００７５】
ここで図１２は、第二の実施例を説明するための処理の流れに関わる仕様の一例を示す図であり、ＵＭＬ図における状態遷移図（ステートチャート図）による仕様記述の一例である。図１２の状態遷移図１４０は、データの受信処理に関わるプログラムの遷移状態を示す図であり、開始９００、終了９０５、受信待ち９０１、データチェック９０２、メッセージ出力９０３、及び、それらの状態間の遷移を表す遷移条件から構成されている。
【００７６】
以下に条件結果項目抽出部１０７が図１２の状態遷移図１４０より条件結果項目抽出の処理を実行する手順について図７のフローにおける基づき説明する。なお、図７は、前述のとおり、テストケース生成装置１００の条件結果項目抽出部１０７により、図３のステップ３０２、条件結果項目の抽出処理で実行する処理である。
【００７７】
ここで条件結果項目抽出部１０７は、ステップ１３００にて処理を開始し、ステップ１３０１において、上述の状態遷移図１４０における記号要素に関し、図１４に例示する抽出ルール一覧表１２００のルール種別欄１２０４の値を確認し、抽出対象となる記号の種別が「条件」である場合には、ステップ１３０２へ、そうでなければ、ステップ１３０３に処理を進める。
【００７８】
なお、図１４における抽出ルール一覧表１２００は、抽出ルールを識別するための抽出ルール識別子（ＩＤ欄）１２０１、抽出ルールの名称を示す抽出ルール名称（名称欄）１２０２、抽出元となる表記を格納する表記欄１２０３、条件結果項目の抽出種別を表す抽出種別（種別欄）１２０４、条件結果項と項目値の抽出ルールを規定する抽出ルール１２０５、及び、ステップ３０５のルール作成時に用いる補足ルール１２０６から構成される。この補足ルール１２０６は、図１５に示す補足ルール一覧１２１０で規定されており、その構成は、補足ルールを識別するための補足ルール識別子（ＩＤ欄）１２１１、及び、補足ルールの名称を表す補足ルール名称（名称欄）１２１２、補足ルールに対応する表記を示す補足ルール表記（表記欄）１２１３、及び、補足ルールの抽出種別を示す補足ルール種別(種別欄)１２１４、補足ルールの内容を示す補足ルール（補足ルール欄）１２１５から構成される。なお、補足ルール欄１２１５には、補足ルールを適用する条件を記述する条件欄と追加するルールの内容を記載する追加ルール欄から構成される。
【００７９】
続いてステップ１３０２において条件結果項目抽出部１０７は、抽出対象となる「条件」記号内の表記、及び、抽出ルール一覧１２００の抽出ルール１２０５欄の値を参照し、抽出ルールの名称欄と一致する記述を条件項目として、値欄に一致する記述を抽出した条件項目の項目値として抽出する。この抽出後、条件結果項目抽出部１０７は処理をステップ１３０４に進める。
【００８０】
また、ステップ１３０３において条件結果項目抽出部１０７は、上述のステップ１３０３と同様に、記号内の表記、及び、抽出ルール１２０５を参照し、抽出ルールの名称欄と一致する記述を結果項目として、値欄に一致する記述を抽出した結果項目の項目値として抽出する。この抽出後、条件結果項目抽出部１０７は処理をステップ１３０４に進める。
【００８１】
次にステップ１３０４において条件結果項目抽出部１０７は、状態遷移図１４０すなわち仕様内の全ての記号に対し、処理が完了している場合（ステップ１３０４：ＹＥＳ）にはステップ１３０５へ進み処理を終了する。他方、そうでなければ（ステップ１３０４：ＮＯ）、条件結果項目抽出部１０７はステップ１３０１に処理を戻す。
【００８２】
このように処理により得られた条件結果項目一覧表９１０のうち、例えば、条件結果項目一覧表９１０内の６行目「受信待ち」は、状態遷移図１４０内の状態、受信待ち９０１から生成される。また、その項目値は、受信待ち状態に達するか（活性）、達しない(非
活性) が、抽出ルール一覧１２００の第一行目記載のルールに従い記載される。図１３に示すとおり、条件結果項目一覧表９１０は、第一の実施例に例示した条件結果項目一覧表６００と同様、条件項目、結果項目を識別するための項目識別子（ＩＤ欄）９１１、項目が、条件項目か結果項目かを示す項目種別（種別欄）９１２、条件、結果項目の名称を格納する項目名称（名称欄）９１３、各条件、結果項目が取りうる値の候補を記載する項目値（候補値欄）９１４、および、各条件結果項目の説明を記載する項目概要（概要欄）９１５から構成される。
【００８３】
なお、上述のように抽出された条件結果項目に、ユーザ指示に応じて修正及び規定値の設定を行うことも可能である。この処理は条件結果項目補正部１０３が実行する。上記の例では、例えば状態に対する項目値の規定値が非活性であることを、事前抽出ルールとして定めておき、条件結果項目抽出の際に、一部の規定値を自動で設定するようにしている。
【００８４】
続いて、実行パス抽出部１０８による実行パス抽出処理（図３：ステップ３０４）について図１６に基づき説明する。この場合、実行パス抽出部１０８は、ステップ１４０１にて処理を開始し、ステップ１４０２において、状態遷移図１７０における全ての記号を探索し、抽出ルール一覧１２００内の抽出ルール種別１２０４内の「開始」条件に合う、記号を抽出する。
【００８５】
続いて実行パス抽出部１０８は、ステップ１４０３において、状態遷移図１７０における全ての記号に対する探索が終了している場合（ステップ１４０３：ＹＥＳ）、処理をステップ１４０９へ、そうでなければ（ステップ１４０３：ＮＯ）、処理をステップ１４０４に進める。
【００８６】
次にステップ１４０４において実行パス抽出部１０８は、上述のステップ１４０２で抽出した記号に接続された、全ての記号の探索が終了した場合（ステップ１４０３：ＹＥＳ）、ステップ１４０８へ、そうでなければ（ステップ１４０４：ＮＯ）、処理をステップ１４０５へ進める。
【００８７】
ステップ１４０５において実行パス抽出部１０８は、上述の接続先の構成要素を抽出し
、ステップ１４０６において、抽出ルール一覧１２００内の抽出ルール種別１２０４内の「終了」の抽出ルールを抽出し、対象となる記号が終了条件に適合するかを検査する。ここで、終了条件に合う場合（ステップ１４０６：ＹＥＳ）、実行パス抽出部１０８は処理をステップ１４０８へ、合わない場合（ステップ１４０６：ＮＯ）、処理をステップ１４０７に進める。
【００８８】
またステップ１４０７において実行パス抽出部１０８は、抽出ルール一覧１２００内の抽出ルール種別１２０４内の条件、結果の何れかに合うかを検査し、条件、結果の条件に合う場合には、実行パスに対象記号を追加し、ステップ１４０４に進む。また、ステップ１４０８において実行パス抽出部１０８は、ステップ１４０５までで抽出された記号列から実行パスを構成し、ステップ１４０３に進む。
【００８９】
上述のフローは、開始条件に合う記号から処理を開始し、終了条件に合う各実行パスを抽出するため、接続先の記号を逐次探索する処理の実現方法の一例を示している。
【００９０】
なお、上述のステップ１４０７において、条件、結果のいずれの抽出ルールにも合わない記号の場合、実行パス抽出部１０８は、そこで処理を中止して、次の実行パスの探索に移るとしてもよい。これによって、実行パス内に、例えば、コメント記号などが記載されている場合でも、意図した実行パスのみを抽出することが可能となる。
【００９１】
図１７に、状態遷移図１７０に関する実行パス抽出処理によって生成された実行パスの一部（実行パス（１）１００１、実行パス（２）１００２、実行パス（３）１００３）を示す。
【００９２】
条件結果対応表生成部１１０は、以上のように得た実行パスからルールを作成することとなる。その流れを図１７における実行パス（１）１００１を例にして説明する。なお、実行パス（１）１００１は、図１２の状態遷移図１７０から、図１６の処理に従い、開始９００、受信待ち９０１、データチェック９０２、メッセージ出力９０３、終了９０５の順で状態遷移が行われた場合を表している。また、図１８のルール一覧表１０１０では、ルール識別子１０１１が１のルールに対応する。
【００９３】
まず条件結果対応表生成部１１０は、抽出ルール一覧１２００を参照し、実行パス（１）１００１内の記号それぞれに対し、抽出ルール一覧１２００内の表記欄１２０３内の記号と一致する行の抽出種別１２０４が"条件"である記号と、"結果"である記号とに分ける。
【００９４】
次に条件結果対応表生成部１１０は、抽出種別１２０４が"条件"である記号に対し、ルール（図１８参照）の左辺１０１３を構成する。例えば、"データ受信"は、抽出ルール一覧表１２００のルール識別子１２０１が２の表記と対応する。表記欄１２０３に従い、＄Ａ＝"データ受信"であり、＄Ｂ，＄ｂ，＄Ｃ，＄ｃには、対応する表記がない。そこで条件結果対応表生成部１１０は、対応する抽出ルール１２０５に従い、"データ受信"＝"発
生"をルールとして、左辺値に記載する（抽出ルール１２０５には、"、（カンマ）"を用
いて二つの値（活性、不活性）が記載されているが、ここでは値が特定できない場合には、最初の値を抽出する）。
【００９５】
次に条件結果対応表生成部１１０は、補足ルール１２０６を参照し、補足ルール欄に記載がある場合には、補足ルール一覧１２１０から、対応する補足ルールを抽出する。"デ
ータ受信"に対しては、補足ルール１２０６に、１が割り当てられているため、条件結果
対応表生成部１１０は、補足ルール一覧１２１０から対応する補足ルールを取得する。
【００９６】
また条件結果対応表生成部１１０は、補足ルール一覧１２１０より、補足ルール識別子１２１１が１の補足ルール内の表記欄１２１３と図１２の状態遷移図より、補足ルールに関連する記号を抽出する。ここでは、"データ受信"の遷移元である状態"受信待ち"９０１を参照し、そのイベント"タイムアウト"を抽出する。
【００９７】
次に条件結果対応表生成部１１０は、補足ルール欄１２１５内の条件より、"受信待ち"≠"タイムアウト"（＄Ａ１≠＄Ａ２）より、追加ルールとして、"タイムアウト＝発生⇒
タイムアウト＝無"、"タイムアウト＝無⇒タイムアウト＝発生"を生成する。ここで"⇒"
は、"⇒"より左に書かれた式がルール一覧表１０１０の左辺欄１０１３に、右側に書かれた式が右辺欄１０１４に記述されることを表す。
【００９８】
また条件結果対応表生成部１１０は、補足ルール一覧１２１０の種別欄１２１４より、追加される補足ルールは、ルール一覧表１２１０に記載する際、その種別欄１０１２に制約として追加する（制約条件としてルールを追加する。すなわち、ここで追加された条件に条件項目値の組み合わせが限定される）。なお、上記の処理によって追加されたルールは、ルール一覧表１０１０のルール識別子１０１１が５，６のルールに対応する。
【００９９】
同様に条件結果対応表生成部１１０は、イベント"チェック完了"についても上記と同様の処理を行うことで、右辺１０１３に名称欄"チェック完了"、値欄"発生"を追加すると同時に、補足ルール１２１５より、ルール識別子１０１１に７，８のルールを追加する。
【０１００】
次に条件結果対応表生成部１１０は、抽出ルール一覧１２００の抽出種別１２０４が"
結果"である記号に対し、上記と同様の処理を行い、右辺の構成を行う。ただし、右辺１
０１４については、条件結果項目一覧表９１０内を探索し、実行パスに含まれない結果項目がある場合には、規定値を割り当て、右辺を構成する。
【０１０１】
例えば、"リトライ回数"は、実行パス（１）１００１に含まれていない。この場合、条件結果対応表生成部１１０は、右辺１０１４に名称"リトライ回数"は、値 "０にリセット"を追加することで、全ての結果項目が右辺に含まれるようにする。
【０１０２】
なお、上記の処理は、条件結果対応表１１００を構成した際、結果が未定となる列が構成されることを防ぐためであり、必ずしも、実行パスに含まれない結果項目を右辺１０１４に追加する必要はない。また、上記の手順によって追加されたルールがすでに抽出済みの場合には、改めてルール一覧表１０１０に追加する必要はない。
【０１０３】
図１８に実行パスをルール変換したルール一覧表１０１０を示す。ルール一覧表１０１０は、抽出した実行パスをルールに変換した結果である。ルール一覧表１０１０は、第一の実施例と同様に、ルールを識別するためのＩＤを記載したルール識別子（＃欄）１０１１と、ルールの種別を表すルール種別(種別欄)１０１２、および、ルールの内容を記載するための左辺欄１０１３と右辺欄１０１４から構成される。このうち左辺欄１０１３、右辺欄１０１４はそれぞれ、条件／結果の項目と対応する項目値とを格納する名称と値欄から構成される。
【０１０４】
なお、図１４の抽出ルール一覧表１２００、及び、図１５の補足ルール一覧１２１０の構成は図示した例の構成と同一でなくてもよい。例えば、上述の例では、抽出ルール１２０５に、複数の値候補が記載されており、値が判別できない場合には、最初の候補値を割り当てていることとしたが、抽出ルール内に候補値の内、値として割り当てる項目を明示的に指定して記載してもよい。また、表記欄１２０３、１２１３には、記号をそのまま用いるのではなく、記号、及び、条件、結果項目を抽出するための識別子や、記述された名称、候補値を抽出するための、他の表記方法を用いてもよい。
【０１０５】
続いて、条件結果対応表生成部１１０による、ルール一覧表１０１０を用いた条件結果対応表１１００の生成処理について説明する。この場合、条件結果対応表生成部１１０は、ルール一覧表１０１０における全ての条件項目の組合せ中から、ルール種別１０１２がルールの右辺の条件を満たすものに対し、対応する結果項目値を特定することで生成する。この生成手法は第一の実施例の場合と同様である。また、このときルール種別１０１２が、「制約」となるルールが存在する場合には、その条件項目の組合せのみに制約される（とりうる値が、制約として与えられたルールに限定される）ことを示している。そのため、ルール一覧表１０１０内に、制約ルールが存在する場合には、該当する条件項目の組合せのみをルールとして残すようにすれば良い。図１９に示す条件結果対応表１１００において、実行パス行１１０５に番号の記載のないルールは、ルール一覧表１０１０の制約によって、条件組合せが存在しないことを示している。以上の処理によって、図１２の状態遷移図１７０から条件結果項目対応表１１００が生成される。
【０１０６】
第一の実施例と同様に生成パラメータの設定（ステップ３０６）、及び、テストケース生成（ステップ３０７）を実行することで、テストケースを得ることができる。図１９のテストケース行１１０６には、図４に示したカバレッジ基準一覧表４１０の内、判断文網羅（ＤＣ）とｎ−ｗｉｓｅ（ｎ＝２）の場合のテストケースを示している。なお、判断文網羅（ＤＣ）は、状態遷移図１７０上の全ての状態に対し、各遷移を少なくとも一回通るパスをテストケースとして選択する場合を示しており、ｎ−ｗｉｓｅは、条件項目として抽出した項目値のｎ項目の組合せ全てをテストケースとしてもいる場合をカバレッジとしている。
【０１０７】
以上、処理の流れに関わる仕様からのテストケース生成処理の流れについて示した。第二の実施例では、状態遷移図１７０を例として説明を行ったが、フローチャート用の抽出ルール一覧表を用意することで、第一の実施例に記載したフローチャートに関しても同様の手順で処理を行うことが可能である。
【０１０８】
なお、上述の各実施例では、テストケース生成に伴って処理の流れに関わる仕様として状態遷移図やフローチャートを例としてあげたが、例えば、ＵＭＬにおけるシーケンス図や、業務フローを表すためのＢＰＥＬ（Ｂｕｓｉｎｅｓｓ  Ｐｒｏｃｅｓｓ  Ｅｘｅｃｕｔｉｏｎ  Ｌａｎｇｕａｇｅ）等についても、個別に抽出ルール一覧表を定めておくことで、同様にテストケースを得ることができる。また、図形式の処理の流れを表す仕様だけでなく、Ｃ言語やＪＡＶＡ言語などのプログラム言語などでも、同様に抽出ルール一覧を定めておくことでテストケース生成を行うことができる。
【０１０９】
また、上述の各実施例は、例えば業務システムや金融システムの他、発電所や列車の運行管理等の制御・監視システム、或いは、組込みシステムなど、システム開発におけるシステム、ソフトウェアの動作、或いは、ユーザの操作手順を表すユースケースシナリオなど、特定のシステム開発や開発工程によらず利用可能である。
【０１１０】
以上、本発明を実施するための最良の形態などについて具体的に説明したが、本発明はこれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【０１１１】
こうした本実施形態によれば、処理の流れに関わるソフトウェア仕様から、実行パスベース及び入出力ベース双方を考慮した適宜なカバレッジを満たすテストケースを効率的に生成可能となる。
【０１１２】
本明細書の記載により、少なくとも次のことが明らかにされる。すなわち、本実施形態におけるテストケース生成装置において、前記記憶装置は、前記流れに関わる仕様情報の
うち、前記条件項目及び前記結果項目の各表記を特定し、前記各表記から前記条件項目及び前記結果項目とその項目値とを抽出する抽出ルールと、前記実行パスにおける開始条件及び終了条件と、を含む抽出ルール情報を格納し、前記演算装置は、前記条件結果項目抽出処理において、前記抽出ルール情報における前記抽出ルールにより、前記条件項目、前記結果項目、及び、前記条件項目及び前記結果項目の各項目値を抽出し、前記条件結果項目として記憶装置に格納し、前記実行パス抽出処理において、前記流れの仕様情報と前記抽出ルール情報が示す前記開始条件とに基づき、前記流れの中での開始点特定に応じて実行パス抽出を開始し、前記流れの中での前記終了条件に応じて特定した終了点までをひとつの実行パスとして抽出する、ものであるとしてもよい。
【０１１３】
これによれば、例えばＵＭＬ図において状態遷移図で記述された仕様に柔軟に対応し、本実施形態のテストケース生成を効率良く行うことが可能となる。
【０１１４】
また、上述のテストケース生成装置において、前記記憶装置は、前記抽出ルール情報として、前記流れの中で関係する前記条件項目及び前記結果項目の間の組み合わせの制約条件を規定した補足ルールを更に格納し、前記演算装置は、前記条件結果項目抽出処理において、前記抽出ルール情報における前記抽出ルールおよび前記補足ルールにより、前記条件項目、前記結果項目、及び、前記条件項目及び前記結果項目の各項目値を、前記補足ルールの規定を満たす制限下で抽出し、前記条件結果項目として記憶装置に格納する、ものであるとしてもよい。
【０１１５】
これによれば、所定の処理に伴うイベントのうち排他的に発生するものの関係を踏まえた上で条件結果項目の抽出を行えることとなり、ひいては、生成するテストケースの精度を良好なものとできる。
【０１１６】
また、上述のテストケース生成装置において、前記記憶装置は、前記カバレッジ基準の情報として、生成するテストケースが実行パスベースのカバレッジを評価するものか、入出力ベースのカバレッジを評価するものかを示すカバレッジ種別を更に格納しており、前記演算装置は、前記テストケース生成処理において、前記カバレッジ基準の情報が示すカバレッジ種別に応じて前記テストケースの生成を実行するものである、としてもよい。
【０１１７】
これによれば、例えばユーザが指定するカバレッジ種別に応じて、該当カバレッジを満たすテストケースの効率的な生成が可能となる。
【０１１８】
また、上述のテストケース生成装置において、前記演算装置は、前記条件結果項目抽出処理において、前記抽出した条件結果項目を表示装置に表示し、前記条件結果項目に関する修正指示を入力装置から受け付けて、前記条件結果項目の修正処理を行う条件結果項目処理を更に実行するものである、としてもよい。
【０１１９】
これによれば、ユーザの知見や顧客要求等に応じた内容に条件結果項目を修正可能となり、より柔軟でニーズにマッチした上で、効率的なテストケース生成が可能となる。
【０１２０】
また、上述のテストケース生成装置において、前記演算装置は、前記条件結果項目補正処理において、入力装置で受け付ける修正指示として、前記流れの中で関係する前記条件項目及び前記結果項目の間の組み合わせの制約条件を規定した補足ルールを受け付けるものである、としてもよい。
【０１２１】
これによれば、ユーザの知見に応じ、所定の処理に伴うイベントのうち排他的に発生するものの関係を踏まえた上で条件結果項目の抽出を行えることとなり、ひいては、生成するテストケースの精度を良好なものとできる。
【符号の説明】
【０１２２】
１００  テストケース生成装置
１０１  記述形式検証部
１０２  仕様入力部
１０３  条件結果項目補正部
１０４  テスト仕様生成部
１０５  テスト仕様登録部
１０７  条件結果項目抽出部
１０８  実行パス抽出部
１０９  テストケース生成部
１１０  条件結果項目生成部
１１１  仕様記憶部
１１２  条件結果項目記憶部
１１３  実行パス記憶部
１１４  テストケース記憶部
１１５  カバレッジ基準記憶部
１１６  条件結果対応表記億部
１１７  抽出ルール一覧記憶部
２０１  ＣＰＵ（演算装置）
２０２  ＲＡＭ
２０３  外部記憶装置（記憶装置）
２０４  インターフェイス
２０５  表示装置
２０６  入力装置
２１０  プログラム
【図１】
2015204065.tif 000003
【図２】
2015204065.tif 000004
【図３】
2015204065.tif 000005
【図４】
2015204065.tif 000006
【図５】
2015204065.tif 000007
【図６】
2015204065.tif 000008
【図７】
2015204065.tif 000009
【図８】
2015204065.tif 000010
【図９】
2015204065.tif 000011
【図１０】
2015204065.tif 000012
【図１１】
2015204065.tif 000013
【図１２】
2015204065.tif 000014
【図１３】
2015204065.tif 000015
【図１４】
2015204065.tif 000016
【図１５】
2015204065.tif 000017
【図１６】
2015204065.tif 000018
【図１７】
2015204065.tif 000019
【図１８】
2015204065.tif 000020
【図１９】
2015204065.tif 000021