IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 楽天株式会社の特許一覧

特許7661447テスト実行装置、テスト実行方法及びプログラム
<>
  • 特許-テスト実行装置、テスト実行方法及びプログラム 図1
  • 特許-テスト実行装置、テスト実行方法及びプログラム 図2
  • 特許-テスト実行装置、テスト実行方法及びプログラム 図3
  • 特許-テスト実行装置、テスト実行方法及びプログラム 図4
  • 特許-テスト実行装置、テスト実行方法及びプログラム 図5
  • 特許-テスト実行装置、テスト実行方法及びプログラム 図6
  • 特許-テスト実行装置、テスト実行方法及びプログラム 図7
  • 特許-テスト実行装置、テスト実行方法及びプログラム 図8
  • 特許-テスト実行装置、テスト実行方法及びプログラム 図9
  • 特許-テスト実行装置、テスト実行方法及びプログラム 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2025-04-04
(45)【発行日】2025-04-14
(54)【発明の名称】テスト実行装置、テスト実行方法及びプログラム
(51)【国際特許分類】
   G06F 11/36 20250101AFI20250407BHJP
【FI】
G06F11/3668 188
【請求項の数】 10
(21)【出願番号】P 2023191122
(22)【出願日】2023-11-08
【審査請求日】2023-11-08
(73)【特許権者】
【識別番号】399037405
【氏名又は名称】楽天グループ株式会社
(74)【代理人】
【識別番号】100110135
【弁理士】
【氏名又は名称】石井 裕一郎
(74)【代理人】
【識別番号】100132883
【弁理士】
【氏名又は名称】森川 泰司
(74)【代理人】
【識別番号】100148633
【弁理士】
【氏名又は名称】桜田 圭
(74)【代理人】
【識別番号】100163452
【弁理士】
【氏名又は名称】南郷 邦臣
(74)【代理人】
【識別番号】100180312
【弁理士】
【氏名又は名称】早川 牧子
(72)【発明者】
【氏名】江村 禎昭
【審査官】多賀 実
(56)【参考文献】
【文献】特開2014-049066(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
(57)【特許請求の範囲】
【請求項1】
複数のテストを設定された順序で実行するテスト実行装置であって、
前記複数のテストのいずれかのテストの失敗を検知する検知部と、
前記検知部により失敗が検知されると、前記失敗が検知されたテストと、前記複数のテストのうち未だ実行されていないテストのそれぞれとの類似度を求め、当該類似度に基づいて、前記未だ実行されていないテストのそれぞれが失敗する程度を算定する算定部と、
前記算定部により失敗する程度が算定されると、前記失敗する程度に基づいて、前記未だ実行されていないテストが実行される順序を再設定する再設定部と、
を備え
前記再設定部は、前記失敗する程度が低い順に、前記未だ実行されていないテストが実行される順序を再設定する
とを特徴とするテスト実行装置。
【請求項2】
複数のテストを設定された順序で実行するテスト実行装置であって、
前記複数のテストのいずれかのテストの失敗を検知する検知部と、
前記検知部により失敗が検知されると、前記失敗が検知されたテストと、前記複数のテストのうち未だ実行されていないテストのそれぞれとの類似度を求め、当該類似度に基づいて、前記未だ実行されていないテストのそれぞれが失敗する程度を算定する算定部と、
前記算定部により失敗する程度が算定されると、前記失敗する程度に基づいて、前記未だ実行されていないテストが実行される順序を再設定する再設定部と、
を備え、
前記再設定部は、前記失敗する程度が、前記失敗する程度の分布における代表値に近い順に、前記未だ実行されていないテストが実行される順序を再設定する
ことを特徴とするテスト実行装置。
【請求項3】
複数のテストを設定された順序で実行するテスト実行装置であって、
前記複数のテストのいずれかのテストの失敗を検知する検知部と、
前記検知部により失敗が検知されると、前記失敗が検知されたテストと、前記複数のテストのうち未だ実行されていないテストのそれぞれとの類似度を求め、当該類似度に基づいて、前記未だ実行されていないテストのそれぞれが失敗する程度を算定する算定部と、
前記算定部により失敗する程度が算定されると、前記失敗する程度に基づいて、前記未だ実行されていないテストが実行される順序を再設定する再設定部と、
を備え、
前記算定部は、前記複数のテストの実行開始から現在までに失敗が検知された1以上のテストと、前記未だ実行されていないテストのそれぞれとの類似度を、前記類似度として求める
ことを特徴とするテスト実行装置。
【請求項4】
複数のテストを設定された順序で実行するテスト実行装置であって、
前記複数のテストのいずれかのテストの失敗を検知する検知部と、
前記検知部により失敗が検知されると、前記失敗が検知されたテストと、前記複数のテストのうち未だ実行されていないテストのそれぞれとの類似度を求め、当該類似度に基づいて、前記未だ実行されていないテストのそれぞれが失敗する程度を算定する算定部と、
前記算定部により失敗する程度が算定されると、前記失敗する程度に基づいて、前記未だ実行されていないテストが実行される順序を再設定する再設定部と、
を備え、
前記算定部は、前記テストの対象が利用する機能、モジュール、又は、ライブラリに基づいて、前記類似度を求める
ことを特徴とするテスト実行装置。
【請求項5】
複数のテストを設定された順序で実行するテスト実行装置であって、
前記複数のテストのいずれかのテストの失敗を検知する検知部と、
前記検知部により失敗が検知されると、前記失敗が検知されたテストと、前記複数のテストのうち未だ実行されていないテストのそれぞれとの類似度を求め、当該類似度に基づいて、前記未だ実行されていないテストのそれぞれが失敗する程度を算定する算定部と、
前記算定部により失敗する程度が算定されると、前記失敗する程度に基づいて、前記未だ実行されていないテストが実行される順序を再設定する再設定部と、
を備え、
前記算定部は、予め定められた前記テストのグループに基づいて、前記類似度を求める
ことを特徴とするテスト実行装置。
【請求項6】
複数のテストを設定された順序で実行するテスト実行装置であって、
前記複数のテストのいずれかのテストの失敗を検知する検知部と、
前記検知部により失敗が検知されると、前記失敗が検知されたテストと、前記複数のテストのうち未だ実行されていないテストのそれぞれとの類似度を求め、当該類似度に基づいて、前記未だ実行されていないテストのそれぞれが失敗する程度を算定する算定部と、
前記算定部により失敗する程度が算定されると、前記失敗する程度に基づいて、前記未だ実行されていないテストが実行される順序を再設定する再設定部と、
を備え、
前記算定部は、前記テストを過去に実行した結果が共起するか否かに基づいて、前記類似度を求める
ことを特徴とするテスト実行装置。
【請求項7】
複数のテストを設定された順序で実行するテスト実行装置であって、
前記複数のテストのいずれかのテストの失敗を検知する検知部と、
前記検知部により失敗が検知されると、前記失敗が検知されたテストと、前記複数のテストのうち未だ実行されていないテストのそれぞれとの類似度を求め、当該類似度に基づいて、前記未だ実行されていないテストのそれぞれが失敗する程度を算定する算定部と、
前記算定部により失敗する程度が算定されると、前記失敗する程度に基づいて、前記未だ実行されていないテストが実行される順序を再設定する再設定部と、
を備え、
前記算定部は、前記未だ実行されていないテストの1つについて前記類似度が複数得られる場合、前記複数得られた類似度の代表値を、前記失敗する程度として算定する
ことを特徴とするテスト実行装置。
【請求項8】
複数のテストを設定された順序で実行するテスト実行装置であって、
前記複数のテストのいずれかのテストの失敗を検知する検知部と、
前記検知部により失敗が検知されると、前記失敗が検知されたテストと、前記複数のテストのうち未だ実行されていないテストのそれぞれとの類似度を求め、当該類似度に基づいて、前記未だ実行されていないテストのそれぞれが失敗する程度を算定する算定部と、
前記算定部により失敗する程度が算定されると、前記失敗する程度に基づいて、前記未だ実行されていないテストが実行される順序を再設定する再設定部と、
を備え、
前記算定部は、前記未だ実行されていないテストの1つについて前記類似度が複数得られる場合、前記複数得られた類似度の総和を、前記失敗する程度として算定する
ことを特徴とするテスト実行装置。
【請求項9】
複数のテストを設定された順序で実行するテスト実行装置が実行するテスト実行方法であって、
前記複数のテストのいずれかのテストの失敗を検知する検知ステップと、
前記検知ステップにおいて失敗が検知されると、前記失敗が検知されたテストと、前記複数のテストのうち未だ実行されていないテストのそれぞれとの類似度を求め、当該類似度に基づいて、前記未だ実行されていないテストのそれぞれが失敗する程度を算定する算定ステップと、
前記算定ステップにおいて失敗する程度が算定されると、前記失敗する程度に基づいて、前記未だ実行されていないテストが実行される順序を再設定する再設定ステップと、
を備え、
前記算定ステップにおいて、前記複数のテストの実行開始から現在までに失敗が検知された1以上のテストと、前記未だ実行されていないテストのそれぞれとの類似度を、前記類似度として求める
とを特徴とするテスト実行方法。
【請求項10】
コンピュータを、複数のテストを設定された順序で実行するテスト実行装置として機能させるプログラムであって、
前記コンピュータを、
前記複数のテストのいずれかのテストの失敗を検知する検知部、
前記検知部により失敗が検知されると、前記失敗が検知されたテストと、前記複数のテストのうち未だ実行されていないテストのそれぞれとの類似度を求め、当該類似度に基づいて、前記未だ実行されていないテストのそれぞれが失敗する程度を算定する算定部、
前記算定部により失敗する程度が算定されると、前記失敗する程度に基づいて、前記未だ実行されていないテストが実行される順序を再設定する再設定部、
として機能させ
前記算定部は、前記複数のテストの実行開始から現在までに失敗が検知された1以上のテストと、前記未だ実行されていないテストのそれぞれとの類似度を、前記類似度として求める
とを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、テスト実行装置、テスト実行方法及びプログラムに関する。
【背景技術】
【0002】
プログラムの機能及び動作を確認するためのテストを実行する様々な技術が知られている。例えば、特許文献1には、特定のテストを実行してエラーが発生した時に、同じようにエラーが発生した他のテストを、特定のテストとエラーの共起関係があるテストとして関連付け、テストを実行してエラーが発生した場合に、共起関係にあるテストを追加して実行する技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【文献】特許第621721号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
一方、複数のテストを設定された順序で実行し、限られた時間内に全てのテストの実行を完了しなければならない場合、実行中に特定のテストが失敗すると、処理の遅滞により、残りのテストの実行が限られた時間内に完了しない可能性がある。そのような場合、残りのテストのうち失敗したテストに類似するテストを実行しても、失敗したテストと同様の不具合が原因でテストが失敗する可能性があり、未発見の不具合を発見できる可能性は低くなる。そこで、限られた時間内にできるだけ多くのテストの実行を完了して、未発見の不具合を発見できるようにするために、失敗する程度に基づいて、残りのテストの実行順序を調整したいという要望がある。
【0005】
本発明は、上記のような課題を解決するもので、複数のテストを設定された順序で実行して失敗が検知された際に、未だ実行されていないテストの実行順序を失敗する程度に基づいて再設定することが可能なテスト実行装置、テスト実行方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の第1の観点に係るテスト実行装置は、
複数のテストを設定された順序で実行するテスト実行装置であって、
前記複数のテストのいずれかのテストの失敗を検知する検知部と、
前記検知部により失敗が検知されると、前記失敗が検知されたテストと、前記複数のテストのうち未だ実行されていないテストのそれぞれとの類似度を求め、当該類似度に基づいて、前記未だ実行されていないテストのそれぞれが失敗する程度を算定する算定部と、
前記算定部により失敗する程度が算定されると、前記失敗する程度に基づいて、前記未だ実行されていないテストが実行される順序を再設定する再設定部と、
を備えることを特徴とする。
【0007】
また、上記観点に係るテスト実行装置において、
前記再設定部は、前記失敗する程度が低い順に、前記未だ実行されていないテストが実行される順序を再設定する
ことを特徴とする。
【0008】
また、上記観点に係るテスト実行装置において、
前記再設定部は、前記失敗する程度が、前記失敗する程度の分布における代表値に近い順に、前記未だ実行されていないテストが実行される順序を再設定する
ことを特徴とする。
【0009】
また、上記観点に係るテスト実行装置において、
前記算定部は、直近に前記失敗が検知されたテストと、前記未だ実行されていないテストのそれぞれとの類似度を、前記類似度として求める
ことを特徴とする。
【0010】
また、上記観点に係るテスト実行装置において、
前記算定部は、前記複数のテストの実行開始から現在までに失敗が検知された1以上のテストと、前記未だ実行されていないテストのそれぞれとの類似度を、前記類似度として求める
ことを特徴とする。
【0011】
また、上記観点に係るテスト実行装置において、
前記算定部は、前記テストの対象が利用する機能、モジュール、又は、ライブラリに基づいて、前記類似度を求める
ことを特徴とする。
【0012】
また、上記観点に係るテスト実行装置において、
前記算定部は、前記テストの対象に対応付けられるテキストに出現する要素に基づいて、前記類似度を求める
ことを特徴とする。
【0013】
また、上記観点に係るテスト実行装置において、
前記算定部は、予め定められた前記テストのグループに基づいて、前記類似度を求める
ことを特徴とする。
【0014】
また、上記観点に係るテスト実行装置において、
前記算定部は、前記テストを過去に実行した結果が共起するか否かに基づいて、前記類似度を求める
ことを特徴とする。
【0015】
また、上記観点に係るテスト実行装置において、
前記算定部は、前記類似度を、前記失敗する程度として算定する
ことを特徴とする。
【0016】
また、上記観点に係るテスト実行装置において、
前記算定部は、前記未だ実行されていないテストの1つについて前記類似度が複数得られる場合、前記複数得られた類似度の代表値を、前記失敗する程度として算定する
ことを特徴とする。
【0017】
また、上記観点に係るテスト実行装置において、
前記算定部は、前記未だ実行されていないテストの1つについて前記類似度が複数得られる場合、前記複数得られた類似度の総和を、前記失敗する程度として算定する
ことを特徴とする。
【0018】
本発明の第2の観点に係るテスト実行方法は、
複数のテストを設定された順序で実行するテスト実行装置が実行するテスト実行方法であって、
前記複数のテストのいずれかのテストの失敗を検知する検知ステップと、
前記検知ステップにおいて失敗が検知されると、前記失敗が検知されたテストと、前記複数のテストのうち未だ実行されていないテストのそれぞれとの類似度を求め、当該類似度に基づいて、前記未だ実行されていないテストのそれぞれが失敗する程度を算定する算定ステップと、
前記算定ステップにおいて失敗する程度が算定されると、前記失敗する程度に基づいて、前記未だ実行されていないテストが実行される順序を再設定する再設定ステップと、
を備えることを特徴とする。
【0019】
本発明の第3の観点に係るプログラムは、
コンピュータを、複数のテストを設定された順序で実行するテスト実行装置として機能させるプログラムであって、
前記コンピュータを、
前記複数のテストのいずれかのテストの失敗を検知する検知部、
前記検知部により失敗が検知されると、前記失敗が検知されたテストと、前記複数のテストのうち未だ実行されていないテストのそれぞれとの類似度を求め、当該類似度に基づいて、前記未だ実行されていないテストのそれぞれが失敗する程度を算定する算定部、
前記算定部により失敗する程度が算定されると、前記失敗する程度に基づいて、前記未だ実行されていないテストが実行される順序を再設定する再設定部、
として機能させることを特徴とする。
【0020】
上記プログラムは、非一時的な(non-transitory)記録媒体に記録されてもよい。非一時的な記録媒体は、コンピュータとは独立して配布・販売することができる。ここで、非一時的な記録媒体とは、有形な(tangible)記録媒体をいう。非一時的な記録媒体は、例えば、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等である。また、一時的な(transitory)記録媒体とは、伝送媒体(伝搬信号)それ自体を示す。一時的な記録媒体は、例えば、電気信号、光信号、電磁波等である。なお、一時的な(temporary)記憶領域とは、データやプログラムを一時的に記憶するための領域であり、例えば、RAM(Random Access Memory)等の揮発性メモリである。
【発明の効果】
【0021】
本発明によれば、複数のテストを設定された順序で実行して失敗が検知された際に、未だ実行されていないテストの実行順序を失敗する程度に基づいて再設定することが可能なテスト実行装置、テスト実行方法及びプログラムを提供することができる。
【図面の簡単な説明】
【0022】
図1】実施形態に係るテスト実行装置とサーバと関係を示す図である。
図2】実施形態に係るテスト実行装置のハードウェア構成を示す図である。
図3】実施形態に係るテスト実行装置の機能構成を示す図である。
図4】実施形態に係るテスト情報の例を示す図である。
図5】実施形態に係る実行順序情報の例を示す図である。
図6】実施形態に係る実行結果情報の例を示す図である。
図7】実施形態に係る実行順序情報の例を示す図である。
図8】実施形態に係る失敗する程度の分布の例を示す図である。
図9】実施形態に係る実行順序情報の例を示す図である。
図10】実施形態に係るテスト実行処理を説明するためのフローチャートである。
【発明を実施するための形態】
【0023】
(1.全体構成)
本発明の実施形態に係るテスト実行装置100は、図1に示すように、サーバ200と、インターネット等のコンピュータ通信網300を介して通信可能に接続する。
【0024】
テスト実行装置100は、複数のテストを設定された順序で実行する装置である。例えば、テスト実行装置100は、1000個のテストを設定された順序で実行するタスクを1日1回実行し、毎日タスクの実行を繰り返す。テストは、例えば、サーバ200の動作を確認するためのものである。
【0025】
サーバ200は、様々なサービスを提供するサーバである。例えば、サーバ200は、競馬の馬券の投票、レース映像の閲覧等のウェブサービスを提供する。
【0026】
(2.テスト実行装置のハードウェア構成)
図2は、テスト実行装置100のハードウェア構成を示すブロック図である。
【0027】
テスト実行装置100は、図2に示すように、CPU(Central Processing Unit)11と、ROM(Read Only Memory)12と、RAM13と、記録媒体14と、出力デバイス15と、通信デバイス16と、操作デバイス17と、を備える。各構成要素は、バス18により接続されている。
【0028】
CPU11は、テスト実行装置100全体の動作を制御し、各構成要素と接続され、制御信号やデータをやりとりする。
【0029】
ROM12には、テスト実行装置100全体の動作制御に必要なオペレーティングのプログラムや各種のデータが記録される。
【0030】
RAM13は、データやプログラムを一時的に記録するためのもので、記録媒体14から読み出したプログラムやデータ、その他、通信に必要なデータ等が保持される。
【0031】
記録媒体14は、ハードディスクやフラッシュメモリ等から構成され、テスト実行装置100で処理するデータを記録する。
【0032】
出力デバイス15は、LCD(Liquid Crystal Display)等の表示装置や、スピーカ等の音声出力装置を備える。出力デバイス15は、CPU11による制御の下、例えば、CPU11から出力されたデータを出力する。
【0033】
通信デバイス16は、テスト実行装置100をインターネット等のコンピュータ通信網に接続するための通信インターフェースを含み、通信デバイス16を介して他の情報処理装置等とやりとりをする。
【0034】
操作デバイス17は、ボタン、キーボード、タッチパネル、マイク等の入力装置を備える。操作デバイス17は、テスト実行装置100の使用者からの操作入力を受け付け、受け付けた操作入力に対応する信号をCPU11に出力する。
【0035】
(3.実施形態のテスト実行装置の機能構成)
テスト実行装置100は、図3に示すように、機能的には、検知部101と、算定部102と、再設定部103と、を備える。本実施形態において、CPU11及び通信デバイス16が協働して、検知部101として機能し、CPU11が、算定部102及び再設定部103として機能する。
【0036】
また、テスト実行装置100は、複数のテストについて、テストの内容を示すテスト情報と、テストの実行順序を示す実行順序情報と、テストの実行結果を示す実行結果情報と、を記録媒体14に格納する。
【0037】
以下では、テスト実行装置100が、サーバ200が提供するサービスの動作を確認するために、1000個のテスト(テストID"T1"~"T1000")が含まれタスクを実行する場合を例に、各部の機能及び格納される情報について説明する。
【0038】
図4に、テスト情報の例を示す。テスト情報には、テストを識別するためのテストIDと、テストの対象となるプログラムの名称と、当該プログラムが利用する機能、モジュール、及び、ライブラリと、当該プログラムのソースコードを識別するためのIDと、予め定められたテストのグループと、が対応付けて含まれる。
【0039】
予め定められたテストのグループとは、例えば、テストの対象となるプログラムが提供する機能の共通性に基づいてテスト実行装置100の使用者により任意に定められるグループである。図4のテストについては、テストID"1"からテストID"200"までのテストが"グループ1"、テストID"201"からテストID"T400"までのテストが"グループ2"、テストID"401"からテストID"600"までのテストが"グループ3"、テストID"601"からテストID"800"までのテストが"グループ4"、テストID"801"からテストID"T1000"までのテストが"グループ5"にグループ分けされているとする。
【0040】
例えば、図4の1行目のレコードは、テストID"T1"のテストは、名称"A0-B0-C0"のプログラムの動作を確認するためのテストであって、当該プログラムは、"機能1"及び"機能2"の機能を利用し、"モジュール1"、"モジュール2"及び"モジュール3"のモジュールを利用し、"ライブラリ1"を利用し、当該プログラムのソースコードは、ソースコードID"S1"で識別されるソースコードであり、テストID"T1"のテストは"グループ1"に属することを示す。
【0041】
図5に、実行順序情報の例を示す。実行順序情報には、テストを識別するためのテストIDと、テストの実行順序と、が対応付けて含まれる。図5の実行順序情報は、初期設定されたものであるとする。
【0042】
例えば、図5の1行目のレコードは、テストID"T1"のテストは、"1"番目に実行されることを示す。テスト実行装置100は、図5に示す実行順序で、テストID"T1"からテストID"T1000"までのテストを実行する。
【0043】
図6に、実行結果情報の例を示す。実行結果情報には、テストを識別するためのテストIDと、テストが成功したか失敗したかを示すテストの成否と、が対応付けて含まれる。成否は、タスクが実行された日時毎に記録される。"日時k"(kは2以上の自然数)は、テスト実行装置100が1000個のテストのタスクを実行した現時点を示し、"日時1"から"日時(k-1)"は過去にテスト実行装置100が1000個のテストのタスクを実行した時点を示す。また、図6の実行結果情報は、"日時k"において、テストID"T500"までのテストの実行が完了していることを示す。なお、実行結果情報は、テストが実行されると、テストプログラムにより自動で、又は、テスターにより手動で登録される。
【0044】
例えば、図6の1行目のレコードは、テストID"T1"のテストは、"日時1"において"成功"し、"日時(k-1)"において"成功"し、"日時k"において"成功"したことを示す。
【0045】
図3の検知部101は、複数のテストのいずれかのテストの失敗を検知する。
【0046】
例えば、テスト実行装置100が、図5の実行順序情報に示す実行順序で、テストID"T1"のテストから順番に実行し、実行順序"500"番のテストID"T500"のテストが失敗したとすると、検知部101は、テストID"T500"のテストの失敗を検知する。
【0047】
図3の算定部102は、検知部101により失敗が検知されると、失敗が検知されたテストと、複数のテストのうち未だ実行されていないテストのそれぞれとの類似度を求め、当該類似度に基づいて、未だ実行されていないテストのそれぞれが失敗する程度を算定する。失敗する程度とは、未だ実行されていないテストを実行した場合に、失敗する可能性を示すものである。したがって、算定部102は、失敗が検知されたテストと未だ実行されていないテストのそれぞれとの類似度に基づいて、未だ実行されていないテストのそれぞれが失敗する可能性を求める。
【0048】
例えば、検知部101が、テストID"T500"のテストの失敗を検知した場合、複数のテストのうち未だ実行されていないテストとは、テストID"T501"からテストID"T1000"のテストである。算定部102は、テストID"T501"からテストID"T1000"のテストのそれぞれについて、失敗が検知されたテストとの類似度に基づいて、失敗する程度を算定する。
【0049】
ここで、類似度を求める対象となる失敗が検知されたテストには、直近又は過去に失敗が検知されたテストを含む。
【0050】
具体的には、算定部102は、直近に失敗が検知されたテストと、未だ実行されていないテストのそれぞれとの類似度を、失敗が検知されたテストと、複数のテストのうち未だ実行されていないテストのそれぞれとの類似度として求める。
【0051】
例えば、検知部101が、テストID"T500"のテストの失敗を検知すると、直近に失敗が検知されたテストとは、テストID"T500"のテストである。したがって、算定部102は、テストID"T501"からテストID"T1000"のテストのそれぞれについて、テストID"T500"との類似度を求める。この場合、テストID"T501"からテストID"T1000"のテストのそれぞれについて、1個の類似度が得られる。
【0052】
或いは、算定部102は、複数のテストの実行開始から現在までに失敗が検知された1以上のテストと、未だ実行されていないテストとの類似度を、失敗が検知されたテストと、複数のテストのうち未だ実行されていないテストのそれぞれとの類似度として求める。
【0053】
例えば、図6の実行結果情報に示すように、テストID"T500"のテストの失敗が検知される前に、テストID"T100"及びテストID"T400"のテストについても失敗が検知されていたとする。この場合、複数のテストの実行開始から現在までに失敗が検知された1以上のテストとは、テストID"T100"、テストID"T400"及びテストID"T500"のテストである。したがって、算定部102は、テストID"T501"からテストID"T1000"のテストのそれぞれについて、テストID"T100"、テストID"T400"及びテストID"T500"のそれぞれとの類似度を求める。この場合、テストID"T501"からテストID"T1000"のテストのそれぞれについて、3個の類似度が得られる。
【0054】
また、類似度は、様々な観点から求められる。
【0055】
具体的には、算定部102は、テストの対象が利用する機能、モジュール、又は、ライブラリに基づいて、類似度を求める。
【0056】
例えば、算定部102は、図4のテスト情報を参照して、テストID"T501"からテストID"T1000"のテストの対象となる各プログラムの機能、モジュール、又は、ライブラリと、テストID"T500"のテストの対象となるプログラムの機能、モジュール、又は、ライブラリとを比較し、共通する機能、モジュール、又は、ライブラリを利用する数に基づいて、類似度のスコアを求める。例えば、テストID"T501"の対象となるプログラム(名称"A5-B0-C0")は、テストID"T500"のテストの対象となるプログラム(名称"A4-B9-C9")と、1つの機能及び2つのライブラリが共通するので、算定部102は、類似度のスコアを"3"と求める。
【0057】
したがって、未だ実行されていないテストの対象が、失敗が検知されたテストの対象と共通する機能、モジュール、又は、ライブラリを多く利用するほど、類似度が高く求められる。
【0058】
また、算定部102は、テストの対象に対応付けられるテキストに出現する要素が共通又は相違する度合いに基づいて、類似度を求める。
【0059】
テストの対象に対応付けられるテキストとは、例えば、対象の名称、仕様書、説明書、ソースコードである。また、テキストに出現する要素とは、例えば、単語、識別子である。要素が共通する度合いとは、例えば、2つのテキストにおいて含まれる共通する要素の数である。また、要素が相違する度合いとは、例えば、2つのテキストにおいて含まれる相違する要素の数である。
【0060】
例えば、算定部102は、図4のテスト情報を参照して、テストID"T501"からテストID"T1000"のテストの対象となる各プログラムの名称と、テストID"T500"のテストの対象となるプログラムの名称"A4-B9-C9"と、を比較し、共通する単語又は識別子の数に基づいて、類似度のスコアを求める。例えば、テストID"T501"の対象となるプログラムの名称"A5-B0-C0"は、テストID"T500"のテストの対象となるプログラムの名称"A4-B9-C9"と、共通する識別子は0なので、算定部102は、類似度のスコアを"0"と求める。一方、テストID"T1000"の対象となるプログラムの名称"A9-B9-C9"は、テストID"T500"のテストの対象となるプログラムの名称"A4-B9-C9"と、共通する識別子は2つなので、算定部102は、類似度のスコアを"2"と求める。
【0061】
また、例えば、算定部102は、図4のテスト情報を参照して、テストID"T501"からテストID"T1000"のテストの対象となる各プログラムのソースコードと、テストID"T500"のテストの対象となるプログラムのソースコードと、を特定し、特定されたソースコード同士を比較する。そして、算定部102は、共通する単語又は識別子の数に基づいて、類似度のスコアを求める。例えば、テストID"T501"の対象となるプログラムのソースコードID"S501"のソースコードに、テストID"T500"のテストの対象となるプログラムのソースコードID"S501"のソースコードに含まれる単語及び識別子が10個含まれる場合、算定部102は、類似度のスコアを"10"と求める。
【0062】
したがって、未だ実行されていないテストの対象に対応付けられるテキストが、失敗が検知されたテストの対象に対応付けられるテキストと共通する要素を多く含むほど、類似度が高く求められる。或いは、未だ実行されていないテストの対象に対応付けられるテキストが、失敗が検知されたテストの対象に対応付けられるテキストと相違する要素を多く含むほど、類似度が低く求められる。
【0063】
また、算定部102は、予め定められたテストのグループに基づいて、類似度を求めてもよい。
【0064】
例えば、算定部102は、図4のテスト情報を参照して、テストID"T501"からテストID"T1000"の各テストのグループと、テストID"T500"のテストの"グループ3"とが同じか否かに基づいて、類似度のスコアを求める。例えば、テストID"T501"のテストは、テストID"T500"のテストと同じ"グループ3"に属するので、算定部102は、類似度のスコアを"1"と求める。一方、テストID"T601"のテストは、テストID"T500"のテストの"グループ3"と異なる"グループ4"に属するので、算定部102は、類似度のスコアを"0"と求める。
【0065】
したがって、未だ実行されていないテストが属するグループが、失敗が検知されたテストと同じグループに属すると、類似度が高く求められる。
【0066】
また、算定部102は、テストを過去に実行した結果が共起するか否かに基づいて、類似度を求める。
【0067】
結果が共起するとは、あるテストと他のテストとを実行したときに、両テストとも失敗する、又は、両テストとも成功することをいう。
【0068】
例えば、算定部102は、図6の実行結果情報の日時kより過去の成否であって、"日時k"の直近に実行された"日時(k-1)"のテストの成否を参照して、テストID"T501"からテストID"T1000"のテストの成否と、テストID"T500"のテストの成否とが同じか否かに基づいて、類似度のスコアを求める。例えば、"日時(k-1)"のテストID"T501"のテストの成否は"失敗"であり、"日時(k-1)"のテストID"T500"のテストの成否は"失敗"で、成否が同じなので、算定部102は、類似度のスコアを"1"と求める。一方、"日時(k-1)"のテストID"T601"のテストの成否は"成功"で、"日時(k-1)"のテストID"T500"のテストの成否と異なるので、算定部102は、類似度のスコアを"0"と求める。なお、過去の成否は、直近に実行したテストについてのものに限らず、例えば、過去に実行した全てのテストの成否であってもよい。例えば、算定部102は、テストID"T501"からテストID"T1000"のテストのそれぞれについて、"日時1"~"日時(k-1)"のテストID"T500"のテストの成否と同じか否かに基づいて類似度を求める。この場合、テストID"T501"からテストID"T1000"のテストのそれぞれについて、(k-1)個の類似度が得られる。
【0069】
したがって、未だ実行されていないテストが、失敗が検知されたテストと結果が共起するほど、類似度が高く求められる。
【0070】
次に、算定部102は、類似度を、失敗する程度として算定する。
【0071】
例えば、算定部102は、テストID"T501"のテストについて類似度"1"が得られたとすると、テストID"T501"のテストが失敗する程度を"1"と算定する。
【0072】
また、算定部102は、未だ実行されていないテストの1つについて類似度が複数得られる場合、複数得られた類似度の代表値を、失敗する程度として算定する。
【0073】
複数得られた類似度の代表値とは、例えば、複数得られた類似度の平均値、中央値、最頻値である。
【0074】
例えば、算定部102は、テストID"T501"のテストについてテストID"T100"、テストID"T400"及びテストID"T500"とのそれぞれの類似度"1"、"0"、及び"1"が得られたとすると、それらの類似度の平均値"0.67"を、テストID"T501"のテストが失敗する程度として算定する。
【0075】
或いは、算定部102は、未だ実行されていないテストの1つについて類似度が複数得られる場合、複数得られた類似度の総和を、失敗する程度として算定する。
【0076】
例えば、算定部102は、テストID"T501"のテストについてテストID"T100"、テストID"T400"及びテストID"T500"との類似度"1"、"0"、及び"1"が得られたとすると、それらの類似度の総和"2"をテストID"T501"のテストが失敗する程度として算定する。
【0077】
したがって、失敗する程度は、様々な観点から求めた類似度が高い程、高く求められる。例えば、未だ実行されていないテストの対象が、失敗が検知されたテストの対象と共通する機能、モジュール、又は、ライブラリを多く利用するほど、未だ実行されていないテストが失敗する程度が高くなる。また、未だ実行されていないテストの対象に対応付けられるテキストが、失敗が検知されたテストの対象に対応付けられるテキストと共通する要素を多く含むほど、未だ実行されていないテストが失敗する程度が高くなる。また、未だ実行されていないテストが属するグループが、失敗が検知されたテストと同じグループに属すると、未だ実行されていないテストが失敗する程度が高くなる。また、未だ実行されていないテストが、失敗が検知されたテストと結果が共起するほど、未だ実行されていないテストが失敗する程度が高くなる。
【0078】
図3の再設定部103は、算定部102により失敗する程度が算定されると、失敗する程度に基づいて、未だ実行されていないテストが実行される順序を再設定する。
【0079】
具体的には、再設定部103は、失敗する程度が低い順に、未だ実行されていないテストが実行される順序を再設定する。
【0080】
例えば、テストID"T501"からテストID"T1000"のテストについて、失敗する程度がテストID"T1000"、"T999"、"T998"、"T997"、・・・、"T504"、"T503"、"T502"、"T501"の順に低くいとすると、再設定部103は、テストID"T501"からテストID"T1000"のテストの実行順序を、図7の実行順序情報に示すように、再設定する。
【0081】
テストの実行順序が再設定されると、テスト実行装置100は、図7の実行順序情報を参照して、実行順序"501"番のテストID"T1000"のテストから実行を開始する。したがって、テスト実行装置100は、失敗する可能性が高いテストを後回しにし、失敗する可能性が低いテストを優先してテストを実行する。
【0082】
或いは、再設定部103は、失敗する程度が、失敗する程度の分布における代表値に近い順に、未だ実行されていないテストが実行される順序を再設定する。
【0083】
失敗する程度の分布における代表値とは、例えば、分布における平均値、中央値、最頻値である。
【0084】
図8に、失敗する程度の分布の例を示す。例えば、テストID"T501"からテストID"T1000"のテストについて、失敗する程度がテストID"T750"、"T751"、"T749"、"T752"、・・・、"T502"、"T999"、"T501"、"T1000"の順に、図8の分布の代表値XRに近いとすると、再設定部103は、テストID"T501"からテストID"T1000"のテストの実行順序を、図9の実行順序情報に示すように、再設定する。
【0085】
テストの実行順序が再設定されると、テスト実行装置100は、図9の実行順序情報を参照して、実行順序"501"番のテストID"T750"のテストから実行を開始する。したがって、テスト実行装置100は、失敗する可能性が高いテスト、及び、失敗する可能性が低い、すなわち、成功する可能性が高いテストを後回しにして残りのテストを実行する。
【0086】
なお、複数のテストの実行が定期的に実行される場合には、未実行のテストが、次のタスクが開始される時点で残っていれば、残っているテストの実行は断念する。
【0087】
例えば、テストID"T1"~"T1000"のテストを実行するタスクを図7に示す実行順序で日時kに実行したが、テストID"T501"~"T600"のテストが、タスク完了までの想定時間内に終わらなかったとする。この場合、テスト実行装置100は、テストID"T501"~"T600"のテストを実行せず、次の予め定められた日時(k+1)のタイミングで、テストID"T1"~"T1000"のテストを実行するタスクを開始する。なお、先の日時kに実行したタスクが想定時間内に完了しなかった場合、テスト実行装置100は、日時(k+1)のタイミングで、テストID"T1"~"T1000"のテストを、再設定された図7に示す実行順序で実行しても、又は、初期設定された図5に示す実行順序で実行してもよい。
【0088】
(4.実施形態のテスト実行装置の動作)
本実施形態のテスト実行装置100の動作について、図10を用いて説明する。例えば、テスト実行装置100は、複数のテストを実行するタスクの開始指示を受け付けると、図10に示すテスト実行処理を開始する。なお、図10のテスト実行処理開始時にiは1であり、テストの全数はNとする。
【0089】
テスト実行装置100は、実行順序iのテストを実行する(ステップS101)。
【0090】
例えば、テスト実行装置100は、初期設定された図5の実行順序情報に従い、実行順序iのテストを実行する。
【0091】
検知部101は、実行中のテストの失敗を検知したか否かを判断する(ステップS102)。検知部101が、実行中のテストの失敗を検知したと判断すると(ステップS102;YES)、算定部102は、失敗が検知されたテストと、複数のテストのうち未だ実行されていないテストのそれぞれとの類似度を求める(ステップS103)。一方、検知部101が、実行中のテストの失敗を検知しなかったと判断すると(ステップS102;NO)、ステップS106に進む。
【0092】
例えば、検知部101は、実行順序"500"番のテストID"T500"のテストの失敗を検知したと判断すると、テストID"T500"のテストと、未だ実行されていないテストID"T501"からテストID"T1000"のテストのそれぞれとの類似度を求める。一方、検知部101は、実行順序"500"番のテストID"T500"のテストの失敗を検知しなかったと判断すると、ステップS106に進む。
【0093】
算定部102は、類似度に基づいて、未だ実行されていないテストのそれぞれが失敗する程度を算定する(ステップS104)。
【0094】
例えば、算定部102は、テストID"T501"のテストについて類似度"1"が得られたとすると、テストID"T501"のテストが失敗する程度を"1"と算定する。
【0095】
再設定部103は、失敗する程度に基づいて、未だ実行されていないテストすなわち、実行順序(i+1)から実行順序Nのテストの実行順序を再設定する(ステップS105)。
【0096】
例えば、テストID"T501"からテストID"T1000"のテストについて、失敗する程度がテストID"T1000"、"T999"、"T998"、"T997"、・・・、"T504"、"T503"、"T502"、"T501"の順に低くいとすると、再設定部103は、テストID"T501"からテストID"T1000"のテストの実行順序を、図7の実行順序情報に示すように、再設定する。
【0097】
テスト実行装置100は、実行順序iをインクリメントする(ステップS106)。そして、テスト実行装置100は、タスクを完了する想定時間内に実行順序iのテストの実行が終了するか否かを判断する(ステップS107)。テスト実行装置100は、タスクを完了する想定時間に実行順序iのテストの実行が終了すると判断すると(ステップS107;YES)、ステップS101に戻る。一方、テスト実行装置100は、タスクを完了する想定時間に実行順序iのテストの実行が終了しないと判断すると(ステップS107;NO)、図10の処理を終了する。
【0098】
例えば、テスト実行装置100は、実行順序i(=500)をインクリメントし、実行順序"501"番のテスト(テストID"T1000")が、タスクの想定時間内(例えば、タスクの開始から24時間以内)に終了と判断すると、実行順序"501"番目のテスト(テストID"T1000")を実行する。一方、テスト実行装置100は、実行順序"501"番のテスト(テストID"T1000")がタスクの想定時間内に終わらないと判断すると、未だ実行されていない、実行順序"501"~"1000"番のテストID"T501"からテストID"T1000"のテストを未実行のまま、図10のテスト実行処理を終了する。
【0099】
本実施形態によれば、複数のテストを設定された順序で実行する場合に、テストの失敗が検知されると、未だ実行されていない残りのテストの実行順序を、失敗したテストとの類似度から算出された失敗する程度に基づいて再設定することができる。これにより、限られた時間内で複数のテストを実行しなければならない場合に、できるだけ多くのテストの実行を完了して、未発見の不具合を発見できるようにするために、失敗したテストと類似しているか否かに基づいて、テストの実行順序を調整することができる。
【0100】
また、本実施形態によれば、未だ実行されていないテストの実行順序を、失敗したテストとの類似度に基づいて定められた失敗する程度が低い順に再設定することができる。これにより、限られた時間内で複数のテストを実行しなければならない場合に、失敗する可能の高いテストを後回しにして、限られた時間内でできだけ多くのテストを実行することができる。よって、複数の全てのテストの実行を完了する可能性を高めることができる。また、失敗したテストと異なる特徴を有するテストを優先して実行することができるので、できるだけ早期に未発見の不具合を発見することができる。
【0101】
また、本実施形態によれば、未だ実行されていないテストの実行順序を、失敗したテストとの類似度に基づいて定められた失敗する程度が代表値に近い順に再設定することができる。これにより、失敗する可能性の高いテスト、及び、成功する可能性が高いテストを、後回しにして残りのテストを実行することができる。よって、失敗したテストと異なる特徴を有するテストであって、失敗する可能性があるテストを優先して実行するので、より早期に未発見の不具合を発見することができる。
【0102】
また、本実施形態によれば、失敗する程度の算定に用いられる類似度を、テストの対象が利用する機能、モジュール又はライブラリが共通するか否か、対象に対応付けられたテキストの要素が共通又は相違するか否か、共通するグループに属するか否か、及び、過去のテストの結果が共起するか否かに基づいて、求めることができる。これにより、テストの様々な特徴に基づいて、類似度を求めることができ、失敗したテストと、未だ実行されていないテストとの類似度を正確に求めることができる。
【0103】
また、本実施形態によれば、失敗する程度の算定に用いられる類似度を、直近又は過去に失敗したテストを対象として求める。これにより、最新又は過去に失敗したテストの傾向を考慮して類似度を求めることができる。
【0104】
また、本実施形態によれば、失敗する程度を、1つ又は複数の類似度に基づいて算定する。これにより、未だ実行されていないテストが失敗する程度を、特定の失敗したテストに対する類似度に基づいて算定したり、複数の失敗したテストに対する類似度に基づいて算定したりすることができる。
【0105】
(5.変形例)
以上、本発明の実施形態を説明したが、本発明を実施するにあたっては、種々の形態による変形及び応用が可能である。
【0106】
上記実施形態において、類似度は、複数の観点に基づいて求められるが、複数の観点を組み合わせて求めてもよい。例えば、テストの対象が利用する機能、モジュール、又は、ライブラリに基づいて求められた類似度と、テストの対象に対応付けられるテキストに出現する要素が共通又は相違する度合いに基づいて求められた類似度との和を、失敗する程度の算定に用いられる類似度としてもよい。
【0107】
また、上記実施形態において、類似度の求め方の例を示したが、これに限らず、例えば、算定部102は、失敗が検知されたテスト及び未だ実行されていないテストのテスト情報を入力として類似度を出力する学習済モデルを利用することにより、類似度を求めてもよい。例えば、学習済モデルは、失敗が検知されたテスト及び未だ実行されていないテストのテスト情報と、失敗が検知されたテストと未だ実行されていないテストとの類似度とを学習データとして、ニューラルネットワーク等を訓練することにより学習を行って生成される。学習には、機械学習、深層学習などを適用することができ、いわゆる人工知能サービス等を採用することも可能である。なお、学習済モデルは、テスト実行装置100により生成されてもよいし、他の装置により生成されてもよい。
【0108】
本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施の形態及び変形が可能とされるものである。また、上述した実施の形態は、この発明を説明するためのものであり、本発明の範囲を限定するものではない。すなわち、本発明の範囲は、実施の形態ではなく、特許請求の範囲によって示される。そして、特許請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、この発明の範囲内とみなされる。
【産業上の利用可能性】
【0109】
本発明によれば、複数のテストを設定された順序で実行して失敗が検知された際に、未だ実行されていないテストの実行順序を失敗する程度に基づいて再設定することが可能なテスト実行装置、テスト実行方法及びプログラムを提供することができる。
【符号の説明】
【0110】
11 CPU
12 ROM
13 RAM
14 記録媒体
15 出力デバイス
16 通信デバイス
17 操作デバイス
18 バス
100 テスト実行装置
101 検知部
102 算定部
103 再設定部
200 サーバ
300 コンピュータ通信網
【要約】
【課題】複数のテストを設定された順序で実行して失敗が検知された際に、未だ実行されていないテストの実行順序を失敗する程度に基づいて再設定が可能なテスト実行装置等を提供する。
【解決手段】テスト実行装置100は、複数のテストを設定された順序で実行する。検知部101は、複数のテストのいずれかのテストの失敗を検知する。算定部102は、検知部101により失敗が検知されると、失敗が検知されたテストと、複数のテストのうち未だ実行されていないテストのそれぞれとの類似度を求め、当該類似度に基づいて、未だ実行されていないテストのそれぞれが失敗する程度を算定する。再設定部103は、算定部102により失敗する程度が算定されると、失敗する程度に基づいて、未だ実行されていないテストが実行される順序を再設定する。
【選択図】図3
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10