JP2017167763A - 情報処理装置、試験実行方法および試験実行プログラム - Google Patents

情報処理装置、試験実行方法および試験実行プログラム Download PDF

Info

Publication number
JP2017167763A
JP2017167763A JP2016051626A JP2016051626A JP2017167763A JP 2017167763 A JP2017167763 A JP 2017167763A JP 2016051626 A JP2016051626 A JP 2016051626A JP 2016051626 A JP2016051626 A JP 2016051626A JP 2017167763 A JP2017167763 A JP 2017167763A
Authority
JP
Japan
Prior art keywords
container
user
request
test
server device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2016051626A
Other languages
English (en)
Inventor
敦二 関口
Atsuji Sekiguchi
敦二 関口
光幾 加藤
Koki Kato
光幾 加藤
聡 宗像
Satoshi Munakata
聡 宗像
武 安家
Takeshi Ake
武 安家
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016051626A priority Critical patent/JP2017167763A/ja
Priority to US15/423,992 priority patent/US20170270031A1/en
Publication of JP2017167763A publication Critical patent/JP2017167763A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Abstract

【課題】使用するリソースを削減した利便性の高いテスト環境を提供することを課題とする。【解決手段】試験制御装置は、複数のコンポーネントを有するシステムの改版を行うユーザごとに、改版で利用されるコンポーネントの種別と改版で利用されるコンポーネント間の接続関係とを対応付けた利用構成表を記憶する。試験制御装置は、端末装置からリクエストを受信した場合、当該端末装置のユーザに対応付けられる利用構成表に基づいて、リクエストの転送先となるコンポーネントの種別を特定する。試験制御装置は、特定された種別に対応するサーバ装置が起動中の場合、リクエストをサーバ装置に転送し、サーバ装置が未起動の場合、該当するサーバ装置を起動して、起動させたサーバ装置にリクエストを転送する。【選択図】図2

Description

本発明は、情報処理装置、試験実行方法および試験実行プログラムに関する。
近年、Web、AP(アプリケーション)、DB(データベース)などの複数のコンポーネントからなるICT(Information and Communication Technology)システムを用いたサービスが増えている。これらのコンポーネントは、従来の物理サーバや仮想マシン(VM:Virtual Machine)に比べて、ディスク量やメモリ量が少なく起動時間が短いコンテナ技術を用いて動作させることが増えている。
このようなコンポーネントを用いたサービスは、複数人のチームで開発され、機能追加や改善などによる頻繁な改版を繰り返すことが多い。また、頻繁な改版であっても、サービスを停止しないように、テスト環境を用意しておき、予め作成したテストコードを用いてテストを実行することが一般的である。例えば、共用のテストシステムを1つまたは複数用意する手法や開発者ごとにテストシステムを用意する手法が知られている。
特開2010−113381号公報 特開平4−195436号公報
しかしながら、上記技術では、使用するリソースが多く、利便性も悪い。例えば、共用のテストシステムを用いる場合では、使用するリソースが少なくて済むが、複数のメンバーが同時に使用することができないので、利便性が悪く、頻繁な改版ができない。また、開発者ごとにテストシステムを用意する手法では、使用するリソースが多くなり、コストが増大する。
1つの側面では、使用するリソースを削減した利便性の高いテスト環境を提供することができる情報処理装置、試験実行方法および試験実行プログラムを提供することを目的とする。
第1の案では、情報処理装置は、複数のコンポーネントを有するシステムの改版を行うユーザごとに、前記改版で利用されるコンポーネントの種別と前記改版で利用されるコンポーネント間の接続関係とを対応付けた利用構成表を記憶する記憶部を有する。情報処理装置は、端末装置からリクエストを受信した場合、当該端末装置のユーザに対応付けられる前記利用構成表に基づいて、前記リクエストの転送先となるコンポーネントの種別を特定する特定部を有する。情報処理装置は、特定された種別に対応するサーバ装置が起動中の場合、前記リクエストを前記サーバ装置に転送し、前記サーバ装置が未起動の場合、該当するサーバ装置を起動して、起動させたサーバ装置に前記リクエストを転送する転送制御部を有する。
一実施形態によれば、使用するリソースを削減した利便性の高いテスト環境を提供することができる。
図1は、実施例1にかかるシステムを説明する図である。 図2は、実施例1にかかる試験制御装置の機能構成を示す機能ブロック図である。 図3は、利用構成表に記憶される情報の例を示す図である。 図4は、コンテナ情報表に記憶される情報の例を示す図である。 図5は、フロー制御表に記憶される情報の例を示す図である。 図6は、コンテナ削除を説明する図である。 図7は、実施例1にかかるコンテナ起動およびリクエスト転送の処理の流れを示すフローチャートである。 図8は、実施例1にかかるコンポーネントの改版を説明する図である。 図9は、実施例2にかかる試験制御装置の機能構成を示す機能ブロック図である。 図10は、実施例2にかかる専有コンテナ種表に記憶される情報の例を示す図である。 図11は、実施例2にかかるフロー制御表に記憶される情報の例を示す図である。 図12は、実施例2にかかるコンテナ起動およびリクエスト転送の処理の流れを示すフローチャートである。 図13は、実施例2にかかる専有コンテナを用いたテスト環境を説明する図である。 図14は、実施例3にかかる利用コンテナの推定を説明する図である。 図15は、実施例3にかかる専有コンテナの推定を説明する図である。 図16は、実施例3にかかる専有コンテナの推定を説明する図である。 図17は、実施例3にかかるテストケースの確認処理の流れを示すフローチャートである。 図18は、実施例3にかかる専有コンテナの推定処理の流れを示すフローチャートである。 図19は、ハードウェア構成例を説明する図である。
以下に、本願の開示する情報処理装置、試験実行方法および試験実行プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、各実施例は、矛盾のない範囲内で適宜組み合わせることができる。
[全体構成]
図1は、実施例1にかかるシステムを説明する図である。図1に示すように、このシステムは、複数のユーザ端末1から3と試験制御装置10とを有し、各ユーザ端末に、テスト環境を提供するシステムである。このシステムは、Web、AP、DBなどの複数のコンポーネントからなるICTシステムを用いたサービスを提供する稼働システムのテスト環境を、各ユーザ端末に提供する。本実施例では、Web、AP、DBの順で構成される3層システムを例にして説明する。
各ユーザ端末は、ICTシステムの改版を行うユーザの端末であり、例えばサーバ、ノートパソコン、移動体端末などの端末である。ユーザは、各ユーザ端末を用いて、自身が担当するコンポーネントの改版を行い、テストケースを用いて改版後の異常を検出する。
ここでテストケースとは、コンテンツ、アプリ、データベーススキーマなどが正常に動作することを確認するために、何らかの操作とそれに対する期待値を記述し、実際の操作の結果と期待値を比較して、同じであれば、テスト成功となる。テストケースには、例えば画像などのWebの静的コンテンツのように、通常のアクセスで変化しないものもあれば、アクセス数などのDBのデータのように、テストのアクセスであっても変化するものもある。あるいは、システムのログインのテストのために、テストユーザの情報を予めDBに登録するようなテストのための準備が必要なこともある。
試験制御装置10は、複数のコンポーネントを有するシステムの改版を行うユーザに、テスト環境を提供するサーバ装置である。具体的には、試験制御装置10は、各ユーザ端末に対して、物理サーバ、仮想マシン、コンテナなどを用いたテスト環境を提供する。ここで、テスト環境は、試験制御装置10内に構成されてもよく、別の物理サーバ内に構成されてもよい。
このような構成において、試験制御装置10は、複数のコンポーネントを有するシステムの改版を行うユーザごとに、改版で利用されるコンポーネントの種別と改版で利用されるコンポーネント間の接続関係とを対応付けた利用構成表を記憶する。そして、試験制御装置10は、ユーザ端末からリクエストを受信した場合、当該ユーザ端末のユーザに対応付けられる利用構成表に基づいて、リクエストの転送先となるコンポーネントの種別を特定する。その後、試験制御装置10は、特定された種別に対応するサーバ装置が起動中の場合、リクエストをサーバ装置に転送し、サーバ装置が未起動の場合、該当するサーバ装置を起動して、起動させたサーバ装置にリクエストを転送する。
例えば、試験制御装置10は、プロキシ(proxy)を起動する。ここで起動するプロキシは、コンテナであってもよい。そして、試験制御装置10は、ユーザから送信されたリクエストをプロキシで受信する。すると、試験制御装置10は、転送先のコンテナが存在しなければ、新規にコンテナを起動して、起動させたコンテナにリクエストを転送し、対象コンテナがすでに存在すれば、そのコンテナにリクエストを転送する。
つまり、図1に示すように、試験制御装置10は、はじめにリクエストを送信したユーザ端末1に対して、ユーザ端末1が使用するWebサーバ、APサーバ、DBサーバの各コンテナを生成する。次に、試験制御装置10は、2番目にリクエストを送信したユーザ端末2に対して、ユーザ端末2が使用するWebサーバ、APサーバ、DBサーバの各コンテナがすでに起動済みであることから、ユーザ端末1のリクエスト時に生成した各コンテナにリクエストを転送する。最後に、試験制御装置10は、3番目にリクエストを送信したユーザ端末3に対して、ユーザ端末3が使用するAPサーバとDBサーバのコンテナがすでに起動済みであることから、ユーザ端末1のリクエスト時に生成したAPサーバのコンテナにリクエストを転送する。
このように、試験制御装置10は、あるユーザ端末に対して起動させたコンテナを共用して、他のユーザ端末にも使用させることができる。この結果、試験制御装置10は、使用するリソースを削減した利便性の高いテスト環境を提供することができる。なお、図1では、各コンテナに対してプロキシを起動させた例を説明したが、これに限定されるものではなく、1つのプロキシでリクエストを振り分けることもできる。
[機能構成]
図2は、実施例1にかかる試験制御装置10の機能構成を示す機能ブロック図である。本実施例では、試験制御装置10とは別の筐体等に、テスト環境を生成する例で説明する。図2に示すように、試験制御装置10は、通信制御部11、記憶部12、制御部20を有する。
通信制御部11は、他の装置の通信を制御する処理部であり、例えばネットワークインタフェースカードである。例えば、通信制御部11は、テストケースを実行するリクエストを各ユーザ端末から受信し、テスト結果を各ユーザ端末に送信する。
記憶部12は、制御部20が実行するプログラムや各種データを記憶する記憶装置であり、例えばメモリやハードディスクなどである。この記憶部12は、利用構成表13、コンテナ情報表14、フロー制御表15を記憶する。なお、ここでは、表を例にして説明するが、データ形式を限定するものではなく、テキスト形式やDBなどの形式を採用することもできる。
利用構成表13は、複数のコンポーネントを有するシステムの改版を行うユーザごとに、改版で利用されるコンポーネントの種別と改版で利用されるコンポーネント間の接続関係とを対応付けて記憶する。
図3は、利用構成表13に記憶される情報の例を示す図である。図3に示すように、利用構成表13は、「ユーザ、接続情報、破棄不可」を対応付けて記憶する。ここで記憶される「ユーザ」は、ユーザ端末すなわちシステムの改版を行うユーザを識別する識別子である。「接続情報」は、ユーザ端末が使用するコンテナの種別と使用するコンテナの接続関係を示す情報である。「破棄不可」は、特定の条件を満たす場合に自動的にコンテナを破棄する自動破棄が無効か否かを設定する情報である。
図3の例では、「ユーザ1」は、「Webサーバ、APサーバ、DBサーバ」のコンテナを使用し、各コンテナの接続関係が「クライアント(client)からWebサーバ」、「WebサーバからAPサーバ」、「APサーバからDBサーバ」であることを示す。また、いずれのコンテナについても自動破棄が有効である。なお、「ユーザ2」については、利用するコンテナの種別(コンテナ種)と接続関係は、ユーザ1と同様であるが、「DBサーバ」について自動破棄が無効に設定されている。
コンテナ情報表14は、起動済みのコンテナに関する情報を記憶する。図4は、コンテナ情報表14に記憶される情報の例を示す図である。図4に示すように、コンテナ情報表14は、「コンテナ、コンテナ種、破棄不可」を対応付けて記憶する。
ここで記憶される「コンテナ」は、起動済みのコンテナを識別する識別子であり、「コンテナ種」は、起動済みのコンテナの種別であり、「破棄不可」は、自動破棄の設定を示す。図4の例では、「Webサーバ」に該当するコンテナ「Web1」が自動破棄を許可した状態で起動されていることを示す。
フロー制御表15は、テスト環境内で起動するコンテナごとに、テスト環境で発生した通信に関する情報を記憶する。図5は、フロー制御表15に記憶される情報の例を示す図である。図5に示すように、フロー制御表15は、「コンテナ、ユーザ、最新アクセス時刻」を対応付けて記憶する。
ここで記憶される「コンテナ」は、アクセス対象のコンテナ種を示す情報であり、「ユーザ」は、アクセスしたユーザを示す情報であり、「最新アクセス時刻」は、ユーザがコンテナにアクセスした最新の日時である。図5の例では、コンテナ「Web1」に対して、「ユーザ1」から「2015/12/4 12:00:01」にアクセスがあったことを示している。
制御部20は、試験制御装置10全体の処理を司る処理部であり、例えばプロセッサなどである。この制御部20は、プロキシ実行部21、設定部22、代理処理部23、コンテナ起動部24、コンテナ破棄部25を有する。なお、プロキシ実行部21、設定部22、代理処理部23、コンテナ起動部24、コンテナ破棄部25は、プロセッサなどの電子回路の一例やプロセッサが実行するプロセスの一例である。
プロキシ実行部21は、リクエストの受信および処理結果の応答などを実行する処理部である。具体的には、プロキシ実行部21は、処理が開始されると、利用構成表13を参照して、コンテナ種を取得し、取得したコンテナ種ごとにプロキシのコンテナを起動する。このようにして、プロキシ実行部21は、各ユーザ端末に対して、テスト環境として代理応答する。
例えば、プロキシ実行部21は、ユーザ端末からリクエストを受信すると、代理処理部23に出力する。また、プロキシ実行部21は、代理処理部23等からリクエストに対する応答を受信すると、リクエスト元のユーザ端末に応答を送信する。
また、プロキシ実行部21は、各コンテナからリクエストを受信すると、当該リクエストを代理処理部23に出力する。図3のユーザ1を例にして説明すると、プロキシ実行部21は、ユーザ端末1からリクエストを受信して代理処理部23に出力し、その後に、Webサーバのコンテナからリクエストを受信して代理処理部23に出力する。また、プロキシ実行部21は、APサーバのコンテナからリクエストを受信して代理処理部23に出力し、その後に、DBサーバのコンテナからリクエストを受信して代理処理部23に出力する。その後、プロキシ実行部21は、DBサーバのコンテナから受信した結果をユーザ端末1に応答する。
ここで、Web−AP−DBなどの多層システムである本システムでは、2層目以降のユーザのアクセスの識別について、公知の様々な手法を採用することができる。例えば、各コンポーネントに、送信元アドレスなどのユーザの識別情報を、コメントやオプションヘッダなどのメッセージの論理的な意味を変更した領域に挿入して、伝達させるように実装しておくことができる。また、ユーザからのアクセスと2層目以降のアクセスとを紐付ける情報を予め特定しておき、その情報を用いて通信を紐付けることもできる。
設定部22は、複数のコンポーネントを有するシステムの改版を行うユーザごとに、改版で利用されるコンポーネントの種別と改版で利用されるコンポーネント間の接続関係との対応付けの設定を受付ける処理部である。具体的には、設定部22は、各ユーザ端末から、利用構成表13の登録を受け付ける。
代理処理部23は、ユーザ端末から送信されたリクエストを、該当するコンテナに振り分ける処理部である。具体的には、代理処理部23は、ユーザ端末または各コンテナからリクエストを受信した場合に、利用構成表13を参照して、次の転送先となるコンポーネントを特定する。そして、代理処理部23は、次の転送先となるコンポーネントを特定すると、コンテナ情報表14を参照して、該当するコンポーネントに対応するコンテナが起動中か否かを判定する。
その後、代理処理部23は、該当コンテナが起動中である場合は、該当コンテナにリクエストを転送し、フロー制御表15を更新する。一方。代理処理部23は、該当コンテナが未起動である場合は、コンテナ起動部24にコンテナの起動指示を送信する。その後、代理処理部23は、該当コンテナが起動されると、該当コンテナにリクエストを転送し、フロー制御表15を更新する。
例えば、代理処理部23は、ユーザ端末1のユーザ1のIDやアドレス情報等が付加されたリクエストを、ユーザ端末1から受信すると、利用構成表13を参照してリクエストの転送先がWebであることを特定する。続いて、代理処理部23は、フロー制御表15を参照して、ユーザ1に該当するエントリを特定する。ここで、代理処理部23は、エントリがフロー制御表15にあれば、コンテナ「Web1」を取得して、コンテナ「Web1」にリクエストを転送する。このとき、代理処理部23は、現在時刻を取得して、フロー制御表15の該当エントリの最新アクセス時刻を更新する。
一方、代理処理部23は、フロー制御表15に「ユーザ1」のエントリがない場合、コンテナ情報表14を参照し、コンテナ種「Web」のエントリがあるか否かを判定する。そして、代理処理部23は、コンテナ種「Web」のエントリがコンテナ情報表14にある場合、コンテナ種「Web」に対応付けられるコンテナ「Web1」を取得する。続いて、代理処理部23は、コンテナ「Web1」に対応するエントリをフロー制御表15から検索し、エントリがあれば「ユーザ」に「ユーザ1」を追記し、エントリがなければ、「コンテナ=Web1、ユーザ=ユーザ1、破棄不可=−」のエントリの新規作成をコンテナ起動部24に要求する。その後、代理処理部23は、Webコンテナ「Web1」にリクエストを転送するとともに、現在時刻を取得して、フロー制御表15の該当エントリの最新アクセス時刻を更新する。
また、代理処理部23は、コンテナ情報表14にもWebのエントリがない場合、コンテナ起動部24に対して、Webのコンテナの生成指示を送信する。そして、代理処理部23は、Webのコンテナ「Web1」が起動されると、上記処理と同様の処理を実行して、Webコンテナ「Web1」にリクエストを転送するとともに、現在時刻を取得して、フロー制御表15の該当エントリの最新アクセス時刻を更新する。
なお、ここでは、Webコンテナへのリクエストについて説明したが、APやDBであっても同様の手法で処理することができる。
コンテナ起動部24は、該当コンポーネントのコンテナを起動する処理部である。具体的には、コンテナ起動部24は、代理処理部23から指示されたコンテナを起動し、コンテナ情報表14に、起動したコンテナに該当するエントリを生成する。
例えば、コンテナ起動部24は、代理処理部23からWebのコンテナの生成指示を受信すると、コンテナ情報表14を参照して、Webコンテナの起動数を取得する。ここで、Webコンテナが未起動の場合、コンテナ起動部24は、起動対象が1番目のWebコンテナであることから、起動対象のWebコンテナを「Web1」とする。そして、コンテナ起動部24は、テスト環境に「Web1」のコンテナを起動するとともに、コンテナ情報表14に、「コンテナ=Web1、コンテナ種=Web」のエントリを生成する。さらに、コンテナ起動部24は、リクエスト送信元の「ユーザ1」に対応付けられるエントリを利用構成表13から特定し、「破棄不可=−」を取得する。そして、コンテナ起動部24は、コンテナ情報表14の「コンテナ=Web1、コンテナ種=Web」のエントリに、「破棄不可=−」を追記する。その後、コンテナ起動部24は、コンテナの起動開始を代理処理部23に応答する。なお、各表の作成は、代理処理部23が実行することもできる。
コンテナ破棄部25は、所定の条件を満たすコンテナを破棄する処理部である。具体的には、コンテナ破棄部25は、コンテナ情報表14のエントリごとに、フロー制御表15に該当するコンテナのエントリがあるか検索し、エントリがなければ、該当コンテナは不要と判定して削除する。削除後、コンテナ破棄部25は、コンテナ情報表14の該当エントリも削除する。
図6は、コンテナ削除を説明する図である。図6に示すように、コンテナ情報表14には、「Web1」のエントリと「AP1」のエントリが登録されている。この状態で、コンテナ破棄部25は、フロー制御表15を参照すると、フロー制御表15には、「Web1」のエントリは存在するが、「AP1」のエントリがないことを特定する。すると、コンテナ破棄部25は、テスト環境にある「AP1」に該当する「APサーバ」のコンテナを、テスト環境から削除する。続いて、コンテナ破棄部25は、フロー制御表15から「AP1」のエントリを削除する。このようにして、コンテナ破棄部25は、「APサーバ」のコンテナに使用されていたプロセッサやメモリなどのリソースを解放する。
上記削除処理は、定期的に実行することができるが、削除する契機はこれに限定されるものではない。例えば、コンテナ破棄部25は、フロー制御表15のエントリごとに、最新アクセス時刻が現時刻より時間T(例えば1時間)以前かを判定する。そして、コンテナ破棄部25は、最新アクセス時刻が現時刻より時間T以前のエントリをフロー制御表15から削除し、テスト環境からも該当コンテナを削除する。また、コンテナ破棄部25は、ユーザがユーザインタフェースを介して明示的にシステムの利用終了を通知したら削除することもできる。
[処理の流れ]
図7は、実施例1にかかるコンテナ起動およびリクエスト転送の処理の流れを示すフローチャートである。図7に示すように、プロキシ実行部21によってリクエストが受信されると(S101:Yes)、代理処理部23は、リクエストからユーザを特定する(S102)。
続いて、代理処理部23は、特定したユーザに対応するエントリを利用構成表13から特定して、転送先を特定する(S103)。そして、代理処理部23は、フロー制御表15を参照して、特定したユーザに対応するエントリを検索し(S104)、エントリがある場合(S104:Yes)、該当コンテナにエントリを転送する(S110)。
一方、代理処理部23は、フロー制御表15に該当ユーザのエントリがない場合(S104:No)、フロー制御表15から、特定した転送先のコンテナに対応するエントリを検索する(S105)。
そして、代理処理部23は、フロー制御表15に該当コンテナのエントリがある場合(S105:Yes)、該当コンテナのエントリにユーザ(ユーザID)を追加して(S106)、該当コンテナにリクエストを転送する(S110)。
一方、代理処理部23が、フロー制御表15に該当コンテナのエントリがないと判定した場合(S105:No)、コンテナ起動部24が、該当コンテナを起動する(S107)。続いて、コンテナ起動部24は、該当コンテナのエントリを追加して、コンテナ情報表14を更新するとともに(S108)、該当コンテナおよびユーザのエントリを追加して、フロー制御表15を更新する(S109)。なお、各表の更新は、代理処理部23が実行することもできる。その後、代理処理部23は、起動されたコンテナに、受信されたリクエストを転送する(S110)。
[改版の具体例]
図8は、実施例1にかかるコンポーネントの改版を説明する図である。図8に示す図では、ユーザ1から3が同じシステムの開発者であるが、担当するコンポーネントが異なっている例を示す。なお、図8に示すvはバージョンであり、bはブランチを示す。また、各ユーザは、改版前においては共通のテストケースAを用いてコンポーネントをテストする。
図8では、ユーザ1が、バージョン1のAPサーバ(APv1)を改版し、ユーザ2が、バージョン1のDBサーバ(DBv1)を改版し、ユーザ3が、バージョン1のWebサーバ(Webv1)を改版する。
このため、ユーザ1は、コンポーネント(APv1)をコンポーネント(APv1b1)に改版することから、テストケースAをテストケースAPv1b1に修正して、改版後のコンポーネント(APv1b1)をテストする。
同様に、ユーザ2は、コンポーネント(DBv1)をコンポーネント(DBv1b2)に改版することから、テストケースAをテストケースDBv1b2に修正して、改版後のコンポーネント(DBv1b2)をテストする。
同様に、ユーザ3は、コンポーネント(Webv1)をコンポーネント(Webv1b3)に改版することから、テストケースAをテストケースWebv1b3に修正して、改版後のコンポーネント(Webv1b3)をテストする。
このように、Web上のサービスを頻繁に改版する時、ある改版時の変更は、システムのごく一部であり、大部分のシステムのコンポーネントは変更されず、テストケースの変更もごく一部である。この結果、改版されるコンポーネント以外のコンポーネントは共用することができる。
[効果]
近年のWebサービスは、コンポーネント間の関係性を小さくして影響度を小さくするために、疎結合化が行われており、1コンポーネント1コンテナにすることが多い。また、システムは多くのコンポーネントから構成されるので、多くのコンテナから構成される。従って、ある改版のときは、殆どのコンテナは改版されない。また、開発を行っているチームのメンバーは、各々違うところを担当しているが、大部分のコンポーネント(コンテナ)やテストケースは改版されないため同じである。
したがって、実施例で説明したように、コンテナを用いて、改版対象以外のコンポーネントを共用することで、リソースの削減を図ることができる。例えば、Webサーバ、APサーバ、DBサーバから構成されるシステムを3ユーザで改版する場合、従来であれば9コンテナを用いてテスト環境を生成していたが、上記実施例を適用することで、3コンテナでテスト環境を生成することができる。したがって、リソースの削減が実現できる。さらに、各ユーザが並列に改版およびテストを実行することもできるので、利便性の低下も抑制できる。すなわち、使用するリソースを削減した利便性の高いテスト環境を提供することができる。
ところで、実施例1では、各コンテナを各ユーザで共用する例を説明したが、改版内容等によっては、コンテナを専有してテストを行う事象も発生する。そこで、実施例2では、一部のコンテナを専有させたテスト環境の作成例を説明する。なお、システム構成やコンポーネント構成等は、実施例1と同一とする。
[機能構成]
図9は、実施例2にかかる試験制御装置10の機能構成を示す機能ブロック図である。図9に示す試験制御装置10は、実施例1の図2と同様、通信制御部11と記憶部12と制御部20とを有するが、実施例1とは異なり、専有コンテナ種表16を有している。なお、実施例2では、実施例1と異なる点について説明する。
専有コンテナ種表16は、各ユーザが専有するコンテナの種別を記憶する。ここで記憶される情報は、ユーザにより設定することができる。図10は、実施例2にかかる専有コンテナ種表16に記憶される情報の例を示す図である。
図10に示すように、専有コンテナ種表16は、「ユーザ、専有コンテナ種」を対応付けて記憶する。「ユーザ」は、ユーザを識別する識別子等であり、「専有コンテナ種」は、ユーザが専有するコンテナの種別である。図10の例では、ユーザ1がAPサーバのコンテナを専有することを示す。
また、専有コンテナを生成することから、フロー制御表15にも実施例1と異なる情報が追記される。図11は、実施例2にかかるフロー制御表15に記憶される情報の例を示す図である。図11に示すように、実施例2にかかるフロー制御表15は、実施例1で説明した「コンテナ、ユーザ、最新アクセス時刻」に加えて、専有するか否かを示す「専有」の列が追加されている。図11の例では、ユーザ1に専有されるWeb1のコンテナに、ユーザ1が「2015/12/04 12:00:00」にアクセスしたことを示す。
また、代理処理部23は、実施例1では該当コンテナが起動中であればリクエストを転送し、該当コンテナが未起動であればコンテナの起動をコンテナ起動部24に指示していたが、これらに加えて、専有コンテナか否かの判定を行う。
具体例を挙げて説明すると、代理処理部23は、ユーザ端末1からリクエストを受信した場合に、利用構成表13を参照して、次の転送先となるコンテナが「Web」であることを特定する。続いて、代理処理部23は、フロー制御表15を参照して、ユーザ1に該当するエントリを特定する。ここで、代理処理部23は、該当のエントリがフロー制御表15にあれば、コンテナ情報の「Web」を取得して、該当コンテナ「Web」にリクエストを転送する。このとき、代理処理部23は、現在時刻を取得して、フロー制御表15の該当エントリの最新アクセス時刻を更新する。
一方、代理処理部23は、フロー制御表15に「ユーザ1」のエントリがない場合、コンテナ情報表14を参照し、コンテナ種「Web」のエントリがあるか否かを判定する。そして、代理処理部23は、コンテナ種「Web」のエントリがコンテナ情報表14にある場合、コンテナ種「Web」に対応付けられるコンテナ「Web1」を取得する。続いて、代理処理部23は、コンテナ「Web1」に対応するエントリをフロー制御表15から検索し、「専有=no」のエントリが存在する場合、「ユーザ1」を追記してエントリの転送等を実行する。
ここで、代理処理部23は、フロー制御表15に、「専有=yes」が対応付けられるコンテナ「Web1」のエントリが存在する場合、新たなコンテナである「Web2」のコンテナの生成を、コンテナ起動部24に指示する。このとき、コンテナ起動部24は、ユーザ1に対応する専有コンテナ種表16を参照し、専有コンテナ種が「AP」であることから、「専有=no」を設定した「Web2」のコンテナを生成する。その後、代理処理部23は、新たに生成された「Web2」のコンテナにリクエストを転送するとともに、フロー制御表15の該当エントリの最新アクセス時刻を更新する。
また、代理処理部23は、フロー制御表15に該当エントリがなければ、「コンテナ=Web1、ユーザ=ユーザ1、破棄不可=−」のエントリの新規作成をコンテナ起動部24に要求する。このとき、コンテナ起動部24は、ユーザ1に対応する専有コンテナ種表16を参照し、専有コンテナ種が「AP」であることから、「専有=no」を設定した「Web2」のコンテナを生成するとともに、要求されたエントリを作成する。その後、代理処理部23は、Webコンテナ「Web1」にリクエストを転送するとともに、フロー制御表15の該当エントリの最新アクセス時刻を更新する。
[処理の流れ]
図12は、実施例2にかかるコンテナ起動およびリクエスト転送の処理の流れを示すフローチャートである。図12に示すように、プロキシ実行部21によってリクエストが受信されると(S201:Yes)、代理処理部23は、リクエストからユーザを特定する(S202)。
続いて、代理処理部23は、特定したユーザに対応するエントリを利用構成表13から特定して、転送先を特定する(S203)。そして、代理処理部23は、フロー制御表15を参照して、特定したユーザに対応するエントリを検索し(S204)、エントリがある場合(S204:Yes)、該当コンテナにリクエストを転送する(S212)。
一方、代理処理部23は、フロー制御表15に該当ユーザのエントリがない場合(S204:No)、フロー制御表15から、特定した転送先のコンテナに対応するエントリを検索する(S205)。
そして、代理処理部23は、フロー制御表15に該当コンテナのエントリがあり(S205:Yes)、該当コンテナのエントリが該当ユーザの専有コンテナ種ではなく他ユーザのコンテナではなく(S206:Yes)、該当コンテナが他ユーザの専有コンテナ種ではない場合(S207:Yes)、該当エントリに「専有=no、ユーザ=ユーザ1」を追加する(S208)。その後、代理処理部23は、該当コンテナにリクエストを転送する(S212)。
一方、フロー制御表15に該当コンテナのエントリがない場合(S205:No)、または、該当コンテナのエントリが該当ユーザの専有コンテナ種もしくは他ユーザのコンテナである場合(S206:No)、または、他ユーザの専有コンテナ種である場合(S207:No)、S209以降が実行される。
すなわち、コンテナ起動部24が、該当コンテナを起動する(S209)。続いて、コンテナ起動部24は、該当コンテナのエントリを追加して、コンテナ情報表14を更新するとともに(S210)、該当コンテナおよびユーザのエントリを追加して、フロー制御表15を更新する(S211)。なお、各表の更新は、代理処理部23が実行することもできる。その後、代理処理部23は、起動されたコンテナに、受信されたリクエストを転送する(S212)。
[具体例]
次に、ユーザ1から3のそれぞれがWeb、AP、DBのコンポーネントを使用する例で説明する。ここでは、ユーザ1から順にリクエストが発行され、ユーザ1がAPを専有し、ユーザ2がDBを専有し、ユーザ3がWebを専有する例で説明する。図13は、実施例2にかかる専有コンテナを用いたテスト環境を説明する図である。
まず、試験制御装置10は、ユーザ1からリクエストを受信すると、利用構成表13にしたがって、「専有=no」のコンテナ「Web1」を生成してリクエストを転送する。続いて、試験制御装置10は、コンテナ「Web1」からのリクエストの転送先として、「専有=yes」のコンテナ「AP1」を生成して、リクエストを転送する。その後、試験制御装置10は、専有コンテナ「AP1」からのリクエストの転送先として、「専有=no」のコンテナ「DB1」を生成して、リクエストを転送する。
この時点では、フロー制御表15には、「コンテナ=Web1」に対応付けて「ユーザ=ユーザ1、専有=no」が記憶され、「コンテナ=AP1」に対応付けて「ユーザ=ユーザ1、専有=yes」が記憶され、「コンテナ=DB1」に対応付けて「ユーザ=ユーザ1、専有=no」が記憶される。なお、最新アクセス時刻に関しては省略する。
次に、試験制御装置10は、ユーザ2からリクエストを受信すると、転送先である「Web」として「専有=no」のコンテナ「Web1」が起動済みであることから、このコンテナ「Web1」にリクエストを転送する。続いて、試験制御装置10は、コンテナ「Web1」からのリクエストを受信すると、転送先である「AP」としてコンテナ「AP1」が起動済みであるが、コンテナ「AP1」が専有状態であることから、「専有=no」のコンテナ「AP2」を新たに生成して、このコンテナ「AP2」にリクエストを転送する。その後、試験制御装置10は、コンテナ「AP2」からリクエストを受信すると、転送先として「専有=no」のコンテナ「DB1」が起動済みではあるが、DBがユーザ2の専有コンテナ種に設定されていることを検出する。すると、試験制御装置10は、「専有=yes」を設定した新たなDBサーバのコンテナ「DB2」を生成し、このコンテナ「DB2」にリクエストを転送する。
この時点では、フロー制御表15には、「コンテナ=Web1」に対応付けて「ユーザ=ユーザ1,ユーザ2、専有=no」が記憶される。また、フロー制御表15には、「コンテナ=AP1」に対応付けて「ユーザ=ユーザ1、専有=yes」が記憶され、「コンテナ=AP2」に対応付けて「ユーザ=ユーザ2、専有=no」が記憶される。また、フロー制御表15には、「コンテナ=DB1」に対応付けて「ユーザ=ユーザ1、専有=no」が記憶され、「コンテナ=DB2」に対応付けて「ユーザ=ユーザ2、専有=yes」が記憶される。
次に、試験制御装置10は、ユーザ3からリクエストを受信すると、転送先である「Web」としてコンテナ「Web1」が起動済みであるが、Webがユーザ3の専有コンテナ種に設定されていることを検出する。すると、試験制御装置10は、「専有=yes」を設定した新たなWebサーバのコンテナ「Web2」を生成し、このコンテナ「Web2」にリクエストを転送する。続いて、試験制御装置10は、コンテナ「Web2」からリクエストを受信すると、転送先である「AP」として「専有=no」のコンテナ「AP2」が起動済みであることから、このコンテナ「AP2」にリクエストを転送する。その後、試験制御装置10は、コンテナ「AP2」からリクエストを受信すると、転送先として「専有=no」のコンテナ「DB1」が起動済みであることから、このコンテナ「DB1」にリクエストを転送する。
この時点では、フロー制御表15には、「コンテナ=Web1」に対応付けて「ユーザ=ユーザ1,ユーザ2、専有=no」が記憶され、「コンテナ=Web2」に対応付けて「ユーザ=ユーザ3、専有=yes」が記憶される。また、フロー制御表15には、「コンテナ=AP1」に対応付けて「ユーザ=ユーザ1、専有=yes」が記憶され、「コンテナ=AP2」に対応付けて「ユーザ=ユーザ2,ユーザ3、専有=no」が記憶される。また、フロー制御表15には、「コンテナ=DB1」に対応付けて「ユーザ=ユーザ1,ユーザ3、専有=no」が記憶され、「コンテナ=DB2」に対応付けて「ユーザ=ユーザ2、専有=yes」が記憶される。
[効果]
このように、試験制御装置10は、専有のコンテナと共用のコンテナを混在させたシステム環境を生成して、各ユーザに適したテスト環境を提供することができるので、リソースの削減を図りつつ、ユーザの利便性を向上させることができる。
ところで、実施例1−2では専有したいコンテナ種が予め判っていることを前提としたが、場合によっては、どのシーンで専有すべきか特定が難しいこともある。例えば、テストセット実行時に、あるテストケースはWeb層のみ専有が必要で、あるテストケースはDB層のみ専有が必要とするケースがありうる。このような場合、専有指定を事前にユーザが漏れ無く行うことは難しい。
そこで、実施例3では、テストケース実行時において、専有情報を動的に判断する例を説明する。これは、あるテストケースの実行結果と、実行中の経路情報から、テストケース実行のためにあるコンテナ種類は専有すべきかどうかを推測する。
テストケースとは、上述したように、コンテンツ、アプリ、データベーススキーマなどが正常に動作することを確認するために、何らかの操作とそれに対する期待値を記述し、実際の操作の結果と期待値を比較するものである。ここでは、各々のテストケースは、前処理(テストに必要な準備)・テスト操作・後処理(系を元の状態に戻す)を行うものとする。そのため、同時に実行しないかぎりは、いずれのテストをどんな順序で実行しても問題は起きない。なお、テストセットはテストケースの集合である。また、テストケースごとに、一意なIDを振る。ここではT1、T2、・・・、Tnとする。なお、同じ名前のテストケースであっても、変更があるごとに新たなIDを振る。
[利用コンテナの推定]
まず、試験制御装置10は、ユーザによるテストケース実行時に、実行状況を取得する。具体的には、試験制御装置10は、すべてのテストケースについて、実施例2の専有コンテナ種表16にすべてのコンテナを専有として登録する。試験制御装置10は、テストケースT1、T2、T3、・・・、Tnを実行する。
ここで、試験制御装置10は、テストケースが1つでも失敗した場合は、テストケースや対象コードなどの修正が必要なため、ユーザインタフェースを通じユーザに通知して、処理を終了する。また、試験制御装置10は、すべてのテストケースが成功した場合は、テストケース毎の経路をプロキシ実行部21のログから取得する。なお、プロキシ実行部21は、時刻、ユーザ、コンテナ種、テストケースを利用ログに記録する。
図14は、実施例3にかかる利用コンテナの推定を説明する図である。図14に示すように、試験制御装置10は、テストケースを実行すると、「時刻、ユーザ、コンテナ種、テストケース」を有する利用ログを取得する。さらに、試験制御装置10は、テストケースを実行するたびに、「ユーザ、テストケース、状態(開始or終了)、時刻」を有する実行ログをプロキシ実行部21から取得する。
そして、試験制御装置10は、利用ログと実行ログとを照らし合わせて、あるテストケース実行時に利用した利用コンテナ種(テストケース−利用コンテナ種表)を取得する。すなわち、試験制御装置10は、実行ログのあるユーザのあるテストケースの開始から終了時刻の範囲にある利用ログで、合致するユーザのテストケースのコンテナ種を取得する。例えば、実行ログのユーザ1かつテストケースT1について、利用ログで合致するコンテナ種はWebである。別の例では、実行ログのユーザ1かつテストケースT2について、利用ログで合致するコンテナ種はWeb、AP、DBである。
このようにして、試験制御装置10は、テストケースごとに、利用していたコンテナ種は「1」、利用していないコンテナ種は「0」などとして、テストケース−利用コンテナ種表のエントリを生成する。なお、これらのテストケースは、ここでの説明内では以後変更されないとする。変更された場合は、前述のとおり、新しいIDのテストケースとして扱う。
[専有コンテナの推定]
次に、上記テストケース−利用コンテナ種表を用いて、専有コンテナを推定する例を説明する。ここでは、コンテナを共用にして、失敗の度に専有を変更して試行を繰り返すことで、テストケースごとに専有コンテナを推定する。
具体的には、試験制御装置10は、すべてのコンテナを共用としてテストケースを実行する。ここではユーザによる2回目のテストケース実行を待つが、能動的に、試験制御装置10がユーザに代わって実行してもよい。これにより、同じユーザまたは異なるユーザによる他のテストケースの同時実行時に、コンテナが共有される状況が生まれる。テストケース実行を繰り返すうちに、あるテストケースが失敗したら、元々は成功する筈なので、その失敗は共用したことが原因であると判断できる。
共用による失敗を素早く発見するために、あるユーザのテストセット実行時に、テストケース−利用コンテナ種表で同じコンテナ種を使うテストを、積極的に同時に実行してもよい。そして、試験制御装置10は、これらテストで失敗したときに、テストケースごとに成功や失敗を表す成否表(テストケース成否表)を作成する。
図15は、実施例3にかかる専有コンテナの推定を説明する図である。図15に示すように、試験制御装置10は、テストケース成否表で「false」であるテストケースごとに、テストケース−利用コンテナ種表で利用するコンテナ種を取得し、1つの組み合わせを選択して専有とする。例えば、T1は、利用コンテナ種がWebしかないので、Webを専有コンテナに選択する。T2の場合、利用コンテナ種がWeb、AP、DBのすべてなので、2×3−1=7通り存在する。T3の場合、利用コンテナ種がWeb、APを利用するので、2×2−1=3通りとなる。ここで、試験制御装置10は、すでに選んだ組み合わせを再選択しないように、組み合わせの選択順序が一定な選択ロジックにするか、すでに選んだ組み合わせを記憶しておき、それらにない組み合わせを選択するなどすればよい。
この例では、試験制御装置10は、いずれのテストケースについてもWebを選択し、テストケース−専有コンテナ種表のWeb列に「1」を記入する。そして、試験制御装置10は、ユーザによるテスト実行時に、テストケース実行ごとに、テストケース−専有コンテナ種表に専有コンテナ情報を記入または削除する。
図15の例では、試験制御装置10は、テストケース−利用コンテナ種表とテストケース成否表を比べると、テストケースT1のように、Webしか使っていないのに失敗しているのは、Webが共有できないことが原因と特定する。一方で、試験制御装置10は、テストケースT2やT3のように、失敗時に複数のコンテナ種が「1」になるものは、これだけでは原因を特定できない。そこで、試験制御装置10は、失敗したテストケースについて、テストケースが失敗しなくなるまで、すべての専有の組み合わせを試行する。
図16は、実施例3にかかる専有コンテナの推定を説明する図であり、図15の推定の続きである。図16の上図に示すように、試験制御装置10は、テストケースT1については、Webを共有できないことが特定できたので、テストケース−専用コンテナ種表のテストケース「T1」の「Web=1(専有)」を確定する。一方で、試験制御装置10は、テストケースT2とT3については、APを「1(専有)」にした状態で、再度テストを実行する。
このようにして、試験制御装置10は、失敗したテストケースについて専有を変更してテストを繰り返す。この結果、図16の下図に示すように、テストケースT2はAPの専有で成功し、テストケースT3はAPとDBの専有でテストケースが失敗しなくなったとすると、その状態でのテストケース−専有コンテナ種表にしたがって、各テストケースの専有コンテナ種を特定することができる。
[確認処理の流れ]
図17は、実施例3にかかるテストケースの確認処理の流れを示すフローチャートである。つまり、図17では、テストケース自体に問題がないかを確認する処理を説明する。
図17に示すように、試験制御装置10は、処理を開始すると、テストケースを選択し(S301)、成否表に登録されているか否かを判定する(S302)。続いて、試験制御装置10は、成否表に登録されていない場合(S302:No)、すべてのコンテナを専有に設定して(S303)、テストを実行する(S304)。
テストが終了すると、試験制御装置10は、専有設定を解除し(S305)、フロー情報を削除する(S306)。そして、試験制御装置10は、テストが失敗した場合(S307:No)、ユーザに通知する(S308)。
一方、試験制御装置10は、テストが成功した場合(S307:Yes)、未処理のテストケースが有るか否かを判定する(S309)。そして、試験制御装置10は、未処理のテストケースが有る場合(S309:Yes)、S301以降を繰り返す。なお、S302において、選択されたテストケースが成否表に登録されている場合(S302:Yes)、S309を実行する。
そして、試験制御装置10は、未処理のテストケースがない場合(S309:No)、テストケースを1つ選択し(S310)、利用ログや実行ログに基づいて、利用コンテナ種を特定する(S311)。続いて、試験制御装置10は、未処理のテストケースが有る場合(S312:Yes)、S310以降を繰り返し、未処理のテストケースがなくなると(S312:No)、処理を終了する。
[推定処理の流れ]
図18は、実施例3にかかる専有コンテナの推定処理の流れを示すフローチャートである。図18に示すように、試験制御装置10は、テストケースを1つ選択し(S401)、利用するコンテナに専有を設定し(S402)、テストを実行する(S403)。
続いて、試験制御装置10は、実行されたテストが終了すると、専有設定を解除し(S404)、フロー情報を削除し(S405)、テストの成否を記録する(S406)。ここで、未処理のテストケースがある場合(S407:Yes)、S401以降が繰り返される。
一方、未処理のテストケースがない場合(S407:No)、試験制御装置10は、失敗したテストケースを選択し(S408)、当該テストケースが利用する利用コンテナを特定する(S409)。続いて、試験制御装置10は、専有コンテナ種の組み合わせを選択する(S410)。その後、試験制御装置10は、未処理のテストケースがある場合(S411:Yes)、S408以降を繰り返し、未処理のテストケースがない場合(S411:No)、処理を終了する。
[効果]
上述したように、試験制御装置10は、テストケースごとに、テストケース−専有コンテナ種表を自動で作成するので、利用者はテストケース毎の専有設定を行うこと無く、適切な専有設定で動作させることが可能となる。また、これによって共有コンテナが増えるので、リソースの削減率が増える。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。
[コンテナ]
上記実施例では、コンテナを用いてテスト環境を生成する例を説明したが、これに限定されるものではなく、物理サーバや仮想マシン(VM)などを採用することもできる。
[専有情報]
上記実施例では、専有するコンテナを予め設定したり、テストケースから推定したりする例を説明したが、これに限定されるものではない。例えば、専有情報を、ユーザがリクエストに埋め込んだり、プロキシに設定しても良い。例を挙げると、ユーザ1はDBを専有し、ユーザ2はWebとAPを専有することを、HTTP(Hypertext Transfer Protocol)ヘッダに埋め込んだり、プロキシに直接送信元アドレスなどで埋め込み、その情報に従い、プロキシで送信先を制御することもできる。
また、試験制御装置10は、その設定を、以下のようにして自動的に判別してもよい。例えば、試験制御装置10は、あるコンテナCに接続中のユーザ1がいる状態で、別ユーザ2やユーザ3からの新規リクエストがエラーまたはタイムアウトしたときに、コンテナCはユーザ1に専有されていると推測する。このような現象は、コンテナCがシングルスレッド実行で、ユーザ1によりリモートデバッグでステップ実行されているときなどに起こりうる。そして、試験制御装置10は、ユーザ1の接続終了で、専有状態を解除する。
[システム]
また、図2や図9に示した各装置の各構成は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、任意の単位で分散または統合して構成することができる。例えば、プロキシ実行部21と代理処理部23を統合することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPU(Central Processing Unit)および当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
[ハードウェア]
上記試験制御装置10は、例えば、次のようなハードウェア構成を有するコンピュータにより実現することができる。図19は、ハードウェア構成例を説明する図である。図19に示すように、試験制御装置10は、通信インタフェース10a、HDD(Hard Disk Drive)10b、メモリ10c、プロセッサ10dを有する。
通信インタフェース10aの一例としては、ネットワークインタフェースカードなどである。HDD10bは、図3等に示した各種表を記憶する記憶装置である。
メモリ10cの一例としては、SDRAM(Synchronous Dynamic Random Access Memory)等のRAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ等が挙げられる。プロセッサ10dの一例としては、CPU、DSP(Digital Signal Processor)、FPGA(Field Programmable Gate Array)、PLD(Programmable Logic Device)等が挙げられる。
また、試験制御装置10は、プログラムを読み出して実行することで試験実行方法を実行する情報処理装置として動作する。つまり、試験制御装置10は、プロキシ実行部21、設定部22、代理処理部23、コンテナ起動部24、コンテナ破棄部25と同様の機能を実行するプログラムを実行する。この結果、試験制御装置10は、プロキシ実行部21、設定部22、代理処理部23、コンテナ起動部24、コンテナ破棄部25と同様の機能を実行するプロセスを実行することができる。なお、この他の実施例でいうプログラムは、試験制御装置10によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク(FD)、CD−ROM、MO(Magneto−Optical disk)、DVD(Digital Versatile Disc)などのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することができる。
10 試験制御装置
11 通信制御部
12 記憶部
13 利用構成表
14 コンテナ情報表
15 フロー制御表
16 専有コンテナ種表
20 制御部
21 プロキシ実行部
22 設定部
23 代理処理部
24 コンテナ起動部
25 コンテナ破棄部

Claims (7)

  1. 複数のコンポーネントを有するシステムの改版を行うユーザごとに、前記改版で利用されるコンポーネントの種別と前記改版で利用されるコンポーネント間の接続関係とを対応付けた利用構成表を記憶する記憶部と、
    端末装置からリクエストを受信した場合、当該端末装置のユーザに対応付けられる前記利用構成表に基づいて、前記リクエストの転送先となるコンポーネントの種別を特定する特定部と、
    特定された種別に対応するサーバ装置が起動中の場合、前記リクエストを前記サーバ装置に転送し、前記サーバ装置が未起動の場合、該当するサーバ装置を起動して、起動させたサーバ装置に前記リクエストを転送する転送制御部と
    を有することを特徴とする情報処理装置。
  2. 前記転送制御部は、予め指定されたテスト環境上で、特定された種別に対応するコンテナがいずれかのユーザに対して起動されている場合、前記リクエストを前記コンテナに転送し、前記コンテナがいずれのユーザに対しても起動されていない場合、該当するコンテナを前記テスト環境上に起動して、起動させたコンテナに前記リクエストを転送することを特徴とする請求項1に記載の情報処理装置。
  3. 前記テスト環境上で一定時間リクエストが転送されなかったコンテナ、または、前記ユーザによって利用の終了が通知されたコンテナを、前記テスト環境が削除して、当該コンテナに使用されていたリソースを解放する削除部をさらに有することを特徴とする請求項2に記載の情報処理装置。
  4. 前記ユーザごとに、専有するコンポーネントの種別を記憶する専有記憶部と、
    前記専有記憶部に記憶される情報に基づいて、前記リクエストの転送先となるコンポーネントの種別が専有対象か否かを判定する判定部とをさらに有し、
    前記転送制御部は、予め指定されたテスト環境上で、前記サーバ装置が起動中かつ前記サーバ装置がいずれのユーザにも専有されていない場合、前記リクエストを前記サーバ装置に転送し、前記サーバ装置が未起動かつ前記専有対象である場合、該当するサーバ装置を前記テスト環境上で起動して、起動させたサーバ装置に前記リクエストを転送するとともに他のユーザから前記サーバ装置へのリクエストの転送を抑制し、前記サーバ装置が未起動かつ前記専有対象ではない場合、該当するサーバ装置を前記テスト環境上で起動して、起動させたサーバ装置に前記リクエストを転送することを特徴とする請求項1に記載の情報処理装置。
  5. 前記ユーザごとの各テストケースを実行して、各テストケースで利用するコンポーネントを特定して、各テストケースの利用コンポーネントの一覧を生成する生成部と、
    前記各テストケースから複数のテストケースを選択し、前記複数のテストケースそれぞれが利用するコンポーネントを専有させた状態で、前記複数のテストケースを実行して実行結果を生成する生成部と、
    前記複数のテストケースをそれぞれに対応する前記利用コンポーネントの一覧と、前記実行結果とを比較して、前記複数のテストケースをそれぞれについて、専有するコンポーネントを特定して、前記専有記憶部に格納する特定部とをさらに有することを特徴とする請求項4に記載の情報処理装置。
  6. コンピュータが、
    複数のコンポーネントを有するシステムの改版を行うユーザごとに、前記改版で利用されるコンポーネントの種別と前記改版で利用されるコンポーネント間の接続関係とを対応付けた利用構成表を記憶部に記憶し、
    端末装置からリクエストを受信した場合、当該端末装置のユーザに対応付けられる前記利用構成表に基づいて、前記リクエストの転送先となるコンポーネントの種別を特定し、
    特定された種別に対応するサーバ装置が起動中の場合、前記リクエストを前記サーバ装置に転送し、前記サーバ装置が未起動の場合、該当するサーバ装置を起動して、起動させたサーバ装置に前記リクエストを転送する
    処理を実行することを特徴とする試験実行方法。
  7. コンピュータに、
    複数のコンポーネントを有するシステムの改版を行うユーザごとに、前記改版で利用されるコンポーネントの種別と前記改版で利用されるコンポーネント間の接続関係とを対応付けた利用構成表を記憶部に記憶し、
    端末装置からリクエストを受信した場合、当該端末装置のユーザに対応付けられる前記利用構成表に基づいて、前記リクエストの転送先となるコンポーネントの種別を特定し、
    特定された種別に対応するサーバ装置が起動中の場合、前記リクエストを前記サーバ装置に転送し、前記サーバ装置が未起動の場合、該当するサーバ装置を起動して、起動させたサーバ装置に前記リクエストを転送する
    処理を実行させることを特徴とする試験実行プログラム。
JP2016051626A 2016-03-15 2016-03-15 情報処理装置、試験実行方法および試験実行プログラム Pending JP2017167763A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016051626A JP2017167763A (ja) 2016-03-15 2016-03-15 情報処理装置、試験実行方法および試験実行プログラム
US15/423,992 US20170270031A1 (en) 2016-03-15 2017-02-03 Information processing apparatus, test execution method, and computer-readable recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016051626A JP2017167763A (ja) 2016-03-15 2016-03-15 情報処理装置、試験実行方法および試験実行プログラム

Publications (1)

Publication Number Publication Date
JP2017167763A true JP2017167763A (ja) 2017-09-21

Family

ID=59846954

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016051626A Pending JP2017167763A (ja) 2016-03-15 2016-03-15 情報処理装置、試験実行方法および試験実行プログラム

Country Status (2)

Country Link
US (1) US20170270031A1 (ja)
JP (1) JP2017167763A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114745064A (zh) * 2022-03-11 2022-07-12 福州华纳信息科技有限公司 一种用于dtu的稳定性测试方法及设备

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111382065B (zh) * 2018-12-29 2024-02-23 贵阳忆芯科技有限公司 基于测试模板的验证流程管理系统及其方法
CN110727500B (zh) * 2019-09-27 2022-10-25 上海依图网络科技有限公司 系统中的功能模块的集成方法、系统、设备及介质
CN112214413B (zh) * 2020-10-27 2024-01-16 北京字节跳动网络技术有限公司 一种应用程序的测试方法、装置、设备及存储介质

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004112348A1 (en) * 2003-06-18 2004-12-23 Telefonaktiebolaget Lm Ericsson (Publ) Method, system and apparatus to support mobile ip version 6 services
US7552424B1 (en) * 2003-10-06 2009-06-23 Sap Ag Apparatus and method for identifying a system under test
US7409497B1 (en) * 2003-12-02 2008-08-05 Network Appliance, Inc. System and method for efficiently guaranteeing data consistency to clients of a storage system cluster
US7698334B2 (en) * 2005-04-29 2010-04-13 Netapp, Inc. System and method for multi-tiered meta-data caching and distribution in a clustered computer environment
US8181159B2 (en) * 2007-03-29 2012-05-15 Microsoft Corporation Test automation using virtual machines
JP5298763B2 (ja) * 2008-10-22 2013-09-25 富士通株式会社 仮想システム制御プログラム、方法及び装置
JP5298764B2 (ja) * 2008-10-22 2013-09-25 富士通株式会社 仮想システム制御プログラム、方法及び装置
US8161076B1 (en) * 2009-04-02 2012-04-17 Netapp, Inc. Generation and use of a data structure for distributing responsibilities among multiple resources in a network storage system
US9888067B1 (en) * 2014-11-10 2018-02-06 Turbonomic, Inc. Managing resources in container systems
US9247312B2 (en) * 2011-01-05 2016-01-26 Sonic Ip, Inc. Systems and methods for encoding source media in matroska container files for adaptive bitrate streaming using hypertext transfer protocol
US8862933B2 (en) * 2011-02-09 2014-10-14 Cliqr Technologies, Inc. Apparatus, systems and methods for deployment and management of distributed computing systems and applications
US8639971B1 (en) * 2011-02-17 2014-01-28 Scale Computing Condition detection and reporting in complex systems
US8862940B2 (en) * 2012-02-14 2014-10-14 Microsoft Corporation Integrated fuzzing
US8887056B2 (en) * 2012-08-07 2014-11-11 Advanced Micro Devices, Inc. System and method for configuring cloud computing systems
US20170052807A1 (en) * 2014-02-20 2017-02-23 Telefonaktiebolaget Lm Ericsson (Publ) Methods, apparatuses, and computer program products for deploying and managing software containers
US9432369B2 (en) * 2014-04-16 2016-08-30 Bank Of America Corporation Secure data containers
US10261814B2 (en) * 2014-06-23 2019-04-16 Intel Corporation Local service chaining with virtual machines and virtualized containers in software defined networking
US20160342801A1 (en) * 2014-06-25 2016-11-24 defend7, Inc. Containerized security as a service
US10223339B2 (en) * 2014-08-15 2019-03-05 Open Text Corporation Web-intrinsic interactive documents
US9600312B2 (en) * 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9116768B1 (en) * 2014-11-20 2015-08-25 Symantec Corporation Systems and methods for deploying applications included in application containers
US9775008B2 (en) * 2015-01-14 2017-09-26 Kodiak Networks, Inc. System and method for elastic scaling in a push to talk (PTT) platform using user affinity groups
US9916233B1 (en) * 2015-03-27 2018-03-13 Amazon Technologies, Inc. Using containers for update deployment
US20160350081A1 (en) * 2015-05-27 2016-12-01 Runnable Inc. Automatic container definition
US10482004B2 (en) * 2015-10-16 2019-11-19 Successfactors, Inc. Test data framework
US9934073B2 (en) * 2015-10-23 2018-04-03 Futurewei Technologies, Inc. Extension of resource constraints for service-defined containers
US10241674B2 (en) * 2015-12-11 2019-03-26 Vmware, Inc. Workload aware NUMA scheduling
US10261782B2 (en) * 2015-12-18 2019-04-16 Amazon Technologies, Inc. Software container registry service
US10002247B2 (en) * 2015-12-18 2018-06-19 Amazon Technologies, Inc. Software container registry container image deployment

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114745064A (zh) * 2022-03-11 2022-07-12 福州华纳信息科技有限公司 一种用于dtu的稳定性测试方法及设备

Also Published As

Publication number Publication date
US20170270031A1 (en) 2017-09-21

Similar Documents

Publication Publication Date Title
US10178184B2 (en) System and method for session handling in a multitenant application server environment
CN113766035B (zh) 一种业务受理及共识的方法及装置
CN107302604B (zh) 基于Kubernetes的PaaS平台域名配置方法及装置和电子设备
JP6615796B2 (ja) マルチテナントアプリケーションサーバ環境におけるパーティションマイグレーションのためのシステムおよび方法
US11288253B2 (en) Allocation method and device for a distributed lock
US20110296069A1 (en) Fabric Based Lock Manager Service
JP2017167763A (ja) 情報処理装置、試験実行方法および試験実行プログラム
US20060123121A1 (en) System and method for service session management
US11032436B2 (en) Information processing apparatus, information processing system, and non-transitory computer readable medium storing program for workflow generation
EP2754059A2 (en) Clustered client failover
JP2019502186A (ja) グローバル情報を取得、処理および更新するためのシステムおよび方法
US20210068045A1 (en) Network repository function controller
US9514176B2 (en) Database update notification method
CN106712981A (zh) 一种节点变更通知方法及装置
CN117729217A (zh) 云平台及其提供的对象存储服务的桶管理方法
US10310841B2 (en) System and method for handling lazy deserialization exceptions in an application server environment
JP2017027496A (ja) コンテナのマイグレーションシステム及び方法
CN114328097A (zh) 一种文件监控方法、装置、电子设备和存储介质
US10257285B2 (en) Resource migration method and apparatus
CN110471906B (zh) 数据库切换方法、装置及设备
CN111506388B (zh) 容器性能探测方法、容器管理平台及计算机存储介质
WO2019053636A1 (en) SERVICE PATH IN VARIANT FOR SERVICE APPLICATION
JP4432733B2 (ja) 連携処理装置及びシステム
CN106855816B (zh) 终端中应用程序的资源文件加载方法和装置
CN107203915B (zh) 数据存储方法及装置