サービス仮想化は、テストの際に自由に扱うことのできない依存先サービスをシミュレートするのに役立つ最新技術であり、テストを自動化するうえで常に鍵となる要素です。(サービス仮想化とは?詳細はこちらをご覧ください。)
サービス仮想化を利用して、安定的で予測可能なテスト環境を作成すると 、テスト自動化の信頼性と正確さが向上します。ところで、市場にはさまざまなアプローチとツールがあります。ROI(費用対効果)を最大化するには、どのような機能を持つサービス仮想化ソリューションを選ぶべきでしょうか?
サービス仮想化ツールの概要
最適なサービス仮想化ツールとはどんなものでしょうか?私はよく便宜的に、サービス仮想化ツールを大きく次の2つに分類します。 簡易ツール そして エンタープライズツールです。
簡易サービス仮想化ツール
無料またはオープンソースのツールは、その場その場で臨機応変に使い始められるため、手始めとして最適なツールであり、サービス仮想化の利点をすばやく実感できます。簡易ツールの例としては、Traffic Parrot、 Mockito などがあります。これらのソリューションは、通常、個々の開発チームがサービス仮想化を「試しに」やってみようというとき、特定のプロジェクトに対して、あるいは特定の問題の解決策として導入します。
これらのツールは、サービス仮想化の概要を理解するのに役立ち、個々のユーザーが複数のチーム(さらには組織全体)にツールを導入しようと提案する際、説得の材料になります。いっぽう、これらの簡易ツールは機能や使いやすさが不足しているため、技術寄りではないユーザーはうまく使いこなせず、組織全体の支持を得るのが難しいという欠点があります。さらに、これらのツールは短期的には無料ですが、保守やカスタマイズを考え始めると高価になります。
エンタープライズサービス仮想化ツール
毎日アクセスして多数の仮想サービスを作成する必要があるパワーユーザーに対しては、ベンダーがサポートするツールを利用したより重装備のツール構成も可能です。
アナリストTheresa Lanowitzによる最新のエンタープライズ規模のサービス仮想化ツールの比較(英文)を読むと、すべてのツールの概要を把握できます。左に表示されているのが、Theresaによるサマリーチャートです。
これらのエンタープライズグレードのソリューションは、デプロイメントやチームでの使用を念頭に、それらと連携するように設計されています。組織が継続的インテグレーションおよびDevOpsパイプラインの一部としてサービス仮想化を実装する場合、エンタープライズソリューションはネイティブプラグインを介してビルドパイプラインに緊密に統合されます。さらに、これらのソリューションは、パフォーマンスを維持しながら大量のトラフィックを処理できます。これらのソリューションのマイナス面は、もちろんコストです。エンタープライズソリューションとそれに付随するカスタマーサポートは、無料とはかけ離れています。
最適なサービス仮想化ツールを選択するには
ほとんどの組織は、簡易ツールやエンタープライズツールといった特定のツールカテゴリに自分の組織を当てはめるというよりは、ソリューションに対してそれぞれ必須のニーズを持つところから始めるでしょう。求めるものが特定のプロトコルのサポートであろうと、多くのアプリケーションの変更を効率的に処理する方法であろうと、最適なサービス仮想化ソリューションを選択する一番の方法は、必要となる可能性があるさまざまな機能を調べて、候補のツールがそれらの機能を備えているかを確認することです。
私はいつもお客様には、さまざまなソリューションの漠然とした長所や短所に着目するのではなく、チームやプロジェクトにとって具体的に何が必要かを認識するのが重要だとアドバイスしています。また、当面は問題にならないが、将来的に、テストの成熟度とユーザーの利用が拡大したときにサービス仮想化ソリューションに必要になる機能領域を特定することも重要です。では、具体的には、どのような機能がキーとなるでしょうか?
サービス仮想化の主要な機能
使いやすさとコア機能:
- スクリプトを作成せずにツールを使用できること
- 実際のサービスが利用可能になる前でもすばやく仮想サービスを作成する機能
- インテリジェントな応答条件
- データ駆動型の応答
- サービスを再利用する機能
- カスタム拡張フレームワーク
- 認証とセキュリティのサポート
- カスタマイズ可能なパフォーマンス環境
- クラスタリング/スケーリングのサポート
ワークフローを最適化する機能:
- 記録と再生
- AIを活用したアセットの作成
- テストデータの管理/生成
- データの再利用
- サービステンプレート
- メッセージルーティング
- 実システムへのフェールオーバー
- ステートフルな動作エミュレーション
自動化機能:
- CI統合
- ビルドシステムプラグイン
- コマンドライン実行
- DevOps統合のためのオープンAPI
- クラウドサポート(EC2、Azure)
管理および保守サポート:
- ガバナンス
- 環境管理
- モニタリング
- 変更管理プロセス
- オンプレミスおよびブラウザーベースのアクセス
サポートされるテクノロジー:
- REST APIの仮想化
- SOAP APIの仮想化
- 非同期APIメッセージング
- MQ / JMS仮想化
- IoTおよびマイクロサービスの仮想化
- データベースの仮想化
- ウェブページの仮想化
- ファイル転送の仮想化
- メインフレームおよび固定長
- EDI仮想化
- Fix、 Swift など
Parasoftのサービス仮想化ソリューションガイドでは、サービス仮想化を始めたばかりの(あるいはマスターしつつある)ユーザーがサービス仮想化をひととおり理解するのに役立つよう、これらすべての機能を詳細に説明しています。上に挙げられているサービス仮想化機能(英文)を網羅しており、現在最も重要な機能と、今後役立つ可能性のある機能を識別し判断するのに役立ちます。ガイドを読むには、 ここ(英文)をクリックしてください:
(この記事は、開発元Parasoft社 Blog 「Key Capabilities to Choose the Best Service Virtualization Tool For Your Team」2019年7月31日の翻訳記事です。)