Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

どの辺のテストができるの? BFF(Backend For Frontend)APIテストとは? バックエンド側に、APIリクエストを組み合わせて発行し、 UIを返さず、画面操作を模した形で行うテストアプローチ。 ※テストピラミッドでは、UI TestsとIntegration API Testsの中間位置 バックエンドのAPIテストのため、 UIの影響を最小限に E2Eテストよりも安定かつ高速な テスト実行が可能 テストメンテナンス テスト実行 テスト観点 E2EテストとAPIシナリオテストでテストレベル(観点)を 分けることにより、より適切なメンテナンス量へ

Slide 16

Slide 16 text

BFFAPIテストツールのご紹介 ブラウザ操作でキャプチャ 画面A 画面B 画面C Playwright Web Api Testing Codege WebApiを抽出、 シナリオテストコードを自動生成 API呼び出し 画面A 画面B 画面C ブラウザ操作で、RestApiでのシナリオテストを自動生成 GUIを使用しない安定かつ高速なテストを実現 BFFAPIテストツール 自動生成

Slide 17

Slide 17 text

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パターン 自動化 エンジニア

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

ご清聴ありがとうございました。