テストオーケストレーションとは?詳しく解説させていただきます
概要
ここでは、テストオーケストレーションについて説明させていただきます。
テストオーケストレーションを理解することは、現在のソフトウェア開発のトレンドや流れを理解するうえで非常に重要であり、テストエンジニアだけでなく、あらゆる開発者やプロジェクト関係者にとって必要な知識と言えるでしょう。これらは急速に拡大するテクノロジーに対応するための知識でもあります。
開発者は、あらゆる競争に遅れずに着いていくことができる革新的で完璧な製品を作成することを強いられると同時に、時間との戦いを余技なくされます。DevOpsチームがこれを実現するために必要なスピードと正確さで作業するには、自由に使えるすべてのツールを利用してバグを見つけ、製品展開に至る手順を合理化する必要があります。
テストオーケストレーションが拡大して需要が高まっているのには、これらの背景があります。
テストの自動化により、製品の品質と開発効率が大幅に向上しました。また、テストオーケストレーションは、テストプロセス全体の高レベルでありながら、より細かく調整された管理を可能にすることで、自動化をさらに促進します。自動化戦略を成功させるために効果的なテストオーケストレーションが必要です。さらに詳しく解説させていただきますので、参考にしてみてください。
テストオーケストレーションとDevOps
テストオーケストレーションとDevOpsは密接な関係にあります。
DevOpsは「Development 」と「Operations」を組み合わせた単語であり、現在のビジネスにおいて非常に重要なキーワードです。
DevOpsモデルでは、開発とオペレーションがサイロ化され、断絶されることを防ぐという大きなメリットがあります。これによって開発チームとオペレーションチームが統合され、従来のような
チーム体制による分業化された開発でなく、より効率的なプロジェクト推進を実行することが可能となります。
具体的には、ソフトウェアエンジニアやテストエンジニア、品質エンジニアなどプロジェクトに関わる多くのチームメンバーはライフサイクル全体にわたって作業を実施することが可能となります。
DevOpsには多くのメリットが存在します。
一点目が開発の速度を高めることです。
ソフトウェア開発における速度が高まることは、チームだけでなく、顧客にとっても大きなメリットを与えることができます。現在のビジネスは変化や柔軟性が求められますが、それらに対して対応することができる点も大きなメリットです。
DevOpsの思想やテクノロジーは複雑化しておりますが、それらを取り入れることによってリリースと改善を迅速に実施できる点は大きな魅力です。
二点目が拡張性と柔軟性です。 規模に応じたインフラストラクチャと開発のプロセスの運用と、管理を行います。 オートメーションと整合性は、複雑なシステムまたは変化するシステムを効率的に管理し、リスクを減らすために役立ちます。 さらにこれらはチームに柔軟性を与えより効率的な組織運営を実現します。
三点目がセキュリティです。
現在のビジネスにおいてセキュリティの重要性は増す一方です。DevOpsを導入することで、高品質のセキュリティを担保することができます。クラウドサービスの需要が高まる中、多くのクラウドベンダーがDevOpsを導入していることがそれらの重要性を物語ります。
DevOpsを理解するうえで継続的インテグレーションは最も重要なテクノロジーです。継続的インテグレーションは、すべての開発者のコード変更が自動的にコンパイル、テストされ、コード ベースのメインブランチに定期的に統合されるソフトウェア開発の実践です。
優れたシステムには、コードの変更で問題が発生したかどうかを知らせる何らかのフィードバックループがあります。
これは、バグがプロジェクトに持ち込まれたり、既存のバグが新しい変更によって悪化したりするのを防ぐため、
多くの貢献者がいる大規模なプロジェクトにとって重要です。
さらに、継続的デリバリーも重要です。
継続的デリバリーは、フィードバックを迅速に生成することを目的として、小さなバッチでソフトウェアを配信する方法です。
継続的デリバリーの背後にある考え方は、システムに対するすべての変更は、準備ができてテストされるとすぐにデリバリーできるというものです。
これにより、メジャーリリースを待たずに、すべての変更ができるだけ早くユーザーにリリースされるようになります。
継続的デリバリーの最も重要な部分は自動化です。チームが手作業による介入を必要とせずに変更を迅速かつ確実に提供できるようにするには、自動化が必要です。
オーケストレーション
そもそもオーケストレーションとは何か、という点について説明させていただきます。
オーケストレーションとは、主にソフトウェア開発やIT業界におけるコンピュータシステム、アプリケーション、などの設定、管理、調整の自動化を意味します。
オーケストレーションを活用すると、複雑なタスクやワークフローをより簡単に管理することができます。
さらに、現在のソフトウェア開発においてはこれらを実施するためのツールやテクノロジーが非常に重視されております。現在のビジネスにおいて、実に多くのサーバーやツール、アプリケーションなどを同時に使う必要があるという背景があります。
これらを手動で管理し、実施することは効率性を損ない、拡張性に課題が残ります。
自動化された複数のタスクとそれらの構成を、複数のシステムやマシンのグループ複数にわたって適用することがオーケストレーションの大きな強みです。厳密に説明すると、オーケストレーションと自動化は異なりますが、大まかな概要は似ております。
自動化は、ITシステムと人間のやり取りを削減、または置き換えることです。
さらに、代わりにソフトウェアを活用してタスクを実行し、コスト、複雑さ、エラーを削減することにより、ビジネスの効率化に役立てることです。
自動化の特徴とは単一のタスクを自動化することを意味します。
一方で、オーケストレーションは複数の異種システムにまたがる、多くのステップを含むプロセスやワークフローを自動化することであり、この点がやや異なるコンセプトです。プロセスに自動化を組み込むことから始めると、将来的にはそれらをオーケストレーションして自動的に実行できるようになります。
さらに、ITオーケストレーションは、頻繁に発生するプロセスとワークフローの合理化と最適化に役立ちます。
オーケストレーションを使用して、サーバー・プロビジョニング、インシデント管理、クラウド・オーケストレーション、データベース管理、アプリケーション・オーケストレーション、その他の多くのタスクやワークフローなどのITプロセスを自動化できます。
テストのオーケストレーションには、各ソフトウェア製品で実行されるテストとその順序を定義することが含まれます。
また、継続的なテストのシーケンスを自動化し、予算や締め切りの変更、予期しないテスト結果など、いくつかの種類の動的入力に応じてプロセスを調整することもできます。
従来のテスト計画とテストオーケストレーション
従来のテスト計画とテストオーケストレーションについて説明させていただきます。
従来のテスト計画手法によって確立された基盤は本質的にウォーターフォールに分類され、市場投入までのスピードよりも品質が優先されます。これらはテストが完全に自動化されていないフェーズが定義されており、多くの場合、手作業によるテストと反復に合理的に依存しています。
テスト計画は、テスト対象のシステムを念頭に置いて設計されており、製品がコンプライアンスまたは規制の対象である場合は厳密さが増します。
Rational Unified Process (RUP) またはCapability Maturity Model Integration (CMMI)から派生した従来のテスト計画方法論は、テスト計画のISTQB定義によってサポートされているドキュメントの深い層を示唆しています。
テストオーケストレーションはこれらの従来のテスト計画を刷新し改善を実行し、現在のビジネスに適応させます。
Rational Unified Process (RUP) またはCapability Maturity Model Integration (CMMI)を取得しようとしているチームは、予想されるアーティファクトの複雑な世界をナビゲートして、包括的なテスト計画を構築します。
ソフトウェア配信に対する従来のアプローチのコンテキストでは、テスト計画には多くのサポートアーティファクトが必要です。
このアプローチは、マスターテスト計画から開始し、その後、ソフトウェアの反復ごとに一連のインクリメンタル テスト計画を作成する場合があります。
チームは常に高レベルのドキュメントを更新および維持しています。RUP内では、テスト計画にはテストの要件、リスク評価、および実際のテスト戦略の基盤があります。
テスト戦略は、テストの種類とその目的にさらに分類されます。機能テストには、ユニット、統合、システム、および受け入れテストが含まれます。
非機能テストでは、パフォーマンス、信頼性、アクセシビリティがカバーされます。
ドキュメントには、テストの種類ごとに活用される詳細なテクニック、測定のメカニズム、および必要な特別な条件が含まれており、テストが行われる段階はさらに別のドキュメントに記載されています。
DevOpsテスト
一方でDevOpsテストおよびテストオーケストレーションは非常に速く進んでおります。
これは、Rational Unified Process (RUP) で記述されたテスト戦略やテストケースなどの詳細な成果物を維持する時間を削減します。
テスト計画に対するDevOpsアプローチは、アジャイルの原則を取り入れて実行されます。
DevOpsテストおよびテストオーケストレーションにおける最新のテストとは、継続的なテストと継続的な配信プロセスに巧妙に組み込まれた開発と品質です。従来のテスト計画はDevOps開発ライフサイクルに活用できますが、最新のテストプラクティスにはより軽いタッチが必要です。
継続的なテスト環境でのテスト計画には、共同プラットフォームで見られる戦略と、スクリプトの形式でアトミックテスト ケースを定義する自動化コードが含まれます。
チームは、テストケース名と簡単な説明を利用して、上記で説明したその他の詳細な属性をすべて除外することができます。
テストの詳細は、理想的には、アプリケーションコード内、軽量のビジュアルツール内、または効果的なデジタルアジャイルテスト計画ソリューション内に記述され、発見可能です。
前提条件を把握し、期待される結果を主張できることは自動化にとって依然として重要ですが、従来のテスト計画における包括的なドキュメントとは対照的に、ここではコードがストーリーを伝えます。
環境は十分に確立されており、DevOpsテストモデル用に編成されています。継続的なテストは、ソフトウェアデリバリーパイプライン内で表現されます。
パイプラインはテストのフェーズを定義し、テスト計画はそれらの定義されたフェーズに合わせます。テストは、構築および配信プロセス中に実行されます。
迅速かつ効果的な配信を念頭に置いてアジャイルテスト戦略を作成する場合、チームは、テストのすべてのフェーズのバランスをとる無駄のない軽量のテスト計画を検討する必要があります。
望ましい配送速度を維持するには、バランスが重要です。
テスト計画の比較
テスト計画とそれらを生成するための方法論は、手動プロジェクトと自動化プロジェクトで同じです。
手動テストを実行するチームは、テスト計画を使用して作業の優先順位を付けています。
自動化に重点を置いているチームには、継続的なテストを可能にするためのアジャイルテスト戦略も必要です。
ただし、両者には大きな違いがあります。
テスト計画は、手動テストがデリバリーライフサイクルの一部であるかどうかを定義し、デリバリーライフサイクルのどの部分で、チームがテスト計画の手動部分を実行するために一時停止するかを明示します。DevOpsおよび継続的なテスト環境では、手動テストの量を最小限に抑えるよう努めていますが、顧客中心の品質が必要な場合は、デリバリーチーム全体が手動テストを実施します。
DevOpsテスト計画を制約する会話は、自動化と手動テストのROIです。 テスト計画のプラクティスは、従来、テストケースの観点から、テストキャプチャの単位に依存していました。 継続的テストへの道のりに関するこの議論に制約され、結果の履歴を含む十分に文書化されたテストケースを持っている組織は、このツールを活用して、継続的テストへの投資の価値を説明できます。継続的なテストに重点を置いている組織では、ROIは、バランスのとれたよく考え抜かれたテスト計画を持つことほど重要ではありません。 ROIの計算は、従来のテスト手法から継続的なテストによってサポートされるDevOpsモデルへの移行を希望する組織にとって価値がある場合があります。
AIと自動化
テストオーケストレーションに関連する内容としてAIと自動化についても説明しておきます。
自動化の範囲を慎重に選定し、正しいテスト結果を得るためにソフトウェアエンジニアやテストエンジニアは知識を理解する必要があります。
まず、テストをビジネス要件に関連付けるツールの理解は重要なポイントの一つです。
さまざまなトレーサビリティ製品は、すべての要件がテストされていることを保証することを目的としていますが、今ではトレースは機械学習 (ML) の恩恵を受けています。
これにより、テストに値するものはすべて実際にテストされる可能性が高くなります。
次に、テスト生成の自動化に対する理解が必要です。
機械学習 (ML) は、開発中の実行にうまく適用され、さまざまなプラットフォームに適用され、特定のユーザーインターフェイス (UI) に疎結合されたテストを生成できます。
同じ機械学習 (ML) により、テストがランク付けされ、より価値の高いテストがより多くの投資を受けるようになります。
テストは、いくつかの理由でより高い値を持つ場合があります。
顧客の使用パターン、開発中に特定の機能がデリケートなホットスポットの履歴、既存のテスト スイートにない関連テストを明確に提案する、特定のプラットフォームまたは機能領域に固有の欠陥を明らかにする力、テスターが見落としがちなエラーなど複数の要素によって構成されます。
UIテスト
特にユーザーインターフェイス (UI)自動化に対する進捗が遅かった領域の一つです。
この分野で不完全または部分的な機械学習 (ML) は、手動のアプローチよりも大幅に改善されます。
テストメンテナンスは、高度な自動化を適用するために、少なくともいくつかの異なる分野で可能性を秘めています。
AIは、自動テストで厄介な認識問題を処理するための自然な候補でもあります。
いうまでもなくAIの決定的な特徴は、学習することです。ソフトウェア開発およびソフトウェアテストのように、複雑なロジックが適用される場合は人間が手動で実施するよりもパフォーマンスに優れているケースが非常に多いです。
さらに、複数のプラットフォームに表示されるアプリケーションはレスポンシブUIにより一般的なUIを実行するためだけに、画像認識と光学式文字認識 (OCR) のAIを必要とします。
機械学習 (ML)は、時間をかけてテストを維持するという問題に対して独自の傾向を持ち、トレーニング中、レポート生成中、それらを組み合わせたより長いサイクルに適用できる可能性があります。
教師あり機械学習 (ML)は、レポート生成に期待できます。たとえば、このようなプロジェクトの真の価値は、人間の専門家が機械学習 (ML)と協力してデータセットの選択やテストの実行を改善するときに得られます。これは、人工知能よりも拡張された知能と考えることができます。
UIテストは、AIにとって特に有利な現在の機会として登場しました。
アプリケーションプログラミングインターフェイス (API) のテストも特別な機会です。
もちろん、UIとAPIは「インターフェース」に重点を置いています。
技術レベルでは、2つのドメインに適した機械学習 (ML)の種類は異なり、APIテストにおける機械学習 (ML)の貢献は、テスト生成に集中しているようです。
マシンは、API実装の弱点を実行するテストケースの生成において、人間よりも優れています。
最後に、ますます複雑化する試験測定では、機械による管理が必要になります。
アジャイル手法のトレンドとソフトウェアのビジネスロールにより、テストにおけるAIの必要性が高まっています。
ほんの数年前まで、AIとテストは学術研究でのみ関連付けられていました。
しかし現在、テストと開発がより広くシフトレフトされており、企業は、無期限の将来に完成したソフトウェアではなく、今すぐ十分なソフトウェアが必要であることを認識しています。
デリバリーサイクルは短縮され続け、製品への期待はますます複雑化する一方です。
従来の再生、およびスクリプト化されたテストツールに依存するテスト部門は遅れをとるであろうと推測されています。
ツール
機械学習 (ML)に依存するツールは、常に評価が困難です。ほとんどの組織は、すでに依存している従来のテストツールの構成に関連する専門知識にほとんど追いついていません。 同じスタッフが、機械学習 (ML)ベンダーの主張を分析し、採用する特定のツールやテクノロジーを決定するためには高い専門知識が必要となります。 最良の結果は、組織がそのソフトウェア開発ライフサイクルに固有の2つまたは3つの課題を特定し、ベンダーまたはツールコミュニティと協力して、それらの特定の領域における機械学習 (ML)の回収のプロトタイプを作成することです。考えられるドメインには、UIテスト、APIテスト、および複数のスプリントスパンにわたるテスト結果の分析が含まれます。
継続的テスト
テストオーケストレーションに関連する内容として継続的テスト(CT)があります。
段階的な成長とともに、小さなスタートに対応することが可能で、ローコストかつ迅速に実行できます。
継続的テスト(CT)は一般に、開発者がさまざまな時点でソースコードをコミットするソフトウェア開発ライフサイクル(SDLC) のコンテキストで考慮されます。
継続的テスト(CT)の解釈は、変更セットの送信によって定義された各イベントがテストサイクルをトリガーするというものです。
これらのテストが失敗した場合、変更セットは拒否され、アプリケーションは最後に承認された状態に戻ります。
このプラクティスは、継続的テスト(CT)ではなく、低レイテンシ、イベント駆動型、または高速フィードバックテストと呼ぶ方など細分化し考えることができます。
継続的テスト(CT)の重要点の一つが、必要な場合を除いて、明確なスケジュールでテストを実施することです。
いくつかのポイントについて説明させていただきます。
一点目が設計です。
これはイベントとアクションから始めることです。
さらに、さまざまなスケールのテストを定義することです。たとえば、組織は次の3つのスケールをスケジュールする場合があります。
毎分、クイック回帰単体テストのコレクションが起動することやコミットが行われるたびに、特定の比較的高速な統合テストが開始され、例外が発生した場合はコミットが元に戻されることや、毎日真夜中に時間のかかる一連のパフォーマンス、セキュリティ、および統合テストが実行されたりします。このような組み合わせを設計して、テストの費用を最大限に活用します。もちろん、見返りはそのエラーの導入にできるだけ近いエラーを特定することです。これら3つのスケールが非常に重要な役割を持ち、開発者のコミットに依存しないテストを持つことは価値があります。利用可能なSDLC ツール (統合開発環境 (IDE)、ソース コード管理システム (SCCS)、継続的インテグレーション (CI)、テスト自動化など) を図式化してCTプログラムを開始します。
二点目が構築です。 これは漸進的なアプローチを取る必要があります。 これらのさまざまな可能性について明確にすることで、継続的テスト(CT)への漸進的なアプローチが促進されます。 組織の既存のワークフローをすり抜ける、最も一般的または損害を与えるエラーのカテゴリを明確にすることが重要です。 さまざまなユーザーに対して一貫性を欠いて表示される一時的な認証エラーが発生する場合は、 100人のユーザーごとに適切な1分間のエンドツーエンドの演習を実行する大きな演習を設計できます。 さらに、プログラマーが正しく見えるコードをチェックインし、ピアレビューに合格したとしても、最終的には特別に構成されたホストでしか動作しないというのはよくあることです。 これらを回避するためには適切な単体テストを定義し、関連するプラットフォーム全体で反復し、回帰単体テストスイートが完了するまで変更セットの受け入れをブロックします。
テストオーケストレーションのメリット
テストオーケストレーションのメリットについて説明させていただきます。
一点目がテストを継続的に実行できることです。より迅速で早期のテストは、セキュリティの脆弱性を早い段階で発見できることを意味し、開発プロセスの残りの部分に影響を与える前に、それらを修正するためのより多くの時間を確保できます。
継続的にエラーが発生する開発チームは、手動テストの開発に集中する必要がないため、より効率的にエラーを修正できます。
テストオーケストレーションにより、テスターはこれらのエラーの解決策を見つけるためにより多くの時間を割くことができます。
二点目がテストパイプラインの開発の増加です。
テストオーケストレーションの大きな焦点は、自動化されたテストがたどる明確なパスを提供する包括的なテストパイプラインを構築することです。
これらのパイプラインの開発に投資することで、その後の速度と精度の向上の基盤が提供されます。
さらに、テストプロセスが加速されるため、DevOpsチームはこれらのテストパイプラインの改善により多くの時間を費やすことができます。この正のフィードバックループは、どの開発チームにも大きな利点をもたらします。
三点目が自動化テストの範囲です。
プロジェクトの時間がなくなると、テストカバレッジは大きな問題が起きます。新しいソフトウェアの各コンポーネントと機能を配信または展開日の前にテストする十分な時間がないことがあります。
テストオーケストレーションは、より短い時間枠でより多くのテストを実行できるため、テストのカバレッジが向上し、何かを除外するという厳しい決定を下さなければならない可能性が大幅に低くなります。
そしてもちろん、テスト範囲を改善することで、市場に出る前にアプリケーションの品質をさらに向上させることができます。
機能
テストオーケストレーションが機能的にどういった影響を与えるかという点についても説明させていただきます。
テストオーケストレーションを使用すると、単体テストを自動化できるため、チームは一度に複数のテストを実行できます。
この自動化戦略により、同じ精度で単体テストを実行できますが、はるかに大規模で、コードスニペットを未チェックのままにすることはできません。
チームは、コード内のより多くの欠陥を見つけて修正できるようになります。つまり、開発サイクルの残りの部分、そして最も重要なこととして、最終製品でのバグが少なくなります。
このテスト方法は、チームが開発プロセス中に既に遭遇したテストの成功と失敗を検証するのに役立ちます。唯一の違いは、多くのテストを同時に実行でき、間違いをより迅速に見つけることができることです。
手動テストの必要性を制限することで多くの時間が作れるため、チームはエラーの修正、コードにバグがないことの確認、および必要に応じて手動テストの実行に集中できます。
独自の自動テストとテストオーケストレーションを作成すると、手動でテストを実行し続けるのと同じくらい多くの時間と費用がかかる可能性があります。
自動テストソフトウェアの経験と知識を備えた企業と提携することで、頭痛の種を取り除き、必要な場所に到達することができます。
レポートツール
テストオーケストレーションとレポートツールは大きな関連性があります。
これらのレポートツールはテストしているソフトウェアだけでなく、実施しているテストの欠陥をすばやく見つけることができます。
これらのテストを手動で行って手動のテストレポートを作成すると、人的エラーが入り込んでテストプロセスが遅れやすくなります。
手動でテストする場合、テストプロセスを続行する前に、まずエラーが発生した場所を見つける必要があります。
このような問題はテスト自動化レポートツールを使用することで迅速に解決できます。
エラーがどこにあり、どのように修正できるかを確認するために必要なデータが得られます。
健全な実行環境が整い、テスト プロセスを続行できるようになるまで、それほど時間はかかりません。
テスト自動化プロセスの視覚的表現を作成することも重要な機能です。
学習と理解は視覚的なプロセスですあり、テスト自動化のためのレポートツールの利点の1つです。
このツールでテストの自動化プロセスを視覚的に表現できれば、理解しやすくなります。
視覚的に表現することで、大量のデータをはるかに高速に処理できます。
これらはチームメンバーだけでなく、外部のメンバーや企業投資家においても有効です。
テストのレポートツールの視覚的表現を示すことで、情報の必要性を完全に満たすことができます。
まとめ
いかがでしたでしょうか?
テストオーケストレーションについて詳しく解説させていただきましたので、参考にしていただけましたら幸いです。