(57)【要約】  効率的かつ効果的なテストを自動的に実行することができるテスト自動化装置を提供する。モデル（２００）からパス（１２１）と因子（１２２）とを抽出し、パス（１２１）と因子（１２２）とを含む解析結果（１６１）を出力するフロー解析部（１２０）と、パス（１２１）と因子（１２２）とを用いて、パス（１２１）を分岐網羅するようにテストケース（１３１）を分岐網羅テストケース（１３１１）として生成するテストケース生成部（１３０）と、分岐網羅テストケース（１３１１）を用いてソフトウェアのテストを実行し、実行した結果をテスト結果（１４１）として出力するテスト実行部（１４０）と、テスト結果（１４１）を用いて、テストケースの追加の要否を判定する結果判定部（１５０）とを備える。
2016170937.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアの処理の流れを表すモデルを取得し、前記モデルから前記ソフトウェアの処理の経路を表すパスと、前記ソフトウェアの処理で用いられる因子とを抽出し、抽出した前記パスと前記因子とを含む解析結果を出力するフロー解析部と、
前記解析結果を記憶する解析結果記憶部と、
前記解析結果に含まれる前記パスと前記因子とを用いて、前記パスを分岐網羅するように前記因子に値を設定したテストケースを分岐網羅テストケースとして生成するテストケース生成部と、
前記テストケース生成部により生成された前記分岐網羅テストケースを用いて前記ソフトウェアのテストを実行し、実行した結果をテスト結果として出力するテスト実行部と、
前記テスト実行部により出力された前記テスト結果を用いて、テストケースの追加の要否を判定する結果判定部と
を備えるテスト自動化装置。
【請求項２】
前記テスト実行部は、
前記分岐網羅テストケースを用いた前記ソフトウェアのテストを実行中に欠陥が発生した場合、前記テスト結果に前記欠陥が発生した発生位置を含め、
前記結果判定部は、
前記テスト結果に含まれる前記発生位置に基づいて、前記因子のうち前記欠陥に関わる因子を欠陥関連因子として抽出し、抽出した前記欠陥関連因子が条件網羅されたか否かを判定し、前記欠陥関連因子が条件網羅されていないと判定した場合に前記テストケースの追加を要すると判定する請求項１に記載のテスト自動化装置。
【請求項３】
前記テストケース生成部は、
前記結果判定部により前記テストケースの追加を要すると判定された場合、前記欠陥関連因子の条件網羅率が閾値を満たすように前記欠陥関連因子に値を設定した条件網羅テストケースを生成する請求項２に記載のテスト自動化装置。
【請求項４】
前記テストケース生成部は、
前記分岐網羅テストケースを生成すると共に、前記因子の条件網羅率を記憶装置に記憶し、
前記結果判定部は、
前記因子の条件網羅率に基づいて、前記因子のうちの前記欠陥関連因子が条件網羅されているか否かを判定する請求項３に記載のテスト自動化装置。
【請求項５】
前記結果判定部は、
前記テスト結果に含まれる前記発生位置に基づいて、前記発生位置より前に実行される第１命令と前記発生位置より後に実行される第２命令とを結ぶ経路が経路網羅されたか否かを判定し、前記第１命令と前記第２命令とを結ぶ経路が経路網羅されていないと判定した場合に前記テストケースの追加を要すると判定する請求項２から４のいずれか１項に記載のテスト自動化装置。
【請求項６】
前記テストケース生成部は、
前記結果判定部により前記第１命令と前記第２命令とを結ぶ経路が経路網羅されていないと判定された場合、前記第１命令と前記第２命令とを結ぶ経路を経路網羅することにより命令間パスを抽出すると共に、前記命令間パスにおいて用いられる命令間因子を抽出し、前記命令間パスと前記命令間因子とを前記パスと前記因子として前記解析結果に含める請求項５に記載のテスト自動化装置。
【請求項７】
前記フロー解析部は、
前記ソフトウェアが変更された位置を変更位置として含む前記モデルを取得し、
前記結果判定部は、
前記モデルに含まれる前記変更位置より前に実行される第３命令と前記発生位置より後に実行される第４命令とを結ぶ経路が経路網羅されたか否かを判定し、前記第３命令と前記第４命令とを結ぶ経路が経路網羅されていないと判定した場合に前記テストケースの追加を要すると判定する請求項６に記載のテスト自動化装置。
【請求項８】
前記テストケース生成部は、
前記結果判定部により前記第３命令と前記第４命令とを結ぶ経路が経路網羅されていないと判定された場合、前記第３命令と前記第４命令とを結ぶ経路を経路網羅することにより抽出されるパスを前記命令間パスとする請求項７に記載のテスト自動化装置。
【請求項９】
フロー解析部が、ソフトウェアの処理の流れを表すモデルを取得し、前記モデルから前記ソフトウェアの処理の経路を表すパスと、前記ソフトウェアの処理で用いられる因子とを抽出し、抽出した前記パスと前記因子とを含む解析結果を出力し、
テストケース生成部が、前記解析結果に含まれる前記パスと前記因子とを用いて、前記パスを分岐網羅するように前記因子に値を設定したテストケースを分岐網羅テストケースとして生成し、
テスト実行部が、前記テストケース生成部により生成された前記分岐網羅テストケースを用いて前記ソフトウェアのテストを実行し、実行した結果をテスト結果として出力し、
結果判定部が、前記テスト実行部により出力された前記テスト結果を用いて、テストケースの追加の要否を判定するテスト自動化方法。
【請求項１０】
ソフトウェアの処理の流れを表すモデルを取得し、前記モデルから前記ソフトウェアの処理の経路を表すパスと、前記ソフトウェアの処理で用いられる因子とを抽出し、抽出した前記パスと前記因子とを含む解析結果を出力するフロー解析処理と、
前記解析結果に含まれる前記パスと前記因子とを用いて、前記パスを分岐網羅するように前記因子に値を設定したテストケースを分岐網羅テストケースとして生成するテストケース生成処理と、
前記テストケース生成処理により生成された前記分岐網羅テストケースを用いて前記ソフトウェアのテストを実行し、実行した結果をテスト結果として出力するテスト実行処理と、
前記テスト実行処理により出力された前記テスト結果を用いて、テストケースの追加の要否を判定する結果判定処理と
をコンピュータに実行させるテスト自動化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テスト自動化装置、テスト自動化方法及びテスト自動化プログラムに関する。
【背景技術】
【０００２】
ソフトウェアのテストを自動化する手法が種々提案されている。ソフトウェアのテストでは、テスト対象の動作に関係する機能、条件、及びパラメータ等を設定したデータ、すなわちテストケースが作成される。そして、ソフトウェアのテストは、作成されたテストケースを用いてプログラムを実行し、結果を評価するという過程で実施される。
従来、テストは手動で行われていた。しかし、ソフトウェアの大規模化、複雑化に伴い、テストに要する時間及び労力が増大し、欠陥の見落としが発生するようになった。このような背景の下、テストを効率的かつ効果的に行うための手法が提案されてきた。【０００３】
非特許文献１では、ソフトウェアの動作をＵＭＬ（Ｕｎｉｆｏｒｍｅｄ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ）のアクティビティ図で表し、アクティビティ図における開始から終了までのパスを網羅する度合いを基準としてテストケースを自動生成している。【０００４】
また、直交表は、テスト対象の機能及びパラメータ等、テスト対象の動作に影響するデータの取り得る値を自動的に組み合わせることにより、テストケースを列挙する手法である。
非特許文献２では、この直交表を改良し、データの値で組み合わせが不可能なものの排除、データ数の増加及び取り得る値の種類の増加への対応等、直交表で困難であった処理を実現したＨＡＹＳＴ法が提案されている。【０００５】
また、特許文献１では、テスト対象の動作に影響するデータの入力値と出力値との組み合わせを調べ、網羅的にテストケースを生成する手法が開示されている。特許文献１の手法は、さらに、出力しうる値に対応した入力値の組み合わせがテストケースに含まれなかった場合、その組み合わせのテストケースを生成し、生成したテストケースを追加する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１４−１８６４０７号公報
【非特許文献】
【０００７】
【非特許文献１】Ｄｅｂａｓｉｓｈ  Ｋｕｎｄｕ  ａｎｄ  Ｄｅｂａｓｉｓ  Ｓａｍａｎｔａ，“Ａ  Ｎｏｖｅｌ  Ａｐｐｒｏａｃｈ  ｔｏ  Ｇｅｎｅｒａｔｅ  Ｔｅｓｔ  Ｃａｓｅｓ  ｆｒｏｍ  ＵＭＬ  Ａｃｔｉｖｉｔｙ  Ｄｉａｇｒａｍｓ，”Ｊｏｕｒｎａｌ  ｏｆ  Ｏｂｊｅｃｔ  Ｔｅｃｈｎｏｌｏｇｙ，ｖｏｌ．８，Ｎｏ．３，ｐｐ．６５−８３，２００９．
【非特許文献２】山本訓稔，秋山浩一，“直交表を利用したソフトウェアテスト―ＨＡＹＳＴ法―，”ソフトウェアシンポジウム  ２００４，ｐｐ．１３−１７，２００４．
【発明の概要】
【発明が解決しようとする課題】
【０００８】
以下の説明において、フローチャートやステートマシン図等、ソフトウェアの動作を記述する図をモデルと称する。また、モデルにおける処理の経路をパスと称する。
「網羅率」とは、モデルにおけるパスの総数のうち、列挙されているパスの数の割合を
表すものとする。また、「欠陥箇所」とは、パス上の欠陥が存在する位置を表すものとする。また、「欠陥の情報」とは、欠陥箇所を含め、欠陥の種類、欠陥に関係しているデータ等、欠陥の詳細を表すものとする。欠陥の種類は、例えば、予期しない値が発生する欠陥、モデルの構造的な欠陥等である。【０００９】
一般に、ソフトウェアの欠陥は、コードに変更を加えた部分に発生しやすい。また、欠陥が検出された場合、その周囲にも欠陥が潜んでいる可能性が高い。よって、ソフトウェアの品質保証のためには網羅率のみならず検出した欠陥も評価し、欠陥の情報に基づいてテストケースを生成するのが望ましい。しかしながら、従来手法ではテストケースの生成に欠陥の情報を用いることができないという課題がある。【００１０】
非特許文献１の手法は、テストケース生成の際、パスの網羅率のみに着目している。非特許文献１の手法では、コード上の欠陥が存在する可能性のある部分を考慮せずにパスを網羅したテストケースを生成するため、欠陥を検出したら再び網羅したテストを行わなければならない。よって、テストの効率が低下するという課題がある。
非特許文献２の直交表を用いた手法も非特許文献１の手法と同様に、欠陥の情報を用いずデータの組み合わせ数のみを高めるようにテストケースを生成する。よって、非特許文献２の手法では、欠陥が潜む可能性が高い部分の組み合わせのみを追加するようにテストケースを生成することは困難であるという課題がある。
さらに、特許文献１の手法も欠陥の情報の利用については開示しておらず、特許文献１の手法では欠陥箇所とその周辺を重点的にテストするテストケースの生成は困難であるという課題がある。【００１１】
本発明は、パスの網羅率と欠陥の情報とを用いたテストケース自動生成、及びテスト自動実行による効率的かつ効果的なソフトウェアのテストの実現を目的としている。
【課題を解決するための手段】
【００１２】
本発明に係るテスト自動化装置は、
ソフトウェアの処理の流れを表すモデルを取得し、前記モデルから前記ソフトウェアの処理の経路を表すパスと、前記ソフトウェアの処理で用いられる因子とを抽出し、抽出した前記パスと前記因子とを含む解析結果を出力するフロー解析部と、
前記解析結果を記憶する解析結果記憶部と、
前記解析結果に含まれる前記パスと前記因子とを用いて、前記パスを分岐網羅するように前記因子に値を設定したテストケースを分岐網羅テストケースとして生成するテストケース生成部と、
前記テストケース生成部により生成された前記分岐網羅テストケースを用いて前記ソフトウェアのテストを実行し、実行した結果をテスト結果として出力するテスト実行部と、
前記テスト実行部により出力された前記テスト結果を用いて、テストケースの追加の要否を判定する結果判定部とを備える。
【発明の効果】
【００１３】
本発明に係るテスト自動化装置によれば、テストケース生成部が、パスを分岐網羅するように因子に値を設定したテストケースを分岐網羅テストケースとして生成し、結果判定部が、分岐網羅テストケースを用いてテストを実行したテスト結果を用いて、テストケースの追加の要否を判定するので、効率的なテストによりテストケースの追加の要否を判定することができ、効率的かつ効果的なテストを自動的に実行することができるという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】実施の形態１に係るテスト自動化装置のブロック構成図。
【図２】実施の形態１に係るテスト自動化装置のテスト自動化方法、テスト自動化処理の動作を示すフロー図。
【図３】実施の形態１に係るフロー解析部によるフロー解析処理の動作例を示す図。
【図４】実施の形態１に係るテストケース生成部による分岐網羅テストケース生成処理の動作例を示す図。
【図５】実施の形態１に係る網羅率情報の一例を示す図。
【図６】実施の形態１に係るテスト実行部によるテスト実行処理の動作例を示す図。
【図７】実施の形態１に係るテスト実行処理により生成されたテスト結果の一例を示す図。
【図８】実施の形態１に係る結果判定処理及び追加テストケース生成処理の動作例を示す図。
【図９】実施の形態２に係る結果判定処理及び追加テストケース生成処理の動作例を示す図。
【図１０】実施の形態３に係る結果判定処理及び追加テストケース生成処理の動作例を示す図。
【図１１】テスト自動化装置のハードウェア構成図。
【発明を実施するための形態】
【００１５】
まず、以下の実施の形態の説明で用いる語句について説明する。
ＵＭＬとは、Ｕｎｉｆｉｅｄ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ、すなわち統一モデリング言語である。
ステートマシン図は、状態遷移図、ステートチャート、状態機械図と同義である。
フローは、ソフトウェアの動作を表す処理の流れであり、フローチャートの開始から終了まで、ステートマシン図の２状態間の遷移の並び等がフローに相当する。
パスは、フローを構成する一つ一つの処理の経路である。
モデルは、ソフトウェアの動作を示す抽象的な概念であり、特に以下の実施の形態では図を用いて動作を視覚的に表現したものを含めてモデルと呼ぶ。モデルには、フローチャートやステートマシン図等が含まれる。
分岐網羅とは、フロー上の全ての分岐を一度は通過するようにテストすることである。
条件網羅とは、フロー上の分岐に関する条件を全て一度はテストすることである。
経路網羅とは、フロー上の全ての分岐の組合せをテストすることである。経路網羅は最も強力な網羅基準となる。
因子は、テスト対象となる変数、パラメータ、状態等の処理に影響するデータである。
水準は、因子が取り得る値である。例えば、温度を因子とすると、水準は０度、１０度等の値がある。
【００１６】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１は、本実施の形態に係るテスト自動化装置１００のブロック構成図である。
図１に示すように、テスト自動化装置１００は、フロー解析部１２０、テストケース生成部１３０、テスト実行部１４０、結果判定部１５０を備える。また、テスト自動化装置１００は、解析結果１６１を記憶する解析結果記憶部１６０、テストケース情報１７１を記憶するテストケース記憶部１７０、網羅率情報１８１を記憶する網羅率記憶部１８０、テスト結果情報１９１を記憶するテスト結果記憶部１９０を備える。
【００１７】
テスト自動化装置１００には、モデル２００が入力される。
モデル２００は、ソフトウェアの処理の流れを表すものであり、フローチャートやステートマシン図等のソフトウェアの動作を解析可能な図である。
【００１８】
フロー解析部１２０は、モデル２００を取得し、モデル２００からソフトウェアの処理
の経路を表すパス１２１と、ソフトウェアの処理で用いられる因子１２２とを抽出する。フロー解析部１２０は、入力されたモデル２００からパス１２１を抽出し、各パス１２１上の因子１２２を取得する。フロー解析部１２０は、パス１２１及び因子１２２を含む解析結果１６１を出力する。
解析結果記憶部１６０は、解析結果１６１を記憶する。
【００１９】
テストケース生成部１３０は、解析結果１６１に含まれるパス１２１と因子１２２とを用いて、パス１２１を分岐網羅するように因子１２２に値を設定したテストケース１３１を分岐網羅テストケース１３１１として生成する。すなわち、テストケース生成部１３０は、得られたパス１２１から分岐網羅を基準に因子１２２に値を設定し、テストケース１３１を生成する。テストケース生成部１３０は、生成したテストケース１３１を含むテストケース情報１７１をテストケース記憶部１７０に記憶する。また、テストケース生成部１３０は、パス毎のテストケース１３１が条件網羅する割合を表す条件網羅率を含む網羅率情報１８１を網羅率記憶部１８０に記憶する。
【００２０】
テスト実行部１４０は、テストケース生成部１３０により生成された分岐網羅テストケース１３１１を用いてソフトウェアのテストを実行し、実行した結果をテスト結果１４１として出力する。
テスト実行部１４０は、テストケース生成部１３０により生成されたテストケース１３１を用いてテストを実行する。
テスト結果記憶部１９０は、テスト実行部１４０により出力されたテスト結果１４１をテスト結果情報１９１として記憶する。
【００２１】
結果判定部１５０は、テスト実行部１４０により出力されたテスト結果１４１を用いて、テストケースの追加の要否を判定する。
結果判定部１５０は、テスト結果１４１を、欠陥の情報である欠陥情報と条件網羅率とに基づいて分析し、テストケースの追加の要否を判定する。結果判定部１５０は、テストケースの追加の要否の判定結果１５１をテストケース生成部１３０に出力する。
【００２２】
判定結果１５１がテストケースの追加を要することを示す場合、テストケース生成部１３０は、例えば、条件網羅率の基準を変更することで、欠陥箇所の周辺を重点的にテストするような追加のテストケースを生成する。テスト自動化装置１００は、その後、再びテスト実行部１４０、結果判定部１５０を実行する。
判定結果１５１がテストケースを追加しないことを示す場合、テスト自動化装置１００は処理を終了する。
【００２３】
＊＊＊動作の説明＊＊＊
図２は、本実施の形態に係るテスト自動化装置１００のテスト自動化方法、テスト自動化処理Ｓ１００の動作を示すフロー図である。
図２を用いて、テスト自動化処理Ｓ１００の動作について説明する。
【００２４】
＜フロー解析処理Ｓ１１０＞
フロー解析部１２０は、ソフトウェアの処理の流れを表すモデル２００を取得し、モデル２００からソフトウェアの処理の経路を表すパス１２１と、ソフトウェアの処理で用いられる因子１２２とを抽出し、パス１２１と因子１２２とを含む解析結果１６１を出力するフロー解析処理Ｓ１１０を実行する。
Ｓ１１１において、フロー解析部１２０は、モデル２００からパス１２１を抽出する。
Ｓ１１２において、フロー解析部１２０は、抽出したパス１２１に基づいて、モデル２００内の因子１２２を取得する。
【００２５】
図３を用いて、本実施の形態に係るフロー解析部１２０によるフロー解析処理Ｓ１１０の動作について詳しく説明する。
【００２６】
図３は、フロー解析部１２０に入力されるソフトウェアのモデル２００と、フロー解析部１２０から出力される解析結果１６１に含まれるパス１２１及び因子１２２の例を示す。フロー解析部１２０は、テスト対象のソフトウェアのモデル２００からパス１２１を抽出する。
図３の動作例では、フロー解析部１２０は、ソフトウェアのモデル２００であるフローチャートからパス１、パス２、パス３をパス１２１として抽出している。パス１２１は、ソフトウェアが動作する際に辿るモデル２００上の経路である。各パスには、ソフトウェアが行う処理内容、分岐における分岐の条件等の動作に関する情報が含まれる。動作に関する情報は、例えば、処理内容であれば「変数に値を格納する」、分岐の条件であれば「因子である温度が０度未満の場合と０度以上の場合で処理を分岐する」等の情報である。
【００２７】
次に、フロー解析部１２０は、各パス上の分岐における分岐の条件の情報を参照し、モデル２００内の因子１２２を取得する。
図３の動作例では、フロー解析部１２０は、パス１の分岐１から変数ａ，ｃを因子１２２として取得する。また、フロー解析部１２０は、パス２の分岐２から変数ｂを因子１２２として取得する。フロー解析部１２０は、このような動作を各パスで行い、モデル２００内の因子１２２をすべて取得する。
抽出したパスは、因子や動作に関する情報等をメンバとするようなクラスのオブジェクトや構造体等を配列やリスト等の一連のデータで表した形式として保持される。
【００２８】
フロー解析部１２０がパス１２１を抽出する際、全ての分岐の組み合わせを網羅する経路網羅ではパス数が膨大となる。このため、フロー解析部１２０は、経路網羅よりもパス数を抑制でき、なおかつ全ての分岐をテストできる分岐網羅でパスを抽出する。
なお、図３の動作例では、ソフトウェアのモデル２００としてフローチャートを用いているが、上述したように、動作開始から目的の処理までのフローを解析可能であれば、ステートマシン図等、他のモデルでも本実施の形態は適用可能である。ステートマシン図の場合、フロー解析部１２０は、任意の始点と終点をテスト対象の動作として設定し、始点から終点までの全ての遷移を一度は通るようにパスを抽出する。
【００２９】
＜テストケース生成処理Ｓ１２０＞
次に、テストケース生成部１３０は、解析結果１６１に含まれるパス１２１と因子１２２とを用いて、パス１２１を分岐網羅するように因子１２２に値を設定したテストケース１３１を分岐網羅テストケース１３１１として生成するテストケース生成処理Ｓ１２０を実行する。
【００３０】
Ｓ１２１において、テストケース生成部１３０は、網羅基準の判定を実行する。
テストケース生成部１３０は、現在の処理がフロー解析処理Ｓ１１０の直後の処理ならば、網羅基準は分岐網羅であると判定し、分岐網羅テストケース生成処理Ｓ１２２に進む。また、テストケース生成部１３０は、現在の処理が後述するテスト結果判定処理Ｓ１４０の直後の処理ならば、網羅基準は条件網羅であると判定し、追加テストケース生成処理Ｓ１２３に進む。
分岐網羅テストケース生成処理Ｓ１２２において、テストケース生成部１３０は、分岐網羅を網羅基準として、パスから取得した各因子についてパスの動作を満たすように水準を列挙し、分岐網羅テストケース１３１１を生成する。
追加テストケース生成処理Ｓ１２３において、テストケース生成部１３０は、条件網羅を網羅基準として、パスから取得した各因子についてパスの動作を満たすように水準を列挙し、条件網羅テストケース１３１２を生成する。
【００３１】
テストケース生成部１３０は、フロー解析部１２０により抽出された各パス上の因子に対し、各パスが開始から終了まで動作可能となるような水準を設定する。テストケース生成部１３０は、各パスが開始から終了まで動作可能となるように設定した全ての因子の水準を列挙する。テストケース生成部１３０は、このように全ての因子の水準を列挙したものをテストケース１３１とする。
テストケース生成部１３０は、分岐の際に処理対象のパスを通るように因子の水準を設定する。例えば、パス１が処理対象のパスの場合、パス１の分岐１では変数ａまたはｃのいずれかが０以下であれば分岐１を通過できる。そこで、テストケース生成部１３０は、分岐１を通過するための条件を満たす値として（ａ，ｃ）＝（１，０）と設定する。テストケース生成部１３０は、このような処理をパス上の全ての分岐で実行する。また、テストケース生成部１３０は、分岐に表れない因子については任意の値ｘを設定することで、全ての因子の水準を列挙する。
【００３２】
＜分岐網羅テストケース生成処理Ｓ１２２＞
図４を用いて、本実施の形態に係るテストケース生成部１３０による分岐網羅テストケース生成処理Ｓ１２２の動作について説明する。
図４は、図３に示すフロー解析処理Ｓ１１０で得られたパス１〜パス３に対し、因子である変数ａ，ｂ，ｃの値を列挙し、テストケース１３１を生成する動作例である。図４では、テストケース生成部１３０が分岐網羅を網羅基準としてテストケース１３１を生成する動作例を示している。
【００３３】
図４に示すように、パス１では分岐１における変数ａ，ｃが動作に関係している。パス２、パス３では、分岐１における変数ａ，ｃ及び分岐２における変数ｂが動作に関係している。
まず、パス１のように分岐するための条件は変数ａまたはｃが０以下の場合であるが、パス１において分岐網羅するためには変数ａまたはｃのいずれか一方が０であれば良い。したがって、テストケース生成部１３０は、変数ａのみを０、変数ｃを１としたテストケースを生成する。また、テストケース生成部１３０は、変数ｃについては任意の値ｘを設定する。よって、テストケース生成部１３０は、パス１をテストするテストケース１として（ａ，ｂ，ｃ）＝（０，ｘ，１）（ｘは任意の値）を生成する。
パス２では変数ａ，ｃはともに０より大でなければならないため、ａ＝１，ｃ＝１となる。また、パス２では変数ｂに関してはｂ＞０である。よって、テストケース生成部１３０は、パス２をテストするテストケース２として（ａ，ｂ，ｃ）＝（１，１，１）を生成する。
パス３では変数ａ，ｃはともに０より大でなければならないため、ａ＝１，ｃ＝１となる。また、パス３では変数ｂに関してはｂ≦０である。よって、テストケース生成部１３０は、パス３をテストするテストケース３として（ａ，ｂ，ｃ）＝（１，０，１）を生成する。
以上のように、テストケース生成処理Ｓ１２０により、テストケース１３１として（ａ，ｂ，ｃ）＝（０，ｘ，１）（ｘは任意の値），（１，１，１），（１，０，１）が自動生成される。
以上で、分岐網羅テストケース生成処理Ｓ１２２の説明を終わる。
【００３４】
上記の分岐網羅テストケース生成処理Ｓ１２２は、テストケース生成部１３０が分岐網羅を網羅基準として分岐網羅テストケース１３１１を生成する処理であった。
ただし、テストケース生成部１３０による水準の列挙の仕方は、使用する網羅基準によって変化する。網羅基準は以下の２通りであり、テストケース生成部１３０は、網羅基準における網羅率が、予め設定された閾値を満たすように自動で水準を列挙する。網羅基準における網羅率が満たすべき閾値の選び方は任意とする。
【００３５】
以下に２通りの網羅基準について説明する。
（１）フロー解析処理Ｓ１１０直後のテストケース生成処理Ｓ１２０時には分岐網羅を用いる。ただし、分岐網羅を用いる場合、各パスに分岐は存在しないので分岐網羅は必ず１００％になる。このため、網羅基準が分岐網羅の場合の網羅率（以下、分岐網羅率とする）は考慮しなくてもよい。
（２）後述する結果判定処理Ｓ１４０後には条件網羅を用いる。分岐の条件をすべてテストしない場合、条件網羅を網羅基準とした場合の網羅率（以下、条件網羅率とする）は１００％未満になる。例えば、分岐の条件が「ａ≦０、または、ｃ≦０」であるとき、水準に境界値を用いる場合このパスを通るテストケースには、（ａ，ｃ）＝（０，１），（０，０），（１，０）の３通りがある。この中の２つを用いると条件網羅率は２／３≒６７％となる。このため、条件網羅率が満たすべき閾値を５０％とすると、テストケース生成部１３０は、条件網羅率を満たすために上記３通りのテストケースからランダムに２つ選択する。また、条件網羅率が満たすべき閾値を１００％とすると、テストケース生成部１３０は、条件網羅率を満たすために上記３通りのテストケースの全てを選択する。
【００３６】
以上のように、網羅基準を変更することで、分岐網羅ではひとつのパス上で１通りのテストを行うのに対し、１００％の条件網羅では分岐に関わる因子の水準の組合せを全てテストする。これにより、条件網羅を網羅基準とした場合、分岐網羅を網羅基準とした場合よりも詳細にテストすることが可能である。したがって、本実施の形態に係るテスト自動化装置１００では、テストケースを追加する時には条件網羅を用いることで、欠陥箇所の周辺を重点的にテスト可能なテストケースを生成できる。
【００３７】
さらに、テストケース生成処理Ｓ１２０についての説明を続ける。
テストケース生成部１３０は、各パスをテストするテストケース１３１を生成した際の因子１２２の条件網羅率を網羅率情報１８１に記録しておく。
【００３８】
図５は、本実施の形態に係る網羅率情報１８１の一例を示す図である。図５では、分岐網羅テストケース生成処理Ｓ１２２時に設定される網羅率情報１８１を示している。
上記（１）の分岐網羅でテストケースを生成した場合、パス１の分岐１では３通りの（ａ，ｃ）＝（０，１），（０，０），（１，０）から１つを選択する。このため、分岐１における（ａ，ｃ）の条件網羅率は、（１／３）×１００≒３３．３３％となる。パス２の分岐１では（ａ，ｃ）は（１，１）の１通りしかないため条件網羅率は１００％となる。パス２の分岐２ではｂはｂ＝１の１通りしかないため条件網羅率は１００％である。
このように、テストケース生成部１３０は、各パスにおける条件網羅率１８１１を網羅率情報１８１に記憶する。
網羅基準を条件網羅とした場合の追加テストケース生成処理Ｓ１２３の詳細については後述する。
【００３９】
＜テスト実行処理Ｓ１３０＞
次に、テスト実行部１４０は、テストケース１３１を用いてテストを実行するテスト実行処理Ｓ１３０を実行する。テスト実行部１４０は、実行の結果としてテスト結果１４１を出力する。
【００４０】
図６を用いて、本実施の形態に係るテスト実行部１４０によるテスト実行処理Ｓ１３０の動作について詳しく説明する。
【００４１】
テスト実行部１４０は、テストケース生成処理Ｓ１２０により生成された分岐網羅テストケース１３１１を用いてソフトウェアのテストを実行し、実行した結果をテスト結果１４１として出力する。なお、以下で説明するテストケース１３１は分岐網羅テストケース
１３１１であるが、条件網羅テストケース１３１２であっても同様の処理である。
【００４２】
テスト実行部１４０は、テストケース情報１７１に含まれる各テストケースのそれぞれの変数の値を各変数に設定し、パス上の処理を逐次実行する。各テストケースはパスを基準に生成されているため、図６に示すように各パスの実行処理は必ず各パス上を通過する。図６のパス１の実行処理に示すように、テストの実行中に欠陥が発生した場合、処理が中断する。
テスト実行部１４０によるテストの実行中に発生しうる欠陥の例として、「変数を用いた処理において設定した変数が予期しない値であった」、「変数を用いた処理の後に得られる結果が予期しないものであった」等、テストケースとして列挙された因子の水準に関するものや、無限ループ等、モデル２００の構造に関するものが挙げられる。
【００４３】
テスト実行部１４０は、各テストケースで検出されたソフトウェアの動作の欠陥を、対応するパス毎にテスト結果１４１として記録する。テスト実行部１４０は、テストの実行中に欠陥が発生した場合、テスト結果１４１に欠陥が発生した発生位置１４１１を含める。
【００４４】
図７は、本実施の形態に係るテスト実行処理Ｓ１３０により生成されたテスト結果１４１の一例である。
図６の動作例では、パス１の実行処理において、パス１上に潜んでいた欠陥が、テスト実行中に検出された場合を示している。このとき、テスト実行部１４０は、検出された欠陥の情報をテスト結果１４１に記録する。
欠陥の情報には、欠陥発生個所を示す発生位置１４１１、欠陥の種別が設定される。発生位置１４１１には、どの条件分岐の後に検出されたか等の情報が設定される。図７に示すように、発生位置１４１１には、分岐１の後に検出された等の情報が設定される。また、欠陥の種別には、因子の水準に関するものか、モデルの構造に関するものか等の情報が設定される。図７に示すように、欠陥の種別には、無限ループ等の情報が設定される。
【００４５】
＜結果判定処理Ｓ１４０＞
結果判定部１５０は、テスト実行処理Ｓ１３０により出力されたテスト結果１４１を用いて、テストケースの追加の要否を判定する結果判定処理Ｓ１４０を実行する。結果判定部１５０は、網羅率情報１８１とテスト結果１４１とに基づいて、テストケースの追加が必要か否かを判定する。
【００４６】
Ｓ１４１において、結果判定部１５０は、テスト結果１４１に基づいて、各パスに欠陥があるか否かを判定する。全てのパスに欠陥が無いと判定した場合、結果判定部１５０は、処理を終了する。欠陥が有ると判定した場合、結果判定部１５０は、Ｓ１４２に進む。
【００４７】
Ｓ１４２において、結果判定部１５０は、欠陥が有ると判定したパスにおいて、特定の因子について条件網羅が可能であるか否かを判定する。条件網羅が不可能と判定した場合、結果判定部１５０は、処理を終了する。条件網羅が可能と判定した場合、結果判定部１５０は、テストケース生成処理Ｓ１２０に処理を戻す。
結果判定部１５０は、テスト結果１４１に含まれる発生位置１４１１に基づいて、因子１２２のうち欠陥に関わる因子を欠陥関連因子１２２１として抽出する。結果判定部１５０は、抽出した欠陥関連因子１２２１が条件網羅されたか否かを判定し、欠陥関連因子１２２１が条件網羅されていないと判定した場合にテストケースの追加を要すると判定する。
【００４８】
図８では、本実施の形態に係る結果判定処理Ｓ１４０及び結果判定処理Ｓ１４０後の追加テストケース生成処理Ｓ１２３の動作例を示す。図２及び図７，８を用いて、結果判定
処理Ｓ１４０の動作例について詳しく説明する。
【００４９】
結果判定部１５０は、以下のようなアルゴリズムでテストケースの追加の必要性を判定する。
Ｓ１４１において、結果判定部１５０は、テスト結果１４１を参照し、１つ以上のパスに欠陥が検出されているか判定する。欠陥が検出されていれば、結果判定部１５０は、Ｓ１４２に進む。結果判定部１５０は、図７に示すテスト結果１４１の発生位置１４１１及び欠陥の種別に欠陥に関する情報が設定されている場合に、該当のパスに欠陥が検出されたと判定する。
Ｓ１４２において、結果判定部１５０は、列挙された因子のうち特定の因子、すなわち欠陥関連因子１２２１が条件網羅を満たしているか否かを判定する。特定の因子、すなわち欠陥関連因子１２２１とは、欠陥に関わる因子である、検出された欠陥に直接関係する因子の他、パス上における欠陥箇所の幾つか前後にある因子、および欠陥に関係している因子と相関がある有則な因子等を指すものとする。
欠陥関連因子１２２１が条件網羅を満たしていないと判定した場合、結果判定部１５０は、欠陥関連因子１２２１についてテストケースを追加すると判定し、テストケース生成処理Ｓ１２０に戻る。
【００５０】
図８の動作例では、結果判定部１５０は、パス１のテスト結果１４１における欠陥の情報を参照し、欠陥箇所のひとつ前の処理に変数ａ，ｃに関する分岐１が存在すると判定する。そこで、結果判定部１５０は、変数ａ，ｃを欠陥関連因子１２２１として、変数ａ，ｃの値が新たなテストケースとして追加可能か確認する。結果判定部１５０は、網羅率情報１８１を参照し、パス１における分岐１の条件網羅率と閾値とを比較し、変数ａ，ｃのテストケースを追加可能であるか否かを判定する。つまり、結果判定部１５０は、条件網羅率に基づいて、因子１２２のうちの欠陥関連因子１２２１が条件網羅されているか否かを判定する。なお、閾値には、予め適切な値が設定されているものとする。
【００５１】
ここで、閾値が１００％であるとする。結果判定部１５０は、網羅率情報１８１からパス１における分岐１の条件網羅率３３．３３％を取得する。結果判定部１５０は、取得した条件網羅率３３．３３％が閾値１００％よりも低いため、パス１における分岐１に関して新たに変数ａ，ｃのテストケースを追加可能であると判定する。
【００５２】
上述した分岐網羅テストケース生成処理Ｓ１２２では、分岐網羅のみを基準にしていたため、パス１をテストするテストケースでは変数ａ，ｃの条件を網羅していない。したがって、結果判定部１５０は、パス１に関して新たに変数ａ，ｃのテストケースを追加可能であり、テストケースを追加すると判定する。
【００５３】
結果判定部１５０は、テストケースを追加するパスの種別と欠陥関連因子１２２１とを含む判定結果１５１をテストケース生成部１３０に出力する。図８の動作例では、パスの種別をパス１、欠陥関連因子１２２１を変数ａ，ｃとする判定結果１５１をテストケース生成部１３０に出力する。なお、結果判定部１５０によるテストケース生成部１３０へのフィードバックの方法は、上記の判定結果１５１を用いるものでなくてもよい。例えば、テストケースの追加を表すフラグを結果判定部１５０とテストケース生成部１３０とで共有する記憶領域に設けてもよい。結果判定部１５０からテストケース生成部１３０へ判定結果をフィードバックすることができれば、どのような方法でも構わない。
【００５４】
＜追加テストケース生成処理Ｓ１２３＞
次に、図２及び図７，８を用いて、追加テストケース生成処理Ｓ１２３について説明する。
【００５５】
Ｓ１２１において、テストケース生成部１３０は、網羅基準を判定する。上述したように、テストケース生成部１３０は、現在の処理がフロー解析処理Ｓ１１０の直後の処理ならば、網羅基準は分岐網羅であると判定し、分岐網羅テストケース生成処理Ｓ１２２に進む。また、テストケース生成部１３０は、現在の処理が結果判定処理Ｓ１４０の後の処理ならば、網羅基準は条件網羅であると判定し、追加テストケース生成処理Ｓ１２３に進む。
ここでは、テストケース生成部１３０は、結果判定部１５０から出力された判定結果１５１を取得し、判定結果１５１から結果判定処理Ｓ１４０の後の処理であると判定し、追加テストケース生成処理Ｓ１２３に進む。
【００５６】
結果判定部によりテストケースの追加を要すると判定された場合、テストケース生成部１３０は、欠陥関連因子１２２１の条件網羅率が閾値を満たすように欠陥関連因子に値を設定した条件網羅テストケース１３１２を生成する。また、テストケース生成部１３０は、条件網羅テストケース１３１２を生成すると共に、欠陥関連因子１２２１の条件網羅率を網羅率情報１８１に記録する。
【００５７】
追加テストケース生成処理Ｓ１２３では、テストケース生成部１３０は、列挙された因子のうち、検出された欠陥に関わる因子、すなわち欠陥関連因子１２２１に対し、条件網羅を基準に値を決定して条件網羅テストケース１３１２を生成する。
【００５８】
図８の動作例では、テストケース生成部１３０は、欠陥が検出されたパス１から欠陥に関わる分岐１の変数ａ，ｃを欠陥関連因子１２２１として抽出し、新たなテストケースを生成する処理を示している。
テストケース生成部１３０は、条件網羅するようにテストケースを列挙する。テストケース生成部１３０は、欠陥が発生したパスとしてパス１、特定の因子として変数ａ，ｃを判定結果１５１から取得する。
テストケース生成部１３０は、分岐網羅テストケース生成処理Ｓ１２２において既に変数ａ，ｃに対して（ａ，ｃ）＝（０，１）を与えている。これらは分岐網羅を基準に決定した値であるが、結果判定部１５０後の処理の場合、変数ａ，ｃは条件網羅を基準に決定される。条件網羅するためには、変数ａ，ｃの値がａ＝１およびｃ＝０の場合と、ａ＝ｃ＝０の場合とに関してもテストケースとする必要がある。したがって、テストケース生成部１３０は、（ａ，ｃ）＝（０，０），（１，０）となるテストケース４，５を生成し、元のテストケース情報１７１に追加する。
【００５９】
図８に示すように、テストケース生成部１３０は、既にテストケース１〜３を含むテストケース情報１７１に、新たに生成したテストケース４，５を追加する。テストケース４，５は、パス１の分岐１を重点的にテストするための条件網羅テストケース１３１２である。
また、テストケース生成部１３０は、パス毎の条件網羅率を更新する。例えば、テストケース生成部１３０は、パス１における分岐１が条件網羅率３３．３３％だったものを１００％に変更する。
以上で、追加テストケース生成処理Ｓ１２３についての説明を終わる。
【００６０】
テスト自動化装置１００は、再び、テスト実行処理Ｓ１３０、結果判定処理Ｓ１４０を実行する。テスト自動化装置１００は、欠陥に関わる因子について条件網羅ができなくなるまで上記処理を繰り返す。
以上で、本実施の形態に係るテスト自動化装置１００のテスト自動化処理についての説明を終わる。
【００６１】
なお、上記の説明では、閾値が１００％の場合について説明した。しかし、閾値は１０
０％未満でもよい。
例えば閾値が８０％の場合、追加テストケース生成処理Ｓ１２３では、テストケース生成部１３０は、まず条件網羅率８０％を満たすように条件網羅してテストケースを決定してもよい。条件網羅率８０％で決定したテストケースにおいても欠陥が発生した場合には、次の追加テストケース生成処理Ｓ１２３では、テストケース生成部１３０は、条件網羅率を８０％から１００％に上げてテストケースを生成してもよい。
具体的には、テストケース生成部１３０は、追加テストケース生成処理Ｓ１２３において、条件網羅率が閾値８０％を満たすように条件網羅してテストケース４を決定する。そしてテスト実行部１４０によるテスト実行処理により欠陥が発生した場合、テストケース生成部１３０は、次の追加テストケース生成処理Ｓ１２３において、条件網羅率を８０％から１００％に上げてテストケース５を決定する。このように、テストケース生成部１３０は、段階的に条件網羅率を上げてテストケースを生成するようにしてもよい。
【００６２】
また、上記の説明では、パス１の分岐１の後で欠陥が発生した例について説明したため、欠陥に関わる因子を分岐１の変数ａ，ｃのみとした。しかし、以下の説明では、図６のパス２の実行処理における点線に示すように、欠陥がパス２の分岐２の後に発生した場合について説明する。この場合、欠陥に関わる因子は、欠陥の直前の分岐２の変数ｂのみとしてもよいし、分岐１の変数ａ，ｃ及び分岐２の変数ｂとしてもよい。
【００６３】
ここでは、欠陥に関わる因子として変数ａ，ｂ，ｃを選択するものとする。また、網羅率の閾値は１００％であるものとする。
追加テストケース生成処理Ｓ１２３において、テストケース生成部１３０は、分岐１と分岐２の条件網羅率を共に１００％として、テストケースを生成してもよい。あるいは、テストケース生成部１３０は、欠陥に関わる分岐２の因子の条件網羅率は上げて、正常に追加した分岐１の条件網羅率は上げずにテストケースを生成してもよい。すなわち、テストケース生成部１３０は、欠陥に関わる分岐２の条件網羅率は閾値の１００％として変数ｂを決定し、正常に追加した分岐１の条件網羅率は網羅率情報１８１に設定されている３３．３３％のままで変数ａ，ｃを決定してもよい。あるいは、テストケース生成部１３０は、欠陥に関わる分岐２の因子の条件網羅率は閾値１００％まで上げ、正常に追加した分岐１の条件網羅率は分岐２の条件網羅率１００％より下げてテストケースを生成してもよい。
このように、条件網羅率を欠陥に関わる度合いにより操作することで、きめ細かくテストケースを決定することができ、効率的かつ効果的なソフトウェアのテストを行うことができる。
【００６４】
＊＊＊本実施の形態の効果の説明＊＊＊
以上のように、本実施の形態に係るテスト自動化装置は、モデルからパスと因子を抽出するフロー解析部と、パスから分岐網羅するようにテストケースを生成するテストケース生成部を備える。また、テスト自動化装置は、生成されたテストケースを用いてテストを実行するテスト実行部と、欠陥の情報に基づきテストケースの追加の判断を行うテスト結果判定部とを備える。よって、本実施の形態に係るテスト自動化装置よれば、欠陥の情報に基づきテストケースの追加の判断を行うことができるので、効率的かつ効果的なテストを実行することができる。
【００６５】
また、本実施の形態に係るフロー解析部によれば、与えられたモデルから全ての分岐を一度以上通過するようにパスを抽出し、モデル内の因子を列挙するので、テストケースの生成を効率的に行うことができる。
【００６６】
また、本実施の形態に係るテストケース生成部によれば、フロー解析部の処理後、各パスから列挙した因子に対して分岐網羅を基準に水準を決定し、テストケースを生成するの
で、テストケースの生成をより効率的に行うことができる。
【００６７】
また、本実施の形態に係るテストケース生成部によれば、結果判定部の処理後、欠陥に関わる因子に対し、条件網羅を基準に値を決定し、テストケースを生成するので、モデルにおいて欠陥に関わる箇所を重点的にテストするテストケースを生成することができる。
【００６８】
また、本実施の形態に係るテスト実行部によれば、テストケースの各水準をそれぞれパス上の因子に与えて処理を逐次実行し、欠陥が検出されたらその位置情報を記録するので、位置情報から欠陥に関わる因子を的確に選択することができる。
【００６９】
また、本実施の形態に係る結果評価部によれば、欠陥が検出されたパスが存在するか検証し、存在した場合、欠陥に関わる因子が条件網羅を満たしていないか検証し、条件網羅していなければ、新たなテストケースを追加すると判断するので、効率的かつ効果的なテストケースを生成することができる。
【００７０】
また、本実施の形態に係るテストケース生成部、テスト実行部、結果判定部によれば、結果判定部でテストケースの追加を行うと判断した場合、再びテストケース生成部に戻り、テストケースを生成した後にテスト実行部、結果判定部を実行し、テストケースを追加しないと判定するまでこの処理を繰り返すので、効率的かつ効果的なテストを欠陥に関わる因子について重点的に実行することができる。
【００７１】
また、本実施の形態に係るテストケース生成部によれば、条件網羅率を欠陥に関わる度合いにより操作しながらテストケースを生成することができるので、きめ細かくテストケースを決定することができ、効率的かつ効果的なソフトウェアのテストを行うことができる。
【００７２】
以上のように、本実施の形態に係るテスト自動化装置は、テストケース追加後は、再びテスト実行部にて新たに追加されたテストケースを用いてテストの自動実行を行う。テスト自動化装置は、このようなテストケース生成部から結果判定部までの処理のサイクルを、テストケースの追加を行わないと判断するまで繰り返す。このように、本実施の形態に係るテスト自動化装置は、本アイデアは欠陥の情報をフィードバックしてテストケースを生成することで、欠陥箇所の周辺の重点的なテストを可能にしており、より効率的かつ効果的なソフトウェアのテストを実現することができる。
【００７３】
実施の形態２．
本実施の形態では、主に、実施の形態１と異なる点について説明する。
本実施の形態において、実施の形態１で説明した構成と同様の構成には同一の符号を付し、その説明を省略する。
【００７４】
上記の実施の形態１では、結果判定部１５０の処理後にテストケースを追加する際、テストケース生成部１３０は網羅基準として条件網羅を用いていた。しかし、本実施の形態では、フロー解析部１２０の処理直後に生成されるテストケースよりも詳細に動作を網羅したテストケースを生成可能であれば、テストケース生成部１３０は条件網羅以外の網羅基準を用いてテストケースを生成してもよい。
【００７５】
＊＊＊構成の説明＊＊＊
本実施の形態に係るテスト自動化装置１００の構成は、実施の形態１で説明した図１と同様である。
【００７６】
＊＊＊動作の説明＊＊＊
図９は、本実施の形態に係るテスト自動化処理Ｓ１００において結果判定処理Ｓ１４０後の追加テストケース生成処理Ｓ１２３ａを説明する図である。
本実施の形態に係る追加テストケース生成処理Ｓ１２３ａは、経路網羅を用いて追加のテストケースを生成する。
【００７７】
図９では、モデル２００上の命令２で欠陥が検出されている場合の経路網羅の例を示している。命令２で欠陥が検出されたとき、結果判定部１５０は、欠陥箇所である発生位置１４１１の幾つか前の命令から命令２まで経路網羅されているか検証する。何命令前から網羅するかは任意で設定する。
すなわち、結果判定部１５０は、テスト結果１４１に含まれる発生位置１４１１に基づいて、発生位置１４１１より前に実行される第１命令と発生位置１４１１より後に実行される第２命令とを結ぶ経路が経路網羅されたか否かを判定する。結果判定部１５０は、第１命令と第２命令とを結ぶ経路が経路網羅されていないと判定した場合にテストケースの追加を要すると判定する。なお、図９において命令１は第１命令の例であり、命令２は第２命令の例である。
【００７８】
図９では、結果判定部１５０は、命令１から命令２までを検証している。その結果、結果判定部１５０は、命令１から命令２までを経路網羅されていなければ、テストケース追加と判定し、テストケース追加の判定結果１５１をテストケース生成部に出力する。
【００７９】
テストケース生成部１３０は、結果判定部１５０により命令１と命令２とを結ぶ経路が経路網羅されていないと判定された場合、命令１と命令２とを結ぶ経路を経路網羅することにより命令間パス１５１２を抽出する。また、テストケース生成部１３０は、命令間パス１５１２の各パスにおいて用いられる命令間因子１５１３を抽出し、命令間パス１５１２と命令間因子１５１３とをパス１２１と因子１２２として解析結果１６１に含める。その後、テスト自動化装置１００は、実施の形態１で説明したように、各パスについて必要であればテストケースを追加しつつテストを実行する。
【００８０】
テストケース生成部１３０は、命令１から命令２までのパスを網羅的に抽出する。テストケース生成部１３０は、図９の（Ａ）〜（Ｅ）の５つのパスを命令間パス１５１２として抽出したものとする。テストケース生成部１３０は、得られた（Ａ）〜（Ｅ）の各パス上の命令間因子１５１３を取得し、命令間因子１５１３の各因子の水準を決定する。このとき、テストケース生成部１３０は、各パスにおいて、分岐網羅を網羅基準としてテストケースを生成してもよい。あるいは、テストケース生成部１３０は、各パスにおいて、条件網羅を網羅基準としてテストケースを生成してもよい。
テストケース生成部１３０は、各パスにおいて、実施の形態１で説明したように新たにテストケースを生成し、テストケース情報１７１に追加する。
以上で、追加テストケース生成処理Ｓ１２３ａの説明を終わる。
【００８１】
＊＊＊本実施の形態の効果の説明＊＊＊
以上のように、本実施の形態に係るテスト自動化装置によれば、テストケース生成部が経路網羅を用いることで動作の因果関係に基づいてテストケースを生成可能となり、効率的かつ効果的なソフトウェアのテストが実現する。
【００８２】
実施の形態３．
本実施の形態では、主に、実施の形態１，２と異なる点について説明する。
本実施の形態において、実施の形態１，２で説明した構成と同様の構成には同一の符号を付し、その説明を省略する。
【００８３】
上記の実施の形態１，２に係るテスト自動化装置１００は、欠陥箇所の周辺を重点的に
テストする追加のテストケースを生成するものであった。本実施の形態では、欠陥の箇所のみならず、モデルの修正や処理の追加を行った箇所についても同様に、その周辺を重点的にテストするようにテストケースを生成する場合について説明する。これは、一般にモデルの修正やモデルへの処理の追加等、モデルの部分的な変更を行った場合、その周辺に欠陥が発生しやすいとされているためである。テストケースの生成は、修正または追加を行った処理の幾つか前後の命令の間を経路網羅することで実現する。
【００８４】
＊＊＊構成の説明＊＊＊
本実施の形態に係るテスト自動化装置１００の構成は、実施の形態１で説明した図１と同様である。
なお、ソフトウェアのモデル２００は、そのソフトウェアを修正追加した場合、追加修正した箇所を示す情報である変更位置１４１２が含まれているものとする。
【００８５】
＊＊＊動作の説明＊＊＊
図１０は、本実施の形態に係るテスト自動化処理Ｓ１００において結果判定処理Ｓ１４０ａ及び追加テストケース生成処理Ｓ１２３ｂを説明する図である。
結果判定処理Ｓ１４０ａにおいて、結果判定部１５０は、各パスにおいて、欠陥の発生を検知すると共に修正追加を行った箇所があるか否かを検知する。
図１０に示すように、モデル２００の命令１から命令２の間の命令３に修正追加を行ったものとする。
【００８６】
命令３で修正追加が検出されたとき、結果判定部１５０は、修正追加箇所の幾つか前の命令から幾つか後の命令まで経路網羅されているか検証する。何命令前から何命令後まで網羅するかは任意で設定する。
【００８７】
フロー解析部１２０は、ソフトウェアが変更された位置を変更位置１４１２として含むモデル２００を取得する。
結果判定部１５０は、モデル２００に含まれる変更位置１４１２より前に実行される第３命令と変更位置１４１２より後に実行される第４命令とを結ぶ経路が経路網羅されたか否かを判定する。結果判定部１５０は、第３命令と第４命令とを結ぶ経路が経路網羅されていないと判定した場合にテストケースの追加を要すると判定する。図１０において命令１は第３命令の例であり、命令２は第４命令の例である。
【００８８】
結果判定部１５０は、命令１から命令２までを検証している。その結果、結果判定部１５０は、命令１から命令２までを経路網羅されていなければ、テストケース追加と判定し、テストケース追加の判定結果１５１をテストケース生成部１３０に出力する。
【００８９】
テストケース生成部１３０は、結果判定部１５０により第３命令と第４命令とを結ぶ経路が経路網羅されていないと判定された場合、第３命令と第４命令とを結ぶ経路を経路網羅することにより抽出されるパスを命令間パス１５１２とする。また、テストケース生成部１３０は、命令間パス１５１２の各パスにおいて用いられる命令間因子１５１３を抽出し、命令間パス１５１２と命令間因子１５１３とをパス１２１と因子１２２として解析結果１６１に含める。その後、テスト自動化装置１００は、実施の形態１で説明したように、各パスについて必要であればテストケースを追加しつつテストを実行する。
【００９０】
テストケース生成部１３０は、命令１から命令２までのパスを網羅的に抽出する。テストケース生成部１３０は、図１０の（Ａ）〜（Ｅ）の５つのパスを命令間パス１５１２として抽出したものとする。テストケース生成部１３０は、得られた（Ａ）〜（Ｅ）の各パス上の命令間因子１５１３を取得し、命令間因子１５１３の各因子の水準を決定する。このとき、テストケース生成部１３０は、各パスにおいて、分岐網羅を網羅基準としてテス
トケースを生成してもよい。あるいは、テストケース生成部１３０は、各パスにおいて、条件網羅を網羅基準としてテストケースを生成してもよい。
テストケース生成部１３０は、各パスにおいて、実施の形態１で説明したように新たにテストケースを生成し、テストケース情報１７１に追加する。
以上で、追加テストケース生成処理Ｓ１２３ｂの説明を終わる。
【００９１】
＊＊＊本実施の形態の効果の説明＊＊＊
以上のように、本実施の形態に係るテスト自動化装置によれば、欠陥のみならず修正または追加の情報も用いることで、モデル上の欠陥が発生する可能性のある箇所についてテスト可能なテストケースが得られるため、効率的かつ効果的なソフトウェアのテストが実現する。
【００９２】
次に、図１及び図１１を用いて、本実施の形態に係るテスト自動化装置のハードウェア構成の一例について説明する。
【００９３】
テスト自動化装置はコンピュータである。
テスト自動化装置は、プロセッサ９０１、補助記憶装置９０２、メモリ９０３、通信装置９０４、入力インタフェース９０５、ディスプレイインタフェース９０６といったハードウェアを備える。
プロセッサ９０１は、信号線９１０を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
入力インタフェース９０５は、入力装置９０７に接続されている。
ディスプレイインタフェース９０６は、ディスプレイ９０８に接続されている。
【００９４】
プロセッサ９０１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。
プロセッサ９０１は、例えば、ＣＰＵ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵである。
補助記憶装置９０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。補助記憶装置９０２は、作成したソフトウェアのモデルやテスト自動化装置の機能を実現するプログラム、テスト結果の出力ファイルを保持しておく装置である。
メモリ９０３は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。メモリ９０３は、プログラムの実行ファイルやテスト対象となるソフトウェアのモデル、プロセッサ９０１によるプログラムの実行結果である解析結果、テストケース、テスト結果及び網羅率を記憶する。
通信装置９０４は、データを受信するレシーバー９０４１及びデータを送信するトランスミッター９０４２を含む。
通信装置９０４は、例えば、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
入力インタフェース９０５は、入力装置９０７のケーブル９１１が接続されるポートである。
入力インタフェース９０５は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）端子である。
ディスプレイインタフェース９０６は、ディスプレイ９０８のケーブル９１２が接続されるポートである。
ディスプレイインタフェース９０６は、例えば、ＵＳＢ端子又はＨＤＭＩ（登録商標）（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）端子である。
入力装置９０７は、例えば、マウス、キーボード又はタッチパネルである。入力装置９０７からの入力によりプログラムが実行される。
ディスプレイ９０８は、例えば、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）である。出力結果をディスプレイ９０８により確認する。
【００９５】
補助記憶装置９０２には、上述したブロック構成図に示すフロー解析部、テストケース生成部、テスト実行部、結果判定部を実現するプログラムが記憶されている。以下、フロー解析部、テストケース生成部、テスト実行部、結果判定部をまとめて「部」と表記する。
【００９６】
上述した「部」の機能を実現するプログラムは、テスト自動化プログラムとも称される。「部」の機能を実現するプログラムは、１つのプログラムであってもよいし、複数のプログラムから構成されていてもよい。
このプログラムは、メモリ９０３にロードされ、プロセッサ９０１に読み込まれ、プロセッサ９０１によって実行される。
【００９７】
更に、補助記憶装置９０２には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。
そして、ＯＳの少なくとも一部がメモリ９０３にロードされ、プロセッサ９０１はＯＳを実行しながら、「部」の機能を実現するプログラムを実行する。
【００９８】
図１１では、１つのプロセッサ９０１が図示されているが、テスト自動化装置が複数のプロセッサ９０１を備えていてもよい。
そして、複数のプロセッサ９０１が「部」の機能を実現するプログラムを連携して実行してもよい。
【００９９】
また、「部」の処理の結果を示す情報やデータや信号値や変数値が、メモリ９０３、補助記憶装置９０２、又は、プロセッサ９０１内のレジスタ又はキャッシュメモリにファイルとして記憶される。
【０１００】
「部」を「サーキットリー」で提供してもよい。
また、「部」を「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。また、「処理」を「回路」又は「工程」又は「手順」又は「部」に読み替えてもよい。
「回路」及び「サーキットリー」は、プロセッサ９０１だけでなく、ロジックＩＣ又はＧＡ（Ｇａｔｅ  Ａｒｒａｙ）又はＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）又はＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）といった他の種類の処理回路をも包含する概念である。
【０１０１】
なお、プログラムプロダクトと称されるものは、「部」として説明している機能を実現するプログラムが記録された記憶媒体、記憶装置などであり、見た目の形式に関わらず、コンピュータ読み取り可能なプログラムをロードしているものである。
【０１０２】
上記の実施の形態では、フロー解析部、テストケース生成部、テスト実行部、結果判定部がそれぞれ独立した機能ブロックとしてテスト自動化装置を構成している。しかし、テスト自動化装置は上記のような構成でなくてもよく、テスト自動化装置の構成は任意である。
例えば、テストケース生成部と結果判定部とを１つの機能ブロックとしてもよい。テスト自動化装置の機能ブロックは、上記の実施の形態で説明した機能を実現することができれば、任意である。これらの機能ブロックを、他のどのような組み合わせ、あるいは任意のブロック構成でテスト自動化装置を構成しても構わない。
また、上述したように、テスト自動化装置は１つの装置でなく、複数の装置から構成さ
れたテスト自動化システムでもよい。
【０１０３】
また、実施の形態１から３について説明したが、これらの３つの実施の形態のうち、複数を部分的に組み合わせて実施しても構わない。あるいは、これらの３つの実施の形態のうち、１つの実施の形態を部分的に実施しても構わない。その他、これらの３つの実施の形態を、全体としてあるいは部分的に、どのように組み合わせて実施しても構わない。
なお、上記の実施の形態は、本質的に好ましい例示であって、本発明、その適用物や用途の範囲を制限することを意図するものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【０１０４】
１００  テスト自動化装置、１２０  フロー解析部、１２１  パス、１２２  因子、１３１  テストケース、１３０  テストケース生成部、１４０  テスト実行部、１４１  テスト結果、１５０  結果判定部、１５１  判定結果、１６０  解析結果記憶部、１６１  解析結果、１７０  テストケース記憶部、１７１  テストケース情報、１８０  網羅率記憶部、１８１  網羅率情報、１９０  テスト結果記憶部、１９１  テスト結果情報、２００  モデル、９０１  プロセッサ、９０２  補助記憶装置、９０３  メモリ、９０４  通信装置、９０５  入力インタフェース、９０６  ディスプレイインタフェース、９０７  入力装置、９０８  ディスプレイ、９１０  信号線、９１１，９１２  ケーブル、９０４１  レシーバー、９０４２  トランスミッター、１２２１  欠陥関連因子、１３１１  分岐網羅テストケース、１３１２  条件網羅テストケース、１４１１  発生位置、１４１２  変更位置、１５１２  命令間パス、１５１３  命令間因子、１８１１  条件網羅率、Ｓ１００  テスト自動化処理、Ｓ１１０  フロー解析処理、Ｓ１２０  テストケース生成処理、Ｓ１２２  分岐網羅テストケース生成処理、Ｓ１２３，Ｓ１２３ａ，Ｓ１２３ｂ  追加テストケース生成処理、Ｓ１３０  テスト実行処理、Ｓ１４０，Ｓ１４０ａ  結果判定処理。
【図１】
2016170937.tif 000003
【図２】
2016170937.tif 000004
【図３】
2016170937.tif 000005
【図４】
2016170937.tif 000006
【図５】
2016170937.tif 000007
【図６】
2016170937.tif 000008
【図７】
2016170937.tif 000009
【図８】
2016170937.tif 000010
【図９】
2016170937.tif 000011
【図１０】
2016170937.tif 000012
【図１１】
2016170937.tif 000013
【国際調査報告】
2016170937.tif 000014
2016170937.tif 000015