(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024130001
(43)【公開日】2024-09-30
(54)【発明の名称】ソフトウェア検証装置、及びソフトウェア検証方法
(51)【国際特許分類】
G06F 11/36 20060101AFI20240920BHJP
【FI】
G06F11/36 184
【審査請求】未請求
【請求項の数】14
【出願形態】OL
(21)【出願番号】P 2023039456
(22)【出願日】2023-03-14
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110000176
【氏名又は名称】弁理士法人一色国際特許事務所
(72)【発明者】
【氏名】鈴木 康文
(72)【発明者】
【氏名】川上 真澄
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042HH17
5B042HH18
5B042HH49
(57)【要約】 (修正有)
【課題】ソフトウェアの仕様を広くカバーし、かつ、コードカバレッジの高いテストケースを自動的に生成するソフトウェア検証装置及びソフトウェア検証方法を提供する。
【解決手段】ソフトウェア検証装置は、テストの対象であるソフトウェアの仕様情報から抽出した因子の組合せを網羅するテストケースを生成する仕様網羅テストケース生成部と、生成されたテストケースによるテストをソフトウェアに対して実行し、実行したテストケースにおけるソフトウェアのコードカバレッジ情報を生成するテスト実行部と、仕様網羅テストケース生成部で生成されたテストケースにおける因子又は当該因子の水準と、生成されたコードカバレッジ情報との関係に基づいて、コードカバレッジに係るテストケースよりもコードカバレッジを増加させる追加テストケースを生成する追加テストケース生成部と、を備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
プロセッサ及びメモリを有し、
テストの対象であるソフトウェアの仕様情報から抽出した因子の組合せを網羅するテストケースを生成する仕様網羅テストケース生成部と、
生成されたテストケースによるテストを前記ソフトウェアに対して実行し、実行したテストケースにおける前記ソフトウェアのコードカバレッジ情報を生成するテスト実行部と、
前記仕様網羅テストケース生成部で生成されたテストケースにおける因子又は当該因子の水準と、前記生成されたコードカバレッジ情報との関係に基づいて、前記コードカバレッジ情報に係るテストケースよりもコードカバレッジを増加させる追加テストケースを生成する追加テストケース生成部と、
を備えるソフトウェア検証装置。
【請求項2】
前記仕様網羅テストケース生成部は、
前記仕様情報から前記ソフトウェアの各因子、及び各因子が持つ水準を抽出し、抽出した因子の組合せに含まれる各因子それぞれが持つ各水準について、少なくとも1回テストが実行されるテストケースを生成する、
請求項1に記載のソフトウェア検証装置。
【請求項3】
前記追加テストケース生成部は、
生成されたコードカバレッジ情報に基づいて、前記コードカバレッジの増加に寄与する因子又は水準を特定することにより、追加テストケースを生成する、
請求項2に記載のソフトウェア検証装置。
【請求項4】
前記追加テストケース生成部は、
コードカバレッジの増加に寄与する1又は複数の因子を特定し、特定した因子に対する水準の種類を増やすことにより追加テストケースを生成する、
請求項3に記載のソフトウェア検証装置。
【請求項5】
前記追加テストケース生成部は、
コードカバレッジを増加させる対象のファイル又は関数を選択し、異なる水準を設定したテストケース間で、前記選択した対象に対しコードカバレッジの変化量が他の因子より大きい因子を、コードカバレッジの増加に寄与する因子として特定する、
請求項4に記載のソフトウェア検証装置。
【請求項6】
前記追加テストケース生成部は、
選択した因子の水準に関してコードカバレッジが他の水準より大きい水準を特定し、前記選択した因子及び前記特定した水準の組合せと、他の因子及び当該他の因子の水準の組合せとをテストの対象として含む追加テストケースを生成する、
請求項3に記載のソフトウェア検証装置。
【請求項7】
前記追加テストケース生成部は、
コードカバレッジを増加させる対象のファイル又は関数を選択し、選択した対象に対しコードカバレッジが他の水準より大きい水準を特定し、前記選択した因子及び前記特定した水準の組合せと、他の因子及び当該他の因子の水準の組合せとをテストの対象として含む追加テストケースを生成する、
請求項6に記載のソフトウェア検証装置。
【請求項8】
情報処理装置が、
テストの対象であるソフトウェアの仕様情報から抽出した因子の組合せを網羅するテストケースを生成する仕様網羅テストケース生成処理と、
生成されたテストケースによるテストを前記ソフトウェアに対して実行し、実行したテストケースにおける前記ソフトウェアのコードカバレッジ情報を生成するテスト実行処理と、
前記生成されたテストケースにおける因子又は当該因子の水準と、前記生成されたコードカバレッジ情報との関係に基づいて、前記コードカバレッジ情報に係るテストケースよりもコードカバレッジを増加させる追加テストケースを生成する追加テストケース生成処理とを実行する
ソフトウェア検証方法。
【請求項9】
前記情報処理装置が、
前記仕様網羅テストケース生成処理において、
前記仕様情報から前記ソフトウェアの各因子、及び各因子が持つ水準を抽出し、抽出した因子の組合せに含まれる各因子それぞれが持つ各水準について、少なくとも1回テストが実行されるテストケースを生成する、
請求項8に記載のソフトウェア検証方法。
【請求項10】
前記情報処理装置が、
前記追加テストケース生成処理において、
生成されたコードカバレッジ情報に基づいて、前記コードカバレッジの増加に寄与する因子又は水準を特定することにより、追加テストケースを生成する、
請求項9に記載のソフトウェア検証方法。
【請求項11】
前記情報処理装置が、
前記追加テストケース生成処理において、
コードカバレッジの増加に寄与する1又は複数の因子を特定し、特定した因子に対する水準の種類を増やすことにより追加テストケースを生成する、
請求項10に記載のソフトウェア検証方法。
【請求項12】
前記情報処理装置が、
前記追加テストケース生成処理において、
コードカバレッジを増加させる対象のファイル又は関数を選択し、異なる水準を設定したテストケース間で、前記選択した対象に対しコードカバレッジの変化量が他の因子より大きい因子を、コードカバレッジの増加に寄与する因子として特定する、
請求項11に記載のソフトウェア検証方法。
【請求項13】
前記情報処理装置が、
前記追加テストケース生成処理において、
選択した因子の水準に関してコードカバレッジが他の水準より大きい水準を特定し、前記選択した因子及び前記特定した水準の組合せと、他の因子及び当該他の因子の水準の組合せとをテストの対象として含む追加テストケースを生成する、
請求項10に記載のソフトウェア検証方法。
【請求項14】
前記情報処理装置が、
前記追加テストケース生成処理において、
コードカバレッジを増加させる対象のファイル又は関数を選択し、選択した対象に対しコードカバレッジが他の水準より大きい水準を特定し、前記選択した因子及び前記特定した水準の組合せと、他の因子及び当該他の因子の水準の組合せとをテストの対象として含む追加テストケースを生成する、
請求項13に記載のソフトウェア検証方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ソフトウェア検証装置、及びソフトウェア検証方法に関する。
【背景技術】
【0002】
ソフトウェアの不具合を発見し、品質を向上させるためには、ソフトウェアに対してテストを実施することによりソフトウェアを検証する必要がある。ソフトウェアのテストケースの数が増大すると、テストを実施するためにかかる時間及び必要な計算資源が増えるため、少ないケース数で不具合を効率的に発見するテストケースを準備することが望ましい。しかし、そのような効率的なテストケースをソフトウェア開発者が設計し、実装すると、多くの工数がかかる、という課題がある。このような課題を解決するために、ソフトウェア検証のためのテストケースを自動的に生成する技術が開示されている。
【0003】
非特許文献1では、API(Application Programming Interface)の仕様記述言語の一つであるOpenAPIを用いて記述されたインタフェース仕様情報からPairwise法(非特許文献1においてはCovering Arrayと記載されている)を用いて自動的にテストケースを生成する技術が開示されている。非特許文献1では、Pairwise法を用いることにより、インタフェース仕様情報に定義されたWebAPIパラメータの組合せを効率的に網羅したテストケースの生成することが開示されている。
【0004】
また、特許文献1には、UML(Uniformed Modeling Language)のアクティビティ図から分岐条件を抽出し、分岐を網羅するようなテストケースを生成する技術が開示されている。特許文献1では、テストケースを実行することによってソースコード中のどの経路を通ったかを示すコードカバレッジを増加させるようなテストケースを生成することが開示されている。
【先行技術文献】
【特許文献】
【0005】
【非特許文献】
【0006】
【非特許文献1】Huayao Wu,Lixin Xu,Changhai Nie,“Combinatorial testing of RESTful APIs”, Proceedings of 44th International Conference on Software Engineering, May 2022, pp.426-437.
【発明の概要】
【発明が解決しようとする課題】
【0007】
ソフトウェアの品質を評価するにあたり、テストを通じてソフトウェア仕様の組合せをどの程度まで網羅したかの仕様網羅度の観点による評価と、ソースコード中どの程度の割合のコードが実行されたかのコードカバレッジによる観点の評価とがある。
【0008】
上述した技術では、仕様の網羅とコードカバレッジとの両方を効率的に満たすようなテストケースを自動的に生成することが出来ないという課題がある。例えば、非特許文献1に開示された技術では、テストケース生成にあたりコードカバレッジは考慮されておらず、コードカバレッジを効率的に増加させるテストケースを生成することはできない。
【0009】
また、特許文献1に開示された技術では、ソースコード内部の分岐条件を記述したUMLアクティビティ図を作成する必要があり、ソースコードの内容を深く理解した開発者でなければ作成することができないという課題がある。
【0010】
本発明は、このような事情に鑑みてなされたものであり、その目的は、ソフトウェアの仕様を広くカバーし、かつ、コードカバレッジの高いテストケースを自動的に生成することが可能なソフトウェア検証装置、及びソフトウェア検証方法を提供することを目的とする。
【課題を解決するための手段】
【0011】
上記課題を解決するための本発明の一つは、プロセッサ及びメモリを有し、テストの対象であるソフトウェアの仕様情報から抽出した因子の組合せを網羅するテストケースを生成する仕様網羅テストケース生成部と、生成されたテストケースによるテストを前記ソフトウェアに対して実行し、実行したテストケースにおける前記ソフトウェアのコードカバレッジ情報を生成するテスト実行部と、前記仕様網羅テストケース生成部で生成されたテストケースにおける因子又は当該因子の水準と、前記生成されたコードカバレッジ情報との関係に基づいて、前記コードカバレッジ情報に係るテストケースよりもコードカバレッジを増加させる追加テストケースを生成する追加テストケース生成部と、を備えるソフトウェア検証装置である。
【発明の効果】
【0012】
本発明によれば、ソフトウェアの仕様を広くカバーし、かつ、コードカバレッジの高いテストケースを自動的に生成することができる。
上記した以外の構成及び効果等は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【0013】
【
図1】本発明の第1の実施形態におけるソフトウェア検証装置の構成例を示す図である。
【
図2】インタフェース仕様情報の一例を示す図である。
【
図4】コードカバレッジ情報の一例を示す図である。
【
図5】本発明の第1の実施形態におけるソフトウェア検証装置で行われる処理の流れを説明する図である。
【
図6】本発明の第2の実施形態におけるソフトウェア検証装置の機能構成の一例を示す図である。
【
図7】Pairwise生成パラメータの一例を示す図である。
【
図8】ソフトウェア検証装置で行われる処理の概要を説明する図である。
【
図9】ソフトウェア検証装置で行われる処理の概要を説明する図である。
【
図10】カバレッジ学習部が実行するパラメータ更新処理の一例を説明する処理フロー図である。
【
図11】カバレッジ学習部が実行するパラメータ更新処理の他の例を説明する処理フロー図である。
【
図12】テスト結果表示部が生成するテスト結果表示画面の一例を示す図である。
【発明を実施するための形態】
【0014】
以下、図面を参照して、本発明の実施形態について詳細に説明する。以下の記載および図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされている。本発明は、他の種々の形態でも実施する事が可能である。特に限定しない限り、各構成要素は単数でも複数でも構わない。
図面において示す各構成要素の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面に開示された位置、大きさ、形状、範囲などに限定されない。
以下の説明では、「テーブル」、「リスト」、「キュー」等の表現にて各種情報を説明することがあるが、各種情報は、これら以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「XXテーブル」、「XXリスト」等を「XX情報」と呼ぶことがある。識別情報について説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いるが、これらについてはお互いに置換が可能である。
同一あるいは同様な機能を有する構成要素が複数ある場合には、同一の符号に異なる添字を付して説明する場合がある。ただし、これらの複数の構成要素を区別する必要がない場合には、添字を省略して説明する場合がある。
また、以下の説明では、プログラムを実行して行う処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU、GPU)によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)および/またはインタフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主体がプロセッサとされてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノードであってもよい。プログラムを実行して行う処理の主体は、演算部であれば良く、特定の処理を行う専用回路(例えばFPGAやASIC)を含んでいてもよい。
プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサと配布対象のプログラムを記憶する記憶資源を含み、プログラム配布サーバのプロセッサが配布対象のプログラムを他の計算機に配布してもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
【0015】
[第1の実施形態]
まず、本発明の第1の実施形態におけるソフトウェア検証装置及びソフトウェア検証方法について説明する。
【0016】
図1は、本発明の第1の実施形態におけるソフトウェア検証装置100の構成例を示す図である。ソフトウェア検証装置100は、1又は複数のコンピュータにより構成される情報処理装置により実現される。ソフトウェア検証装置100は、自装置でユーザインタフェースを実装する構成例の他、適宜なネットワークを介して接続するユーザ端末をユーザインタフェースとして利用してもよい。この場合、ユーザ端末は、ソフトウェアの開発者又はテスタ等が操作する端末装置である。このユーザ端末は、具体的には、パーソナルコンピュータ、スマートフォン、又は、タブレット端末などである。
【0017】
ソフトウェア検証装置100は、テストによる検証の対象のソフトウェア(以下、「対象ソフトウェア」とする。)のテスト環境に配置された情報処理装置である。ソフトウェア検証装置100は、対象ソフトウェアのテストに必要な効率的なテストケースを自動的に生成し、生成したテストケースに基づいて実行したテストの結果を出力する。
【0018】
図示するように、ソフトウェア検証装置100は、記憶装置200、演算装置250、メモリ260、及び入出力装置270を備える。記憶装置200、演算装置250、メモリ260、及び入出力装置270は、バスを介して相互に通信接続する。
【0019】
演算装置250は、記憶装置200に保持されるプログラム210をメモリ260に読
み出すなどして実行し装置全体の統括制御を行なうとともに各種判定、演算及び制御処理を行なうCPU(Central Processing Unit)である。
また、メモリ260は、RAM(Random Access Memory)、またはROM(Read Only Memory)等の揮発性記憶素子で構成される。
【0020】
また、入出力装置270は、ユーザからのキー入力や音声入力を受け付け、また、処理データの表示を行う装置である。例えば、入出力装置270は、キーボード、マウス、タッチパネル、マイクなどの入力装置と、液晶ディスプレイ(LCD: Liquid Crystal Display)或いは有機EL(Electro―Luminescence)ディスプレイ等の表示装置又はプリンタ等の印字出力装置とからなる。また、入出力装置270は、適宜なネットワークと接続してユーザ端末との通信処理を担うネットワークインタフェースカードを含んでいてもよい。
【0021】
また、記憶装置200は、SSD(Solid State Drive)やハードディスクドライブなど適宜な不揮発性記憶素子で構成される。記憶装置200内には、本実施例のソフトウェア検証装置100として必要な各機能を実現する為のプログラム210に加えて、対象ソフトウェアのソースコード11、インタフェース仕様情報12、後述するテストケース111、後述するテスト結果情報121、後述するコードカバレッジ情報122、及び後述する追加テストケース141が少なくとも記憶されている。
【0022】
ソフトウェア検証装置100への入力には、対象ソフトウェアのソースコード11、及びインタフェース仕様情報12が含まれる。インタフェース仕様情報12は、対象ソフトウェアのテストに用いる因子及び水準(因子の値)を生成するために必要な情報が含まれた仕様情報である。因子とは、ソフトウェアのテスト対象となるパラメータ及び要素の種類である。また、水準とは、その因子に入力が許される値又は値の代表値である。
【0023】
図2は、インタフェース仕様情報12の一例を示す図である。図に例示するインタフェース仕様情報12は、因子となる各パラメータ(「ParamA」及び「ParamB」)、各パラメータのそれぞれの型(type)、各パラメータのそれぞれが取りうる値の範囲、及び、パラメータの数等が記載された情報である。例えば、パラメータ「ParamA」は、int型であり、0以上の値である。
【0024】
例えば、ウェブサービスであればOpenAPI仕様記述に基づく仕様記述を、インタフェース仕様情報12として用いることができる。OpenAPI仕様記述から因子と水準を生成するための手法については非特許文献1に開示されている手法を用いることができる。
【0025】
続いて、
図1に示すように、プログラム210は、仕様網羅テストケース生成部110、テスト実行部120、テスト結果表示部130、及び追加テストケース生成部140のそれぞれを実現するプログラムを含む。
【0026】
仕様網羅テストケース生成部110は、インタフェース仕様情報12に基づき、対象ソフトウェアの仕様を網羅するようなテストケース111を生成する仕様網羅テストケース生成処理を実行する。
【0027】
図3は、テストケース111の一例を示す図である。図に例示するテストケース111では、因子「ParamA」に水準「0」が、因子「ParamB」に水準「a」が設定されている。
【0028】
テスト実行部120は、検証ソフトウェアのソースコード11と仕様網羅テストケース
生成部110において生成されたテストケース111とを用いて、対象ソフトウェアに対するテストを実行するテスト実行処理を実行する。テスト実行部120は、テストを実行する際に、当該テストケースの実行によりソースコード11中のどこの経路が実行されたかのコードカバレッジも合わせて取得する。これにより、テスト実行部120は、当該テストケースが成功したか否かの情報を含むテスト結果情報121、及び、当該テストケースにおけるコードカバレッジ情報122を含む情報を出力する。
【0029】
テスト結果情報121は、各テストケース111が成功(OK)したか失敗(NG)したかの情報、成功したテストケース111の件数、及び、失敗したテストケース111の件数等の情報を含む。
【0030】
図4は、コードカバレッジ情報122の一例を示す図である。コードカバレッジ情報122は、各テストケース111にける、ソースコード11中の各ファイル及び各ファイルに含まれる各関数のコードカバレッジの情報を含む。図に例示するコードカバレッジ情報122は、ファイルAのコードカバレッジ「70%」、ファイルBのコードカバレッジ「50%」、及びファイルCのコードカバレッジ「90%」を含む。コードカバレッジとは、ソースコード11がテストされた割合である。コードカバレッジの測定手法は、命令網羅、分岐網羅、条件網羅、複合条件網羅、又は、経路組合せ網羅等の、どの手法であってもよい。
【0031】
テスト結果表示部130は、テスト実行部120が出力したテスト結果情報121及びコードカバレッジ情報122を含む内容を、開発者等のユーザが確認できるように画面に表示する。また、プロジェクトの開発状況を管理するためのプロジェクト管理ツールをユーザが使用している場合には、テスト結果表示部130は、プロジェクト管理ツールに情報を送信してもよい。
【0032】
追加テストケース生成部140は、テストケース111における因子又は当該因子の水準、及び当該テストケース111を用いて得られたコードカバレッジ情報122の関係に基づいて、コードカバレッジの増加に寄与する因子又は水準を特定することにより、コードカバレッジ情報122に係るテストケース111よりもさらにコードカバレッジを増加させる追加テストケース141を生成する追加テストケース生成処理を実行する。
【0033】
ソフトウェア検証装置100は、構成する各機能を単一の情報処理装置内に配置する構成例の他、ネットワークを介して接続する複数の情報処理装置、または、クラウド上の計算資源にその機能を分散して配置してもよい。
【0034】
図5は、本発明の第1の実施形態におけるソフトウェア検証装置100で行われる処理の流れを説明する図である。図示するように、まず、仕様網羅テストケース生成部110が、インタフェース仕様情報12に基づき、対象ソフトウェアの仕様を網羅するようなテストケース111を生成する(S11)。なお、この処理は、例えば、ソフトウェア検証装置100にユーザから所定の入力がされた場合、又は所定のタイミング(例えば、所定の時刻、所定の時間間隔)等に開始される。例えば、仕様網羅テストケース生成部110は、ユーザが対象ソフトウェアのインタフェース仕様情報12を指定してソフトウェア検証装置100に読み込ませたときにこの処理を開始してもよい。
【0035】
例えば、仕様網羅テストケース生成部110は、インタフェース仕様情報12に定義された因子と水準に対して、すべての組合せを網羅するテストケースを生成してもよいし、各因子に対してランダムに値を生成する方法によりテストケースを生成してもよい。また、効果的な組合せテストのテストケースを生成するための組合せテスト技法としては、直交表を用いる方法、又は、後述するPairwise法(All-Pair法)を用いる手
法などが知られており、仕様網羅テストケース生成部110は、こられの手法を用いてテストケースを生成してもよい。
【0036】
続いて、テスト実行部120は、対象ソフトウェアのソースコード11を取得する(S12)。そして、テスト実行部120は、S11で生成したテストケース111と、S12で取得した検証ソフトウェアのソースコード11とを用いて、対象ソフトウェアに対するテストを実行する(S13)。例えば、テスト実行部120は、ソースコード11に対して、テストケース111における因子及び水準の組合せを初期値として設定し、これらの初期値を設定したソースコード11を実行させる。
【0037】
テスト実行部120は、テストを実行する際に、当該テストケース111のコードカバレッジも合わせて取得し、テスト結果情報121とともにコードカバレッジ情報122を出力する。
【0038】
テスト実行部120にてコードカバレッジを取得する方法としては、ソースコード11に対して、ソースコード11中の各行にその行が実行されたか否かの情報をログに出力するコードを挿入するようなプログラム変換をおこなった上でテストを実行する方法がある。また、テスト実行部120は、プログラムの実行位置情報を取得できる機能を持つ演算装置250を用いることによりコードカバレッジを取得してもよい。
【0039】
続いて、テスト結果表示部130が、テスト実行部120が出力したテスト結果情報121及びコードカバレッジ情報122を含む内容を、画面に表示する(S14)。
【0040】
一方、追加テストケース生成部140は、テストケース111及び当該テストケース111を用いて得られたコードカバレッジ情報122に基づいて、さらにコードカバレッジを増加させる追加テストケース141を生成する(S15)。追加テストケース生成部140は、後述するPairwise法の生成パラメータを変更する手法のほか、例えば、コードカバレッジの増加に寄与する因子に対し水準の種類を増やす、又は、選択した因子の水準のうちコードカバレッジの増加に寄与する水準と、他の因子及び当該他の因子の水準の組合せとをテストの対象として含む追加テストケース141を生成してもよい。あるいは、追加テストケース生成部140は、ソースコード11中のどこの経路が実行されたかのコードカバレッジ情報122に基づいて、実行されていない経路を実行する因子及びその水準を特定し、特定した因子及びその水準をテスト対象として含む追加テストケース141を生成してもよい。
【0041】
または、追加テストケース生成部140は、学習済みモデルを用いて追加テストケース141を生成してもよい。例えば、追加テストケース生成部140は、入力値を因子及び水準とし、出力値をコードカバレッジとするモデルを機械学習する。学習済みモデルは、例えば、ニューラルネットワーク、決定木、ランダムフォレスト、サポートベクターマシン(SVM: Support Vector Machine)のアルゴリズムに基づき構築される。
【0042】
追加テストケース生成部140において追加テストケース141が生成されると、テスト実行部120が、生成された追加テストケース141に対してテストを実行し、テスト結果情報121及びコードカバレッジ情報122を生成する。追加テストケース141に対するテストの実行結果についてもテスト結果表示部130がその内容を表示する。
【0043】
また、追加テストケース141、および、当該追加テストケース141に対して生成されたコードカバレッジ情報122を用いて、追加テストケース生成部140においてさらに追加テストケース141を生成することも可能である。追加テストケース141の生成、および、生成した追加テストケース141に対するテスト実行は、所望のコードカバレ
ッジを得られるまで繰り返すことができる。また、ソフトウェア検証装置100は、指定されたテスト実行時間に達するまで、追加テストケース141の生成及びその実行を繰り返してもよい。
【0044】
以上説明したように、本実施形態のソフトウェア検証装置100は、テストの対象であるソフトウェアのインタフェース仕様情報12から抽出した因子の組合せを網羅するテストケース111を生成する仕様網羅テストケース生成部110と、生成されたテストケース111によるテストをソフトウェアに対して実行し、実行したテストケース111におけるソフトウェアのコードカバレッジ情報122を生成するテスト実行部120と、テストケース111における因子又は当該因子の水準と、生成されたコードカバレッジ情報122との関係に基づいて、コードカバレッジ情報122に係るテストケース111よりもコードカバレッジを増加させる追加テストケースを生成する追加テストケース生成部140と、を備える。
【0045】
すなわち、本実施形態のソフトウェア検証装置100は、インタフェースの仕様に従った因子の組合せを網羅したテストケースによるコードカバレッジ情報122を取得し、取得したコードカバレッジ情報122とテストケース111の因子又は水準とに基づいて、コードカバレッジを増加させる追加テストケースを生成することができる。これにより、ソフトウェアの仕様を広くカバーし、かつ、コードカバレッジの高いテストケースを自動的に生成することができる。
【0046】
[第2の実施形態]
続いて、本発明の第2の実施形態におけるソフトウェア検証装置及びソフトウェア検証方法について説明する。
【0047】
本実施形態におけるソフトウェア検証装置100の構成は、第1の実施形態におけるソフトウェア検証装置100と同様であるため、その説明を省略する。また、本実施形態におけるソフトウェア検証装置100においても、第1の実施形態と同様に、予め記憶装置200に記憶されるプログラム210を演算装置250がメモリ260にロードして実行することにより、後述するPairwiseテストケース生成部115、テスト実行部120、テスト結果表示部130、及び後述するカバレッジ学習部150のそれぞれの各機能を実現する。なお、Pairwiseテストケース生成部115が、仕様網羅テストケース生成部110に相当し、Pairwiseテストケース生成部115及びカバレッジ学習部150が、追加テストケース生成部140に相当する。
【0048】
図6は、本発明の第2の実施形態におけるソフトウェア検証装置100の機能構成の一例を示す図である。本図において、第1の実施形態のソフトウェア検証装置100と同様の構成には同一の符号を付し、その説明を省略する。
【0049】
図示するように、ソフトウェア検証装置100は、Pairwiseテストケース生成部115、テスト実行部120、テスト結果表示部130、及びカバレッジ学習部150から構成される。また、第1の実施形態と同様に、ソフトウェア検証装置100への入力には、対象ソフトウェアのソースコード11、及びインタフェース仕様情報12が含まれる。
【0050】
Pairwiseテストケース生成部115は、インタフェース仕様情報12から得られる因子と水準の情報、及びPairwise生成パラメータ151を用いて、Pairwise法によりテストケース111を生成する。
【0051】
Pairwise法は、指定された網羅度nに対してn因子網羅のテストケースを生成
する手法である。n因子網羅とは、生成されるテストケース群により、検証対象の因子の任意のn因子の組合せに含まれるn因子が持つ各水準について、少なくとも1回テストが実行されることを意味する。例えば、1因子網羅とは、実行するテストケース群によって、テスト対象の各因子が持つ水準について、少なくとも1回テストが実行されるとことを意味する。同様に、2因子網羅とは、実行するテストケース群により、検証対象の因子の2因子の組合せに含まれる2因子のそれぞれが持つ各水準について、少なくとも1回テストが実行されることを意味する。
【0052】
Pairwise法における網羅度nは、全因子に対して共通のnを指定する他、因子ごとに異なる網羅度を指定することにより、特定の因子が含まれる場合の網羅度を増減することが可能である。Pairwise法による具体的なテストケースの生成の手段については、特許第2882687号公報などに示された手法を用いることができる。例えば、Pairwiseテストケース生成部115は、因子間の各関係に対してテストケースを列挙し、異なる関係に対するテストケースを結合して、単一のテストケースとする手法などによりテストケースを生成する。
【0053】
図7は、Pairwise生成パラメータ151の一例を示す図である。Pairwise生成パラメータ151は、各因子のそれぞれの網羅度および水準数の情報を含む。図に例示するPairwise生成パラメータ151では、因子である各パラメータ(ParamA,ParamB,ParamC,ParamD)のそれぞれに対し、水準数「4」及び網羅度「2」が設定されている。
【0054】
Pairwise生成パラメータ151の初期値を設定する方法として、予め全ての因子に対して一定の網羅度および水準数を設定する方法の他、ユーザが個別に指定する方法を用いてもよい。
【0055】
カバレッジ学習部150は、テストケース111と、当該テストケース111を用いて得られたコードカバレッジ情報122との関係に基づいて、コードカバレッジ情報122に係るテストケース111よりもコードカバレッジを増加させるようにPairwise生成パラメータ151の値を更新する。カバレッジ学習部150の処理の詳細については後述する。
【0056】
Pairwiseテストケース生成部115は、Pairwise生成パラメータ151が更新されると、更新されたPairwise生成パラメータ151を反映してテストケース111を追加する。テスト実行部120は、追加されたテストケース111に対してテストを実行し、テスト結果情報121、及びコードカバレッジ情報122を生成する。
【0057】
追加されたテストケース111と当該追加されたテストケース111に対するコードカバレッジ情報122を用いて、カバレッジ学習部150においてさらにPairwise生成パラメータ151を更新することも可能である。テストケース111の追加、生成したテストケース111に対するテスト実行、及び、Pairwise生成パラメータ151の更新は、所望のコードカバレッジを得られるまで繰り返すことができる。また、ソフトウェア検証装置100は、指定されたテスト実行時間に達するまでテストケース111の追加及びその実行を繰り返してもよい。
【0058】
<処理の概要>
図8及び
図9は、ソフトウェア検証装置100で行われる処理の概要を説明する図である。ソフトウェア検証装置100は、例えば、ソフトウェア検証装置100にユーザから所定の入力がされた場合、又は所定のタイミング(例えば、所定の時刻、所定の時間間隔
)に、本図に示す処理を実行する。例えば、ソフトウェア検証装置100は、ユーザが対象ソフトウェアのソースコード11及びインタフェース仕様情報12を指定してソフトウェア検証装置100に読み込ませたときに、本図に示す処理を実行してもよい。
【0059】
まず、ソフトウェア検証装置100のPairwiseテストケース生成部115が、インタフェース仕様情報12から、テストの対象となる因子及び各因子が持つ水準を抽出する(
図9のS90)。
図8に示す例では、Pairwiseテストケース生成部115は、インタフェース仕様情報12から、因子「paramA」及び因子「paramB」を抽出し、因子「paramA」が持つ水準「0」、「50」、及び「100」を抽出し、因子「paramB」が持つ水準「’’」、「’a’」、及び「‘bc’」を抽出している。
【0060】
続いて、Pairwiseテストケース生成部115は、Pairwise生成パラメータ151を用いて、Pairwise法により因子網羅のテストケース111を生成する(
図9のS100)。
図8に示す例では、テストケース111は、因子「paramA」に水準「0」を設定し、因子「paramB」に水準「’a’」を設定したテストケースを含む。
【0061】
続いて、テスト実行部120が、生成されたテストケース111に対してテストを実行し、テスト結果情報121、及びコードカバレッジ情報122を生成する(
図9のS200)。
図8に示す例では、コードカバレッジ情報122は、ファイルAのコードカバレッジが「70%」であり、ファイルBのコードカバレッジが「50%」であり、ファイルCのコードカバレッジが「90%」であることを示している。
【0062】
続いて、テスト結果表示部130が、生成されたテスト結果情報121、及びコードカバレッジ情報122を含む、テストの実行結果を表す情報を画面に表示する(
図9のS300)。
【0063】
続いて、カバレッジ学習部150が、テストの終了条件を満たすか否かを判定する(
図9のS400)。例えば、カバレッジ学習部150は、コードカバレッジ情報122を参照し、全てのファイル又は関数のコードカバレッジが、予め設定された閾値(例えば、60%等)以上である場合に、終了条件を満たすと判定してもよい。コードカバレッジと比較する閾値は、ユーザが予め設定する。或いは、カバレッジ学習部150は、最初にテストを実行してから、予め設定されたテスト実行時間が経過した場合に、終了条件を満たすと判定してもよい。テスト実行時間は、ユーザが予め設定する。或いは、カバレッジ学習部150は、Pairwise生成パラメータ151の更新回数が、予め設定された閾値以上である場合に、終了条件を満たすと判定してもよい。更新回数と比較する閾値は、ユーザが予め設定する。或いは、カバレッジ学習部150は、ユーザから所定の入力を受け付けた際に、終了条件を満たすと判定してもよい。
【0064】
カバレッジ学習部150は、終了条件を満たさないと判定した場合(
図9のS400:No)、テストケース111と、当該テストケース111を用いて得られたコードカバレッジ情報122との関係を用いて、コードカバレッジを増加させるようにPairwise生成パラメータ151の値を更新するパラメータ更新処理を実行する(
図9のS500)。例えば、
図8に示す例では、因子「paramA」の水準を変化させても、コードカバレッジの低いファイルBのコードカバレッジに変化がなく、因子「paramB」の水準を変化させると、ファイルBのコードカバレッジが増加する場合には、カバレッジ学習部150は、Pairwise生成パラメータ151において、因子「paramB」に水準を追加する。その後、ソフトウェア検証装置100は、
図9のS100の処理に戻る。
【0065】
一方、カバレッジ学習部150は、終了条件を満たすと判定した場合(
図9のS400:Yes)、本処理を終了する。
【0066】
このようにPairwise生成パラメータ151の値を更新することで、テストにおけるコードカバレッジを増加させることができる。
続いて、カバレッジ学習部150が実行するパラメータ更新処理の詳細について説明する。
【0067】
<第1のパラメータ更新処理>
図10は、カバレッジ学習部150が実行するパラメータ更新処理S500の一例を説明する処理フロー図である。本図に示す処理例では、テストケース111及びコードカバレッジ情報122を用いてPairwise生成パラメータ151中の水準数の値を更新する手法の一例を示している。本例では、カバレッジ学習部150は、コードカバレッジの増加に寄与する1又は複数の因子を特定し、特定した因子に対する水準の種類を増やすことにより追加テストケースを生成する。
【0068】
まず、カバレッジ学習部150は、コードカバレッジを増加させる対象となるファイル又は関数(以下、「対象ファイル又は対象関数」とする。)を決定する(S501)。対象ファイル又は対象関数を決定する方法としては、例えば、開発者、テスタ等のユーザが指定する方法、又は、予め設定したコードカバレッジ基準を満たしていないファイル若しくは関数を自動的に選択して決定する方法などがある。
【0069】
続いて、カバレッジ学習部150は、インタフェース仕様情報12から抽出した因子を一つ選択する(S502)。
【0070】
続いて、カバレッジ学習部150は、選択した因子について異なる水準を設定したテストケース間で、対象ファイル又は対象関数のコードカバレッジの変化(差)を比較する。そして、カバレッジ学習部150は、異なる水準を設定した全てのテストケース間の組合せに対してコードカバレッジの変化量の総和を算出する(S503)。
【0071】
続いて、カバレッジ学習部150は、コードカバレッジの変化量を算出していない残りの因子(S503の処理を実行していない因子)があるか否かを判定する(S504)。
【0072】
カバレッジ学習部150は、残りの因子がある場合(S504:Yes)、それぞれの因子に対してコードカバレッジの変化量を算出するため、別の因子を選択し、S502及びS503の処理を繰り返す。
【0073】
一方、カバレッジ学習部150は、残りの因子がない(全ての因子のコードカバレッジの変化量を算出した)場合(S504:No)、各因子に対して算出したコードカバレッジの変化量の総和が最大となる因子を選択し、Pairwise生成パラメータ151中の当該因子に対する水準数を1増加させる(S505)。その後、カバレッジ学習部150は、本第1のパラメータ更新処理を終了する。
【0074】
値が変化した際に、対象ファイル又は対象関数におけるコードカバレッジの変化が大きい因子については、その因子が新しい水準を持つテストケースが追加されると、既存のコードカバレッジとは異なるコードカバレッジを持つことによりコードカバレッジの率が増加することが期待される。そこで、第1のパラメータ更新処理では、カバレッジ学習部150は、最もコードカバレッジの変化量が大きい因子の水準数を増加させ、新しい水準が設定されたテストケースを生成することにより効率的にコードカバレッジを増加させる。
【0075】
なお、上述した処理例では、カバレッジ学習部150は、水準数を増加させる因子を1つ選択しているが、これに限らず、複数の因子の水準数を増加させてもよい。例えば、カ
バレッジ学習部150は、コードカバレッジの変化量が大きい順に、所定個の因子の水準数を増加させてもよいし、コードカバレッジの変化量が所定値以上の因子全ての水準数を増加させてもよい。また、水準数を増加させる値は1に限らず、2以上であってもよい。
【0076】
<第2のパラメータ更新処理>
図11は、カバレッジ学習部150が実行するパラメータ更新処理S510の他の例を説明する処理フロー図である。本図には、
図10に示す第1のパラメータ更新処理とは異なる処理例を示している。本図に示す処理例では、テストケース111及びコードカバレッジ情報122を用いてPairwise生成パラメータ151中の網羅度の値を更新する手法の一つを示している。本例では、カバレッジ学習部150は、選択した因子の水準に関してコードカバレッジが他の水準より大きい水準を特定し、選択した因子及び特定した水準の組合せと、他の因子及び当該他の因子の水準の組合せとをテストの対象として含む追加テストケースを生成する。
【0077】
まず、カバレッジ学習部150は、コードカバレッジを増加させる対象ファイル又は対象関数を決定する(S511)。対象ファイル又は対象関数を決定する手法は、上述したS501と同様であるため、説明を省略する。
【0078】
続いて、カバレッジ学習部150は、インタフェース仕様情報12において定義されている因子を一つ選択する(S512)。因子を選択する方法としては、開発者、テスタ等のユーザが指定する方法、第1のパラメータ更新処理において水準の更新対象となる因子を選択する方法と同様の方法、又は、ランダムに選択する方法、などがある。
【0079】
続いて、カバレッジ学習部150は、選択した因子が持つ水準を一つ選択する(S513)。
そして、カバレッジ学習部150は、選択した水準が設定されたテストケースの、対象ファイル又は対象関数のコードカバレッジの総和を算出する(S514)。
【0080】
続いて、カバレッジ学習部150は、選択した因子に、コードカバレッジの総和を算出していない残りの水準(S514の処理を実行していない水準)があるか否かを判定する(S515)。
【0081】
カバレッジ学習部150は、残りの水準がある場合(S515:Yes)、それぞれの水準に対してコードカバレッジの総和を算出するため、別の水準を選択し、S513及びS514の処理を繰り返す。
【0082】
一方、カバレッジ学習部150は、残りの水準がない(選択した因子の全ての水準のコードカバレッジの総和を算出した)場合(S515:No)、各水準に対して算出したコードカバレッジの総和が最大となる水準を選択する。そして、カバレッジ学習部150は、選択した水準を持つ因子に対して、Pairwise生成パラメータ151中の網羅度を、水準を選択した水準とする制約の下で、1増加させる(S516)。その後、カバレッジ学習部150は、本第2のパラメータ更新処理を終了する。
【0083】
例えば、因子の値によって呼出す関数を変更するようなソースコードにおいては、当該因子に特定の値を指定した場合には、他の因子の値を変化させても呼出し先の関数のコードカバレッジは一切増えないケースも多い。一方で、既存のテストケースでコードカバレッジが比較的大きい水準に対しては、当該水準を維持したままで他の因子の値を変化させるとカバレッジが増加することが期待される。そこで、本第2のパラメータ更新処理では、カバレッジ学習部150は、コードカバレッジの総和量がもっとも大きい水準を固定した上で網羅度を上げることにより、当該水準を持つテストケースを追加し、効率的にコー
ドカバレッジを増加させる。
【0084】
なお、上述した処理例では、カバレッジ学習部150は、コードカバレッジの総和が最大となる水準を持つ因子の網羅度を増加させているが、これに限らず、コードカバレッジの総和が最大となる水準を固定するという制約の下で、複数の因子(例えば、全ての因子)の網羅度を増加させてもよい。また、網羅度を増加させる値は1に限らず、2以上であってもよい。
【0085】
図10に示す第1のパラメータ更新処理、及び、
図11に示す第2のパラメータ更新処理は、カバレッジ学習部150が実行する処理の一例であり、これらに限られるものではない。例えば、カバレッジ学習部150における処理は、第1のパラメータ更新処理、及び、第2のパラメータ更新処理の両者を含んでもよい。
【0086】
また、カバレッジ学習部150における処理は、ランダムフォレスト、ディープニューラルネットワーク、サポートベクターマシンなどを含む機械学習アルゴリズムにより、更新するパラメータを決定してもよい。
【0087】
(テスト結果表示画面)
図12は、テスト結果表示部130が生成するテスト結果表示画面600の一例を示す図である。本図に示す表示例では、4種類の因子(paramAからparamD)のインタフェースを持つソフトウェアに対して、初期のPairwise生成パラメータ151として全因子に水準数4、網羅度2が指定された場合の結果を表示している。
【0088】
テスト結果表示画面600は、基本テストケース結果表示領域610、及び追加テストケース結果表示領域620を備える。
【0089】
基本テストケース結果表示領域610は、初期のPairwise生成パラメータ151を用いてPairwise法により生成された基本テストケースに対するテストの結果を表示する領域である。図示するように、基本テストケース結果表示領域610は、パラメータ表示領域611、テスト結果表示領域612、及びコードカバレッジ表示領域613を備える。
【0090】
パラメータ表示領域611は、初期のPairwise生成パラメータ151の各因子(パラメータ)の水準数及び網羅度を表示する領域である。本表示例では、全ての因子の水準数が「4」であり、網羅数が「2」である。
【0091】
テスト結果表示領域612は、各基本テストケースそれぞれに対しテストを実行した結果、成功(OK)したテストケースの件数と、失敗(NG)したテストケースの件数とを表示する領域である。本表示例では、50件の基本テストケースが生成され、すべてのテストケースが成功していることが、テスト結果表示領域612に表示されている。
【0092】
コードカバレッジ表示領域613は、対象ソフトウェアのソースコード11を構成する各ファイル及び各関数のそれぞれに対するコードカバレッジ(単位は「%」)を表示する領域である。本表示例では、コードカバレッジの目標を60%としており、テスト結果表示部130は、コードカバレッジの目標を満たしていないファイル及び関数のコードカバレッジを、コードカバレッジ表示領域613において太字で強調表示している。これにより、ユーザは、コードカバレッジが目標を達していないファイル又は関数を容易に把握することができる。
【0093】
また、本例では、カバレッジ学習部150は、コードカバレッジの目標を満たしていな
いファイル又は関数を、コードカバレッジを増加させる対象ファイル及び対象関数として自動的に選択する。なお、コードカバレッジを増加させる対象ファイル又は対象関数をユーザに選択させる方法の場合には、カバレッジ学習部150は、テスト結果表示画面600において、対象ファイル又は対象関数の選択入力をユーザから受け付けてもよい。
【0094】
追加テストケース結果表示領域620は、カバレッジ学習部150により更新されたPairwise生成パラメータ151を用いてPairwise法により新たに生成された追加テストケースに対するテストの結果を表示する領域である。図示するように、追加テストケース結果表示領域620は、更新パラメータ表示領域621、追加テスト結果表示領域622、及び更新コードカバレッジ表示領域623を備える。
【0095】
更新パラメータ表示領域621は、更新されたPairwise生成パラメータ151の各因子(パラメータ)の水準数及び網羅度を表示する領域である。テスト結果表示部130は、初期のPairwise生成パラメータ151から変更した水準数又は網羅度を、太字及び下線で表示する。これにより、ユーザは、更新されたPairwise生成パラメータ151の値を容易に確認することができる。本例では、因子「paramB」の水準数が「4」から「5」に増加したこと、及び、因子「paramC」の網羅度が「2」から「3」に増加したことが、更新パラメータ表示領域621の表示によりわかる。
【0096】
追加テスト結果表示領域622は、各追加テストケースそれぞれのテストを実行した結果、成功(OK)したテストケースの件数と、失敗(NG)したテストケースの件数とを表示する領域である。本表示例では、30件の追加テストケースが追加され、すべてのテストケースが成功していることが、追加テスト結果表示領域622に表示されている。
【0097】
更新コードカバレッジ表示領域623は、基本テストケースと追加テストケースとを合わせた、対象ソフトウェアのソースコード11を構成する各ファイル及び各関数のそれぞれに対するコードカバレッジを表示する領域である。本表示例では、追加テストケースによりファイル「fileA」および当該ファイル中の関数のコードカバレッジが増加し、60%以上のコードカバレッジが実現されたことが、更新コードカバレッジ表示領域623に示されている。
【0098】
テスト結果表示画面600に表示される情報は、上記に限られるものではなく、例えば、関数の各行に対してテストケースにより実行されたか否かを示す行単位のコードカバレッジ情報などを含んでも良い。
【0099】
また、テスト結果表示画面600に含まれる情報は、入出力装置270を介して画面に表示される、もしくは、レポートとして紙面に印刷される他、ネットワークを介して電子メールとして送られる方法等により開発者等のユーザに通知されてもよい。
【0100】
また、テスト結果表示画面600において各項目を強調表示する態様は、上述したものに限られない。例えば、テスト結果表示部130は、背景色又は文字色を変更することにより、各項目を強調表示してもよい。
【0101】
以上説明したように、本実施形態のソフトウェア検証装置100は、インタフェース仕様情報12からソフトウェアの各因子、及び各因子が持つ水準を抽出し、抽出した因子の組合せに含まれる各因子それぞれが持つ各水準について、少なくとも1回テストが実行される因子網羅テストのテストケース111を生成する。
【0102】
このような構成により、複数因子の組合せについて、取り得る値の組合せを効率よく網羅したテストケース111を自動的に生成することができる。
【0103】
また、本実施形態のソフトウェア検証装置100は、生成されたコードカバレッジ情報122に基づいて、コードカバレッジの増加に寄与する因子又は水準を特定することにより、追加テストケースを生成する。
【0104】
このような構成により、コードカバレッジの増加に寄与する因子又は水準に基づいて、追加テストケースを生成することができる。よって、コードカバレッジを増加させる追加テストケースを、より効率的に生成することができる。
【0105】
また、本実施形態のソフトウェア検証装置100は、コードカバレッジの増加に寄与する1又は複数の因子を特定し、特定した因子に対する水準の種類を増やすことにより追加テストケースを生成する。
【0106】
上述したように、コードカバレッジの増加に寄与する因子については、新しい水準を設定したテストケースが追加されると、コードカバレッジが増加することが期待される。よって、コードカバレッジの増加に寄与する因子の水準の種類を増やすことで、コードカバレッジを増加させる追加テストケースを、より効率的に生成することができる。
【0107】
また、本実施形態のソフトウェア検証装置100は、コードカバレッジを増加させる対象のファイル又は関数を選択し、異なる水準を設定したテストケース111間で、選択した対象に対しコードカバレッジの変化量が他の因子より大きい因子を、コードカバレッジの増加に寄与する因子として特定する。
【0108】
このような構成により、対象のファイル又は関数のコードカバレッジの増加に寄与する因子をより精度よく特定することができる。これにより、対象のファイル又は関数のコードカバレッジを増加させる追加テストケースを効率よく生成することができる。
【0109】
また、本実施形態のソフトウェア検証装置100は、選択した因子の水準に関してコードカバレッジが他の水準より大きい水準を特定し、選択した因子及び特定した水準の組合せと、他の因子及び当該他の因子の水準の組合せとをテストの対象として含む追加テストケースを生成する。
【0110】
上述したように、コードカバレッジが比較的大きい水準に対しては、当該水準を固定したまま他の因子の値を変化させると、コードカバレッジが増加することが期待される。よって、コードカバレッジが大きい水準を含む追加テストケースを生成することで、コードカバレッジを増加させる追加テストケースを、より効率的に生成することができる。
【0111】
また、本実施形態のソフトウェア検証装置100は、コードカバレッジを増加させる対象のファイル又は関数を選択し、選択した対象に対しコードカバレッジが他の水準より大きい水準を特定し、選択した因子及び特定した水準の組合せと、他の因子及び当該他の因子の水準の組合せとをテストの対象として含む追加テストケースを生成する。
【0112】
このような構成により、対象のファイル又は関数のコードカバレッジの増加に寄与する水準をより精度よく特定することができる。これにより、対象のファイル又は関数のコードカバレッジを増加させる追加テストケースを効率よく生成することができる。
【0113】
本発明は、上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲内で、任意の構成要素を用いて実施可能である。以上説明した実施形態や変形例はあくまで一例であり、発明の特徴が損なわれない限り、本発明はこれらの内容に限定されるものではない。また、上記では種々の実施形態や変形例を説明したが、本発明はこれらの内容に限定
されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
【0114】
例えば、本実施形態の各装置が備えるハードウェアの一部は、他の装置に設けてもよい。
【0115】
また、ソフトウェア検証装置の各プログラムは他の装置に設けてもよいし、あるプログラムを複数のプログラムからなるものとしてもよいし、複数のプログラムを一つのプログラムに統合してもよい。
【符号の説明】
【0116】
11 ソースコード
12 インタフェース仕様情報
100 ソフトウェア検証装置
110 仕様網羅テストケース生成部
111 テストケース
115 Pairwiseテストケース生成部
120 テスト実行部
121 テスト結果情報
122 コードカバレッジ情報
130 テスト結果表示部
140 追加テストケース生成部
141 追加テストケース
150 カバレッジ学習部
151 Pairwise生成パラメータ
200 記憶装置
210 プログラム
250 演算装置
260 メモリ
270 入出力装置
600 テスト結果表示画面