5つの「おいしい」テクノロジーの組み合わせで賢いソフトウェアテスターに​なる

ピーナッツバター&ジャムのサンドイッチには不思議な魅力があります。ジャムのさわやかさとピーナッツバターの素朴さが混じり合い、この2つの材料の魔法の組み合わせにしかない、まったく新しい香りを作り出します。私にとって、ピーナッツバターとジャムは、1 + 1 が 3 にも 4 にもなるという発想の完璧な見本です。これと全く同じことをソフトウェアテストの世界で実現できます。Parasoft で手掛けた大規模なソフトウェア展開において私が行ってきたことは、本質的にはピーナッツバター&ジャムのサンドイッチを作るようなものです。そこで今回は、私が Parasoft で作成してきた組み合わせをいくつか振り返り、それらをどう組み合わせるか、それによって何を達成できるかを説明したいと思います。

Parasoft SOAtest および Parasoft Virtualize による動的テスト環境

テストツールのピーナッツバターサンドイッチの世界では、この組み合わせはナンバーワンです。私は自分が機能テストツールのプロダクトマネージャーなので、ひいき目もあるかもしれませんが、個人的な意見として、Parasoft のテクノロジーの中でも、SOAtest のAPIテスト機能とVirtualize のサービス仮想化機能の組み合わせよりも優れた組み合わせはありません。

動的テスト環境

これらの2つのテクノロジを組み合わせたときに得られる最も大きな付加価値は、動的テスト環境を作成できることです。通常、これはサービス仮想化の恩恵と考えられがちな機能ですが、見過ごしてはならないのは、環境のコンテキストでテストケースを実行する能力です。SOAtestとVirtualizeを組み合わせることで、ユーザーは継続的インテグレーションの機能として展開できる再利用可能なテンプレートを作成できます。この環境テンプレートは、仮想サービスとテストケースを組み合わせたものになります。

これはアプリケーションにサンドイッチのような効果をもたらします。テストケースおよびその検証をバックエンドの仮想サービスと整合させることができるため、効果は強力です。テストケースを実行するとき、対応する仮想サービスとテストケースが結び付けられ、テスト環境がそれ自体をプロビジョニングできることがわかっているため、真のCIを実現できます。SOAtest のテストケースの実行準備ができると、テストケースの最初のステップとして、Virtualize を呼び出して適切な仮想サービスとデータが適切な場所に設定されます。テストの最後のステップは、Virtualize を呼び出して環境を破壊することです。ほら!これが環境サンドウィッチです。

Parasoft Virtualize と Parasoft SOAtestによるミドルウェアの検証

上の例では、Virtualize によってプロビジョニングされた仮想環境のコンテキストで SOAtest を使用しました。この関係を逆にすることで、Virtualize を使用してテスト実行中に SOAtest をサポートすることができます。

ミドルウェアの検証

仮想サービスはエンドポイントで待機します。呼び出されたときに必ず応答を返す必要はなく、実際には呼び出しを転送することもできます。サービス仮想化では、ミドルウェアアプリケーションの間に入ってモニタリングだけを行う仮想サービスを作成することもできます。次に、あるミドルウェアコンポーネントが別のミドルウェアコンポーネントを呼び出すと、「インターセプトポイント」が発生します。この時点で、単にメッセージが経路を通過したことを報告する仮想サービスを呼び出すことができます。それで、そのメッセージをどうすればよいのでしょうか?

ここで、SOAtestとVirtualize の組み合わせが非常に役に立ちます。Virtualization がこれらのメッセージを SOAtest にレポートし、SOAtest はメッセージを検証することができます。SOAtest がフロントエンドに対して呼び出しを実行するいっぽう、Virtualize は経路の途中でモニターします。テストケースが実行されると、Virtualize は変換されたメッセージを SOAtest にレポートします。イベントはテストケースの実行途中でレポートされ、リクエストのデータとVirtualize から返されたイベントを検証によって結び付けることができるため、真の動的エンドツーエンドテストを実現できます。

Parasoft SOAtest と Parasoft LoadTest によるパフォーマンステスト

SOAtest で行った作業は、SOAtest の内部にあるParasoftのパフォーマンステストソリューションである LoadTest で即座に利用できるようになり、SLAに従って応答を自動的に検証するだけでなく、迅速にAPIテストを実行できます。

パフォーマンステストのシフトレフト

SOAtest が発売されてから長い期間が経っていますが、その間、ユーザーは SOAtest を使用して強力なエンドツーエンドのテストケースシナリオを作成しようと努力してきました。しかし、それらのテストケースはすべて LoadTest 内で実行できるということは、あまり知られていないかもしれません。 SOAtest には、すべてのAPIテストをLoadTest で使用できるように構成し、検証を行うクイック機能があります。これは、パフォーマンステストを作成する必要がないことを意味します。テストチームの作業結果を活用し、速やかに実行することができます。

これは最高のソフトウェアテスト自動化です。これらの2つの技術を組み合わせることで、より意味のあるパフォーマンステストを効率的に作成できます。SOAtest は、負荷テストを実行する前に、APIを呼び出して Webフロントエンドをテストします。環境が事前検証されているため、パフォーマンステストが問題なく実行されるという安心感を提供します。この組み合わせにより、最初のテスト作成時およびテスト実行時に多くの時間を節約できます。

Parasoft LoadTest および Parasoft Virtualizeを使用した事前構成済みのパフォーマンステスト環境

Virtualize は、「パフォーマンスプロファイル」を使用して仮想サービスを作成できます。これらのパフォーマンスプロファイルは、仮想サービスの応答時間を予測されるベースラインまで遅くします。これらのパフォーマンスの遅延は、手動で設定することも、AppDynamics や Dynatrace などのアプリケーションパフォーマンスエンジンから取り込むこともできます。これらのサービスは、パフォーマンステストのために設定された環境に展開することができ、VirtualizeLoadTest の組み合わせを非常に強力にします。

事前構成されたパフォーマンステスト環境

Virtualize はステージを設定し、環境のベースラインを提供します。LoadTest はこの環境に対してテストを実行し、パフォーマンスの問題を外科的に特定することができます。これは、LoadTest 用にカスタマイズされた環境を作成するため、非常に強力です。 パフォーマンステスト実行時の前提条件として、LoadTestVirtualize にパフォーマンスモードに切り替えるよう指示することで、シミュレート対象の特定のアプリケーションにパフォーマンスベースラインを適用することができます。

LoadTest は環境全体を検証し、仮想サービスからの遅延時間を実際のサービスからの遅延時間と比較して解釈することができます。この情報は、パフォーマンスのボトルネックがどこにあるのかを正確に伝え、実際のコンポーネントと仮想のコンポーネントを切り換えてさまざまなパフォーマンスベースラインを適用することで、パフォーマンス上の問題を特定できます。

Parasoft SOAtest および Parasoft DTP を使用した要件とトレーサビリティの把握

APIの機能テストと開発テストをつなぐ際、レポートおよび分析プラットフォームであるParasoft DTPを活用して、Parasoft製品のテクノロジーを大幅に拡張することができます。DTPは、開発およびテスト活動からあらゆる種類の情報を取り込んで、意味のあるウィジェットとレポートを提供し、ユーザーがリリース準備状況を評価するために活用できるように設計されています。

要件とトレーサビリティ

DTPは、Jiraのような要件エンジンに接続し、要件セットに関する特定の情報を取り出し、その情報をDTP内でわかりやすく視覚化することができます。いっぽう、SOAtest は特定のテストケースを関連する要件に結びつけることができます。これらの2つのテクノロジーを組み合わせることで、ワークフローを活性化できます。DTPはユーザーに要件を提示し、テストケースを作成できるようにします。するとそれらのテスト ケースは、SOAtest サーバーまたはデスクトップに表示されます。ユーザーは、テストケースのいずれかを作成、変更、または更新して、特定の要件を満たす機能を持たせることができます。

そして今、本当の魔法が始まります!レポートエンジンと分析エンジンの要件にテストケースが紐付けされているため、テストケースを実行するたびにその結果が要件に結びつけられます。 詳しくは最近のブログ記事で説明していますが、効果を簡単にまとめると、すべての要件に関連するテストケースがあるかどうか、またテストケースが実行されているかを確認することができます。テストが行われたかどうか、そしてビジネス上重要な機能にエラーがないかどうかがわかるため、リリースの準備に役立ちます。

終わりに…

ピーナッツバター&ジャムのサンドイッチが材料の組み合わせによって最高のおいしさを実現しているのと同様に、ソフトウェアテスト技術を組み合わせることで、より高いレベルのソフトウェアテスト自動化のための強力なフレームワークを実現でき、テストがより効率的に、そしてはっきり言って、より楽しくなります。自動ソフトウェアテストツールを組み合わせる方法はまだまだありますが、今回取り上げたものは、手始めとして適しています。結論としては、アプリケーションを徹底的にテストしたことを確認することがすべてと言ってよいでしょう。ですから、いますぐ出かけて、おやつの時間テストを始めましょう。

(この記事は、開発元Parasoft社 Blog 「Be a Smarter Software Tester with These 5 Delicious Technology Combinations」2017年10月18日の翻訳記事です。)

Parasoft SOAtest/Virtualizeについて

APIのテスト自動化とサービス仮想化を1ツールで

SOAtest/Virtualizeは、APIの開発者/利用者に向けてテストの自動化とテスト環境の仮想化の2つの側面から開発を効率化します。SOAtest/Virtualizeは、APIのテストドライバーを提供し、開発中のAPIのテストを自動化する機能と、APIを利用するアプリケーションが必要とするAPIをスタブとして仮想化する機能を同梱して提供します。

Top