(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-02
(45)【発行日】2024-12-10
(54)【発明の名称】テストケース生成装置、テストケース生成方法
(51)【国際特許分類】
G06F 11/36 20060101AFI20241203BHJP
【FI】
G06F11/36 184
(21)【出願番号】P 2021094820
(22)【出願日】2021-06-04
【審査請求日】2024-02-08
(73)【特許権者】
【識別番号】000233295
【氏名又は名称】株式会社日立情報通信エンジニアリング
(74)【代理人】
【識別番号】110001689
【氏名又は名称】青稜弁理士法人
(72)【発明者】
【氏名】左近 健太
(72)【発明者】
【氏名】舘下 桂
(72)【発明者】
【氏名】明神 智之
(72)【発明者】
【氏名】來間 啓伸
(72)【発明者】
【氏名】石川 誠
(72)【発明者】
【氏名】小川 秀人
【審査官】西間木 祐紀
(56)【参考文献】
【文献】特開2013-077124(JP,A)
【文献】特開2008-197962(JP,A)
【文献】特開2013-125420(JP,A)
【文献】特開2005-332098(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
(57)【特許請求の範囲】
【請求項1】
コンピュータにより行われる処理のテストケースを生成するテストケース生成装置であって、
入力項目であるパラメータ値を1つまたは複数含むテスト項目をテスト対象プログラムに与えて実行した結果の入力を受け付けるテスト結果入力処理と、
前記実行した結果から得られるバグ発生率に基づいて、前記パラメータ値ごとにバグ要因の可能性の高さである重要度を算出するパラメータ値重要度解析処理と、
算出された前記重要度が第1の所定の条件を満たす場合に、当該重要度に対応するパラメータ値を決定し、テストの重点箇所または/および非重点箇所を示すテスト観点に反映するテスト観点決定処理と、
反映された前記テスト観点に基づいてテスト項目を生成するテスト項目生成処理と、
生成された前記テスト項目の数が閾値を超えていた場合に、第2の所定の条件を満たす前記重要度に対応する前記パラメータ値を決定し、決定した前記パラメータ値を前記テスト観点の非重点箇所に反映して前記テスト項目の数を抑制するテスト項目抑制処理と、を行う演算装置と、
抑制された数の前記テスト項目を出力するテスト項目出力処理、を行う出力装置と、
を有することを特徴とするテストケース生成装置。
【請求項2】
前記演算装置は、ユーザから、前記第1の所定の条件を満たすパラメータないしパラメータ値、前記第2の所定条件を満たすパラメータないしパラメータ値、またはその両方の入力を受け付けるユーザ判断入力処理、を行い、
前記テスト観点決定処理において、前記ユーザ判断入力処理で入力されたパラメータないしパラメータ値を基に更新した前記重要度に基づいて、前記テスト観点に反映する前記パラメータ値を決定する、
ことを特徴とする請求項1に記載のテストケース生成装置。
【請求項3】
前記演算装置は、前記テスト結果入力処理において、直前のテスト結果と、過去のテスト結果との入力を受け付け、
前記テスト観点決定処理において、前記直前のテスト結果および前記過去のテスト結果の中から得られるバグ発生率に基づいて、前記重要度を算出する、
ことを特徴とする請求項1に記載のテストケース生成装置。
【請求項4】
前記演算装置は、前記ユーザ判断入力処理において、前記第1の所定の条件として一定の閾値以上、前記重要度が高いパラメータないしパラメータ値の数の入力を受け付け、前記第2の所定の条件として一定の閾値以上、前記重要度が低いパラメータないしパラメータ値の数の入力を受け付け、
前記テスト観点決定処理において、前記ユーザ判断入力処理で入力された数のパラメータないしパラメータ値を基に更新した前記重要度に基づいて、前記テスト観点に反映する前記パラメータ値を決定する、
ことを特徴とする請求項2に記載のテストケース生成装置。
【請求項5】
前記演算装置は、前記パラメータ値重要度解析処理において、一のパラメータ値と他の一のパラメータ値との組み合わせにおいて前記重要度を算出する、
ことを特徴とする請求項1に記載のテストケース生成装置。
【請求項6】
前記演算装置は、前記パラメータ値重要度解析処理において、前記テスト対象プログラムのソースコードを解析し、当該解析結果に基づいて、前記パラメータ値の重要度を判定する、
ことを特徴とする請求項1に記載のテストケース生成装置。
【請求項7】
前記演算装置は、前記パラメータ値重要度解析処理において、テストの網羅率が低いパラメータ値の重要度を高くする、
ことを特徴とする請求項1に記載のテストケース生成装置。
【請求項8】
コンピュータにより行われる処理のテストケースを生成するテストケース生成方法であって、
入力項目であるパラメータ値を1つまたは複数含むテスト項目をテスト対象プログラムに与えて実行した結果の入力を受け付け、
前記実行した結果から得られるバグ発生率に基づいて、前記パラメータ値ごとにバグ要因の可能性の高さである重要度を算出し、
算出された前記重要度が第1の所定の条件を満たす場合に、当該重要度に対応するパラメータ値を決定し、テストの重点箇所または/および非重点箇所を示すテスト観点に反映し、
反映された前記テスト観点に基づいてテスト項目を生成し、
生成された前記テスト項目の数が閾値を超えていた場合に、第2の所定の条件を満たす前記重要度に対応する前記パラメータ値を決定し、決定した前記パラメータ値を前記テスト観点の非重点箇所に反映して前記テスト項目の数を抑制し、
抑制された数の前記テスト項目を出力する、
ことを特徴とするテストケース生成方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、テストケース生成装置、テストケース生成方法に関する。
【背景技術】
【0002】
本技術分野の先行技術として、特開2013-77124号公報(特許文献1)がある。この公報には、「ソフトウェアテストの因子網羅テストのテストケースを生成し、前記因子網羅テストのリストを生成するソフトウェアテストケース生成装置であって、前記生成されたテストケースを記憶する記憶部と、前記生成されたテストケースに従ったソフトウェアテストの実行履歴を記憶するテスト実行履歴記憶部と、重点的にテストを実行すべき因子及び水準の要注意水準の判定条件を記憶する判断基準記憶部と、前記要注意水準の判定条件に従って、要注意の因子及び水準の組合せを判定する要注意水準組合せ分析部と要注意水準と判定された因子及び水準の組合せである要注意水準組合せを記憶する要注意水準組合せ記憶部と、前記ソフトウェアテストの実行履歴及び前記要注意水準組合せに基づいて、効率的なテストケースを生成する効果的テストケース生成部と、を備える」ことが記載されている(要約参照)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
前記特許文献1には、バグ検出効率を高めるテストケース生成方法が記載されている。しかし、特許文献1のテストケース生成方法では、バグが発生したパラメータ値に関わるテスト項目をバグの発生頻度に応じて重点的に生成することができない。
【0005】
本発明の一側面としては、バグが発生したパラメータ値に関わるテスト項目をバグの発生頻度に応じて重点的に生成することが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の一態様にかかるテストケース生成装置は、コンピュータにより行われる処理のテストケースを生成するテストケース生成装置であって、入力項目であるパラメータ値を1つまたは複数含むテスト項目をテスト対象プログラムに与えて実行した結果の入力を受け付けるテスト結果入力処理と、前記実行した結果から得られるバグ発生率に基づいて、前記パラメータ値ごとにバグ要因の可能性の高さである重要度を算出するパラメータ値重要度解析処理と、算出された前記重要度が第1の所定の条件を満たす場合に、当該重要度に対応するパラメータ値を決定し、テストの重点箇所または/および非重点箇所を示すテスト観点に反映するテスト観点決定処理と、反映された前記テスト観点に基づいてテスト項目を生成するテスト項目生成処理と、生成された前記テスト項目の数が閾値を超えていた場合に、第2の所定の条件を満たす前記重要度に対応する前記パラメータ値を決定し、決定した前記パラメータ値を前記テスト観点の非重点箇所に反映して前記テスト項目の数を抑制するテスト項目抑制処理と、を行う演算装置と、抑制された数の前記テスト項目を出力するテスト項目出力処理、を行う出力装置と、を有することを特徴とするテストケース生成装置として構成される。
【発明の効果】
【0007】
本発明の一態様によれば、バグが発生したパラメータ値に関わるテスト項目をバグの発生頻度に応じて重点的に生成することができる。
【図面の簡単な説明】
【0008】
【
図1】テストケース生成装置の構成例を示すブロック図である。
【
図2】テストケース生成装置の処理を説明するフローチャートである。
【
図3】パラメータ及びパラメータ値の説明例である。
【
図4】テスト項目及びテスト実行結果の記入例である。
【
図5】パラメータ値重要度解析処理の説明例である。
【
図6】パラメータ値重要度解析処理のフローチャートである。
【
図8】テスト項目生成処理において生成されたテスト項目の例である。
【
図9】テスト項目抑制処理のフローチャートである。
【
図10】テスト項目抑制処理において、テスト項目再生成後に得られたテスト項目の例である。
【
図11】実施例2における、テストケース生成装置の処理を説明するフローチャートである。
【
図12】コンピュータの概略の一例を示す図である。
【発明を実施するための形態】
【0009】
以下、本発明の実施形態であるテストケース生成装置の例について図面を用いて説明する。以下の記載および図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされている。本発明は、他の種々の形態でも実施する事が可能である。特に限定しない限り、各構成要素は単数でも複数でも構わない。
【0010】
図面において示す各構成要素の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面に開示された位置、大きさ、形状、範囲などに限定されない。
【0011】
以下の説明では、「データベース」、「テーブル」、「リスト」等の表現にて各種情報を説明することがあるが、各種情報は、これら以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「XXテーブル」、「XXリスト」等を「XX情報」と呼ぶことがある。識別情報について説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いた場合、これらについてはお互いに置換が可能である。
【0012】
同一あるいは同様な機能を有する構成要素が複数ある場合には、同一の符号に異なる添字を付して説明する場合がある。ただし、これらの複数の構成要素を区別する必要がない場合には、添字を省略して説明する場合がある。
【0013】
また、以下の説明では、プログラムを実行して行う処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit)、GPU(Graphics Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)および/またはインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主体がプロセッサとされてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノードであってもよい。プログラムを実行して行う処理の主体は、演算部であれば良く、特定の処理を行う専用回路(例えばFPGA(Field-Programmable Gate Array)やASIC(Application Specific Integrated Circuit))を含んでいてもよい。
【0014】
プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサと配布対象のプログラムを記憶する記憶資源を含み、プログラム配布サーバのプロセッサが配布対象のプログラムを他の計算機に配布してもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
【実施例1】
【0015】
図1は、本実施形態におけるテストケース生成装置の構成例を示す図である。
【0016】
テストケース生成装置100は、
図1に示すように、テスト結果入力処理101を実行する処理部、ユーザ判断入力処理102を実行する処理部、パラメータ値重要度解析処理103を実行する処理部、テスト観点決定処理104を実行する処理部、テスト項目生成処理105を実行する処理部、テスト項目抑制処理106を実行する処理部、パラメータ値重要度保持部107、ユーザ判断保持部108、テスト観点保持部109、テスト項目出力処理110を実行する処理部を有する。
【0017】
図1に示したテストケース生成装置100は、例えば、
図12(コンピュータ概略図)に示すような、CPU1601と、メモリ1602と、HDD(Hard Disk Drive)等の外部記憶装置1603と、CD(Compact Disk)やUSBメモリ等の可搬性を有する記憶媒体1608に対して情報を読み書きする読書装置1607と、キーボードやマウス等の入力装置1606と、ディスプレイ等の出力装置1605と、通信ネットワークに接続するためのNIC(Network Interface Card)等の通信装置1604と、これらを連結するシステムバス等の内部通信線(システムバスという)1609と、を備えた一般的なコンピュータ1600により実現できる。
【0018】
テストケース生成装置100に記憶され、あるいは処理に用いられる様々なデータ(例えば、パラメータ値重要度保持部107、ユーザ判断保持部108、テスト観点保持部109に記憶されるデータ)は、CPU1601がメモリ1602または外部記憶装置1603から読み出して利用することにより実現可能である。また、テストケース生成装置100が有する各処理部(例えば、テスト結果入力処理101、ユーザ判断入力処理102、パラメータ値重要度解析処理103、テスト観点決定処理104、テスト項目生成処理105、テスト項目抑制処理106、テスト項目出力処理110を実行する各処理部)は、CPU1601が外部記憶装置1603に記憶されている所定のプログラムをメモリ1602にロードして実行することにより実現可能である。
【0019】
上述した所定のプログラムは、読書装置1607を介して記憶媒体1608から、あるいは、通信装置1604を介してネットワークから、外部記憶装置1603に記憶(ダウンロード)され、それから、メモリ1602上にロードされて、CPU1601により実行されるようにしてもよい。また、読書装置1607を介して、記憶媒体1608から、あるいは通信装置1604を介してネットワークから、メモリ1602上に直接ロードされ、CPU1601により実行されるようにしてもよい。
【0020】
以下では、テストケース生成装置100が、ある1つのコンピュータにより構成される場合を例示するが、これらの機能の全部または一部が、クラウドのような1または複数のコンピュータに分散して設けられ、ネットワークを介して互いに通信することにより同様の機能を実現してもよい。
【0021】
テスト結果入力処理101は、未実行のテスト項目を受け取り、テストを実行した結果を記載する。
【0022】
ユーザ判断入力処理102は、ユーザが、重要度が高い、または重要度が低いと判断したパラメータないしパラメータ値を受け取る。
【0023】
パラメータ値重要度解析処理103は、テストの実行結果を基に、バグ要因の可能性を解析し、パラメータ値の重要度を決定する。
【0024】
テスト観点決定処理104は、テスト結果、及びユーザ判断を基に重要度が高いと判定したパラメータ値を用いてテスト観点を決定する。
【0025】
テスト項目生成処理105は、テスト観点を基にテスト項目を生成する。
【0026】
テスト項目抑制処理106は、生成されたテスト項目が閾値を超えていた場合に、テスト結果、及びユーザ判断を基に重要度が低いと判定したパラメータ値をテスト観点に反映し、テスト項目を抑制する。
【0027】
パラメータ値重要度保持部107は、パラメータ値重要度解析処理103において、決定したパラメータ値の重要度を保持する。
【0028】
ユーザ判断保持部108は、ユーザ判断入力処理102において、ユーザから入力された重要度が高いパラメータないしパラメータ値、重要度が低いパラメータないしパラメータ値を保持する。
【0029】
テスト観点保持部109は、テスト観点決定処理104において、決定したテスト観点を保持する。
【0030】
テスト項目出力処理110は、テスト項目生成処理105、及びテスト項目抑制処理106の結果、決定したテスト項目を出力する。
【0031】
図2は、テストケース生成装置100の処理を説明するフローチャート150である。
【0032】
ステップ151は、予め用意した初回テスト項目の入力を受け付ける。
【0033】
ステップ152は、テスト結果入力処理101を行う。
【0034】
ステップ153は、終了条件の判断を行う。その際、テスト項目数、バグ件数を判断基準として用いる。テスト項目数に関しては、初回時にはステップ151の入力結果を、2回目以降はステップ159の出力結果を用いる。バグ件数に関しては、ステップ152の結果を用いる。
【0035】
本実施例では、十分な数のテストを実施し、十分な数のバグを検出したと判断された場合、すなわち、テスト項目数、バグ件数が指定数を上回っている場合に終了条件を満たしたと判断され(ステップ153;Yes)、フローチャート150を終了する。そうでない場合には(ステップ153;No)、ステップ154に処理を進める。
【0036】
ステップ154は、パラメータ値重要度解析処理103を、ステップ155は、ユーザ判断入力処理102を、ステップ156は、テスト観点決定処理104をそれぞれ行う。また、ステップ157は、テスト項目生成処理105を、ステップ158は、テスト項目抑制処理106を、ステップ159は、テスト項目出力処理110をそれぞれ行う。ステップ159終了後はステップ153に戻り、終了条件を満たすまで繰り返し行う。
【0037】
図3は、パラメータ及びパラメータ値のテスト対象例200の説明図である。パラメータとは、プログラムに外部から入力されるデータ項目で、プログラムの動作に影響を与える。パラメータ値とは、各パラメータの取りうる値を指す。
【0038】
パラメータ及びパラメータ値のテスト対象例200は、テスト対象パラメータ201とテスト対象パラメータ値202から構成されている。
図3の場合、テスト対象パラメータ201はA,B,Cの3つのパラメータを含む。テスト対象パラメータ値202は、Aに関するパラメータ値a1,a2と、Bに関するパラメータ値b1,b2,b3と、Cに関するパラメータ値c1,c2,c3,c4を含む。
【0039】
図4は、テスト結果入力処理101の処理における、テスト項目とその実行結果の例300の説明図である。テスト項目とは、プログラムの動作確認のために用意するもので、一般的に実行条件やデータなどを示す。本実施例では、パラメータに対応するパラメータ値1つ、または複数のパラメータ値の組み合わせを指す。
【0040】
テスト項目とその実行結果の例300は、テスト項目番号301と実行対象のテスト項目302とテスト実行結果303を含む。
【0041】
例えば、
図4の場合、実行対象のテスト項目302は、テスト対象パラメータ201であるA,B,Cのパラメータ値の組み合わせで構成されており、各パラメータA,B,Cに対して、テスト対象パラメータ値202のいずれかの値が代入されている。
【0042】
テスト実行結果303は、バグ検出の有無を表している。バグを検出した場合に1、バグ未検出の場合に0をテスト実行結果303に記載する。
【0043】
図5は、パラメータ値重要度解析処理103の処理における、パラメータ値重要度の解析例400の説明図である。
【0044】
パラメータ値重要度の解析例400は、解析対象パラメータ・パラメータ値401とバグ発生率402とパラメータ値重要度403を含み、
図5ではバグ発生率402の高い順に解析対象パラメータ・パラメータ値401を表示している。パラメータ値重要度403は、パラメータ値のバグ発生率に応じて定められる、パラメータ値の重要度を示すものである。
【0045】
解析対象パラメータ・パラメータ値401は、テスト対象パラメータ201とテスト対象パラメータ値202の組み合わせで構成される。
【0046】
バグ発生率402は、解析対象パラメータ・パラメータ値401を含むテスト項目(実行対象のテスト項目302)のうち、バグを検出したテスト項目(テスト実行結果303が1となった実行対象のテスト項目302)の割合である。
【0047】
図6は、パラメータ値重要度解析処理103を説明する、重要度解析処理のフローチャート500である。
【0048】
ステップ501は、解析対象パラメータ・パラメータ値401を読み込む。
【0049】
ステップ502は、ステップ501で読み込んだパラメータ値ごとに、
図4に含まれる実行対象のテスト項目302に出現する数をカウントする。
【0050】
ステップ503は、ステップ501で読み込んだパラメータ値ごとに、テスト実行結果303が1、すなわちバグを検出した実行対象のテスト項目302に出現する数をカウントする。
【0051】
ステップ504は、ステップ501で読み込んだパラメータ値ごとに、バグ発生率402を算出する。
【0052】
ステップ505は、バグ発生率402に従って、パラメータ値重要度403を算出する。本実施例では、バグ発生率402が高いほど、対応する解析対象パラメータ・パラメータ値401はバグ要因の可能性が高いと判断され、パラメータ値重要度403の値は大きくなる。パラメータ値重要度403の値は、大きいほど重要なパラメータ値であることを意味しており、テスト対象パラメータ値202に含まれるパラメータ値の個数分だけ値が設定される。なお、バグ発生率402が等しい解析対象パラメータ・パラメータ値401のパラメータ値重要度403は等しくなる。
【0053】
以下では、
図4のテスト項目とその実行結果の例300を例として、
図5のパラメータ値重要度の解析例400のバグ発生率402、及びパラメータ値重要度403の導出過程を示す。
【0054】
まず、
図5の解析対象パラメータ・パラメータ値401のうちA=a1のバグ発生率402を求める場合を考える。ステップ502において、実行対象のテスト項目302の中にa1を含むテスト項目数は、#1,#2,#5,#9,#10,#12の6件とカウントされる。そのうちステップ503において、テスト実行結果303が1となった実行対象のテスト項目302の数は、#2,#5,#9,#10,#12の5件である。よって、ステップ504において、A=a1のバグ発生率402は5/6*100 = 83% と算出される。同様にして、A=a1以外の解析対象パラメータ・パラメータ値401のバグ発生率402は
図5に示す通りである。
【0055】
次に、
図5の各解析対象パラメータ・パラメータ値401に対して、パラメータ値重要度403を求める場合を考える。
図5の各解析対象パラメータ・パラメータ値401の数は合計9であるため、最も重要度が高い解析対象パラメータ・パラメータ値401のパラメータ値重要度403の値は9となる。バグ発生率402算出の結果、バグ発生率402が最も高い解析対象パラメータ・パラメータ値401はA=a1で、パラメータ値重要度403の値は、最も重要度が高い9であると判定される。
【0056】
一方、バグ発生率402が最も低い解析対象パラメータ・パラメータ値401はC=c1で、パラメータ値重要度403の値は、最も重要度が低い1であると判定される。
【0057】
このように求められた解析対象パラメータ・パラメータ値401と、それに対応するパラメータ値重要度403の組み合わせをパラメータ値重要度保持部107に保持する。
【0058】
図7は、テスト観点決定処理104の処理における、テスト観点決定例600の説明図である。
【0059】
テスト観点とは、一般的にテスト対象の機能、性能を確認するために、必要となるテストの視点をまとめたものを指す。特に本実施例では、テスト実施の重点箇所と非重点箇所を示したものを指す。これにより、バグ要因の可能性が高い箇所をターゲットにできる。また、バグ要因の可能性が低い箇所を抑制することもできる。
【0060】
テスト観点601の記述例は、重点箇所602を示す場合と非重点箇所603を示す場合の2種類ある。重点箇所602の場合、テスト観点601は「...に関して重点的にテストする」と記載され、非重点箇所603の場合、テスト観点601は「...に関するテスト項目を抑制する」と記載される。
【0061】
「...」には、テスト対象パラメータ値202のいずれかの値が代入される。そのテスト対象パラメータ値202は、パラメータ値重要度解析処理103の結果、パラメータ値重要度403が最も高いと判定された解析対象パラメータ・パラメータ値401となる。
【0062】
例えば
図5の場合、パラメータ値重要度403が最も高い解析対象パラメータ・パラメータ値401はA=a1であると判定されたため、テスト観点601は重点箇所602に基づいて「A=a1に関して重点的にテストする」と記載される。
【0063】
なお、ユーザ判断入力処理102は、ユーザからの入力である、重点箇所602を示すパラメータないしパラメータ値を受け取る。ただし、その入力は必須ではない。パラメータ値の入力がある場合、パラメータ値重要度解析処理103の結果よりも優先して、入力結果のパラメータないしパラメータ値がテスト観点601に反映される。また、パラメータの入力がある場合、そのパラメータに対応するテスト対象パラメータ値202全てに対して同様の処理(例えば、
図2のステップ154以降の処理)を行う。
【0064】
これにより、バグ発生率402から判断したパラメータ値重要度403以外にもテスト観点601を決定可能なため、テスト観点601の決定方法は柔軟性がある。
【0065】
図8は、テスト項目生成処理105の処理における、テスト項目生成例700の説明図である。
【0066】
テスト項目生成例700は、テスト項目生成番号701と生成対象のテスト項目702を含む。テスト項目生成処理105は、テスト観点決定処理104の処理で記載されたテスト観点601を基に、テスト項目生成例700を生成する。
【0067】
例えば
図8の場合、テスト観点決定処理104の結果、重点箇所602に基づいたテスト観点601が「A=a1に関して重点的にテストする」と決定したため、A=a1を組み合わせに含むテスト項目が生成対象となり、テスト項目生成番号701が#13から#18までの6件生成される。
【0068】
ただし、既に存在しているテスト項目(この場合、
図4のテスト項目とその実行結果の例300に含まれるテスト項目)は、生成の対象外となる。
【0069】
図9は、テスト項目抑制処理106を説明する、抑制処理のフローチャート800である。
【0070】
ステップ801は、テスト項目生成処理105の処理で生成されたテスト項目生成例700を読み込む。
【0071】
ステップ802は、ステップ801で読み込んだテスト項目生成数と予め設定した上限値とを比較する。生成数が上限値を上回っていない場合(ステップ802;No)、以下のステップ803、804、805の抑制処理を行わずに、フローチャート800を終了する。そうでない場合には(ステップ802;Yes)、ステップ803へ処理を進める。
【0072】
ステップ803は、これまで抑制対象として選出していないパラメータ値のうち、最もパラメータ値重要度403が低い解析対象パラメータ・パラメータ値401を、非重点箇所603の抑制対象のパラメータ値として選出する。
【0073】
なお、ユーザ判断入力処理102は、ユーザからの入力である、非重点箇所603を示すパラメータないしパラメータ値も受け取る。ただし、その入力は必須ではない。入力がある場合、パラメータ値重要度解析処理103の結果よりも優先して、入力結果のパラメータないしパラメータ値が抑制対象として選出される。
【0074】
ステップ804は、ステップ803で選出された抑制対象のパラメータ値を、テスト観点601に反映して修正する。この際、該当するパラメータ値を「...」に当てはめた上で、非重点箇所603に関する記述「...に関するテスト項目を抑制する」をテスト観点601に記載する。
【0075】
ステップ805は、ステップ804で修正したテスト観点601を基にテスト項目を抑制し、生成するテスト項目数を調整する。この際、ステップ803で選出した抑制対象のパラメータ値以外の組み合わせは網羅できるように抑制する。
【0076】
図10は、テスト項目抑制処理106の処理における、テスト項目抑制例900の説明図である。テスト項目抑制例900は、テスト項目抑制処理106の結果、
図8のテスト項目生成例700のうち、抑制後のテスト項目を示している。
【0077】
例えば、
図9のステップ802において、テスト項目生成処理105後のテスト項目総数は
図4と
図8と合わせて18で、仮に予め設定したテスト項目数の上限値が16であった場合、ステップ803に進む。
【0078】
図4において、パラメータ値重要度解析処理103の処理の結果、パラメータ値重要度403が最も低い解析対象パラメータ・パラメータ値401はC=c1であると判定されたため、ステップ803では重要度の低いパラメータ値としてC=c1が選出される。ユーザ判断入力処理102において抑制対象のパラメータないしパラメータ値が入力されない場合、C=c1が抑制対象のパラメータ値となる。
【0079】
ステップ804では、ステップ803の結果を基に、非重点箇所603に関する記述「C=c1に関するテスト項目を抑制する」をテスト観点601に記載する。
【0080】
その後ステップ805では、ステップ804の結果を基に、抑制対象のパラメータ値C=c1に関するテスト項目を抑制する。その結果、
図8のテスト項目生成例700のうち、テスト項目生成番号701が#13,#15のテスト項目が削除の対象となる。C=c1以外の組み合わせである(A,B)=(a1,b1),(a1,b2)は#14,#16にも存在するため、この2つのテスト項目#13,#15を削除する。
【0081】
ステップ802の処理に再び進み、テスト項目総数は
図4と
図10と合わせて16となるため、抑制処理のフローチャート800を終了する。
【0082】
このように、本実施例では、コンピュータにより行われる処理のテストケースを生成するテストケース生成装置100において、入力項目であるパラメータ値を1つまたは複数含むテスト項目をテスト対象プログラムに与えて実行した結果の入力を受け付けるテスト結果入力処理101と、実行した結果から得られるバグ発生率(例えば、バグ発生率402)に基づいて、パラメータ値ごとにバグ要因の可能性の高さである重要度を算出するパラメータ値重要度解析処理103と、算出された重要度が第1の所定の条件(例えば、最も高い重要度であること)を満たす場合に、当該重要度に対応するパラメータ値を決定し、テストの重点箇所または/および非重点箇所を示すテスト観点に反映するテスト観点決定処理104と、反映されたテスト観点に基づいてテスト項目を生成するテスト項目生成処理105と、生成されたテスト項目の数が閾値を超えていた場合に、第2の所定の条件(例えば、最も低い重要度であること)を満たす重要度に対応するパラメータ値を決定し、決定したパラメータ値をテスト観点の非重点箇所に反映してテスト項目の数を抑制するテスト項目抑制処理106と、を行う演算装置と、抑制された数のテスト項目を出力するテスト項目出力処理110、を行う出力装置と、を有する。したがって、テストの実行結果を基にパラメータ値ごとにバグ要因の可能性を数値化し、テストの重点箇所/非重点箇所を示すテスト観点に反映することで、バグ要因の可能性が高いパラメータ値に関するテスト項目を重点的に生成することができる。また、テスト観点を用いて特定のパラメータ値に焦点を当てたテスト項目の追加・抑制を行うため、個々のパラメータ値の重要度を考慮したテスト項目の生成が可能となり、バグ検出におけるテスト効率向上が見込まれる。
【0083】
また、上記演算装置は、ユーザから、上記第1の所定の条件を満たすパラメータないしパラメータ値、上記第2の所定条件を満たすパラメータないしパラメータ値、またはその両方の入力を受け付けるユーザ判断入力処理102、を行い、上記テスト観点決定処理において、上記ユーザ判断入力処理で入力されたパラメータないしパラメータ値を基に更新した上記重要度に基づいて、上記テスト観点に反映する上記パラメータ値を決定する。したがって、ユーザ自身が、重要度が高い、または重要度が低いと判断したパラメータないしパラメータ値を入力して、パラメータないしパラメータ値を調整することができる。
【実施例2】
【0084】
本実施例では、直前のテスト結果以外のデータも入力を受け付けるテストケース生成装置の例を説明する。
【0085】
そのような場合、テスト結果入力処理101は、直前にテストを実行したテスト項目、及び事前に記憶装置に記憶したそれ以外のテスト項目を受け取り、テストの実行結果を記載する。
【0086】
図11は、実施例2における、テストケース生成装置100の処理を説明するフローチャート250である。
図11では、予め用意した初回テスト項目の入力およびテスト結果入力処理101が、直前にテストを実行したテスト項目について行われるステップ(ステップ151-1および152-1)と、事前に記憶装置に記憶したそれ以外のテスト項目について行われるステップ(ステップ151-2および152-2)とにより行われ、それぞれのステップについての終了条件が、ステップ153において判断される。その他の処理は実施例1と同様である。
【0087】
このように、本実施例では、上記演算装置は、上記テスト結果入力処理において、直前のテスト結果と、過去のテスト結果との入力を受け付け、上記テスト観点決定処理において、上記直前のテスト結果および上記過去のテスト結果の中から得られるバグ発生率に基づいて、上記重要度を算出する。したがって、現時点で行ったテスト結果に加え、過去のテスト結果を考慮して、重要度を定めることができる。
【実施例3】
【0088】
本実施例では、重要度の高いパラメータないしパラメータ値、低いパラメータないしパラメータ値の数を受け付けるテストケース生成装置の例を説明する。
【0089】
そのような場合、ユーザ判断入力処理102は、重要度の高いパラメータないしパラメータ値の数(M個)、低いパラメータないしパラメータ値の数(N個)を受け付ける。重要度の高いパラメータないしパラメータ値の数(M個)、低いパラメータないしパラメータ値の数(N個)は、以下のように定めることができる。例えば、最も重要度の高いパラメータないしパラメータ値から順に低くなるパラメータないしパラメータ値の数を上記M個とし、最も重要度の低いパラメータないしパラメータ値から順に高くなるパラメータないしパラメータ値の数を上記N個として定めることができる。
【0090】
また、テスト観点決定処理104は、パラメータ値重要度解析処理103の結果、パラメータ値重要度403が最も高いと判定されたものから順にM個の解析対象パラメータ・パラメータ値401をテスト観点601に反映する。
図7では、テスト観点601が1レコード記述される場合を例示したが、本実施例では、Mレコードのテスト観点601が記述されることとなる。
【0091】
さらに、テスト項目抑制処理106に関して、ステップ803は、これまで抑制対象として選出していないパラメータ値のうち、最もパラメータ値重要度403が低いものから順にN個の解析対象パラメータ・パラメータ値401を、非重点箇所603の抑制対象のパラメータ値として選出する。その後、ステップ804は、ステップ803で選出したN個の解析対象パラメータ・パラメータ値401をテスト観点601に反映する。
図7では、テスト観点601が1レコード記述される場合を例示したが、本実施例では、Nレコードのテスト観点601が記述されることとなる。上記以外の処理に関しては、実施例1と同様である。
【0092】
このように、本実施例では、上記演算装置は、上記ユーザ判断入力処理において、上記第1の所定の条件として一定の閾値以上、上記重要度が高いパラメータないしパラメータ値の数(例えば、上記M個)の入力を受け付け、上記第2の所定の条件として一定の閾値以上、上記重要度が低いパラメータないしパラメータ値の数(例えば、上記N個)の入力を受け付け、上記テスト観点決定処理において、上記ユーザ判断入力処理で入力された数のパラメータないしパラメータ値を基に更新した上記重要度に基づいて、上記テスト観点に反映する上記パラメータ値を決定する。したがって、最も重要度が高いものあるいは最も重要度が低いものから順に複数のパラメータないしパラメータ値をテスト観点に反映することができる。
【実施例4】
【0093】
本実施例では、パラメータ値重要度の決定方法に関して、パラメータ値の複数の組合せも考慮するテストケース生成装置の例を説明する。
【0094】
そのような場合、パラメータ値重要度解析処理103に関して、解析対象パラメータ・パラメータ値401は、テスト対象パラメータ201とテスト対象パラメータ値202の組み合わせを複数用いて構成される。バグ発生率402、パラメータ値重要度403は、実施例1と同様の手順で導出される。例えば、解析対象パラメータ・パラメータ値401がA=a1かつB=b1である解析対象パラメータ・パラメータ値の組み合わせについて、バグ発生率402、パラメータ値重要度403を算出してもよい。その他の処理は、実施例1と同様である。
【0095】
このように、本実施例では、上記演算装置は、上記パラメータ値重要度解析処理において、一のパラメータ値(例えば、
図5における「A=a1」)と他の一のパラメータ値(例えば、
図5における「B=b1」)との組み合わせ(例えば、上記「A=a1」かつ上記「B=b1」である組み合わせ)において上記重要度を算出する。例えば、上記「A=a1」のバグ発生率「83%」と、上記「B=b1」のバグ発生率「75%」との平均値を用いて、上記重要度を算出する。これにより、バグ発生率を複数のパラメータ値により平準化したうえで重要度を算出することができる。
【実施例5】
【0096】
本実施例では、ユーザからの入力としてパラメータないしパラメータ値の入力ではなく、ソースコードを入力するテストケース生成装置の例を説明する。
【0097】
そのような場合、ユーザ判断入力処理102は、ユーザからの入力としてソースコードを受け付ける。ソースコードのパス等を解析することで、パラメータないしパラメータ値の重要度を自動的に導出する。その他の処理は実施例1と同様である。
【0098】
このように、本実施例では、上記演算装置は、上記パラメータ値重要度解析処理において、上記テスト対象プログラムのソースコードを解析し、当該解析結果に基づいて、上記パラメータ値の重要度を判定する。したがって、ユーザがパラメータないしパラメータ値を入力することなく、重要度を判定することができる。また、上記テスト対象プログラムのソースコードが頻繁に修正される場合であっても、当該修正に応じたパラメータないしパラメータ値を入力することなく、ソースコードを読み込んで解析するだけで自動的に上記パラメータ値の重要度を判定することができるようになる。
【実施例6】
【0099】
本実施例では、バグ要因の可能性に加え、さらにテストの網羅率に基づいてパラメータ値の重要度を決定するテストケース生成装置の例を説明する。これは出現頻度の低いパラメータ値に関して、重要度を高くすることでテストケース数を増やすものである。
【0100】
そのような場合、パラメータ値重要度解析処理103の処理における、パラメータ値重要度の解析例400は、バグ発生率402に加え、さらに網羅率を含めてよい。
【0101】
網羅率とは、特定のパラメータ値に着目した場合に、考えられる全てのテストケース数のうち、テスト結果入力処理101に入力されたテストケース数の割合である。
【0102】
例えば、解析対象パラメータ・パラメータ値401のうちA=a1の網羅率を求める場合を考える。テスト対象パラメータB,Cの取りうる値の組合せを考えると、A=a1を含む全てのテストケースは1*3*4=12件である。そのうち、
図4においてA=a1を含むテストケースは#1,#2,#5,#9,#10,#12の6件である。よって、A=a1の網羅率は6/12*100=50%となる。同様にして、他の解析対象パラメータ・パラメータ値401の網羅率も算出可能である。また、網羅率が低い解析対象パラメータ・パラメータ値401のパラメータ値重要度403を高くする。例えば、本実施例では、バグ発生率402と上記網羅率とを掛け合わせて得られる値の大きさが大きいほど重要度を高くする一方、当該値の大きさが小さいほど重要度を低くする、というように重要度を決定することができる。その他の処理は実施例1と同様である。
【0103】
このように、本実施例では、上記演算装置は、上記パラメータ値重要度解析処理において、テストの網羅率が低いパラメータ値の重要度を高くする。したがって、テストの網羅率を考慮してパラメータ値の重要度を定めることができる。
【0104】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【0105】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する事によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD (Solid State Drive) 等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
【0106】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【0107】
100 テストケース生成装置
101 テスト結果入力処理
102 ユーザ判断入力処理
103 パラメータ値重要度解析処理
104 テスト観点決定処理
105 テスト項目生成処理
106 テスト項目抑制処理
107 パラメータ値重要度保持部
108 ユーザ判断保持部
109 テスト観点保持部
110 テスト項目出力処理