特許第5743663号(P5743663)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電気通信システム株式会社の特許一覧

特許5743663テスト支援システム、テスト支援方法、及びプログラム
<>
  • 特許5743663-テスト支援システム、テスト支援方法、及びプログラム 図000002
  • 特許5743663-テスト支援システム、テスト支援方法、及びプログラム 図000003
  • 特許5743663-テスト支援システム、テスト支援方法、及びプログラム 図000004
  • 特許5743663-テスト支援システム、テスト支援方法、及びプログラム 図000005
  • 特許5743663-テスト支援システム、テスト支援方法、及びプログラム 図000006
  • 特許5743663-テスト支援システム、テスト支援方法、及びプログラム 図000007
  • 特許5743663-テスト支援システム、テスト支援方法、及びプログラム 図000008
  • 特許5743663-テスト支援システム、テスト支援方法、及びプログラム 図000009
  • 特許5743663-テスト支援システム、テスト支援方法、及びプログラム 図000010
  • 特許5743663-テスト支援システム、テスト支援方法、及びプログラム 図000011
  • 特許5743663-テスト支援システム、テスト支援方法、及びプログラム 図000012
  • 特許5743663-テスト支援システム、テスト支援方法、及びプログラム 図000013
  • 特許5743663-テスト支援システム、テスト支援方法、及びプログラム 図000014
  • 特許5743663-テスト支援システム、テスト支援方法、及びプログラム 図000015
  • 特許5743663-テスト支援システム、テスト支援方法、及びプログラム 図000016
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5743663
(24)【登録日】2015年5月15日
(45)【発行日】2015年7月1日
(54)【発明の名称】テスト支援システム、テスト支援方法、及びプログラム
(51)【国際特許分類】
   G06F 11/28 20060101AFI20150611BHJP
【FI】
   G06F11/28 340A
【請求項の数】6
【全頁数】18
(21)【出願番号】特願2011-88906(P2011-88906)
(22)【出願日】2011年4月13日
(65)【公開番号】特開2012-221394(P2012-221394A)
(43)【公開日】2012年11月12日
【審査請求日】2014年3月12日
(73)【特許権者】
【識別番号】000232254
【氏名又は名称】日本電気通信システム株式会社
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入 健
(72)【発明者】
【氏名】鎌田 典彦
(72)【発明者】
【氏名】高岡 真則
(72)【発明者】
【氏名】宮本 剛
【審査官】 多賀 実
(56)【参考文献】
【文献】 特開平04−260941(JP,A)
【文献】 特開平02−010443(JP,A)
【文献】 特開平11−232137(JP,A)
【文献】 特開昭63−305435(JP,A)
【文献】 米国特許第05933640(US,A)
【文献】 特開平09−128266(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F11/28−11/34
(57)【特許請求の範囲】
【請求項1】
ソースコードから処理の流れをグラフ形式で表示した制御フローグラフを生成する制御フローグラフ生成部を具備する解析部と、
前記制御フローグラフ、及びソフトウェア構造にかかる第1カバレッジ基準に基づき、前記ソースコード内の実行パスを含む制御パスセットを生成する制御パスセット生成部と、
前記制御フローグラフに前記制御パスセットに含まれる全ての前記実行パスを重畳的に記載した表示画面を生成するテストケース作成方法指示部と、を備え、
前記制御パスセットは、前記第1カバレッジ基準を満たす前記実行パスから構成される、テスト支援システム。
【請求項2】
ソースコードから処理の流れをグラフ形式で表示した制御フローグラフを生成する制御フローグラフ生成部を具備する解析部と、
前記制御フローグラフ、及びソフトウェア構造にかかる第1カバレッジ基準に基づき、前記ソースコード内の実行パスを含む制御パスセットを生成する制御パスセット生成部と、
前記ソースコードに前記制御パスセットに含まれる全ての前記実行パスを重畳的に記載した表示画面を生成するテストケース作成方法指示部と、を備え、
前記制御パスセットは、前記第1カバレッジ基準を満たす前記実行パスから構成される、テスト支援システム。
【請求項3】
ソースコードから処理の流れをグラフ形式で表示した制御フローグラフを生成し、
前記制御フローグラフに基づき、ソフトウェア構造にかかる第1カバレッジ基準を満たす前記ソースコード内の実行パスを含む制御パスセットを生成し、
前記制御フローグラフに前記制御パスセットに含まれる全ての前記実行パスを重畳的に記載した表示画面を生成する、テスト支援方法。
【請求項4】
ソースコードから処理の流れをグラフ形式で表示した制御フローグラフを生成し、
前記制御フローグラフに基づき、ソフトウェア構造にかかる第1カバレッジ基準を満たす前記ソースコード内の実行パスを含む制御パスセットを生成し、
前記ソースコードに前記制御パスセットに含まれる全ての前記実行パスを重畳的に記載した表示画面を生成する、テスト支援方法。
【請求項5】
コンピュータに、
ソースコードから処理の流れをグラフ形式で表示した制御フローグラフを生成する処理と、
前記制御フローグラフに基づき、ソフトウェア構造にかかる第1カバレッジ基準を満たす前記ソースコード内の実行パスを含む制御パスセットを生成する処理と、
前記制御フローグラフに前記制御パスセットに含まれる全ての前記実行パスを重畳的に記載した表示画面を生成する処理と、を実行させるためのプログラム。
【請求項6】
コンピュータに、
ソースコードから処理の流れをグラフ形式で表示した制御フローグラフを生成する処理と、
前記制御フローグラフに基づき、ソフトウェア構造にかかる第1カバレッジ基準を満たす前記ソースコード内の実行パスを含む制御パスセットを生成する処理と、
前記ソースコードに前記制御パスセットに含まれる全ての前記実行パスを重畳的に記載した表示画面を生成する処理と、を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、テスト支援システム、テスト支援方法、及びプログラムに関する。
【背景技術】
【0002】
ソフトウェア開発において、テスト(試験)は品質を確保する上で重要である。テストとは、要件(仕様)を基に作成したソフトウェア(ソースコード、コンパイルされた中間コード、オブジェクトコード)が要件(仕様)を満たしているか否かを検証するプロセスである。つまり、テストは、作成したソフトウェアが要件を満たすか否かを判定し、要件を満たさない場合にその原因となる欠陥を発見することを目的とする。テストは、要件を基にしていることから要件ベーステストとも呼ばれる。
【0003】
一般的なソフトウェアテストの作成業務のフローを図15に示す。図15に示すように、通常のソフトウェアテストの作成では、要件カバレッジ分析(S33)、及び構造カバレッジ分析(S36)という作業が行われる。以下に、要件カバレッジ分析(S33)、及び構造カバレッジ分析(S36)について説明する。
【0004】
要件カバレッジ分析は、作成したテストが要件(仕様)を網羅しているか否かを確認する工程である。テストが要件をどれだけ網羅しているかという網羅度を要件カバレッジという。要件カバレッジ分析の目的は、作成したテストの実行により、要件に定義されている項目がソフトウェアにより実装されているかを確認することである。例えば、要件に1000の機能が定義されている場合、要件カバレッジ分析において各機能が実装されていることを検証する。
【0005】
要件カバレッジ分析の結果を分析し(S34)、要件に対してテストが不足している場合(S34:No)、テスト設計者は不足テストの追加を行い(S35)、再度の要件カバレッジ分析(S34)を実行する。
【0006】
要件カバレッジ分析に必要な項目を含むテストは、要件(仕様)がソフトウェアにもれなく実装されていることを検証できる。しかし、ソフトウェア内に余分な処理が実装されていた場合(例えば実装上の誤り、要件の誤解に起因する不要なコードが混入されていた場合)、要件カバレッジ分析に必要な項目のみを含むテストでは、このような問題を検出することはできない。そのため、以下に説明する構造カバレッジ分析も行う必要がある。
【0007】
構造カバレッジ分析とは、作成したテストがソフトウェア(ソースコード、コンパイルされた中間コード、オブジェクトコード)の構造をどれだけ網羅しているかを確認する工程である。ソフトウェアの構造とは、行、条件文、分岐、実行経路等のソフトウェアの論理構造を構成する要素である。作成したテストがソフトウェアの構造をどれだけ網羅しているかを示す網羅度を構造カバレッジと呼称する。
【0008】
ソフトウェア構造カバレッジの基準は、構造をどのような観点から定義するかに応じて定まる。例えば、ソースコード行のみをソフトウェアの構造と捉えた場合、作成したテストにより実行されるコード行を全コード行で除算した結果が構造カバレッジとなる。さらに、条件や分岐を考慮してソフトウェアの構造を捉えても良い。ソフトウェア構造カバレッジの基準は、開発現場における品質に対する考え方、テスト対象のソフトウェアが使用される分野、業界標準に応じて適宜定められる。
【0009】
テストがソフトウェア構造カバレッジの基準を全て満たしている場合(100%)、テストによりソフトウェア構造カバレッジの基準に準拠した構造が全て実行される。ここで、ソフトウェア構造カバレッジが100%にできるようなテストケース数は、採用するソフトウェア構造カバレッジの基準により異なり、場合によっては現実的にテスト実行できないほど多数になる。そのため、実際のテスト実行時には、テスト設計者はカバレッジ(網羅率)とテスト実行にかかるコストとの兼ね合いからテストケース数を決定する。
【0010】
ソフトウェア構造カバレッジ分析において、作成したテスト(要件カバレッジ分析の満足するテスト)では実行されないコードの構造が存在することが明らかになった場合、テスト実行者は意図していない構造、すなわちコードが混入されたと判断できる。これにより、テスト実行者は、バグを発見できる。
【0011】
ソフトウェア構造カバレッジ分析を実施する目的は、コードが意図した実装となっているかを検証するためのテストが正確に設計されているかを確認することである。ソフトウェア構造カバレッジ分析の分析結果に応じて、テスト設計者は適宜テストを是正(修正等)する。
【0012】
上述のように、ソフトウェア要件カバレッジ分析の要件を満たすのみのテストを実行しただけでは、意図しないコードが混入した場合に当該コードを検出することができない。そのため、ソフトウェア要件カバレッジ分析の後にソフトウェア構造カバレッジ分析により是正されたテストを用いる必要がある。
【0013】
ソフトウェア構造カバレッジ分析の一般的な手法を以下に述べる。はじめに、要件カバレッジ分析が終了したテストを一通り実行し、実行結果をカバレッジ測定ツールで確認する。テストに含まれる項目が不足していることが判明した場合、テスト設計者はテスト項目を追加する。特許文献1には当該手法の一態様が開示されている。
【0014】
特許文献2には、SAT手法(充足可能性判定手法)を応用してゴールデン(仕様S(あるシステムを実現するための要求条件)を完全に満たす実装)を解析することにより、動作要件を満たすテスト制約を自動抽出する技術が開示されている。ゴールデンは、リファレンスプログラムとして動作する。このゴールデンを算出する方法は、形式手法記述により記述する等の必要があり、対応には多大な工数を要する。なお、特許文献2には、リファレンスプログラムを用いずにテスト制約を生成することに関する示唆、教示はない。
【先行技術文献】
【特許文献】
【0015】
【特許文献1】特開平5−324402号公報
【特許文献2】特開2010−238057号公報
【非特許文献】
【0016】
【非特許文献1】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>
【発明の概要】
【発明が解決しようとする課題】
【0017】
一般にソフトウェア構造カバレッジ分析において、作成したテストがソフトウェア構造をどれだけ網羅しているかを確認することは手間のかかる作業である。また、分析結果に応じてテストを修正する作業にも手間がかかる。
【0018】
特にソフトウェア構造カバレッジ分析における基準として変更条件判定カバレッジ(MC/DC、Modified Condition Decision Coverage)を採用した場合、判定内の複数の条件のうちのひとつの条件だけが変更された場合に判定結果が反転するような条件の組み合わせを求めることは、困難である。すなわち、変更条件判定カバレッジを採用した場合、作成したテストがソフトウェア構造をどれだけ網羅しているかを確認することは非常に困難である。
【0019】
さらに、変更条件判定カバレッジ(MC/DC)を満たすように、テストのテストケースを修正、追加、削除等を行って調節することは非常に困難である。上述の方法では、テストが変更条件判定カバレッジにおける網羅率を求めることはできる。しかし上述の方法では、網羅率が低かった場合にどのようなテストケースが不足しているか、どのテストケースをどのように変更すればよいか、最小限のテストケース数にするにはどのように変更すればよいか、を認識できないためである。
【0020】
非特許文献1には、テストが変更条件判定カバレッジを満たしているか否かを判定する方法が記載されている。しかし、テストが変更条件判定カバレッジを満たしていない場合のテストの修正方法についての教示、示唆が無い。
【0021】
すなわち、リファレンスプログラムを持たない環境下において、ソフトウェア構造カバレッジ分析を満たすテストを生成する工数が非常に大きいという問題があった。
【0022】
本発明は、上記の事情を鑑みてなされたものであり、ソフトウェア構造カバレッジ分析の要件を満たすテストを容易に生成することができるテスト支援システム、テスト支援方法、及びプログラムを提供することを主たる目的とする。
【課題を解決するための手段】
【0023】
本発明にかかるテスト支援システムの一態様は、
ソースコードから処理の流れをグラフ形式で表示した制御フローグラフを生成する制御フローグラフ生成部を具備する解析部と、
前記制御フローグラフ、及びソフトウェア構造にかかる第1カバレッジ基準に基づき、前記ソースコード内の実行パスを含む制御パスセットを生成する制御パスセット生成部と、を備え、
前記制御パスセットは、前記第1カバレッジ基準を満たす前記実行パスから構成される、ものである。
【0024】
本発明にかかるテスト支援方法の一態様は、
ソースコードから処理の流れをグラフ形式で表示した制御フローグラフを生成し、
前記制御フローグラフに基づき、ソフトウェア構造にかかる第1カバレッジ基準を満たす前記ソースコード内の実行パスを含む制御パスセットを生成する、ものである。
【0025】
本発明にかかるプログラムの一態様は、
コンピュータに、
ソースコードから処理の流れをグラフ形式で表示した制御フローグラフを生成する処理と、
前記制御フローグラフに基づき、ソフトウェア構造にかかる第1カバレッジ基準を満たす前記ソースコード内の実行パスを含む制御パスセットを生成する処理と、を実行させるためのものである。
【発明の効果】
【0026】
本発明によれば、ソフトウェア構造カバレッジ分析の要件を満たすテストを容易に生成することができるテスト支援システム、テスト支援方法、及びプログラムを提供することができる。
【図面の簡単な説明】
【0027】
図1】実施の形態1にかかるテスト支援システム1の構成を示すブロック図である。
図2】実施の形態1にかかるテスト支援システム1が処理対象とするソースコードを示す図である。
図3】実施の形態1にかかる制御フローグラフ生成部12が生成した制御フローグラフを示す図である。
図4】実施の形態1にかかる制御フローグラフ生成部12が生成した制御フローグラフを示す図である。
図5】実施の形態1にかかる真理値表生成部13が生成した真理値表を示す図である。
図6】実施の形態1にかかるテストケース作成方法指示部16が生成した制御フローグラフの表示画面を示す図である。
図7】実施の形態1にかかるテストケース作成方法指示部16が生成した真理値表の表示画面を示す図である。
図8】実施の形態1にかかるテストケース作成方法指示部16が生成したソースコードの表示画面を示す図である。
図9】実施の形態1にかかるテストケース作成方法指示部16が生成した制御フローグラフの表示画面を示す図である。
図10】実施の形態1にかかるテストケース作成方法指示部16が生成した真理値表の表示画面を示す図である。
図11】実施の形態1にかかるテストケース作成方法指示部16が生成したソースコードの表示画面を示す図である。
図12】実施の形態1にかかるテスト支援システム1を利用したソフトウェアテスト作成業務の概要を示すフローチャートである。
図13】実施の形態1にかかるテスト支援システム1の動作を示すフローチャートである。
図14】実施の形態1にかかるテスト支援システム1の構成を示すブロック図である。
図15】一般的なソフトウェアテスト作成業務の概要を示すフローチャートである。
【発明を実施するための形態】
【0028】
<実施の形態1>
以下、図面を参照して本発明の実施の形態について説明する。図1は、本実施の形態にかかるテスト支援装置の構成を示すブロック図である。テスト支援システム1は、ソースコード情報入力部11と、制御フローグラフ生成部12と、真理値表生成部13と、カバレッジ基準入力部14と、制御パスセット生成部15と、テストケース作成方法指示部16と、を備える。
【0029】
テスト支援システム1は、一般に、汎用的なコンピュータ上でプログラム制御により動作する。なお、テスト支援システム1に含まれる各処理部は、ネットワーク等により接続された複数のコンピュータ上に分散されて配置されても良い。
【0030】
テスト設計者は、テストの対象となるソースコードをシステムに指定する。ソースコード情報入力部11は、テスト設計者から指定されたソースコードをファイルシステム等から読み込む。図2は、ソースコード情報入力部11が読み込むソースコードの一例を示す図である。以下、図2に示すソースコードを用いて適宜説明する。ソースコード情報入力部11は、読み込んだソースコードを制御フローグラフ生成部12及びテストケース作成方法指示部16に供給する。
【0031】
制御フローグラフ生成部12は、供給されたソースコードから制御フローグラフを生成する処理部である。図3は、制御フローグラフ生成部12が図2に示すソースコードから生成した制御フローグラフを示す図である。図示するように、当該ソースコードは、2つの分岐と、7つの処理命令と、から構成される。なお、図3では、分岐を「w&&x」のように複数の条件文から構成されるように記載したが必ずしもこれに限られず、図4に示すように条件文毎に処理が分岐するように記載をしても良い。制御フローグラフ生成部12は、生成した制御フローグラフを真理値表生成部13、制御パスセット生成部15、及びテストケース作成方法指示部16に供給する。
【0032】
真理値表生成部13は、供給された制御フローグラフから各分岐の真理値表を生成する処理部である。真理値表生成部13は、制御フローグラフに含まれる分岐文を抽出し、抽出した分岐文に含まれる条件文を抽出し、抽出した情報から真理値表を生成する。図5は、真理値表生成部13が生成した図2に示すソースコードに関する真理値表を示す図である。図示するように、真理値表には、各条件の真(1)または偽(0)の条件、及び各分岐文の真(1)または偽(0)が記載される。真理値表生成部13は、生成した真理値表を制御パスセット生成部15及びテストケース作成方法指示部16に供給する。
【0033】
カバレッジ基準入力部14は、ユーザから指定されるソフトウェア構造カバレッジのカバレッジ基準が入力される処理部である。カバレッジ基準入力部14は、入力されたカバレッジ基準を制御パスセット生成部15に供給する。
【0034】
ここで、カバレッジ基準とは、ソフトウェア構造をどのような観点から定義するかに応じて自由に定めれば良い。例えば、ソースコード行のみをソフトウェアの構造と捉えた場合、全ソースコード行に対する実行行数の割合をカバレッジ基準として指定しても良い。また、分岐命令を除くステップの実行割合や、全分岐数に対する実行分岐数をカバレッジ基準として指定しても良い。カバレッジ基準の一例として、「全命令ステップ(分岐処理を除くステップ)の100%を実行すること(命令網羅)」、「条件分岐の100%を実行すること(分岐網羅)」等が挙げられる。
【0035】
制御パスセット生成部15は、供給された制御フローグラフ、真理値表、及びカバレッジ基準から制御パスセットを生成する処理部である。制御パスセットとは、カバレッジ基準を満たし得る制御パスの集合である。制御パス(実行パスとも記載する)とは、プログラムの実行経路を示す。制御パスセット生成部15は、制御フローグラフから全ての制御パスを抽出する。
【0036】
図3の制御フローグラフは、以下の4つの制御パスを含んでいる。
パス1:1(w&&x==1)23(y&&z==1)467
パス2:1(w&&x==1)23(y&&z==0)567
パス3:1(w&&x==0)3(y&&z==1)467
パス4:1(w&&x==0)3(y&&z==0)567
ここで、上記パスの表記において、「1」〜「7」の表記は、処理名を表す。
【0037】
以下、カバレッジ基準として「全命令ステップ(分岐処理を除くステップ)の100%を実行すること」が指定された場合の制御パスセット生成部15の動作について説明する。制御パスセット生成部15は、前述のように、制御フローグラフから全ての制御パスを抽出する。制御パスセット生成部15は、制御フローグラフ(図3)から全命令ステップをカウントし、全命令が7命令から構成されていると判定する。制御パスセット生成部15は、例えば以下のパス1を選択すると6つの命令を実行できると判定する。パスの選択は、例えばより命令網羅の対象となっていない命令を多く実行するパスを優先して選択すればよい。
パス1:1(w&&x==1)23(y&&z==1)467
【0038】
制御パスセット生成部15は、上記のパス1の実行により約86%(6/7)の命令が実行されると判定する。制御パスセット生成部15は、上記のパス1のみではカバレッジ基準を満たさないと判定し、以下のパス2を選択する。この際、例えば制御パスセット生成部15は、パス1に含まれない処理5を含むパスを選択する。このように、命令網羅の対象となっていない命令がより多く含まれるパス(他のパスの選択時と比べて相対的に網羅率が高くなるパス)を優先して選択する。
パス2:1(w&&x==1)23(y&&z==0)567
【0039】
制御パスセット生成部15は、上記のパス1及びパス2の実行により100%(7/7)の命令が実行されると判定する。制御パスセット生成部15は、パス1及びパス2の実行によりカバレッジ基準を満たすと判定し、制御パスセットを上述パス1、パス2から構成する。
【0040】
なお、制御パスセット生成部15は、最小数の制御パスからなる制御パスセットの候補を複数算出しても良い。例えば、制御パスセット生成部15は、制御パスセットを(パス1、パス2)または(パス1、パス4)のいずれかとしてもよい。
【0041】
制御パスセット生成部15は、制御パスセットをテストケース作成方法指示部16に供給する。
【0042】
テストケース作成方法指示部16には、ソースコード、制御フローグラフ、真理値表、及び制御パスセットが供給される。テストケース作成方法指示部16は、ソースコード、制御フローグラフ、真理値表の少なくとも1つに対して、制御パスセットの情報を重畳した表示画面を生成する。
【0043】
はじめに、制御フローグラフに対して制御パスセットの情報を重畳した表示画面について説明する。テストケース作成方法指示部16は、入力された制御パスセットの各制御パスを制御フローグラム上に重畳した表示画面を表示部等に出力する。図6は、図3に示す制御フローグラフに制御パスセット(パス1、パス2)を重畳した表示画面を示す図である。図示するように、制御フローグラフ上に各制御パスが認識できるように重畳されている。
【0044】
続いて、真理値表に対して制御パスセットの情報を重畳した表示画面について説明する。図7は、図5に示す真理値表に対して制御パスセット(パス1、パス2)の情報を反映した表示画面を示す図である。テストケース作成方法指示部16は、入力された制御パスセットの各制御パスから、テスト時に実行されるべき判定処理を算出する。上述の例では、パス1及びパス2が実行される。パス1には、(w&&x==1)及び(y&&z==1)が含まれる。パス2には、(w&&x==1)及び(y&&z==0)が含まれる。テストケース作成方法指示部16は、この判定処理(上述の例では、(w&&x==1)、(y&&z==1)、(y&&z==0))を全て抽出する。そして、テストケース作成方法指示部16は、真理値表から、抽出した判定文に対応する項目行を識別できるように印をつける。
【0045】
図7では、(w&&x==1)の判定文から、テストケース作成方法指示部16は、行番号1を必ず実行されるべき判定処理とする印(○)をつける。同様に、(y&&z==1)の判定文から、テストケース作成方法指示部16は、行番号5を必ず実行されるべき判定処理とする印(○)をつける。図7では、(w&&x==0)の判定文から、テストケース作成方法指示部16は、行番号2〜4のいずれかが実行されるべき判定処理とする印(△1)をつける。
【0046】
次に、ソースコードに対して制御パスセットの情報を重畳した表示画面を説明する。テストケース作成方法指示部16は、入力された制御パスセットの各制御パスと、ソースコードと、を関連付けて重畳表示する。図8は、ソースコードに制御パス(パス1、パス2)を重畳した表示画面を示す図である。図示するように、パス1及びパス2がソースコードと関連付けられて表示される。
【0047】
さらに、他のカバレッジ基準を用いて、テスト支援システム1の動作について説明する。以下では、カバレッジ基準として、「分岐の全てが実行されたこと(分岐網羅)」が与えられた場合について説明する。テスト対象となるソースコードは、図2に示すものである。また、ソースコード情報入力部11、制御フローグラフ生成部12、真理値表生成部13、及びカバレッジ基準入力部14の動作は、前述の説明のとおりである。
【0048】
制御パスセット生成部15は、制御フローグラフ(図3)から全ての判定処理(w&&x及びy&&z)を抽出する。制御パスセット生成部15は、例えば、一番多くの判定処理を実行する以下のパス1を選択する。
パス1:1(w&&x==1)23(y&&z==1)467
【0049】
制御パスセット生成部15は、続いてパス1と判定処理の出力が異なるパス4を抽出する。
パス4:1(w&&x==0)3(y&&z==0)567
【0050】
制御パスセット生成部15は、全ての分岐処理の真偽(1、0)が実行されているか否かを判定する。そして上述の例では、制御パスセット生成部15は、パス1及びパス4の実行により「分岐の全てが実行された」と判定する。そして、制御パスセット生成部15は、制御パスセットをパス1及びパス4から構成する。このように、制御パスセット生成部15は、分岐網羅率が相対的に高くなる順序で制御パスを選択していく。
【0051】
テストケース作成方法指示部16は、ソースコード、制御フローグラフ、真理値表の少なくとも1つに対して、制御パスセット(パス1、パス4)の情報を重畳した表示画面を生成する。図9は、図3に示す制御フローグラフに制御パスセット(パス1、パス4)を重畳した表示画面を示す図である。図10は、図5に示す真理値表に対して制御パスセット(パス1、パス4)の情報を反映した表示画面を示す図である。図11は、ソースコードに制御パス(パス1、パス4)を重畳した表示画面を示す図である。
【0052】
続いて、本実施の形態にかかるテスト支援システム1を使用したソフトウェアテスト作成業務の概要について説明する。図12は、ソフトウェアテスト作成業務の概要を示すフローチャートである。
【0053】
はじめに、プログラマ等がテストの実行対象となるソースコードを作成する(S11)。続いて、テスト設計者が、上述のテスト支援システム1を用いた処理を実行する(S12)。この処理の詳細を図13を参照して説明する。
【0054】
はじめに、テスト設計者は、ソースコードをソースコード情報入力部11に対して入力する(S21)。さらに、テスト設計者は、カバレッジ基準をカバレッジ基準入力部14に対して入力する(S22)。
【0055】
制御フローグラフ生成部12は、入力されたソースコードから制御フローグラフを生成する(S23)。真理値表生成部13は、生成された制御フローグラフから真理値表を生成する(S24)。制御パスセット生成部15は、制御フローグラフ、真理値表、及びカバレッジ基準から制御パスセットを生成する(S25)。テストケース作成方法指示部16は、ソースコード、制御フローグラフ、真理値表の少なくとも1つに対して、制御パスセットの情報を重畳した表示画面を生成する(S26)。
【0056】
図12の説明に戻る。テスト設計者は、テストケース作成方法指示部16により生成された表示画面を参照することにより、ソフトウェア構造分析を満たすテストを作成するために必要な制御パスを把握することができる。テスト設計者は、ソフトウェア構造分析の要件を満たすテストを作成する(S13)。
【0057】
テスト設計者は、ソフトウェア要件カバレッジ分析を行う(S14)。ソフトウェア要件カバレッジ分析の結果、テスト設計者はソフトウェア要件カバレッジの要件を満たすか否かを判定する(S15)。要件を満たさない場合(S15:No)、テスト設計者は、不足するテスト項目を追加する(S16)。要件を満たす場合(S15:Yes)、テスト設計者は、テスト項目の作成を終了する(S17)。
【0058】
続いて、本実施の形態にかかるテスト支援システムの効果について説明する。はじめに、比較対象として一般的なテスト作成手順の問題点について詳述する。
【0059】
図15に示される一般的なテスト作成手順では、ソフトウェア構造カバレッジ分析を実行する必要があった。そのため、作成したテストセットが所定のソフトウェア構造のカバレッジ基準を満たすか否かの判定は、テストセットのテストケースを全て実行し、カバレッジ測定を実行するまで把握できなかった。また、カバレッジ測定によりソフトウェア構造カバレッジの網羅率を測定することはできたが、カバレッジ網羅率が十分ではない場合にどのようなテストを追加すればよいかを把握することができなかった。さらに、テストセットのテストケースが冗長である場合(必要以上にテストケースが含まれている場合)を検出することが困難であった。
【0060】
一方、上述のテスト支援システムは、ソフトウェア構造カバレッジに関するカバレッジ基準と、ソースコードの解析結果である制御フローグラフ等と、から制御パスセットを生成する。制御パスセットは、カバレッジ基準を満たし得るプログラムの実行経路を示す制御パス(実行パスとも記載する)の集合から構成される。そのため、テスト設計者は、制御パスセットを参照して効率的に必要最小限のテストセットを生成することができる。
【0061】
さらに、制御パスセット生成部15は、上述のようにカバレッジ基準を満たし、かつ最小数の制御パスから制御パスセットを構成する。これにより、テスト設計者は、冗長なテストセットを作成することがなくなる。
【0062】
さらに、制御パスセット生成部15は、複数の制御パスセットの候補がある場合には、複数の制御パスセットを生成してもよい。これにより、テスト設計者は、複数の制御パスセットの中から一番テスト作成に利用しやすい制御パスセットを選択してテスト作成をすることができる。
【0063】
テストケース作成方法指示部16は、制御パスセットの情報を制御フローグラフ等に反映した表示画面を生成する。テスト設計者は、この表示画面を参照することにより、必要となるテストケースが実行する各処理を容易に認識することが可能になる。
【0064】
なお、本発明の本質部分を図14を参照して改めて説明する。テスト支援システム1は、解析部20と、制御パスセット生成部15と、を備える。解析部20は、制御パスセットの生成に必要となるソースコードの情報を解析する処理部であり、図1では制御フローグラフ生成部12、真理値表生成部13に対応する。制御パスセット生成部15は、カバレッジ基準と、解析部20による解析結果(例えば制御フローグラフ等)から、制御パスセットを抽出する。制御パスセットは、カバレッジ基準を満たし得るプログラムの実行経路を示す制御パスの集合から構成される。そのため、テスト設計者は、制御パスセットを参照して効率的に必要最小限のテストセットを生成することができる。
【0065】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【0066】
上記の構成において、複数のカバレッジ基準を入力としても良い。以下、図2図3を参照して説明する。例えば、「全命令ステップ(分岐処理を除くステップ)の100%を実行すること」、「条件分岐の100%を実行すること」という2つのカバレッジ基準を満たすことが指定されても良い。
【0067】
制御パスセット生成部15は、「全命令ステップ(分岐処理を除くステップ)の100%を実行すること」に対応する制御パスセットとして(パス1、パス2)または(パス1、パス4)を選択する。制御パスセット生成部15は、「条件分岐の100%を実行すること」に対応する制御パスセットとして(パス1、パス4)を選択する。
【0068】
制御パスセット生成部15は、両条件を満たす制御パスセットとして(パス1、パス4)を最終的に選択する。他の処理部の処理は、上述と同様である。
【0069】
上述のソースコード情報入力部11、制御フローグラフ生成部12、真理値表生成部13、カバレッジ基準入力部14、制御パスセット生成部15、及びテストケース作成方法指示部16の各処理は、任意のコンピュータ内で動作するプログラムとして実現することが可能である。プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(random access memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0070】
上記実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【0071】
(付記1)
ソースコードから処理の流れをグラフ形式で表示した制御フローグラフを生成する制御フローグラフ生成部を具備する解析部と、
前記制御フローグラフ、及びソフトウェア構造にかかる第1カバレッジ基準に基づき、前記ソースコード内の実行パスを含む制御パスセットを生成する制御パスセット生成部と、を備え、
前記制御パスセットは、前記第1カバレッジ基準を満たす前記実行パスから構成される、テスト支援システム。
【0072】
(付記2)
前記制御パスセットは、前記第1カバレッジ基準を満たす最小数の前記実行パスから構成されることを特徴とする付記1に記載のテスト支援システム。
【0073】
(付記3)
前記制御パスセット生成部は、前記制御パスセットの候補が複数ある場合に、複数の前記制御パスセットを生成することを特徴とする付記2に記載のテスト支援システム。
【0074】
(付記4)
前記第1カバレッジ基準は、実行命令数を前記ソースコードに含まれる全ての命令数で除算して求める命令網羅率に関する基準であり、
前記制御パスセット生成部は、前記ソースコードに含まれる全ての前記実行パスを抽出するとともに、前記ソースコードに含まれる全ての命令数をカウントし、前記命令網羅率を満たすまでの間、前記命令網羅率が相対的に高くなる順序で前記制御パスセットに含める前記実行パスを選択することを特徴とする付記1乃至付記3のいずれかに記載のテスト支援システム。
【0075】
(付記5)
前記第1カバレッジ基準は、実行分岐数を前記ソースコードに含まれる全ての分岐数で除算して求める分岐網羅率に関する基準であり、
前記制御パスセット生成部は、前記ソースコードに含まれる全ての前記実行パスを抽出するとともに、前記ソースコードに含まれる全ての分岐数をカウントし、前記分岐網羅率を満たすまでの間、前記分岐網羅率が相対的に高くなる順序で前記制御パスセットに含める前記実行パスを選択することを特徴とする付記1乃至付記3のいずれかに記載のテスト支援システム。
【0076】
(付記6)
前記制御パスセット生成部は、前記第1カバレッジ基準及びソフトウェア構造にかかる第2カバレッジ基準に基づき、前記制御パスセットを生成し、
前記制御パスセットは、前記第1カバレッジ基準及び前記第2カバレッジ基準の双方を満たす前記実行パスから構成されることを特徴とする付記1乃至付記5のいずれかに記載のテスト支援システム。
【0077】
(付記7)
前記解析部は、前記ソースコードに含まれる分岐処理から真理値表を生成する真理値表生成部を備え、
前記テスト支援システムは、前記制御パスセットに関する情報を前記ソースコード、前記制御フローグラフ、前記真理値表の少なくとも1つに反映した表示画面を生成するテストケース作成方法指示部、を更に備えることを特徴とする付記1乃至付記6のいずれかに記載のテスト支援システム。
【0078】
(付記8)
前記テストケース作成方法指示部は、前記制御フローグラフに前記制御パスセットに含まれる全ての前記実行パスを重畳的に記載して、前記表示画面を生成することを特徴とする付記7に記載のテスト支援システム。
【0079】
(付記9)
ソースコードから処理の流れをグラフ形式で表示した制御フローグラフを生成し、
前記制御フローグラフに基づき、ソフトウェア構造にかかる第1カバレッジ基準を満たす前記ソースコード内の実行パスを含む制御パスセットを生成する、テスト支援方法。
【0080】
(付記10)
前記制御パスセットは、前記第1カバレッジ基準を満たす最小数の前記実行パスから構成されることを特徴とする付記9に記載のテスト支援方法。
【0081】
(付記11)
前記制御パスセットの候補が複数ある場合に、複数の前記制御パスセットを生成することを特徴とする付記10に記載のテスト支援方法。
【0082】
(付記12)
前記第1カバレッジ基準は、実行命令数を前記ソースコードに含まれる全ての命令数で除算して求める命令網羅率に関する基準であり、
前記ソースコードに含まれる全ての前記実行パスを抽出するとともに、前記ソースコードに含まれる全ての命令数をカウントし、前記命令網羅率を満たすまでの間、前記命令網羅率が相対的に高くなる順序で前記制御パスセットに含める前記実行パスを選択することを特徴とする付記9乃至付記11のいずれかに記載のテスト支援方法。
【0083】
(付記13)
前記第1カバレッジ基準は、実行分岐数を前記ソースコードに含まれる全ての分岐数で除算して求める分岐網羅率に関する基準であり、
前記ソースコードに含まれる全ての前記実行パスを抽出するとともに、前記ソースコードに含まれる全ての分岐数をカウントし、前記分岐網羅率を満たすまでの間、前記分岐網羅率が相対的に高くなる順序で前記制御パスセットに含める前記実行パスを選択することを特徴とする付記9乃至付記11のいずれかに記載のテスト支援方法。
【0084】
(付記14)
前記第1カバレッジ基準及びソフトウェア構造にかかる第2カバレッジ基準に基づき、前記制御パスセットを生成し、
前記制御パスセットは、前記第1カバレッジ基準及び前記第2カバレッジ基準の双方を満たす前記実行パスから構成されることを特徴とする付記9乃至付記13のいずれかに記載のテスト支援方法。
【0085】
(付記15)
前記ソースコードに含まれる分岐処理から真理値表を生成し、
前記制御パスセットに関する情報を前記ソースコード、前記制御フローグラフ、前記真理値表の少なくとも1つに反映した表示画面を生成する付記9乃至付記14のいずれかに記載のテスト支援方法。
【0086】
(付記16)
コンピュータに、
ソースコードから処理の流れをグラフ形式で表示した制御フローグラフを生成する処理と、
前記制御フローグラフに基づき、ソフトウェア構造にかかる第1カバレッジ基準を満たす前記ソースコード内の実行パスを含む制御パスセットを生成する処理と、を実行させるためのプログラム。
【符号の説明】
【0087】
1 テスト支援システム
11 ソースコード情報入力部
12 制御フローグラフ生成部
13 真理値表生成部
14 カバレッジ基準入力部
15 制御パスセット生成部
16 テストケース作成方法指示部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15