(57)【特許請求の範囲】
【請求項１】
ソフトウェアのデバッグ処理を支援するためのプログラムであって、
ソースコード格納手段にソースコードを、格納時刻を表す格納時刻情報と対応付けて格納する第１の手順、
前記ソースコード格納手段に先に格納されている第１のソースコードと前記第１の手順により新たに格納された第２のソースコードとを比較することにより比較結果情報を生成して、前記第２のソースコードと対応させて格納する第２の手順、
前記第２のソースコードを実行形式に変換して予め決められた試験を行う第３の手順、
上記試験により得られる試験結果情報およびその試験を行った時刻を表す試験時刻情報、前記第２のソースコードを対応づけて格納する第４の手順、
前記第１〜第４の手順を繰り返し実行する第５の手順、
指定された試験結果情報に対応する比較結果情報として、前記試験時刻情報および前記格納時刻情報を利用して、試験が行なわれた前記第２のソースコードに対応付けられている前記比較結果情報を取得して出力する第６の手順をコンピュータに実行させ、
前記第６の手順は、
第１の試験の結果が正常でありかつその第１の試験よりも後に実行された第２の試験の結果が非正常であったときに、前記第１の試験が実行された時刻の直前に 前記ソースコード格納手段に格納されたソースコードと前記第２の試験が実行された時刻の直前に前記ソースコード格納手段に格納されたソースコードとの間の 比較結果情報を出力する処理
を含むプログラム。
【請求項２】
前記比較結果情報は、前記ソースコード格納手段に前記第２のソースコードが格納されたことを契機として生成される
ことを特徴とする請求項１に記載のプログラム。
【請求項３】
前記第６の手順は、電子メールを用いてメール受信側に通知することにより出力する
ことを特徴とする請求項１に記載のプログラム。
【請求項４】
前記第６の手順は、ウェブブラウザに表示させることにより出力する
ことを特徴とする請求項１に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアのデバッグ支援のための技術に関する。
【背景技術】
【０００２】
各種ソフトウェア（ファームウェアを含む）の開発の効率化に関する技術として、開発工程のうち試験工程の効率化を目的とした、ソフトウェア試験の自動化システムについて開示されている（例えば、特許文献１）。特許文献１に記載の技術においては、ソフトウェア試験の自動化システムにより、単体試験における作業のうち、試験項目の抽出、試験手順書の作成、試験結果の判定等の処理が自動的に実行される。
【０００３】
ところで、一般的なソフトウェアの開発においては、開発を複数の段階に分け、各段階で実現すべき機能が定められ、順次そのソフトウェアに追加されていく。各開発段階の試験において、追加された機能が正しく動作することが確認される。
【０００４】
段階的に機能を追加していくと、ある開発段階においてはしかるべき戻り値が試験結果として得られていたとしても、次の段階において新たな機能をソフトウェアに盛り込んで試験を行うと、先の試験とは異なる結果が返ってきてしまうことがある。以下の説明においては、このような現象をデグレード障害と呼ぶことにする。
【０００５】
このデグレード障害の要因となっている箇所を突き止めるには、デグレード障害が検出された時点におけるソースコードと、障害が検出されるよりも前のバージョンのソースコードとを比較して、関連箇所を追跡していかなくてはならない。
【０００６】
デグレード障害追跡を含んだ、ソフトウェア試験のためのツールとして、各種システムやコマンドが使用されている。例えば、ソースコードの開発環境からソースを試験用マシンにダウンロードするためのコマンドである「wget」や分散型ソース管理システムである「cvs/bitkeeper/subversion」、試験の実行形式の構築のためのシステムである「ports/portage」や「Autobuild」、試験を自動的に実行するためのシステム「JUNIT/NUNIT/DejaGNU/Rational Manual Tester」、先のバージョンのソースコードとの差分をとるためのシステム「cxref/global」等が、開発におけるデバッグ支援ツールとして従来から用いられている。
【特許文献１】特開平９−２４４９２１号公報（要約、図１、００１３〜００１５段落）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従来技術のデバッグ環境においては、ソースコードの改変についての管理と、その試験結果の管理とは別個になされており、関連付けられていない。このため、デグレード障害の追跡は上記の支援ツール等を用いて行うことができるとしても、実際に比較すべきソースコードがどれであるのか、また、ソースコードにおいてデグレードに関連する箇所がどこであるのかなどについてはシステム開発者が手動にて調べる必要があり、これらの作業に多くの時間を要していた。
【０００８】
本発明は、ソフトウェアのデバッグを効率化することのできる技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明によれば、ソフトウェアのデバッグ処理を支援するためのプログラムであって、ソースコード格納手段にソースコードを格納する第１の手順、前記ソースコード格納手段に先に格納されている第１のソースコードと前記第１の手順により新たに格納された第２のソースコードとを比較することにより比較結果情報を生成して格納する第２の手順、前記第２のソースコードを実行形式に変換して予め決められた試験を行う第３の手順、上記試験により得られる試験結果情報およびその試験を行った時刻を表す試験時刻情報を対応づけて格納する第４の手順、前記第１〜第４の手順を繰り返し実行する第５の手順、指定された試験結果情報に対応する比較結果情報を、前記試験時刻情報および各ソースコードの前記ソースコード格納手段への格納時刻を表す格納時刻情報を利用して取得して出力する第６の手順、をコンピュータに実行させるプログラムが提供される。
【００１０】
ソースコード（第２のソースコード）をソースコード格納手段に格納するとき、先に格納されているソースコード（第１のソースコード）との間の差分を、比較結果情報として生成して保有しておく。第１のソースコードについて行った試験の結果が正常であったにもかかわらず、第２のソースコードについて行った試験の結果が正常でなかった際には、予め作成して保有してある第１、第２のソースコードの差分を表す比較結果情報を出力する。ソースコード格納手段に格納された複数のバージョンのソースコードについて、各ソースコードについての試験結果と適切に対応付けて管理することができる。
【００１１】
前記比較結果情報は、前記ソースコード格納手段に前記第２のソースコードが格納されたことを契機として生成されることとしてもよい。新たなソースコードが格納されたことを比較結果情報の生成の契機とすることで、ソースコードのバージョンごとの比較が確実になされ得る。
【００１２】
前記第６の手順は、第１の試験の結果が正常でありかつその第１の試験よりも後に実行された第２の試験の結果が非正常であったときに、前記第１の試験が実行された時刻の直前に前記ソースコード格納手段に格納されたソースコードと前記第２の試験が実行された時刻の直前に前記ソースコード格納手段に格納されたソースコードとの間の比較結果情報を出力することとしてもよい。第１のソースコードと第２のソースコードとの差分のうちデグレードの発生している箇所を特定する作業についての効率化が図れる。
【００１３】
また、前記第６の手順は、電子メールを用いてメール受信側に通知することにより出力することとしてもよいし、ウェブブラウザに表示させることにより出力することとしてもよい。
【発明の効果】
【００１４】
本発明によれば、ソースコードとそのソースコードについての試験結果とが関連付けて管理されることにより、ソフトウェアのデバッグの効率化を図ることができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の好適な実施の形態について、図面を参照しながら詳細に説明する。
図１は、本実施形態に係るデバッグ支援装置１を含んだシステム構成図である。図１のシステム１０は、例えば、デバッグ支援装置１、ソースリポジトリ２、社内リポジトリ３、ターゲット機４（４Ａ、４Ｂ、４Ｃ）、テスト結果参照機５を含んで構成される。
【００１６】
デバッグ支援装置１は、テスト実施用のホストコンピュータ１１、テスト用ソースコードリポジトリ１２、デバッグ支援情報格納部１３、テストスクリプト格納部１４、ターゲット機用実行形式格納部１５、テスト結果格納部１６、テスト定期実行プログラム１７およびクロスリファレンサ１８を含む。
【００１７】
ソースリポジトリ２および社内リポジトリ３は、デバッグ支援装置１のホストコンピュータ１１においてテストされるソースコードを格納している。例えば、ある企業でプログラムの開発が行われ、一部のソースコードについてはインターネット等を介して入手したソースコードを開発に用いる場合には、ソースリポジトリ２に格納されるソースコードは、一般に、あるいは特定のユーザに対して公開されたソースコードであり、社内リポジトリ３に格納されるのは、その企業内において開発されたソースコードである。ソースリポジトリ２はインターネット等のネットワークを介して、社内リポジトリ３はＬＡＮ等を介して、必要なソースコードを、本実施形態に係るデバッグ支援装置１に提供する。
【００１８】
ターゲット機４は、開発されたソースコードを実際に実行するための装置である。図１に示されるシステム構成の例においては、３台のターゲット機を備えた構成とされ、例えば、評価ボード４Ａ、実機４Ｂ等がハブを介して本実施形態に係るデバッグ支援装置１に接続される。これらターゲット機４Ａ、４Ｂ、４Ｃにおいてテストが実行され、そのテスト結果はハブを介してデバッグ支援装置１に転送される。
【００１９】
テスト結果参照機５は、デバッグ支援装置１に転送されたターゲット機４におけるテスト結果や、デバッグ支援装置１におけるそのテスト結果についての分析結果を参照するための端末装置等で構成される。図１に示されるように、例えばプリンタやモニタ等に結果を出力する構成としてもよい。
【００２０】
デバッグ支援装置１におけるホストコンピュータ１１は、ソースリポジトリ２や社内リポジトリ３からダウンロードしたソースコードのバージョン、そのソースコードの作成日時、そのソースコードについてのテスト結果を関連付けて管理する。テスト用ソースコードリポジトリ１２は、ダウンロードしたソースコードを格納するための２次記憶である。デバッグ支援情報格納部１３は、ダウンロードしたソースコードについてのバージョン間の差分や、その各ソースコードをテスト用ソースコードリポジトリ１２に格納した日時等の時刻情報を保有し、管理するための２次記憶である。テストスクリプト格納部１４は、テスト用ソースコードリポジトリ１２に格納されたソースコードについてのテストの手順を記述したスクリプトを格納するための２次記憶である。実行形式格納部１５は、ターゲット機４においてテストを実行するために作成された実行形式を格納するための２次記憶である。テスト結果格納部１６は、ターゲット機４から転送されたテスト結果を格納するための２次記憶である。テスト定期実行プログラム１７は、テストを所定の時間間隔で実行し、その結果を得るためのプログラムである。クロスリファレンサ１８は、ソースコードのバージョン間の差分を取るためのプログラムである。
【００２１】
なお、図１に示されるシステム構成によれば、開発されたソースコードはソースリポジトリ２や社内リポジトリ３に格納され、開発されたソースコードについてのテストはターゲット機４において実行されるが、これに限定されるものではない。例えば、開発されたソースコードを直接的にデバッグ支援装置１に格納するようなシステム構成や、テストをデバッグ支援装置１において実行するような構成であってもよい。
【００２２】
また、図１の構成例では、ソースコードリポジトリ２や社内リポジトリ３からソースコードをダウンロードし、テスト用ソースコードリポジトリ１２に登録された時刻情報を元に複数のバージョンのソースコードを管理することとしているが、これに限られない。例えば、ソースコードリポジトリ２、あるいは社内リポジトリ３にソースコードが格納された時刻を用いて管理することとしてもよい。以下の説明においては、簡単のため、図１の構成例にしたがってリポジトリとはテスト用ソースコードリポジトリ１２としている。
【００２３】
図２は、リポジトリに登録された、複数のバージョンのソースコードを管理するのに必要な情報の実施例である。例えば上記のテスト実施用ホストコンピュータ１１や、テスト結果参照機５のモニタに、図２に示すような画面を表示することによって、ユーザに対して、リポジトリに登録されたソースコードのバージョンごとの情報が示される。
【００２４】
図２の例においては、あるソフトウェアのバージョン「１．１．１．１」、「１．２」および「１．３」について、バージョンごとに必要な情報が示されている。例えば、バージョン情報２１に対して、格納日時情報２２、修正内容情報２３、および差分元情報２４が表示される。
【００２５】
図２に示される複数のバージョンのうち、バージョン「１．３」を例に挙げる。格納日時情報２２は、バージョン「１．３」のソースコードを、テスト用ソースコードリポジトリ１２に最初に格納した日時、すなわち、デバッグ支援装置１においてソフトウェアがアップデートした日時を表す。修正内容情報２３は、先のバージョンのソフトウェアと比較した変更量が表示される。ここでは、バージョン「１．２」のソフトウェアと比較して、追加行が４１行、削除行は０行である。差分元情報２４は、先のバージョンのソースコードと比較した際に差分の存在する箇所を表示する。ここでは、バージョン「１．２」との間の差分を生成していることを表示している。
【００２６】
これまで説明してきたように、デバッグ支援装置１は、リポジトリにバージョンごとにそのソースコードを格納して管理することができ、ソースコード間における差分をクロスリファレンス情報として保有する。クロスリファレンス情報の表示は、ユーザの指定に基づいて行われる。あるいは、あるテスト結果がターゲット機４からダウンロードされるごとに、あるいは、所定の期間ごと、例えば２４時間ごとに実行されることとしてもよい。
【００２７】
図３は、本実施形態に係るデバッグ支援の処理についてのフローチャートである。図３に沿って、本実施形態に係るデバッグ支援装置１が実行する処理の概要を説明する。
まず、ステップＳ１で、ソースリポジトリ２等のテストに必要なソースコードを格納するリポジトリから、ソースコードをダウンロードする。次に、ステップＳ２で、クロスリファレンサ１８を起動し、ダウンロードされたソースコードと既にテスト用ソースコードリポジトリ１２に格納されているソースコードとの間で差分を取り、その差分をクロスリファレンス情報としてクロスリファレンス情報格納部１３に格納する。このとき、クロスリファレンサ１８は、新たに取得したソースコードと過去に取得した各ソースコードとの間のクロスリファレンス情報をそれぞれ生成するようにしてもよいし、あるいは、新たに取得したソースコードと前回取得したソースコードのみとの間のクロスリファレンス情報を生成するようにしてもよい。ステップＳ３で、ダウンロードしたソースコードから実行形式を構築し、ステップＳ４で、ターゲット機４におけるテストを実行させる。最後に、ステップＳ５で、ターゲット機４におけるテストの実行結果を、テスト結果格納部１６に格納する。このとき、試験を実行した時刻（試験時刻情報）をその試験結果と対応づけて格納しておく。
【００２８】
図３に示される、ソースコードのダウンロードからテストの実行結果を２次記憶に格納するまでの一連の処理は、例えば所定の時間間隔で、定期的かつ自動的に実行される。あるいは、新たにソースコードがダウンロードされたことをデバッグ支援装置１において認識されたことを契機として実行されることとしてもよい。
【００２９】
図４は、ソースコードの取得日時情報を設定する処理のフローチャートである。図４を参照して、ソースコードをデバッグ支援装置１が取得した日時に関する情報（格納時刻情報）を設定する方法を説明する。
【００３０】
ステップＳ１１で、ダウンロード先定義ファイルに記述されたダウンロード先のソースリポジトリ２（あるいは社内リポジトリ３）に対して、そのダウンロード先定義ファイルに記述された接続手順を用いて接続し、ステップＳ１２で、ダウンロード先定義ファイルで指定されたファイルをホストコンピュータ１１にダウンロードする。
【００３１】
図５は、ダウンロード定義ファイルの例である。図中においては＜５Ａ＞のコマンドによって、テストの対象となるプログラムのモジュール名＜ｍａ＞、接続手順＜ｃａ＞およびダウンロード先アドレス＜ｄａ＞が指定される。コマンド＜５Ａ＞においては、モジュール「binutils」について、「cvs」を用いてコンピュータ「pserver」の「anoncvs@sources.abcdef.com:/cvs/src」で示されるアドレスからダウンロードするよう指定する。モジュール「gcc」について指定するコマンド＜５Ｂ＞についても、同様のフォーマットでモジュール名＜ｍｂ＞、接続手順＜ｍｃ＞およびダウンロード先アドレス＜ｄｂ＞が指定される。
【００３２】
ステップＳ１３においては、ダウンロードしたソースコードのファイルを、テスト用ソースコードリポジトリ１２に格納する。ステップＳ１４で、今回ダウンロードしたソースコードのファイルと、前回ダウンロードしたソースコードのファイルとの間で差分をとり、生成したクロスリファレンス情報をデバッグ支援情報格納部１３に格納する。ステップＳ１５で、クロスリファレンス情報を生成した日時を、生成時刻情報としてそのクロスリファレンス情報に対応させて設定し、処理を終了する。なお、図４に示される一連の処理は、図３中においてはステップＳ１およびステップＳ２の処理に対応する。
【００３３】
図６は、生成されたクロスリファレンス情報の一例である。ステップＳ１３でテスト用ソースリポジトリ１２に格納されたソースコードと先に格納されているソースコードとを比較して、差分のある箇所をそれぞれ示している。図６の例のように、例えば、各差分箇所に更にリンクを張っておき、各リンク先にそれぞれ実際のソースコードを設定しておいて表示させることもできる。
【００３４】
図６に示す例では、ボックスＢ１にキーワードとして「ｔａｓｋ＿ｓｔｒｕｃｔ」が入力されている。そして、このボックスＢ１に入力されたキーワードを含むソースコードのうち、差分の検出された箇所を表示している。ただし、この形態以外にも、例えば、キーワードが入力されていない場合には、差分の抽出された箇所全てについて表示することとしてもよい。
【００３５】
図７は、シナリオテーブルの実施例である。シナリオテーブルは、実行すべきプログラムを格納したディレクトリ名または実行すべきプログラム名を列記したファイルである。そして、シナリオテーブル内に記述されているディレクトリが指定されると、そのディレクトリの配下のファイルが順番に実行される。図７に示す例では、ディレクトリ「/home/areas/scripts/FJe/ia32」に、テストを実行すべきファイルが格納されている。
【００３６】
図８は、シナリオテーブルに基づいてテストを実行する処理のフローチャートである。テスト実行処理においては、ステップＳ２１で、実行形式およびテストスクリプトの一覧を、それぞれ実行形式格納部１５、テストスクリプト格納部１４から読み出す。ステップＳ２２で、読み出したテストスクリプトの一覧に記述されているファイルについて、順にテストを実行する。ステップＳ２３で、全てのファイルについてテストを実行したか否かを判定する。未完了の場合はステップＳ２２に戻ってまだ実行されていないファイルについてテストを行い、全て完了している場合は処理を終了する。
【００３７】
図９は、テストスクリプト実行時の動作処理についてのフローチャートである。なお、図９に示される処理は、図３ではステップＳ４およびステップＳ５の処理に相当する。
まず、ステップＳ３１で、テストを実行すべきターゲット機４にログインし、ステップＳ３２で、そのターゲット機４において、テストプログラムを起動する。テストプログラムの実行結果は、本実施形態においては、例えばテキスト形式でターゲット機４に格納される。ステップＳ３３で、テストプログラムの実行結果を、ターゲット機４から取得する。ステップＳ３４で、取得したテスト結果を参照し、結果が正常動作時における出力であるか否かを判定する。正常動作が確認されれば（ステップＳ３４：Ｙｅｓ）、ステップＳ３５で、そのテストが成功したことをテスト結果に記録して処理を終了する。一方、正常動作が確認されなかったときは（ステップＳ３４：Ｎｏ）、ステップＳ３６で、そのテストが失敗したことをテスト結果に記録して処理を終了する。
【００３８】
図１０は、テストスクリプトの例である。図１０において、＜１０Ａ＞は、ターゲット機４にログインするためのコマンドで構成される。＜１０Ｂ＞は、テストプログラムを起動するためのコマンドであり、＜１０Ｃ＞は、出力結果からテスト結果を判定するためのコマンドである。＜１０Ｄ＞は、テスト結果を出力表示するためのコマンドであり、これは、図１のテスト結果参照機５のモニタや接続されたプリンタ等に出力される。
【００３９】
図１１は、テスト結果参照機５のモニタにテスト結果を表示させた画面の例である。テスト結果としては、例えば、テストの名称５１、テストの実行日５２、テストの開始時刻５３、テスト結果の一覧５５を含んで表示される。図１１の例においては、２００５年４月１８日の１５時６分１２秒に実行されたテスト「ｐｑ３−ｔｅｓｔ」について、実行リスト５０、およびテストの結果５５が表示されている。
【００４０】
なお、図１１においては、１回分のテスト結果のみが表示されているが、リスト５０には、過去のすべての試験に関する情報が登録される。この場合、リスト５０に登録されている複数のテストの中から所望の１つを選択すると、モニタ上に対応するテスト結果５５が表示される。
【００４１】
テスト結果５５には、テストされたプログラム名５６と、各プログラムに対応する試験項目について、戻り値の正常、異常等に分けてその項目数とを含む。例えば、プログラム「ｔｏｏｌ  ｓｙｓｖｉｎｉｔ」のテスト結果として、テストが成功（ＰＡＳＳ）した項目は４項目、失敗（ＦＡＩＬ）した項目は４項目であることが示される。
【００４２】
ユーザが図１１に示される画面中の結果表示ボタン（「ｒｅｓｕｌｔｓ」ボタン）５４を押下すると、テスト結果５５がテスト結果参照機５のモニタに表示される。図１２は、テスト実行結果の例である。図１２に示されるテスト結果のうち、１行目を例に挙げると、項目「ＭＡＫＥＤＥＶ−＞ＭＡＫＥＤＥＶ」については、テストが失敗（ＦＡＩＬ）したことがわかる。
【００４３】
図１３は、テストが失敗した項目について抽出した結果の例である。図１１における「ｔｏｏｌ  ｓｙｓｖｉｎｉｔ」プログラムについて試験結果が失敗（ＦＡＩＬ）であった４項目について、リンク５７をユーザがクリックすると図１３が 表示される。
【００４４】
図１４は、テスト結果間の差分の例である。本実施形態においては、「ｄｉｆｆ」コマンドを用いて、先にテストの結果、戻り値が全て正常（ＰＡＳＳ）であった際のテスト結果ファイルとの間の差分を得る。差分は、例えば図１４のように、テキスト形式で出力される。
【００４５】
図１４中の７、８行目には、行数と差分抽出結果との間にそれぞれ「−」「＋」の記号が出力されている。これは、７行目のテストをすでに通過したプログラムのテストでは成功（ＰＡＳＳ）しているけれども、８行目のこれと比較されるプログラムのテストでは失敗（ＦＡＩＬ）していることを表している。すなわち、この項目に関してデグレードが発生していることがわかる。
【００４６】
本実施形態に係るデバッグ支援装置１は、あるソフトウェアの複数のバージョンについてテストを実行し、それぞれのテストを実行した日時、およびテストに使用された各ソースコードのバージョンすなわち各ソースコードを自装置のソースコードリポジトリ１２に格納した日時と関連付けて管理する。これにより、図１４に例示するような、あるソースコードについての試験結果と後のバージョンについての試験結果との間に差分が抽出されると、そのテスト実行日時およびソースコードの格納日時の情報を参照して、これらの情報に対応する上記のクロスリファレンス情報を出力することができる。
【００４７】
図１５は、本実施形態に係るデバッグ支援装置１がソースコード間の差分を出力する処理のフローチャートである。
ステップＳ４１で、正常動作が得られた試験の実行日時のうち、最終実行日時を検索する。ここで検索されるテストの実行日時は、すでに説明した、図１１のテストの実行日５２およびテストの開始時刻５３による。ステップＳ４２で、ステップＳ４１の検索により検出された最終実行日時以前にソースコードリポジトリ１２に登録されたソースコード（ファイル）を検索する。このステップでは、テストにおいて全てのテスト項目が通っているソースコードが検索される。ステップＳ４３では、ステップＳ４１における最終実行日時以後にテストの実行されたソースコードを検索する。
【００４８】
ステップＳ４２の処理においては、リポジトリに登録された複数のソースコードのうち、最終的にテストが成功しているバージョンのソースコードが検索される。ステップＳ４３の処理においては、複数のソースコードのうち、ステップＳ４１で検索された最終実行日時以降で、かつ最後にリポジトリに登録された、テスト実行済みのソースコードが検索される。
【００４９】
ステップＳ４４で、ステップＳ４３に対応するソースコードが検索結果として得られたか否かを判定する。そのようなソースコードが得られた場合は、ステップＳ４５に進み、ステップＳ４２およびステップＳ４３の検索によって得られた２つのソースコードの差分をモニタ等に出力表示し、処理を終了する。なお、ステップＳ４４でＮｏの場合、テスト用ソースコードリポジトリ１２に格納されている最新のソースコードとステップＳ４２で検出されたソースコードとの差分を出力し、処理を終了する。
【００５０】
図１６は、ステップＳ４５（ステップＳ４４の判定結果によってはステップＳ４６）における差分の出力表示例である。例えば、図１５のステップＳ４２で検出されたソースコードを右側に、ステップＳ４３で検出されたソースコードを左側に、といったように、画面を分割して２つのソースコードを同時に表示している。
【００５１】
図中「※」印が付されているのは、左右に示された２つの異なるバージョンのソースコード間において差分が存在している箇所である。例えば、この差分のある箇所を色分けした表示、強調表示等により他の箇所と区別して表示するのが好ましい。ユーザのデバッグ処理の効率化の観点からは、図１６のように、例えば差分箇所の前後のソースコードや、差分箇所の含まれる１つのファイル全体等、差分のない箇所を含んで表示させるのが好ましい。
【００５２】
なお、図１５のフローチャートにおいては、ステップＳ４５およびステップＳ４６で、図１６のような２つのソースコード間の差分を表示することとしているが、これに限られない。例えば、図６に示すような、クロスリファレンス情報を表示させることとしてもよい。
【００５３】
また、図１５のフローチャートにおいては、最後に正常動作が確認されたソースコードと、ステップＳ４３で検出されたソースコードまたは最新のソースコードとの間で差分をとっているが、これに限られない。例えば、図１１のようなテスト結果表示画面において、テスト結果の一覧５５に複数の結果を表示することとし、任意の２つのテスト結果を選択すると、上記のテスト実行日５２および開始時刻５３や、ソースコードの格納時刻情報に基づいて、それぞれ対応するソースコードを検出し、それらの差分を表示することとしてもよい。いずれのソースコード間における差分を表示させるかは、ユーザごとに設定可能とするのが好ましい。
【００５４】
あるいは、第１の試験の結果が正常であり且つその第１の試験よりも後に実行された第２の試験の結果が非正常であったときに、第１の試験が実行された時刻の直前にリポジトリに格納されたソースコードと第２の試験が実行された時刻の直前にリポジトリに格納されたソースコードとの間の比較結果情報を出力するようにしてもよい。
【００５５】
図１７は、他の実施形態に係るデバッグ支援装置１を含んだシステム構成図である。デバッグ支援装置１を含むシステムにおいて、メールサーバ６を更に備えている点で図１の構成と異なっている。他の構成については図１と同様であるので同じ符号を付し、ここではその説明については割愛する。
【００５６】
メールサーバ６は、テストの実行結果等を、例えばテスト結果参照機５を通して確認するときに、必要な情報を、レポートして所定のメールアドレスに対して送信するために設けられる。送信されるレポートには、例えば、ソースコードや複数のソースコード間において抽出された差分、テストの実行結果ファイル、テストの実行結果ファイル間における差分、あるいはデグレードの検出に関する情報等が含まれる。
【００５７】
図１８は、デバッグ支援装置１において保有される、メールの配信先のアドレスの例である。メールの配信先は、例えばプログラムごと、あるいはそのバージョンごとに設定することもできる。
【００５８】
あるいは、テストの実行結果等をＷｅｂブラウザ等に表示させることとしてもよい。この実施形態においては、上記のメールで配信されるレポートに含まれる情報と同様の情報、すなわち、ソースコード、ソースコード間において抽出された差分あるいはテストの実行結果ファイル等のデグレードの検出に関する情報が、ＨＴＭＬ形式でデバッグ支援装置１に保存される。これらの情報は、ユーザの指定するタイミング等で、例えばテスト結果参照機５のモニタに表示される。Ｗｅｂブラウザに表示される情報の例としては、例えば、図１６のような、ソースコード間の差分が挙げられる。
【００５９】
以上、本実施形態に係るデバッグ支援装置１によれば、ソースコードはバージョン管理されてリポジトリに登録される。ソースコードがリポジトリに登録されるときに、先に登録されているソースコードとの差分を表すクロスリファレンス情報が生成される。登録されたソースコードはテストされ、テスト結果がそのソースコードのバージョンと対応付けて管理される。このため、このテストによってデグレードが検出されると、そのバージョンのソースコードについて、先に登録されたソースコードとのクロスリファレンス情報が参照される。クロスリファレンス情報を参照することにより、デグレードが、どのソースコードの改変によるものであるかがより容易に把握される。結果として、ユーザは、デグレード障害を追跡する作業を効率化することができる。
【００６０】
（付記１）
ソフトウェアのデバッグ処理を支援するためのプログラムであって、
ソースコード格納手段にソースコードを格納する第１の手順、
前記ソースコード格納手段に先に格納されている第１のソースコードと前記第１の手順により新たに格納された第２のソースコードとを比較することにより比較結果情報を生成して格納する第２の手順、
前記第２のソースコードを実行形式に変換して予め決められた試験を行う第３の手順、
上記試験により得られる試験結果情報およびその試験を行った時刻を表す試験時刻情報を対応づけて格納する第４の手順、
前記第１〜第４の手順を繰り返し実行する第５の手順、
指定された試験結果情報に対応する比較結果情報を、前記試験時刻情報および各ソースコードの前記ソースコード格納手段への格納時刻を表す格納時刻情報を利用して取得して出力する第６の手順、
をコンピュータに実行させるプログラム。
（付記２）
前記比較結果情報は、前記ソースコード格納手段に前記第２のソースコードが格納されたことを契機として生成される
ことを特徴とする付記１に記載のプログラム。
（付記３）
前記第５の手順は、前記第１〜第４の手順を予め決められた所定の時間間隔ごとに繰り返し実行する、
ことを特徴とする付記１に記載のプログラム。
（付記４）
前記第６の手順は、
第１の試験の結果が正常でありかつその第１の試験よりも後に実行された第２の試験の結果が非正常であったときに、前記第１の試験が実行された時刻の直前に前記ソースコード格納手段に格納されたソースコードと前記第２の試験が実行された時刻の直前に前記ソースコード格納手段に格納されたソースコードとの間の比較結果情報を出力する
処理を含むことを特徴とする付記１に記載のプログラム。
（付記５）
前記第６の手順は、電子メールを用いてメール受信側に通知することにより出力する
ことを特徴とする付記４に記載のプログラム。
（付記６）
前記第６の手順は、ウェブブラウザに表示させることにより出力する
ことを特徴とする付記４に記載のプログラム。
（付記７）
前記試験は、試験を実行するためのターゲット機に前記実行形式に変換されたプログラムを転送して実行させ、
前記試験結果情報は、前記ターゲット機から得られる
ことを特徴とする付記４に記載のプログラム。
（付記８）
ソフトウェアのデバッグ処理を支援するためのデバッグ支援方法であって、
ソースコード格納手段にソースコードを格納する第１の手順、
前記ソースコード格納手段に先に格納されている第１のソースコードと前記第１の手順により新たに格納された第２のソースコードとを比較することにより比較結果情報を生成して格納する第２の手順、
前記第２のソースコードを実行形式に変換して予め決められた試験を行う第３の手順、
上記試験により得られる試験結果情報およびその試験を行った時刻を表す試験時刻情報を対応づけて格納する第４の手順、
前記第１〜第４の手順を繰り返し実行する第５の手順、
指定された試験結果情報に対応する比較結果情報を、前記試験時刻情報および各ソースコードの前記ソースコード格納手段への格納時刻を表す格納時刻情報を利用して取得して出力する第６の手順、
を含むことを特徴とするデバッグ支援方法。
（付記９）
ソフトウェアのデバッグ処理を支援するためのデバッグ支援装置であって、
ソースコード格納手段と、
前記ソースコード格納手段に先に格納されている第１のソースコードと該ソースコード格納手段に新たに格納された第２のソースコードとを比較することにより比較結果情報を生成して格納する比較手段と、
前記第２のソースコードを実行形式に変換して予め決められた試験を行う試験実行手段と、
上記試験により得られる試験結果情報およびその試験を行った時刻を表す試験時刻情報を対応づけて格納する試験結果管理手段と、
比較手段、試験実行手段および試験結果管理手段に上記処理を繰り返し実行させる制御手段と、
指定された試験結果情報に対応する比較結果情報を、前記試験時刻情報および各ソースコードの前記ソースコード格納手段への格納時刻を表す格納時刻情報を利用して取得して出力する出力手段と、
を備えたことを特徴とするデバッグ支援装置。
【図面の簡単な説明】
【００６１】
【図１】本実施形態に係るデバッグ支援装置を含んだシステム構成図である。
【図２】複数のバージョンのソースコードを管理するのに必要な情報の出力例である。
【図３】本実施形態に係るデバッグ支援の処理についてのフローチャートである。
【図４】ソースコードの取得日時情報を設定する処理のフローチャートである。
【図５】ダウンロード定義ファイルの例である。
【図６】生成されたクロスリファレンス情報の一例である。
【図７】シナリオテーブルの実施例である。
【図８】テストを実行する処理のフローチャートである。
【図９】テストスクリプト実行時の動作処理についてのフローチャートである。
【図１０】テストスクリプトの例である。
【図１１】テスト結果を表示させた画面の例である。
【図１２】テスト実行結果の例である。
【図１３】テストが失敗した項目について抽出した結果の例である。
【図１４】テスト結果間の差分の例である。
【図１５】ソースコード間の差分を出力する処理のフローチャートである。
【図１６】差分の出力表示例である。
【図１７】他の実施形態に係るデバッグ支援装置を含んだシステム構成図である。
【図１８】メールの配信先のアドレスの例である。
【符号の説明】
【００６２】
１      デバッグ支援装置
２      ソースリポジトリ
３      社内リポジトリ
４、４Ａ、４Ｂ、４Ｃ      ターゲット機
５      テスト結果参照機
１１      テスト実施用ホストコンピュータ
１２      テスト用ソースコードリポジトリ
１３      デバッグ支援情報格納部
１４      テストスクリプト格納部
１５      ターゲット機用実行形式格納部
１６      テスト結果格納部
１７      定期実行プログラム
１８      クロスリファレンサ
【図２】
0004745728.tif 000002
【図３】
0004745728.tif 000003
【図４】
0004745728.tif 000004
【図５】
0004745728.tif 000005
【図６】
0004745728.tif 000006
【図７】
0004745728.tif 000007
【図８】
0004745728.tif 000008
【図９】
0004745728.tif 000009
【図１０】
0004745728.tif 000010
【図１２】
0004745728.tif 000011
【図１３】
0004745728.tif 000012
【図１４】
0004745728.tif 000013
【図１５】
0004745728.tif 000014
【図１６】
0004745728.tif 000015
【図１８】
0004745728.tif 000016
【図１】
0004745728.tif 000017
【図１１】
0004745728.tif 000018
【図１７】
0004745728.tif 000019