Slide 1

Slide 1 text

KDDIアジャイル開発センター株式会社 StepFunctionの テスト自動化始めてみました vol.1 S e r v e r l e s s M e e t u p F u k u o k a # 5 K A G あ べ た く

Slide 2

Slide 2 text

出身 コミュニティ 趣味 メッセージ 大分県国東市 JAWS-UG, CloudflareUG 書道(準師範), 日向坂46(新曲MVリピ中) 最近お酒が残りやすくなった、 、 、 あべたく Abetaku Profile

Slide 3

Slide 3 text

最近のあべたく 最近はAWSをお仕事で触ってる プロジェクトでは一部サーバレス構成を採用 新規機能追加でサーバレス構成で作った時の お話

Slide 4

Slide 4 text

最近のあべたく St e p F unct i ons で 3 つ の ス テ ー トを 持 つ   シ ン プルな構成 そ の 時 それぞれの ス テ ー ト の U T は あ る が 、   ステートマシン全 体 の 流 し テ ス ト は 手 動   そ れ ぞれのステ ー ト の 入 出 力 が あっ て る か を   目視確認

Slide 5

Slide 5 text

最近のあべたく St e p F unct i ons で 3 つ の ス テ ー トを 持 つ   シ ン プルな構成 そ の 時 それぞれの ス テ ー ト の U T は あ る が 、   ステートマシン全 体 の 流 し テ ス ト は 手 動   そ れ ぞれのステ ー ト の 入 出 力 が あっ て る か を   目視確認   → 自 動化できな い だ ろ う か ?        訳: 手動確認辛い

Slide 6

Slide 6 text

Ph.1 要件まとめる 👀

Slide 7

Slide 7 text

想 定 事 項 サ ー バ レス構成 L a m b d a S t e p F u n c t i o n s → AW S SAMで定 義 3 個 の ステートで構成 で 一 直 線 で 全 て L ambda関 数 テ ス ト の確認項目 各 ス テ ー ト で の 入 出 力 が 期 待 さ れ て い る 値 が 含 ま れ て い る か ど う か e t c . 要件整理

Slide 8

Slide 8 text

要件整理 要 望 事 項 Git hu b A ct i onsの ワ ー ク フ ロ ー 内 で 完 結 ( 実 際 の AW S 環 境 に デプロイし な い ) し た い P R に P u s h さ れ る 度 に そ の ワ ー ク フ ロ ー が 実 行 さ れ る Pos t ma nを利用 P o s t m a n ( C L I な ど も 含 む ) を 使 っ て 管 理 で き る ? デ プ ロ イ す る と 、 P o s t m a n の コ レ ク シ ョ ン を 作 成 A P I の 入 出 力 や 期 待 値 を リ ポ ジ ト リ の 中 で 管 理 し て み た い → た だ ただ、使っ て み た い ( 横 暴 )

Slide 9

Slide 9 text

要件をまとめたので、 、 、 あとは生成AIに任せる! ← オ イ ア ベ 俺 は KG さんと も つ 鍋 を食べるん だ !

Slide 10

Slide 10 text

要件をまとめたので、 、 、 あとは生成AIに任せる! ← オ イ ア ベ 俺 は KG さんと も つ 鍋 を食べるん だ ! ちゃんとそのあと 調整しましたので 許してあげてください by 天の声

Slide 11

Slide 11 text

Ph.2 できた構成の紹介

Slide 12

Slide 12 text

今回の構成

Slide 13

Slide 13 text

今回の構成 Newman Pos t ma nで作成した A P Iテ ス ト コ レ ク シ ョ ン を コ マ ン ドラインか ら 自 動 実 行 で き るツ ー ル E x . P o s t m a n で 作 成 テ ス ト ス ク リ プ ト を N e w m a n を 使 っ て C L I か ら 実 行 特 徴 APIテストを自動化し、CI/CDパイプラインに組み込む テスト結果をプログラムで解析する 大量のリクエストをスクリプトから実行する

Slide 14

Slide 14 text

Ph.3 振り返り

Slide 15

Slide 15 text

できたこと モックサーバを使ったステートマシンのE2Eテスト →Step Functions Localを断念した(後述 GitHub Actionsによる自動テスト化 →Pushすれば起動までできたので、都度確認できる(最高 テスト条件と期待値のコード化(Newman) →JSON準備して、newman runで実行できるの楽しい 各Lambda個別のテスト →UTと言えるのだろうか。 。 。

Slide 16

Slide 16 text

できなかったこと Step Functoins Localによる自動テスト

Slide 17

Slide 17 text

できなかったこと Step Functoins Localとは? ロ ー カ ル環境でL am bdaな ど の サ ー ビ ス の レ ス ポ ン ス を モ ッ ク して完全に 隔 離 さ れ た 環 境 でSt e p F unc t i ons の 動 作 確 認を行うこ と が で き る 出典:DevelopersIO 「Step Functionsをローカル環境でテストできるStep Functions Localのモックサービス統合機能がリリースされたので試してみた」 https://dev.classmethod.jp/articles/step-functions-local-tried/

Slide 18

Slide 18 text

できなかったこと Step Functoins Localとは? 特 徴 Dockerコンテナ 通常はDockerコンテナとして提供され、簡単に起動・停止が可能 APIエンドポイント デフォでhttp://localhost:8083でAPIエンドポイントを公開 AWS SDKとの互換性 AWS SDKを使用して、実際のAWS環境と同じようにアクセス可能

Slide 19

Slide 19 text

できなかったこと Step Functoins Localによる自動テスト コンテナ起動からのネットワークの調整が最後までうまくいかなった SAM Localで実行するLambda関数を連携させようとしたため? SAM LocalのLambda関数はlocalhostの別のポートで実行さ れ、コンテナ間通信の設定が追加で必要そう 👀

Slide 20

Slide 20 text

まとめ Newmanはもう少し深めて、テストケース管理/同期もしていきたい →ほぼできたけど今回は除外 サーバレスのテストってどこまでやってるかめちゃ聞きたい →正直わからん ステートのリトライパターンなども作っていきたい →今回は断念したが、いけなくなさそう→もっと自動化できそう SAM Localなどを用いて、(一部)自動化ができた →がっつり作ったのは初めてだったが、Q Developerでかなり楽に実装できた

Slide 21

Slide 21 text

懇 親 会 で お 話 し さ せ て く だ さ い 〜 ( ぜ ひ 大 分 に お 越 し く だ さ い 〜 w ) Thank you!