説明

先日付状態作成方法およびプログラム

【課題】 複数のモジュールが開発され、各モジュールが異なる日付にリリースされる場合において、各モジュールがリリースされる日の環境下で、各モジュールのテストを実行可能とする。
【解決手段】 バックアップ取得手段が、本番モジュール・ディレクトリ内の全ディレクトリ及び全ファイルをバックアップ用ディレクトリへコピーするバックアップステップ(S15)と、先日付状態作成手段が、第1日付ディレクトリから順に指定の先日付ディレクトリまでの各ディレクトリ内の全ディレクトリ及び全ファイルを本番モジュール・ディレクトリへコピーする先日付状態作成ステップ(S19)と、サービス反映手段が、システムを再起動するサービス反映ステップ(S21)と、を含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のモジュールが開発され、各モジュールが異なる日付にリリースされる場合において、各モジュールがリリースされる日の環境下で、各モジュールのテストを実行可能とする方法およびプログラムに関する。
【背景技術】
【0002】
従来、リリース画面のテストは、リリース対象モジュールをCVS(concurrent versions system)などのバージョン管理ツールから取得し、テスト実施直前に環境に配置して実施される。
【0003】
また、段階的にモジュールの反映を行うための自動化システムが提案されている(例えば、特許文献1参照)。
【特許文献1】特開平7−200338号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
従来、テスト実施日からリリース日までの間に多くのモジュールが日々リリースされている。そのためリリース対象物のみを配布したテストでは、デグレードや他画面との連携などを検証することができない。
【0005】
また、通常、モジュール開発は複数のチームで行われ、チームによってリリース日(環境の状態)が異なる。日付が先の状態の環境を構成する必要があったり、日付を戻した状態の環境を構成する必要があったりする。また、テスト環境の構成変更を頻繁に行う必要がある。特開平7−200338では、時系列を戻るような環境生成やテスト前の状態に環境を戻すことについて触れられていない。特に頻繁に環境変更を行うのは困難だと思われる。
【0006】
さらに、バージョン管理ツールのインタフェースが開発チームによって異なるためテスト環境の構築が複雑な手順になったり、担当者のシステム知識レベルによって間違った手順で環境を設定してしまったりするなど、統一的にリリース日当日の環境を作り出すことは困難である。
【0007】
そこで、本発明は、上記の課題を解決するためになされたものであり、複数のモジュールが開発され、各モジュールが異なる日付にリリースされる場合などにおいて、指定された日付の環境下で、各モジュールのテストを実行可能とする方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明の第1の特徴は、本番モジュール・ディレクトリ内を指定の先日付における状態とするための方法であって、バックアップ取得手段が、本番モジュール・ディレクトリ内の全ディレクトリ及び全ファイルをバックアップ用ディレクトリへコピーするバックアップステップと、先日付状態作成手段が、第1日付ディレクトリから順に指定の先日付ディレクトリまでの各ディレクトリ内の全ディレクトリ及び全ファイルを本番モジュール・ディレクトリへコピーする先日付状態作成ステップと、サービス反映手段が、システムを再起動するサービス反映ステップと、を含むことにある。
【0009】
「各ディレクトリ内の全ディレクトリ」とは、各ディレクトリ内に存在するディレクトリの全てを意味し、ディレクトリ構造が階層化され、親ディレクトリ内に子ディレクトリが存在し、子ディレクトリ内にさらに孫ディレクトリが存在する場合には、子ディレクトリのみならず、孫ディレクトリも含まれる。ディレクトリ構造が階層化されている場合に、階層の深さに制限はない。また、第1日付と第2日付との間隔は、1日に限定されない。2日、3日、1週間などであっても良い。
【0010】
先日付とは、将来の日付を意味する。指定の先日付とは、特定の先日付を意味し、例えば、モジュールのリリース予定日(以下、適宜「先日付リリース日」と言う。)を含む。また、「第1日付ディレクトリから順に指定の先日付ディレクトリまでの各ディレクトリ内の全ディレクトリ及び全ファイルを本番モジュール・ディレクトリへコピーする」とは、例えば、第2日付と指定の先日付とが等しい場合は、第2日付ディレクトリ内の全ディレクトリ及び全ファイルを本番モジュール・ディレクトリへコピーして先日付状態作成ステップを終わる。また、指定の先日付を第n日付とした場合(nは任意の自然数)は、
第1日付ディレクトリ内の全ディレクトリ及び全ファイルを本番モジュール・ディレクトリへコピーし、
第2日付ディレクトリ内の全ディレクトリ及び全ファイルを本番モジュール・ディレクトリへコピーし、
第3日付ディレクトリ内の全ディレクトリ及び全ファイルを本番モジュール・ディレクトリへコピーし、
・・・
第(n−1)日付ディレクトリ内の全ディレクトリ及び全ファイルを本番モジュール・ディレクトリへコピーし、
第n日付ディレクトリ内の全ディレクトリ及び全ファイルを本番モジュール・ディレクトリへコピーして先日付状態作成ステップを終わる。
【0011】
もし本番モジュール・ディレクトリ内に同一名称のファイルが既に存在する場合は、後の日付のディレクトリ内に存在するファイルによって上書きされる。
【0012】
本発明の第1の特徴によれば、例えば、3月10日リリース予定の第1モジュールが3月10日付ディレクトリ内に既に格納されており、3月20日リリース予定の第2モジュールが3月20日付ディレクトリ内に既に格納されている場合に、3月20日を指定の先日付とすることによって、3月10日リリース予定の第1モジュールと3月20日リリース予定の第2モジュールとが反映された3月20日の状態(環境)を、3月5日に作ることが可能となる。
【0013】
本発明の第2の特徴は、先日付状態作成ステップが、第1日付を第1の変数に、第2日付を第2の変数に設定するステップと、第1の変数と第2の変数とを比較する比較ステップと、第1の変数が示す日付が、第2の変数が示す日より後である場合に、システムを再起動するステップと、第1の変数が示す日付が、第2の変数が示す日付以前である場合に、第1の変数が示す日付に関連付けられているディレクトリ内の全ファイルを本番モジュールフォルダにコピーするステップと、第1の変数に所定数を加算した後に、比較ステップへ戻るステップを含むことにある。
【0014】
第1の変数に加算される所定数は、1日に限定されない。2日、3日、1週間などであっても良い。
【発明の効果】
【0015】
本発明の特徴によれば、第1日付ディレクトリから順に指定の先日付ディレクトリまでの各ディレクトリに格納されている全ファイル及び全ディレクトリが本番モジュール・ディレクトリに順番にコピーされる。それによって、本番モジュール・ディレクトリ内には、例えば、指定の先日付に至るまでにリリースされる全モジュールが、指定の先日付における最新バージョンで格納される。
【発明を実施するための最良の形態】
【0016】
以下に図面に基づいて、本発明を実施するための最良の形態を説明する。なお、以下の説明は、単なる例示に過ぎず、本発明の技術的範囲は以下の説明によって限定されるものではない。
【実施例】
【0017】
図1に基づいて、実施例における本番環境、総合開発環境、Aチーム開発環境及びBチーム開発環境の関係を説明する。まず、本番同期システムを用いて、本番環境1と総合開発環境2を同期させる。つまり、本番環境1の本番モジュール・ディレクトリ(図示せず)の全モジュールを、総合開発環境2の本番モジュール・ディレクトリ3へコピーする(S1)。
【0018】
次いで、モジュール管理ツールを用いて、総合開発環境2の本番モジュール・ディレクトリ3内の全モジュール(最新本番モジュール)を各チームのチームテスト環境ディレクトリにコピーする(S2)。図1に示す例では、最新本番モジュール(モジュールM1ver.0、モジュールM2ver.0、モジュールM3ver.0、他の既存モジュール)を、Aチームテスト環境ディレクトリ8及びBチームテスト環境ディレクトリ9並びに図示しないCチームテスト環境ディレクトリにコピーする。
【0019】
そして、各チームはそれぞれ独立して、開発中のモジュールを自己のテスト環境下でテストし(S3)、テストに合格したモジュールを新たなバージョンとして先日付ディレクトリ群4内のリリース予定日のディレクトリへコピーする(S4)。
【0020】
図1に示す例では、AチームはモジュールM1の開発を担当し、本番モジュール・ディレクトリ3からコピーしたモジュールM1(ver.0)、モジュールM2(ver.0)、モジュールM3(ver.0)及び他の既存モジュールが存在するAチームテスト環境8において、開発中のモジュールM1をテストした後に、モジュールM1をバージョン1として、先日付ディレクトリ群4内のYYYYMMD2ディレクトリ5へコピーする。
【0021】
一方、BチームはモジュールM2の開発を担当し、本番モジュール・ディレクトリ3からコピーしたモジュールM1(ver.0)、モジュールM2(ver.0)、モジュールM3(ver.0)及び他の既存モジュールが存在するBチームテスト環境9において、開発中のモジュールM2をテストした後に、モジュールM2をバージョン1として、先日付ディレクトリ群4内のYYYYMMD3ディレクトリ6へコピーする。
【0022】
また、図示しないCチームはモジュールM3の開発を担当し、本番モジュール・ディレクトリ3からコピーしたモジュールM1(ver.0)、モジュールM2(ver.0)、モジュールM3(ver.0)及び他の既存モジュールが存在するCチームテスト環境において、開発中のモジュールM3をテストした後に、モジュールM3をバージョン1として、先日付ディレクトリ4群内のYYYYMMD4ディレクトリ7へコピーする。
【0023】
ここで、YYYYMMD3はYYYYMMD2よりも未来であるとする。つまり、Aチームが開発したモジュールM1(ver.1)がリリースされた後に、Bチームが開発したモジュールM2(ver.1)がリリースされる。別の言い方をすると、Bチームが開発したモジュールM2(ver.1)がリリースされる日には、Aチームが開発したモジュールM1(ver.1)は既にリリースされている。
【0024】
また、YYYYMMD4はYYYYMMD3よりも未来であるとする。つまり、Bチームが開発したモジュールM2(ver.1)がリリースされた後に、Cチームが開発したモジュールM3(ver.1)がリリースされる。別の言い方をすると、Bチームが開発したモジュールM2(ver.1)がリリースされる日には、Cチームが開発したモジュールM3(ver.1)はまだリリースされていない。
【0025】
そして、Bチームテスト環境9には、Aチームが開発したモジュールM1(ver.1)は反映されていない。つまり、モジュールM2(ver.1)がリリースされる日には、モジュール1はバージョン0からバージョン1に変化しているにもかかわらず、Bチームはモジュール1(ver.1)を用いたテストをまだしていない。
【0026】
そこで、後述する先日付状態作成ツールを用いて、テスト実行日から見て未来であるYYYYMMD3の日にリリースされているべきモジュール群からなる総合テスト環境10を、テスト日に構築して総合テストを実行する(S5)。
【0027】
図1に示す例では、先日付確認ツールを用いて、YYYYMMD2の先日付ディレクトリ内のモジュールM1(ver.1)と、YYYYMMD3の先日付ディレクトリ内のモジュールM2(ver.1)と、モジュールM3(ver.0)と、他の既存モジュールからなる総合テスト・モジュール群10を得る。そして、このようにして得られた総合テスト環境10を用いてモジュールM2(ver.1)をテストする。
【0028】
図1に示す例では、総合テスト環境10は、モジュールM2(ver.1)がリリースされる日の状態と同じであるから、モジュールM2(ver.1)のリリース日YYYYMMDD3より後にリリースされるモジュールM3(ver.1)は含まれない。つまり、総合テスト環境10に含まれるモジュールM3は、ver.0のままである。
【0029】
テストの結果、問題が発見されなければ、開発されたモジュールはモジュール管理ツール又はリリースツールへ登録される(S6)。そして、モジュール管理ツール又はリリースツールは、登録されているモジュールを、所定のリリース・スケジュールに従って、本番環境へリリースする(S7)。図1に示す例では、モジュールM2(ver.1)がリリースツールに登録され、本番環境へリリースされる。
【0030】
図2に基づいて、実施例の先日付確認ツールの全体構成を説明する。図2に示すように、先日付確認ツール30は、CPU(制御手段)31、ROM32、RAM33、HDD(記憶手段)34、送受信手段36などを備える。
【0031】
HDD34には、OS(Operating System)、環境ロック手段、バックアップ取得手段、環境リフレッシュ手段、先日付状態作成手段、サービス反映手段、環境ロック解除手段、本番ディレクトリ、先日付ディレクトリ群などが記憶されている。環境ロック手段等の「〜手段」の実体は、所定の処理を実行するプログラムである。
【0032】
送受信手段36は、本番環境1から本番モジュールを受信したり、各チームのテスト環境に本番モジュールを送信したり、各チームが開発したモジュールを受信したりする。
【0033】
図3に基づいて、実施例の処理の全体的な流れを説明する。例えば、リリース予定のJSP(Java(登録商標)Server Pages)を手作業でリリース予定日の先日付ディレクトリに格納する(ステップS11)。例えば、AチームはYYYYMMD2の先日付ディレクトリにモジュールM1(ver.1)を格納し、BチームはYYYYMMD3の先日付ディレクトリにモジュールM2(ver.1)を格納する。
【0034】
次に、先日付ツールを用いてテストしようとする者が先日付ツールにログインすると、環境がロックされる(ステップS13)。「環境がロックされる」とは、例えば、他者のログインを排除すること、を含む。
【0035】
次に、バックアップを取得する(ステップS15)。例えば、本番モジュール・ディレクトリ3内の全てのファイルを第1のバックアップディレクトリ(図示せず)にコピーする。本番モジュール・ディレクトリ内にサブディレクトリが存在する場合は、それらサブディレクトリ内のファイルも全てバックアップディレクトリにコピーする。
【0036】
通常は、不具合があった場合にその場で書き換えながらテストを進める。このため、最新のバージョンが本番ディレクトリのみにしか存在しない場合がある。異なるチームによって環境が変化される為、意図しないモジュールの消失が発生する恐れがある。本番モジュール・ディレクトリ3内の全てのファイルを第1のバックアップディレクトリ(図示せず)へコピーするのは、この意図しないモジュールの消失を防止するためである。例えば、昨日Aさんが先日付テストを実施し、翌日BさんがAさんとは異なる先日付でテストを実施したとする。もしAさんがバックアップ取得を忘れていたとしても、Bさんは昨日Aさんが先日付テストを実施する前の状態までさかのぼることができる。
【0037】
次に、環境をリフレッシュする(ステップS17)。例えば、第2のバックアップディレクトリを設け、毎朝定時(例えば、8時)に本番モジュールを、第2のバックアップディレクトリにコピーしておく。そして、環境リフレッシュが要求されたら、その日の朝の本番モジュールで、本番モジュール・ディレクトリ内の内容を更新する。
【0038】
次に、先日付状態を作成する(ステップS19)。先日付状態を作成するための処理の流れは後述する。
【0039】
次に、利用するアプリケーションの仕様に従って、サービスに反映させるために必要な手順を実行する(ステップS21)。利用するアプリケーションとは、例えば
HTTPD(Hyper Text Transfer Protocol Daemon) Server、Web Application Server、DBMS(Data Base Management System)製品などを含む。「必要な手順」とは、例えば先日付状態にした場合に更新されたモジュールのタイムスタンプを更新前のタイムスタンプより新しいものにすることが含まれる。
【0040】
図4に基づいて、実施例の先日付状態作成処理の流れを説明する。まず、テスト実施日(本日)の日付を変数D1(第1の変数)にセットする(ステップS101)。例えば、テスト実施日はシステム内のカレンダー機能から自動的に取得する。また例えば、テスト実施日はYYYYMMD1とする。
【0041】
テスト実施者が指定の先日付(先日付リリース日)を入力し(ステップS103)、入力された先日付リリース日を変数D2(第2の変数)にセットする(ステップS105)。例えば、入力された先日付リリース日はYYYYMMD3とする。
【0042】
CPU(制御手段)31は、変数D1が示す日付と変数D2が示す日付とを比較し(ステップS107)、変数D1が示す日付が、変数D2が示す日付以前であれば、ステップS109へ進む。一方、変数D1が示す日付が、変数D2が示す日付より後であれば、処理を終了する。
【0043】
例えば、変数D1が示す日付がYYYYMMD1、変数D2が示す日付がYYYYMMD3である場合は、ステップS109へ進む。そして、先日付ディレクトリ群4内のYYYYMMD1ディレクトリ内のモジュールを本番モジュール・ディレクトリ3へコピーしようとするが、YYYYMMD1ディレクトリ内にはモジュールが存在しないため、コピーは実行されない。
【0044】
そして、変数D1に1dayを加算し(ステップS111)、ステップS107へ戻る。これにより変数D1が示す日付は、YYYYMMD2となる。
【0045】
CPU(制御手段)31は、変数D1が示す日付YYYYMMD2と変数D2が示す日付YYYYMMD3とを比較し(ステップS107)、変数D1が示す日付YYYYMMD2は、変数D2が示す日付YYYYMMD3以前であるから、ステップS109へ進む。そして、先日付ディレクトリ群4内のYYYYMMD2ディレクトリ5内のモジュールを本番モジュール・ディレクトリ3へコピーする(ステップS109)。
【0046】
そして、変数D1に1dayを加算し(ステップS111)、ステップS107へ戻る。これにより変数D1が示す日付は、YYYYMMD3となる。
【0047】
CPU(制御手段)31は、変数D1が示す日付YYYYMMD3と変数D2が示す日付YYYYMMD3とを比較し(ステップS107)、変数D1が示す日付YYYYMMD3は、変数D2が示す日付YYYYMMD3以前であるから、ステップS109へ進む。そして、先日付ディレクトリ群4のYYYYMMD3ディレクトリ6内のモジュールを本番モジュール・ディレクトリ3へコピーする(ステップS109)。
【0048】
そして、変数D1に1dayを加算し(ステップS111)、ステップS107へ戻る。これにより変数D1が示す日付は、YYYYMMD4となる。
【0049】
CPU(制御手段)31は、変数D1が示す日付YYYYMMD4と変数D2が示す日付YYYYMMD3とを比較し(ステップS107)、変数D1が示す日付YYYYMMD4は、変数D2が示す日付YYYYMMD3より後であるから、処理を終了する。
【0050】
図5に基づいて、「先日付状態にした場合に更新されたモジュールのタイムスタンプを更新前のタイムスタンプより新しいものにする」を説明する。
【0051】
図5(a)に示すように、先日付状態を作成する前は、本番モジュール・ディレクトリ3内に、モジュールM1(ver.0)TS(タイムスタンプ)0、モジュールM2(ver.0)TS(タイムスタンプ)0、他の既存モジュールが存在する。そして、図5(b)に示すように、先日付ディレクトリ群4内のYYYYMMD2ディレクトリ5からモジュールM1(ver.1)TS1が本番モジュール・ディレクトリ3へコピーされる。
【0052】
さらに、図5(c)に示すように、先日付ディレクトリ群4内のYYYYMMD3ディレクトリ6からモジュールM2(ver.1)TS1が本番モジュール・ディレクトリ3へコピーされる。そして、図5(d)に示すように、本番モジュール・ディレクトリ3内のモジュールM1(ver.1)及びM2(ver.1)のタイムスタンプがTS1からTS2へ更新される。
【0053】
このように、タイムスタンプを更新する理由は以下のとおりである。例えば、JSP(Java(登録商標)Server Pages)では、内容をサービスに反映させる為にはコンパイルを行う必要がある。Web Application Serverの多くの製品(IBM社のWebsphere、Apache のプラグインとして動作可能なTomcatなど)では、JSPの内容が変更された場合のみ、JSPの再コンパイルを行う。そして、内容が変更されたかどうかは、JSPのタイムスタンプで判断されることが多い。
【0054】
「サービスに反映させるために必要な手順」には更に、例えば「ソフトウェアのリブート(ウォーム・リブート)を実施する」、「定義ファイルの更新」、「ログファイルの退避」、「他アプリケーションとの連携設定」などが含まれる。
【0055】
次に、先日付状態でテストを実施する(ステップS23)。テスト実施後、先日付状態作成前の状態に環境を戻す(ステップS25)。例えば、ステップS17及びステップS21を実行する。環境を戻した後、環境ロックを解除する(ステップS27)。
【0056】
図6にメインメニューの一例を示す。ボタンB1がクリックされると、ステップS15及びS17が実行される。フォームF1に指定の先日付が入力され、ボタンB2がクリックされると、ステップS19が実行される。
【0057】
上記の如く、前記実施例によれば、ユーザから指定された先日付状態下でモジュールをテストすることが可能となる。また、テスト実行後は、テスト実行前の環境に戻すことができる。
【図面の簡単な説明】
【0058】
【図1】実施例における本番環境、総合開発環境、Aチーム開発環境及びBチーム開発環境の関係を示す図である。
【図2】実施例の先日付確認ツールの全体構成を示す図である。
【図3】実施例の処理の全体的な流れを示すフローチャートである。
【図4】実施例の先日付状態作成処理の流れを示すフローチャートである。
【図5】(a)〜(d)は先日付ディレクトリから本番モジュール・ディレクトリへコピーされるモジュール及びコピーされたモジュールのタイムスタンプの変化を示す図である。
【図6】実施例2のサービス利用可否判断システムの処理の流れを示すフローチャートである。
【符号の説明】
【0059】
1…本番環境 2…総合開発環境
3…本番モジュール・ディレクトリ 4…先日付ディレクトリ群
5…YYYYMMD2ディレクトリ 6…YYYYMMD3ディレクトリ
7…YYYYMMD4ディレクトリ
8…Aチームテスト環境ディレクトリ 9…Bチームテスト環境ディレクトリ
10…総合テスト環境
30…先日付確認ツール 31…CPU(制御手段)
32…ROM 33…RAM
34…HDD(記憶手段) 36…送受信手段

【特許請求の範囲】
【請求項1】
本番モジュール・ディレクトリ内を指定の先日付における状態とするための方法であって、
バックアップ取得手段が、本番モジュール・ディレクトリ内の全ディレクトリ及び全ファイルをバックアップ用ディレクトリへコピーするバックアップステップと、
先日付状態作成手段が、第1日付ディレクトリから順に指定の先日付ディレクトリまでの各ディレクトリ内の全ディレクトリ及び全ファイルを本番モジュール・ディレクトリへコピーする先日付状態作成ステップと、
サービス反映手段が、システムを再起動するサービス反映ステップと、を含むことを特徴とする先日付状態作成方法。
【請求項2】
前記先日付状態作成ステップは、
第1日付を第1の変数に、第2日付を第2の変数に設定するステップと、
第1の変数と第2の変数とを比較する比較ステップと、
第1の変数が示す日付が、第2の変数が示す日より後である場合に、システムを再起動するステップと、
第1の変数が示す日付が、第2の変数が示す日付以前である場合に、第1の変数が示す日付に関連付けられているディレクトリ内の全ファイルを前記本番モジュールフォルダにコピーするステップと、
第1の変数に所定数を加算した後に、前記比較ステップへ戻るステップを含むことを特徴とする請求項1に記載の先日付状態作成方法。
【請求項3】
本番モジュール・ディレクトリ内を指定の先日付における状態とするためのプログラムであって、コンピュータを、
本番モジュール・ディレクトリ内の全ディレクトリ及び全ファイルをバックアップ用ディレクトリへコピーするバックアップ取得手段、
第1日付ディレクトリから順に指定の先日付ディレクトリまでの各ディレクトリ内の全ディレクトリ及び全ファイルを本番モジュール・ディレクトリへコピーする先日付状態作成手段、
システムを再起動するサービス反映手段、として機能させることを特徴とする先日付状態作成プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2007−79981(P2007−79981A)
【公開日】平成19年3月29日(2007.3.29)
【国際特許分類】
【出願番号】特願2005−267454(P2005−267454)
【出願日】平成17年9月14日(2005.9.14)
【出願人】(000155469)株式会社野村総合研究所 (1,067)
【Fターム(参考)】