$30 off During Our Annual Pro Sale. View details »

仕様書0からAPIテストを自動生成した時のお話

 仕様書0からAPIテストを自動生成した時のお話

SHIFT_EVOLVE

March 25, 2022
Tweet

More Decks by SHIFT_EVOLVE

Other Decks in Business

Transcript

  1. 仕様書0からAPIテストを自動生成した時のお話 「すべてのソフトウェアにMade in Japanの品質を」

  2. 自動テストでこんなことに困っていませんか? • E2Eテストが安定しない(flaky)…. • E2Eテストのメンテナンスに時間がかかる…. • E2Eテストの実行時間が長い…. • E2Eテストのテストコード作成までが一苦労….

  3. 自動テストでこんなことに困っていませんか? だったら、E2Eテストやめればいいじゃね

  4. 自動テストでこんなことに困っていませんか? E2EテストはスモークテストとUIテストだけにして データ遷移などのテストは、APIテストでいいじゃ ないか

  5. 自動テストでこんなことに困っていませんか? けど・・・

  6. 自動テストでこんなことに困っていませんか? API仕様書がない! ※Open APIもない

  7. 自動テストでこんなことに困っていませんか? テストケースはある!

  8. 自動テストでこんなことに困っていませんか? APIテストを0から書くのは面倒だ!

  9. 自動テストでこんなことに困っていませんか? テストケース通り操作したら勝手に APIテストが作成できたら楽だよね

  10. 自動テストでこんなことに困っていませんか? そんなライブラリあるかな

  11. 自動テストでこんなことに困っていませんか? なさそう・・・

  12. 自動テストでこんなことに困っていませんか? だったら、作ればいいんだ!

  13. 自動テストでこんなことに困っていませんか? 作りました! https://www.npmjs.com/package/rest-api-testing-codegen

  14. どの辺のテストができるの? 既存のテストタイプにマッチするものがなかったので、 BFF(Backend For Frontend)APIテスト と命名しました。

  15. どの辺のテストができるの? BFF(Backend For Frontend)APIテストとは? バックエンド側に、APIリクエストを組み合わせて発行し、 UIを返さず、画面操作を模した形で行うテストアプローチ。 ※テストピラミッドでは、UI TestsとIntegration API Testsの中間位置

    バックエンドのAPIテストのため、 UIの影響を最小限に E2Eテストよりも安定かつ高速な テスト実行が可能 テストメンテナンス テスト実行 テスト観点 E2EテストとAPIシナリオテストでテストレベル(観点)を 分けることにより、より適切なメンテナンス量へ
  16. BFFAPIテストツールのご紹介 ブラウザ操作でキャプチャ 画面A 画面B 画面C Playwright Web Api Testing Codege

    WebApiを抽出、 シナリオテストコードを自動生成 API呼び出し 画面A 画面B 画面C ブラウザ操作で、RestApiでのシナリオテストを自動生成 GUIを使用しない安定かつ高速なテストを実現 BFFAPIテストツール 自動生成
  17. BFFAPIテストの導入効果 従 来 の E 2 E テ ス ト

    の 場 合 B F F A P I テ ス ト を 組 み 合 わ せ た 場 合 テスト自動化コスト テストスコープ テスト 設計 自動テスト 作成 テスト 実行 運用保守 自動化 エンジニア テスト 設計 自動テスト 作成 テスト 実行 運用保 守 コストカット GUI操作キャプチャによ るテストコード自動生成 で工数短縮 UIなしの高速APIテス トで実行時間短縮 UI変更に影響しないため 既存テストの修正が不要 UI Testsの範囲にBFFAPIテストを加え、テストスコープを最適化 E2Eテストはクイックやスモークテスト などで最小限にする 因子水準の多い組み合わせテス トは高速なAPIテストで実行する UI Tests 全てをE2Eテストで行う 組み合わせの多いパターンも 全てE2Eテストでカバーする 【4画面10組み合わせテストの場合】 4画面 * 10組み合わせ = 40パターン 【4画面10組み合わせテストの場合】 E2Eテスト:4画面 * 4因子 = 4パターン BFFAPIテスト:10組み合わせ = 10パターン 計:14パターン 自動化 エンジニア
  18. DEMO mkdir aws-ec2-instance-pricing cd aws-ec2-instance-pricing npm init -y npm i

    -D rest-api-testing-codegen npm i -D @playwright/test npx rest-api-testing-codegen --baseURL=https://aws.amazon.com/jp/ec2/pricing/reserved- instances/pricing/ --headers=cookie npx playwright test
  19. ご清聴ありがとうございました。