Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
新規プロダクトの開発速度と品質の両立を支える自動テスト/ Automation testin...
Search
noriharu3
August 25, 2020
Programming
2k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
新規プロダクトの開発速度と品質の両立を支える自動テスト/ Automation testing supports both development speed and quality of new product
noriharu3
August 25, 2020
More Decks by noriharu3
See All by noriharu3
中途社員がチームに参加しました
noriharu3
0
1.6k
Other Decks in Programming
See All in Programming
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
3
1k
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
130
Performance Optimization With LLMs
xleitix
0
180
Domain-Driven Transformation
hschwentner
2
2.3k
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
310
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
180
AI時代のTerminal環境を UNIX哲学で設計・運用する
yasunori0418
1
140
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
1
1.7k
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
290
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
820
コードで差別化できない時代の ソフトウェアエンジニアリング / Software Engineering in an Era Where Code Doesn’t Differentiate
kishida
2
180
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
5.2k
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
72
12k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
790
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.3k
A better future with KSS
kneath
240
18k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
380
Tell your own story through comics
letsgokoyo
1
1.1k
The SEO identity crisis: Don't let AI make you average
varn
0
590
Game over? The fight for quality and originality in the time of robots
wayneb77
1
310
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
870
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
710
Transcript
新規プロダクトの 開発速度と品質の両立を 支える自動テスト SaaS 新規プロダクトの技術 #RAKUSMeetup 福岡憲治
自己紹介 • 福岡 憲治(ふくおか けんじ) • 2018 年に中途でラクスへ入社 ◦ 楽楽精算の開発を経て、現在は楽楽労務の開発/運用
◦ 定期的なバージョンアップのための仕組みやルール作りに 奮闘中 ◦ テレワーク Now ! 2
新規プロダクトならではの悩み 3
新規プロダクトならではの悩み 1. ドメインに対する理解が不十分・アジャイルに機能開発をして いくので作り直しが発生する 2. チーム増員の際、新メンバーにも設計指針を浸透させるのが 難しい 3. ユニットテストだけでは結合レベルの品質が不安で、手動テス トが減らない
4
本日お話しすること 新規プロダクトに、スピード感のある開発はとても重要 品質を保ちつつ、開発速度を両立するために自動テストは不可欠 です • 自動テストって何をしているの? • どういうとき嬉しいの? 5
目次 1. 楽楽労務のプロダクト概要 2. 楽楽労務の技術スタック概要 3. 開発速度と品質の両立を支える自動テスト 3.1. ユニットテスト 3.2.
アーキテクチャテスト 3.3. E2E テスト 3.4. 自動テストの恩恵 4. テストコードを書くことが当たり前のチーム文化 6
1. 楽楽労務のプロダクト概要 7
楽楽労務のプロダクト概要 人事労務業にかかわる人のストレスをゼロに。 8 https://www.rakurakuroumu.jp/
2. 楽楽労務の技術スタック概要 9
楽楽労務の技術スタック概要 10 Frontend Backend Vue.js Vuetify.js Spring Boot Batch
楽楽労務の技術スタック概要 11
3. 開発速度と品質の両立を支える 自動テスト 12
開発速度と品質の両立を支える自動テスト • ユニットテスト ◦ JUnit, Jest • アーキテクチャテスト ◦ ArchUnit
• E2Eテスト ◦ Puppeteer 13
3.1. ユニットテスト(JUnit)
ユニットテスト(JUnit) JUnit を用いて、Java プログラムのメソッドレベルの入出力が期 待どおりの動作をしているかを確認する • テストカバレッジが約90% 15
ユニットテスト(JUnit) マージリクエスト時に、レビューイ・レビューア共に • 既存機能にデグレがないことに一定の安心感がある • 既存機能にデグレがないか確認の時間を削減できる ※マージリクエスト・・・GitHubでいうとプルリクエストのこと 16
ユニットテスト(JUnit) 依存ライブラリを更新する際に、アプリケーションが壊れていない ことに一定の安心感がある • 特に、JDK と Spring Boot 17
3.2. アーキテクチャテスト(ArchUnit)
アーキテクチャテスト(ArchUnit) ArchUnit を用いて、Java アプリケーションのパッケージやクラス が設計方針(依存関係)に沿っているかを確認する こんな悩みが解決できます • 設計方針が納期優先、メンバ増加により泥団子に • どのパッケージにクラスを置いたらよいか迷う
19
20 @Test void ドメイン層のクラスは他の層のクラスに依存しない() { noClasses(). that().resideInAPackage(“com.example.domain..”) .should() .dependOnClassedThat().resideInAnyPackage( “com.example.infrastructure..”,
“com.example...”, “com.example.application..” ) .check(CLASSES); インフラストラクチャ層 UI層 アプリケーション層 ドメイン層
アーキテクチャテスト(ArchUnit) パッケージやクラスの設計方針のレビュー自動化 • 設計者の負担(ドキュメント作成/周知、レビュー指摘)の削減 • 開発メンバーはどのパッケージにクラスを置けいたらいいか迷 う時間がなくなる 21
詳しく知りたい方は... 22 https://speakerdeck.com/kawanamiyuu/jjug-ccc-2019-spring
3.3. E2Eテスト(Puppeteer)
E2Eテスト(Puppeteer) E2E テストとは • フロントエンド⇔バックエンドを結合したエンドツーエンドの動 作を、ブラウザ操作で確認するテスト Puppeteer を用いて、ハッピーパスのブラウザ操作を自動化して いる ※ハッピーパス・・・正常系の代表ケース
24
E2Eテスト(Puppeteer) ハッピーパスが動いていることに一定の安心感がある • 従業員登録 • 入社申請依頼 • etc... 25
3.4. 自動テストの恩恵
自動テストの恩恵 新規プロダクトならではの悩み 1. ドメインに対する理解が不十分・アジャイルに機能開発をして いくので作り直しが発生する 2. チーム増員の際、新メンバーにも設計指針を浸透させるのが 難しい 3. ユニットテストだけでは結合レベルの品質が不安で、手動テス
トが減らない 27
自動テストの恩恵 新規プロダクトならではの悩み 1. ドメインに対する理解が不十分・アジャイルに機能開発をして いくので作り直しが発生する 28
自動テストの恩恵 新規プロダクトならではの悩み 1. ドメインに対する理解が不十分・アジャイルに機能開発をして いくので作り直しが発生する → 既存機能のデグレを一早く検知し、メインブランチへのマー ジを防げる 29
自動テストの恩恵 新規プロダクトならではの悩み 2. チーム増員の際、新メンバーにも設計指針を浸透させるのが 難しい 30
自動テストの恩恵 新規プロダクトならではの悩み 2. チーム増員の際、新メンバーにも設計指針を浸透させるのが 難しい → 技術的にばらつきがある開発チームで、一定の強制力を もってアーキテクチャの設計品質を担保できる 31
自動テストの恩恵 新規プロダクトならではの悩み 3. ユニットテストだけでは結合レベルの品質が不安で、手動テス トが減らない 32
自動テストの恩恵 新規プロダクトならではの悩み 3. ユニットテストだけでは結合レベルの品質が不安で、手動テス トが減らない → E2E テストも活用することで、アプリケーションが壊れてい ないことに一定の安心感をもつことができる 33
自動テストの恩恵 リリーススプリントの結果を分析してみたところ、 • 回帰テストは ◦ バグは多く発見できているが、軽微なものがほとんど ◦ 時間効率が非常に低く、成果も小さい 新機能 既存機能
備考 リリーススプリント 工数(人日) バグ件数 工数(人日) バグ件数 単体テスト 5 11 回帰テスト 27 18 軽微なバグが多い ※リリーススプリント・・・リリース直前にテストやリリース準備を行う期間 34
自動テストの恩恵 これまで ◦ 約1ヶ月半もの期間、リリーススプリントを実施 ▪ 「自動テストで一定の品質担保できているのでは?」と いう気づき • 今後は ◦
リリーススプリントでのテストの実施方法を見直し、約1ヶ月 に短縮することにチャレンジ! 35
4. テストコードを書くことが 当たり前のチーム文化 36
テストコードを書くことが当たり前のチーム文化 プロジェクト立ち上げ時からテストコードを書くことを前提として始 めていたことが大きい • プロジェクトの開発ガイドラインとして定めている 37
テストコードを書くことが当たり前のチーム文化 根底のモチベーションは何? • 前身のチームから、ポジティブな印象が強かった 行動 結果 テストコードを書く 自動テストの結果から • デグレをいち早く検知
• デグレがないことを即座に確認可 • 単体・結合テストの前にバグを潰せる • アプリが壊れていないという安心感 38
おわりに 39
おわりに 新規プロダクトの「開発速度」と「品質」の両立を支える自動テスト についてお話しました。 自動テストがなければ、テストフェーズでのバグ発生、手戻り多発 でリリースまでのスピードが落ちていたかも.... 出来るところから、自動テストを書いていきませんか? 40