説明

デバッグ支援のためのプログラム

【課題】 ソフトウェアのデバッグを効率化することのできる技術を提供する。
【解決手段】 ソフトウェアのデバッグ処理を支援するためのプログラムにおいて、第1の手順で、リポジトリにソースコードを格納する。第2の手順で、リポジトリに先に格納されている第1のソースコードと第1の手順により新たに格納された第2のソースコードとを比較することにより比較結果情報を生成して格納する。第3の手順で、第2のソースコードを実行形式に変換して予め決められた試験を行う。第4の手順で、試験により得られる試験結果情報およびその試験を行った時刻を表す試験時刻情報を対応づけて格納する。第5の手順で、第1〜第4の手順を繰り返し実行する。第6の手順で、指定された試験結果情報に対応する比較結果情報を、試験時刻情報および各ソースコードのリポジトリへの格納時刻を表す格納時刻情報を利用して取得して出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ソフトウェアのデバッグ支援のための技術に関する。
【背景技術】
【0002】
各種ソフトウェア(ファームウェアを含む)の開発の効率化に関する技術として、開発工程のうち試験工程の効率化を目的とした、ソフトウェア試験の自動化システムについて開示されている(例えば、特許文献1)。特許文献1に記載の技術においては、ソフトウェア試験の自動化システムにより、単体試験における作業のうち、試験項目の抽出、試験手順書の作成、試験結果の判定等の処理が自動的に実行される。
【0003】
ところで、一般的なソフトウェアの開発においては、開発を複数の段階に分け、各段階で実現すべき機能が定められ、順次そのソフトウェアに追加されていく。各開発段階の試験において、追加された機能が正しく動作することが確認される。
【0004】
段階的に機能を追加していくと、ある開発段階においてはしかるべき戻り値が試験結果として得られていたとしても、次の段階において新たな機能をソフトウェアに盛り込んで試験を行うと、先の試験とは異なる結果が返ってきてしまうことがある。以下の説明においては、このような現象をデグレード障害と呼ぶことにする。
【0005】
このデグレード障害の要因となっている箇所を突き止めるには、デグレード障害が検出された時点におけるソースコードと、障害が検出されるよりも前のバージョンのソースコードとを比較して、関連箇所を追跡していかなくてはならない。
【0006】
デグレード障害追跡を含んだ、ソフトウェア試験のためのツールとして、各種システムやコマンドが使用されている。例えば、ソースコードの開発環境からソースを試験用マシンにダウンロードするためのコマンドである「wget」や分散型ソース管理システムである「cvs/bitkeeper/subversion」、試験の実行形式の構築のためのシステムである「ports/portage」や「Autobuild」、試験を自動的に実行するためのシステム「JUNIT/NUNIT/DejaGNU/Rational Manual Tester」、先のバージョンのソースコードとの差分をとるためのシステム「cxref/global」等が、開発におけるデバッグ支援ツールとして従来から用いられている。
【特許文献1】特開平9−244921号公報(要約、図1、0013〜0015段落)
【発明の開示】
【発明が解決しようとする課題】
【0007】
従来技術のデバッグ環境においては、ソースコードの改変についての管理と、その試験結果の管理とは別個になされており、関連付けられていない。このため、デグレード障害の追跡は上記の支援ツール等を用いて行うことができるとしても、実際に比較すべきソースコードがどれであるのか、また、ソースコードにおいてデグレードに関連する箇所がどこであるのかなどについてはシステム開発者が手動にて調べる必要があり、これらの作業に多くの時間を要していた。
【0008】
本発明は、ソフトウェアのデバッグを効率化することのできる技術を提供することを目的とする。
【課題を解決するための手段】
【0009】
上記課題を解決するために、本発明によれば、ソフトウェアのデバッグ処理を支援するためのプログラムであって、ソースコード格納手段にソースコードを格納する第1の手順、前記ソースコード格納手段に先に格納されている第1のソースコードと前記第1の手順により新たに格納された第2のソースコードとを比較することにより比較結果情報を生成して格納する第2の手順、前記第2のソースコードを実行形式に変換して予め決められた試験を行う第3の手順、上記試験により得られる試験結果情報およびその試験を行った時刻を表す試験時刻情報を対応づけて格納する第4の手順、前記第1〜第4の手順を繰り返し実行する第5の手順、指定された試験結果情報に対応する比較結果情報を、前記試験時刻情報および各ソースコードの前記ソースコード格納手段への格納時刻を表す格納時刻情報を利用して取得して出力する第6の手順、をコンピュータに実行させるプログラムが提供される。
【0010】
ソースコード(第2のソースコード)をソースコード格納手段に格納するとき、先に格納されているソースコード(第1のソースコード)との間の差分を、比較結果情報として生成して保有しておく。第1のソースコードについて行った試験の結果が正常であったにもかかわらず、第2のソースコードについて行った試験の結果が正常でなかった際には、予め作成して保有してある第1、第2のソースコードの差分を表す比較結果情報を出力する。ソースコード格納手段に格納された複数のバージョンのソースコードについて、各ソースコードについての試験結果と適切に対応付けて管理することができる。
【0011】
前記比較結果情報は、前記ソースコード格納手段に前記第2のソースコードが格納されたことを契機として生成されることとしてもよい。新たなソースコードが格納されたことを比較結果情報の生成の契機とすることで、ソースコードのバージョンごとの比較が確実になされ得る。
【0012】
前記第6の手順は、第1の試験の結果が正常でありかつその第1の試験よりも後に実行された第2の試験の結果が非正常であったときに、前記第1の試験が実行された時刻の直前に前記ソースコード格納手段に格納されたソースコードと前記第2の試験が実行された時刻の直前に前記ソースコード格納手段に格納されたソースコードとの間の比較結果情報を出力することとしてもよい。第1のソースコードと第2のソースコードとの差分のうちデグレードの発生している箇所を特定する作業についての効率化が図れる。
【0013】
また、前記第6の手順は、電子メールを用いてメール受信側に通知することにより出力することとしてもよいし、ウェブブラウザに表示させることにより出力することとしてもよい。
【発明の効果】
【0014】
本発明によれば、ソースコードとそのソースコードについての試験結果とが関連付けて管理されることにより、ソフトウェアのデバッグの効率化を図ることができる。
【発明を実施するための最良の形態】
【0015】
以下、本発明の好適な実施の形態について、図面を参照しながら詳細に説明する。
図1は、本実施形態に係るデバッグ支援装置1を含んだシステム構成図である。図1のシステム10は、例えば、デバッグ支援装置1、ソースリポジトリ2、社内リポジトリ3、ターゲット機4(4A、4B、4C)、テスト結果参照機5を含んで構成される。
【0016】
デバッグ支援装置1は、テスト実施用のホストコンピュータ11、テスト用ソースコードリポジトリ12、デバッグ支援情報格納部13、テストスクリプト格納部14、ターゲット機用実行形式格納部15、テスト結果格納部16、テスト定期実行プログラム17およびクロスリファレンサ18を含む。
【0017】
ソースリポジトリ2および社内リポジトリ3は、デバッグ支援装置1のホストコンピュータ11においてテストされるソースコードを格納している。例えば、ある企業でプログラムの開発が行われ、一部のソースコードについてはインターネット等を介して入手したソースコードを開発に用いる場合には、ソースリポジトリ2に格納されるソースコードは、一般に、あるいは特定のユーザに対して公開されたソースコードであり、社内リポジトリ3に格納されるのは、その企業内において開発されたソースコードである。ソースリポジトリ2はインターネット等のネットワークを介して、社内リポジトリ3はLAN等を介して、必要なソースコードを、本実施形態に係るデバッグ支援装置1に提供する。
【0018】
ターゲット機4は、開発されたソースコードを実際に実行するための装置である。図1に示されるシステム構成の例においては、3台のターゲット機を備えた構成とされ、例えば、評価ボード4A、実機4B等がハブを介して本実施形態に係るデバッグ支援装置1に接続される。これらターゲット機4A、4B、4Cにおいてテストが実行され、そのテスト結果はハブを介してデバッグ支援装置1に転送される。
【0019】
テスト結果参照機5は、デバッグ支援装置1に転送されたターゲット機4におけるテスト結果や、デバッグ支援装置1におけるそのテスト結果についての分析結果を参照するための端末装置等で構成される。図1に示されるように、例えばプリンタやモニタ等に結果を出力する構成としてもよい。
【0020】
デバッグ支援装置1におけるホストコンピュータ11は、ソースリポジトリ2や社内リポジトリ3からダウンロードしたソースコードのバージョン、そのソースコードの作成日時、そのソースコードについてのテスト結果を関連付けて管理する。テスト用ソースコードリポジトリ12は、ダウンロードしたソースコードを格納するための2次記憶である。デバッグ支援情報格納部13は、ダウンロードしたソースコードについてのバージョン間の差分や、その各ソースコードをテスト用ソースコードリポジトリ12に格納した日時等の時刻情報を保有し、管理するための2次記憶である。テストスクリプト格納部14は、テスト用ソースコードリポジトリ12に格納されたソースコードについてのテストの手順を記述したスクリプトを格納するための2次記憶である。実行形式格納部15は、ターゲット機4においてテストを実行するために作成された実行形式を格納するための2次記憶である。テスト結果格納部16は、ターゲット機4から転送されたテスト結果を格納するための2次記憶である。テスト定期実行プログラム17は、テストを所定の時間間隔で実行し、その結果を得るためのプログラムである。クロスリファレンサ18は、ソースコードのバージョン間の差分を取るためのプログラムである。
【0021】
なお、図1に示されるシステム構成によれば、開発されたソースコードはソースリポジトリ2や社内リポジトリ3に格納され、開発されたソースコードについてのテストはターゲット機4において実行されるが、これに限定されるものではない。例えば、開発されたソースコードを直接的にデバッグ支援装置1に格納するようなシステム構成や、テストをデバッグ支援装置1において実行するような構成であってもよい。
【0022】
また、図1の構成例では、ソースコードリポジトリ2や社内リポジトリ3からソースコードをダウンロードし、テスト用ソースコードリポジトリ12に登録された時刻情報を元に複数のバージョンのソースコードを管理することとしているが、これに限られない。例えば、ソースコードリポジトリ2、あるいは社内リポジトリ3にソースコードが格納された時刻を用いて管理することとしてもよい。以下の説明においては、簡単のため、図1の構成例にしたがってリポジトリとはテスト用ソースコードリポジトリ12としている。
【0023】
図2は、リポジトリに登録された、複数のバージョンのソースコードを管理するのに必要な情報の実施例である。例えば上記のテスト実施用ホストコンピュータ11や、テスト結果参照機5のモニタに、図2に示すような画面を表示することによって、ユーザに対して、リポジトリに登録されたソースコードのバージョンごとの情報が示される。
【0024】
図2の例においては、あるソフトウェアのバージョン「1.1.1.1」、「1.2」および「1.3」について、バージョンごとに必要な情報が示されている。例えば、バージョン情報21に対して、格納日時情報22、修正内容情報23、および差分元情報24が表示される。
【0025】
図2に示される複数のバージョンのうち、バージョン「1.3」を例に挙げる。格納日時情報22は、バージョン「1.3」のソースコードを、テスト用ソースコードリポジトリ12に最初に格納した日時、すなわち、デバッグ支援装置1においてソフトウェアがアップデートした日時を表す。修正内容情報23は、先のバージョンのソフトウェアと比較した変更量が表示される。ここでは、バージョン「1.2」のソフトウェアと比較して、追加行が41行、削除行は0行である。差分元情報24は、先のバージョンのソースコードと比較した際に差分の存在する箇所を表示する。ここでは、バージョン「1.2」との間の差分を生成していることを表示している。
【0026】
これまで説明してきたように、デバッグ支援装置1は、リポジトリにバージョンごとにそのソースコードを格納して管理することができ、ソースコード間における差分をクロスリファレンス情報として保有する。クロスリファレンス情報の表示は、ユーザの指定に基づいて行われる。あるいは、あるテスト結果がターゲット機4からダウンロードされるごとに、あるいは、所定の期間ごと、例えば24時間ごとに実行されることとしてもよい。
【0027】
図3は、本実施形態に係るデバッグ支援の処理についてのフローチャートである。図3に沿って、本実施形態に係るデバッグ支援装置1が実行する処理の概要を説明する。
まず、ステップS1で、ソースリポジトリ2等のテストに必要なソースコードを格納するリポジトリから、ソースコードをダウンロードする。次に、ステップS2で、クロスリファレンサ18を起動し、ダウンロードされたソースコードと既にテスト用ソースコードリポジトリ12に格納されているソースコードとの間で差分を取り、その差分をクロスリファレンス情報としてクロスリファレンス情報格納部13に格納する。このとき、クロスリファレンサ18は、新たに取得したソースコードと過去に取得した各ソースコードとの間のクロスリファレンス情報をそれぞれ生成するようにしてもよいし、あるいは、新たに取得したソースコードと前回取得したソースコードのみとの間のクロスリファレンス情報を生成するようにしてもよい。ステップS3で、ダウンロードしたソースコードから実行形式を構築し、ステップS4で、ターゲット機4におけるテストを実行させる。最後に、ステップS5で、ターゲット機4におけるテストの実行結果を、テスト結果格納部16に格納する。このとき、試験を実行した時刻(試験時刻情報)をその試験結果と対応づけて格納しておく。
【0028】
図3に示される、ソースコードのダウンロードからテストの実行結果を2次記憶に格納するまでの一連の処理は、例えば所定の時間間隔で、定期的かつ自動的に実行される。あるいは、新たにソースコードがダウンロードされたことをデバッグ支援装置1において認識されたことを契機として実行されることとしてもよい。
【0029】
図4は、ソースコードの取得日時情報を設定する処理のフローチャートである。図4を参照して、ソースコードをデバッグ支援装置1が取得した日時に関する情報(格納時刻情報)を設定する方法を説明する。
【0030】
ステップS11で、ダウンロード先定義ファイルに記述されたダウンロード先のソースリポジトリ2(あるいは社内リポジトリ3)に対して、そのダウンロード先定義ファイルに記述された接続手順を用いて接続し、ステップS12で、ダウンロード先定義ファイルで指定されたファイルをホストコンピュータ11にダウンロードする。
【0031】
図5は、ダウンロード定義ファイルの例である。図中においては<5A>のコマンドによって、テストの対象となるプログラムのモジュール名<ma>、接続手順<ca>およびダウンロード先アドレス<da>が指定される。コマンド<5A>においては、モジュール「binutils」について、「cvs」を用いてコンピュータ「pserver」の「anoncvs@sources.abcdef.com:/cvs/src」で示されるアドレスからダウンロードするよう指定する。モジュール「gcc」について指定するコマンド<5B>についても、同様のフォーマットでモジュール名<mb>、接続手順<mc>およびダウンロード先アドレス<db>が指定される。
【0032】
ステップS13においては、ダウンロードしたソースコードのファイルを、テスト用ソースコードリポジトリ12に格納する。ステップS14で、今回ダウンロードしたソースコードのファイルと、前回ダウンロードしたソースコードのファイルとの間で差分をとり、生成したクロスリファレンス情報をデバッグ支援情報格納部13に格納する。ステップS15で、クロスリファレンス情報を生成した日時を、生成時刻情報としてそのクロスリファレンス情報に対応させて設定し、処理を終了する。なお、図4に示される一連の処理は、図3中においてはステップS1およびステップS2の処理に対応する。
【0033】
図6は、生成されたクロスリファレンス情報の一例である。ステップS13でテスト用ソースリポジトリ12に格納されたソースコードと先に格納されているソースコードとを比較して、差分のある箇所をそれぞれ示している。図6の例のように、例えば、各差分箇所に更にリンクを張っておき、各リンク先にそれぞれ実際のソースコードを設定しておいて表示させることもできる。
【0034】
図6に示す例では、ボックスB1にキーワードとして「task_struct」が入力されている。そして、このボックスB1に入力されたキーワードを含むソースコードのうち、差分の検出された箇所を表示している。ただし、この形態以外にも、例えば、キーワードが入力されていない場合には、差分の抽出された箇所全てについて表示することとしてもよい。
【0035】
図7は、シナリオテーブルの実施例である。シナリオテーブルは、実行すべきプログラムを格納したディレクトリ名または実行すべきプログラム名を列記したファイルである。そして、シナリオテーブル内に記述されているディレクトリが指定されると、そのディレクトリの配下のファイルが順番に実行される。図7に示す例では、ディレクトリ「/home/areas/scripts/FJe/ia32」に、テストを実行すべきファイルが格納されている。
【0036】
図8は、シナリオテーブルに基づいてテストを実行する処理のフローチャートである。テスト実行処理においては、ステップS21で、実行形式およびテストスクリプトの一覧を、それぞれ実行形式格納部15、テストスクリプト格納部14から読み出す。ステップS22で、読み出したテストスクリプトの一覧に記述されているファイルについて、順にテストを実行する。ステップS23で、全てのファイルについてテストを実行したか否かを判定する。未完了の場合はステップS22に戻ってまだ実行されていないファイルについてテストを行い、全て完了している場合は処理を終了する。
【0037】
図9は、テストスクリプト実行時の動作処理についてのフローチャートである。なお、図9に示される処理は、図3ではステップS4およびステップS5の処理に相当する。
まず、ステップS31で、テストを実行すべきターゲット機4にログインし、ステップS32で、そのターゲット機4において、テストプログラムを起動する。テストプログラムの実行結果は、本実施形態においては、例えばテキスト形式でターゲット機4に格納される。ステップS33で、テストプログラムの実行結果を、ターゲット機4から取得する。ステップS34で、取得したテスト結果を参照し、結果が正常動作時における出力であるか否かを判定する。正常動作が確認されれば(ステップS34:Yes)、ステップS35で、そのテストが成功したことをテスト結果に記録して処理を終了する。一方、正常動作が確認されなかったときは(ステップS34:No)、ステップS36で、そのテストが失敗したことをテスト結果に記録して処理を終了する。
【0038】
図10は、テストスクリプトの例である。図10において、<10A>は、ターゲット機4にログインするためのコマンドで構成される。<10B>は、テストプログラムを起動するためのコマンドであり、<10C>は、出力結果からテスト結果を判定するためのコマンドである。<10D>は、テスト結果を出力表示するためのコマンドであり、これは、図1のテスト結果参照機5のモニタや接続されたプリンタ等に出力される。
【0039】
図11は、テスト結果参照機5のモニタにテスト結果を表示させた画面の例である。テスト結果としては、例えば、テストの名称51、テストの実行日52、テストの開始時刻53、テスト結果の一覧55を含んで表示される。図11の例においては、2005年4月18日の15時6分12秒に実行されたテスト「pq3−test」について、実行リスト50、およびテストの結果55が表示されている。
【0040】
なお、図11においては、1回分のテスト結果のみが表示されているが、リスト50には、過去のすべての試験に関する情報が登録される。この場合、リスト50に登録されている複数のテストの中から所望の1つを選択すると、モニタ上に対応するテスト結果55が表示される。
【0041】
テスト結果55には、テストされたプログラム名56と、各プログラムに対応する試験項目について、戻り値の正常、異常等に分けてその項目数とを含む。例えば、プログラム「tool sysvinit」のテスト結果として、テストが成功(PASS)した項目は4項目、失敗(FAIL)した項目は4項目であることが示される。
【0042】
ユーザが図11に示される画面中の結果表示ボタン(「results」ボタン)54を押下すると、テスト結果55がテスト結果参照機5のモニタに表示される。図12は、テスト実行結果の例である。図12に示されるテスト結果のうち、1行目を例に挙げると、項目「MAKEDEV−>MAKEDEV」については、テストが失敗(FAIL)したことがわかる。
【0043】
図13は、テストが失敗した項目について抽出した結果の例である。図11における「tool sysvinit」プログラムについて試験結果が失敗(FAIL)であった4項目について、リンク57をユーザがクリックすると図13が 表示される。
【0044】
図14は、テスト結果間の差分の例である。本実施形態においては、「diff」コマンドを用いて、先にテストの結果、戻り値が全て正常(PASS)であった際のテスト結果ファイルとの間の差分を得る。差分は、例えば図14のように、テキスト形式で出力される。
【0045】
図14中の7、8行目には、行数と差分抽出結果との間にそれぞれ「−」「+」の記号が出力されている。これは、7行目のテストをすでに通過したプログラムのテストでは成功(PASS)しているけれども、8行目のこれと比較されるプログラムのテストでは失敗(FAIL)していることを表している。すなわち、この項目に関してデグレードが発生していることがわかる。
【0046】
本実施形態に係るデバッグ支援装置1は、あるソフトウェアの複数のバージョンについてテストを実行し、それぞれのテストを実行した日時、およびテストに使用された各ソースコードのバージョンすなわち各ソースコードを自装置のソースコードリポジトリ12に格納した日時と関連付けて管理する。これにより、図14に例示するような、あるソースコードについての試験結果と後のバージョンについての試験結果との間に差分が抽出されると、そのテスト実行日時およびソースコードの格納日時の情報を参照して、これらの情報に対応する上記のクロスリファレンス情報を出力することができる。
【0047】
図15は、本実施形態に係るデバッグ支援装置1がソースコード間の差分を出力する処理のフローチャートである。
ステップS41で、正常動作が得られた試験の実行日時のうち、最終実行日時を検索する。ここで検索されるテストの実行日時は、すでに説明した、図11のテストの実行日52およびテストの開始時刻53による。ステップS42で、ステップS41の検索により検出された最終実行日時以前にソースコードリポジトリ12に登録されたソースコード(ファイル)を検索する。このステップでは、テストにおいて全てのテスト項目が通っているソースコードが検索される。ステップS43では、ステップS41における最終実行日時以後にテストの実行されたソースコードを検索する。
【0048】
ステップS42の処理においては、リポジトリに登録された複数のソースコードのうち、最終的にテストが成功しているバージョンのソースコードが検索される。ステップS43の処理においては、複数のソースコードのうち、ステップS41で検索された最終実行日時以降で、かつ最後にリポジトリに登録された、テスト実行済みのソースコードが検索される。
【0049】
ステップS44で、ステップS43に対応するソースコードが検索結果として得られたか否かを判定する。そのようなソースコードが得られた場合は、ステップS45に進み、ステップS42およびステップS43の検索によって得られた2つのソースコードの差分をモニタ等に出力表示し、処理を終了する。なお、ステップS44でNoの場合、テスト用ソースコードリポジトリ12に格納されている最新のソースコードとステップS42で検出されたソースコードとの差分を出力し、処理を終了する。
【0050】
図16は、ステップS45(ステップS44の判定結果によってはステップS46)における差分の出力表示例である。例えば、図15のステップS42で検出されたソースコードを右側に、ステップS43で検出されたソースコードを左側に、といったように、画面を分割して2つのソースコードを同時に表示している。
【0051】
図中「※」印が付されているのは、左右に示された2つの異なるバージョンのソースコード間において差分が存在している箇所である。例えば、この差分のある箇所を色分けした表示、強調表示等により他の箇所と区別して表示するのが好ましい。ユーザのデバッグ処理の効率化の観点からは、図16のように、例えば差分箇所の前後のソースコードや、差分箇所の含まれる1つのファイル全体等、差分のない箇所を含んで表示させるのが好ましい。
【0052】
なお、図15のフローチャートにおいては、ステップS45およびステップS46で、図16のような2つのソースコード間の差分を表示することとしているが、これに限られない。例えば、図6に示すような、クロスリファレンス情報を表示させることとしてもよい。
【0053】
また、図15のフローチャートにおいては、最後に正常動作が確認されたソースコードと、ステップS43で検出されたソースコードまたは最新のソースコードとの間で差分をとっているが、これに限られない。例えば、図11のようなテスト結果表示画面において、テスト結果の一覧55に複数の結果を表示することとし、任意の2つのテスト結果を選択すると、上記のテスト実行日52および開始時刻53や、ソースコードの格納時刻情報に基づいて、それぞれ対応するソースコードを検出し、それらの差分を表示することとしてもよい。いずれのソースコード間における差分を表示させるかは、ユーザごとに設定可能とするのが好ましい。
【0054】
あるいは、第1の試験の結果が正常であり且つその第1の試験よりも後に実行された第2の試験の結果が非正常であったときに、第1の試験が実行された時刻の直前にリポジトリに格納されたソースコードと第2の試験が実行された時刻の直前にリポジトリに格納されたソースコードとの間の比較結果情報を出力するようにしてもよい。
【0055】
図17は、他の実施形態に係るデバッグ支援装置1を含んだシステム構成図である。デバッグ支援装置1を含むシステムにおいて、メールサーバ6を更に備えている点で図1の構成と異なっている。他の構成については図1と同様であるので同じ符号を付し、ここではその説明については割愛する。
【0056】
メールサーバ6は、テストの実行結果等を、例えばテスト結果参照機5を通して確認するときに、必要な情報を、レポートして所定のメールアドレスに対して送信するために設けられる。送信されるレポートには、例えば、ソースコードや複数のソースコード間において抽出された差分、テストの実行結果ファイル、テストの実行結果ファイル間における差分、あるいはデグレードの検出に関する情報等が含まれる。
【0057】
図18は、デバッグ支援装置1において保有される、メールの配信先のアドレスの例である。メールの配信先は、例えばプログラムごと、あるいはそのバージョンごとに設定することもできる。
【0058】
あるいは、テストの実行結果等をWebブラウザ等に表示させることとしてもよい。この実施形態においては、上記のメールで配信されるレポートに含まれる情報と同様の情報、すなわち、ソースコード、ソースコード間において抽出された差分あるいはテストの実行結果ファイル等のデグレードの検出に関する情報が、HTML形式でデバッグ支援装置1に保存される。これらの情報は、ユーザの指定するタイミング等で、例えばテスト結果参照機5のモニタに表示される。Webブラウザに表示される情報の例としては、例えば、図16のような、ソースコード間の差分が挙げられる。
【0059】
以上、本実施形態に係るデバッグ支援装置1によれば、ソースコードはバージョン管理されてリポジトリに登録される。ソースコードがリポジトリに登録されるときに、先に登録されているソースコードとの差分を表すクロスリファレンス情報が生成される。登録されたソースコードはテストされ、テスト結果がそのソースコードのバージョンと対応付けて管理される。このため、このテストによってデグレードが検出されると、そのバージョンのソースコードについて、先に登録されたソースコードとのクロスリファレンス情報が参照される。クロスリファレンス情報を参照することにより、デグレードが、どのソースコードの改変によるものであるかがより容易に把握される。結果として、ユーザは、デグレード障害を追跡する作業を効率化することができる。
【0060】
(付記1)
ソフトウェアのデバッグ処理を支援するためのプログラムであって、
ソースコード格納手段にソースコードを格納する第1の手順、
前記ソースコード格納手段に先に格納されている第1のソースコードと前記第1の手順により新たに格納された第2のソースコードとを比較することにより比較結果情報を生成して格納する第2の手順、
前記第2のソースコードを実行形式に変換して予め決められた試験を行う第3の手順、
上記試験により得られる試験結果情報およびその試験を行った時刻を表す試験時刻情報を対応づけて格納する第4の手順、
前記第1〜第4の手順を繰り返し実行する第5の手順、
指定された試験結果情報に対応する比較結果情報を、前記試験時刻情報および各ソースコードの前記ソースコード格納手段への格納時刻を表す格納時刻情報を利用して取得して出力する第6の手順、
をコンピュータに実行させるプログラム。
(付記2)
前記比較結果情報は、前記ソースコード格納手段に前記第2のソースコードが格納されたことを契機として生成される
ことを特徴とする付記1に記載のプログラム。
(付記3)
前記第5の手順は、前記第1〜第4の手順を予め決められた所定の時間間隔ごとに繰り返し実行する、
ことを特徴とする付記1に記載のプログラム。
(付記4)
前記第6の手順は、
第1の試験の結果が正常でありかつその第1の試験よりも後に実行された第2の試験の結果が非正常であったときに、前記第1の試験が実行された時刻の直前に前記ソースコード格納手段に格納されたソースコードと前記第2の試験が実行された時刻の直前に前記ソースコード格納手段に格納されたソースコードとの間の比較結果情報を出力する
処理を含むことを特徴とする付記1に記載のプログラム。
(付記5)
前記第6の手順は、電子メールを用いてメール受信側に通知することにより出力する
ことを特徴とする付記4に記載のプログラム。
(付記6)
前記第6の手順は、ウェブブラウザに表示させることにより出力する
ことを特徴とする付記4に記載のプログラム。
(付記7)
前記試験は、試験を実行するためのターゲット機に前記実行形式に変換されたプログラムを転送して実行させ、
前記試験結果情報は、前記ターゲット機から得られる
ことを特徴とする付記4に記載のプログラム。
(付記8)
ソフトウェアのデバッグ処理を支援するためのデバッグ支援方法であって、
ソースコード格納手段にソースコードを格納する第1の手順、
前記ソースコード格納手段に先に格納されている第1のソースコードと前記第1の手順により新たに格納された第2のソースコードとを比較することにより比較結果情報を生成して格納する第2の手順、
前記第2のソースコードを実行形式に変換して予め決められた試験を行う第3の手順、
上記試験により得られる試験結果情報およびその試験を行った時刻を表す試験時刻情報を対応づけて格納する第4の手順、
前記第1〜第4の手順を繰り返し実行する第5の手順、
指定された試験結果情報に対応する比較結果情報を、前記試験時刻情報および各ソースコードの前記ソースコード格納手段への格納時刻を表す格納時刻情報を利用して取得して出力する第6の手順、
を含むことを特徴とするデバッグ支援方法。
(付記9)
ソフトウェアのデバッグ処理を支援するためのデバッグ支援装置であって、
ソースコード格納手段と、
前記ソースコード格納手段に先に格納されている第1のソースコードと該ソースコード格納手段に新たに格納された第2のソースコードとを比較することにより比較結果情報を生成して格納する比較手段と、
前記第2のソースコードを実行形式に変換して予め決められた試験を行う試験実行手段と、
上記試験により得られる試験結果情報およびその試験を行った時刻を表す試験時刻情報を対応づけて格納する試験結果管理手段と、
比較手段、試験実行手段および試験結果管理手段に上記処理を繰り返し実行させる制御手段と、
指定された試験結果情報に対応する比較結果情報を、前記試験時刻情報および各ソースコードの前記ソースコード格納手段への格納時刻を表す格納時刻情報を利用して取得して出力する出力手段と、
を備えたことを特徴とするデバッグ支援装置。
【図面の簡単な説明】
【0061】
【図1】本実施形態に係るデバッグ支援装置を含んだシステム構成図である。
【図2】複数のバージョンのソースコードを管理するのに必要な情報の出力例である。
【図3】本実施形態に係るデバッグ支援の処理についてのフローチャートである。
【図4】ソースコードの取得日時情報を設定する処理のフローチャートである。
【図5】ダウンロード定義ファイルの例である。
【図6】生成されたクロスリファレンス情報の一例である。
【図7】シナリオテーブルの実施例である。
【図8】テストを実行する処理のフローチャートである。
【図9】テストスクリプト実行時の動作処理についてのフローチャートである。
【図10】テストスクリプトの例である。
【図11】テスト結果を表示させた画面の例である。
【図12】テスト実行結果の例である。
【図13】テストが失敗した項目について抽出した結果の例である。
【図14】テスト結果間の差分の例である。
【図15】ソースコード間の差分を出力する処理のフローチャートである。
【図16】差分の出力表示例である。
【図17】他の実施形態に係るデバッグ支援装置を含んだシステム構成図である。
【図18】メールの配信先のアドレスの例である。
【符号の説明】
【0062】
1 デバッグ支援装置
2 ソースリポジトリ
3 社内リポジトリ
4、4A、4B、4C ターゲット機
5 テスト結果参照機
11 テスト実施用ホストコンピュータ
12 テスト用ソースコードリポジトリ
13 デバッグ支援情報格納部
14 テストスクリプト格納部
15 ターゲット機用実行形式格納部
16 テスト結果格納部
17 定期実行プログラム
18 クロスリファレンサ

【特許請求の範囲】
【請求項1】
ソフトウェアのデバッグ処理を支援するためのプログラムであって、
ソースコード格納手段にソースコードを格納する第1の手順、
前記ソースコード格納手段に先に格納されている第1のソースコードと前記第1の手順により新たに格納された第2のソースコードとを比較することにより比較結果情報を生成して格納する第2の手順、
前記第2のソースコードを実行形式に変換して予め決められた試験を行う第3の手順、
上記試験により得られる試験結果情報およびその試験を行った時刻を表す試験時刻情報を対応づけて格納する第4の手順、
前記第1〜第4の手順を繰り返し実行する第5の手順、
指定された試験結果情報に対応する比較結果情報を、前記試験時刻情報および各ソースコードの前記ソースコード格納手段への格納時刻を表す格納時刻情報を利用して取得して出力する第6の手順、
をコンピュータに実行させるプログラム。
【請求項2】
前記比較結果情報は、前記ソースコード格納手段に前記第2のソースコードが格納されたことを契機として生成される
ことを特徴とする請求項1に記載のプログラム。
【請求項3】
前記第6の手順は、
第1の試験の結果が正常でありかつその第1の試験よりも後に実行された第2の試験の結果が非正常であったときに、前記第1の試験が実行された時刻の直前に前記ソースコード格納手段に格納されたソースコードと前記第2の試験が実行された時刻の直前に前記ソースコード格納手段に格納されたソースコードとの間の比較結果情報を出力する
処理を含むことを特徴とする請求項1に記載のプログラム。
【請求項4】
前記第6の手順は、電子メールを用いてメール受信側に通知することにより出力する
ことを特徴とする請求項3に記載のプログラム。
【請求項5】
前記第6の手順は、ウェブブラウザに表示させることにより出力する
ことを特徴とする請求項3に記載のプログラム。

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図18】
image rotate

【図1】
image rotate

【図11】
image rotate

【図17】
image rotate


【公開番号】特開2007−4255(P2007−4255A)
【公開日】平成19年1月11日(2007.1.11)
【国際特許分類】
【出願番号】特願2005−180603(P2005−180603)
【出願日】平成17年6月21日(2005.6.21)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】