DevOpsにおけるCI/CDパイプライン上でのテスト自動化戦略 Vol.3

Azure DevOpsやAWS CodePipelineを利用したCI/CDパイプライン上でテストを自動化する場合のベストプラクティスをご紹介する記事です。

はじめに

本記事では、DevOpsにおけるAPI連携するシステムに対してのテスト自動化戦略にフォーカスした内容となっています。一般的にDevOpsでは、Azure DevOpsやAWS CodePipelineといったCI/CDサービスを活用して、コードのコミット後からリリースまでの様々なプロセスが自動化されます。このとき、テストに掛かる工数を削減するために、テストの実行を自動化するアプローチを採用することも多いですが、適切なテスト手法を選択しなければ思わぬ落とし穴に引っ掛かる場合もあります。

そこで、DevOpsにおけるテスト時に起こり得る課題についてご紹介しつつ、APIテスト自動化/サービス仮想化ツール「SOAtest/Virtualize」を用いたソリューションについてお届けします。

次のような方におすすめです。
  • DevOpsにおけるテスト手法をお探しの方
  • 現状のDevOpsにおけるテスト手法に課題を感じている方
  • 今後、DevOpsでのテスト自動化を検討している方

以前の記事では、CI/CDパイプライン上でテストを自動化する際に起こり得る課題についてご紹介していますので、気になる方はDevOpsにおけるCI/CDパイプライン上でのテスト自動化戦略 Vol.2もご確認ください。

DevOpsにおけるフロントエンドのテスト課題に対するソリューション

接続できないAPIに成り代わるサービス仮想化

Azure DevOpsやAWS CodePipeline等を利用し、CI/CDパイプラインからフロントエンドのテストを自動化する仕組みを構築したとしても、思うようにテストが効率化されない場合もあります。これは、フロントエンドのアプリケーションと接続しているAPIが利用できないことで、フロントエンドのテストも実施できなくなることが大きな原因の一つです。

この場合、バックエンドのAPIに成り代わって本物のAPIのように振る舞う「サービス仮想化」を活用することで解決できます。サービス仮想化とは、一般的には「スタブ」や「モックサーバー」といった名称で呼ばれるもので、接続できないAPIの代わりに、疑似環境として用いることができるソリューションを意味します。これで、バックエンドの状況に依存せずに、フロントエンドのUIアプリケーションのテストをいつでも実施することができます。テストを実施するために毎回本物のAPIを利用したり、他社とのスケジュール調整を行う必要もなくなりますので、外部の要因でテストが待たされるという課題を解決することができます。

特に、Azure DevOpsやAWS CodePipelineで構築したCI/CDパイプラインでは、コードをコミットするごとにテストを実行することが一般的ですので、日々テストを実施することになります。そのため、継続的にテスト実施し品質を日々確保していくためには、サービス仮想化でいつでもテストが可能な環境を構築しておくことが重要となります。
サービス仮想化を活用すると、システム連携を伴うテストを実施する前に早期のバグ検出と品質の作り込みが可能になり、後続の工程で重大な不具合が発生しスケジュールが遅延するリスクを減らすことにも繋がります。

特にサービス仮想化ツール「Parasoft Virtualize」では、工数を掛けずに高性能・高機能な疑似環境を作成することができます。
次項では、Virtualizeの特長について簡単にご紹介しています。

API利用者の課題を解決するサービス仮想化ツール「Parasoft Virtualize」

サービス仮想化ツール「Parasoft Virtualize」では、高性能・高機能なモックサーバー/スタブを効率的に作成できます。Virtualizeは受信したリクエストを賢く判断し、応答すべきAPIに成り代わって適したデータを返すことができますので、あたかも本物のAPIを利用しているかのようにテストで活用することができます。

CSVやEXCELなどで用意したデータソースをVirtualizeに取り込めば、用意されたデータの分だけバリエーションに富んだ応答も可能です。 VirtualizeにはAPIの疑似環境を自動生成する機能も用意されています。Swagger/OpenAPIなどのAPIのIF定義ファイルを取り込んで疑似環境を自動生成することができますので、APIがまだ作成されていない新規開発等の場面で活用できます。また、API連携で送受信するトラフィックをキャプチャして疑似環境を自動生成することも可能ですので、既存のAPIが利用できる場合に特に有効な方法となります。

さらに、設定はすべてGUI上で行いますので直感的な操作や容易にメンテナンスも可能にします。Virtualizeを利用することで、さまざまな理由で本物のAPIが利用できない状況であっても、APIを利用しているかのようなテストをいつでも実施することができます。

DevOpsにおけるバックエンドのテスト課題に対するソリューション

CI/CDパイプラインから継続的にAPIテストを実施

API連携を伴うシステムのバックエンドをテストする際には、APIテストの自動化ソリューションが有効です。APIを利用するアプリケーションからのリクエスト電文をシミュレートしつつ、それに対するレスポンス電文の検証までを自動化することで、工数を掛けることなくAPテストを実施することができます。また、一度作成したAPIのテスト資産を繰り返し利用して継続的に回帰テストを行うことで、APIの品質を高めることに繋がります。このように、フロントエンドとの結合テストを実施する前にAPIを直接テストし品質を十分に確保することで、後続の工程で重大な問題が発生するリスクを抑えることができます。

特にDevOpsにおいては、Azure DevOpsやAWS CodePipelineで構築したCI/CDパイプライン上で継続的にAPIテストを実施することが一般的です。コードをコミットするごとにテストを実行することで、日々APIのテストを実施してフィードバックを得ることができます。また、APIのテスト資産を一度作成してしまえば、その後は回帰テストの際に繰り返し活用することができます。故に、DevOpsにおけるAPIテストでは、特に回帰テストを効率的に実施しつつ品質を日々確保することが可能となります。

また、APIテストを実施する際にも、連携している外部のサービス等が利用できないことでテストが思うように実施できない場合もあります。この場合も、Virtualizeを利用したサービス仮想化で解決することができます。Virtualizeで連携しているサービスの疑似環境を作成することで、いつでもAPIテストの実施が可能な環境を用意することができ、外部の要因でテストが待たされるといった課題の解決に繋がります。

特にAPIテスト自動化ツール「Parasoft SOAtest」を利用すると、工数を掛けずに必要な機能を備えたAPIのテストドライバーを作成することができます。
次項では、SOAtestの特長について簡単にご紹介しています。

API開発者の課題を解決するAPIテスト自動化ツール「Parasoft SOAtest」

APIテスト自動化ツール「Parasoft SOAtest」は、APIのテストドライバーを作成する機能を持ち、APIへのリクエスト電文(テスト電文)をシミュレートします。テスト実行後にAPIから返されるレスポンス電文の検証も自動で行いますので、APIテストを自動化できます。APIが返すレスポンスが変更された場合も、受信したレスポンス電文を自動で期待値として設定する機能を用いることで、メンテナンス面に負担を掛けることなく運用できます。

ほかにも、CSVやEXCELで用意したデータソースをテストドライバーに取り込んでテストのバリエーションを増やしたり、複数のAPIを順番に呼び出すシナリオテストなども、GUI上の設定のみで容易に実施することができます。 また、SOAtestではテストドライバーを自動生成することも可能です。Swagger/OpenAPIなどのAPIのIF定義ファイルを取り込んでテストドライバーを自動生成することもできますので、APIを新規開発する場面で活用できます。既存のAPIが利用できる状況であれば、API連携で送受信するトラフィックをキャプチャし、APIのシナリオテストを自動生成することも可能です。

SOAtestには、APIテストの機能以外にも、データベースの検証を行う機能やAPIのセキュリティテスト、APIの性能・負荷テストといった機能も搭載されており、APIに関連する様々な観点でのテストを自動化することを可能にします。

まとめ

本記事では、DevOpsにおけるテスト課題に対して、サービス仮想化ツール「Parasoft Virtualize」とAPIテスト自動化ツール「Parasoft SOAtest」を利用したソリューションをご紹介しました。実は、この2つのツールは、APIテスト自動化/サービス仮想化ツール「Parasoft SOAtest/Virtualize」という名称で1ツールに集約されており、フロントエンドとバックエンドの各テスト対象を独立させてテストすることで、DevOpsにおけるテスト時の課題を1ツールで解決することを可能にします。

SOAtest/Virtualizeは非常に多機能であり、さまざまなユースケースで活用いただけますので、ご興味がございましたら、APIテスト自動化およびサービス仮想化のページもご覧ください。
APIテストまるわかりガイドダウンロード

APIのテスト自動化とサービス仮想化を1ツールで SOAtest/Virtualizeに
関するお問い合わせ

  • テクマトリックス株式会社
    東京本社

    ソフトウェアエンジニアリング事業部

    03-4405-7853

メールでのお問い合わせ
parasoft-info@techmatrix.co.jp

お問い合わせ

製品についてやテクマトリックスについてなど、
こちらよりお気軽にお問い合わせいただけます。