テスト自動化をアジャイルと DevOps に適合させるには

多くのソフトウェア チームは、テスト カバレッジやそれに伴うメンテナンス コストに満足していません。同時に、ビジネス チームにとっても、実用的なビジネス指標がなければ、テストの作成に費やす時間を正当化することは困難です。しかし、テスト自動化から継続的テストへと移行することで、自動化されたテストのメリットを最大限に引き出すことができます。

ここでは、テスト自動化と継続的テストの違い、およびこれらの概念がアジャイルと DevOps プロセスにどのように適合するかを見てみましょう。

多くの開発チームは、テスト カバレッジまたはそれに伴うメンテナンス コストに満足していませんが、継続的テストへの移行は役立つことになるでしょう。

継続的テストとは?

ほとんどのソフトウェア チームは、テスト自動化に精通しています。ユーザー ストーリーを受け取ったテスト エンジニアは、コードがユーザー ストーリーの要求を正しく実装しているかどうかを判断するためのテストを書きます。これらのテストには通常、個々のメソッドをテストする低レベルのユニット テストと、ワークフロー全体が期待通りに機能することを確認する高レベルの統合テストが含まれます。

継続的テストとは、ビジネス リスクに関するフィードバックを可能な限り迅速に得るために設計されたソフトウェア デリバリー パイプラインの一部として、自動テストを実行するプロセスです。テスト自動化がユーザー ストーリーの要件をチェックするのに対し、継続的テストは DevOps プロセス全体を対象とし、具体的なビジネス リスクに対するインサイトを提供します。

継続的テストが必要とされるのには、様々な理由があります。

  • アプリケーションのアーキテクチャはますます複雑化し、開発者がバグを追跡することは困難になっています。例えば、1 つの Web アプリケーションには、複数のマイクロサービスや、様々なクライアント アプリとやり取りする様々な API が含まれていることがあります。
  • リリース サイクルは格段に短くなり、十分な手動テストや整理されていない自動テストを行う時間はありません。多くの企業は、新しいバージョンのソフトウェアをほぼリアルタイムでデプロイする「継続的デリバリ」に移行しています。
  • ソフトウェアとビジネスは相互に関連しているため、アプリケーションの障害はビジネスの障害につながります。ビジネスがソフトウェアに依存している場合、ダウンタイムはビジネスと評判の損失という非常に大きなコストになります。

つまり、継続的テストを行うことで、ビジネス チームと技術チームが要件について同じ考えを持ち、ソフトウェア開発ライフサイクルを通じて運用することで、ソフトウェアが期待通りに機能することを保証します。自動化エンジニアは自分がデプロイするコードに自信を持つことができ、関係者はそのソフトウェアがビジネスリスクを最小限に抑えていることを確信できます。

アジャイルと DevOps との適合性

自動化エンジニアは、特に、パズルの一部分にしか関わっていない場合、テストがアジャイル プロセスや DevOps チームとどのように組み合わされるのかを完全には理解していないかもしれません。彼らは DevOps プロセスのすべてに関与しているわけではありませんが、バグや問題が発生した場合に適切に対処するために何が起こっているかを理解することは有益です。

一般的なワークフローを見て、すべてがどのように組み合わされ、ビジネスに真の価値を提供するかを見てみましょう。

  • 開発者、テスト エンジニア、および関係者が集まり、ユーザー ストーリーについて議論し、ビジネスの観点から具体的な行動例を導き出します。これらの動作は、実行可能な Behavior-Driven Development (BDD) テストに変換されます。
  • 開発者は、バックログからユーザー ストーリーを取り出し、テスト エンジニアと協力して、テスト駆動開発 (TDD) プロセスの一環として、ローカル マシンでユニット テストや統合テストを書き込みます。テストとコードは、すべてが合格すると共有コード リポジトリにデプロイされます。
  • DevOps エンジニアは、継続的インテグレーション (CI) サーバーを開発し、共有リポジトリのコードを実行し、すべてのテスト (TDD および BDD) を実行して、すべてがパスすることを確認します。また、プリプロダクションまたはステージング用に異なるブランチを設定することもあります。
  • QA エンジニアまたは自動化エンジニアは、必要に応じて追加のテストを作成し、その他の品質保証プロセスを実行します。例えば、パフォーマンス テストを実施して、想定される負荷の下でアプリケーションにボトルネックがないことを確認します。
  • 運用エンジニアは、共有リポジトリのテストを受け入れテストと継続的なポストプロダクション モニタリングに再利用します。

継続的テストには、開発者、テスト エンジニア、DevOps エンジニア、さらには開発プロセスに BDD を採用している場合はその関係者など、さまざまな関係者が関わっています。

TestComplete が DevOps を簡素化する方法

TestComplete は自動化された UI テスト ツールで、デスクトップ、ウェブ、モバイル アプリケーションの機能テストをすばやく簡単に作成、維持、実行できます。直感的なインターフェースと豊富な統合機能により、テスト自動化を超えて継続的なテストに移行することで、テスト カバレッジを向上させ、高品質なソフトウェアを出荷することができます。

このプラットフォームは、Gherkin の Given-When-Then シナリオをネイティブ サポートしており、非技術者や技術者チームがビジネス要件を自動テストに素早く変換できるようにします。IDE、Gherkin インタプリタ、テスト実行、レポート作成を 1 つのツールで行うことができ、機能ファイルの構築や変換のために複雑な技術スタックを気にする必要はありません。

自動化エンジニアは、AI がサポートするカスタマイズ可能なオブジェクト リポジトリを利用した記録と再生機能を使用して、エンド ツー エンド テストを素早く構築することができます。プラットフォームごとに新しいツールや言語を学ぶのではなく、同じツールを使ってウェブ、デスクトップ、モバイル アプリケーションのテストを行うことができます。また、インテリジェント レコメンデーション システムにより、メンテナンスが非常に簡単になりました。

さらに、軽量な実行エンジンと分散テスト機能により、リモート コンピュータや仮想コンピュータでのテスト実行や、Jenkins を含む継続的インテグレーション システム、Git などの SCM との統合も可能です。また、すべてのテストを継続的インテグレーションやデプロイメントのプロセスに組み込むことも容易です。

一般的なツールとの統合

自動テストは、ソースコードの取得、プロジェクトのビルド、自動テストの実行など、繰り返されるタスクを自動化する継続的インテグレーション ツールに依存しています。TestComplete は、すぐに使えるプラグインを介して、最も一般的なビルド ツールである Jenkins と統合します。TestComplete のテストを Jenkins パイプライン内で他のテストと一緒に実行するように簡単に設定でき、合理的なテストプロセスを維持することができます。

Microsoft による開発、ビルド、テスト、デプロイのツール群である Azure DevOps を使用するソフトウェア チームは、TestComplete Test Adapter を使用して TestComplete のテストをリアルタイムで同期できます。また、簡単なドラッグ & ドロップ機能を使用し、Azure で作成した手動テストを TestComplete の自動テストにリンクできます。Azure DevOps と TestComplete の連携により、テストの統合やレポートの作成に無駄な時間を費やすことなく、ステップ数を大幅に削減し、レポートを1 つのソースで確認できるため、テスト エンジニアはテスト設計などの価値の高いタスクに集中することができます。

トレーサビリティの確保とテストの管理に関しては、TestComplete を使用すると、QA チームがテストをリアルタイムで計画、管理、監視するための人気ツールである Zephyr Squad (旧製品名: Zephyr for Jira) に結果を簡単に送信することができます。これらのメトリクスは、テスト カバレッジの理解を深め、リスクの高い領域を特定し、テスト自動化の傾向を認識して、ワークフローを改善するのに役立ちます。

無料トライアルに登録して、TestComplete の使いやすさを実感してください。既存の機能テストをインポートし、すぐにテスト スイートを構築することも可能です。

GUI テスト自動化製品 TestComplete の詳細は、こちら

この資料は、SmartBear の Blog で公開されている「How Test Automation Fits With Agile & DevOps」の日本語参考訳です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする