DevOps公式認定

DevOpsのテキスト研修

DevOps組織になぜテスト自動化が必要か


ソフトウェアデリバリー部門に十分なテスト自動化がまだなければ、開発とテストは明らかに分断されているはずです。開発者が仕事の品質についてフィードバックを受けるころには、すでに別のタスクで手いっぱいです。書いたコードや、書かなかったコードと、不具合の因果関係を見落としがちです。不具合を混入させた時点までさかのぼるためにコンテキストを切り替えると、生産性は下がります。フィードバックが遅れると、システムと不具合の関係は複雑で不明瞭になります。場当たり的な回避策ではない質の高い修正を期待するのは現実的ではありません。

テスト自動化がなければ、DevOps組織が質の高い製品やサービスを届けるには、さらに時間と費用がかかります。21世紀のテクノロジー組織にとって、事業分野を問わず、これでは規模の拡大に対応できません。

テストは自動化できる。
品質を生み出すことには人の判断が必要です。

DevOpsチームは、できるだけ多くのテストケースを自動化します。テストは自動化できますが、品質を作り込むためにチームが考え、判断する力は自動化できません。ソフトウェアが代行できる繰り返し作業に、貴重な人材を使わないようにします。

効果的なテスト自動化のためのDevOpsの原則

  • テスト自動化は、作業品質に関するフィードバックを早い段階ですばやく返すべきである。
  • 同じ条件でテストを繰り返した場合、一貫性、決定性、再現性のある結果が得られるべきである。
  • テストは誤検知を出さないようにします。
  • 少数でも、自動化されて信頼性の高いテストケースのほうが、同じ条件で実行しても結果がばらつく、信頼性の低い手動テストを数多く用意するより効果的です。
  • テスト自動化では、まずシステムが社内外の顧客に提供する主な機能と便益を検証します。この範囲だけでも、自動化がない場合よりはるかに有効です。
  • 次に、DevOpsチームの人材を最大限に生かすため、できる限り多くのテストケースを自動化します。
  • テスト自動化では、遅く定期的なフィードバックを避ける。自分や開発者がトランクにコードをチェックインしようとするたびに、すばやいフィードバックが必要である。
  • 自動テストが十分に速くなければ、テスト、ソフトウェア、またはその両方を高速化する方法を探します。信頼できる継続的デリバリー基盤とデプロイメントパイプラインを実現するうえでも、顧客に高品質のサービスを提供するうえでも重要です。さらに速くするには、自動テストを並列に実行します。
  • テスト駆動開発を検討しましょう。自動テストを先に書き、その後にソフトウェアを作ります。

テスト自動化は継続的デリバリーとデプロイメントパイプラインを支える

これまで説明したように、DevOpsでは、開発者が本番システムにコードをデプロイできるようになります。しかし、導入初期のDevOpsチームを観察すると、開発者はすばやくコードをトランクにチェックインし、タスクやチケットを閉じても、本番リリースのボタンを押すことには消極的でした。本番環境を壊して責任を問われるのを恐れているからです。

DevOpsチームがテストを自動化して、網羅的で信頼できるテスト範囲を確保して初めて、開発者はこの不安を乗り越えられました。

たとえばGoogleでは、開発者がコードをトランクにチェックインすると、まず静的コード解析、重複解析、テストカバレッジ分析などを行い、次に100万件近い自動テストケースでコードを検証します。すべてのチェックとテストに合格すると、トランクからビルドを生成して本番に投入し、他の全本番サーバーにも複製します。こうして5,000の小規模で独立したチームが生産性を保ち、毎日数万回の本番デプロイを行います。テスト自動化なしには実現できません。

デプロイメントパイプラインの安全と整合性を保つには、迅速で信頼できるフィードバックが欠かせません。自動テストケースの失敗でパイプラインが壊れた場合、DevOpsチームは他の作業をトランクにチェックインする前に、誤りのあるコードと設定を修正します。また、自動テストケースで事前に見つけて防げたはずのエラーをパイプラインで発見したときは、そのテストケースも作成し、自動テストのリポジトリに追加します。

自動化できるテストの種類

  • 単体テスト アプリケーション内の個々の関数、クラス、モジュールを検証します。
  • 受け入れテスト アプリケーションが顧客に提供する機能と便益を検証します。
  • 統合(サービス)テスト アプリケーション同士の連携と、サービス全体の流れを検証します。
  • 性能テストとストレステスト 予想どおりの負荷と予想外の負荷に対して、サービスがどのようにスケールできるか、またはできないかを検証します。特に、最もよく使われるサービスで重要です。
  • 非機能テスト セキュリティ、可用性、容量、拡張性を検証します。

単体テストと受け入れテストの自動化が難しく、統合(サービス)テストの自動化に大きく依存している場合は、アーキテクチャが密結合になっている可能性があります。構成要素の結合を緩める方法を見つけましょう。

まとめ

この章では、DevOpsにおけるテスト自動化の重要性を解説しました。テスト自動化は、安全かつ迅速なデリバリーの鍵です。

DevOpsを導入するかどうかにかかわらず、テスト自動化なしに、社内外の顧客に質の高いサービスを提供できる、世界水準で生産性と収益性の高いIT組織を作ることはできません。



無料のオンライン研修でDevOps認定試験に合格できることを保証します!

  1. 01

    オンラインで申し込む

    Accredited 認定資格を選び、申し込みを完了します。

  2. 02

    アクセスコードを受け取る

    あなた専用の試験アクセスコードが、すぐにメールで届きます。

  3. 03

    準備して試験を受ける

    無料トレーニングで学んだ後、オンラインで50問の選択式問題に答えます。

  4. 04

    無期限の資格を取得する

    世界で通用する認定証と、検証可能なデジタルバッジを受け取れます。

Certified DevOps Generalist™のサンプル
認定に申し込む

無料のプレミアムオンライン研修

DevOps Revealed 第3版を受け取る

この研修は、主要業界の著名な経営と人材のリーダー、DevOpsコーチ、メンター、専門家、第一人者が参加するコンソーシアムとともに作成しました。International DevOps Certification Academy™を訪れるすべての方がご利用いただけます。教材へのリンクは、 無料のDevOps書籍 および 無料のプレミアムDevOps研修 の二つです。どちらも上部メニューにあります。

この教材はInternational DevOps Certification Academy™が著作権を持つ知的財産です。専門知識の共有がDevOpsのプロフェッショナルを支え、この分野の発展につながると考え、誰にでも無料で公開しています。

認定試験は選択式です。オンライン研修を読んで、試験に合格し、DevOps認定を取得するための知識を身につけましょう。

この質の高い無料オンライン研修でDevOps認定試験に合格できることを保証します!