(57)【特許請求の範囲】
【請求項１】
ソースコードから処理の流れをグラフ形式で表示した制御フローグラフを生成する制御フローグラフ生成部を具備する解析部と、
前記制御フローグラフ、及びソフトウェア構造にかかる第１カバレッジ基準に基づき、前記ソースコード内の実行パスを含む制御パスセットを生成する制御パスセット生成部と、
前記制御フローグラフに前記制御パスセットに含まれる全ての前記実行パスを重畳的に記載した表示画面を生成するテストケース作成方法指示部と、を備え、
前記制御パスセットは、前記第１カバレッジ基準を満たす前記実行パスから構成される、テスト支援システム。
【請求項２】
ソースコードから処理の流れをグラフ形式で表示した制御フローグラフを生成する制御フローグラフ生成部を具備する解析部と、
前記制御フローグラフ、及びソフトウェア構造にかかる第１カバレッジ基準に基づき、前記ソースコード内の実行パスを含む制御パスセットを生成する制御パスセット生成部と、
前記ソースコードに前記制御パスセットに含まれる全ての前記実行パスを重畳的に記載した表示画面を生成するテストケース作成方法指示部と、を備え、
前記制御パスセットは、前記第１カバレッジ基準を満たす前記実行パスから構成される、テスト支援システム。
【請求項３】
ソースコードから処理の流れをグラフ形式で表示した制御フローグラフを生成し、
前記制御フローグラフに基づき、ソフトウェア構造にかかる第１カバレッジ基準を満たす前記ソースコード内の実行パスを含む制御パスセットを生成し、
前記制御フローグラフに前記制御パスセットに含まれる全ての前記実行パスを重畳的に記載した表示画面を生成する、テスト支援方法。
【請求項４】
ソースコードから処理の流れをグラフ形式で表示した制御フローグラフを生成し、
前記制御フローグラフに基づき、ソフトウェア構造にかかる第１カバレッジ基準を満たす前記ソースコード内の実行パスを含む制御パスセットを生成し、
前記ソースコードに前記制御パスセットに含まれる全ての前記実行パスを重畳的に記載した表示画面を生成する、テスト支援方法。
【請求項５】
コンピュータに、
ソースコードから処理の流れをグラフ形式で表示した制御フローグラフを生成する処理と、
前記制御フローグラフに基づき、ソフトウェア構造にかかる第１カバレッジ基準を満たす前記ソースコード内の実行パスを含む制御パスセットを生成する処理と、
前記制御フローグラフに前記制御パスセットに含まれる全ての前記実行パスを重畳的に記載した表示画面を生成する処理と、を実行させるためのプログラム。
【請求項６】
コンピュータに、
ソースコードから処理の流れをグラフ形式で表示した制御フローグラフを生成する処理と、
前記制御フローグラフに基づき、ソフトウェア構造にかかる第１カバレッジ基準を満たす前記ソースコード内の実行パスを含む制御パスセットを生成する処理と、
前記ソースコードに前記制御パスセットに含まれる全ての前記実行パスを重畳的に記載した表示画面を生成する処理と、を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テスト支援システム、テスト支援方法、及びプログラムに関する。
【背景技術】
【０００２】
ソフトウェア開発において、テスト（試験）は品質を確保する上で重要である。テストとは、要件（仕様）を基に作成したソフトウェア（ソースコード、コンパイルされた中間コード、オブジェクトコード）が要件（仕様）を満たしているか否かを検証するプロセスである。つまり、テストは、作成したソフトウェアが要件を満たすか否かを判定し、要件を満たさない場合にその原因となる欠陥を発見することを目的とする。テストは、要件を基にしていることから要件ベーステストとも呼ばれる。
【０００３】
一般的なソフトウェアテストの作成業務のフローを図１５に示す。図１５に示すように、通常のソフトウェアテストの作成では、要件カバレッジ分析（Ｓ３３）、及び構造カバレッジ分析（Ｓ３６）という作業が行われる。以下に、要件カバレッジ分析（Ｓ３３）、及び構造カバレッジ分析（Ｓ３６）について説明する。
【０００４】
要件カバレッジ分析は、作成したテストが要件（仕様）を網羅しているか否かを確認する工程である。テストが要件をどれだけ網羅しているかという網羅度を要件カバレッジという。要件カバレッジ分析の目的は、作成したテストの実行により、要件に定義されている項目がソフトウェアにより実装されているかを確認することである。例えば、要件に１０００の機能が定義されている場合、要件カバレッジ分析において各機能が実装されていることを検証する。
【０００５】
要件カバレッジ分析の結果を分析し（Ｓ３４）、要件に対してテストが不足している場合（Ｓ３４：Ｎｏ）、テスト設計者は不足テストの追加を行い（Ｓ３５）、再度の要件カバレッジ分析（Ｓ３４）を実行する。
【０００６】
要件カバレッジ分析に必要な項目を含むテストは、要件（仕様）がソフトウェアにもれなく実装されていることを検証できる。しかし、ソフトウェア内に余分な処理が実装されていた場合（例えば実装上の誤り、要件の誤解に起因する不要なコードが混入されていた場合）、要件カバレッジ分析に必要な項目のみを含むテストでは、このような問題を検出することはできない。そのため、以下に説明する構造カバレッジ分析も行う必要がある。
【０００７】
構造カバレッジ分析とは、作成したテストがソフトウェア（ソースコード、コンパイルされた中間コード、オブジェクトコード）の構造をどれだけ網羅しているかを確認する工程である。ソフトウェアの構造とは、行、条件文、分岐、実行経路等のソフトウェアの論理構造を構成する要素である。作成したテストがソフトウェアの構造をどれだけ網羅しているかを示す網羅度を構造カバレッジと呼称する。
【０００８】
ソフトウェア構造カバレッジの基準は、構造をどのような観点から定義するかに応じて定まる。例えば、ソースコード行のみをソフトウェアの構造と捉えた場合、作成したテストにより実行されるコード行を全コード行で除算した結果が構造カバレッジとなる。さらに、条件や分岐を考慮してソフトウェアの構造を捉えても良い。ソフトウェア構造カバレッジの基準は、開発現場における品質に対する考え方、テスト対象のソフトウェアが使用される分野、業界標準に応じて適宜定められる。
【０００９】
テストがソフトウェア構造カバレッジの基準を全て満たしている場合（１００％）、テストによりソフトウェア構造カバレッジの基準に準拠した構造が全て実行される。ここで、ソフトウェア構造カバレッジが１００％にできるようなテストケース数は、採用するソフトウェア構造カバレッジの基準により異なり、場合によっては現実的にテスト実行できないほど多数になる。そのため、実際のテスト実行時には、テスト設計者はカバレッジ（網羅率）とテスト実行にかかるコストとの兼ね合いからテストケース数を決定する。
【００１０】
ソフトウェア構造カバレッジ分析において、作成したテスト（要件カバレッジ分析の満足するテスト）では実行されないコードの構造が存在することが明らかになった場合、テスト実行者は意図していない構造、すなわちコードが混入されたと判断できる。これにより、テスト実行者は、バグを発見できる。
【００１１】
ソフトウェア構造カバレッジ分析を実施する目的は、コードが意図した実装となっているかを検証するためのテストが正確に設計されているかを確認することである。ソフトウェア構造カバレッジ分析の分析結果に応じて、テスト設計者は適宜テストを是正（修正等）する。
【００１２】
上述のように、ソフトウェア要件カバレッジ分析の要件を満たすのみのテストを実行しただけでは、意図しないコードが混入した場合に当該コードを検出することができない。そのため、ソフトウェア要件カバレッジ分析の後にソフトウェア構造カバレッジ分析により是正されたテストを用いる必要がある。
【００１３】
ソフトウェア構造カバレッジ分析の一般的な手法を以下に述べる。はじめに、要件カバレッジ分析が終了したテストを一通り実行し、実行結果をカバレッジ測定ツールで確認する。テストに含まれる項目が不足していることが判明した場合、テスト設計者はテスト項目を追加する。特許文献１には当該手法の一態様が開示されている。
【００１４】
特許文献２には、ＳＡＴ手法（充足可能性判定手法）を応用してゴールデン（仕様Ｓ（あるシステムを実現するための要求条件）を完全に満たす実装）を解析することにより、動作要件を満たすテスト制約を自動抽出する技術が開示されている。ゴールデンは、リファレンスプログラムとして動作する。このゴールデンを算出する方法は、形式手法記述により記述する等の必要があり、対応には多大な工数を要する。なお、特許文献２には、リファレンスプログラムを用いずにテスト制約を生成することに関する示唆、教示はない。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開平５−３２４４０２号公報
【特許文献２】特開２０１０−２３８０５７号公報
【非特許文献】
【００１６】
【非特許文献１】NASA/TM-2001-210876: "A Practical Tutorial on Modified Condition/Decision Coverage"、 [平成23年3月31日検索]、インターネット＜URL：http://shemesh.larc.nasa.gov/fm/papers/Hayhurst-2001-tm210876-MCDC.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【００１７】
一般にソフトウェア構造カバレッジ分析において、作成したテストがソフトウェア構造をどれだけ網羅しているかを確認することは手間のかかる作業である。また、分析結果に応じてテストを修正する作業にも手間がかかる。
【００１８】
特にソフトウェア構造カバレッジ分析における基準として変更条件判定カバレッジ（MC/DC、Modified Condition Decision Coverage）を採用した場合、判定内の複数の条件のうちのひとつの条件だけが変更された場合に判定結果が反転するような条件の組み合わせを求めることは、困難である。すなわち、変更条件判定カバレッジを採用した場合、作成したテストがソフトウェア構造をどれだけ網羅しているかを確認することは非常に困難である。
【００１９】
さらに、変更条件判定カバレッジ（MC/DC）を満たすように、テストのテストケースを修正、追加、削除等を行って調節することは非常に困難である。上述の方法では、テストが変更条件判定カバレッジにおける網羅率を求めることはできる。しかし上述の方法では、網羅率が低かった場合にどのようなテストケースが不足しているか、どのテストケースをどのように変更すればよいか、最小限のテストケース数にするにはどのように変更すればよいか、を認識できないためである。
【００２０】
非特許文献１には、テストが変更条件判定カバレッジを満たしているか否かを判定する方法が記載されている。しかし、テストが変更条件判定カバレッジを満たしていない場合のテストの修正方法についての教示、示唆が無い。
【００２１】
すなわち、リファレンスプログラムを持たない環境下において、ソフトウェア構造カバレッジ分析を満たすテストを生成する工数が非常に大きいという問題があった。
【００２２】
本発明は、上記の事情を鑑みてなされたものであり、ソフトウェア構造カバレッジ分析の要件を満たすテストを容易に生成することができるテスト支援システム、テスト支援方法、及びプログラムを提供することを主たる目的とする。
【課題を解決するための手段】
【００２３】
本発明にかかるテスト支援システムの一態様は、
ソースコードから処理の流れをグラフ形式で表示した制御フローグラフを生成する制御フローグラフ生成部を具備する解析部と、
前記制御フローグラフ、及びソフトウェア構造にかかる第１カバレッジ基準に基づき、前記ソースコード内の実行パスを含む制御パスセットを生成する制御パスセット生成部と、を備え、
前記制御パスセットは、前記第１カバレッジ基準を満たす前記実行パスから構成される、ものである。
【００２４】
本発明にかかるテスト支援方法の一態様は、
ソースコードから処理の流れをグラフ形式で表示した制御フローグラフを生成し、
前記制御フローグラフに基づき、ソフトウェア構造にかかる第１カバレッジ基準を満たす前記ソースコード内の実行パスを含む制御パスセットを生成する、ものである。
【００２５】
本発明にかかるプログラムの一態様は、
コンピュータに、
ソースコードから処理の流れをグラフ形式で表示した制御フローグラフを生成する処理と、
前記制御フローグラフに基づき、ソフトウェア構造にかかる第１カバレッジ基準を満たす前記ソースコード内の実行パスを含む制御パスセットを生成する処理と、を実行させるためのものである。
【発明の効果】
【００２６】
本発明によれば、ソフトウェア構造カバレッジ分析の要件を満たすテストを容易に生成することができるテスト支援システム、テスト支援方法、及びプログラムを提供することができる。
【図面の簡単な説明】
【００２７】
【図１】実施の形態１にかかるテスト支援システム１の構成を示すブロック図である。
【図２】実施の形態１にかかるテスト支援システム１が処理対象とするソースコードを示す図である。
【図３】実施の形態１にかかる制御フローグラフ生成部１２が生成した制御フローグラフを示す図である。
【図４】実施の形態１にかかる制御フローグラフ生成部１２が生成した制御フローグラフを示す図である。
【図５】実施の形態１にかかる真理値表生成部１３が生成した真理値表を示す図である。
【図６】実施の形態１にかかるテストケース作成方法指示部１６が生成した制御フローグラフの表示画面を示す図である。
【図７】実施の形態１にかかるテストケース作成方法指示部１６が生成した真理値表の表示画面を示す図である。
【図８】実施の形態１にかかるテストケース作成方法指示部１６が生成したソースコードの表示画面を示す図である。
【図９】実施の形態１にかかるテストケース作成方法指示部１６が生成した制御フローグラフの表示画面を示す図である。
【図１０】実施の形態１にかかるテストケース作成方法指示部１６が生成した真理値表の表示画面を示す図である。
【図１１】実施の形態１にかかるテストケース作成方法指示部１６が生成したソースコードの表示画面を示す図である。
【図１２】実施の形態１にかかるテスト支援システム１を利用したソフトウェアテスト作成業務の概要を示すフローチャートである。
【図１３】実施の形態１にかかるテスト支援システム１の動作を示すフローチャートである。
【図１４】実施の形態１にかかるテスト支援システム１の構成を示すブロック図である。
【図１５】一般的なソフトウェアテスト作成業務の概要を示すフローチャートである。
【発明を実施するための形態】
【００２８】
＜実施の形態１＞
以下、図面を参照して本発明の実施の形態について説明する。図１は、本実施の形態にかかるテスト支援装置の構成を示すブロック図である。テスト支援システム１は、ソースコード情報入力部１１と、制御フローグラフ生成部１２と、真理値表生成部１３と、カバレッジ基準入力部１４と、制御パスセット生成部１５と、テストケース作成方法指示部１６と、を備える。
【００２９】
テスト支援システム１は、一般に、汎用的なコンピュータ上でプログラム制御により動作する。なお、テスト支援システム１に含まれる各処理部は、ネットワーク等により接続された複数のコンピュータ上に分散されて配置されても良い。
【００３０】
テスト設計者は、テストの対象となるソースコードをシステムに指定する。ソースコード情報入力部１１は、テスト設計者から指定されたソースコードをファイルシステム等から読み込む。図２は、ソースコード情報入力部１１が読み込むソースコードの一例を示す図である。以下、図２に示すソースコードを用いて適宜説明する。ソースコード情報入力部１１は、読み込んだソースコードを制御フローグラフ生成部１２及びテストケース作成方法指示部１６に供給する。
【００３１】
制御フローグラフ生成部１２は、供給されたソースコードから制御フローグラフを生成する処理部である。図３は、制御フローグラフ生成部１２が図２に示すソースコードから生成した制御フローグラフを示す図である。図示するように、当該ソースコードは、２つの分岐と、７つの処理命令と、から構成される。なお、図３では、分岐を「ｗ＆＆ｘ」のように複数の条件文から構成されるように記載したが必ずしもこれに限られず、図４に示すように条件文毎に処理が分岐するように記載をしても良い。制御フローグラフ生成部１２は、生成した制御フローグラフを真理値表生成部１３、制御パスセット生成部１５、及びテストケース作成方法指示部１６に供給する。
【００３２】
真理値表生成部１３は、供給された制御フローグラフから各分岐の真理値表を生成する処理部である。真理値表生成部１３は、制御フローグラフに含まれる分岐文を抽出し、抽出した分岐文に含まれる条件文を抽出し、抽出した情報から真理値表を生成する。図５は、真理値表生成部１３が生成した図２に示すソースコードに関する真理値表を示す図である。図示するように、真理値表には、各条件の真（１）または偽（０）の条件、及び各分岐文の真（１）または偽（０）が記載される。真理値表生成部１３は、生成した真理値表を制御パスセット生成部１５及びテストケース作成方法指示部１６に供給する。
【００３３】
カバレッジ基準入力部１４は、ユーザから指定されるソフトウェア構造カバレッジのカバレッジ基準が入力される処理部である。カバレッジ基準入力部１４は、入力されたカバレッジ基準を制御パスセット生成部１５に供給する。
【００３４】
ここで、カバレッジ基準とは、ソフトウェア構造をどのような観点から定義するかに応じて自由に定めれば良い。例えば、ソースコード行のみをソフトウェアの構造と捉えた場合、全ソースコード行に対する実行行数の割合をカバレッジ基準として指定しても良い。また、分岐命令を除くステップの実行割合や、全分岐数に対する実行分岐数をカバレッジ基準として指定しても良い。カバレッジ基準の一例として、「全命令ステップ（分岐処理を除くステップ）の１００％を実行すること（命令網羅）」、「条件分岐の１００％を実行すること（分岐網羅）」等が挙げられる。
【００３５】
制御パスセット生成部１５は、供給された制御フローグラフ、真理値表、及びカバレッジ基準から制御パスセットを生成する処理部である。制御パスセットとは、カバレッジ基準を満たし得る制御パスの集合である。制御パス（実行パスとも記載する）とは、プログラムの実行経路を示す。制御パスセット生成部１５は、制御フローグラフから全ての制御パスを抽出する。
【００３６】
図３の制御フローグラフは、以下の４つの制御パスを含んでいる。
パス１：１（ｗ＆＆ｘ＝＝１）２３（ｙ＆＆ｚ＝＝１）４６７
パス２：１（ｗ＆＆ｘ＝＝１）２３（ｙ＆＆ｚ＝＝０）５６７
パス３：１（ｗ＆＆ｘ＝＝０）３（ｙ＆＆ｚ＝＝１）４６７
パス４：１（ｗ＆＆ｘ＝＝０）３（ｙ＆＆ｚ＝＝０）５６７
ここで、上記パスの表記において、「１」〜「７」の表記は、処理名を表す。
【００３７】
以下、カバレッジ基準として「全命令ステップ（分岐処理を除くステップ）の１００％を実行すること」が指定された場合の制御パスセット生成部１５の動作について説明する。制御パスセット生成部１５は、前述のように、制御フローグラフから全ての制御パスを抽出する。制御パスセット生成部１５は、制御フローグラフ（図３）から全命令ステップをカウントし、全命令が７命令から構成されていると判定する。制御パスセット生成部１５は、例えば以下のパス１を選択すると６つの命令を実行できると判定する。パスの選択は、例えばより命令網羅の対象となっていない命令を多く実行するパスを優先して選択すればよい。
パス１：１（ｗ＆＆ｘ＝＝１）２３（ｙ＆＆ｚ＝＝１）４６７
【００３８】
制御パスセット生成部１５は、上記のパス１の実行により約８６％（６／７）の命令が実行されると判定する。制御パスセット生成部１５は、上記のパス１のみではカバレッジ基準を満たさないと判定し、以下のパス２を選択する。この際、例えば制御パスセット生成部１５は、パス１に含まれない処理５を含むパスを選択する。このように、命令網羅の対象となっていない命令がより多く含まれるパス（他のパスの選択時と比べて相対的に網羅率が高くなるパス）を優先して選択する。
パス２：１（ｗ＆＆ｘ＝＝１）２３（ｙ＆＆ｚ＝＝０）５６７
【００３９】
制御パスセット生成部１５は、上記のパス１及びパス２の実行により１００％（７／７）の命令が実行されると判定する。制御パスセット生成部１５は、パス１及びパス２の実行によりカバレッジ基準を満たすと判定し、制御パスセットを上述パス１、パス２から構成する。
【００４０】
なお、制御パスセット生成部１５は、最小数の制御パスからなる制御パスセットの候補を複数算出しても良い。例えば、制御パスセット生成部１５は、制御パスセットを（パス１、パス２）または（パス１、パス４）のいずれかとしてもよい。
【００４１】
制御パスセット生成部１５は、制御パスセットをテストケース作成方法指示部１６に供給する。
【００４２】
テストケース作成方法指示部１６には、ソースコード、制御フローグラフ、真理値表、及び制御パスセットが供給される。テストケース作成方法指示部１６は、ソースコード、制御フローグラフ、真理値表の少なくとも１つに対して、制御パスセットの情報を重畳した表示画面を生成する。
【００４３】
はじめに、制御フローグラフに対して制御パスセットの情報を重畳した表示画面について説明する。テストケース作成方法指示部１６は、入力された制御パスセットの各制御パスを制御フローグラム上に重畳した表示画面を表示部等に出力する。図６は、図３に示す制御フローグラフに制御パスセット（パス１、パス２）を重畳した表示画面を示す図である。図示するように、制御フローグラフ上に各制御パスが認識できるように重畳されている。
【００４４】
続いて、真理値表に対して制御パスセットの情報を重畳した表示画面について説明する。図７は、図５に示す真理値表に対して制御パスセット（パス１、パス２）の情報を反映した表示画面を示す図である。テストケース作成方法指示部１６は、入力された制御パスセットの各制御パスから、テスト時に実行されるべき判定処理を算出する。上述の例では、パス１及びパス２が実行される。パス１には、（ｗ＆＆ｘ＝＝１）及び（ｙ＆＆ｚ＝＝１）が含まれる。パス２には、（ｗ＆＆ｘ＝＝１）及び（ｙ＆＆ｚ＝＝０）が含まれる。テストケース作成方法指示部１６は、この判定処理（上述の例では、（ｗ＆＆ｘ＝＝１）、（ｙ＆＆ｚ＝＝１）、（ｙ＆＆ｚ＝＝０））を全て抽出する。そして、テストケース作成方法指示部１６は、真理値表から、抽出した判定文に対応する項目行を識別できるように印をつける。
【００４５】
図７では、（ｗ＆＆ｘ＝＝１）の判定文から、テストケース作成方法指示部１６は、行番号１を必ず実行されるべき判定処理とする印（○）をつける。同様に、（ｙ＆＆ｚ＝＝１）の判定文から、テストケース作成方法指示部１６は、行番号５を必ず実行されるべき判定処理とする印（○）をつける。図７では、（ｗ＆＆ｘ＝＝０）の判定文から、テストケース作成方法指示部１６は、行番号２〜４のいずれかが実行されるべき判定処理とする印（△１）をつける。
【００４６】
次に、ソースコードに対して制御パスセットの情報を重畳した表示画面を説明する。テストケース作成方法指示部１６は、入力された制御パスセットの各制御パスと、ソースコードと、を関連付けて重畳表示する。図８は、ソースコードに制御パス（パス１、パス２）を重畳した表示画面を示す図である。図示するように、パス１及びパス２がソースコードと関連付けられて表示される。
【００４７】
さらに、他のカバレッジ基準を用いて、テスト支援システム１の動作について説明する。以下では、カバレッジ基準として、「分岐の全てが実行されたこと（分岐網羅）」が与えられた場合について説明する。テスト対象となるソースコードは、図２に示すものである。また、ソースコード情報入力部１１、制御フローグラフ生成部１２、真理値表生成部１３、及びカバレッジ基準入力部１４の動作は、前述の説明のとおりである。
【００４８】
制御パスセット生成部１５は、制御フローグラフ（図３）から全ての判定処理（ｗ＆＆ｘ及びｙ＆＆ｚ）を抽出する。制御パスセット生成部１５は、例えば、一番多くの判定処理を実行する以下のパス１を選択する。
パス１：１（ｗ＆＆ｘ＝＝１）２３（ｙ＆＆ｚ＝＝１）４６７
【００４９】
制御パスセット生成部１５は、続いてパス１と判定処理の出力が異なるパス４を抽出する。
パス４：１（ｗ＆＆ｘ＝＝０）３（ｙ＆＆ｚ＝＝０）５６７
【００５０】
制御パスセット生成部１５は、全ての分岐処理の真偽（１、０）が実行されているか否かを判定する。そして上述の例では、制御パスセット生成部１５は、パス１及びパス４の実行により「分岐の全てが実行された」と判定する。そして、制御パスセット生成部１５は、制御パスセットをパス１及びパス４から構成する。このように、制御パスセット生成部１５は、分岐網羅率が相対的に高くなる順序で制御パスを選択していく。
【００５１】
テストケース作成方法指示部１６は、ソースコード、制御フローグラフ、真理値表の少なくとも１つに対して、制御パスセット（パス１、パス４）の情報を重畳した表示画面を生成する。図９は、図３に示す制御フローグラフに制御パスセット（パス１、パス４）を重畳した表示画面を示す図である。図１０は、図５に示す真理値表に対して制御パスセット（パス１、パス４）の情報を反映した表示画面を示す図である。図１１は、ソースコードに制御パス（パス１、パス４）を重畳した表示画面を示す図である。
【００５２】
続いて、本実施の形態にかかるテスト支援システム１を使用したソフトウェアテスト作成業務の概要について説明する。図１２は、ソフトウェアテスト作成業務の概要を示すフローチャートである。
【００５３】
はじめに、プログラマ等がテストの実行対象となるソースコードを作成する（Ｓ１１）。続いて、テスト設計者が、上述のテスト支援システム１を用いた処理を実行する（Ｓ１２）。この処理の詳細を図１３を参照して説明する。
【００５４】
はじめに、テスト設計者は、ソースコードをソースコード情報入力部１１に対して入力する（Ｓ２１）。さらに、テスト設計者は、カバレッジ基準をカバレッジ基準入力部１４に対して入力する（Ｓ２２）。
【００５５】
制御フローグラフ生成部１２は、入力されたソースコードから制御フローグラフを生成する（Ｓ２３）。真理値表生成部１３は、生成された制御フローグラフから真理値表を生成する（Ｓ２４）。制御パスセット生成部１５は、制御フローグラフ、真理値表、及びカバレッジ基準から制御パスセットを生成する（Ｓ２５）。テストケース作成方法指示部１６は、ソースコード、制御フローグラフ、真理値表の少なくとも１つに対して、制御パスセットの情報を重畳した表示画面を生成する（Ｓ２６）。
【００５６】
図１２の説明に戻る。テスト設計者は、テストケース作成方法指示部１６により生成された表示画面を参照することにより、ソフトウェア構造分析を満たすテストを作成するために必要な制御パスを把握することができる。テスト設計者は、ソフトウェア構造分析の要件を満たすテストを作成する（Ｓ１３）。
【００５７】
テスト設計者は、ソフトウェア要件カバレッジ分析を行う（Ｓ１４）。ソフトウェア要件カバレッジ分析の結果、テスト設計者はソフトウェア要件カバレッジの要件を満たすか否かを判定する（Ｓ１５）。要件を満たさない場合（Ｓ１５：Ｎｏ）、テスト設計者は、不足するテスト項目を追加する（Ｓ１６）。要件を満たす場合（Ｓ１５：Ｙｅｓ）、テスト設計者は、テスト項目の作成を終了する（Ｓ１７）。
【００５８】
続いて、本実施の形態にかかるテスト支援システムの効果について説明する。はじめに、比較対象として一般的なテスト作成手順の問題点について詳述する。
【００５９】
図１５に示される一般的なテスト作成手順では、ソフトウェア構造カバレッジ分析を実行する必要があった。そのため、作成したテストセットが所定のソフトウェア構造のカバレッジ基準を満たすか否かの判定は、テストセットのテストケースを全て実行し、カバレッジ測定を実行するまで把握できなかった。また、カバレッジ測定によりソフトウェア構造カバレッジの網羅率を測定することはできたが、カバレッジ網羅率が十分ではない場合にどのようなテストを追加すればよいかを把握することができなかった。さらに、テストセットのテストケースが冗長である場合（必要以上にテストケースが含まれている場合）を検出することが困難であった。
【００６０】
一方、上述のテスト支援システムは、ソフトウェア構造カバレッジに関するカバレッジ基準と、ソースコードの解析結果である制御フローグラフ等と、から制御パスセットを生成する。制御パスセットは、カバレッジ基準を満たし得るプログラムの実行経路を示す制御パス（実行パスとも記載する）の集合から構成される。そのため、テスト設計者は、制御パスセットを参照して効率的に必要最小限のテストセットを生成することができる。
【００６１】
さらに、制御パスセット生成部１５は、上述のようにカバレッジ基準を満たし、かつ最小数の制御パスから制御パスセットを構成する。これにより、テスト設計者は、冗長なテストセットを作成することがなくなる。
【００６２】
さらに、制御パスセット生成部１５は、複数の制御パスセットの候補がある場合には、複数の制御パスセットを生成してもよい。これにより、テスト設計者は、複数の制御パスセットの中から一番テスト作成に利用しやすい制御パスセットを選択してテスト作成をすることができる。
【００６３】
テストケース作成方法指示部１６は、制御パスセットの情報を制御フローグラフ等に反映した表示画面を生成する。テスト設計者は、この表示画面を参照することにより、必要となるテストケースが実行する各処理を容易に認識することが可能になる。
【００６４】
なお、本発明の本質部分を図１４を参照して改めて説明する。テスト支援システム１は、解析部２０と、制御パスセット生成部１５と、を備える。解析部２０は、制御パスセットの生成に必要となるソースコードの情報を解析する処理部であり、図１では制御フローグラフ生成部１２、真理値表生成部１３に対応する。制御パスセット生成部１５は、カバレッジ基準と、解析部２０による解析結果（例えば制御フローグラフ等）から、制御パスセットを抽出する。制御パスセットは、カバレッジ基準を満たし得るプログラムの実行経路を示す制御パスの集合から構成される。そのため、テスト設計者は、制御パスセットを参照して効率的に必要最小限のテストセットを生成することができる。
【００６５】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【００６６】
上記の構成において、複数のカバレッジ基準を入力としても良い。以下、図２、図３を参照して説明する。例えば、「全命令ステップ（分岐処理を除くステップ）の１００％を実行すること」、「条件分岐の１００％を実行すること」という２つのカバレッジ基準を満たすことが指定されても良い。
【００６７】
制御パスセット生成部１５は、「全命令ステップ（分岐処理を除くステップ）の１００％を実行すること」に対応する制御パスセットとして（パス１、パス２）または（パス１、パス４）を選択する。制御パスセット生成部１５は、「条件分岐の１００％を実行すること」に対応する制御パスセットとして（パス１、パス４）を選択する。
【００６８】
制御パスセット生成部１５は、両条件を満たす制御パスセットとして（パス１、パス４）を最終的に選択する。他の処理部の処理は、上述と同様である。
【００６９】
上述のソースコード情報入力部１１、制御フローグラフ生成部１２、真理値表生成部１３、カバレッジ基準入力部１４、制御パスセット生成部１５、及びテストケース作成方法指示部１６の各処理は、任意のコンピュータ内で動作するプログラムとして実現することが可能である。プログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（random access memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００７０】
上記実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００７１】
（付記１）
ソースコードから処理の流れをグラフ形式で表示した制御フローグラフを生成する制御フローグラフ生成部を具備する解析部と、
前記制御フローグラフ、及びソフトウェア構造にかかる第１カバレッジ基準に基づき、前記ソースコード内の実行パスを含む制御パスセットを生成する制御パスセット生成部と、を備え、
前記制御パスセットは、前記第１カバレッジ基準を満たす前記実行パスから構成される、テスト支援システム。
【００７２】
（付記２）
前記制御パスセットは、前記第１カバレッジ基準を満たす最小数の前記実行パスから構成されることを特徴とする付記１に記載のテスト支援システム。
【００７３】
（付記３）
前記制御パスセット生成部は、前記制御パスセットの候補が複数ある場合に、複数の前記制御パスセットを生成することを特徴とする付記２に記載のテスト支援システム。
【００７４】
（付記４）
前記第１カバレッジ基準は、実行命令数を前記ソースコードに含まれる全ての命令数で除算して求める命令網羅率に関する基準であり、
前記制御パスセット生成部は、前記ソースコードに含まれる全ての前記実行パスを抽出するとともに、前記ソースコードに含まれる全ての命令数をカウントし、前記命令網羅率を満たすまでの間、前記命令網羅率が相対的に高くなる順序で前記制御パスセットに含める前記実行パスを選択することを特徴とする付記１乃至付記３のいずれかに記載のテスト支援システム。
【００７５】
（付記５）
前記第１カバレッジ基準は、実行分岐数を前記ソースコードに含まれる全ての分岐数で除算して求める分岐網羅率に関する基準であり、
前記制御パスセット生成部は、前記ソースコードに含まれる全ての前記実行パスを抽出するとともに、前記ソースコードに含まれる全ての分岐数をカウントし、前記分岐網羅率を満たすまでの間、前記分岐網羅率が相対的に高くなる順序で前記制御パスセットに含める前記実行パスを選択することを特徴とする付記１乃至付記３のいずれかに記載のテスト支援システム。
【００７６】
（付記６）
前記制御パスセット生成部は、前記第１カバレッジ基準及びソフトウェア構造にかかる第２カバレッジ基準に基づき、前記制御パスセットを生成し、
前記制御パスセットは、前記第１カバレッジ基準及び前記第２カバレッジ基準の双方を満たす前記実行パスから構成されることを特徴とする付記１乃至付記５のいずれかに記載のテスト支援システム。
【００７７】
（付記７）
前記解析部は、前記ソースコードに含まれる分岐処理から真理値表を生成する真理値表生成部を備え、
前記テスト支援システムは、前記制御パスセットに関する情報を前記ソースコード、前記制御フローグラフ、前記真理値表の少なくとも１つに反映した表示画面を生成するテストケース作成方法指示部、を更に備えることを特徴とする付記１乃至付記６のいずれかに記載のテスト支援システム。
【００７８】
（付記８）
前記テストケース作成方法指示部は、前記制御フローグラフに前記制御パスセットに含まれる全ての前記実行パスを重畳的に記載して、前記表示画面を生成することを特徴とする付記７に記載のテスト支援システム。
【００７９】
（付記９）
ソースコードから処理の流れをグラフ形式で表示した制御フローグラフを生成し、
前記制御フローグラフに基づき、ソフトウェア構造にかかる第１カバレッジ基準を満たす前記ソースコード内の実行パスを含む制御パスセットを生成する、テスト支援方法。
【００８０】
（付記１０）
前記制御パスセットは、前記第１カバレッジ基準を満たす最小数の前記実行パスから構成されることを特徴とする付記９に記載のテスト支援方法。
【００８１】
（付記１１）
前記制御パスセットの候補が複数ある場合に、複数の前記制御パスセットを生成することを特徴とする付記１０に記載のテスト支援方法。
【００８２】
（付記１２）
前記第１カバレッジ基準は、実行命令数を前記ソースコードに含まれる全ての命令数で除算して求める命令網羅率に関する基準であり、
前記ソースコードに含まれる全ての前記実行パスを抽出するとともに、前記ソースコードに含まれる全ての命令数をカウントし、前記命令網羅率を満たすまでの間、前記命令網羅率が相対的に高くなる順序で前記制御パスセットに含める前記実行パスを選択することを特徴とする付記９乃至付記１１のいずれかに記載のテスト支援方法。
【００８３】
（付記１３）
前記第１カバレッジ基準は、実行分岐数を前記ソースコードに含まれる全ての分岐数で除算して求める分岐網羅率に関する基準であり、
前記ソースコードに含まれる全ての前記実行パスを抽出するとともに、前記ソースコードに含まれる全ての分岐数をカウントし、前記分岐網羅率を満たすまでの間、前記分岐網羅率が相対的に高くなる順序で前記制御パスセットに含める前記実行パスを選択することを特徴とする付記９乃至付記１１のいずれかに記載のテスト支援方法。
【００８４】
（付記１４）
前記第１カバレッジ基準及びソフトウェア構造にかかる第２カバレッジ基準に基づき、前記制御パスセットを生成し、
前記制御パスセットは、前記第１カバレッジ基準及び前記第２カバレッジ基準の双方を満たす前記実行パスから構成されることを特徴とする付記９乃至付記１３のいずれかに記載のテスト支援方法。
【００８５】
（付記１５）
前記ソースコードに含まれる分岐処理から真理値表を生成し、
前記制御パスセットに関する情報を前記ソースコード、前記制御フローグラフ、前記真理値表の少なくとも１つに反映した表示画面を生成する付記９乃至付記１４のいずれかに記載のテスト支援方法。
【００８６】
（付記１６）
コンピュータに、
ソースコードから処理の流れをグラフ形式で表示した制御フローグラフを生成する処理と、
前記制御フローグラフに基づき、ソフトウェア構造にかかる第１カバレッジ基準を満たす前記ソースコード内の実行パスを含む制御パスセットを生成する処理と、を実行させるためのプログラム。
【符号の説明】
【００８７】
１  テスト支援システム
１１  ソースコード情報入力部
１２  制御フローグラフ生成部
１３  真理値表生成部
１４  カバレッジ基準入力部
１５  制御パスセット生成部
１６  テストケース作成方法指示部
【図１】
0005743663.tif 000002
【図２】
0005743663.tif 000003
【図３】
0005743663.tif 000004
【図４】
0005743663.tif 000005
【図５】
0005743663.tif 000006
【図６】
0005743663.tif 000007
【図７】
0005743663.tif 000008
【図８】
0005743663.tif 000009
【図９】
0005743663.tif 000010
【図１０】
0005743663.tif 000011
【図１１】
0005743663.tif 000012
【図１２】
0005743663.tif 000013
【図１３】
0005743663.tif 000014
【図１４】
0005743663.tif 000015
【図１５】
0005743663.tif 000016