はじめに
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」の両方で確認する
-
「起動条件」や「二重起動」を必ずテストする
難しそうに見えて、ポイントさえ押さえれば
誰でもしっかりしたテストケースが作れるようになります。
この記事が、あなたのテスト設計の一助になれば幸いです!