Upgrade to Pro — share decks privately, control downloads, hide ads and more …

251126 TestState APIってなんだっけ?Step Functionsテストと...

Avatar for Takumi Abe Takumi Abe
November 25, 2025

251126 TestState APIってなんだっけ?Step Functionsテストどう変わる?

2025/11/26(水) KAGのLT会 #9 feat. #しむそくRadio re:Invent直前スペシャルにて発表した登壇資料。
https://kddi-agile.connpass.com/event/375951/

Avatar for Takumi Abe

Takumi Abe

November 25, 2025
Tweet

More Decks by Takumi Abe

Other Decks in Programming

Transcript

  1. 社外秘X TestState APIってなんだっけ? 
 Step Functionsのテストはどう変わる? 
 2025-11-26 KAGのLT会 #9

    feat. #しむそくRadio re:Invent直前スペシャル
 KDDIアジャイル開発センター株式会社 阿部拓海(あべたく) 

  2. 社外秘X 1 KDDI Agile Development Center Corporation $ whoami 


    阿部拓海(あべたく) @east_takumi
 
 在住: 福岡県福岡市←→大分県国東市
 職種: ソフトウェアエンジニア
 会社: KAG(KDDIアジャイル開発センター)
 
 コミュニティ活動
 - AWS Community Builder(Serverless)
 

  3. 社外秘X 2 KDDI Agile Development Center Corporation アジェンダ 
 1


    2
 3
 4
 TestState API って何だったけ? 今回のアップデートについて
 じゃあ何ができるようになったの?
 まとめ

  4. 社外秘X 4 KDDI Agile Development Center Corporation TestState API とは?

    
 Step Functionsの 1つのステートだけ を実行し、 
 入出力や途中データ(エラー箇所)などを確認するためのAPI 

  5. 社外秘X 5 KDDI Agile Development Center Corporation TestState API とは?

    
 メリット
 - ステート単体のお試し実行 
 - ステートマシンの定義も1つのステートのみに限定 
 - choiceなどは若干例外(NextStateを出力する必要もあったり) 
 - 入出力処理を可視化 
 もやもやしてたこと 
 - ワークフロー全体/ワークフロー内特定のステートのテストはできなかった 
 - いくつか対象外のステートがあった(MapやParallelなど 
 - 実際のAWSリソースを叩いてしまう(mock機能がなかった 
 

  6. 社外秘X 7 KDDI Agile Development Center Corporation 今回のアプデ 
 -

    ステートマシン全体 + stateName でテスト 
 - サービス統合/HTTP のモック & コントラクトチェック 
 - Map / Parallel / Activity / .sync 系もテスト対象に 
 - Retry / Catch ふくめたエラー処理設計のテスト 

  7. 社外秘X 8 KDDI Agile Development Center Corporation ステートマシン全体 + stateName

    でテスト 
 以前
 - definition 
 - 1つのステートのみの定義したJSON 
 アプデ後
 - definition 
 - ワークフロー全体を定義したJSON 
 - stateName 
 - definitionで定義したステートの中からテ ストしたいステート 
 あくまで、 
 1つのステートをテストする ことは変わらない 

  8. 社外秘X 9 KDDI Agile Development Center Corporation サービス統合/HTTP のモック &

    コントラクトチェック 
 AWSサービス統合やHTTP Taskの結果をモックが可能に! 
 →実際のサービスを叩かなくて済む(IAMの設定も不要になる) 
 ※ 一部サービスを除く
 さらに実際のAWSサービスのレスポンス仕様と合っているかチェックする 
 Lambdaは確認済み、DynamoDBがテストに示されてる、他は調査中 🙏
 チェックレベルがいくつかある
 - STRICT
 - 実際に返るレスポンスと完全一致するかを見る
 - PRESENT
 - mockに書かれてるパラメータだけみる
 - NONE
 - オールスルーする

  9. 社外秘X 10 KDDI Agile Development Center Corporation サービスモックのコントラクトチェックの例 
 Ex.

    DynamoDBのPutItemを想定
 STRICTの場合 
 
 中の属性が型つきか? mockで指定する型と一致してるか? etc. 必須フィールドがあるか? フィールド名ミスがないか? etc. number型になっているか? etc.
  10. 社外秘X 11 KDDI Agile Development Center Corporation サービスモックのコントラクトチェックの例 
 Ex.

    DynamoDBのPutItemを想定
 PRESENTの場合 
 
 一部mockに記載がなかったりするケースは OK →mockに記載があるもののみみる! NG例 - mockに記載があるオブジェクトの型が違う
  11. 社外秘X 12 KDDI Agile Development Center Corporation サービスモックのコントラクトチェックの例 
 Ex.

    DynamoDBのPutItemを想定
 NONEの場合 
 
 何も見ない!!!w 型定義?オブジェクト一致?知ったものかそんなもの!
  12. 社外秘X 14 KDDI Agile Development Center Corporation 擬似的なインテグレーションテストがより高いレベルで? 
 下記の情報を渡してテストする

    
 definition→ワークフロー定義 
 stateName→テストしたいステート 
 input→ステートに渡すInput 
 mock→モックする結果 

  13. 社外秘X 15 KDDI Agile Development Center Corporation 擬似的なインテグレーションテストがより高いレベルで? 
 次のステートが終了対象でなければ、

    
 実行結果からデータを渡して再度TestState APIを実行する 
 nextState→stateName 
 output→input 

  14. 社外秘X 17 KDDI Agile Development Center Corporation まとめ
 1. TestState

    APIは1つのステートだけをテストするAPI
 2. ステートマシン全体の文脈で単体テストできるようになった
 3. サービス統合をモック & コントラクトチェックできる
 4. Map / Parallel / エラー処理など“壊れやすいところ”も安全に検 証できる
 5. CI/CDへの組み込みがしやすくなった