TechTargetは「QAOpsとDevOpsの違い」に関する記事を公開した。「QAOps」は「DevOps」を拡張するもので、長年にわたって批判されてきたDevOpsのある問題を解決する可能性がある。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
TechTargetは2024年8月29日(米国時間)、「QAOpsとDevOpsの違い」に関する記事を公開した。本稿では、DevOpsを主体としている企業が“品質”に重点を移そうとするとき、QAOpsがいかに役立つかを説明する。
ソフトウェアに関する障害がニュースを賑わせるたびに、ソフトウェアテストに注目が集まっている。
先日発生したCrowdStrikeの障害がその一例だ。この障害の原因は、CrowdStrikeのエンドポイントセキュリティソフトウェアの定期コンテンツアップデートが品質チェックをすり抜けたためだとされている。同様の事例は他にもあり、英国の銀行ロイヤルバンク・オブ・スコットランド(Royal Bank of Scotland)では、ITの不具合によって60万件を超える同行の顧客の決済を処理できず、支払いが遅れるという障害が起こっている。
品質保証(QA)テストをCI/CD(継続的インテグレーション/継続的デリバリー)のパイプラインに組み込むことは、DevOpsの約束事の一つだ。だが、残念なことにDevOpsへのQA統合は、誤った方向に進んだり、不十分な結果を招いたりすることがある。この問題に対する潜在的な解決策となるのが、品質を保証する運用「QAOps」(Quality Assurance Operations)だ。
DevOpsの定義はIT部門ごとに異なる。大まかに説明すると、ソフトウェア開発のプラクティスやツールを組み合わせ、文化を変えることで、ソフトウェア開発サイクルを自動化し、従来あった開発チームと運用チームのサイロを解消する取り組みのことだ。
DevOpsにおけるQAの役割は“継続的なテストを進めること”だ。「テスト自動化ツール」「人手によるQA」「アジリティと速度を最適化するQAフレームワーク」を適切に組み合わせることで、開発から運用までの全体にわたるテストが可能になる。そのため、QA担当者の役割は、自社の要件を満たすQAレポートの設計を主導することにある。
DevOpsの考えの中には「シフトレフトテスト」という概念がある。シフトレフトテストとは、ソフトウェア開発ライフサイクル(SDLC)の早い段階でテストを実施し、ソフトウェアの問題を運用環境に持ち込ませないようにするという考え方だ。
QAは、継続的な監視とフィードバックでも重要な役割を果たす。DevOpsでは、そのフィードバックループの一員としてQAチームのメンバーを配置するのが理想とされている。つまり、このアプローチではQA担当者は関係者として扱われる。QA担当者は、開発者と同じデータとレポートツールを使って連携できるため、“共通の言語”で開発チームや運用チームと議論できる。
だが、DevOpsでもQA担当者の課題を全て解決できるわけではない。例えば、一部のDevOpモデルでは、専任のQAチームよりもプログラマーにテストの役割を任せている。また、DevOpsにおけるテスト自動化は、非技術系のメンバーや管理職にとって魅力的に映ることがある。テストの自動化を人員削減の機会と捉え、短期的な財務目標、組織目標、あるいは社内政治的な目標を達成するチャンスだと考えてしまう可能性がある。
一部のDevOpsチームは、プロジェクトにQA担当者を追加で配置することはソフトウェアの配信速度を遅らせることにつながると考え、「テストの自動化こそが将来性のある取り組みだ」と思い込んでいる。しかも「経験バイアス」(チームメンバーが主観的な認識を客観的事実と誤解すること)と「管理職によるコスト削減の圧力」がこの力学をさらに後押ししてしまう。
QAOpsはDevOpsを拡張するものと位置付けられており、QAのプラクティスとツールをCI/CDパイプラインに直接統合することを目指している。QAOpsは「SDLCのあらゆる段階でソフトウェア品質を確保する」という原則を強化する。
DevOpsにおける継続的テストは本来、ソフトウェアの品質に関するフィードバックを迅速に受け取り、それに基づいて素早く対応できるようにするのが目的だ。これは、反復的で柔軟な開発環境を実現するために重要な要素となる。しかし、この継続的テストを「設定したら後は放っておける」といった誤解をしてしまう開発チームもある。
DevOpsには長年、ある批判が投げかけられている。それはQAの優先度が下がるというものだ。特にスタートアップ環境では顕著で、ソフトウェアテスト担当者として正社員や契約社員を雇用せず、「Selenium」や「Testsigma」といったテスト自動化ツールに過剰に依存してしまうことがある。もう一つの例としては、AI(人工知能)の成長がある。CIパイプラインにおけるAIの成長によって「新しい人員を雇用する必要はない」と管理職が判断することで、QAの優先順位や予算がさらに引き下げられる可能性がある。
DevOpsの理念として「部門間の壁(サイロ)を取り払う」というものがある。だが、現実はそれほど簡単ではない。例えば、プロジェクトを受注するために入札価格を低く抑えざるを得なかったり、予算が厳しかったり、さらには組織全体が非効率的な運営になっていたりとさまざまな問題がある。これらの要因によって、プロジェクト予算においてQAに割り当てられる優先順位や注目度が低下してしまう可能性がある。コスト削減を目指す企業では、ドキュメント作成の次に削減されるのはQAサポートの予算であることが多い。
QAOpsは、DevOps環境においてQAのツールや実践、スタッフを成熟させるためのアプローチであり、ソフトウェア開発の全フェーズを通じてQAスタッフの役割を確保し、強化することを目的としている。
QAOpsには、以下のメリットがある。
QAOpsとDevOpsを区別することで、意欲的なQAチームは、チームのプラクティスを開発者や関係者に示すことができる。例えば、DevOpsライフサイクル全体でのQAと開発の接点に関するドキュメントを用意して、自社の現状のDevOpsプレイブックを補強できる。QAOpsを取り入れることで、QAスタッフは自社のDevOpsプロセスの中で失われた可能性のある役割を取り戻したり、確保したりすることが容易になる。
QAOpsの登場は、DevOpsが直面している2つの長期的課題を物語っている。1つは「DevOpsの定義が多過ぎる」という課題だ。だが、QAOpsには、DevOpsの定義に含まれない要素はない。もう1つは、ユーザーが必要としているかどうかにかかわらず、業界関係者や市場関係者が全てを「Ops」(運用)に押し込もうとしている点だ。IT業界は今や「PeakOps」(運用至上主義)に突入している。
ただし、優れた考えの下に「〜Ops」という言葉が生み出されることもある。QAOpsはその一例であり、正当で意味のある考え方や原則に基づいている。一方でこれは、企業がDevOpsを推進する際の障害にもなる弱点を浮き彫りにしている。
Copyright © ITmedia, Inc. All Rights Reserved.