アジャイル テスト自動化フレームワーク

⚡ スマートサマリー

アジャイルテスト自動化は、要件が毎週変更される短いスプリント内で自動チェックを適用するものであり、安定したウォーターフォールリリース向けに構築されたテストスイートは、安全網というよりもすぐに保守上の負担となってしまう。

  • 🔘 コアの緊張: 自動化は安定性を重視する一方、アジャイルは変化を重視するため、テストの網羅性よりもテストの選択が重要となる。
  • ☑️ 滝の対比: 従来の自動化手法は、安定したアプリケーション、熟練したスクリプト作成者、そして高額な初期設定費用を前提としている。
  • Sprint 現実: 1週間から4週間のスプリントでは、大規模なスクリプトの設計、コーディング、検証にはほとんど適さない。
  • 🧪 探索的ではない: 自動テストは既知の動作を確認するものであり、新たな革新的な欠陥を発見するものではありません。
  • 🛠️ ツールの選択: 制限的なライセンスを持つツールは、アジャイルチームが依拠するオープンなコラボレーションと相容れない。
  • 📈 最適なもの: 繰り返し行う、データ量の多い回帰テストで、合否結果が明確なものは、自動化に適している。

アジャイル テスト自動化フレームワーク

アジャイル自動化テスト

アジャイル自動化テスト これは、アジャイル開発プロセス内でテスト自動化を活用する手法です。その目的は、品質を維持し、リリースにかかる時間とリソースを管理しながら、ソフトウェア開発をより効果的かつ効率的にすることです。テストは機能開発と並行して作成されるため、開発者とテスター間の連携が非常に重要になります。

アジャイル手法がウォーターフォールモデルの面倒な現実を排除しようとして以来、その影響は 自動化テスト また、この2つの分野は意図的に組み合わせる必要がある。

アジャイルと自動化が組み合わさって、アジャイルにおける自動化となる

ウォーターフォール型開発における自動化とアジャイル型開発における自動化の比較

従来のソフトウェアテストライフサイクルでは、アプリケーションが 安定しており、要件は満たされている. それは、 かなりの時間高度なスキルを持つ自動化スペシャリストと、それなりの初期費用がかかります。基本的な目的は、長期的にコストを削減し、既存のテストケース周辺で新たな欠陥が発生していないことを確認することです。

自動化テストは本質的に探索的なものではないなぜなら、その主な役割は時間とコストの節約にあるからです。新しい革新的な欠陥を発見するために設計されたものではありません。自動化テストは、主に既に存在する動作を確認するものです。

したがって、この2つの設定はテストスイートに全く異なる要求を課すことになる。

因子 ウォーターフォールにおける自動化 アジャイルにおける自動化
アプリケーションの状態 スクリプト作成開始前に安定性と承認が完了していることを確認する スプリントごとに変更を加え、多くの場合、スクリプト作成中に変更を加える。
利用可能な時間 専用の自動化フェーズ 1週間から4週間のスプリント期間内に収まるものなら何でも
誰が脚本を書くのか 自動化専門家からなる別のチーム 配送チーム、テスター、開発者が一緒に
主な目標 大規模な回帰分析スイート全体にわたる長期的なコスト削減 構築したばかりの増分に関する迅速なフィードバック
メンテナンスリスク 低い。なぜなら要求はゆっくりと変化するからである。 要求は常に変化するため、高い。

アジャイル手法における自動化の方法

アジャイル開発手法は、その定義によれば、煩雑な文書作成を排除することで、新しいアイデアを迅速に実行に移し、人々が自由に交流できるようにすることを目的としています。書類作成よりも探索的な作業を重視するのです。

アジャイル開発は、煩雑なドキュメント作成を否定し、探索的テストを重視する。

アジャイル開発手法の根本的な理念と自動テストの間には、実際には矛盾が存在します。アジャイルチームは、自動化する範囲を減らすのではなく、自動化する対象を絞り込むことでこの矛盾を解決します。つまり、機能開発と同じスプリント内でチェックを作成し、保守コストが最も低いユニットレベルやAPIレベルにまで落とし込み、すべてのビルドで実行します。

アジャイルテスト自動化の基本ポイント

スプリントのリソースを自動化に投入する前に、スクリプトがそもそも完成できるかどうかを決定する要素を検討してください。

  • 設計およびコーディング時間: すべてのスクリプトは、本番環境のコードと同様に、設計、コーディング、レビューされなければならない。
  • テストデータに対する検証: 完成したスクリプトは、信頼できるものとなる前に、既存のテストデータを用いて検証されなければならない。
  • テストの目的: 機能テストと回帰テストは、それぞれ異なるメンテナンスコストと有効期間を伴う。
  • Sprint 長さ: スプリントは1週間から4週間、最も一般的には2週間で行われるため、大規模なスクリプト作成作業を行う余裕はほとんど残されていない。

2つ目の要因は、要件の変更です。アジャイル開発は、定義上、顧客主導の変更に対応するための手法であるため、開発全体を通して頻繁な調整を行うのに適しています。

一方、自動化テストは、安定した要件に対して最も効果を発揮します。アジャイル開発手法のような絶え間ない変化には適していないため、自動化する量よりも、何を自動化するかという選択の方が重要になります。

アジャイル自動化ツール

関連する選択 自動化ツール アジャイル開発手法において自動化テストを導入する際のもう一つの重要な要素は、ライセンスによるセキュリティです。例えば、ライセンス付きの自動化ツールは、様々な種類やレベルのユーザーに対して厳格なセキュリティアクセス基準を課しており、そのテスト自動化フレームワークに属するリソースにアクセスできるユーザーを制限しています。

ライセンス制の自動化ツールはリソースをロックしてしまうが、アジャイル手法は制約が少ない。

一方、アジャイル開発手法は、チームメンバー間のオープンなコラボレーションと自由な交流を重視します。アクセス制限的なポリシーは、こうした結束を阻害し、プロジェクトの成功に役立たない、あるいは貢献しない結果を生み出す可能性があります。

最優先事項は、アジャイルプロセスで許容される時間内に、質の高い自動化スクリプトを提供することです。テストケースの候補を慎重に選択することで、作成されたスクリプトを後で再利用でき、かつ割り当てられた時間内に完了させることができます。

アジャイル開発環境においても、いくつかのテストは実施する必要があります。特に回帰テストは重要です。次のセクションでは、自動化テストが適用される状況と、それぞれがアジャイルテストにどのように対応しているかを解説します。

自動化テスト Concepts アジャイルに適用する場合

以下の表は、テストの自動化を正当化する7つの典型的な条件を取り上げ、それぞれに対するアジャイルな解決策を示しています。アジャイルのスプリントにスムーズに移行できるのは3つのみで、その3つはいずれも回帰テストの形式をとっています。

# 自動化テストの概念 アジャイル手法に関する回答
1 この検査は頻繁に繰り返す必要がある。 ここで回帰テストという概念が登場する。
2 テストのワークフローと検証方法は、時間の経過とともにゆっくりと進化し変化していく。 アジャイルテストには適していません。アジャイルテストでは、要件が頻繁に変更されるためです。
3 このテストは、見た目や操作性、色、テーブルレイアウトではなく、ビジネスプロセスやワークフローを検証するものです。 このシナリオは、手動テストを伴うものと考えることができます。
4 この検査は、規制機関に結果を提出するものであり、規制機関は、その結果を法令遵守の正式な証拠として電子的に記録し、保管することを要求する。 徹底的なレベルの文書化はアジャイル開発手法の一部ではないため、アジャイル開発手法には適していません。
5 このテストは非常に反復的であるか、毎回全く同じように実行しなければならない手順が多く、手作業によるテスト担当者の疲労を避ける必要がある。 アジャイル開発手法には適していません。
6 選択した自動化ツールを使用すれば、テストの合否結果を比較的容易に判定し、記録することができる。 アジャイルテストにおける回帰テストなど、反復的で骨の折れる作業を必要とする場合に適しています。
7 テストでは、アプリケーションに大量のデータを投入する必要がある。 回帰テストとして組み込むことができます。

自動化テストの7つの概念と、それに対応するアジャイル手法の回答

よくあるご質問

階層構造の原則:ベースに高速な単体テストを多数配置し、中間層に統合テストとAPIテストを少数配置、最上位層にエンドツーエンドのUIテストを薄く配置する。これにより、スプリント規模のテストスイートを高速かつ低コストで維持できる。

ストーリーの自動チェックは、そのストーリーと同じスプリント内で作成されます。チームは通常、スプリント1で単体テストから始めます。なぜなら、製品が十分に安定するまで待つと、手動テストの負債が積み上がってしまうからです。

ピラミッド構造に合わせて各段階の順序を決定します。単体テストは最も高速なため最初に実行し、次に統合テストとAPIテスト、最後に小規模なエンドツーエンドテストを実行します。障害は最もコストのかからない段階で最初に発生するため、問題が早期に発見されやすくなります。 Guru99では、メカニズムについて説明します。 継続的インテグレーション.

最も一般的な原因は、ピラミッド構造が逆転していること、つまり、動作が遅く脆弱なUIテストに多額の投資が行われている一方で、ユニットレベルのテストにはほとんど投資されていないことです。その他の原因としては、ストーリーの見積もりから自動化が除外されていることや、リリースを阻止するほど信頼されていないテストスイートなどが挙げられます。

開発チーム全体が関与する。開発者は単体テストを担当し、テスターはAPIとエンドツーエンドのレイヤーを担当し、両者が互いの作業をレビューする。下流の自動化チームが別途存在すると、スクラムが排除しようとしている引き継ぎの遅延が再び発生する。

ブロッキングパイプラインから隔離し、不具合を報告して、スプリント内で修正または削除してください。不安定なテストをメイン実行に残しておくと、チームは赤いビルドを無視するようになり、カバレッジの損失以上のコストが発生します。

自己修復型ロケーターは、移動された要素をそのコンテキストから再識別することで、エラーを発生させることなく、メンテナンス時に発生する障害を削減します。また、モデルはテストデータを生成し、差分に対して実行するテストの優先順位付けを行い、重複する障害をクラスタリングすることで、スプリントチームが一度のトリアージで問題を解決できるようにします。

それはそれらを素早く作成する。 GitHubコパイロット 既存のコードからページオブジェクト、フィクスチャ、アサーションをスキャフォールディングし、多くのタイプを削除しますping. Rev生成されたテストは、必要な動作ではなく、現在の動作を主張する可能性があるため、すべてのドラフトを確認してください。