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

自動テストのコストと向き合ってみた

 自動テストのコストと向き合ってみた

2025年10月7日 LAPRAS社主催「QA LT Night」登壇資料
登壇者:豊島

connpass
https://lapras.connpass.com/event/368463/

Avatar for SmartHR 品質保証部

SmartHR 品質保証部

October 07, 2025
Tweet

More Decks by SmartHR 品質保証部

Other Decks in Technology

Transcript

  1. © SmartHR, Inc. ⾃動テストの コストと向き合ってみた 豊島 誠之 SmartHR 技術統括本部 品質保証本部

    タレントマネジメントユニット 2025/10/7 QA LT Night 〜品質を追求するプロたちの集い〜 画像を置換
  2. 4

  3. 5

  4. 問い 14 技術スタックのすりあわせ • ⾔語‧サービス ◦ Backend: RSpec ◦ Frontend:

    vitest, Storybook ◦ E2E: Playwright, System Spec ◦ CI: CircleCI
  5. 現状分析 16 担当プロダクト • ⾃動テスト(Unit) ▪ Backend • 指定した閾値までカバレッジが達しているかをチェックするCI のジョブがあり、カバレッジは⾼く保てている状況

    ▪ Frontend • Formatterなどの共通で使う関数で単体テストが書かれている 状況 • ビジネスロジックに関する単体テストはあまり書かれていない 状況
  6. 現状分析 19 担当プロダクト • コスト ◦ CI ▪ 作業ブランチにPushするたびにCIでE2Eテストが実⾏されて いた

    ▪ SmartHRの多数のプロダクトの中で2番⽬にクレジット消費量 が多くなっていた ▪ E2EのFlakyテストが放置されたままの状況になっていた • メンテナンスコストが多くなり⼿に負えなくなっていた • 「テストが落ちているけどきっと⼤丈夫だろう」という状況 • CIのSuccess Rate (成功率) は70%前後だった
  7. 現状分析 20 まとめ • Unit, Integrationレベルのコストに関する課題はなさそう ◦ ただし⾃動テストとしてFrontendのビジネスロジックに関する単体 テストが不⾜している課題はある •

    E2Eテストの数はあるがテスト結果の信頼性が低い状態の ためテストの意味が損なわれつつある • テストの意味が損なわれつつあるにも関わらず、CIのクレ ジット消費量にコストがかかっている状況
  8. 戦略 23 ⾃動テスト • E2Eテストを作りすぎない ◦ 新規機能に関して⾃動テスト戦略を⽴てる ◦ Critical User

    Journey相当のテストに絞る • E2E → Integration, Unitテストにサイズダウンできるものは移⾏す る • E2Eテストの信頼性の回復 ◦ Flakyテストの削減 ※Critical User Journey ビジネスの観点から重要とされる部分にフォーカスしたカスタマージャーニーのこと
  9. 実践 1. E2Eテストを作りすぎない • テストレベルごとになにを守るか?の例(Unitテスト) ◦ RSpec ▪ 〇〇機能の計算処理 ▪

    権限の閲覧範囲外のデータが⾒えないこと ◦ vitest ▪ 各種フォームのバリデーションの振る舞い ▪ データ表記にまつわる振る舞い • 例) 数値に3桁カンマ区切りがあるか • 例) nullの場合〇〇のように表⽰させるか 27
  10. 実践 2. E2E → Integration, Unitテストにサイズダウ ンできるものは移⾏する • System Specで担保していたものをPlaywright

    に移⾏する中でE2Eで担保しなくていいものは Integration, Unitテストで担保した 29
  11. 実践 2. E2E → Integration, Unitテストにサイズダウ ンできるものは移⾏する • 移⾏するかサイズダウンするかの判断基準 ◦

    Playwrightに移⾏ ▪ Critical User Journey相当のシナリオかどうか ◦ サイズダウン ▪ バリデーション関連のテスト ▪ 細かい仕様の振る舞いを確認するテスト 30
  12. 実践 4. テスト実⾏タイミングの⾒直し • Dynamic Configurationにさらなる適正化 ◦ フロントエンドに関する差分がある場合 ▪ フロントエンドのテストを実⾏する

    ▪ バックエンドのテストはSkipする ◦ バックエンドに関する差分がある場合 ▪ バックエンドのテストを実⾏する ▪ フロントエンドのテストはSkipする 36
  13. まとめ 41 ⾃動テストを増やすとコストが上がる、 でもバグの混⼊のリスクは抑えたい...! 1. 必要な⾃動テストを必要なテストレベルで増やせてい るか ◦ ⾃動テストの戦略の策定 ◦

    E2Eテスト偏重をやめる 2. Flakyテストを削減して⾃動テストの信頼性を回復 3. 実⾏タイミングを⾒直すことでコスト削減できないか ◦ 現状の実⾏タイミングが適切なのか?という問い ◦ Dynamic Configurationを活⽤して変更があるときのみ実⾏する