(57)【要約】【課題】並列分散処理によるテストケースの実行において、実行時間を効果的に短縮する。【解決手段】複数のコンピュータ４０を並列的に使って回帰テストを実行するシステム１０において、回帰テスト時に記録した各テストケースの実行時間に基づき、複数のテストケースを実行時間の長い順にソートする。そして、複数のテストケースを定めた実行順で実行する。【選択図】図２
2019191685.tif 000002
【特許請求の範囲】
【請求項１】
システムにおいて、複数のテストケースの実行順を定め、
複数のコンピュータを並列的に使うことによって、複数のテストケースを所定の実行順で実行するテスト方法であって、
前記システムにおいて、各テストケースの実行時間に従って実行順を定めることを特徴とするテスト方法。
【請求項２】
前記システムにおいて、テストケースの実行順を、実行時間の長い順に定めることを特徴とする請求項１に記載のテスト方法。
【請求項３】
前記システムにおいて、以前実行されたときに記録された各テストケースの実行時間に従って、実行順を定めることを特徴とする請求項１または２に記載のテスト方法。
【請求項４】
前記システムにおいて、複数のテストケースを実行する度に、各テストケースの実行時間を記録することを特徴とする請求項３に記載のテスト方法。
【請求項５】
前記システムにおいて、継続的インテグレーションによる回帰テストが行われることを特徴とする請求項１乃至４のいずれかに記載のテスト方法。
【請求項６】
記憶部に記憶された複数のテストケースの実行順を定める実行順設定部と、
複数のコンピュータに対し、並列分散処理によって、複数のテストケースを所定の実行順で実行させるテストケース実行部とを備え、
前記実行順設定部が、各テストケースの実行時間に従って実行順を定めることを特徴とするシステム。
【請求項７】
前記システムにおいて、
前記記憶部に記憶された複数のテストケースに対し、各テストケースの実行時間に従って実行順を定める実行順を定めるステップと、
複数のコンピュータに対し、並列分散処理によって、複数のテストケースを実行順で実行させるステップと
を実行させることを特徴とするプログラム。
【請求項８】
複数のコンピュータを並列的に使うことによって、継続的インテグレーションによる回帰テストを実行することが可能なシステムにおいて、複数のテストケースが所定の実行順で並ぶファイルから、実行時間の長い順で複数のテストケースが並ぶファイルを生成することを特徴とするテストケースのファイル生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアプログラムの開発過程において、プログラムの変更、不具合確認などを目的とするテストに関する。
【背景技術】
【０００２】
ソフトウェア開発では、プログラムに不良（バグ）が含まれていないか探索し、修正するため、テストが行われる。具体的には、テスト対象となる完成前のプログラムに対し、様々な条件設定でそのプログラムを実行させるテスト用プログラム（以下、テストケースという）を順次実行し、プログラムに不良が存在しないか確認する。不良を確認したらその原因を解析し、プログラムを修正する。
【０００３】
例えば、継続的インテグレーション（Continuous Integration）によるソフトウェア開発では、複数の開発者が、集中管理されたリポジトリに開発プログラムを登録する。プログラムが登録される度にテストケースを自動的に実行することによって、ソフトウェア開発を効率的に行うことができる。
【０００４】
このような継続的インテグレーションでは、テストケースの数が増えるのに伴い、テストの実行時間が増大するという問題が生じる。これを解消する方法として、テストケースのうち重要なものに限定する手法が知られている。
【０００５】
例えば、修正により新たに不良発生の可能性が高いテストケース、対象プログラムとの依存関係が強いテストケース、実施重要度が大きいテストケースなどを選択し、優先的に実行する（特許文献１、２、３参照）。あるいは、プログラムの開発状況やテスト実施内容などに基づいて優先度の高いテストケースを抽出し、実行する（特許文献４参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−１２９６６１号公報
【特許文献２】特開２００８−２０４４０５号公報
【特許文献３】特開２０１０−１３４６４３号公報
【特許文献４】特許第５９７０６１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
テストケースの実行時間は、その内容などに依存し、テストケースの間で実行時間に大きな差が生じることがある。並列分散処理によってテストケースを実行する場合、テストケースを単に履歴順、登録順に従って複数のコンピュータに実行させると、あるコンピュータでは、実行時間の比較的長いテストケースが続き、他のコンピュータでは比較的短い実行時間のテストケースが続いて行われる状況が生じやすい。すべてのコンピュータの実行終了を待ってテスト結果を判断しなければ、更なるプログラム修正、テストに進むことができず、ソフトウェア開発時間の短縮に至らない。
【０００８】
したがって、並列分散処理によるテストケースの実行において、実行時間を効果的に短縮することが求められる。
【課題を解決するための手段】
【０００９】
本発明のテスト方法は、システムにおいて、複数のテストケースの実行順を定め、複数のコンピュータを並列的に使うことによって、複数のテストケースを所定の実行順で実行するテスト方法であって、システムにおいて、各テストケースの実行時間に従って実行順を定める。例えばシステムにおいて、テストケースの実行順を、実行時間の長い順に定めることが可能である。例えば、継続的インテグレーションによる回帰テストを行うことができる。
【００１０】
システムでは、以前実行されたときに記録された各テストケースの実行時間に従って、実行順を定めることが可能である。例えば、複数のテストケースを実行する度に、各テストケースの実行時間を記録することができる。
【００１１】
本発明の他の一態様であるシステムは、例えばソフトウェア開発を支援するシステムの一部あるいはすべてで構成することが可能であり、記憶部に記憶された複数のテストケースの実行順を定める実行順設定部と、複数のコンピュータに対し、並列分散処理によって、複数のテストケースを所定の実行順で実行させるテストケース実行部とを備える。実行順設定部は、各テストケースの実行時間に従って実行順を定める。
【００１２】
本発明の他の一態様であるプログラムは、システムにおいて、記憶部に記憶された複数のテストケースに対し、各テストケースの実行時間に従って実行順を定める実行順を定めるステップと、複数のコンピュータに対し、並列分散処理によって、複数のテストケースを実行順で実行させるステップとを実行させる。
【００１３】
一方、本発明の他の態様であるファイル作成方法は、複数のコンピュータを並列的に使うことによって、継続的インテグレーションによる回帰テストを実行することが可能なシステムにおいて、複数のテストケースが所定の実行順で並ぶファイルから、実行時間の長い順で複数のテストケースが並ぶファイルを生成する。
【発明の効果】
【００１４】
本発明によれば、並列分散処理によるテストケースの実行において、実行時間を効果的に短縮することができる。
【図面の簡単な説明】
【００１５】
【図１】本実施形態であるテストケース実行可能なシステムの構成図である。
【図２】回帰テストを実行する処理のフローチャートである。
【図３】回帰テストの実行時間を示した図である。
【発明を実施するための形態】
【００１６】
以下では、図面を参照して本発明の実施形態について説明する。
【００１７】
図１は、本実施形態であるテストケース実行可能なシステムの構成図である。
【００１８】
システム１０は、回帰テスト（リグレッションテスト）を実行可能なシステムであり、テストケース格納部１５、テストケース管理部２０、テストケース実行部３０、プログラム格納部４０’、ユーザインターフェイス５０とを備える。ここでは、テストケース管理部２０は、継続的インテグレーションを行う機能を備え、プログラムの自動回帰テストが反復的に行われる。このような機能を実現するプログラムは、図示しない記憶媒体に記憶されている。
【００１９】
開発者は、ユーザインターフェイス５０を通じて、特定のプログラムに対する修正、変更などを行う。テストケース管理部２０がプログラムの修正、変更を検出すると、テストケース実行部３０は、テストケース管理部２０からの指示に従い、回帰テストを行う。
【００２０】
テストケース格納部１５には、複数のテストケースが格納されている。テストケースは、テスト対象となるプログラムに対して様々な条件を設定して実行し、プログラム修正が誤っていないか、新たな不良が発生していないかといったことを調べるためのテスト用プログラムであり、それぞれテスト内容が異なる。
【００２１】
テストケース実行部３０は、複数のコンピュータ４０と接続し、並列分散処理によって回帰テストを複数のコンピュータ４０に実行させる。具体的には、テストケース実行部３０は、複数のコンピュータそれぞれにテストケースを順に割り当てて実行させ、実行終了すると、次の順のテストケースを割り当てていく。
【００２２】
一連のテストケースの実行がすべて終了すると、テストケース管理部２０は、テストケース実行部３０からテスト結果を受け取る。開発者は、テスト結果を受けてさらにプログラム修正を行う。それに伴い、複数のテストケースを用いた回帰テストが自動的に行われる。このようなプログラム修正、自動テストが繰り返し行われる。
【００２３】
本実施形態では、複数のテストケースを並列分散処理させるとき、テストケースの実行順を、実行時間の長い順にして回帰テストを行う。以下、これについて説明する。
【００２４】
図２は、回帰テストを実行する処理のフローチャートである。図３は、回帰テストの実行時間を示した図である。
【００２５】
テスト開始時には、複数のテストケースが履歴順（登録順）に並べたリストのファイルが、テストケース格納部１５に格納されている。初めは、複数のコンピュータ４０によって複数のテストケースを履歴順で並列的に実行させる（Ｓ１０１、Ｓ１０２）。このとき、各テストケースの実行時間を計測、記録し、テストケースの実行時間のリストを作成する（Ｓ１０１〜Ｓ１０３）。
【００２６】
回帰テストのテスト結果を踏まえてプログラムが修正されると、回帰テストが再び実行される（Ｓ１０４）。ステップＳ１０５では、テストケースの実行順が、先の回帰テストで作成された実行時間のリストに基づいてソートされる。具体的には、複数のテストケースの実行順が、実行時間の長い順に変更され、新たな実行順で並んだ複数のテストケースのファイルが作成される。そして、新たに作成されたファイルに従い、回帰テストが行われる（Ｓ１０６）。
【００２７】
図３では、ソート前、ソート後の実行時間を示している。ここでは、複数のコンピュータ４０を４つのマシンＡ〜Ｄによって構成し、１５個のテストケースＴ１〜Ｔ１５によって回帰テストを行っている。
【００２８】
最初の回帰テストでは、４つのマシンＡ〜Ｄを使って履歴順（登録順）で複数のテストケースを実行している。初めに、並び順で上位４つのテストケースが４つのマシンＡ〜Ｄに割り当てられる。いずれかのマシンでテストケースの実行が終了すると、次の順番のテストケースがそのマシンに割り当てられる。各マシンにおいて実行終了する度に、次の順のテストケースを割り当てていく。
【００２９】
このような並列分散処理による回帰テストの過程において、実行時間の比較的長いテストケースが、あるマシンで続けて行われると、そのマシンにおける総実行時間が他のマシンと比べて長くなってしまう。図３では、マシンＣにおける実行時間終了が他のマシンＡ、Ｂ、Ｄと比べて長い。その一方、マシンＤにおける総実行時間は比較的短い。その結果、全てのマシンＡ〜Ｄによる実行終了までの総時間（回帰テスト時間）ｔ０が長くなる。
【００３０】
一方、複数のテストケースの実行順を、前回の回帰テストにおいて実行時間の長い順に設定した場合、４つのマシンＡ〜Ｄに対して実行時間の比較的長い４つのテストケースＴ１〜Ｔ４が最初に割り当てられる。そして、実行時間の長い順にテストケースが４つのマシンＡ〜Ｄに順次割り当てられていく。プログラムの修正があっても、各テストケースの実行時間はそれほど大きく変化しないと考えれば、回帰テスト時間ｔ１は、最初の回帰テストの時間ｔ０と比べて短くなる。
【００３１】
ステップＳ１０６で回帰テストが実行されると、ステップＳ１０３と同様、各テストケースの実行時間のリストが作成され、記録される（Ｓ１０７）。そして、次の回帰テストには、新たに記録された実行時間に基づいて実行順が定められ、ファイルが作成される。プログラム修正が終了するまで（Ｓ１０８）、このようなテストケースの実行順のソートと回帰テストが繰り返し行われる。
【００３２】
なお、回帰テストの度にテストケースの実行順を並び替えしなくてもよく、所定回数回帰テストを行ってから実行順を定めてもよい。また、テストケースの実行順の並び替え、ファイル作成を、回帰テスト終了直後など、あるいは次の回帰テストが開始される前に行ってもよい。
【００３３】
このように本実施形態によれば、複数のコンピュータ４０を並列的に使って回帰テストを実行するシステム１０において、回帰テスト時に記録した各テストケースの実行時間に基づき、複数のテストケースを実行時間の長い順にソートする。そして、複数のテストケースを定めた実行順で実行する。
【００３４】
実行時間の長い順序でテストケースを実行させることにより、並列分散処理に基づく回帰テストの時間短縮を図ることができる。また、長時間かかるテストケースを始めに実行するため、副作用リスクがあるなど開発者にとって優先的順位が高いテストケースを優先的に実行することができる。
【００３５】
各テストケースの実行時間のデータをテストケース格納部１５へ格納することによって、ソート処理および新たなファイル作成が次の回帰テストにおいて容易となる。また、各テストケースの実行時間を回帰テストの度に記録することにより、新たなテストケースを追加しても、最新の実行時間のデータに基づいた順番でテストケースを実行することができる。
【００３６】
本実施形態では、実行時間の長い順で実行順をスケジューリングしているが、短い順でスケジューリングしてもよい。また、継続的インテグレーションツールを用いない回帰テストに対しても適用可能である。さらに、回帰テスト以外のソフトウェアのテストに対しても有効である。ソート処理、ファイル作成については、テストケース管理部２０以外の処理部で行ってもよく、継続的インテグレーション処理のプログラムに一部組み込むことも可能であり、あるいは、それにソート処理、ファイル作成などの処理を編集作業などによって組み入れることも可能である。
【００３７】
システムは、サーバシステムなどで構成すればよく、仮想サーバなどのクラウドコンピュータで実装することも可能である。また、継続的インテグレーションの態様、開発支援システムの態様、ＯＳ、コンピュータの種類などは特に制限されず、任意である。
【符号の説明】
【００３８】
１０  システム
１５  テストケース格納部
２０  テストケース管理部（実行順設定部）
３０  テストケース実行部
４０  コンピュータ
【図１】
2019191685.tif 000003
【図２】
2019191685.tif 000004
【図３】
2019191685.tif 000005