Agile-testing-quick-guide

提供:Dev Guides
移動先:案内検索

アジャイルテスト-概要

  • アジャイル*は、開発とテストの両方のアクティビティが同時に行われる反復的な開発方法です。 テストは独立したフェーズではありません。コーディングとテストは対話形式で段階的に行われ、最終的な高品質の製品が得られ、顧客の要件を満たします。 さらに、継続的な統合により、早期の欠陥除去が可能になり、時間、労力、コストが節約されます。

アジャイルマニフェスト

アジャイルマニフェストは2001年にソフトウェア開発者チームによって公開され、変化する要件と顧客の関与に対応する開発チームの重要性を強調しています。

アジャイルマニフェストは-

私たちは、ソフトウェアを開発し、他の人がそれを行うのを支援することにより、ソフトウェアを開発するより良い方法を発見しています。 この作業を通じて、私たちは価値になっています-

  • プロセスとツールを介した個人と相互作用。
  • 包括的なドキュメントよりも機能するソフトウェア。
  • 契約交渉に関する顧客コラボレーション。
  • 計画に従うことによる変化への対応。

つまり、右側の項目には値がありますが、左側の項目にはさらに値を付けます。

アジャイルテストとは何ですか?

アジャイルテストは、アジャイルソフトウェア開発の原則に従うソフトウェアテスト方法です。

アジャイルテストには、プロジェクトチームのすべてのメンバーが参加し、テスターが特別な専門知識を提供します。 テストは独立したフェーズではなく、要件、設計とコーディング、テストケース生成などのすべての開発フェーズに織り込まれています。 テストは、開発ライフサイクルを通じて同時に行われます。

さらに、テスターが開発ライフサイクル全体に機能横断型チームメンバーとともに参加することで、より良い設計とコードで、顧客の要件に応じたソフトウェアの構築に向けたテスターの貢献が可能になります。

アジャイルテストは、すべてのレベルのテストとすべてのタイプのテストを対象としています。

アジャイルテスト対。 ウォーターフォールテスト

ウォーターフォール開発方法論では、開発ライフサイクルアクティビティは連続したフェーズで発生します。 したがって、テストは別のフェーズであり、開発フェーズの完了後にのみ開始されます。

以下は、アジャイルテストとウォーターフォールテストの違いのハイライトです-

Agile Testing Waterfall Testing
Testing is not a separate phase and occurs concurrently with development. Testing is a separate phase. All levels and types of testing can begin only after the completion of development.
Testers and developers work together. Testers work separately from developers.
Testers are involved in coming up with requirements. This helps in requirements mapping to the behaviors in the real world scenario and also framing the acceptance criteria. Also, logical Acceptance Test Cases would be ready along with the requirements. Testers may not be involved in the requirements phase.
Acceptance Testing is done after every iteration and customer feedback is sought. Acceptance Testing is done only at the end of the project.
Every iteration completes its own testing thus allowing regression testing to be implemented every time new functions or logic are released. Regression Testing can be implemented only after the completion of development.
No time delays between coding and testing. Usual time delays between coding and testing.
Continuous testing with overlapping test levels. Testing is a timed activity and test levels cannot overlap.
Testing is a best practice. Testing is often overlooked.

アジャイルテストの原則

アジャイルテストの原則は次のとおりです-

  • テストはプロジェクトを前進させます-継続的なテストは、継続的な進捗を保証する唯一の方法です。 アジャイルテストは継続的にフィードバックを提供し、最終製品はビジネスニーズを満たします。
  • テストはフェーズではありません-アジャイルチームは開発チームと一緒にテストを行い、特定の反復中に実装された機能が実際に実行されることを確認します。 テストは後のフェーズのために保持されません。
  • すべてのテスト-アジャイルテストでは、アナリスト、開発者、テスターを含むチーム全体がアプリケーションをテストします。 すべての反復の後、顧客でさえユーザー受け入れテストを実行します。
  • フィードバックループの短縮-アジャイルテストでは、ビジネスチームは各反復の製品開発を知ることができます。 彼らはすべての反復に関与しています。 継続的なフィードバックにより、フィードバックの応答時間が短縮されるため、それを修正するためのコストが削減されます。
  • コードをきれいに保つ-欠陥は同じ反復内で発生するため修正されます。 これにより、開発のあらゆるマイルストーンでクリーンなコードが保証されます。
  • 軽量ドキュメント-包括的なテストドキュメントの代わりに、アジャイルテスター-
  • 再利用可能なチェックリストを使用して、テストを提案します。
  • 付随的な詳細ではなく、テストの本質に焦点を当てます。
  • 軽量のドキュメントスタイル/ツールを使用します。
  • 探索的テストのために、チャーターでテストのアイデアをキャプチャします。
  • 複数の目的でドキュメントを活用します。
  • 手動テストと自動テストに1つのテストアーティファクトを活用-同じテストスクリプトアーティファクトを、手動テストと自動テストの入力として利用できます。 これにより、手動テスト文書の必要性と、同等の自動化テストスクリプトが不要になります。
  • 「完了」、完了しただけではありません-アジャイルでは、機能は開発後にではなく、開発およびテスト後に実行されると言われています。
  • *テスト最終対 Test Driven *-要件とともにテストケースが作成されます。 したがって、テストによって開発を推進できます。 このアプローチは、テスト駆動開発(TDD)および受け入れテスト駆動開発(ATDD)と呼ばれます。 これは、ウォーターフォールテストの最終段階としてのテストとは対照的です。

アジャイルテストアクティビティ

プロジェクトレベルでのアジャイルテストアクティビティは次のとおりです-

  • リリース計画(テスト計画)
  • すべての反復に対して、
  • 反復中のアジャイルテストアクティビティ
  • 回帰試験
  • リリースアクティビティ(テスト関連)

反復中のアジャイルテストアクティビティには、以下が含まれます-

  • 反復計画への参加
  • テストの観点からタスクを見積もる
  • 機能の説明を使用したテストケースの作成
  • 単体テスト
  • 統合テスト
  • 機能テスト
  • 欠陥修正
  • 統合テスト
  • 受け入れ試験
  • テストの進捗状況の報告
  • 欠陥追跡

アジャイルテスト-方法論

アジャイルは反復的な開発方法論であり、プロジェクトチーム全体がすべてのアクティビティに参加します。 顧客と自己組織化チームとのコラボレーションを通じて、反復が進むにつれて要件が進化します。 コーディングとテストは対話形式で段階的に行われるため、開発の過程で最終製品の品質が向上し、顧客の要件が確実に満たされます。

すべての反復により、統合された実際の製品が増加し、ユーザー受け入れテストに提供されます。 このようにして得られた顧客フィードバックは、次/後続の反復への入力になります。

プロジェクトチーム

継続的な統合、継続的な品質

継続的インテグレーションは、アジャイル開発の成功の鍵です。 必要に応じてリリースの準備ができるように、少なくとも毎日、頻繁に統合します。 アジャイルでのテストは、開発のすべてのフェーズの必須コンポーネントとなり、製品の継続的な品質を保証します。 プロジェクトに関わるすべての人からの絶え間ないフィードバックは、製品の品質を高めます。

アジャイルでは、コミュニケーションが最重要であり、顧客の要求は必要に応じて受け取られます。 これにより、すべての入力が考慮され、開発中に高品質の製品が利用できるという顧客満足度が得られます。

アジャイル手法

アジャイル開発をサポートするアジャイル手法がいくつかあります。 アジャイル手法には以下が含まれます-

スクラム

スクラムは、チーム中心のアプローチに重点を置いたアジャイル開発手法です。 すべてのプロジェクト開発活動にチーム全体が参加することを提唱しています。

XP

eXtreme Programmingは顧客中心であり、絶えず変化する要件に焦点を当てています。 頻繁なリリースと顧客からのフィードバックにより、最終製品は、プロセス中に明確にされた顧客の要件を満たす品質のものになります。

結晶

Crystalは、チャーター、周期的配達、およびまとめに基づいています。

  • チャーターには、開発チームの編成、予備的な実行可能性分析の実行、初期計画と開発方法論の到着が含まれます。
  • 2つ以上の配信サイクルを使用する周期的配信は、開発フェーズと最終的な統合製品配信に焦点を当てています。
  • まとめ中に、ユーザー環境への展開、展開後のレビュー、および反映が実行されます。

FDD

機能駆動開発(FDD)には、機能の設計と構築が含まれます。 FDDと他のアジャイル開発方法論の違いは、機能が特定のフェーズと短いフェーズで別々に開発されることです。

DSDM

Dynamic Software Development Method(DSDM)は、Rapid Application Development(RAD)に基づいており、アジャイルフレームワークに合わせて調整されています。 DSDMは、頻繁に製品を提供することに焦点を当てており、ユーザーを積極的に関与させ、チームが迅速な意思決定を行えるようにします。

無駄のないソフトウェア開発

リーンソフトウェア開発では、無駄をなくし、顧客に価値を提供することに重点が置かれています。 これにより、迅速な開発と価値のある製品がもたらされます。

無駄には、部分的に行われた作業、無関係な作業、顧客が使用していない機能、欠陥などが含まれます。 それは配達の遅れに追加します。

  • リーン原則*は-
  • 無駄をなくす
  • 学習を増幅する
  • コミットメントの遅延
  • チームに力を与える
  • 高速配信
  • で整合性を構築
  • 全体を見る

かんばん

かんばんは、チームメンバーに過負荷をかけずに、ジャストインタイム(JIT)配信に重点を置いて作業を管理することに焦点を当てています。 タスクが表示され、すべての参加者が表示され、チームメンバーがキューから作業をプルします。

かんばんはに基づいています-

  • かんばんボード(開発全体にわたって視覚的で永続的)
  • 仕掛品(WIP)の制限
  • リードタイム

アジャイルテストの方法論

高品質の製品を提供するために、アジャイルかどうかに関係なく、テストプラクティスはすべてのプロジェクトに対して明確に定義されています。 アジャイルテストでは、従来のテストの原則がよく使用されます。 それらの1つは、に焦点を当てた早期テストです-

  • システムの動作を表現するためのテストケースの作成。
  • 早期欠陥防止、検出、および削除。
  • 適切なテストタイプが適切なタイミングで適切なテストレベルの一部として実行されるようにします。

ここで説明したすべてのアジャイル手法では、アジャイルテスト自体が手法です。 すべてのアプローチで、テストケースはコーディングの前に作成されます。

このチュートリアルでは、アジャイルテストの方法論としてスクラムに焦点を当てます。

他の一般的に使用されるアジャイルテスト方法論は-

  • テスト駆動開発(TDD)-テスト駆動開発(TDD)は、テストに基づいたコーディングに基づいています。
  • * Acceptance Test-Driven Development(ATDD)*-Acceptance Test-Driven Development(ATDD)は、顧客、開発者、テスター間のコミュニケーションに基づいており、事前に定義されたAcceptance CriteriaおよびAcceptance Test Casesに基づいています。
  • 行動駆動開発(BDD)-行動駆動開発(BDD)のテストは、開発中のソフトウェアの予想される動作に基づいています。

アジャイルテストのライフサイクル

スクラムでは、テストアクティビティに含まれるもの-

  • テストケースとして示されたシステムの予想される動作に基づいたユーザーストーリーへの貢献
  • テストの労力と欠陥に基づくリリース計画
  • ユーザーストーリーと欠陥に基づくスプリント計画
  • 継続的なテストによるスプリントの実行
  • スプリント完了後の回帰テスト
  • テスト結果の報告
  • 自動化テスト

テストは反復的であり、以下の図に示すようにスプリントに基づいています-

ライフサイクル

アジャイルテスト-チームのテスター

アジャイル開発はチーム中心であり、開発者とテスターはすべてのプロジェクトと開発活動に参加します。 チームワークは、アジャイルプロジェクトでのテストの成功を最大化します。

アジャイルチームのテスターは、すべてのプロジェクトアクティビティに参加して貢献すると同時に、テストの専門知識を活用する必要があります。

アジャイルテスターに​​は、従来のテストスキルが必要です。 さらに、アジャイルテスターのニーズ-

  • 優れた対人スキル。
  • チームメンバーおよび利害関係者と積極的かつソリューション指向で行動する能力。
  • 製品についての重要な、品質志向の、懐疑的な考え方を表示する機能。
  • 利害関係者から積極的に情報を取得するために積極的に行動する能力。
  • テスト可能なユーザーストーリー、受け入れ基準を定義する際に、顧客や利害関係者と効果的に連携するスキル。
  • 開発者と協力して高品質のコードを作成できる優れたチームメンバーになる才能。
  • 適切なテストケースを適切なタイミングで適切なレベルで実行し、スプリントの期間内に適切に実行するためのテストスキルの使いやすさ。
  • テスト結果、テストの進捗状況、製品の品質を評価および報告する機能。
  • テストケースの変更、追加、改善など、変更に迅速に対応するためのオープン性。
  • 仕事を自己組織化する可能性。
  • 継続的なスキルの成長への熱意。
  • テスト自動化、テスト駆動開発(TDD)、受入テスト駆動開発(ATDD)、行動駆動開発(BDD)、および経験ベースのテストの能力。

アジャイルチームにおけるテスターの役割

アジャイルチームのテスターは、すべてのプロジェクトおよび開発活動に参加して、最高のテスト専門知識を提供します。

アジャイルテスターのアクティビティには次のものが含まれます-

  • テストツールの適切な使用を確保する。
  • テスト環境とテストデータの構成、使用、管理。
  • テストの関連する側面で他のチームメンバーを指導する。
  • リリースおよびスプリントの計画中に適切なテストタスクがスケジュールされていることを確認します。
  • テスト戦略の理解、実装、更新。
  • 開発者、顧客、利害関係者と協力して、テスト容易性、一貫性、完全性の観点から要件を明確にします。
  • 適切なテストを適切なタイミングで適切なテストレベルで実行する。
  • 欠陥を報告し、それらを解決するためにチームと協力します。
  • 適用可能なすべてのカバレッジディメンションにわたるテストカバレッジの測定とレポート。
  • スプリントの回顧展に参加し、改善を積極的に提案および実施します。

アジャイルライフサイクルでは、テスターが重要な役割を果たします-

  • チームワーク
  • 試験計画
  • スプリントゼロ
  • 統合
  • アジャイルテストの実践

チームワーク

アジャイル開発では、チームワークは基本的であり、したがって、次が必要です-

  • 共同アプローチ-テスト戦略、テスト計画、テスト仕様、テスト実行、テスト評価、およびテスト結果のレポートに関する機能横断型チームメンバーとの連携。 他のチームアクティビティと組み合わせて、テストの専門知識を提供します。
  • 自己組織化-他のチームメンバーの専門知識を融合することで、テストの目標を達成するためにスプリント内で計画と組織化を行います。
  • エンパワーメント-チームの目標を達成するために適切な技術的決定を下す。
  • コミットメント-顧客と利害関係者の要求に応じて、製品の動作と特性の理解と評価にコミットします。
  • 透明-オープンで、コミュニケーションが取れ、説明責任があります。
  • 信頼性-テスト戦略、その実装、および実行の信頼性を保証します。 顧客と関係者にテスト戦略に関する情報を提供します。
  • フィードバックにオープン-スプリントの回顧展に参加して、成功と失敗の両方から学びます。 顧客からのフィードバックを求め、質の高い成果物を確保するために迅速かつ適切に行動する。
  • 弾力性-変更への対応。

試験計画

テスト計画は、リリース計画中に開始し、各スプリント中に更新する必要があります。 テスト計画は、次のタスクをカバーする必要があります-

  • テストの範囲、テストの範囲、テストおよびスプリントの目標を定義する。
  • テスト環境、テストツール、テストデータ、構成を決定します。
  • 機能と特性のテストを割り当てます。
  • テストタスクのスケジューリングとテストの頻度の定義。
  • テスト方法、手法、ツール、テストデータを特定する。
  • 先行タスク、専門知識、トレーニングなどの前提条件を確認します。
  • 機能、コード、システムコンポーネント、ベンダー、テクノロジー、ツール、アクティビティ、タスク、チーム、テストタイプ、テストレベル、制約などの依存関係を特定する。
  • 顧客/ユーザーの重要性と依存関係を考慮した優先順位の設定。
  • テストに必要な時間と労力で到着する。
  • 各スプリント計画でのタスクの特定。

スプリントゼロ

スプリントゼロでは、最初のスプリントの前に準備作業が行われます。 テスターは、次の活動でチームと協力する必要があります-

  • スコープの特定
  • ユーザーストーリーをスプリントに分割する
  • システムアーキテクチャの作成
  • ツールの計画、取得、インストール(テストツールを含む)
  • すべてのテストレベルの初期テスト戦略の作成
  • テストメトリックの定義
  • 「完了」の定義とも呼ばれる受け入れ基準の指定
  • 終了基準の定義
  • スクラムボードの作成
  • スプリント全体でテストの方向を設定する

統合

アジャイルでは、開発ライフサイクルのどの時点でも、高品質の実用製品をリリースする準備ができている必要があります。 これは、開発の一環としての継続的な統合を意味します。 アジャイルテスターは、継続的なテストとの継続的な統合をサポートする必要があります。

これを達成するには、テスターがする必要があります-

  • 統合戦略を理解する。
  • 機能と機能間のすべての依存関係を特定します。

アジャイルテストの実践

アジャイルテスターは、アジャイルプロジェクトでのテストのためにアジャイルプラクティスを適応させる必要があります。

  • ペアリング-2人のチームメンバーが同じキーボードで一緒に作業します。 それらの1つがテストするので、他のテストはテストをレビュー/分析します。 2人のチームメンバーは
  • 1人のテスターと1人の開発者
  • 1人のテスターと1人のビジネスアナリスト
  • 2つのテスター
  • インクリメンタルテスト設計-テストケースはユーザーストーリーから構築され、単純なテストから始まり、より複雑なテストに移行します。
  • マインドマッピング-マインドマップは、視覚的に情報を整理するための図です。 マインドマッピングは、必要なテストセッション、テスト戦略、テストデータに関する情報を整理できるアジャイルテストの効果的なツールとして使用できます。

アジャイルテスト-アクティビティの追跡

テストの状態を伝えることができます-

  • 毎日のスタンドアップミーティング中
  • 標準のテスト管理ツールを使用する
  • メッセンジャー経由

テスト合格ステータスによって決定されるテストステータスは、タスクが「完了」したかどうかを判断する上で重要です。 完了は、タスクパスのすべてのテストを意味します。

テストの進捗

テストの進行状況は次を使用して追跡できます-

  • スクラムボード(アジャイルタスクボード)
  • バーンダウンチャート
  • 自動テスト結果

テストの進捗状況は、開発の進捗状況にも直接影響します。 これは、承認基準に達した後にのみ、ユーザーストーリーを*完了*ステータスに移動できるためです。 これは、受け入れ基準がテストステータスによって判断されるため、テストステータスによって決定されます。

テストの進行に遅延や障害がある場合、チーム全体が議論し、協力して同じ問題を解決します。

アジャイルプロジェクトでは、変更が頻繁に行われます。 多くの変更が行われると、テストステータス、テストの進行状況、製品の品質が絶えず進化することが予想されます。 アジャイルテスターは、適切な決定が適切なタイミングで行われ、各反復の正常な完了のために軌道にとどまるように、チームにその情報を取得する必要があります。

変更が発生すると、以前の反復の既存の機能に影響を与える可能性があります。 そのような場合、回帰リスクに効果的に対処するために、手動および自動テストを更新する必要があります。 回帰テストも必要です。

製品の品質

製品品質指標には以下が含まれます-

  • テストの合格/不合格
  • 欠陥の発見/修正
  • テスト範囲
  • テストの合格/不合格率
  • 欠陥発見率
  • 欠陥密度

製品品質メトリックの収集とレポートの自動化は、次のことに役立ちます-

  • 透明性を維持します。
  • 関連する必要なすべてのメトリックを適切なタイミングで収集します。
  • 通信遅延なしの即時報告。
  • テスターがテストに集中できるようにします。
  • メトリックの誤用のフィルタリング。

製品全体の品質を確保するために、アジャイルチームは、製品が顧客の期待に応えているかどうかについて顧客からのフィードバックを取得する必要があります。 これは各反復の最後に実行する必要があり、フィードバックは後続の反復の入力になります。

主な成功要因

アジャイルプロジェクトでは、アジャイルテストが成功すれば、高品質の製品を提供できます。

アジャイルテストを成功させるには、次の点を考慮する必要があります-

  • アジャイルテストは、テストファーストおよび継続的なテストアプローチに基づいています。 したがって、テストラストアプローチに基づいて構築された従来のテストツールは適切ではない場合があります。 したがって、アジャイルプロジェクトでテストツールを選択する際には、アジャイルテストとの整合性を検証する必要があります。
  • 開発ライフサイクルの早い段階でテストを自動化することにより、総テスト時間を短縮します。
  • アジャイルテスターは、開発リリースのスケジュールに合わせてペースを維持する必要があります。 したがって、製品の品質を目標として、テスト活動の適切な計画、追跡、および再計画をその場で行う必要があります。
  • 手動テストは、プロジェクトのテストの80%を占めています。 したがって、専門知識を持つテスターはアジャイルチームの一員である必要があります。
  • これらのテスターが開発ライフサイクル全体にわたって専門知識を備えているため、チーム全体が顧客の期待に応える高品質の製品に集中できます。
  • エンドユーザーが期待する製品の動作を強調するユーザーストーリーを定義する。
  • 顧客の期待に応じて、ユーザーストーリーレベル/タスクレベルで受け入れ基準を特定します。
  • テスト活動の労力と期間の推定。
  • テスト活動の計画。
  • 開発チームと連携して、事前のテスト設計で要件を満たすコードを確実に作成します。
  • 最初のテストと継続的なテストを実行して、予定時刻に受け入れ基準を満たしている完了ステータスに到達していることを確認します。
  • スプリント内のすべてのレベルでテストを保証します。
  • 各スプリントの終了時の回帰テスト。
  • プロジェクトの成功に役立つ製品メトリックの収集と分析。
  • 欠陥を分析して、現在のスプリントで修正する必要があるものと、後続のスプリントまで遅延させることができるものを特定します。
  • お客様の観点から重要なことに焦点を当てます。

リサクリスピンは、アジャイルテストの成功のための7つの重要な要因を定義しました-

  • チーム全体のアプローチ-この種のアプローチでは、開発者がテスターをトレーニングし、テスターが他のチームメンバーをトレーニングします。 これは、プロジェクトのすべてのタスクを誰もが理解するのに役立ち、それによってコラボレーションと貢献が最大限の利益を得られます。 テスターと顧客とのコラボレーションも、彼らの期待を最初から正しく設定し、受け入れ基準をテストに合格するために必要なものに変換するための重要な要素です。
  • アジャイルテストの考え方-テスターは、継続的に品質を改善し、チームの他のメンバーと絶えず協力することに積極的です。
  • 回帰テストの自動化-テスト容易性の設計とテストによる開発の推進。 シンプルに始めて、チームがツールを選択できるようにします。 アドバイスを提供する準備をしてください。
  • フィードバックの提供と取得-これはアジャイルの中核的な価値であるため、チーム全体がフィードバックを受け入れる必要があります。 テスターは専門のフィードバックプロバイダーであるため、関連する必要な情報に集中する必要があります。 その見返りとして、フィードバックの取得時に、テストケースの変更とテストに対応する必要があります。
  • コアアジャイルプラクティスの基盤を構築します-コーディング、継続的インテグレーション、共同テスト環境、増分作業、変更の受け入れ、相乗効果の維持に加えてテストに焦点を当てます。
  • 顧客とのコラボレーション-例を引き出し、理解して、製品の動作に対応する要件を確認し、受け入れ基準を設定し、フィードバックを取得します。
  • 全体像を見る-現実世界のテストデータを使用し、他の領域への影響について考えて、ビジネス向けのテストと例を使用して開発を推進します。

アジャイルテスト-重要な属性

この章では、アジャイルテストの重要な属性について説明します。

アジャイルテストの利点

アジャイルテストの利点は次のとおりです-

  • 迅速かつ継続的に完全にテストされた製品と顧客フィードバックを求めることによる顧客満足。
  • 顧客、開発者、およびテスターは相互に継続的にやり取りするため、サイクル時間が短縮されます。
  • アジャイルテスターは、テストの専門知識を提供する要件の定義に参加して、実行可能なものに焦点を合わせます。
  • アジャイルテスターは、テストの労力と時間を評価する推定に参加します。
  • 受入基準を反映した初期のテスト設計。
  • テストの要件をチーム全体で統合し、欠点を回避します。
  • チーム全体が常に製品の品質に重点を置いています。
  • テスト合格を反映する Done ステータスの定義は、要件が満たされていることを確認します。
  • 遅延またはブロックに関する継続的なフィードバックにより、チーム全体の努力ですぐに解決できます。
  • 変化する要件に迅速に対応し、すぐに対応します。
  • 継続的インテグレーション駆動の回帰テスト。
  • 開発とテストの間に時間の遅れはありません。 最初にテストし、継続的なテストアプローチに従います。
  • 自動化テストは開発ライフサイクルの早い段階で実装され、それにより総テスト時間と労力が削減されます。

アジャイルテストのベストプラクティス

以下のベストプラクティスに従ってください-

  • すべてのレベルのすべてのタイプのテストに関する専門知識を持つテスターの参加。
  • 要件の定義に参加し、製品の予想される動作について顧客と協力するテスター。
  • 開発者や顧客と継続的にフィードバックを共有するテスター。
  • 開発作業に合わせて、最初と継続的なテストアプローチをテストします。
  • 品質の高い製品を提供することに重点を置いて、テストステータスとテストの進捗を迅速かつ継続的に追跡
  • サイクル時間を短縮するための開発ライフサイクルの早い段階での自動化テスト。
  • 回帰テストを実行するには、自動化テストを効果的な方法として活用します。

アジャイルテストの課題

アジャイルテストには次の課題があります-

  • ビジネスとマネジメントによるアジャイルのアプローチとその制限を理解しないと、達成できない期待につながる可能性があります。
  • アジャイルはチーム全体のアプローチに従いますが、誰もがテストプラクティスの本質を知っているわけではありません。 テスターは他の人を指導することをお勧めしますが、実際のシナリオでは、タイムボックス化されたスプリント(反復)では実行不可能な場合があります。
  • テストファーストアプローチでは、開発者はテスターフィードバックに基づいてコーディングを行う必要がありますが、実際のシナリオでは、開発者は顧客またはビジネスからの要件に基づいてコーディングを行うことに慣れています。
  • 品質製品のアカウンタビリティはアジャイルチーム全体にありますが、初期段階では、開発者は実装モードに入るほど品質に焦点を合わせることはできません。
  • 継続的インテグレーションでは、自動化する必要がある場合でも、かなりの労力を必要とする回帰テストが必要です。
  • テスターはアジャイルマインドセットを使用して変更に適応できますが、結果として生じるテストの変更とテストに対応することは、スプリント中に完了することを目標とすることは実行不可能です。
  • 手動テストの労力と時間を削減できるように、早期自動化をお勧めします。 しかし、実際のシナリオでは、自動化およびテストの自動化が可能なテストに到達するには時間と労力が必要です。

アジャイルテストのガイドライン

アジャイルテストの実行中は、次のガイドラインを使用してください。

  • リリース計画に参加して、必要なテストアクティビティを特定し、テスト計画の初期バージョンを作成します。
  • 推定セッションに参加して、テストの労力と期間に到達し、テストアクティビティが反復に対応できるようにします。
  • ユーザーストーリー定義に参加して、受け入れテストケースに到達します。
  • すべてのスプリントプランニングミーティングに参加して、範囲を理解し、テスト計画を更新します。
  • スプリント中に開発チームと継続的に協力して、スプリント内でテストとコーディングを成功させます。
  • 毎日のスタンドアップミーティングに参加し、テストの遅延または妨害がある場合はそれを伝えて、すぐに解決します。
  • テストステータス、テストの進捗状況、製品の品質を定期的に追跡および報告します。
  • 変更に対応する準備を整え、テストケース、テストデータの変更に対応します。
  • スプリント回顧展に参加して、学習したベストプラクティスと教訓を理解し、貢献してください。
  • 各スプリントで顧客フィードバックを取得するために協力します。

アジャイルテスト-象限

従来のテストの場合と同様に、アジャイルテストもすべてのテストレベルをカバーする必要があります。

  • 単体テスト
  • 統合テスト
  • システムテスト
  • ユーザー受け入れテスト

単体テスト

  • 開発者によるコーディングとともに完了
  • 100%の設計カバレッジを保証するテストケースを作成するテスターに​​よるサポート
  • 単体テストケースと単体テストの結果を確認する必要があります
  • 未解決の重大な欠陥(優先度と重大度による)は残されません
  • すべての単体テストは自動化されています

統合テスト

  • スプリントの進行に合わせて継続的インテグレーションとともに実行
  • すべてのスプリントが完了した後、最後に完了
  • すべての機能要件がテストされています
  • ユニット間のすべてのインターフェイスがテストされます
  • すべての欠陥が報告されます
  • テストは可能な限り自動化されています

システムテスト

  • 開発が進むにつれて完了
  • ユーザーストーリー、機能、機能がテストされています
  • 実稼働環境で行われたテスト
  • 品質テストが実行されます(パフォーマンス、信頼性など)
  • 欠陥が報告されます
  • テストは可能な限り自動化されています

ユーザー受け入れテスト

  • 各スプリントの終わりとプロジェクトの終わりに完了
  • お客様が行った。 フィードバックはチームによって行われます
  • フィードバックは、後続のスプリントへの入力になります
  • スプリントのユーザーストーリーは、テスト可能であることが事前に検証されており、定義済みの承認基準に準拠しています。

試験の種類

  • コンポーネントテスト(ユニットテスト)
  • 機能テスト(ユーザーストーリーテスト)
  • 非機能テスト(パフォーマンス、負荷、ストレスなど)
  • 受入試験

テストは、完全に手動、完全に自動、手動と自動の組み合わせ、またはツールでサポートされる手動にすることができます。

プログラミングおよび批評製品テストのサポート

テストは-

  • サポート開発(サポートプログラミング)-サポートプログラミングテストはプログラマーによって使用されます。
  • システムの特定の動作を実現するために記述する必要があるコードを決定するため
  • 新しいコードがシステムの残りの動作を妨げないことを確認するために、コーディング後に実行する必要があるテスト
  • 検証のみ(Critique Product)-Critique Product Testsは、完成品の不備を発見するために使用されます。

ビジネス向けおよびテクノロジー向けテスト

いつ実行するテストを決定するには、テストがであるかどうかを決定する必要があります-

  • ビジネス向け、または
  • 技術面

ビジネス向けテスト

テストは、ビジネスドメインからの言葉で囲まれた質問に答える場合、ビジネス向けのテストです。 これらはビジネスの専門家に理解されており、システムの振る舞いをリアルタイムのシナリオで説明できるように興味を持っています。

技術面のテスト

テストは、テクノロジードメインからの言葉で囲まれた質問に答える場合、テクノロジーに面したテストです。 プログラマーは、テクノロジーの明確化に基づいて、何を実装する必要があるかを理解しています。

テストタイプのこれら2つの側面は、Brian Marickによって定義されたアジャイルテスト作業領域を使用して表示できます。

アジャイルテストの象限

テストタイプの2つの側面を組み合わせて、次のアジャイルテスト作業領域はブライアンマリックによって導き出されます-

象限儀

アジャイルテスト作業領域は、チームが必要なテストを識別、計画、実行するのに役立つ分類法を提供します。

  • *象限Q1 *-ユニットレベル、テクノロジーフェイシング、および開発者のサポート。 ユニットテストはこの象限に属します。 これらのテストは自動テストにすることができます。
  • *象限Q2 *-システムレベル、ビジネス向け、および製品動作の適合。 機能テストはこの象限に属します。 これらのテストは手動または自動のいずれかです。
  • *象限Q3 *-システムまたはユーザーの受け入れレベル、ビジネスに直面しており、リアルタイムシナリオに焦点を当てています。 ユーザー受け入れテストはこの象限に属します。 これらのテストは手動です。
  • *象限Q4 *-システムまたは運用の受け入れレベル、テクノロジーに直面し、パフォーマンス、負荷、ストレス、保守性、スケーラビリティテストに焦点を当てています。 これらのテストには、自動化テストとともに特別なツールを使用できます。

これらを組み合わせて、 What-Testing-When を反映するアジャイルテスト作業領域は、次のように視覚化できます-

テスト象限

アジャイルテスト-スクラム

スクラムは、すべてのチームメンバーがすべてのプロジェクトアクティビティに参加しなければならないという意味で、 Whole Team Approach を支持しています。 スクラムチームは、プロジェクトの成果物に対する説明責任で自己組織化しています。 意思決定はチームに委ねられ、その結果、適切なアクションが適切なタイミングで遅延なく実行されます。 また、このアプローチは、1つのアクティビティに制限するのではなく、チームの才能の適切な使用を促進します。 また、テスターはすべてのプロジェクトおよび開発活動に参加し、テストの専門知識を提供します。

チーム全体がテスト戦略、テスト計画、テスト仕様、テスト実行、テスト評価、テスト結果の報告に協力します。

共同ユーザーストーリーの作成

テスターはユーザーストーリーの作成に参加します。 テスターは、システムの可能な動作に関するアイデアを提供します。 これは、顧客やエンドユーザーが実際の環境でシステムを理解し、結果として実際に何を望んでいるかを明確にするのに役立ちます。 これにより、要件の凍結が速くなり、要件が後で変更される可能性も低くなります。

また、テスターは、お客様が同意したすべてのシナリオの受け入れ基準を考え出します。

テスターは、テスト可能なユーザーストーリーの作成に貢献します。

リリース計画

リリース計画は、プロジェクト全体に対して行われます。 ただし、スクラムのフレームワークには、スプリントの実行中により多くの情報が得られるため、反復的な意思決定が含まれます。 したがって、プロジェクトの最初のリリース計画セッションでは、プロジェクト全体の詳細なリリース計画を作成する必要はありません。 関連情報が利用可能なため、継続的に更新できます。

すべてのスプリントエンドにリリースを用意する必要はありません。 リリースは、スプリントのグループの後にできます。 リリースの主な基準は、顧客にビジネス価値を提供することです。 チームは、リリース計画を入力としてスプリントの長さを決定します。

リリース計画は、リリースのテストアプローチとテスト計画の基礎です。 テスターはテスト作業を見積もり、リリースのテストを計画します。 リリース計画が変更された場合、テスターは変更を処理し、リリースのより大きなコンテキストを考慮した適切なテスト基盤を取得する必要があります。 テスターは、すべてのスプリントの最後に必要なテスト作業も提供します。

スプリント計画

スプリント計画は、各スプリントの開始時に行われます。 スプリントバックログは、その特定のスプリントでの実装のために製品バックログからピックアップされたユーザーストーリーで作成されます。

テスターは-

  • スプリント用に選択されたユーザーストーリーのテスト容易性を決定する
  • 受け入れテストを作成する
  • テストレベルを定義する
  • テスト自動化を特定する

テスターは、スプリントでのテストの労力と期間の推定値でテスト計画を更新します。 これにより、タイムボックス化されたスプリント中に必要なテストの時間を確保し、テスト作業の説明責任を果たすことができます。

テスト分析

スプリントが開始されると、開発者が設計と実装のためにストーリー分析を行うため、テスターはスプリントバックログのストーリーのテスト分析を実行します。 テスターは、必要なテストケースを作成します-手動テストと自動テストの両方。

テスト

スクラムチームのすべてのメンバーがテストに参加する必要があります。

  • 開発者は、ユーザーストーリーのコードを開発するときに単体テストを実行します。 ユニットテストは、コードが記述される前に、すべてのスプリントで作成されます。 ユニットテストケースは、低レベルの設計仕様から派生しています。
  • テスターは、ユーザーストーリーの機能的および非機能的な機能を実行します。
  • テスターは、チーム全体が製品の品質に対する集合的な責任を負うように、テストの専門知識を備えたスクラムチームの他のメンバーを指導します。
  • スプリントの最後に、顧客および/またはエンドユーザーはユーザー受け入れテストを実施し、スクラムチームにフィードバックを提供します。 これは、次のスプリントへの入力として形成されます。
  • テスト結果が収集され、維持されます。

自動化テスト

スクラムチームでは、自動化テストが非常に重要です。 テスターは、自動化されたテストと結果の作成、実行、監視、および保守に時間を費やします。 スクラムプロジェクトではいつでも変更が発生する可能性があるため、テスターは、変更された機能のテストと、関連する回帰テストに対応する必要があります。 自動化テストにより、変更に関連するテスト作業の管理が容易になります。 すべてのレベルの自動テストにより、継続的な統合が容易になります。 自動テストは、手動テストよりもはるかに高速に実行され、追加の作業は必要ありません。

手動テストは、探索的テスト、製品の脆弱性、欠陥の予測に重点を置いています。

テスト活動の自動化

テスト活動の自動化により、繰り返し作業の負担が軽減され、コストが削減されます。 自動化

  • テストデータ生成
  • テストデータの読み込み
  • テスト環境への展開の構築
  • テスト環境管理
  • データ出力の比較

回帰試験

スプリントでは、テスターはそのスプリントで新規/修正されたコードをテストします。 ただし、テスターは、以前のスプリントで開発およびテストされたコードも、新しいコードとともに動作することを確認する必要があります。 したがって、スクラムでは回帰テストが重要になります。 自動回帰テストは継続的な統合で実行されます。

構成管理

自動化されたビルドおよびテストフレームワークを使用する構成管理システムは、スクラムプロジェクトで使用されます。 これにより、新しいコードが構成管理システムにチェックインされるときに、静的分析と単体テストを繰り返し実行できます。 また、新しいコードとシステムの継続的な統合も管理します。 自動回帰テストは、継続的インテグレーション中に実行されます。

手動テストケース、自動テスト、テストデータ、テスト計画、テスト戦略、およびその他のテストアーティファクトは、バージョン管理する必要があり、関連するアクセス許可を確保する必要があります。 これは、構成管理システムでテスト成果物を維持することで実現できます。

アジャイルテストの実践

スクラムチームのテスターは、以下のアジャイルプラクティスに従うことができます-

  • ペアリング-2人のチームメンバーが一緒に座って共同作業を行います。 2人は、2人のテスターまたは1人のテスターと1人の開発者になります。
  • インクリメンタルテストデザイン-スプリントがインクリメンタルに進行し、ユーザーストーリーが追加されると、テストケースが開発されます。

アジャイルメトリック

ソフトウェア開発中、メトリックの収集と分析はプロセスの改善に役立ち、それにより生産性、成果物、顧客満足度の向上を実現します。 スクラムベースの開発ではこれが可能であり、テスターは必要なメトリックに注意を払う必要があります。

スクラム開発にはいくつかのメトリックが提案されています。 重要なメトリックは次のとおりです-

  • 成功したスプリントの比率-(成功したスプリントの数/スプリントの総数) *100 。 成功したスプリントは、チームがそのコミットメントを満たすことができるものです。
  • 速度-チームの速度は、スプリント中にチームが獲得したストーリーポイントの量に基づいています。 ストーリーポイントは、推定中にカウントされるユーザーストーリーの測定値です。
  • フォーカス係数-*(速度/チームの作業能力)/100 *。 フォーカスファクターは、完成したストーリーをもたらすチームの努力の割合です。
  • 推定精度-*(推定作業量/実際の作業量)/100 *。 推定精度は、チームが努力を正確に推定する能力です。
  • Sprint Burndown -Remaining Vsである作業(ストーリーポイントまたは時間単位)。 理想的に残っている必要がある作業(推定による)。
  • それ以上の場合は、チームができる以上の仕事をしていることを意味します。
  • 少ない場合、チームが正確に推定しなかったことを意味します。
  • 欠陥カウント-スプリントの欠陥の数。 欠陥数は、バックログに対するソフトウェアの欠陥の量です。
  • 欠陥の重大度-欠陥は、その重大度に応じて、マイナー、メジャー、およびクリティカルに分類できます。 テスターは分類を定義できます。

スプリント振り返り

Sprint Retrospectivesでは、すべてのチームメンバーが参加します。 彼らは共有する-

  • うまくいったこと
  • 測定基準
  • 改善の範囲
  • 適用するアクション項目

アジャイルテスト-メソッド

アジャイルテストでは、一般的に使用されるテスト方法は従来のプラクティスからのものであり、原則– Test Earlyに沿っています。 テストケースは、コードが書かれる前に書かれます。 重点は、適切なテストタイプを適切なタイミングで適切なレベルで実行する欠陥防止、検出、および削除です。

この章では、メソッドの理解を得るでしょう-

  • テスト駆動開発(TDD)
  • 受け入れテスト駆動開発(ATDD)
  • 行動駆動開発(BDD)

テスト駆動開発

テスト駆動開発(TDD)メソッドでは、コードは自動テストケースが指示するTestfirstアプローチに基づいて開発されます。 失敗するテストケースが最初に記述され、テストに合格することを保証するために、それに基づいてコードが開発されます。 メソッドが繰り返され、コードの開発を通じてリファクタリングが行われます。

TDDは、次の手順の助けを借りて理解することができます-

  • *ステップ1 *-テストケースを作成して、記述する必要があるコードの機能の予想される動作を反映します。
  • *ステップ2 *-テストを実行します。 コードはまだ開発されていないため、テストは失敗します。
  • *ステップ3 *-テストケースに基づいてコードを開発します。
  • *ステップ4 *-テストを再度実行します。 今回は、機能がコーディングされているため、テストに合格する必要があります。 テストに合格するまで、ステップ(3)とステップ(4)を繰り返します。
  • *ステップ5 *-コードをリファクタリングします。
  • *ステップ6 *-テストを再度実行して、合格したことを確認します。
  • ステップ1-ステップ6 *を繰り返して、テストケースを追加して機能を追加します。 追加されたテストと以前のテストは毎回実行され、コードが期待どおりに実行されていることを確認します。 このプロセスを高速化するために、テストは自動化されています。

テストは、ユニット、統合、またはシステムレベルで行うことができます。 テスターと開発者の間の絶え間ないコミュニケーションを確保する必要があります。

受け入れテスト駆動開発

受け入れテスト駆動開発(ATDD)メソッドでは、コードは受け入れテストケースが指示するテストファーストアプローチに基づいて開発されます。 焦点は、顧客、エンドユーザー、および関連する利害関係者と協力して、ユーザーストーリーの作成中にテスターが作成した受け入れ基準と受け入れテストケースです。

  • *ステップ1 *-顧客およびユーザーと協力して、ユーザーストーリーとともに受け入れテストケースを作成します。
  • *ステップ2 *-関連する受け入れ基準を定義します。
  • *ステップ3 *-受け入れテストと受け入れ基準に基づいてコードを開発します。
  • *ステップ4 *-受け入れテストを実行して、コードが期待どおりに実行されていることを確認します。
  • *ステップ5 *-受け入れテストを自動化します。 繰り返しのすべてのユーザーストーリーが実装されるまで、*ステップ3 –ステップ5 *を繰り返します。
  • *ステップ6 *-回帰テストを自動化します。
  • *ステップ7 *-自動回帰テストを実行して、連続回帰を確認します。

行動駆動開発(BDD)

動作駆動開発(BDD)はテスト駆動開発(TDD)に似ており、システムの期待される動作を確認するためのコードのテストに焦点が当てられています。

BDDでは、ユーザー、テスター、開発者にとって意味のある英語のような言語が使用されます。 それは保証します-

  • ユーザー、テスター、開発者間の継続的なコミュニケーション。
  • 開発およびテストされているものの透明性。

アジャイルテスト-テクニック

従来のテストのテスト手法は、アジャイルテストでも使用できます。 これらに加えて、アジャイルプロジェクトではアジャイル固有のテスト手法と用語が使用されます。

テストベース

アジャイルプロジェクトでは、製品バックログが要件仕様文書に置き換わります。 製品バックログの内容は通常、ユーザーストーリーです。 非機能要件もユーザーストーリーで考慮されます。 したがって、アジャイルプロジェクトのテストの基礎はユーザーストーリーです。

品質テストを確実にするために、テストベースとして以下を追加的に考慮することもできます-

  • 同じプロジェクトまたは過去のプロジェクトの以前の反復からの経験。
  • システムの既存の機能、アーキテクチャ、設計、コード、および品質特性。
  • 現在および過去のプロジェクトの欠陥データ。
  • お客様の声。
  • ユーザードキュメント。

完了の定義

定義の完了(DoD)は、Sprintバックログのアクティビティの完了を保証するためにアジャイルプロジェクトで使用される基準です。 DoDはスクラムチームごとに異なる場合がありますが、チーム内で一貫している必要があります。

DoDは、ユーザーストーリーの機能や機能をユーザーストーリーの一部である非機能要件と共に実装するために必要なアクティビティのチェックリストです。 DoDチェックリストのすべての項目が完了すると、ユーザーストーリーは完了ステージに到達します。 DoDはチーム全体で共有されます。

ユーザーストーリーの典型的なDoDには、次のものが含まれます-

  • 詳細なテスト可能な受け入れ基準
  • ユーザーストーリーとイテレーション内の他のユーザーストーリーの一貫性を確保するための基準
  • 製品に関連する特定の基準
  • 機能的行動の側面
  • 非機能特性
  • インターフェース
  • テストデータ要件
  • テスト範囲
  • リファクタリング
  • レビューと承認の要件

ユーザーストーリーのDoDに加えて、DoDも必要です-

  • テストのすべてのレベルで
  • 各機能について
  • 各反復に対して
  • リリース用

試験情報

テスターは、次のテスト情報を持っている必要があります-

  • テストする必要があるユーザーストーリー
  • 関連する受入基準
  • システムインターフェース
  • システムが機能すると予想される環境
  • ツールの可用性
  • テスト範囲
  • DoD

アジャイルプロジェクトでは、テストはシーケンシャルアクティビティではなく、テスターは共同モードで作業することになっているため、テスターの責任は次のとおりです。

  • 必要なテスト情報を継続的に取得します。
  • テストに影響する情報のギャップを特定します。
  • 他のチームメンバーと共同でギャップを解決します。
  • テストレベルに到達するタイミングを決定します。
  • 関連する時間に適切なテストを実行してください。

機能的および非機能的テスト設計

アジャイルプロジェクトでは、従来のテスト手法を使用できますが、焦点は初期テストにあります。 実装を開始する前に、テストケースを準備する必要があります。

機能テストの設計では、テスターと開発者は次のような従来のブラックボックステスト設計手法を使用できます。

  • 等価パーティション
  • 境界値分析
  • 決定表
  • 状態遷移
  • クラスツリー

非機能テスト設計の場合、非機能要件も各ユーザーストーリーの一部であるため、ブラックボックステスト設計手法は、関連するテストケースの設計にのみ使用できます。

探索的試験

アジャイルプロジェクトでは、多くの場合、時間はテスト分析とテスト設計の制限要因です。 そのような場合、探索的テスト手法を従来のテスト手法と組み合わせることができます。

探索的テスト(ET)は、同時学習、テスト設計、テスト実行として定義されます。 探索的テストでは、テスターは実行されるテストの設計を積極的に制御し、テスト中に得られた情報を使用して、より優れた新しいテストを設計します。

探索的テストは、アジャイルプロジェクトの変更に対応するのに便利です。

リスクベースのテスト

リスクベースのテストは、障害のリスクに基づいたテストであり、テスト設計手法を使用してリスクを軽減します。

製品品質リスクは、製品品質の潜在的な問題として定義できます。 製品品質リスクには以下が含まれます−

  • 機能的リスク
  • 機能しないパフォーマンスリスク
  • 機能しないユーザビリティリスク

リスク分析は、各リスクの確率(尤度)と影響を評価するために行われます。 次に、リスクが優先されます-

  • 高リスクには広範なテストが必要
  • 低リスクには大まかなテストのみが必要

テストは、各リスクのリスクレベルとリスク特性に基づいて、適切なテスト手法を使用して設計されます。 その後、リスクを軽減するためのテストが実行されます。

フィットテスト

適合テストは、自動化された受け入れテストです。 Tools FitおよびFitNesseは、受け入れテストの自動化に使用できます。

FITはJUnitを使用しますが、テスト機能を拡張します。 HTMLテーブルは、テストケースの表示に使用されます。 フィクスチャは、HTMLテーブルの背後にあるJavaクラスです。 フィクスチャはHTMLテーブルのコンテンツを取得し、テスト対象のプロジェクトでテストケースを実行します。

アジャイルテスト-ワークプロダクト

テスト計画はリリース計画時に作成され、スプリント計画ごとに改訂されます。 テスト計画は、テストを完全に網羅するためのテストプロセスのガイドとして機能します。

テスト計画の典型的な内容は次のとおりです-

  • テスト戦略
  • テスト環境
  • テスト範囲
  • テストの範囲
  • テストの労力とスケジュール
  • テストツール

アジャイルプロジェクトでは、すべてのチームメンバーが製品の品質について責任を負います。 したがって、誰もがテスト計画に参加します。

テスターの責任は、必要な指示を提供し、チームの他のメンバーにテストの専門知識を指導することです。

ユーザーストーリー

ユーザーストーリーは原則として作業成果物をテストしていません。 ただし、アジャイルプロジェクトでは、テスターはユーザーストーリーの作成に参加します。 テスターは、顧客に価値をもたらし、システムの考えられるさまざまな動作をカバーするユーザーストーリーを作成します。

また、テスト担当者は、すべてのユーザーストーリーがテスト可能であること、および受け入れ基準を確認します。

手動および自動テスト

テストの最初の実行中に、手動テストが使用されます。 彼らが含まれます-

  • 単体テスト
  • 統合テスト
  • 機能テスト
  • 非機能テスト
  • 受入試験

テストは、その後の実行のために自動化されます。

  • テスト駆動開発*では、ユニットテストが最初に記述されて失敗し、テストに合格するようコードが開発およびテストされます。
  • 受け入れテスト駆動型開発*では、受け入れテストは最初に記述されて失敗し、コードが開発され、テストに合格することを確認します。

他の開発方法では、テスト担当者はチームの他のメンバーと協力してテストカバレッジを確保します。

すべてのタイプの方法で、継続的インテグレーションテストが含まれる継続的インテグレーションが行われます。

チームは、いつどのテストを自動化するかを決定できます。 テストの自動化に労力と時間が必要な場合でも、結果として自動化されたテストにより、アジャイルプロジェクトの反復中に繰り返されるテストの労力と時間が大幅に削減されます。 これにより、チームは、新しいユーザーストーリー、変更など、他の必要なアクティビティにより注意を払うことができます。

*Scrum* では、反復はタイムボックス化されます。 したがって、特定のスプリントでユーザーストーリーのテストを完了できない場合、テスターは毎日のスタンドアップミーティングで、ユーザーストーリーがそのスプリント内で完了ステータスに到達できないため、次のスプリントまで保留する必要があることを報告できます。

試験結果

アジャイルプロジェクトでのテストのほとんどは自動化されているため、ツールは必要なテスト結果ログを生成します。 テスターはテスト結果ログを確認します。 テスト結果は、スプリント/リリースごとに維持する必要があります。

以下を含むテスト概要も準備できます-

  • テスト範囲(テストされたものとテストされなかったもの)
  • 可能であれば、障害分析と根本原因分析
  • 欠陥修正後の回帰テストのステータス
  • 問題と対応する解決策
  • 保留中の問題(ある場合)
  • テスト戦略で必要な修正
  • テスト指標

テストメトリックレポート

アジャイルプロジェクトでは、テストメトリックには各スプリントの次のものが含まれます-

  • テストの取り組み
  • テスト推定精度
  • テスト範囲
  • 自動化されたテストカバレッジ
  • No. 欠陥の
  • 不良率(No. ユーザーストーリーポイントごとの欠陥の数)
  • 欠陥の重大度
  • 同じスプリントで欠陥を修正する時間(現在のスプリントを回避するバグを修正するには、24倍の費用がかかります)
  • No. 同じスプリントで修正された欠陥の
  • スプリント内での顧客による受け入れテストの完了

スプリントレビューと回顧レポート

テスターは、スプリントレビューと回顧レポートにも貢献しています。 典型的な内容は-

  • テスト指標
  • テスト結果ログのレビュー結果
  • テストの観点から何がうまくいき、何が改善できるか
  • ベストプラクティス
  • 学んだ教訓
  • 問題点
  • お客様の声

アジャイルテスト-かんばん

アジャイルテストアクティビティは、かんばんの概念を使用して効果的に管理できます。 以下は、テストがイテレーション/スプリント内で時間内に完了することを保証するため、高品質の製品の提供に焦点を当てています。

  • テスト可能で効果的なサイズのユーザーストーリーは、指定された制限時間内に開発とテストを行います。
  • WIP(Work-In-Progress)制限により、一度に限られた数のユーザーストーリーに集中できます。
  • ワークフローを視覚的に表すかんばんボードは、テストアクティビティとボトルネック(ある場合)を追跡するのに役立ちます。
  • かんばんチームのコラボレーションコンセプトにより、待機時間がなくても、ボトルネックが特定されたときに解決できます。
  • テストケースを事前に準備し、開発の進行に合わせてテストスイートを維持し、カスタマーフィードバックを取得することで、反復/スプリント内の欠陥を排除できます。
  • 定義の完了(DoD)は、テストが完了した後にのみストーリーが完了状態に達するという意味で、完了済みと言われます。

製品開発におけるテスト活動

製品開発では、機能かんばんボードを使用してリリースを追跡できます。 特定のリリースの機能は、機能開発ステータスを視覚的に追跡する機能かんばんボードに割り当てられます。

リリースの機能はストーリーに分割され、アジャイルアプローチを使用してリリース内で開発されます。

次のアジャイルテストアクティビティは、すべてのリリースで、またすべてのリリースの最後に、質の高い配信を保証します-

  • テスターはユーザーストーリーの作成に参加するため、
  • システムの考えられるすべての動作は、ユーザーストーリーおよびユーザーストーリーの一部である非機能要件によってキャプチャされます。
  • ユーザーストーリーはテスト可能です。
  • ユーザーストーリーのサイズにより、反復内で開発とテストを完了(完了)できます。
  • ビジュアルタスクかんばん-
  • タスクのステータスと進捗状況を示します
  • ボトルネックは発生するとすぐに特定されます
  • 最適化できるサイクル時間の測定を促進します
  • チームコラボレーションは次の点で役立ちます-
  • Team for Quality製品全体の説明責任
  • ボトルネックの発生時と発生時の解決、待機時間の節約
  • すべての活動におけるあらゆる専門知識の貢献
  • 継続的インテグレーションテストに焦点を当てた継続的インテグレーション
  • テストの労力と時間を節約するためのテストの自動化
  • 開発のために以前に記述されたテストケースを使用した欠陥防止と、システムのさまざまな動作によって予想されることに関する開発者への指導-
  • 一度に限られた数のユーザーストーリーに集中するためのWIP制限
  • 反復内の欠陥修正を確実にするために、開発の進行に伴う継続的なテスト-
  • テストカバレッジの確認
  • 未解決の欠陥数を低く抑える

ストーリー探索

Story Explorationは、アジャイルチーム内でのコミュニケーションであり、製品所有者が開発を受け入れるためにストーリーを渡すときにストーリーの理解を探ります。

製品の所有者は、システムが期待する機能に基づいてストーリーを考え出します。 開発者は、受け入れられるようにマークする前に、各ストーリーをさらに調査します。 また、テスト担当者は、テストの観点から可能な限りテスト可能にするためにコミュニケーションに参加します。

ストーリーの完成は、プロダクトオーナー、開発者、テスター間の絶え間ない継続的なコミュニケーションに基づいています。

推定

見積もりは、リリース計画と各反復計画で行われます。

リリース計画では、テスターが提供します-

  • 必要なテスト活動に関する情報
  • 同じための努力推定

反復計画では、テスターは反復に含めることができるストーリーの数と数の決定に貢献します。 決定は、テストの労力とテストスケジュールの見積もりに依存します。 ストーリーの推定には、テストの推定も反映されます。

カンバンでは、ストーリーが開発およびテストされ、欠陥なしで完了としてマークされた場合にのみ、完了が完了します。

したがって、テスト推定はストーリーの推定において重要な役割を果たします。

ストーリープランニング

ストーリーが推定され、現在の反復に割り当てられた後、ストーリー計画が開始されます。

ストーリープランニングには、次のテストタスクが含まれます-

  • テストデータを準備する
  • 受け入れテストの延長
  • 手動テストを実行する
  • 探索的試験セッションを実施する
  • 継続的統合テストの自動化

これらのテストタスクに加えて、次のような他のタスクも必要になる場合があります-

  • 性能試験
  • 回帰試験
  • 関連する継続的統合テストの更新

ストーリー進行

Story Progressionは、開発者とテスター間の継続的なコミュニケーションによって必要とされる追加のテストを明らかにします。 開発者が実装をより明確にする必要がある場合、テスターは探索的テストを実行します。

連続テストは、ストーリーの進行中に実行され、継続的統合テストが含まれます。 チーム全体がテスト活動に参加します。

ストーリーの受け入れ

ストーリーの受け入れは、ストーリーが完了状態に達すると発生します。 つまり、ストーリーは開発され、テストされ、完全であると示されます。

ストーリーテストは、ストーリーパスまたはテスト自動化のレベルに関連するすべてのテストが満たされたときに完了すると言われています。

アジャイルテスト-ツール

アジャイルプロジェクトでは、テスターは次の毎日のタスクを担当します-

  • システムの予想される動作を明確にし、開発者のコ​​ーディングをサポートします。
  • 開発者が効果的かつ効率的な単体テストを作成するのに役立ちます。
  • 自動化スクリプトを開発します。
  • 自動テストツール/スクリプトを回帰テスト用の継続的統合と統合します。

これらのタスクを効果的かつ迅速に実装するために、コードおよびテストコンポーネントのCIをサポートする継続的統合(CI)システムがほとんどのアジャイルプロジェクトで使用されています。

アジャイルプロジェクトのテスターと開発者は、テストセッションを管理し、障害レポートを作成および送信するためのさまざまなツールを活用できます。 アジャイルテスト専用のツールに加えて、アジャイルチームはテスト自動化およびテスト管理ツールの恩恵を受けることもできます。

-記録と再生、テストラスト、ヘビーウェイト、およびテスト自動化ソリューションはアジャイルではありません-

  • このようなツールが推奨するテストラストワークフローは、アジャイルチームには機能しません。
  • このようなツールで作成された保守不能なスクリプトは、変更の障害になります *このような特殊なツールは、テスト自動化の専門家を必要とし、サイロを育てます

広く使用されているツールは-

S.No. Tool & Purpose
1
  • Hudson*

CIフレームワーク

2

Selenium

機能テスト–ハドソンと統合

3

CruiseControl

CIフレームワーク

4

Junit

Javaユニットテスト

5 Nunit
6

Cobertura/JavaCodeCoverage/JFeature/JCover/

Javaテストカバレッジ

7

Jester

Java-突然変異テスト/自動エラーシーディング

8

Gretel

Javaテストカバレッジ監視ツール

9

TestCocoon

C/C ++またはC#-冗長なテストを見つけてデッドコードを見つけることにより、テストの量を減らします。

10

JAZZ

Java-ブランチ、ノード、およびデフューズのカバレッジと、GUI、テストプランナー、動的インスツルメンテーション、およびテストアナラ​​イザーの実装

11

Ant

Java –自動化ビルド

12 Nant
13

Bonfire

JIRA用のアジャイルテストアドオン

アジャイルテスト自動化ツール

効果的なアジャイルテスト自動化ツールのサポート-

  • テストファーストのアプローチを使用した早期のテスト自動化。
  • 実際の言語、ドメイン固有の言語を使用してテスト自動化コードを記述します。
  • システムの予想される動作に焦点を合わせます。
  • テストの本質を実装の詳細から分離し、テクノロジーに依存しないようにします。
  • コラボレーションの促進。

自動化された単体テスト(JunitまたはNUnitを使用)は、コーディングのテストファーストアプローチをサポートします。 これらはホワイトボックステストであり、設計が適切であり、欠陥がないことを確認します。 このようなテストは、テスターのサポートを受けて開発者が作成し、必要な機能から独立させることができます。 この結果、顧客の要件を満たさない可能性のある製品が提供されるため、ビジネス上の価値はありません。

この懸念は、顧客、他の利害関係者、テスター、および開発者の共同作業で作成された受け入れテストを自動化することで解決されます。 自動受け入れテストは、製品の予想される動作を反映して、顧客または製品所有者/ビジネスアナリストによって作成されます。 開発者の関与により、要件に応じたコードの生成が保証されます。 ただし、テストが受け入れのみに焦点を合わせている場合、結果のコードは非拡張のままになる可能性があります。

したがって、自動化された単体テストと自動化された受け入れテストは無料であり、両方がアジャイル開発に必要です。

自動受け入れテストをサポートするアジャイルツールとフレームワークは次のとおりです-

  • Fit
  • Fitnesse
  • 一致
  • Ruby
  • きゅうり

Fit

ワードカニンガムは、受け入れテストの自動化に使用できるツールFitを開発しました。 フィットが可能-

  • Microsoft WordおよびMicrosoft Excelを使用した製品動作の例を提供する顧客または製品所有者
  • これらの例を簡単に自動テストに変えるプログラマー。

Fit 1.1はJavaと.NETの両方をサポートしています。

FitNesse

FitNesseはwikiです。これは、既存のページの変更や新しいページの作成など、あらゆる訪問者が編集できるWebサーバーのスタイルです。 シンプルなマークアップ言語を使用すると、簡単に見出しを作成したり、テキストを太字、下線、斜体にしたり、箇条書きリストを作成したり、その他の種類の簡単な書式設定を行うことができます。

FitNesseでは、受け入れテスト自動化は次のとおりです-

  • 入力データと予想される出力データの表としてテストを表現します。
  • FitNesseを使用して、編集可能なページにテストテーブルを配置します。
  • または、Microsoft Excelにテストテーブルを配置し、クリップボードにコピーしてから Spreadsheet to FitNesse コマンドを使用して、FitNesseでテーブルを適切にフォーマットします。
  • テストを実行する
  • テストテーブルのセルの色分けによってテスト結果を取得します
  • 緑のセルは、期待される値が取得されたことを表します
  • 赤色のセルは、予想とは異なる値が取得されたことを表します
  • 黄色のセルは、例外がスローされたことを表します

きゅうり

Cucumberは、行動駆動開発(BDD)フレームワークに基づくツールです。 主な機能は次のとおりです-

  • Webアプリケーションの受け入れテストを作成するために使用されます。
  • 平易な英語のような読みやすく理解しやすい形式で機能検証を自動化できます。
  • Rubyで実装され、Javaフレームワークに拡張されました。 どちらもJunitをサポートしています。
  • Perl、PHP、Python、.Netなどの他の言語をサポートします。
  • Selenium、Watir、Capybaraなどと一緒に使用できます。