(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-02-17
(45)【発行日】2025-02-26
(54)【発明の名称】解析装置、解析方法
(51)【国際特許分類】
G06F 11/36 20250101AFI20250218BHJP
【FI】
G06F11/3668
(21)【出願番号】P 2021107100
(22)【出願日】2021-06-28
【審査請求日】2024-03-04
(73)【特許権者】
【識別番号】509186579
【氏名又は名称】日立Astemo株式会社
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】村田 大二郎
(72)【発明者】
【氏名】金子 昌永
(72)【発明者】
【氏名】新原 敦介
(72)【発明者】
【氏名】長谷川 直人
(72)【発明者】
【氏名】佐藤 陽春
【審査官】真木 健彦
(56)【参考文献】
【文献】国際公開第2020/072701(WO,A1)
【文献】特開2018-173703(JP,A)
【文献】特開2014-142872(JP,A)
【文献】特開2015-069615(JP,A)
【文献】米国特許出願公開第2021/0064518(US,A1)
【文献】特開2020-201600(JP,A)
【文献】特開2010-267022(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
G06F 11/07
(57)【特許請求の範囲】
【請求項1】
テストを実行する環境であるテスト環境において、テスト対象ソフトウエアのテストが失敗した際の原因を特定する解析装置であって、
前記テストでは、テスト対象ソフトウエアの実行と実行結果の確認が、人が介入することなくテストスクリプトにより実行され、
テストデータは、前記テストの実行時に前記テスト対象ソフトウエアおよび前記テストスクリプトに読み込まれるデータであり、
テスト対象ソフトウエア、テストデータ、テストスクリプト、およびテスト環境のそれぞれについて、変更の有無に基づき失敗原因スコアを算出するスコア算出部と、
失敗原因スコアに基づき、前記テストが失敗した原因が、テスト対象ソフトウエア、テストデータ、テストスクリプト、およびテスト環境のいずれであるかを推定する推定部と、を備える解析装置。
【請求項2】
請求項1に記載の解析装置において、
条件式と、前記条件式に該当した場合に加算される前記失敗原因スコアの加算値との組合せを複数含むスコア計算ルール情報が格納される記憶部をさらに備え、
前記スコア算出部は、前記スコア計算ルール情報に基づき前記失敗原因スコアを算出し、
前記失敗原因スコアおよび前記失敗原因スコアの算出に用いられた前記条件式を示す情報を含む映像情報を生成する表示生成部と、
前記表示生成部が生成する前記映像情報を表示部に出力する入出力インタフェースと、をさらに備える解析装置。
【請求項3】
請求項1に記載の解析装置において、
条件式と、前記条件式に該当した場合に加算される前記失敗原因スコアの加算値との組合せを複数含むスコア計算ルール情報が格納される記憶部をさらに備え、
前記条件式は、テスト対象ソフトウエア、テストデータ、テストスクリプト、およびテスト環境のそれぞれの構成要素である詳細構成要素の変更、前記詳細構成要素同士の依存関係、ならびに前記詳細構成要素同士の類似関係に関する、解析装置。
【請求項4】
請求項3に記載の解析装置において、
前記スコア計算ルール情報の前記条件式におけるテスト対象ソフトウエア、テストデータ、テストスクリプト、およびテスト環境のそれぞれを前記詳細構成要素に置き換えた新たな条件式を前記スコア計算ルール情報に追加する、ルール生成部をさらに備える、解析装置。
【請求項5】
請求項4に記載の解析装置において、
前記ルール生成部は、前記詳細構成要素同士の関連に基づいて新たな条件式をさらに追加する、解析装置。
【請求項6】
請求項4に記載の解析装置において、
前記ルール生成部は、前記スコア計算ルール情報の前記条件式に含まれる時間またはバージョンを変更した新たな条件式を生成して前記スコア計算ルール情報に追加する、解析装置。
【請求項7】
請求項3に記載の解析装置において、
前記条件式を評価するために必要なテスト項目を新たに生成して実行させるテスト追加実行部をさらに備える、解析装置。
【請求項8】
テストを実行する環境であるテスト環境において、テスト対象ソフトウエアのテストが失敗した際の原因をコンピュータが特定する解析方法であって、
前記テストでは、テスト対象ソフトウエアの実行と実行結果の確認が、人が介入することなくテストスクリプトにより実行され、
テストデータは、前記テストの実行時に前記テスト対象ソフトウエアおよび前記テストスクリプトに読み込まれるデータであり、
テスト対象ソフトウエア、テストデータ、テストスクリプト、およびテスト環境のそれぞれについて、変更の有無に基づき失敗原因スコアを算出することと、
失敗原因スコアに基づき、前記テストが失敗した原因が、テスト対象ソフトウエア、テストデータ、テストスクリプト、およびテスト環境のいずれであるかを推定することと、を含む解析方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、解析装置、および解析方法に関する。
【背景技術】
【0002】
ソフトウエアの品質を確保する重要性が増しており、不具合を発見するためのツールなども開発されている。特許文献1には、不具合管理ツールにおける成果物である不具合、構成管理ツールにおける成果物であるリビジョン、テスト管理ツールにおける成果物であるテスト項目について、前記テスト管理ツール、前記構成管理ツール、前記不具合管理ツールから、前記成果物毎にテスト結果を含む所定の管理ツールデータを入力し、前記不具合に関連する前記テスト結果が、失敗から成功または成功から失敗に変化するまでの期間を抽出する期間抽出部と、前記期間抽出部による抽出期間における前記成果物間の属性変化の関係を利用し、前記不具合と前記不具合に関係のある他の前記成果物との関連付けにおける関連候補の絞り込みを行う絞り込み処理部とを備える成果物の関連候補生成装置が開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に記載されている発明では、テストが失敗した原因を特定できない。
【課題を解決するための手段】
【0005】
本発明の第1の態様による解析装置は、テストを実行する環境であるテスト環境において、テスト対象ソフトウエアのテストが失敗した際の原因を特定する解析装置であって、前記テストでは、テスト対象ソフトウエアの実行と実行結果の確認が、人が介入することなくテストスクリプトにより実行され、テストデータは、前記テストの実行時に前記テスト対象ソフトウエアおよび前記テストスクリプトに読み込まれるデータであり、テスト対象ソフトウエア、テストデータ、テストスクリプト、およびテスト環境のそれぞれについて、変更の有無に基づき失敗原因スコアを算出するスコア算出部と、失敗原因スコアに基づき、前記テストが失敗した原因が、テスト対象ソフトウエア、テストデータ、テストスクリプト、およびテスト環境のいずれであるかを推定する推定部と、を備える。
本発明の第2の態様による解析方法は、テストを実行する環境であるテスト環境において、テスト対象ソフトウエアのテストが失敗した際の原因をコンピュータが特定する解析方法であって、前記テストでは、テスト対象ソフトウエアの実行と実行結果の確認が、人が介入することなくテストスクリプトにより実行され、テストデータは、前記テストの実行時に前記テスト対象ソフトウエアおよび前記テストスクリプトに読み込まれるデータであり、テスト対象ソフトウエア、テストデータ、テストスクリプト、およびテスト環境のそれぞれについて、変更の有無に基づき失敗原因スコアを算出することと、失敗原因スコアに基づき、前記テストが失敗した原因が、テスト対象ソフトウエア、テストデータ、テストスクリプト、およびテスト環境のいずれであるかを推定することと、を含む解析方法。
【発明の効果】
【0006】
本発明によれば、テストが失敗した原因がテスト対象ソフトウエア、テストデータ、テストスクリプト、およびテスト環境のいずれであるかを特定できる。
【図面の簡単な説明】
【0007】
【
図1】第1の実施の形態における解析装置の機能構成図
【
図3】解析装置が解析するテストの概要を説明する図
【
図12】第1の実施の形態におけるスコア算出部の処理を示すフローチャート
【
図13】スコア算出処理の詳細を説明するフローチャート
【
図14】第2の実施の形態における解析装置の機能構成図
【
図23】表示生成部による出力装置への出力例を示す図
【
図26】条件式追加処理の詳細を示すフローチャート
【
図27】条件式追加処理の詳細を示すフローチャート
【
図28】差分値算出処理の詳細を示すフローチャート
【
図29】第2の実施の形態におけるスコア算出部の処理を示すフローチャート
【
図30】第2の実施の形態におけるスコア算出部の処理を示すフローチャート
【
図31】テスト追加実行部の処理を示すフローチャート
【発明を実施するための形態】
【0008】
―第1の実施の形態―
以下、
図1~
図13を参照して、本発明に係る解析装置の第1の実施の形態を説明する。
【0009】
図1は、ソフトウエアのテスト結果を解析する解析装置1の機能構成図である。解析装置1はその機能として、スコア算出部151と、推定部152と、表示生成部153と、を備える。解析装置1は記憶部84を備える。記憶部84には、テストケース情報101と、スコア計算ルール情報102と、変更履歴情報103と、テスト実行情報104と、スコア集計情報105と、名称対応情報106とが格納される。
【0010】
図2は、解析装置1のハードウエア構成図である。解析装置1は、中央演算装置であるCPU81と、読み出し専用の記憶装置であるROM82と、読み書き可能な記憶装置であるRAM83と、記憶部84と、入出力インタフェース85とを備える。解析装置1は、入出力インタフェース85を介して、入力装置2および出力装置3と接続される。入力装置2は、キーボードやマウスである。出力装置3は、映像を表示する装置、たとえば液晶ディスプレイである。ただし入力装置2と出力装置3が一体化されたタッチパネルなどを用いてもよい。入力装置2は、解析装置を使用する人間(以下では、「ユーザ」と呼ぶ)の入力を解析装置1に伝達する。出力装置3は、解析装置1が出力する情報をユーザに提示する。
【0011】
CPU81がROM82に格納されるプログラムをRAM83に展開して実行することでスコア算出部151、推定部152、および表示生成部153を実現する。ただし、CPU81、ROM82、およびRAM83の組み合わせの代わりに書き換え可能な論理回路であるFPGA(Field Programmable Gate Array)や特定用途向け集積回路であるASIC(Application Specific Integrated Circuit)によりスコア算出部151、推定部152、および表示生成部153が実現されてもよい。またスコア算出部151、推定部152、および表示生成部153は、CPU81、ROM82、およびRAM83の組み合わせの代わりに、異なる構成の組み合わせ、たとえばCPU81、ROM82、RAM83とFPGAの組み合わせにより実現されてもよい。
【0012】
記憶部84は不揮発性の記憶装置、たとえばハードディスクドライブやフラッシュメモリである。なお記憶部84に格納される情報のほとんどはあらかじめ作成されたものであり、スコア集計情報105のみがスコア算出部151および推定部152により作成される。入出力インタフェース85は、汎用の通信インタフェースでもよいし、入力装置2や出力装置3の仕様にあわせた専用のインタフェースでもよい。
【0013】
図3は、解析装置1が解析するテストの概要を説明する図である。本実施の形態において解析対象となるテストは、ソフトウエアを対象としている。ただしソフトウエアそのものだけでなく、ソフトウエアに付帯する条件もテストに影響を与えるため、これらもテスト項目に含める。具体的には本実施の形態では、テスト対象ソフトウエアSrc、テストデータDat、テストスクリプトTs、およびテスト環境Envの4つをテストの構成要素とする。テストごとに様々な条件が異なるが、テスト対象ソフトウエアSrc、テストデータDat、テストスクリプトTs、およびテスト環境Envの4つの構成要素が組み合わされる点は共通している。
【0014】
なお以下では、テスト対象ソフトウエアSrc、テストデータDat、テストスクリプトTs、およびテスト環境Envを構成要素の「種類」と呼ぶことがある。また、これらの構成要素は概念的なものであり、実際には具体的なものが用いられる。たとえばテスト対象ソフトウエアSrcには、複数のソースコードやアイコンなどのリソースが含まれ、それらは開発の状況に応じて更新されてバージョン番号が変更される。
【0015】
テスト対象ソフトウエアSrcは、本来的にテスト対象となるソフトウエアである。テスト対象ソフトウエアSrcはたとえば、1または複数のソースコードから構成される。
図2に示す例では、テスト対象ソフトウエアSrcには2つのソースコードが含まれるが、開発の進行にともないソースコードの数が増減することがある。また、各ソースコードは内容が変更されるたびにバージョン番号が変更される。すなわち、テストごとにソースコードのバージョンが異なってもよいし、ソースコードの数が異なってもよい。テスト対象ソフトウエアSrcには、ソースコード以外にも、たとえば静的にリンクするライブラリが含まれてもよい。
【0016】
テストデータDatは、テスト実行時にテスト対象ソフトウエアSrcおよびテストスクリプトTsが読み込むデータであり、たとえば変数名とその値の組合せである。テストデータDatは、1または複数のデータから構成される。これらのデータはテスト対象ソフトウエアSrcに応じて用意されるものであり、たとえばテキストデータ、画像データ、音声データなど、またはこれらの組合せである。
図2に示す例では、テストデータDatは1つのサンプルデータから構成される。各データは内容が変更されるたびにバージョン番号が変更される。
【0017】
テストスクリプトTsは、テストにおけるテスト対象ソフトウエアSrcの実行と実行結果の確認を、人が介入することなく実行するためのスクリプトファイルである。テストスクリプトTsはたとえば、シェルスクリプトやバッチファイルである。
図2に示す例では、テストスクリプトTsは1つのスクリプトから構成される。各スクリプトは内容が変更されるたびにバージョン番号が変更される。なお本実施の形態では便宜的にテスト「スクリプト」と呼んでいるが、スクリプトであることは必須ではなく、プログラムそのものでもよい。
【0018】
テスト環境Envは、テストのために利用するハードウエア、およびテストのために利用するソフトウエアであってテスト対象ソフトウエアSrcを除くソフトウェアである。
図2に示す例ではテスト環境Envは、OSとハードウエア構成の2つから構成される。テスト環境が変更または更新されるたびにそれらのバージョンが更新される。なお本図の説明において、構成が変更されるたびにバージョン番号が変更されると説明したが、この代わりに構成の名称を変更してもよい。詳しくは後述する。
【0019】
図4は、構成情報100の一例を示す図である。構成情報100は、テスト対象ソフトウエアSrc、テストデータDat、テストスクリプトTs、およびテスト環境Envのそれぞれの具体的な構成と、構成IDとの対応を示す情報である。ただし構成情報100には各構成のバージョン番号は含まれない。換言すると構成情報100は、各構成のバージョン情報と組み合わされることで、各テストの条件を特定できる情報である。本実施の形態では、構成IDは「K」と数字との組合せである。たとえばテスト対象ソフトウエアSrcにおいて構成IDが「K1」の場合は、テスト対象ソフトウエアSrcが「初期演算ソースコード」と「メイン処理ソースコード」の2つから構成されることが示されている。
【0020】
なお
図4では、作図の都合によりテスト対象ソフトウエアSrc、テストデータDat、テストスクリプトTs、およびテスト環境Envの4つをまとめて記載しているが、それぞれの構成IDは独立している。たとえばあるテストにおいて、テスト対象ソフトウエアSrcは構成IDが「K2」、テストデータDatは構成IDが「K4」、テストスクリプトTsは構成IDが「K1」、テスト環境Envは構成IDが「K2」という組合せでもよい。
【0021】
図5は、テストケース情報101の一例を示す図である。テストケース情報101は、テストケースごとの構成を示す情報である。テストケース情報101は複数のレコードから構成され、各レコードはテストケースID1011と、構成ID1012と、のフィールドを含む。テストケースID1011には、テストケースの識別子が格納される。本実施の形態において「テストケース」とは、テストを構成するテスト対象ソフトウエアSrc、テストデータDat、テストスクリプトTs、およびテスト環境Envのそれぞれについて構成IDを指定した組合せである。たとえばテストケースIDが「TC1」は、テスト対象ソフトウエアSrcの構成「K1」と、テストデータDatの構成「K1」と、テストスクリプトTsの構成「K1」と、テスト環境Envの構成「K1」と、の組合せである。
【0022】
図6は、スコア計算ルール情報102の一例を示す図である。スコア計算ルール情報102は、失敗原因スコアを計算するルールに関する情報である。失敗原因スコアとは、テストが失敗した原因が、テストスクリプトTs、テストデータDat、テスト対象ソフトウエアSrc、およびテスト環境Envのいずれにあるのかを特定するためのスコアである。失敗原因スコアは、テストスクリプトTs、テストデータDat、テスト対象ソフトウエアSrc、およびテスト環境Envのそれぞれに対してテストごとに算出される。初期値はゼロであり、4つのうちスコアが最も大きいものがテスト失敗の原因と判断される。
【0023】
スコア計算ルール情報102は複数のレコードから構成され、各レコードはルールID1021と、条件式1022と、加算値1023と、のフィールドを含む。ルールID1021は、スコアを算出するルールの識別子であり、「R」と数字の組合せで表される。条件式1022はスコアを加算する条件式であり、条件式が成り立つ場合に加算値1023に記載の値がそれぞれの失敗原因スコアに加算される。加算値1023は、条件式が成立する場合に失敗原因スコアに加算される値を示している。
【0024】
条件式は独自に適宜された関数が含まれる。関数「IsChangedV」は、テスト構成の特定の種類が第1のバージョンから第2のバージョンまでに変化があるか否かを出力する関数である。関数「IsChangedV」は、変化がある場合には「true」を出力し、変化がない場合には「false」を出力する。関数「IsChangedV」は、第1引数がテスト構成の種類を表し、第2引数が第1のバージョンを示す数値を表し、第3引数が第2のバージョンを示す数値を表す。第2引数および第3引数の数値は整数であり、「1」以上は特定のバージョン番号そのもの、「0」が現在のバージョン、「-1」が前回のバージョン、「-2」が2回前のバージョン、以下同様にマイナスの値が大きいほど過去のバージョンを意味する。
【0025】
たとえば「IsChangedV(Ts_x, -1,0)」は、前回の実行時から今回までにテストスクリプトTsに変化があるか否かを出力する。ただし第3引数はデフォルト引数として「0」が設定されている。すなわち「IsChangedV(Ts_x, -1)」と「IsChangedV(Ts_x, -1,0)」とは同じ入力を意味する。
【0026】
図7は、変更履歴情報103の一例を示す図である。変更履歴情報103は、テストの構成物の変更履歴を示す情報である。変更履歴情報103は複数のレコードから構成され、各レコードは、種類1031と、構成ID1032と、バージョン1033と、変更日時1034と、のフィールドを有する。種類1031は、テスト対象ソフトウエアSrc、テストデータDat、テストスクリプトTs、およびテスト環境Envのいずれかを示す情報である。構成ID1032は、構成を特定する情報である、構成情報100において示した構成ID1001のいずれかである。バージョン1033は、構成のバージョンを特定する情報である。
【0027】
なお本実施の形態では説明を簡潔にするために同一の構成ではバージョン番号が同一とするが、同一構成内でもバージョン番号が異なってもよい。その場合にはそれぞれのバージョン番号を指定する情報がバージョン1033となる。変更日時1034は、バージョンが変更された日時である。
図3の例を前提とする
図6の例によれば、テストスクリプトTsの構成IDが「K1」である「自動実行スクリプト」は、バージョン「1」が日本時間の「2021年2月3日 4時5分32秒」に作成されたことが示されている。
【0028】
図8は、テスト実行情報104の一例を示す図である。テスト実行情報104は、各テストの構成およびテストの実行を管理する情報である。前述のテストケースは、構成のバージョンを特定していなかったが、テスト実行情報104ではバージョンも特定されている。テスト実行情報104は複数のレコードから構成され、各レコードは、テスト実行ID1041、テストケースID1042、構成IDとバージョン1043、優先度1044、およびテスト状態1045のフィールドを有する。
【0029】
テスト実行ID1041は、テストを気別する識別子であり、「E」と数字の組合せで表される。テストケースID1042は、テストケース情報101におけるテストケースID1011と同一である。構成IDとバージョン1043は、テストスクリプトTs、テストデータDat、テスト対象ソフトウエアSrc、およびテスト環境Envのそれぞれについての、各構成の構成IDおよびバージョン番号である。具体的には、テストケース情報101における構成ID1011と、スコア集計情報105におけるバージョン1053との組合せである。なおテストケースIDと、構成IDとの組合せはテストケース情報101に示されているので、この点でテストケース情報101とテスト実行情報104の情報は重複している。
【0030】
優先度1044は、テストを実行する優先度である。優先度1044が「高」に設定されたレコードのテスト実行IDにより特定されるテストは、優先度1044が「低」に設定されたレコードのテスト実行IDにより特定されるテストよりも先に実行される。
【0031】
テスト状態1045は、テストの実行前後、またはテストの実行結果を示す情報である。
図8に示す例では、テスト状態1045の「成功」および「失敗」はテストを実行済みであることを示し、テスト状態1045の「未開始」はテストを実行していないことを示す。テスト状態1045の「成功」は実行済みのテストが成功したことを示し、テスト状態1045の「失敗」は実行済みのテストが失敗したことを示す。本実施の形態においてテストの成功とは、テスト対象ソフトウエアSrcの実行結果が開発者の意図したとおりであったことを意味する。本実施の形態においてテストの失敗とは、テスト対象ソフトウエアSrcの実行結果が開発者の意図したとおりではなかったことを意味する。
【0032】
図9は、スコア集計情報105の一例を示す図である。スコア集計情報105は、テストごとの失敗原因スコアの集計結果および推定される失敗の原因を示す表である。スコア集計情報105は、スコア算出部151および推定部152により生成される。スコア集計情報105は複数のレコードから構成され、各レコードは、テスト実行ID1051、失敗原因スコア1052、ルールID1053、および推定失敗原因1054のフィールドを有する。テスト実行ID1051は、テスト実行情報104のテスト実行ID1041と同一である。失敗原因スコア1052は、スコア計算ルール情報102に基づきスコア算出部151により算出される値である。ルールID1053は、スコア算出部151により入力されるルールID1021の列挙である。推定失敗原因1054は、推定部152により推定される失敗の原因である。
【0033】
図10は、名称対応情報106の一例を示す図である。名称対応情報106は、符号と名称の対応表であり、具体的にはテスト失敗要因の種類IDと、失敗要因種類、すなわち構成の種類との対応を示す。
【0034】
図11は、出力装置3への出力例を示す図である。具体的には、ある1つのテスト実行結果に対する解析結果の一例を示している。
図11に示す例では、テスト実行IDが「E1」の結果を示しており、上部にはテスト実行IDと、そのテストにおけるテストケースのIDが示される。画面中央には、失敗要因、構成ID、バージョン、失敗原因、スコア、およびルールIDの一覧表が表示される。失敗要因には、テストスクリプトTs、テストデータDat、テスト対象ソフトウエアSrc、およびテスト環境Envのそれぞれの名称が格納される。構成IDおよびバージョンには、対象となるテスト、この例ではテスト実行IDが「E1」のテストにおける構成IDとバージョンが表示される。
【0035】
失敗原因には、失敗の原因と推定される項目に「YES」が表示される。スコアおよびルールIDには、失敗原因スコアと、そのスコア値の要因となったルールIDが表示される。
図11に示す例では、ルールIDが「R1」のルールのみが該当し、テストスクリプトTsの失敗原因スコアのみに加算がされた。そのため4つのうち最もスコアタが高いのはテストスクリプトTsなので、テストスクリプトの失敗原因の欄に「YES」が表示されている。なお、適用されるルールが複数存在する場合にはルールIDの欄には複数のルールIDが記載される。
【0036】
図12は、スコア算出部151の処理を示すフローチャートである。以下に説明するスコア算出部151の処理は、1つ以上のテストの実行が完了し、テスト実行情報104の1つ以上のレコードが完成している状態で実行が開始される。またこの場合に、スコア集計情報105にはテスト実行情報104に記載されているテスト実行IDのレコードは記載されていない。たとえばテスト実行情報104にはE1~E3の3つのレコードが記録され、スコア集計情報105には何ら情報が記録されていない状態で以下に説明するスコア算出部151の処理が開始される。
【0037】
ステップS301ではスコア算出部151は、スコア集計情報105にレコードを追加し、処理対象とするテスト実行IDを記載する。続くステップS302ではスコア算出部151は、テスト状態1045が「失敗」のレコードを1つ読み込む。テスト状態1045が「失敗」のレコードが複数存在する場合には、まだ読み込んでいないいずれか1つのレコードを読み込む。以下では、本ステップにおいて読み込んだレコードを「対象テストレコード」と呼ぶ。
【0038】
続くステップS303ではスコア算出部151は、スコア計算ルール情報102から利用フラグ1024が「TRUE」のレコードを読み込む。利用フラグ1024が「TRUE」のレコードが複数存在する場合には、まだ読み込んでいないいずれか1つのレコードを読み込む。以下では、本ステップにおいて読み込んだレコードを「対象ルールレコード」と呼ぶ。続くステップS304ではスコア算出部151は、対象テストレコードおよび対象ルールレコードを用いて、スコア算出処理を実行する。スコア算出処理の詳細は後述する。
【0039】
続くステップS305ではスコア算出部151は、スコア計算ルール情報102を参照し、また対象ルールレコードとしていない利用フラグ1024が「TRUE」のレコードが存在するか否かを判断する。利用フラグ1024が「TRUE」のレコードがまだ他に存在すると判断する場合はステップS303に戻り、利用フラグ1024が「TRUE」のレコードはもう他に存在しないと判断する場合はステップS306に進む。
【0040】
ステップS306ではスコア算出部151は、まだ対象テストレコードとしていないテスト状態1045が「失敗」のレコードが存在するか否かを判断する。テスト状態1045が「失敗」のレコードがまだ他に存在すると判断する場合はステップS302に戻り、テスト状態1045が「失敗」のレコードが他に存在しないと判断する場合は
図12に示す処理を終了する。たとえばテスト実行情報104にテスト状態1045が「失敗」のレコードが3つあり、スコア計算ルール情報102に利用フラグ1024が「True」のレコードが5つある場合には、ステップS304のスコア算出処理は、3と5の積で15回実行される。
【0041】
図13は、
図12におけるステップS304、すなわちスコア算出処理の詳細を説明するフローチャートである。ステップS311ではスコア算出部151は、対象ルールレコードにおける条件式を評価する。具体的にはスコア算出部151は、条件式の値を算出して条件の成否を判断する。続くステップS312ではスコア算出部151は、ステップS311における評価の結果に従い、対象ルールレコードにおける条件を満たすか否かを判断する。スコア算出部151は、条件を満たすと判断する場合はステップS313に進み、条件を満たさないと判断する場合は
図13に示す処理を終了する。
【0042】
ステップS313ではスコア算出部151は、スコア集計情報105における
図12のステップS301で追加したレコードのルールID1053に、対象ルールレコードのルールID1021を追加する。ただし加算値1023がゼロの失敗原因には追加しない。たとえば、対象テストレコードが
図7の最上段に示す「E1」のレコードで、対象ルールレコードが
図5の最上段に示す「R1」のレコードの場合には、テストスクリプトTs以外は値がゼロなので、スコア集計情報105のルールID1053には「Ts」の欄のみ「R1」を記載し、他の欄には記載しない。
【0043】
続くステップS314ではスコア算出部151は、スコア集計情報105の失敗原因スコア1052に対象ルールレコードの加算値1023を失敗原因スコア1052に加算して
図13に示す処理を終了する。ただしスコアの初期値はゼロなので、1つのルールしか該当しない場合には、失敗原因スコア1052の値は該当するルールの加算値1023の値そのものになる。スコア算出部151による処理が完了すると、スコア集計情報105の各レコードは、テスト実行ID1051、失敗原因スコア1052、およびルールID1053が記載された状態になり、推定失敗原因1054は空欄のままとなる。
【0044】
推定部152は、スコア算出部151が生成したスコア集計情報105の各レコードの推定失敗原因1054を記載する。具体的には推定部152はスコア集計情報105の各レコードにおいて失敗原因スコア1052の値を比較し、最大の値を有する失敗原因の名称を推定失敗原因1054に記載する。最大の値を有する失敗原因が複数存在する場合には、推定部152はそれらすべてを推定失敗原因1054に記載する。
【0045】
表示生成部153は、テスト実行情報104、およびスコア集計情報105を参照して
図11に示した表示画面の映像を生成して入出力インタフェース85に出力する。まず表示生成部153は、表示対象とするテストのテスト実行IDが外部から指定されて処理が開始される。表示生成部153は、指定されたテスト実行IDを画面右上に、たとえば「E1」と記載する。
【0046】
次に表示生成部153は、指定されたテスト実行IDに対応するテスト実行情報104のレコードを特定する。そして特定されたレコードに記載されたテストケースID1042、および構成IDとバージョン1043の値を画面に転記する。さらに表示生成部153は、指定されたテスト実行IDに対応する、スコア集計情報105のレコードを特定し、失敗原因スコア1052およびルールID1053の値を画面に転記する。最後に表示生成部153は、推定失敗原因1054に対応する失敗原因の欄に「YES」を記載して処理を終了する。
【0047】
上述した第1の実施の形態によれば、次の作用効果が得られる。
(1)解析装置1は、テストを実行する環境であるテスト環境Envにおいて、テスト対象ソフトウエアSrcのテストが失敗した際の原因を特定する。このテストでは、テスト対象ソフトウエアの実行と実行結果の確認が、人が介入することなくテストスクリプトTsにより実行される。テストデータDatは、テストの実行時にテスト対象ソフトウエアSrcおよびテストスクリプトTsに読み込まれるデータである。テスト対象ソフトウエアTs、テストデータDat、テストスクリプトTs、およびテスト環境Envのそれぞれについて、変更の有無に基づき失敗原因スコア1052を算出するスコア算出部151と、失敗原因スコア1052に基づき、テストが失敗した原因が、テスト対象ソフトウエアSrc、テストデータDat、テストスクリプトTs、およびテスト環境Envのいずれであるかを特定する推定部152と、を備える。そのため、テストが失敗した原因がテスト対象ソフトウエアSrc、テストデータDat、テストスクリプトTs、およびテスト環境Envのいずれであるかを特定することができる。
【0048】
ソフトウエアのテストは、テスト対象ソフトウエアSrcの品質向上を目的として行われるが、テストを構成する他の要素、すなわちテストデータDat、テストスクリプトTs、およびテスト環境Envが原因で失敗することがある。テスト環境Envなどを含めたテストの全般に詳しい熟練者ならば、テストが失敗した原因を早期に突き止めることができるが、経験の浅い者にはテストが失敗した原因を特定することが容易ではない。しかし解析装置1を用いることで、熟練者以外でもテストが失敗した原因を容易に特定でき、ソフトウエア開発の効率を向上できる。
【0049】
(2)解析装置1は、条件式1022と、条件式1022に該当した場合に加算される失敗原因スコアの加算値1023との組合せを複数含むスコア計算ルール情報102が格納される記憶部84を備える。スコア算出部151は、スコア計算ルール情報102に基づき失敗原因スコア1052を算出する。解析装置1は、失敗原因スコア1052および失敗原因スコア1052の算出に用いられた条件式を示す情報であるルールID1053を含む映像情報、たとえば
図11に示したもの、を生成する表示生成部153と、表示生成部153が生成する映像情報を出力装置3に出力する入出力インタフェース85と、を備える。そのため解析装置1は、ユーザに失敗原因を特定した理由を提示できる。
【0050】
(3)条件式1022は、テスト対象ソフトウエアSrc、テストデータDat、テストスクリプトTs、およびテスト環境Envのそれぞれの構成要素である詳細構成要素の変更に関するものである。そのため解析装置1は、客観的な事実を用いて失敗の原因を特定できる。
【0051】
(変形例1)
上述した第1の実施の形態では、解析装置1は1つのハードウエア装置として説明した。しかし、解析装置1と同様の機能を複数のハードウエア装置が分担して実現する、解析システムとして構成されてもよい。
【0052】
―第2の実施の形態―
図14~
図31を参照して、解析装置の第2の実施の形態を説明する。以下の説明では、第1の実施の形態と同じ構成要素には同じ符号を付して相違点を主に説明する。特に説明しない点については、第1の実施の形態と同じである。本実施の形態では、主に、スコア計算ルール情報102を生成する点で、第1の実施の形態と異なる。
【0053】
図14は第2の実施の形態における解析装置1Aの機能構成図である。本実施の形態における解析装置1Aは、第1の実施の形態の構成に加えて、ルール生成部161と、テスト追加実行部162と、優先度変更部163と、失敗原因修正部164とをさらに備える。また記憶部Mには、要素定義情報111と、要素関連情報112と、条件式初期値113と、詳細構成情報114と、詳細関連情報115とがさらに格納される。また記憶部Mには、テストケース情報101の代わりに拡張テストケース情報101Aが格納され、スコア計算ルール情報102の代わりにスコア計算拡張ルール情報102Aが格納され、スコア集計情報105の代わりに拡張スコア集計情報105Aが格納される。さらに、スコア算出部151Aおよび表示生成部153Aの動作が第1の実施の形態と異なる。
【0054】
第1の実施の形態では、記憶部84に格納される情報のほとんどがあらかじめ作成されていたが、本実施の形態ではこの限りではない。本実施の形態では、構成情報100、変更履歴情報103、名称対応情報106、要素定義情報111、要素関連情報112、条件式初期値113、詳細構成情報114、および詳細関連情報115があらかじめ作成される。拡張テストケース情報101Aは、一部のレコードがテスト追加実行部162により追加される。スコア計算拡張ルール情報102Aは、ルール生成部161により生成される。ただしスコア計算拡張ルール情報102Aにあらかじめいくつかのレコードが記録されていてもよい。テスト実行情報104は、一部のレコードがテスト追加実行部162により書き込まれ、一部のレコードの優先度1044が優先度変更部163により書き込まれる。拡張スコア集計情報105Aは、失敗原因修正部164により一部のフィールドに書き込まれる。
【0055】
図15は、拡張テストケース情報101Aの一例を示す図である。拡張テストケース情報101Aは、第1の実施の形態におけるテストケース情報101の各レコードに、確認1013のフィールドが追加されている。確認1013はテストの結果をコンピュータとオペレータのいずれが判断するかを示す。確認101が「自動」であるテストケースは、テストスクリプトTsによりテストの結果が成功および失敗のいずれであるかが判断される。確認101が「手動」であるテストケースは、オペレータによりテストの結果が成功および失敗のいずれであるかが判断される。
【0056】
図16は、スコア計算拡張ルール情報102Aの一例を示す図である。スコア計算拡張ルール情報102Aは、第1の実施の形態におけるスコア計算ルール情報102の各レコードに、詳細化状態1025および信頼度1026のフィールドが追加されている。詳細化状態1025は、既存のルールをもとに詳細なルールを作成する過程で書き換えられる。具体的には詳細化状態1025は、初期状態の「未詳細化」から、「詳細化中」および「差分値未計算」を経て、最終の「完了」に遷移する。信頼度1026は、ルールの信頼性を示す0~1.0の数値であり、初期値は最も信頼が高いことを示す「1.0」である。
【0057】
スコア計算拡張ルール情報102Aには、第1の実施の形態の蹴るスコア計算ルール情報102にはない、以下の条件式が含まれる。関数「IsChangedT」は、テスト構成の特定の種類が第1の時刻から第2の時刻までに変化があるか否かを出力する関数である。変化がある場合には「true」を出力し、変化がない場合には「false」を出力する。関数「IsChangedT」は、第1引数がテスト構成の種類を表し、第2引数が第1の時刻を示す数値を表し、第3引数が第2の時刻を示す数値を表す。関数「IsSuccess」は、引数が条件式であり、引数の条件式の評価結果が「true」であるか否かを出力する。
【0058】
図17は、拡張スコア集計情報105Aの一例を示す図である。拡張スコア集計情報105Aは、第1の実施の形態におけるスコア集計情報105の各レコードに、ユーザ入力1055のフィールドが追加されている。ユーザ入力1055は、ユーザが入力したテストの失敗原因であり、テストスクリプトTs、テストデータDat、テスト対象ソフトウエアSrc、およびテスト環境Envのいずれかである。テストが実行されると、推定失敗原因1054とユーザ入力1055の少なくとも一方のフィールドが入力される。
【0059】
図18は、要素定義情報111の一例を示す図である。要素定義情報111は、構成要素の種類ごとに分類を細分化した要素種類を示す。すなわち、第1の実施の形態の冒頭において各テストは、テストスクリプトTs、テストデータDat、テスト対象ソフトウエアSrc、およびテスト環境Envの4つの構成要素からなると説明したが、各構成要素の種類を細分化したのが要素種類である。要素定義情報111は複数のレコードから構成され、各レコードは種類1111、要素種類1112、および構成名称1113のフィールドを有する。種類1111は、テストの構成要素であるいずれの種類であるかを示す。要素種類1112は、細分化された構成の種類である。構成名称1113は、詳細構成の名称である。なお以下では、要素種類を「詳細構成要素」とも呼ぶ。
【0060】
この
図18に示す例では、Srcは、インタフェースであるSrcIfと、定数・変数SrcVと、処理ロジックSrcLogicと、コメントSrcCmtと、コンポーネントSrcCompに細分化されることが示されている。なお
図18に示す例ではいずれの種類も2つ以上の構成に細分化されているが、全ての種類を細分化することは必須の構成ではなく少なくとも1つの種類の構成が細分化されればよい。なお詳しくは後述するが、要素種類も分類にすぎず具体的な構成を示すものではない。そのため、要素種類に個別IDを組み合わせることで具体的な構成と対応付ける。
【0061】
図19は、要素関連情報112の一例を示す図である。要素関連情報112は、詳細構成同士の関連を示す。要素関連情報112は1以上のレコードから構成され、各レコードは要素A1121、要素B1122、および関連性1123のフィールドを有する。要素A1121および要素B1122は、いずれかの詳細構成を示す。関連性1123は、要素A1121と要素B1122との関係を示す。
図19の最初のレコードに示す例では、関連性1123は「AからBへの一方向」なので、要素A1121の変更が要素B1122に影響するが、要素B1122の変更は要素A1121には影響しないことが示されている。
【0062】
2番目のレコードにおける関連性1123は「双方向」なので、いずれを変更しても他方に影響があることが示されている。なお要素Aと要素Bは便宜的なものであり、最初のレコードにおいて要素Aと要素Bとを入れ替えて、関連性1123を逆方向の「BからAへの一方向」としても同じことを意味する。
【0063】
図20は、条件式初期値113の一例を示す図である。条件式初期値113は、ルール生成部161が読み込んで、複数の条件式1022を生成するための初期値である。条件式初期値113は1以上のレコードから構成され、各レコードは初期式ID1131と条件式1132とを含む。初期式ID1131は、初期式の識別子である。条件式1132は、初期の条件式である。詳しくは後述するが、ルール生成部161がこの条件式1132を用いて様々な条件式を作成する。
【0064】
図21は、詳細構成情報114の一例を示す図である。詳細構成情報114は、構成の種類ごとの構成IDと、詳細構成の具体的な構成、すなわち要素種類と個別IDの組合せとの対応を示す情報である。要素定義情報111においてテストの構成の種類ごとに詳細な分類を説明したが、それらはあくまで分類であり具体的な構成ではない。そのため本実施の形態では、要素種類と個別IDとを組み合わせることで具体的な構成と対応付ける。詳細構成情報114は、構成1141と詳細構成1142との対応を示しており、具体的には種類ごとの構成IDと、要素種類および個別IDの組合せとの対応を示している。
【0065】
図22は、詳細関連情報115の一例を示す図である。詳細関連情報115は、具体的な構成同士の関連であり、要素関連情報112に示される種別同士の一般的な相関よりも具体的な点が異なる。詳細関連情報115は1以上のレコードから構成され、各レコードは要素X1151、要素Y1152、関係1153、および類似度1154のフィールドを有する。要素X1151および要素Y1152は、具体的な構成を特定する、要素種類と個別IDとの組合せである。関係1153は要素X1151と要素Y1152の関係であり、「類似」、「XがYに依存」、および「YがXに依存」のいずれかである。類似度1154は、要素X1151と要素Y1152とが類似する度合いであり、0~1の値で表される。なお、関係1153が「類似」の場合のみ類似度1154に値が設定される。
【0066】
図23は、表示生成部153Aによる出力装置3への出力例を示す図である。具体的には、ある1つのテスト実行結果に対する解析結果と、ユーザによる入力の一例を示している。表示生成部153Aは、第1の実施の形態における表示生成部153の処理を行い、さらにユーザによる入力装置2を用いた入力操作を出力装置3に反映させる。第1の実施の形態における
図10との相違点は、失敗原因の欄が「計算」と「ユーザ指定」とに細分化されたことである。「計算」と「ユーザ指定」のうち、「計算」の欄には第1の実施の形態と同様に推定部152が推定した失敗の原因が「YES」で示される。「ユーザ指定」の欄にはユーザの入力により値が入力される。
【0067】
「ユーザ指定」の欄は、たとえば符号G21で示すようにラジオボタンが配置され、4つのうち1つのみをユーザは選択できる。ユーザがいずれかを選択した後で、符号G22で示すボタンを選択することにより、ユーザが入力した値が解析装置1に拡張スコア集計情報105Aのユーザ入力1055の値として入力される。
図23に示す例では、未選択が白丸で表され、選択が黒丸で表されている。
【0068】
図24および
図25は、ルール生成部161の処理を示すフローチャートである。ルール生成部161が処理を開始する時点では、スコア計算拡張ルール情報102Aにはいくつかのレコードが存在してもよいし、一切のレコードが存在しなくてもよい。ルール生成部161はまずステップS341において、初期式113を読み込んで、全ての条件式1132をスコア計算拡張ルール情報102Aの条件式1022の欄に転記し、詳細化状態1025、信頼度1026、および利用フラグ1024に初期値を設定する。具体的には、詳細化状態1025には「未詳細化」、信頼度1026には「1.0」、利用フラグ1024には「True」を設定して次のステップS342に進む。
【0069】
続くステップS342ではルール生成部161は、スコア計算拡張ルール情報102Aにおいて詳細化状態1025が「未詳細化」であるレコードを任意に1つ選択する。以下では、ステップS342において選択したレコードを「詳細化対象レコード」と呼ぶ。続くステップS343ではルール生成部161は、ステップS342において選択した詳細化対象レコードの詳細化状態1025を「詳細化中」に変更する。続くステップS344ではルール生成部161は、詳細化対象レコードを対象に後述する条件式追加処理を実行し、続くステップS345ではルール生成部161は、処理対象レコードの詳細化状態1025を「差分値未計算」に変更する。
【0070】
続くステップS346ではルール生成部161は、スコア計算拡張ルール情報102Aに詳細化状態1025が「未詳細化」であるレコードが存在するか否かを判断する。ルール生成部161は、詳細化状態1025が「未詳細化」であるレコードがまだ存在すると判断する場合にはステップS342に戻り、詳細化状態1025が「未詳細化」であるレコードはもう存在しないと判断する場合は丸囲みのAを経由して
図25のステップS350に進む。
【0071】
図25のステップS350ではルール生成部161は、スコア計算拡張ルール情報102Aにおいて詳細化状態1025が「差分値未計算」であるレコードを任意に1つ選択する。以下では、ステップS342において選択したレコードを「差分対象レコード」と呼ぶ。続くステップS343ではルール生成部161は、差分対象レコードの詳細化状態1025を「詳細化中」に変更する。続くステップS344ではルール生成部161は、差分対象レコードを対象に後述する差分地算出理を実行し、続くステップS345ではルール生成部161は、差分対象レコードの詳細化状態1025を「完了」に変更する。
【0072】
続くステップS354ではルール生成部161は、スコア計算拡張ルール情報102Aに詳細化状態1025が「差分値未計算」であるレコードが存在するか否かを判断する。ルール生成部161は、詳細化状態1025が「差分値未計算」であるレコードがまだ存在すると判断する場合にはステップS350に戻り、詳細化状態1025が「差分値未計算」であるレコードはもう存在しないと判断する場合はステップS355に進む。
【0073】
ステップS355ではルール生成部161は、スコア計算拡張ルール情報102Aにおいて加算値1023の4種類全てのスコアが所定の閾値、たとえば0.5未満であるレコードの利用フラグ1024を「False」に変更する。続くステップS356ではルール生成部161は、スコア計算拡張ルール情報102Aにおいて信頼度1026の値が所定の閾値、たとえば0.4未満であるレコードの利用フラグ1024を「False」に変更して
図25に示す処理を終了する。
【0074】
図26および
図27は、
図24におけるステップS344の処理、すなわち条件式追加処理の詳細を示すフローチャートである。以下では個別に説明しないが、
図26および
図27において生成した条件式は周防筧さん拡張ルール情報102Aの新たなレコードに追加されるが、このレコードの詳細化状態1025ははじめから「完了」に設定される。また、信頼度1026が「1」に設定され、利用フラグ1024が「True」に設定される点は、先ほどと同様である。
【0075】
前述のように、条件式追加処理が実行される前に詳細化対象レコードが決定されている。まずステップS361においてルール生成部161は、詳細化対象レコードにおける条件式は上位概念、すなわちTs、Dat、Src、およびEnvのいずれかを含むか否かを判断する。ルール生成部161は、いずれかの上位概念を含むと判断する場合はステップS362に進み、いずれの上位概念も含まないと判断する場合はステップS363に進む。
【0076】
ステップS362ではルール生成部161は、要素定義情報111を参照して、上位概念をそれぞれの下位概念に置き換えた条件式をスコア計算拡張ルール情報102Aの新たなレコードに追加してステップS363に進む。たとえば詳細化対象レコードの条件式がSrcを含む場合には、条件式のSrcを、SrcIf、SrcV、SrcLogic、SrcCmt、SrcCompのそれぞれに置き換えた5つの条件式を追加する。なお、追加されたレコードの詳細化状態1025などには初期値、すなわち詳細化状態1025には「未詳細化」、信頼度1026には「1.0」、利用フラグ1024には「True」が設定される。
【0077】
ステップS363ではルール生成部161は、詳細化対象レコードにおける条件式およびステップS362において追加された条件式が、要素関連情報112に含まれるいずれかの要素種類を含むか否かを判断する。ルール生成部161は、要素関連情報112に含まれるいずれかの要素種類を含むと判断する場合はステップS364に進み、要素関連情報112に含まれるいずれの要素種類も含まないと判断する場合は、丸囲みのBを経由して
図27に進む。
【0078】
以下では、ステップS363において要素関連情報112に含まれると判断された要素種類と対になる要素種類を「相関要素」と呼ぶ。たとえば、詳細化対象レコードにおける条件式およびステップS362において追加された条件式のいずれかにTsAsが含まれていた場合には、
図19の例によれば2番目のレコードの記載から、SrcLogicが相関要素と呼ばれる。
【0079】
ステップS364ではルール生成部161は、要素関連情報112に含まれるいずれかの要素種類を含む条件式に対して、相関要素の変更があることを論理積とする条件式を追加する。たとえば、詳細化対象レコードにおける条件式およびステップS362において追加された条件式のいずれかが「IsChangedV(TsAs_x, -1) = true」の場合には、ステップS364において次の条件式が生成される。すなわち、既存の条件式に含まれる「TaAs」は、「SrcLogic」に依存することが詳細関連情報115から判明すると、「SrcLogic」に変更があることを示す条件式である「IsChangedV(SrcLogic_x, -1) = true」との論理積である、「IsChangedV(TsAs_x, -1) = true && IsChangedV(SrcLogic_x, -1) = true」という条件式が追加される。この条件式がスコア計算拡張ルール情報102Aにおいて「R15」のルールIDで示されている。
【0080】
続くステップS365ではルール生成部161は、要素関連情報112に含まれるいずれかの要素種類を含む条件式に対して、相関要素の変更がないことを論理積とする条件式を追加する。すなわちステップS363とは逆の条件との論理積をとる。すなわちステップS363の例と同様の前提に立てば、本ステップでは「IsChangedV(TsAs_x, -1) = true && IsChangedV(SrcLogic_x, -1) = false」という条件式が追加される。この条件式がスコア計算拡張ルール情報102Aにおいて「R16」のルールIDで示されている。ステップS365の処理が完了するとルール生成部161は丸囲みのBを経由して
図27に進む。
【0081】
図27においてルール生成部161は、まずステップ371において、詳細化対象レコードにおける条件式およびステップS362において追加された条件式のいずれかが、時間指定を含むか否かを判断する。いずれかの条件式が時間指定を含むと判断する場合はステップS372に進み、いずれの条件式も時間指定を含まないと判断する場合はステップS373に進む。ステップS372ではルール生成部161は、時間指定を含む式において指定されている時間を補集合に置き換えた条件式をスコア計算拡張ルール情報102Aの新たなレコードに追加してステップS373に進む。
【0082】
ステップS373ではルール生成部161は、詳細化対象レコードにおける条件式およびステップS362において追加された条件式のいずれかが、バージョン指定を含むか否かを判断する。いずれかの条件式がバージョン指定を含むと判断する場合はステップS374に進み、いずれの条件式もバージョン指定を含まないと判断する場合はステップS375に進む。ステップS374ではルール生成部161は、バージョン指定を含む式において指定されているバージョンを補集合に置き換えた条件式をスコア計算拡張ルール情報102Aの新たなレコードに追加してステップS375に進む。
【0083】
ステップS375ではルール生成部161は、詳細化対象レコードにおける条件式およびステップS362において追加された条件式のいずれかが、時間指定またはバージョン指定を含むか否かを判断する。いずれかの条件式が時間指定またはバージョン指定を含むと判断する場合はステップS376に進み、いずれの条件式もバージョン指定を含まないと判断する場合は
図27に示す処理を終了する。
【0084】
ステップS376ではルール生成部161は、時間指定またはバージョン指定を含む条件式に対して、直前のバージョンでテストが成功したことを追加の論理積とする条件式を追加して
図27に示す処理を終了する。たとえば、詳細化対象レコードにおける条件式およびステップS362において追加された条件式のいずれかが「IsChangedV(TsAs_x, -1) = true」の場合には、直前のバージョンでテストが成功したことを示す条件式である「IsSuccess(Replace(Ts, Version(Ts, -1)) = true」との論理積である、「IsChangedV(TsAs_x, -1) = true && IsSuccess(Replace(Ts, Version(Ts, -1)) = true」という条件式が追加される。
【0085】
図28は、
図25のステップS352における、差分値算出処理の詳細を示すフローチャートである。まずステップS381ではルール生成部161は、変数rTotal、rTs、rDat、rSrc、およびrEnvをゼロで初期化する。これらの変数は、トータル件数のカウント、Tsのカウント、Datのカウント、Srcのカウント、Envのカウントに用いられるカウンタである。
【0086】
続くステップS382ではルール生成部161は、テスト実行情報104からテスト状態1045が「成功」または「失敗」のレコードを1つ選択する。以下では、本ステップにおいて選択したレコードを「選択レコード」と呼ぶ。続くステップS383ではルール生成部161は、必要に応じて詳細構成情報114、詳細関連情報115、および変更履歴情報103を参照して選択レコードにおける条件式の条件を満たすか否かを判断する。ルール生成部161は条件式を満たすと判断する場合はステップS384に進み、条件式を満たさないと判断する場合はステップS386に進む。ステップS384ではルール生成部161は、変数rTotalの値を「1」だけ増加させ、続くステップS385ではルール生成部161は、ユーザが入力する失敗の原因に基づき、対応するrTs、rDat、rSrc、およびrEnvのいずれか1つの値を「1」だけ増加させてステップS386に進む。
【0087】
ステップS386ではルール生成部161は、テスト状態1045が「成功」または「失敗」のレコードをすべて選択したか否かを判断する。すべて選択したと判断する場合はステップS387に進み、選択していないレコードがあると判断する場合はステップS382に戻る。ステップS387ではルール生成部161は、rTs、rDat、rSrc、およびrEnvのそれぞれをrTotalで除算する。続くステップS388ではルール生成部161は、ステップS387の算出結果をスコア計算拡張ルール情報102Aの加算値1023の各欄に記載して、差分値算出処理を終了する。
【0088】
図29および
図30は、第2の実施の形態におけるスコア算出部151Aの処理を示すフローチャートである。第1の実施の形態の
図12~
図13に示した処理との違いは、ステップS303とステップS304との間に処理が追加されている点である。本実施の形態では、ステップS303の処理が終了すると丸囲みのCを経由して
図30に示す処理を行い、それらの処理が完了するとステップS304以降の処理を実行する。
【0089】
図30において、スコア算出部151Aは条件式の評価に必要なすべてのテストが実行済であるか否かを判断する。スコア算出部151Aは全てのテストが実行済であると判断する場合は
図30の処理を終了して
図29に戻り、条件式の評価に必要なテストが1つでも完了していないと判断する場合はステップS392に進む。ステップS392ではスコア算出部151Aは、条件式の評価に必要であるが実行が予定されていないテストが存在するか否かを判断する。スコア算出部151Aは、実行が予定されていないテストが存在すると判断する場合はステップS393に進み、必要なすべてのテストは実行が予定されていると判断する場合はステップS394に進む。
【0090】
ステップS393ではスコア算出部151Aは、条件式の評価に必要であり実行が予定されていないテストを実行するためのテスト項目をテスト追加実行部162に生成させてステップS394に進む。この際にテスト追加実行部162は、優先度1044を「高」に設定した新たなレコードをテスト実行情報104に追加する。ステップS394ではスコア算出部151Aは、不図示のテスト実行部を呼び出して所定時間待機時間だけ待機した後でステップS391に戻る。以上が
図30に示す処理の説明である。なお本フローチャートではスコア算出部151Aがテスト実行部を呼び出したが、テスト追加実行部162がテスト実行部を呼び出してもよい。
【0091】
テスト実行部は、テスト実行情報104の記載に従ってテストを実行する。ただし実際のテストの実行内容は、該当するテストスクリプトTsに記載されているのでテスト実行部の動作の詳細は説明を省略する。
【0092】
図31は、テスト追加実行部162の処理を示すフローチャートである。ステップS401ではテスト追加実行部162は、テスト実行情報104においてテスト状態1045が「未開始」のレコードを優先度1044が高いほうから1つ読み込む。本ステップで読み込んだレコードを、本フローチャートの以下の説明では「実行レコード」と呼ぶ。続くステップS402ではテスト追加実行部162は、ステップS401において読み込んだ実行レコードのテストを実行するために、該当するテストスクリプトを実行する。たとえば
図7における「E3」のテスト実行IDを有するレコードを読み込んだ場合には、構成IDは「K2」でバージョンが「V1」のテストスクリプトを実行する。
【0093】
続くステップS403ではテスト追加実行部162は、拡張テストケース情報101Aを参照して、実行するテストの確認1013の値が「自動」と「手動」のいずれであるかを判断する。テスト追加実行部162は、確認1013が「自動」であると判断する場合はステップS404に進み、確認1013が「手動」であると判断する場合はステップS405に進む。ステップS404ではテスト追加実行部162は、テストスクリプトが出力するテスト結果、すなわち「成功」または「失敗」を、テスト実行情報104における実行レコードのテスト状態1045に記録してステップS406に進む。
【0094】
ステップS405ではテスト追加実行部162は、ユーザによる入力装置からの入力に基づき、テスト結果をテスト実行情報104における実行レコードのテスト状態1045に記録してステップS406に進む。ステップS406ではテスト追加実行部162は、テスト状態1045が「未開始」のレコードが存在するか否かを判断する。テスト追加実行部162は、「未開始」のレコードが存在すると判断する場合はステップS401に戻り、「未開始」のレコードが存在しないと判断する場合は
図31に示す処理を終了する。
【0095】
上述した第2の実施の形態によれば、次の作用効果が得られる。
(4)条件式1022は、テスト対象ソフトウエアSrc、テストデータDat、テストスクリプトTs、およびテスト環境Envのそれぞれの構成要素である詳細構成要素の変更、詳細構成要素同士の依存関係、ならびに詳細構成要素同士の類似関係に関するものである。そのため解析装置1は、複数の観点から失敗の原因を特定できる。
【0096】
(5)解析装置1Aは、スコア計算ルール情報の条件式におけるテスト対象ソフトウエアSrc、テストデータDat、テストスクリプトTs、およびテスト環境Envのそれぞれを詳細構成要素に置き換えた新たな条件式をスコア計算拡張ルール情報102Aに追加する、ルール生成部161をさらに備える。この処理は
図26のステップS361~S362に示されている。そのため、第1の実施の形態のようにユーザがスコア計算ルール情報102を全て用意する必要がない。
【0097】
(6)ルール生成部161は、
図26のS363~S365に示すように、詳細構成要素同士の関連に基づいて新たな条件式をさらに追加する。そのため、第1の実施の形態のようにユーザがスコア計算ルール情報102を全て用意する必要がない。
【0098】
(7)ルール生成部161は、
図27のS371~S376に示すようにスコア計算拡張ルール情報102Aの条件式に含まれる時間またはバージョンを変更した新たな条件式を生成してスコア計算拡張ルール情報102Aに追加する。そのため、第1の実施の形態のようにユーザがスコア計算ルール情報102を全て用意する必要がない。
【0099】
(8)解析装置1Aは、条件式1022を評価するために必要なテスト項目を新たに生成して実行させるテスト追加実行部162を備える。そのため、条件式の評価に必要なテストを追加で実行できる。
【0100】
上述した各実施の形態および変形例において、機能ブロックの構成は一例に過ぎない。別々の機能ブロックとして示したいくつかの機能構成を一体に構成してもよいし、1つの機能ブロック図で表した構成を2以上の機能に分割してもよい。また各機能ブロックが有する機能の一部を他の機能ブロックが備える構成としてもよい。
【0101】
上述した各実施の形態および変形例は、それぞれ組み合わせてもよい。上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
【符号の説明】
【0102】
1、1A…解析装置
84…記憶部
85…入出力インタフェース
101…テストケース情報
101A…拡張テストケース情報
102…スコア計算ルール情報
102A…スコア計算拡張ルール情報
103…変更履歴情報
104…テスト実行情報
105…スコア集計情報
105A…拡張スコア集計情報
106…名称対応情報
151、151A…スコア算出部
152…推定部
153、153A…表示生成部
161…ルール生成部
162…テスト追加実行部
163…優先度変更部
164…失敗原因修正部