ストリーミングデータパイプラインを本番環境でテストするためのテストプロセスを自動化。
はじめに
オンデマンドテストの実行を可能にし、CIと統合することでリグレッションサイクルを70%に短縮。
アルティメット・クロノス・グループについて
アルティメット・クロノス・グループ(UKG)は、マサチューセッツ州ローウェルとフロリダ州ウェストンに二重本社を置くアメリカの多国籍テクノロジー企業である。 労働力管理および人事管理サービスを提供している。 HCM、給与計算、人事サービス提供、ワークフォース管理ソリューションのリーディング・グローバル・プロバイダとして、UKGの受賞歴のあるPro、Dimensions、Readyソリューションは、地域や業種を問わず、何万もの組織がより良いビジネス成果を上げ、人事の有効性を向上させ、給与計算プロセスを合理化し、すべての人にとってより良い、よりつながりのある仕事を実現できるよう支援しています。
インパクト
- プラグアンドプレイのテスト自動化フレームワークにより、UKGは開発者のテストを加速し、テストカバレッジを230%拡大することができます。
- リグレッションにかかる時間を70%短縮し、オンデマンドのテスト実行を可能にした。
- 動的なイベント生成により、上流のソースチームへの依存を最小限に抑えます。
課題
これを達成するために、チームは以下のような数々の課題に直面してきた:
- テストデータの欠如
我々は上流システムにアクセスできないので、上流システムからのモック・イベントを使ってテストしたが、本番データ・パイプラインの品質を保証するには、その限られたイベントだけでは不十分だ。
- 限られたテスト範囲
私たちはモック・イベントを使ってテストしていたので、テスト・カバレッジも限られていた。
- データソースが制御不能
上流のソースシステムは、モックされたイベントを共有する責任がある。 上流に複数のソース・システムがあるため、コミュニケーションやコラボレーションに困難が生じる。 たとえば、模擬試合でのちょっとしたアップデートを各チームに伝えるのは難しい。 その結果、テストケースがもろくなり、上流のシステムが何らかの変更を加えたときに失敗することになった。
- 本番データセットでテストデータをシャッフルする。
開発チームとテストチームのGCPインスタンスが1つしかなかったため、同じサービスアカウントを使って同じGCPリソースにアクセスしていました。 開発されたパイプラインはストリーミング・パイプラインであるため、上流システムからモックされたイベントと一緒にリアルタイムのイベントを引き出している。 時には、リアルタイムの開発データからモックデータをフィルタリングするのは少し面倒だ。
- より高い回帰時間
パイプラインの機能テストを主に手作業に頼っていたため、パイプラインの動作に少し変更を加えると、リグレッション時間が長くなっていました。
解決策
SDLCにテスト自動化を導入
パイプラインの手動テストは、パイプラインの動作を理解し、前進するための複数のシナリオを特定し、文書化するのに役立ちました。 この時点で、私たちはパイプラインに期待されていることを明確に理解していた。 さまざまなシナリオとは? そこで、SDLCにテスト自動化を導入することにしました。
Pact.ioとのハイブリッド・フレームワーク
コントラクト・テストでは、上流システムが送信するメッセージや下流システムが受信するメッセージが、”コントラクト “に文書化された共通の理解に適合していることを確認するために、各アプリケーションを分離してチェックすることで、統合ポイントをテストしていた。 この契約は、アップストリームソースから受け取ったイベントスキーマを検証するための真実のソースである。 こうすることで、ソースシステムへの依存を最小限に抑えることができる。
これがその仕組みだ。 我々は上流システムからのイベントの消費者であるため、消費者主導の契約テストをいくつか作成し、ソース・システムから何を期待しているかを説明する契約書を作成し、プロバイダーやソース・チームと共有した。 今、ソーシング・チームは、私たちが共有した契約に従って生のイベントを構成している。
テスト自動化フレームワークのコンポーネント
-
我々は、テスト作業を自動化するためのハイブリッド・フレームワークを開発した。 テスト・フレームワークには複数のコンポーネントがあり、以下に説明する:
- エクステント・レポート:カスタマイズされたテスト実行レポートを生成するための Java ライブラリ。
- カスタムユーティリティ:BigQueryデータレイク内のデータの検証など、さまざまなアクションを実行するJavaメソッドを含むJavaクラス。
- ユニットテストフレームワークJunit 5:テストランナーとしてのJunit 5、junitアサーションは、テスト実行後に期待される動作と実際の動作をアサーションするのに役立ちました。
- 契約テストのフレームワーク:契約テストを導入し、上流チームからの依存を排除。 Pact.Ioによる拡張統合テストを開発。
- 消費者主導の契約テスト:ソース・チームからの生のイベントに大きく依存しているため、これらのテストは、ソース・イベントが我々の期待に適合していることを確認するのに役立った。 ソースチームへの依存を最小限に抑えることができる。
- パクト・ブローカー:契約と検証結果をデータソース・チームと共有するための集中管理アプリ。
- Concourse CIとのCI統合:CI/CDの集中プラットフォームとしてconcourse CIを使用していました。 オンデマンドのテスト実行と迅速なフィードバックのために、テストをconcourse CIに統合しました。
その結果
最終的には、ストリーミング・インジェスト・データ・パイプラインをテストするためのプラグアンドプレイの再利用可能な自動化フレームワークを設計しました。
- このフレームワークにより、サンプルイベントを再構築することでダイナミックイベントを生成することが可能になった。
- テストカバレッジが向上し、共有サンプルイベントを操作することで、より多くのネガティブシナリオをテストできるようになった。
- オンデマンドのテスト実行が可能になり、CIと統合することで、リグレッション・サイクルを70%に短縮することができました。
- 開発チームが開発者のテストを加速できるよう支援。
- 納品サイクルタイムの短縮。
「OMNIは複数の上流システムと相互作用する分析プラットフォームです。自動化フレームワークのおかげで、ソースシステムへの依存を最小限に抑え、開発とオンデマンドのテスト実行を加速させることができます。”
シニア・エンジニアリング・マネージャー
ケーススタディをもっと読む
大手デジタル広告サービスとの1年にわたるRPAの旅を垣間見る
大手デジタル広告サービス・ソリューションプロバイダーの1年にわたるRPAの旅と、NashTechがどのように彼らを支援したかをご紹介します。
デジタル棚の分析をサポートし、eコマースの成長を引き出す
NashTechがどのようにデジタル棚の分析を支援し、世界有数のデータ洞察とeコマースソリューションプロバイダーと成長を解き放つかをご覧ください。
あなたのプロジェクトについて話しましょう
- トピックス