説明

自動ビルドシステム及び自動ビルド方法

【課題】テストを完遂することができる自動ビルドシステムの提供
【解決手段】依存関係判定部112が、バージョン管理部から最新の全ソースコードとバージョンを取得し、取得したソースコードの依存関係を示す依存関係情報を作成し、コンパイルテスト実行部113が、前記作成したソースコードの依存関係に基づいてビルド及びテストを実施し、この実施したビルド及びテスト結果が成功か否かを自動ビルド結果格納部114に格納し、この格納したビルド結果が成功したソースコードに最新以外のソースコードが含まれているか否かを判定し、この判定によって最新以外のソースコードが含まれていると判定したとき、自動ビルド結果格納部114に格納した自動ビルド結果を失敗に更新し、前記判定によって最新以外のソースコードが含まれていないと判定したとき、テストを続行する自動ビルドシステム。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、システムバージョン管理システムと連動してソースコードから成るソフトウェアを自動的に構成する自動ビルドシステム及び自動ビルド方法に係り、特にソフトウェアの自動構成が失敗した場合にもテストを継続することができる自動ビルドシステム及び自動ビルド方法に関する。
【背景技術】
【0002】
一般にコンピュータシステムのソフトウェアの開発においては、ソースコードのコンパイルやライブラリのリンクなどを行ない、最終的な実行可能ファイルを作成するビルド(build)及び作成した実行可能ファイルのテストを自動的に行うツールが使用され、これは自動ビルドツールと呼ばれている。この実行可能ファイルのテストは、作成したソフトウェアの仕様が妥当であること及び仕様とおりに実装していることを確認するための工程である。このテスト工程において、バグが発見されると、該当箇所の作り直し及び影響範囲のテストのやり直しが必要となる。そこで、自動ビルドツールは、テストを早い段階から実施し、修正の手戻りを小さくする必要があり、このテスト工程を削減に関する技術が記載された文献としては、下記の特許文献1が挙げられ、この特許文献1には、スタブ(stub)と呼ばれる仲介プログラムを使用することでユニットテストの繁雑さを取り除き、テスト工数の削減を図る技術が記載されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2009−93462号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1記載の技術は、エラーがないソフトウェアをテストする際にはスタブを使用することによってテスト工数を削減することができるものの、テストが失敗した場合、実行されずに残ったテストで発見されるバグは、テスト失敗の原因を解消したテストのときに発見されるため、テスト失敗時に得られる結果は部分的なものになって複数回テスト実行を行う必要があるため、テスト工数を逆に増加してしまうという課題があった。
【0005】
本発明の目的は、前述の従来技術による課題を解決しようとするものであり、1回の自動ビルドの実行によってテストを完遂することができる自動ビルドシステム及び自動ビルド方法を提供することである。
【課題を解決するための手段】
【0006】
前記目的を達成するために請求項1記載の本発明は、開発マシン上で実行するソフトウェアを構成するソースコードのコンパイルやライブラリのリンクなどを行ない、実行可能なソフトウェアファイルを作成するビルド及び前記作成した実行可能ファイルのテストをコンピュータによって実行する自動ビルドシステムであって、前記ソースコードのバージョンを管理するためのバージョン管理部と、開発マシンのソフトウェアのビルド及びテストを実行するコンパイルテスト実行部と、前記ソースコード間の依存関係を判定するための依存関係判定部と、前記コンパイルテスト実行部によるビルド及びテスト結果を格納するビルド結果格納部とを備え、前記依存関係判定部が、前記バージョン管理部から最新の全ソースコードとバージョンを取得する工程と、前記取得したソースコードに対して字句解析を行い、ソースコードの依存関係を示す依存関係情報を作成する工程とを実行し、前記コンパイルテスト実行部が、前記依存関係判定部によって作成したソースコードの依存関係に基づいてビルド及びテストを実施する工程と、前記実施したビルド及びテスト結果が成功か否かを自動ビルド結果格納部に格納する工程と、前記自動ビルド結果格納部に格納したビルド結果が成功したソースコードに最新以外のソースコードが含まれているか否かを判定する工程と、前記判定工程によって最新以外のソースコードが含まれていると判定したとき、前記自動ビルド結果格納部に格納した自動ビルド結果を失敗に更新する工程と、前記判定工程によって最新以外のソースコードが含まれていないと判定したとき、テストを続行する工程とを実行することを特徴とする。
【0007】
請求項2記載の発明は、前記特徴の自動ビルドシステムにおいて、前記判定工程によって最新以外のソースコードが含まれていないと判定したとき、前記自動ビルド結果格納部から失敗したソースコードが最後に自動ビルドに成功したバージョンを取得する工程と、前記取得したバージョンの失敗したソースコード及び依存している全ソースコードをシステムバージョン管理部から取得する工程と、前記取得したソースコードを用いて再ビルドを行う工程とを実行することによって、テストを続行することを第2の特徴とする。
【0008】
請求項3記載の発明は、開発マシン上で実行するソフトウェアを構成するソースコードのバージョンを管理するためのバージョン管理部と、開発マシンのソフトウェアのビルド及びテストを実行するコンパイルテスト実行部と、前記ソースコード間の依存関係を判定するための依存関係判定部と、前記コンパイルテスト実行部によるビルド及びテスト結果を格納するビルド結果格納部とを備え、前記ソースコードのコンパイルやライブラリのリンクなどを行ない、実行可能なソフトウェアファイルを作成するビルド及び前記作成した実行可能ファイルのテストを実行するコンピュータの自動ビルド方法であって、前記依存関係判定部に、前記バージョン管理部から最新の全ソースコードとバージョンを取得する工程と、前記取得したソースコードに対して字句解析を行い、ソースコードの依存関係を示す依存関係情報を作成する工程とを実行させ、前記コンパイルテスト実行部に、前記依存関係判定部によって作成したソースコードの依存関係に基づいてビルド及びテストを実施する工程と、前記実施したビルド及びテスト結果が成功か否かを自動ビルド結果格納部に格納する工程と、前記自動ビルド結果格納部に格納したビルド結果が成功したソースコードに最新以外のソースコードが含まれているか否かを判定する工程と、前記判定工程によって最新以外のソースコードが含まれていると判定したとき、前記自動ビルド結果格納部に格納した自動ビルド結果を失敗に更新する工程と、前記判定工程によって最新以外のソースコードが含まれていないと判定したとき、テストを続行する工程とを実行させることを第3の特徴とする。
【0009】
請求項4記載の発明は、前記特徴の自動ビルド方法において、前記判定工程によって最新以外のソースコードが含まれていないと判定したとき、前記自動ビルド結果格納部から失敗したソースコードが最後に自動ビルドに成功したバージョンを取得する工程と、前記取得したバージョンの失敗したソースコード及び依存している全ソースコードをシステムバージョン管理部から取得する工程と、前記取得したソースコードを用いて再ビルドを行う工程とを実行させることによって、テストを続行することを第4の特徴とする。
【発明の効果】
【0010】
本発明による自動ビルドシステム及び自動ビルド方法は、依存関係判定部が、バージョン管理部から最新の全ソースコードとバージョンを取得する工程と、この取得したソースコードの依存関係を示す依存関係情報を作成する工程と、コンパイルテスト実行部が、前記作成したソースコードの依存関係に基づいてビルド及びテストを実施する工程と、この実施したビルド及びテスト結果が成功か否かを自動ビルド結果格納部に格納する工程と、この格納したビルド結果が成功したソースコードに最新以外のソースコードが含まれているか否かを判定する工程と、この判定工程によって最新以外のソースコードが含まれていると判定したとき、自動ビルド結果格納部に格納した自動ビルド結果を失敗に更新する工程と、前記判定工程によって最新以外のソースコードが含まれていないと判定したとき、テストを続行することによって、テストを完遂することができる。
【図面の簡単な説明】
【0011】
【図1】本発明の実施形態による自動ビルドシステムの全体構成を示す図
【図2】本発明の実施形態による依存関係判定処理のフローを示す図
【図3】本発明の実施形態によるビルド及びテスト処理のフローフローを示す図
【図4】本発明の実施形態による失敗時処理のフローフローを示す図
【図5】本発明の実施形態による自動ビルド結果格納情報を示す図
【発明を実施するための形態】
【0012】
以下、本発明による自動ビルドシステム及び自動ビルド方法の一実施形態を図面を参照して詳細に説明する。本実施形態による自動ビルドプログラムを実行するコンピュータシステムである自動ビルドシステムは、図1に示す如く、ソフトウェアを実行する開発マシン121のソースコードのバージョンを管理するためのシステムバージョン管理部101を含むバージョン管理マシン100と、前記開発マシン121のソフトウェアのビルド及びテストを実行するコンパイルテスト実行部113及びソースコード間の依存関係を判定するための依存関係判定部112を含む自動ビルドマシン110と、この自動ビルドマシン110のビルド及びテスト結果である自動ビルド結果格納情報を格納する自動ビルド結果格納部114と、図示しない制御部とを備え、複数人の開発者が各開発マシン121を使って1つのシステムを開発し、バージョン管理マシン100にあるシステムバージョン管理部101を使用してソースコードを管理するように構成されている。前記自動ビルド結果格納部112に格納する自動ビルド結果格納情報は、図5に示す如く、データ識別子である「ID」と、ソースコード名を示す「source_code」と、ソースコードのバージョン番号を示す「version」と、成功・後退・ビルド失敗・テスト無効・テスト失敗等の自動ビルド結果を示す「resuit」の各項目とから構成される。
【0013】
このように構成された自動ビルドシステムは、まず、依存関係判定部112が、システムバージョン管理部101から取得したソースコードを解析するコンポーネントである開発マシン121に対し、システムバージョン管理部101から最新の全ソースコードとバージョンを取得するステップ201と、この取得したソースコードの数だけ処理を行うステップ202と、選択したソースコードに対して字句解析を行い、ソースコードの依存関係を示す依存関係情報を作成するテップ203とを実行することによって、ソースコードの依存関係を格納する。
【0014】
次いで、本実施形態による自動ビルドシステムは、コンパイルテスト実行部113が、前記依存関係判定部112で作成したソースコードの依存関係を基にビルド及びテストを実施する。このビルド及びテストは、図3に示す如く、選択したソースコードをビルドし、結果が成功か否かを判定するステップ302と、このステップ302において失敗と判定したとき、失敗処理を行うステップ303と、自動ビルド結果格納部にビルド失敗の結果を保存するステップ304と、前記ステップ302において成功と判定したとき、ビルドが成功したものが最新のソースコードによって作られたものかを判定するステップ305と、このステップ305において、最新以外のソースコードが含まれていると判定したとき、自動ビルド結果格納部にテスト無効の結果を保存するステップ306と、前記ステップ305において、最新以外のソースコードが含まれていない(最新のソースコードで記載)と判定したとき、テストを続行して実行するステップ307と、このステップ307においてビルドが成功したと判定したときに自動ビルド結果格納部にテスト成功の結果を保存するステップ308と、前記ステップ307においてビルドが失敗したと判定したとき、失敗処理を行うステップ309と、自動ビルド結果格納部にビルド失敗の結果を保存するステップ310と、前記ステップ302からステップ310の処理を取得したソースコードの数だけ繰り返して処理を行うステップ301及び311とを実行し、最後に自動ビルドに成功したバージョンのソースコードのビルドを行うことによって、テスト失敗時でもテストを一度で完遂することができる。
【0015】
前記自動ビルドに成功したバージョンのソースコードのビルドを行う処理は、図4に示す如く、前記自動ビルド結果格納部114から失敗したソースコードが最後に自動ビルドに成功したバージョンを取得するステップ401と、このステップ401で取得したバージョンの失敗したソースコード及び依存している全ソースコードをシステムバージョン管理部101から取得するステップ402と、この取得したソースコードで改めてビルドを行うステップ403と、取得したソースコードに対して自動ビルド結果格納部114に後退の結果を、旧データに上書きを行うのではなく、別データとして保存するステップ404とを実行する。
【0016】
前記自動ビルド結果格納部114に保存されている自動ビルド結果は、図5の内容を含み、1つのソースコードは、1回のビルドで少なくとも1つのデータは保存され、このビルド結果は、「成功」は、ビルドからテストまで最新のソースコードで行えた事を表し、「後退」は、自動ビルドツールが自動ビルドを行うことによって提供する動くシステムに最新のソースコードではなく昔のソースコードでビルドされていることを表し、「ビルド失敗」は、このソースコードを含めたビルドを行ったときに失敗したことを表し、「テスト無効」は、依存しているソースコードの自動ビルド結果に後退があるため、テスト実行を行わなかったことを表し、「テスト失敗」は、最新ソースコードでテスト実行を行い、テストに失敗したことを表すものである。
【0017】
以上述べた如く本実施形態による自動ビルドシステム及び自動ビルド方法は、自動ビルド結果を自動ビルド結果格納部114に格納しておき、最後に自動ビルドが成功したバージョンを特定してビルドを成功させると共に、自動ビルドの失敗の直接的原因を知ることもできる。
【0018】
すなわち、本実施形態による自動ビルドシステム及び自動ビルド方法は、自動ビルド結果を自動ビルド結果格納部114に格納することによって、変更を行った複数のソースコードを取り込んだビルド及びテストを行う場合に、ある変更点が原因でビルドやテストが失敗しても、過去にテストまで成功したバージョンのソースコードに置き換えることによって、一度の実行で変更に対して依存関係のない部分のテストを完遂することができる。また、詳細なビルド結果が保存されているため、今回の自動ビルドの失敗した直接的原因が分かり、比較的軽度の失敗であれば、変更を最大限追加した動くシステムを提供することができる。
【産業上の利用可能性】
【0019】
本発明による自動ビルドシステム及び自動ビルド方法は、大規模開発で各メンバーが開発した部分のユニットテスト完了後のソースコードを結合する際に、ビルド失敗により他のビルドが行えない場合を防ぐことに利用できる。また、アジャイル開発では、常に動くものを顧客に見せることを目標として掲げており、ソースコードのコミットごとにビルド及びテストを行う。この場面でも本発明は、コミットによる新たな変更を最大限追加したシステムを顧客に見せることに利用できる。
【符号の説明】
【0020】
100 バージョン管理マシン、101 システムバージョン管理部、
110 自動ビルドマシン、112 依存関係判定部、
112 自動ビルド結果格納部、113 コンパイルテスト実行部、
114 自動ビルド結果格納部、121 開発マシン

【特許請求の範囲】
【請求項1】
開発マシン上で実行するソフトウェアを構成するソースコードのコンパイルやライブラリのリンクなどを行ない、実行可能なソフトウェアファイルを作成するビルド及び前記作成した実行可能ファイルのテストをコンピュータによって実行する自動ビルドシステムであって、前記ソースコードのバージョンを管理するためのバージョン管理部と、開発マシンのソフトウェアのビルド及びテストを実行するコンパイルテスト実行部と、前記ソースコード間の依存関係を判定するための依存関係判定部と、前記コンパイルテスト実行部によるビルド及びテスト結果を格納するビルド結果格納部とを備え、前記依存関係判定部が、前記バージョン管理部から最新の全ソースコードとバージョンを取得する工程と、前記取得したソースコードに対して字句解析を行い、ソースコードの依存関係を示す依存関係情報を作成する工程とを実行し、前記コンパイルテスト実行部が、前記依存関係判定部によって作成したソースコードの依存関係に基づいてビルド及びテストを実施する工程と、前記実施したビルド及びテスト結果が成功か否かを自動ビルド結果格納部に格納する工程と、前記自動ビルド結果格納部に格納したビルド結果が成功したソースコードに最新以外のソースコードが含まれているか否かを判定する工程と、前記判定工程によって最新以外のソースコードが含まれていると判定したとき、前記自動ビルド結果格納部に格納した自動ビルド結果を失敗に更新する工程と、前記判定工程によって最新以外のソースコードが含まれていないと判定したとき、テストを続行する工程とを実行する自動ビルドシステム。
【請求項2】
前記判定工程によって最新以外のソースコードが含まれていないと判定したとき、前記自動ビルド結果格納部から失敗したソースコードが最後に自動ビルドに成功したバージョンを取得する工程と、前記取得したバージョンの失敗したソースコード及び依存している全ソースコードをシステムバージョン管理部から取得する工程と、前記取得したソースコードを用いて再ビルドを行う工程とを実行することによって、テストを続行する請求項1記載の自動ビルドシステム。
【請求項3】
開発マシン上で実行するソフトウェアを構成するソースコードのバージョンを管理するためのバージョン管理部と、開発マシンのソフトウェアのビルド及びテストを実行するコンパイルテスト実行部と、前記ソースコード間の依存関係を判定するための依存関係判定部と、前記コンパイルテスト実行部によるビルド及びテスト結果を格納するビルド結果格納部とを備え、前記ソースコードのコンパイルやライブラリのリンクなどを行ない、実行可能なソフトウェアファイルを作成するビルド及び前記作成した実行可能ファイルのテストを実行するコンピュータの自動ビルド方法であって、前記依存関係判定部に、前記バージョン管理部から最新の全ソースコードとバージョンを取得する工程と、前記取得したソースコードに対して字句解析を行い、ソースコードの依存関係を示す依存関係情報を作成する工程とを実行させ、前記コンパイルテスト実行部に、前記依存関係判定部によって作成したソースコードの依存関係に基づいてビルド及びテストを実施する工程と、前記実施したビルド及びテスト結果が成功か否かを自動ビルド結果格納部に格納する工程と、前記自動ビルド結果格納部に格納したビルド結果が成功したソースコードに最新以外のソースコードが含まれているか否かを判定する工程と、前記判定工程によって最新以外のソースコードが含まれていると判定したとき、前記自動ビルド結果格納部に格納した自動ビルド結果を失敗に更新する工程と、前記判定工程によって最新以外のソースコードが含まれていないと判定したとき、テストを続行する工程とを実行させる自動ビルド方法。
【請求項4】
前記判定工程によって最新以外のソースコードが含まれていないと判定したとき、前記自動ビルド結果格納部から失敗したソースコードが最後に自動ビルドに成功したバージョンを取得する工程と、前記取得したバージョンの失敗したソースコード及び依存している全ソースコードをシステムバージョン管理部から取得する工程と、前記取得したソースコードを用いて再ビルドを行う工程とを実行させることによって、テストを続行する請求項3記載の自動ビルド方法。




【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate