Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
自動テストのコストと向き合ってみた
Search
SmartHR 品質保証本部
October 07, 2025
Technology
1
310
自動テストのコストと向き合ってみた
2025年10月7日 LAPRAS社主催「QA LT Night」登壇資料
登壇者:豊島
connpass
https://lapras.connpass.com/event/368463/
SmartHR 品質保証本部
October 07, 2025
Tweet
Share
More Decks by SmartHR 品質保証本部
See All by SmartHR 品質保証本部
品質保証の取り組みを広げる仕組みづくり〜スキルの移譲と自律を支える実践知〜
qa
0
41
LLMを搭載したプロダクトの品質保証の模索と学び
qa
1
2.2k
年末調整プロダクトの内部品質改善活動について
qa
0
46
スケールアップ企業のQA組織のバリューを最大限に引き出すための取り組み
qa
1
120
SmartHRの品質保証部の 今とこれから
qa
1
340
E2E自動テストのFlakyに対処しようと思ってAPIでArrangeしてみたの
qa
0
2.1k
E2E自動テストのロケータの使い分けを考えてみたの
qa
0
1.3k
品質保証本部カジュアル面談資料(2025/10/1更新)
qa
1
32k
Other Decks in Technology
See All in Technology
20251222_サンフランシスコサバイバル術
ponponmikankan
2
160
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
58k
田舎で20年スクラム(後編):一個人が企業で長期戦アジャイルに挑む意味
chinmo
1
190
AI時代のアジャイルチームを目指して ー スクラムというコンフォートゾーンからの脱却 ー / Toward Agile Teams in the Age of AI
takaking22
3
740
Master Dataグループ紹介資料
sansan33
PRO
1
4.2k
「もしもデータ基盤開発で『強くてニューゲーム』ができたなら今の僕はどんなデータ基盤を作っただろう」
aeonpeople
0
280
TED_modeki_共創ラボ_20251203.pdf
iotcomjpadmin
0
190
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1k
Qiita Bash アドカレ LT #1
okaru
0
140
Introduction to Bill One Development Engineer
sansan33
PRO
0
340
First-Principles-of-Scrum
hiranabe
1
360
AI with TiDD
shiraji
1
330
Featured
See All Featured
Designing for Performance
lara
610
70k
The Pragmatic Product Professional
lauravandoore
37
7.1k
Ruling the World: When Life Gets Gamed
codingconduct
0
120
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
70k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
200
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
The agentic SEO stack - context over prompts
schlessera
0
580
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
220
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
140
Transcript
© SmartHR, Inc. ⾃動テストの コストと向き合ってみた 豊島 誠之 SmartHR 技術統括本部 品質保証本部
タレントマネジメントユニット 2025/10/7 QA LT Night 〜品質を追求するプロたちの集い〜 画像を置換
豊島 誠之(toyosea) 経歴 • 事業会社でのフロントエンドエンジニアやOpsのキャリアを経て、 QAエンジニアへキャリアチェンジ • 2025年3⽉にSmartHR⼊社後、タレントマネジメント領域のプロダ クトのQAを担当しており、現在はチームメンバーのSETスキルの底 上げにも取り組んでいる。
• 趣味で⾳楽を作ってます。Apple MusicやSpotifyで「toyosea」と 検索してみてください ⾃⼰紹介
本⽇のテーマ • 「⾃動テストを増やすとコストが上がる、 でもバグの混⼊のリスクは抑えたい...!」 • 「この両者のバランスを良い感じにするに はどうすればよいのか?」 3
4
5
タレントマネジメントユニットとは 特徴 • 実働4名体制 (チーフ1名 + メンバー3名) • 1名ずつ1~2個のプロダクトに関わる •
QAとしての関わり⽅はプロダクトの品質課題によって変えていきま す 6
タレントマネジメントユニットとは (宣伝)ユニットのチームビルディング施策のブログ 7
本⽇お話すること 1. 問い 2. 現状分析 3. 戦略 4. 実践 5.
成果 6. まとめ
問い
• 「⾃動テストを増やすとコストが上がる、 でもバグの混⼊のリスクは抑えたい...!」 • 「この両者のバランスを良い感じにするに はどうすればよいのか?」 問い 10
問い 11 ⽤語のすりあわせ • ⾃動テストとは ◦ E2Eテストだけを指しません ◦ Unit, Integration,
E2Eテストを包括した前提で 話します
問い 12 ⽤語のすりあわせ • コストとは ◦ ⾃動テストのメンテナンスコスト ◦ CIのクレジット消費量の⾦銭的なコスト
現状分析 13 和⽥卓⼈⽒ 「テストサイズで再考する「テストピラミッド」 Googleが提唱する効率的な⾃動テスト戦略」より引⽤
問い 14 技術スタックのすりあわせ • ⾔語‧サービス ◦ Backend: RSpec ◦ Frontend:
vitest, Storybook ◦ E2E: Playwright, System Spec ◦ CI: CircleCI
現状分析
現状分析 16 担当プロダクト • ⾃動テスト(Unit) ▪ Backend • 指定した閾値までカバレッジが達しているかをチェックするCI のジョブがあり、カバレッジは⾼く保てている状況
▪ Frontend • Formatterなどの共通で使う関数で単体テストが書かれている 状況 • ビジネスロジックに関する単体テストはあまり書かれていない 状況
現状分析 17 担当プロダクト • ⾃動テスト(Integration) ◦ Backend ▪ APIテストも指定した閾値にカバレッジが達しているかを チェックするCIのジョブがあり、カバレッジは⾼く保ててい
る状況 ◦ Frontend ▪ Storybookでのコンポーネントテストやヴィジュアルリグレッ ションテストが書かれている状況
現状分析 18 担当プロダクト • ⾃動テスト(E2E) ◦ 主要機能のCRUD操作や⼀部イレギュラーな操作のテス トが書かれている状況 ◦ PlaywrightとRailsのSystem
Specが混在している状況 ◦ Flakyテストが多くなりテストの信頼性が落ちている状 況
現状分析 19 担当プロダクト • コスト ◦ CI ▪ 作業ブランチにPushするたびにCIでE2Eテストが実⾏されて いた
▪ SmartHRの多数のプロダクトの中で2番⽬にクレジット消費量 が多くなっていた ▪ E2EのFlakyテストが放置されたままの状況になっていた • メンテナンスコストが多くなり⼿に負えなくなっていた • 「テストが落ちているけどきっと⼤丈夫だろう」という状況 • CIのSuccess Rate (成功率) は70%前後だった
現状分析 20 まとめ • Unit, Integrationレベルのコストに関する課題はなさそう ◦ ただし⾃動テストとしてFrontendのビジネスロジックに関する単体 テストが不⾜している課題はある •
E2Eテストの数はあるがテスト結果の信頼性が低い状態の ためテストの意味が損なわれつつある • テストの意味が損なわれつつあるにも関わらず、CIのクレ ジット消費量にコストがかかっている状況
現状分析 21 このままだとどうなってしまう? • E2Eテストの信頼性が低いまま運⽤されてしまう • ⾃動テストによる恩恵を最⼤限受けられないままCI の⾦銭的なコストを払い続けることになる
戦略
戦略 23 ⾃動テスト • E2Eテストを作りすぎない ◦ 新規機能に関して⾃動テスト戦略を⽴てる ◦ Critical User
Journey相当のテストに絞る • E2E → Integration, Unitテストにサイズダウンできるものは移⾏す る • E2Eテストの信頼性の回復 ◦ Flakyテストの削減 ※Critical User Journey ビジネスの観点から重要とされる部分にフォーカスしたカスタマージャーニーのこと
戦略 24 コスト • テスト実⾏タイミングの⾒直し ◦ 作業ブランチにPushするたびにE2Eテストを実⾏ しなきゃダメなんだっけ?という問い
実践
実践 1. E2Eテストを作りすぎない • ⾃動テスト戦略を⽴てる ◦ 新規機能開発時に⽴案 ◦ テストレベルごとになにを守るか?の⾔語化 26
実践 1. E2Eテストを作りすぎない • テストレベルごとになにを守るか?の例(Unitテスト) ◦ RSpec ▪ 〇〇機能の計算処理 ▪
権限の閲覧範囲外のデータが⾒えないこと ◦ vitest ▪ 各種フォームのバリデーションの振る舞い ▪ データ表記にまつわる振る舞い • 例) 数値に3桁カンマ区切りがあるか • 例) nullの場合〇〇のように表⽰させるか 27
実践 1. E2Eテストを作りすぎない • テストレベルごとになにを守るか?の例(E2E) ◦ Critical User Journey相当のシナリオの動作の担保 ▪
例 • 〇〇設定で〇〇を追加できる • 〇〇が計算できる 28
実践 2. E2E → Integration, Unitテストにサイズダウ ンできるものは移⾏する • System Specで担保していたものをPlaywright
に移⾏する中でE2Eで担保しなくていいものは Integration, Unitテストで担保した 29
実践 2. E2E → Integration, Unitテストにサイズダウ ンできるものは移⾏する • 移⾏するかサイズダウンするかの判断基準 ◦
Playwrightに移⾏ ▪ Critical User Journey相当のシナリオかどうか ◦ サイズダウン ▪ バリデーション関連のテスト ▪ 細かい仕様の振る舞いを確認するテスト 30
実践 3. E2Eテストの信頼性の回復に向けた動き • 「テストが落ちているけどきっと⼤丈夫だ ろう」からの脱却 ◦ Flakyテストを1個ずつ直す 31
実践 3. E2Eテストの信頼性の回復に向けた動き • Flakyテストの具体例 ◦ await⽂の漏れ ◦ 時間差で出てくる要素が取得できずエラー ◦
ステータスが「処理中」の場合を考慮していな かったためエラー 32
実践 4. テスト実⾏タイミングの⾒直し • E2Eテストの実⾏タイミングを⾒直す ◦ 現状:作業ブランチにPushされた時 ◦ 変更案: ▪
masterブランチにマージ後 ▪ リリースフローで実⾏ ▪ Dailyで定時実⾏ 33
実践 4. テスト実⾏タイミングの⾒直し • E2Eテストの実⾏タイミングを⾒直す ◦ 現状:作業ブランチにPushされた時 ◦ 変更案: ▪
masterブランチにマージ後 ← 採⽤ ▪ リリースフローで実⾏ ▪ Dailyで定時実⾏ 34
実践 4. テスト実⾏タイミングの⾒直し • Dynamic Configurationの導⼊ ◦ CircleCIの機能 ◦ E2Eディレクトリ配下に変更差分があったときのみ
作業ブランチでのCIでE2Eテストを実⾏する 35
実践 4. テスト実⾏タイミングの⾒直し • Dynamic Configurationにさらなる適正化 ◦ フロントエンドに関する差分がある場合 ▪ フロントエンドのテストを実⾏する
▪ バックエンドのテストはSkipする ◦ バックエンドに関する差分がある場合 ▪ バックエンドのテストを実⾏する ▪ フロントエンドのテストはSkipする 36
成果
成果 成果1 • E2EのSuccess Rateが70% → 95%以上に回 復! 38
成果 成果2 • CIのクレジット消費量が以前と⽐べて半減 した! 39
まとめ
まとめ 41 ⾃動テストを増やすとコストが上がる、 でもバグの混⼊のリスクは抑えたい...! 1. 必要な⾃動テストを必要なテストレベルで増やせてい るか ◦ ⾃動テストの戦略の策定 ◦
E2Eテスト偏重をやめる 2. Flakyテストを削減して⾃動テストの信頼性を回復 3. 実⾏タイミングを⾒直すことでコスト削減できないか ◦ 現状の実⾏タイミングが適切なのか?という問い ◦ Dynamic Configurationを活⽤して変更があるときのみ実⾏する
We are Hiring! 会社とプロダクトがスケールアップする中で まだまだ⼈が⾜りていません ⼀緒に活動するメンバーを募集中です カジュアル⾯談お待ちしております〜! 42
ご清聴ありがとうご ざいました! 43