1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Cloud Run Functions(Python)で動くデータパイプラインのテストケースの考え方

Posted at

はじめに

Cloud Functions(Python)を使ったデータ連携や ETL パイプラインは、
「コードが短いわりに動く部分が多い」ため、テスト設計がとても大事になります。

  • GCS にファイルが置かれ
  • Cloud Functions がそれを受け取り
  • 必要に応じて Cloud Tasks に振り分け
  • Worker がファイルを処理して
  • 最後 DWH にロードされる
    こういう構成は現場でもよくあります。

この記事では、Cloud Functions を中心にしたパイプラインの“わかりやすいテスト設計の考え方” を解説します。

この記事はこんな人にオススメ

  • Cloud Functions(もしくはLambda)(Python)でバッチ/ETLを作っている人
  • 「テストケースってどう書くの?」と思っている人
  • データ処理系のテスト観点を整理したい人
  • Web じゃなく“Google Cloud Storage・DWH絡みのテスト”を知りたい人

1. テストケースを作る前に知っておきたいこと

Cloud Functions(Python)でのデータ連携は、
ざっくり以下の 3 ブロックに分かれます。

① Enqueue Function(振り分け)
② Worker Function(実処理)
③ Checker Function(最終チェック、トリガー)

実は、この 3つの役割ごとに分けて考えるだけで、テストがめちゃくちゃ書きやすくなります。

2. 良いテストケースとは?

✔ 明確でシンプル

何を検証したいのか 1 行で説明できる。

✔ 正常系 + 異常系 + 境界値 を押さえる

・普通のケース
・間違ったケース
・ギリギリのケース
これをセットにすると漏れにくい。

3. Cloud Functions で最低限やるべきテスト観点

ここでは 一般的なパイプラインで外せない観点
初心者向けに分かりやすく説明します。

3-1. Enqueue Function(振り分け)のテスト

🟢 正常例:ファイル名で処理を振り分ける

例:

  • report_20250101.csv → “処理A”用の Worker
  • log_20250101.csv → “処理B”用の Worker
    確認ポイント
  • Cloud Tasks に正しい Worker URL が入ったか
  • payload に必要な情報(ファイル名等)が入っているか
  • ログに例外が無いか

🔴 異常例:想定外のファイルの場合

  • 拡張子が違う
  • 名前に必要な文字が無い
    確認ポイント
  • システムが落ちない
  • ログに “スキップした” などの明示が残る

3-2. Worker Function(実処理)のテスト

実際にファイルを処理するため、一番テストが多いレイヤーです。

🟢 正常系:ファイル内容を正しく処理できる

例えば:

  • gz/csv が正しく解凍できる
  • 必要な列が揃っている
  • DWH にロードできる

確認ポイント

  • Cloud Logging に成功ログ
  • DWH にデータが入る

🔴 異常系:壊れたファイル / 空ファイル

  • 0バイト
  • 列数不一致
  • 文字コードエラー

確認ポイント

  • 処理が止まらない(システム全体が落ちない)
  • エラーがログとして残る
  • 不正ファイルが DWH に入らない

🟡 境界値:大量ファイル・大容量ファイル

例:

  • 同時に 10〜100 ファイル来る
  • 2GB 以上の大きいファイル

確認ポイント

  • タイムアウトしない
  • メモリが溢れない
  • 全部処理される

3-3. Checker(最終トリガー)のテスト

複数ファイルをまとめて扱うパイプラインでは、
「全部処理されたか?」の判定が必要になる。

🟢 起動条件が満たされたときに実行される

  • 全ファイルが正常に処理済み
  • 最後のファイルが到着した
    期待結果
  • 後続の Workflow(Dataform 等)が起動

🔴 条件不十分なら起動しない

  • まだ1つでも“未処理”がある
  • 直近更新があり不安定
    期待結果
  • 起動しない
  • ログに “Waiting...”

🟡 二重起動防止

期待結果

  • 同じバッチで2回起動しない

4. 初心者でも使える「テストケーステンプレ」

テストケース例(Cloud Functions 用)

No 種別 項目 テスト内容 期待結果 確認方法
1 正常系 Enqueue 特定ファイルをアップロード 正しい Worker が呼ばれる Task ログ
2 正常系 Worker 正しい CSV を処理 DWH にデータが入る DWH
3 異常系 Worker 壊れた CSV エラーログが出てスキップ Cloud Logging
4 境界値 Worker 0バイトのファイル システムが落ちない ログ
5 正常系 Checker 全ファイル完了 Workflow が起動 実行履歴
6 異常系 Checker 未処理あり 起動しない ログ

5. まとめ

Cloud Functions × データパイプラインのテストで大事なのは、

  • 「レイヤーごとに分けて考える」
  • 「正常・異常・境界値」の3点セット
  • 「ログ」と「DWH」の両方で確認する
  • 「起動条件」や「二重起動」を必ずテストする
    難しそうに見えて、ポイントさえ押さえれば
    誰でもしっかりしたテストケースが作れるようになります。
    この記事が、あなたのテスト設計の一助になれば幸いです!
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?