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

260116 さらば「指差し確認」! TestState APIで変わる、これからのSer...

260116 さらば「指差し確認」! TestState APIで変わる、これからのServerless Testing

2026/01/16(金) Serverless Meetup Fukuoka #6 にて発表した登壇資料。
https://serverless.connpass.com/event/375928/

Avatar for Takumi Abe

Takumi Abe

January 16, 2026
Tweet

More Decks by Takumi Abe

Other Decks in Technology

Transcript

  1. さらば「指差し確認」! 
 TestState APIで変わる、 
 これからのServerless Testing 
 2026-01-16 Serverless

    Meetup Fukuoka #6
 KDDIアジャイル開発センター株式会社 阿部拓海(あべたく) 

  2. 1 KDDI Agile Development Center Corporation $ whoami 
 あべたく

    @east_takumi
 {
  "普段" : {
   "会社": "KDDIアジャイル開発センター株式会社(KAG)", 
   "職種": "Webバックエンドエンジニア",
   "ニックネーム": "あべたく",
   "最近": "わい明日10時に別府(さっきまで別府いた...)",
    },
  "コミュニティ活動": [
   "JAWS-UG おおいた&福岡",
   "福岡クラウドUG",
   "AWS Community Builder(Serverless)"
  ],
 }
 }

  3. 9 KDDI Agile Development Center Corporation アジェンダ 
 1
 2


    3
 4
 TestState API って? 2025年11月のアップデートについて
 じゃあ何ができるようになったの?
 まとめ

  4. 11 KDDI Agile Development Center Corporation TestState API とは? 


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

  5. 12 KDDI Agile Development Center Corporation TestState API とは? 


    めちゃ嬉しかったこと 
 • ステート単体のお試し実行 
 • 入出力処理を可視化 
 悩ましかったこと 
 • デプロイをする必要があった 
 • それぞれのリソースを動かす権限が必要 

  6. 13 KDDI Agile Development Center Corporation TestState API とは? 


    Task stateの中身を検証可能 
 • INFO
 ◦ State Outputのみ返す
 • DEBUG
 ◦ 中間データを全て返す

  7. 15 KDDI Agile Development Center Corporation 今回のアプデ 
 - ステートマシン全体

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

  8. 16 KDDI Agile Development Center Corporation 今回のアプデ 
 - ステートマシン全体

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

  9. 17 KDDI Agile Development Center Corporation ステートマシン全体 + stateName でテスト

    
 以前
 1つのステートのみの定義したJSONしか 
 渡せなかった 

  10. 18 KDDI Agile Development Center Corporation ステートマシン全体 + stateName でテスト

    
 アプデ後
 ワークフロー全体を定義したJSONを渡して 
 ステート名を指定すれば、 
 そのステートへのUTが実行できる。 
 
 レスポンスとして下記が返ってくる 
 • 実行結果
 • 次のステート名 

  11. 21 KDDI Agile Development Center Corporation ステートマシン全体 + stateName でテスト

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

  12. 22 KDDI Agile Development Center Corporation サービス統合/HTTP のモック & コントラクトチェック

    
 AWSサービス統合やHTTP Taskの結果をモックが可能に! 
 →実際のサービスを叩かなくて済む(権限もTestState API実行のみでOK) 
 ※ 一部サービスを除く
 さらに実際のAWSサービスのレスポンス仕様と合っているかチェックする 
 チェックレベルがいくつかある
 • STRICT
 ◦ 実際に返るレスポンスと完全一致するかを見る
 • PRESENT
 ◦ mockに書かれてるパラメータだけみる
 • NONE
 ◦ オールスルーする

  13. 23 KDDI Agile Development Center Corporation サービスモックのコントラクトチェックの例 
 Ex. DynamoDBのPutItemを想定


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


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


    NONEの場合 
 
 何も見ない!!!w 型定義?オブジェクト一致?知ったものかそんなもの!
  16. 26 KDDI Agile Development Center Corporation 注意点
 ❌これはできない
 ローカルで確認したい!(実際のAWSリソースを操作したくない) &&


    Lambdaのコードもローカルにある &&
 Lambdaのステートをローカルコードでテスト したい
 
 
 

  17. 27 KDDI Agile Development Center Corporation 注意点
 ❌これはできない
 ローカルで確認したい!(実際のAWSリソースを操作したくない) &&


    Lambdaのコードもローカルにある &&
 Lambdaのステートをローカルコードでテスト したい
 
 TestState APIは AWS上リソースしか 呼び出せない 
 
 
 

  18. 29 KDDI Agile Development Center Corporation 擬似的なインテグレーションテストがより高いレベルで? 
 下記の情報を渡してテストする 


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

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


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

  20. 32 KDDI Agile Development Center Corporation 個人的な感想 
 • 「強力な」単体テストは名に恥じない


    • モックやMapなどの対応はStep Functions自体のテストの目的が 大きそう(おそらく)
 • インテグレーションテストをコード化できる利点が強い!
 (割と副産物な感じがする)
 

  21. 33 KDDI Agile Development Center Corporation まとめ
 1. TestState APIは1つのステートだけをテストするAPI


    2. ステートマシン全体の文脈からステート単体テストが可能
 3. サービス統合をモック & コントラクトチェックできる
 4. これでインテグレーションテストがコード化&&自動化!泣