九號工具站
返回列表

シフトレフト テスト戦略: 早期かつ低コストでバグを発見するための実用的な方法

シフトレフト テスト戦略実践ガイド - 開発の初期段階にテストを進め、要件レビュー、TDD、静的分析、コード レビュー、およびソフトウェアの欠陥と修復コストを根本的に削減するその他の方法をカバーします。

QA ソフトウェアテスト 左シフト テスト戦略 品質保証 CI/CD

最後更新:2026-03-16

この記事では、Shift-Left テスト戦略の一般的な実践方法を紹介します。実際のインポート方法はチーム状況に応じて調整する必要があります。

1. シフトレフトテストとは何ですか

シフトレフト テストとは、テスト活動を従来の開発後期 (右側) から開発初期段階 (左側) に進めることを指します。従来のウォーターフォール開発では、通常、開発完了後にテストが開始されますが、要件フェーズで発見されたバグを修正するコストは、リリース後のコストのわずか 100 分の 1 であることが調査で示されています。シフトレフトは事後テストを中止することを意味するのではなく、問題を早期に発見し、より低いコストで修復できるように、あらゆる段階で品質管理を追加することを意味します。

2. Shift-Left が重要な理由

IBM Systems Sciences Institute の調査によると、このデータは、事前の品質活動への投資収益率が、後からの修正よりもはるかに高いことを明確に示しています。

  • 需要段階

    発見: 修理コスト 1 倍

  • 設計段階

    ディスカバリー: 修理コスト 5 倍

  • 発展段階

    ディスカバリー: 修理コスト 10 倍

  • テスト段階

    ディスカバリー: 修理コスト 20 倍

  • オンライン化後

    発見: 修理コスト 100 倍

3. Shift-Left に関する 5 つの実践方法

QA は、要件が最終決定される前に議論に参加する必要があります。あなたのタスクは次のとおりです。 実際には、スプリント計画または改良会議に「テスト レビュー」セッションを含めることができます。システム設計段階で、QA は次のことを評価できます。 テスト駆動開発 (TDD) は、最も徹底したシフトレフトの実践です。チームが TDD を完全に採用していない場合でも、QA は開発者とペアのテストを行うことができます。 関数の開発と作成時に、QA はテスト ケースを同時に設計し、即時にフィードバックを提供します。コードがコミットされる前に問題をブロックする: 継続的インテグレーション プロセスで品質ゲートを設定します。

  • テスト可能

    要件がテスト可能かどうかを確認します。曖昧な要件では明確なテスト ケースを作成できません。

  • 矛盾と欠落

    要件の矛盾や欠落を見つけます: 異なる機能間に矛盾がないかどうか

  • 境界線の状況

    エッジケースを取り上げる: PM が想定していなかったかもしれない極端な状況

  • 合格基準

    受け入れ基準を確認する: 各ユーザー ストーリーには完了の明確な定義があります。

  • 自動テスト

    このアーキテクチャはテストを自動化するのが簡単ですか?

  • 可観測性

    方法: ログ、メトリクス、追跡は十分ですか?

  • フォールトインジェクション

    実現可能ですか: さまざまな障害シナリオをシミュレートできますか?

  • テスト環境

    要件: 特別なテスト インフラストラクチャが必要ですか?

  • 最初にテストを書く

    要件に基づいて失敗したテスト ケースを作成する

  • プログラムを書き直す

    テストに合格するために最小限のコードを記述します。

  • リファクタリング

    テスト保護下のコード構造を最適化する

  • 静的解析ツール

    SonarQube、ESLint、および Pylint はコードの品質を自動的にチェックします

  • セキュリティスキャン

    Snyk、OWASP 依存関係チェック チェックの脆弱性

  • QAはコードレビューに参加します

    エラー処理が完了しているか、境界条件が処理されているかなど、テストの観点からプログラム コードをレビューします。

  • 事前コミットフック

    送信前の単体テストとリンティングを自動化する

  • 単体テスト

    すべての送信、カバレッジしきい値 (例: 80%) に対して実行する必要があります。

  • 結合テスト

    モジュール間の正常な対話を確保するには、すべての PR を実行する必要があります。

  • E2E テスト

    コアプロセスはメインブランチにマージする前に実行する必要があります

  • パフォーマンステスト

    定期的に実行してパフォーマンスの低下を防ぐ

4. Shift-Left のインポートに関する一般的な課題

開発者は「テストは QA の仕事だ」と感じるかもしれません。解決策はデータを表示することです。バグの発見段階と修復時間を数え、数値を使用して早期発見の利点を示します。 PM は、事前に多くの時間を投資することを懸念しているかもしれません。 1 つのスプリントから試行を開始し、後の期間のバグ数の変化を記録して比較することをお勧めします。 QA は、開発前の活動に効果的に参加するために技術スキルを向上させる必要があります。コードのリーディングや静的解析ツールの操作、CI/CDの基礎知識も含めた学習計画を立てることをおすすめします。

5. シフトレフトの有効性の測定

Shift-Left をインポートした後、次のメトリクスを追跡してパフォーマンスを評価します。

  • 欠陥回避率

    リリース後に発見されたバグがバグ全体に占める割合 (目標: 継続的に減少)

  • 各段階の欠陥分布

    要件および設計段階で発見されたバグの割合 (目標: 増加し続ける)

  • 修理にかかる平均時間

    バグ発見から修正までの時間 (目標: 継続的な削減)

  • テストカバレッジ

    単体テストと結合テストの対象範囲の変更

6. よくある質問

非常に適しています。小規模なチームにより、文化の変化を推進しやすくなります。最も単純なアプローチから始めることができます。つまり、QA が要件ディスカッション会議に参加し、自動テストを CI に追加します。すべてを一度に行う必要はありません。この 2 つは互いに補完し合います。 Shift-Left は予防 (初期の品質) に重点を置き、Shift-Right は検出 (A/B テスト、カナリア デプロイメント、実稼働環境の監視などの起動後の監視) に重点を置きます。成熟したチームは両方を行います。重要なのは役割の位置付けです。 QAは「欠点を見つける」ことが目的ではなく、さまざまな角度から価値を提供するために存在します。テスト容易性、エラー処理、境界条件などの QA 専門知識の分野でのフィードバックに重点を置きます。開発者は多くの場合、これらのさまざまな観点からのインプットを高く評価します。

ℹ️

一般聲明

本站提供之資訊僅供參考,不保證其完整性與正確性。使用者應自行判斷資訊之適用性。

意見反饋