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

Fixtureを活用して Rspecを爆速にしたい

Avatar for つかも つかも
July 16, 2026
120

Fixtureを活用して Rspecを爆速にしたい

Avatar for つかも

つかも

July 16, 2026

Transcript

  1. The build strategy of FactoryBot FactoryBotのBuild strategy ・・・・ 本当に早くなるんだろうか...? 200

    generated records / run × 3 assertion tests × 10 runs → 30 examples,/ Finished in xx seconds
  2. テスト実行 Spec 1 Spec 2 Spec 3 create(:user) create(:user) create(:user)

    create(:result) create(:result) create(:result) テスト実行 Spec 1 Spec 2 Spec 3 create(:user) create(:result) FactoryBot Why fixtures are so fast なぜ速いのか ・・・・・・・・・・ Fixture
  3. Fixture FactoryBot 0 1 2 3 柔軟性 前提の明示性 共通データの再利用性 変更影響の局所化

    実行速度 0 1 2 3 柔軟性 前提の明示性 共通データの再利用性 変更影響の局所化 実行速度 Benchmark two methods FixtureとFactoryBotのメリデメ ・・・・・・・・・・・・・・・ 柔軟なデータ作成が可能 依存関係が見えやすい DB書き込みが増えて遅くなりガチ テストコードを削減できる テスト実行速度が早くなる 依存関係や変更影響が見えにくい
  4. Fixture FactoryBot 0 1 2 3 柔軟性 前提の明示性 共通データの再利用性 変更影響の局所化

    実行速度 Benchmark two methods FixtureとFactoryBotのメリデメ ・・・・・・・・・・・・・・・・・
  5. My QA System Architecture Fixtureを用いたテスト基盤 :共通の基盤となるデータで活用 :状態の変化が激しいレコードで活用 主にRequest specにて活躍 例)

    アカウント認証のテストで使用するUserデータ Model specおよび、各種テストで広範に活躍 例) Userデータを作成するときのバリデーション ・・・・・・・・・・・・・・・・・・・ FactoryBot Fixture
  6. FixtureBuilder FixtureBuilder FactoryBot Fixture set A DB Scenario A Scenario

    B Scenario C Fixture set B Fixture set C アカウント作成前 アカウント作成後 継続利用中 ・Company ・User ・Result ・Company ・User A,B,C... ・Result A,B, C... ・Company ・User A,B,C... ・Result A,B, C... ・Company ・User A,B,C... ・Result A,B, C... ・・・・・・・・・・・・・・・・・・・・・・・・・・
  7. My QA System Architecture Fixtureを用いたテスト基盤 Testのみならず、 開発環境(やQA環境)でのデータとしても活用できる Fixture Test FactoryBot

    Builder Develop Seed Viewer ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  8. Fixture FactoryBot 0 1 2 3 柔軟性 前提の明示性 共通データの再利用性 変更影響の局所化

    実行速度 Benchmark two methods FixtureとFactoryBotを一緒に使おう デメリットを最小化し、メリットを最大化 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・