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

仕様書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の品質を」

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  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

    View full-size slide

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

    View full-size slide