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
270
自動テストのコストと向き合ってみた
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
18
LLMを搭載したプロダクトの品質保証の模索と学び
qa
1
2k
年末調整プロダクトの内部品質改善活動について
qa
0
32
スケールアップ企業のQA組織のバリューを最大限に引き出すための取り組み
qa
1
110
SmartHRの品質保証部の 今とこれから
qa
1
320
E2E自動テストのFlakyに対処しようと思ってAPIでArrangeしてみたの
qa
0
2.1k
E2E自動テストのロケータの使い分けを考えてみたの
qa
0
1.2k
品質保証本部カジュアル面談資料(2025/10/1更新)
qa
1
30k
Other Decks in Technology
See All in Technology
SREのキャリアから経営に近づく - Enterprise Risk Managementを基に -
shonansurvivors
1
770
AIがコードを書いてくれるなら、新米エンジニアは何をする? / komekaigi2025
nkzn
25
18k
Data & AIの未来とLakeHouse
ishikawa_satoru
0
620
コード1ミリもわからないけど Claude CodeでFigjamプラグインを作った話
abokadotyann
1
130
戦えるAIエージェントの作り方
iwiwi
24
12k
AIエージェントは「使う」だけじゃなくて「作る」時代! 〜最新フレームワークで楽しく開発入門しよう〜
minorun365
9
1.4k
從裝潢設計圖到 Home Assistant:打造智慧家庭的實戰與踩坑筆記
kewang
0
140
Spec Driven Development入門/spec_driven_development_for_learners
hanhan1978
1
970
ピープルウエア x スタートアップ
operando
3
3.7k
re:Inventに行きたい いつか行きたい 行けるようにできることは?
yama3133
0
110
新米エンジニアをTech Leadに任命する ー 成長を支える挑戦的な人と組織のマネジメント
naopr
1
390
隙間ツール開発のすすめ / PHP Conference Fukuoka 2025
meihei3
0
200
Featured
See All Featured
BBQ
matthewcrist
89
9.9k
Speed Design
sergeychernyshev
32
1.2k
Thoughts on Productivity
jonyablonski
73
4.9k
Embracing the Ebb and Flow
colly
88
4.9k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
Code Review Best Practice
trishagee
72
19k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
Faster Mobile Websites
deanohume
310
31k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
54k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Making Projects Easy
brettharned
120
6.4k
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