NTTドコモ様 事例
NTTドコモのシステムにおける
「DevOps推進と運用効率化」
NTTドコモが提供するサービスのシステム開発・運用では積極的にDevOpsを推進しています。
「オブザーバビリティの強化、PagerDutyの導入」により初動対応の迅速化や運用の効率化を実現。
サービスの価値を高める活動に多くの時間を割けるようになった事例をご紹介!→ PagerDutyの資料をみる(無料)
企業が提供するアプリケーション・ITサービス・Webサイトの良し悪しを判断するのは、エンドユーザーです。どれほど素晴らしいアイデアでも、アプリケーションがユーザーの変化するニーズと期待に応え続けなければ失敗に終わります。そしてエンドユーザーは、機能性だけでなく、サービスを通して得られる良い体験、つまり高い顧客体験(ユーザーエクスペリエンス・UX)を求めています。それは、FacebookやGoogleといった革新的で円滑な高いユーザーエクスペリエンスを提供するサービスが人気であることからも明らかです。
ユーザーエクスペリエンスを高めるためには、ユーザーの利用に悪影響をおよぼす問題点を事前に見つけることが重要です。そして、その方法の一つが「E2Eテスト (End-to-End)」です。E2Eテストは、DevOpsを実践する企業をはじめとした、ユーザーのニーズに応えて適用しようとする企業にとっては欠かせないものになっています。E2Eテストを通じて、チームはユーザーごとに異なるワークフローを現実的な観点で確認し、改良や修正が必要な箇所を特定できるからです。また、E2Eテストを綿密に設計することで、「アプリケーションの速度」「信頼性」「使いやすさ」といったユーザー視点の明確なインサイトを得られます。実際のユーザーが製品を使用する際に想定されるアクションでシミュレーションするため、ユーザー視点での問題を特定できるのです。このようなインサイトを得られれば、チームは自信を持ってアプリケーションに必要な変更や改良を加えることができ、最終的にはユーザーのロイヤルティと満足度の維持・向上につながります。こちらの記事では、E2Eテストをさらに深掘りし「E2Eテストのプロセス作成」や「最適化に役立つテストの実行方法」、そして「ベストプラクティス」について説明します。
目次
市場の変化や技術進歩が著しい現代では、多様な製品・サービスが次々と登場するため機能や価格だけでは差別化が難しい状況となっています。そのなかでユーザーに自社の製品・サービスを選んでもらうために必要なのが、ユーザーエクスペリエンスへの取り組みです。ユーザーエクスペリエンスとは、製品やサービスの利用を通して得られるあらゆる「ユーザー体験」を指します。このユーザー体験には、通信環境やデバイスといった製品・サービス以外の要素も含まれます。製品・サービスがあふれる現代社会において、ユーザーは機能や価格だけでなく、得られる経験とその価値も重視しているのです。高いユーザーエクスペリエンスを提供するためには、まず、ユーザーのニーズを満たす必要があります。では、「ユーザーのニーズを満たしているか」はどのように評価すればよいのでしょうか。
ユーザーの求めるニーズも、それに対する評価も、時と場合によって変わります。例えば、システムの応答速度を例に考えてみましょう。「リラックスタイムで動画の読み込みに10秒待たされる」のと「改札で交通系ICカードの処理に10秒待たされる」のとでは、同じ10秒でもサービスの有用性に対する評価やユーザーの満足度が大きく異なります。そのため、ユーザーエクスペリエンスを考えるうえでは、ユーザーの利用シーンやワークフローに沿ってテストを実施することが欠かせません。そして、そのテスト方法の一つが「E2Eテスト」といえます。
E2Eテストとは、1つのアプリケーションに対し「複数のユーザーワークフローでシミュレーションを実施し、そのパフォーマンスを測るもの」です。E2Eテストが、単体テストや結合テストといったほかのテストと異なるのは、ユーザーのワークフロー全体にフォーカスしている点です。E2EとはEnd-to-End(端から端まで)の略で、E2Eテストの対象がシステムやプロセス全体であることを意味しています。そのため、E2EテストではブラウザやAPIなど実際のコンポーネントを使用してテストし、ユーザーエクスペリエンスに悪影響を与える潜在的な問題まで特定できるようにします。
E2Eテストでは、実際に使われるブラウザやAPI、ユーザーのシナリオを使って、「応答速度」「信頼性」「総合的なユーザー体験」の視点からアプリケーションのパフォーマンスを測定します。例えば、E2Eテストでパフォーマンスを測定できる一般的なユーザーワークフローには、以下のような例があります。
こういった一連のユーザーワークフローを、実環境と同様の環境でテストすることで、システムが期待どおりに機能しているかを検証できるのです。
E2Eテストを実施することで、ユーザーワークフローに悪い影響をおよぼす問題を早期に発見でき、事前に解決できます。例えば、開発チームがよく直面するのが「アプリケーションパフォーマンスが低い」または「ページ表示速度が遅い」という問題です。今日のユーザーは、アプリケーションやWebサイトが読み込まれるのをそれほど長くは待ってはくれません。実際、最近の調べでは、BBC NewsのWebサイトの読み込み時間が1秒長くなるごとに、ユーザーが平均10%減少することがわかっています。複数のワークフローでテストとモニタリングを行うE2Eテストは、ほかのテスト手法よりもカバレッジが広く、顧客の離脱や自社のコスト増につながる問題を迅速かつ確実に特定します。E2Eテストを実施してリリース前に対処することで、ユーザーエクスペリエンスの向上につながるのです。
E2Eテストは、DevOpsを実践する企業にとって、ユーザーのニーズに応えて適応するために欠かせないものになっています。DevOpsでは、開発チームと運用チームの密な連携により、シームレスでスピーディなシステム開発と運用をめざします。品質を高める以外にも、E2Eテストはシステム開発や運用といった役割にかかわらず共通のテストケースを使用することで、チーム間のコラボレーションを促進する役割も果たしています。DevOps文化の下でE2Eテストを取り入れることで、迅速なデプロイと安定した運用が実現でき、高いユーザーエクスペリエンスの提供につながるのです。DevOpsにおいてE2Eテストを実施するための4つのステップをご紹介します。
対象となるアプリケーションで起こりうるユーザーワークフローをすべて洗い出します。これには、商品購入やスケジュール作成といった「製品・サービスの使用中にユーザーが実施する操作」も含めます。ただし、あくまで当該製品・サービスに関する操作に限ります。
ワークフローごとのパフォーマンスをモニタリングできるE2Eテストを作成します。それぞれのワークフローがどう機能しているかを、現実に即した視点で確認できるように、テストの環境を構築しましょう。E2Eテストで測定すべき項目は、「スピード」「正確さ」「使い勝手の良さ」などです。
テストデータをもとに、必要な変更と更新を加えます。E2Eテストを準備しておけば、ユーザーエクスペリエンスに悪影響をおよぼす問題を、より迅速に特定し解決できます。実際のユーザーワークフローをシミュレーションしテストすることで、顧客の手に届く前に問題の箇所を特定・解決できます。
実際のユーザーエクスペリエンスを正確にシミュレーションできるように、定期的にE2Eテストの内容とテストツールの調整・改良を行います。そして、E2Eテストの効果を高める方法の一つが、可能な限り自動化を進めることです。E2Eテストの自動化は、工数の削減に加え、容易に幅広い観点でテストを実施できるといったメリットがあります。
ここで、E2EテストをDevOps実践に取り入れる際に重要となるポイント・ベストプラクティスを、いくつかご紹介します。
まず、自社製品のワークフローで頻出するパターンに注目しましょう。これは、製品の成功を左右するワークフローであるともいえます。例えば、Airbnbで最も頻出するワークフローが「宿泊場所の検索と予約」だとすれば、そのワークフローをE2Eテストにかけることが重要です。
次に、上記以外で考えられるワークフローもテストしましょう。シンプルで最適なユーザーエクスペリエンスの実現には、自社製品における「マイクロインタラクション(最小単位のインタラクション)」にも目を向けることが大切です。例えば、アカウントの作成やログイン、アプリ内のページ間のナビゲーションなどです。どのようなワークフローも未検討のままにしてはいけません。重要に見えないものも含め、考えうるワークフローの一つひとつがユーザーに感動を与える機会を持っています。
ワークフローを小さく分解し、テストの焦点を絞りましょう。テストの対象範囲を狭くするほどモニタリングが簡単になり、問題解決にかかる時間も短縮されます。
現実の利用環境に即した条件でテストを設計しましょう。現実の世界で起こりうる要因をすべて考慮しシミュレーションするのが、E2Eテストの最も効果的な使い方です。例えば、「読み込み」に関して緻密なテストを行うには、実際のトラフィックを想定した環境で製品のパフォーマンスを測ることが重要です。
ユーザーの期待に応え続けるためには、E2Eテスト自体を進化させる必要があります。可能な限り自動化させ、チームに課せられる余計な負荷を減らしましょう。E2Eテストの自動化により効率化が進むと、チームはより改善に時間をかけられるようになり、ユーザーエクスペリエンスの向上につながります。
Devopsについては以下の記事で詳しく解説しています。ぜひ併せてご覧ください。
> 「DevOps」とは?〜超基本から実践のポイントを解説〜
E2Eテストにおける課題として、時間がかかることが挙げられます。特に、テスト仕様書をベースとした手動で行うE2Eテストは膨大な工数が必要です。その結果、広範囲で多数にわたるテストケースの実施が困難になることもあります。また、工数がかかることで、E2Eテストの実施自体が大きなハードルとなってしまうこともあるでしょう。特にDevOpsでは、高速開発に合わせてE2Eテストも頻繁に実施されるため、E2Eテストの非効率性の影響が大きく出ます。E2Eテストでは効率化を図ることが欠かせないのです。
E2Eテストの効率を上げて高品質なテストにするためには、E2Eテストツールの導入がおすすめです。E2Eテストツールには、テストのモニタリングから多大な時間を必要とする手作業の自動化まで、さまざまな機能を備えたツールがあります。自社に合ったE2Eツールの活用と自動化によって、幅広い範囲で高品質なテストが可能になり、継続的なテスト工数の削減にもつながります。ここで、よく使われているE2Eテストツールをいくつかご紹介します。
E2Eパフォーマンステストの管理ツールであるLoadNinjaは、わかりやすいインターフェイスが特長です。シンプルな設計なので、「テストの作成」「メンテナンス」「診断」を非常に簡単に実施できます。
DatadogはSaaS型の運用監視サービスで、自社アプリケーションのエンドポイントごとのパフォーマンスと可用性をモニタリングできる優れたツールです。Datadogを利用すれば常にサービスの状況を把握でき、問題への対応時間を短縮できます。
Autifyは、ノーコードでテストを作成・自動化できるツールです。テストしたい一連の挙動をブラウザで操作すると、Autifyが操作内容をもとにテストを作成し自動化します。また、ユーザーインターフェイスの変更をAIが検知してソースコードを自動で調整するため、テストの修正の手間を省け、作成したテストが壊れにくいことも特長です。
E2Eテストは複雑なアプリケーションの全体的な動作を確認し、ユーザーエクスペリエンス向上に貢献します。ただし、E2Eテストは一度行えばよいものではありません。繰り返しテストを実施し、改善を続けていく必要があります。E2Eテストの継続的な実施のためには「E2Eテストツールの活用による効率化や自動化」が重要な要素となります。ツールを活用したE2Eテストで、高品質なITサービス・アプリケーションの提供と顧客満足度の向上を実現させましょう。
PagerDutyではDevOpsの実現を支えるさまざまなインシデント管理機能を提供しています。ご興味ある方はPagerDutyの14日間の無料トライアルをぜひお試しください。
NTTドコモが提供するサービスのシステム開発・運用では積極的にDevOpsを推進しています。
「オブザーバビリティの強化、PagerDutyの導入」により初動対応の迅速化や運用の効率化を実現。
サービスの価値を高める活動に多くの時間を割けるようになった事例をご紹介!→ PagerDutyの資料をみる(無料)
目次