支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • 回帰テストツールについて

概要

回帰テストはコードの改訂、更新、または最適化の後、アプリケーションが意図したとおりに動作し続けることを検証するソフトウェアテストの一種です。本記事では、回帰テストを実施するためのツールを紹介させていただきます。

回帰テストツールについて

回帰テストを実施するためのツールについていくつか説明させていただきます。
厳密には回帰テストツールとして分類される個別のテストツールはなく、テストツールの機能として回帰テストを効率化するための機能を搭載しているというケースがほとんどです。回帰テストスイートを自動化するために、多くのテスト自動化ツールが利用されている点も特徴です。 また、これらはプロジェクトの状況や目的に応じて選択されます。
いくつかの回帰テストツールの手法と具体的なツールの機能について説明させていただきますので、参考にしてみてください。

API負荷

API負荷の高いアプリケーションにおけるテストについて説明させていただきます。
マイクロサービスベースの戦略を支持するようになっているため、APIは最新のソフトウェア開発の基盤であり、コントラクト主導のテストが人気を集めています。
これは、テストフェーズのプロセスの後半で問題を特定するのではなく、最初にリグレッションの問題がリポジトリにコミットされるのを回避できるためです。 マイクロサービスの使用において、サービス間の統合ポイントがバグの温床になるという点については周知の通りです。コントラクトテストは、コンシューマが定義したコントラクトに基づいてテストを実施するテスト手法です。
コントラクトテストをUIテストスイートに追加することで、以下のようなメリットを獲得することが可能です。

一点目が、完全に統合されたテストの信頼性を維持しながら、エンドツーエンドのテストを分離して実行できることです。
二点目が、サービスプロバイダーは依存するアプリケーションをより安定させるために、展開する前にAPIの変更を確認することができる点です。
三点目が、コンシューマーアプリがAPIサービスとどのように対話するか視覚化され、結果としてよりよく理解されることです。
四点目が、コントラクトのバージョン管理とタグ付けにより、環境間で安全にデプロイできることです。 テストを分離して実行すると、テストの実行が速くなり、フィードバックループが短くなり、専用の統合環境に依存する必要がなくなり、環境コストが削減されます。
では、いくつか具体的なサービスを紹介させていただきます。

Specmatic

Specmaticは、Open API仕様形式で利用可能なコントラクトを使用する優れたオープンソースソリューションであり、プロバイダーとコンシューマーが並行して使用できる実行可能な仕様に変換します。また、CIを介してコントラクトの下位互換性を確認することもできます。いくつか特徴について説明させていただきます。

一点目が、契約を具体化することにより、最初にAPI設計について共同で合意することです。 この実行可能なコントラクトは、APIによって処理されるさまざまなシナリオをキャプチャし、信頼できる唯一の情報源になることができます。
二点目が、間違い防止の変更となります。 下位互換性を確認するには、新しいバージョンのコントラクトを以前のバージョンで実行するだけで確認することができます。 これらはSpecmaticのCIパイプラインの一部として互換性チェックを実行することで、統合を簡単に実行できます。
三点目が、サービスの仮想化です。 コントラクトをスタブモードで実行し、ダウンストリームの依存関係から自分自身を分離し仮想環境で実行します。

Postman

Postmanは、APIを構築して使用するためのAPIプラットフォームです。
Postmanは、APIライフサイクルの各ステップを簡素化し、コラボレーションを合理化するため、より優れたAPIをより速く作成できます。 これらの重要なコンポーネントについても説明させていただきます。

一点目がAPIクライアントです。 Postman APIクライアントは、Postmanの基本ツールであり、APIを簡単に探索、デバッグ、およびテストできるようにすると同時に、HTTP、REST、SOAP、GraphQL、およびWebSocketの複雑なAPI要求を定義することもできます。 APIクライアントは、応答、リンク、および本文内の書式設定テキストの言語を自動的に検出して、検査を容易にします。クライアントには、OAuth 1.2/2.0、AWS 署名、Hawkなどの認証プロトコルの組み込みサポートも含まれています。
APIクライアントを介して要求をPostmanコレクションに整理し、再利用するために要求を整理できるので、すべてをゼロから構築する必要はありません。コレクションには、リクエストを結び付けたり、一般的なワークフローを自動化するためのJavaScriptコードを含めることもできます。 スクリプトを使用して、APIレスポンスをチャートやグラフとして視覚化することもできます。

二点目がAPI設計です。 OpenAPI、RAML、GraphQL、またはSOAP形式を使用して、PostmanでAPI仕様を設計できます。Postmanのスキーマエディターを使用すると、任意のサイズの仕様ファイルを簡単に操作でき、組み込みのリンティングエンジンで仕様を検証できます。 また、APIライフサイクルの複数の段階 (モック、ドキュメント、テスト、モニターなど) のPostmanコレクションを、仕様ファイルからすべて同期して生成することもできます。

三点目がAPIドキュメントです。 Postmanの自動ドキュメンテーション機能を使用して、ドキュメンテーションをAPIワークフローの中核部分にします。 Postmanは、Postman Collection形式を介してマークダウン対応の機械可読ドキュメントをサポートしており、 OpenAPIファイルを介してドキュメントを生成することもできます。 ドキュメントには、リクエストの詳細が自動的に含まれ、さまざまなクライアント言語のサンプルコードが含まれます。 ドキュメントは、ワークスペースを通じてチームまたは世界と共有したり、専用のポータルで公開したりできます。

四点目がモニターです。 Postmanモニターは、APIの正常性とパフォーマンスを最新の状態に保つのに役立ちます。 モニターは複数の地理的リージョンで実行でき、Datadog、New Relic、Slackなどのサードパーティのアラートシステムやダッシュボードと統合できます。 PostmanモニターはPostmanのクラウドでホストされているため、すばやくセットアップできます。

五点目がAPIテストです。 Postmanで直接、またはCI/CDパイプラインの一部として、Newmanを介してテストをビルドおよび実行します。Postmanを使用して、機能テスト、統合テスト、回帰テストなどを作成できます。 PostmanのNode.jsベースのランタイムには、テストをすばやく構築するために使用できる一般的なパターンとライブラリのサポートが含まれています。 テストの作成はPostman APIリクエストのテストスクリプトをJavaScriptで記述できます。 また、APIプロジェクトで問題が発生した場合に、テストコードを使用してデバッグプロセスを支援することもできます。 たとえば、不完全なデータまたは間違ったパラメーターを含むリクエストを送信して、APIのエラー処理を検証するテストを作成する場合があります。

六点目がAPIライフサイクルです。 Postmanは、APIライフサイクル全体を通じて、すべてのAPIアーティファクトに対してクラウドベースでバージョン管理された一元化されたリポジトリを提供します。Postmanプラットフォームのツールはすべてリポジトリを使用するため、APIの信頼できる唯一のソースが保証されます。APIリポジトリを使用すると、チームや組織は、プラットフォームに組み込まれたインテリジェンス機能を通じてメトリックを収集し、洞察を識別することができます。PostmanのデスクトップおよびWebアプリケーションは、個人用、チーム用、またはパブリック用のワークスペースを介してAPIリポジトリに接続します。 また、Postmanのビルド済みの統合を通じて、APIリポジトリを使用する他の製品やツールに接続することもできます。 Postman APIリポジトリを使用すると、単一のAPIであろうとAPIランドスケープ全体であろうと、APIライフサイクル全体をより簡素化、整理、スケーリングできます。

七点目がプライベートAPIネットワークです。 プライベートAPIネットワークを通じて、チームがAPIを最適に把握できるようにします。 プライベートAPIネットワークはバージョン管理をサポートしています。これにより、ネットワーク内のAPIの複数のバージョンを制御および管理できます。 さらに、APIを階層フォルダーに編成して、組織のニーズを反映することができます。

Newman

Newmanは、Postmanのコマンドラインコレクションランナーです。
これにより、Postman Collectionをコマンドラインから直接実行およびテストできます。 拡張性を念頭に置いて構築されているため、継続的インテグレーションサーバーやビルドシステムと統合できます。
Newmanを実行するには2つ方法があります。一般的な方法は、環境とコレクションをJSON形式でエクスポートし、それらのファイルを使用してNewmanがいつでもこれらのエンドポイントを実行できるようにすることです。 もう一つの方法は、Postman APIを使用して、コレクションと環境をフェッチします。

では、ここで出力検査について説明させていただきます。 Postmanのリクエスト内にテストコードが記述されている場合、Newmanはテストが成功したかどうかを示します。プレリクエストスクリプトまたはテストスクリプトに構文エラーがある場合、Newmanはいくつかのエラー応答も表示します。 Postman用のコマンドラインツールがあると、継続的インテグレーションシステムを利用するチームにとって大きな利点になります。 チームは、分岐ロジックを使用して興味深いスクリプトを作成し、さまざまなデータをコレクションに対してテストできます。 たとえば、何かが失敗した場合、Newmanはコマンドラインで取得できるステータス コードで終了します。 ほとんどの継続的インテグレーションシステムは、これらの終了コードを監視し、それに応じCIビルドを成功または失敗させます。

次に、プログラムによるデータの取得について説明させていただきます。 プログラムによる方法でPostmanからコレクションや環境を取得できる場合、Newmanで物事を自動化するのははるかに簡単です。 Postman APIエンドポイントを呼び出して、Postman APIキーを使用してコレクションを取得できます。 これは、変更を加えるたびにコレクションや環境などをエクスポートするよりもはるかに便利ですが、システムがインターネット接続を介してPostmanサーバーからデータをフェッチできる必要があります。 一方、コレクションなどをエクスポートすると、変更を加えるたびに便利ではなくなりますが、限られたあるいは制限されたネットワーク環境内で作業することができます。 Postmanでは、適切なセキュリティプラクティスに従ってAPIキーやその他の個人情報を保護することが推奨されております。 たとえば、アクセスが制限された保護されたデータストレージまたは環境を使用して、そのデータを表示する権限を持たない人やプロセスから機密データを遠ざけます。 プログラムによるフェッチを開始するには、コレクションIDと環境IDを知る必要があります。 これらはPostmanアプリから取得できます。IDでワークスペース全体を取得し、複数の環境またはコレクションをプログラムでスキャンすることもできますが、それにはさらに多くの手順が必要になります。

UI負荷

UI負荷の高いアプリケーションのテストツールについても説明させていただきます。
UIの正確性はエンドユーザーに直接影響を与えるため、ビジネスの成功にとって非常に重要です。 最新の開発プロセスとフロントエンドテクノロジーを利用する場合でも、UIのテストは、リリースにおける最も重大なボトルネックの1つです。 具体的なツールについて紹介させていただきます。

Applitools

Applitoolsは、AIを活用した自動化された視覚回帰テストのパイオニアです。
同社のソリューションを使用すると、Visual Testingを機能および回帰UIの自動化と統合し、Applitools UltrafastGridを使用して、テスト範囲の拡大、迅速なフィードバック、シームレスなスケーリングを実現できます。 これらすべては、コードの記述を減らしながら行うことができます。 無料アカウントにサインアップすることですぐにソリューションを試すことができます。

まとめ

いかがでしたでしょうか?
回帰テストツールについてについて解説させていただきましたので、参考にしていただけましたら幸いです。