目次
シフトレフトとは?
テストを開発工程の早い段階から行う手法や考え方
「シフトレフト」はソフトウェア開発プロセスにおいてテストを開発工程の初期段階から実施し、不具合を早期に検出・修正する手法を指します。このアプローチでは、V字モデル等で表現される開発ライフサイクルの右側にあるテスト工程を前倒し(左側に移動)し、品質管理チーム(QA)のプロジェクトへの早期関与を促すことから「シフトレフト」と呼ばれています。
通常は開発の最終段階で実施されるテスト工程を、シフトレフトでは開発工程の途中から「早期に」「重点的に」テスト実施を開始します。これは様々な開発ライフサイクルに適用でき、特にアジャイル開発やDevOpsといった近代的な開発手法が主流となっている現在、シフトレフトのアプローチはより重要かつ身近な手法になっています。
また、別のアプローチ法の一つに「シフトライト」という考え方も存在しています。
「シフトライト」では、テスト工程を開発の後段階(右側)に移し、実際の本番環境とデータを使用して、リリース後も継続的にシステムの品質を監視し、必要に応じて修正を行います。
どちらもソフトウェアの品質向上とテスト活動の効率化を図ることで、ユーザー満足度を高める目的を持ったアプローチと言えるため、言葉からは逆の印象を受けますが、相反した考え方ではありません。
シフトレフト導入のメリット
シフトレフトの導入には様々なメリットがありますが、最大の利点はテスト活動の効率化とプロジェクト全体の期間短縮です。
開発プロジェクトでは、不具合の発見が遅れるほど、修正コストが増加する傾向があります。例えば、設計ミスが根本原因の不具合の場合、設計者が実装前に誤りに気づけば、修正は簡単に時間をかけずに行えます。しかし、設計後数ヶ月経て実装され、納品直前に問題が発覚した場合、修正には大幅な工数を要します。
したがって、不具合を早期に検出し修正することで、手戻りを削減し、テストと修正にかかる時間とコストが節約でき、最終的にプロジェクト全体期間を短縮することが可能となります。
また、心理的な面でもメリットがあります。
早い時期からテストを行うことで、納品(リリース)まで時間も気持ちも余裕のある中で不具合の対処ができ、プロダクトの品質状況を可視化できます。これにより、納品直前にバグだらけで混乱し、メンバー全員がストレスフルな状態に陥るリスクを軽減できます。
これは社内の開発チームに限った話ではなく、お客様にも当てはまります。
Diezonでは、全機能が完成するのを待たずにQAチームがテスト開始できるように、段階的に機能の完成度を高めながら開発を進めています。そのため、テストが完了した機能から順に、お客様もシステムを触れる状態となり、運用テスト等を前倒することで迅速なサービスリリースを後押しできます。
ECサイト構築プロジェクトにおけるシフトレフトの具体例
ECサイト構築プロジェクトにおける「シフトレフト」のアプローチとして、当社のQAチームがどのような活動を行っているか具体的にご紹介します。
(前提として、当社ではQAチームが開発チームとは別に独立したテスト専門のチームとして機能しています。Diezonのテスト体制についてはこちら)
まず当社プロジェクトでは、QAメンバーも要件定義フェーズからPMと共に要件定義ミーティングに参加しています。これにより、お客様のサービス構造や運用フロー、要件の細かい情報のインプットが可能となり、テスト計画をより早い段階で開始することができます。
その後、設計フェーズに移行すると、QAチームは設計書や仕様書をレビューし、要件との乖離や矛盾がないかチェックします。同様に、デザインデータやコーディング環境におけるUI確認テストも行い、動作するシステムが完成していない段階においても、ほとんどすべてのドキュメントに対して静的レビューを実施しています。
これらの活動は開発プロセスと並行して実施されますが、開発がQAを無視して進行することはありません。例えば、デザインチームはECサイト構築時のチェックリストを確認するプロセスが組み込まれており、これを満たさない限り次のコーディングフェーズに進むことはできません。このように、各開発プロセスで品質基準をチェック&クリアしながら開発工程が進行します。
同時に、機能テストの実施に向けて、QAチームはテスト設計とテストシナリオの作成を進めます。この段階で、要件や機能概要がしっかりと頭に入っているため、効率的かつ効果的なテストシナリオを作成することができます。
このようにして、DiezonのQAチームは開発プロジェクトに最初から最後まで参加し、各フェーズで欠陥を見つけて取り除くことで、全体の修正工数を削減しつつプロダクトの品質を高めています。
「シフトレフト」の導入を検討する際の注意点
メリットが多く魅力的に見える「シフトレフト」をすぐにでも導入したい!と思うかもしれませんが、実は導入する際に注意すべきポイントがあります。
導入の際に課題となる点を下記にいくつか挙げてみましょう。
① 各種ドキュメント類が早期に作成されるプロジェクト体制
シフトレフトではドキュメントの静的レビューが不可欠ですが、しっかりとしたドキュメント作成体制が整っていなければ、機能が完成するまでにテストできる対象がなく、QAの早期介入が難しくなります。
② QAが無視されない開発文化の確立
シフトレフトの実現のために、QAはデザインや設計、開発にいたる全てのチームにフィードバックを提供する役割を果たさなければなりません。QAは機能テストだけして不具合を検出してくれればいいという考えの組織では、QAの提供したレビューとフィードバックは無視されるでしょう。そうならないために、QAが理解/尊重される開発文化を築き、全チームがフィードバックを受け入れられる体制を整えることが重要です。
③ QA担当者の多角的かつ各プロセスへの豊富な知識
QAチームにとっても、シフトレフトは容易な取り組みではありません。ただシステムを操作してエラーを検出するだけではなく、全プロセスに介入するためには広範な知識と多角的な視点が求められます。まずは開発フローの流れや各プロセスの業務内容への知識、UI/UX、インフラ、セキュリティ、ユーザー理解、ECサービスに関する知識など、テスト担当者にとってレベルの高いスキルセットが必要です。
④ チーム全体のシフトレフトへの理解
シフトレフトはQAチームだけの努力では実現できない、開発全プロセスにわたるアプローチです。チーム全体の理解と協力がなければ成功しないでしょう。
そのためDiezonでは、QAチームから他チームへの品質向上のための啓蒙活動や、シフトレフトの有用性の普及に普段から取り組んでいます。
終わりに
シフトレフトはソフトウェアシステム開発の品質を向上させ、工期を短縮する効果的な手法です。テストを早期に開始し、不具合を早い段階で検出することで、プロジェクト全体の効率を大幅に向上させ、プロジェクト成功可能性を高めることが期待できます。
Diezon品質管理部では、シフトレフトを活用してお客様に高品質のシステムを提供し、プロジェクトの成功を支援しています。ソフトウェア開発プロジェクトにおける品質と効率の両方を向上させる方法として、「シフトレフト」のアプローチをぜひご検討ください。