TOP>企業情報>コラム>技術情報>品質とテスト効率化「サービス仮想化」というアプローチ

品質とテスト効率化
「サービス仮想化」というアプローチ

矢野 英也

株式会社アシスト
システムソフトウェア事業部


大きなシステム障害が報告される度に話題となるアプリケーション品質維持/向上。その度にテストの重要性が再認識されます。今回はテスト環境構築における課題に着目し、解決策の1つである「サービス仮想化」について述べたいと思います。

1. サービス仮想化が求められる背景


 サービス仮想化が必要とされる背景には、「求められる対応スピード」「環境の複雑さ」があると考えられます。

【求められる対応スピード】
 グローバルな市場における競争力確保とグループ経営の強化は多くの大手企業にとって重要な戦略課題となっています。そのような中でIT部門に求められているのはシステムでの貢献。それも個々の事業の差別化要因やスピードを阻害することなく行わなければなりません。

 システム開発において、すべてのサービス(コンポーネント)の開発を行うことは、時間的制約の中では難しく、必然的に既存のシステムとの連携(ラッピングして再利用)やSaaSなど、出来合いのサービス(コンポーネント)の利用が多くなってきます。

環境の複雑さ

 前述したように、企業アプリケーション開発では、一部機能をSaaSのような外部サービスを利用したり、メインフレームや基幹系システムとの連携、パートナーのアプリケーションとの連携など、連携するシステムの種類や数が多く、テスト環境の準備が困難になっている現状が多く見られます(図1)。


 図1に示されるように、環境が複雑でリリース・サイクルも短くなるため、並行開発を余儀なくされます。しかし接続先のシステムやコンポーネントが未完成、接続時間に制限がある、SaaS上にあるため課金される、などの理由から思うようなテスト環境の構築は容易ではありません。

 そのため必然的に接続先に影響されないテスト環境の準備方法や、呼び出しに対して応答を返すだけの擬似的なものが求められてきます。これがサービス仮想化登場の背景と考えています。

2. スタブとサービス仮想化


 ここまで聞くと、スタブを思い浮かべる方もいらっしゃるかもしれません。サービス仮想化はこのスタブの適用範囲をさらに拡げ、効率化したものとお考えください。

 まずここでスタブについての説明をします。「JSTQB用語集」には、スタブは以下のように説明されています。

スタブ・・・特定のコンポーネント(仮にAと呼ぶ)をテストするため、A に呼び出される(特定目的のための最小限度の)コンポーネント。スタブがないと、実物ができるまで、開発やテストを待たねばならない。スタブは、最終的には、呼び出されるコンポーネントで置き換える。


 大規模なシステム開発では、プログラムの開発状況が機能ごとに異なってくることがよくあり、虫食い状態のままで機能検証ができないことがあります。そのような場合、擬似的な動作をするプログラムを作成して、先行しているプログラムの検証をすることがあり、この擬似的な動作をするプログラムをスタブと呼びます。

 では、スタブ開発とサービス仮想化では何が違うのでしょうか。スタブ開発とサービス仮想化の違いは、以下の3点にあると考えます。

(1)必要とされる開発スキル
 スタブ開発には高度な開発スキルが必要とされるため、スタブ開発専用の会社が存在したり、スタブ開発を別工数で見積もることもあります。一方、サービス仮想化は、専用ツールを利用することでGUIで簡単にサービスを作成できます。そのためQA担当者、またはテスト担当者がコーディング力を必要とせずに開発が可能です。

(2)網羅する範囲
 スタブの開発にも相応の工数を要することから、スタブは正常系に特化することが多く、異常系については対応する範囲が限定的になることがあります。また、応答も一定の値に限定されていることがほとんどです。一方、サービス仮想化は、その作成の容易さから正常系、異常系、応答の変化等、網羅するテスト・ケースの範囲が拡がります。

(3)メンテナンス性
 スタブは一度作ったら使い捨ての場合が多く、仕様変更があった場合は対応できないケースも多く見受けられます。一方、サービス仮想化は作成の容易さから度重なる仕様変更にも対応できます。

 このようにスタブと比べて、より実環境に近いテスト環境を提供することができ、またツールを使うことでサービス仮想化も簡単に実現可能なため、よりスピーディ、かつ品質の高いサービスの提供が期待できます。

3. サービス仮想化ツール


 ツールを提供しているベンダーはCA Technologies、Hewlett-Packard、IBM、Parasoftなどが挙げられます。いずれのツールもシステム間の通信を実環境からキャプチャしたり、実環境がない場合は、WSDLファイルなどの定義ファイルから動作を設定します。対応プロトコルはHTTP/HTTPS、SOAP、REST、MQなど様々で、ツールによっては、独自プロトコルに対応できるものもあります(図2)。


4. 導入効果


 サービス仮想化を用いることで以下の効果を得ることができると考えます。

◎インフラコストの節約
 テスト環境構築のために本番環境同等のハードウェアを用意したり、サーバ仮想化で環境を用意する場合に比べてテスト環境インフラにかかるコストを節約することができます。

◎テストの網羅性アップ
 外部接続の制約によって制限されていたテストが実施できるようになり、またスタブに比べて実施できるテスト・ケース(正常/異常)が増えるため、テストの網羅性アップが期待できます。
 
◎市場投入までの時間短縮
 他システムとの連携を考慮せず、テスト環境の構築を迅速化できるため、従来より早くテストに取り掛かることができ、顧客に対して迅速に新サービスの提供を行うことができるようになります(図3)。


5. 日本におけるサービス仮想化


 海外ではアジャイル開発を取り入れ、システム更新頻度の高い企業、システム連携が多いシステム開発をしている企業などが、先行してサービス仮想化を採用しています。具体的には金融、テレコム、流通業界です。一方、日本ではまだ浸透していないのが現状でしょう。

 しかし、品質の重要性は昔も今も、またこれからも変わることはありません。開発手法や連携するシステムの数、種類によってサービス仮想化の適用効果は変わりますが、開発期間と品質がトレードオフにならないよう、今後も最重要課題の1つとして品質を保証できるような取り組みがなされるべきだと考えます。

 現状、日本におけるエンタープライズ開発では、ツールによってテスト効率やテスト品質を改善し、システム品質を向上させる取り組みが海外と比較して遅れていると言っても過言ではありません。そのため、サービス仮想化の適用はまだ一部の分野にとどまっていますが、開発スタイルの変化によって徐々に拡大すると捉えています。弊社でも、サービス仮想化をはじめとして、テスト自動化、テスト・マネジメントなどテスト分野での支援を今後もさらに強化していきたいと考えています。

株式会社アシスト ソフトウェア・リサーチ・センターについて

ソフトウェア・リサーチ・センターはアシストの組織を横断するメンバーから構成され、アシストの特徴を活かした中立的な立場でのソフトウェア製品や市場動向の調査を行っています。



※本稿は弊社が信頼できると判断した情報源に基づいて執筆していますがその情報の正確性、完全性を保証するものではありません。また本稿に記載された、弊社意見、予測などは本稿作成時点における弊社の判断であり今後予告なく変更されることがあります。
※記載した製品名および社名は、各社の商標または登録商標です。


Facebookで情報をお届けしています

Facebookでは、アシストの「今」を週3回のペースでお届けしています。「めげない、逃げない、あまり儲けない」を合言葉に日々頑張っておりますので、応援よろしくお願いします。



ページの先頭へ戻る