DevTestOpsとは

この記事はRaj Subrameyerによるゲスト投稿です。

この何十年かで、ソフトウェアプロセスは劇的な進化を遂げました。この変遷における目立った変化の1つが、開発プロセスをスピードアップし、顧客に対して品質の高い機能をデリバリーすることを目的とした、ウォーターフォールモデルからアジャイルモデルへの移行です。 

アジャイルを採用したことの副産物として、開発、テスト、リリースプロセスにシフトレフトテスト、継続的テスト、DevOps、CI/CDなどの新しいプロセスが導入され、急速に普及しました。これらのプラクティスは、すばやく頻繁なリリースを実現するのに役立ちました。 

しかし、これらのプラクティスにはどれも大きな不足がありました。ソフトウェアパイプライン全体を通じてテストを実行するという点が欠けていたのです。そこで、DevTestOpsが導入されました。

DevTestOpsとは

DevOpsの目的が開発者と運用チームのコラボレーションを増やすことであるいっぽう、DevTestOpsの目的はDevOpsに継続的テストを含めることです。つまり、要件フェーズからテストを開始し、運用および監視フェーズまで継続することをより重視します。

DevTestOpsには、できるだけ頻繁にテストすること、冗長なプロセスを自動化して開発者、テスター、運用チーム、その他のチームメンバーの時間を節約することなどが含まれます。また、インテグレーションテストをシフトレフトすることも意味します。なぜなら、開発プロセスの遅い段階でインテグレーションテストを実施すると、取り返しのつかないような結果、重大な欠陥、スケジュールの遅れなどが発生する可能性があるからです。

テストは複数のチームのメンバーによってさまざまな開発ステージで実施されるため、DevTestOpsの導入には、品質は全員の責務であるという意識を醸成するのに役立つという効用もあります。

DevTestOpsの利点

DevTestOpsを採用するべき理由はいくつもあります。下記は上位5つの理由です。

1.品質の向上

可能な限り早期かつ頻繁にテストが行なわれるため、開発プロセスの各ステージでより早くバグが見つかり、より短期間で修正されます。DevTestOpsアプローチを採用することで、開発者、テスター、運用チームが緊密に協力することになるため、バグの発見、修正、テストにかけられる時間の総量が劇的に削減されます。

2.コラボレーションの促進

DevTestOpsアプローチが有効性を発揮するためには、複数のチームのさまざまな役割のメンバーが1つのユニットとして協働する必要があります。機能が期待どおり動作していることを確認するために、継続的なコミュニケーションが発生します。

3.自動化の重視

DevTestOpsでは、時間の節約のために自動化できるプロセスはすべて自動化されます。自動化のセットアップには相当の時間がかかりますが、セットアップが適切に完了すれば、時間のかかるプロセスを実行したり、複数の環境へビルドをデプロイしたり、新しい機能が既存の機能を壊していないことを確認したりするために人手で行っていた作業を大幅に削減するのに役立ちます。

4.迅速なフィードバック

プロセスの各段階で、DevTestOpsの実践を成功させるのに欠かせないさまざまなプロセス、ツール、コミュニケーションチャネルを通じて、開発中の機能に関する継続的なフィードバックを受け取ります。 

5.テスターの可視化

従来、よく見られた問題の1つが、開発プロセスのすべてのアクティビティにテスターが関与していないというものです。テスターは、開発者ほどには製品への責任を負担していない傾向があります。しかし、DevTestOpsでは、テスターはデリバリーパイプラインのあらゆるステージに関わります。あらゆる時点で、開発者や運用チームに重要なフィードバックを提供します。

DevTestOpsの導入

DevTestOpsはDevOpsプラス継続的テストを意味するため、DevOpsと継続的テストに利用される多くのツールやプラクティスはDevTestOpsでも有効です。

適切なツールとフレームワークの整備

デリバリーパイプラインの各フェーズで適切なツールとフレームワークを使用する必要があります。そうすると、ソフトウェア品質の向上とデリバリーのスピードアップに役立ちます。 

ツールの例としては、 TestRailTravis CITravis InsightsKiuwan、Cucumber, LaunchDarkly、AssemblaXray、Git、TFS、Docker、Kubernetesなどが挙げられます。

できるだけ自動化する

DevTestOps導入の成功に寄与する重要な要素の1つが、できるだけ多くのプロセスを自動化し、時間を節約してより速くフィードバックを受けられるようにすることです。たとえば、ビルドのデプロイメントを自動化したり、開発プロセスの複数のフェーズで自動化されたテストを実行したり、運用で問題が発生したときに自動化されたロールバックメカニズムを使用したりします。

パイプラインの継続的モニタリング

DevTestOpsのパイプラインには、機能の開発、テスト、デプロイメントに加えて、運用中のアプリケーションのさまざまな側面の計測が含まれます。パイプラインをモニターし、エラーが発生したときできるだけすばやく問題をトラブルシューティングすること、また無用な遅れを避けることが重要です。 

観測可能性の重視

観測可能性の3つの主要素は、トレース、ログ、メトリクスです。ブロックチェーン、マイクロサービス、機械学習などの技術の利用によってシステムが複雑化しているため、システムに関するさまざまな情報を収集することは、問題を未然に予測し、修正するのに役立ちます。

カルチャーの変革をサポート

DevTestOpsパイプラインが成功するかどうかは、さまざまな要因に依存します。最初はパイプラインのセットアップにかなりの労力、時間、コストがかかることを、チームの個々のメンバーが理解している必要があります。しかし、いったん導入が適切に行われれば、ROIは初期セットアップのコストを上回ります。 

また、デリバリーのスピードを上げるには、プロジェクトマネージャー、開発者、テスター、ビジネスアナリスト、運用の専門家など、さまざまな役割のメンバーが協力する必要があることを皆が理解しなければなりません。最初は容易ではないかもしれませんが、皆が努力すれば、いずれは、以前はどうしてコラボレーションなしでやっていけたのだろうと不思議に思うようになるはずです。

DevTestOpsには、よりいっそうのコラボレーション、透明性、信頼が必要です。こういった資質がまだ組織に根付いていない場合、ステークホルダーや上級管理職がこれらの資質をチームに浸透させる必要があります。コミュニケーション障壁があれば排除し、自己組織的で機能横断的なチームの形成をいっそう促すべきです。組織内のコラボレーション、透明性、信頼を促進する方法については、こちらの記事をご覧ください。 

Raj Subrameyerは豊富な技術的バックグラウンドを持つ国際的な基調講演者、ライター、技術キャリアコーチです。自身のブログrajsubra.com/blog/では、読者がより良い人生を送るのに役立つニュース、リソース、最新情報を投稿しています。

(この記事は、開発元Gurock社の Blog 「What Is DevTestOps?」2022年1月17日の翻訳記事です。)

関連する製品

テスト管理ツール TestRail

テストケースの管理やテスト結果の記録、チームでの情報共有など、Excelを使ったテスト管理の業務に限界を感じていませんか?TestRailはシンプルで使いやすいUIを提供し、テストにかかるさまざまな管理コストの削減に貢献します。

■ TestRailの特長 ■

  • テストにさまざまな情報を関連づけて一元管理
  • Webブラウザー上でテストケースを簡単に入力や編集可能
  • テスト実施の準備と結果の共有が容易
  • 進捗や比較などのレポートを提供
  • 要件 / 課題管理ツールやテスト自動化ツールと連携

日本国内では、テスト管理にExcelを使っていたお客さまからの乗り換えが多く、Web上で完結するテスト管理を実現されています。

TestRail でテスト管理のお悩みを解決しませんか?

eBook 公開中

Paul Gerrard著 効果的なテスト管理12の秘密 (日本語)

テスト計画やテスト管理に役立つ12のトピックを解説します。

詳細はこちら