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
Spring Boot で実現する クリーンアーキテクチャとそのテスト戦略
Search
Takaichi00
December 25, 2019
Technology
3.2k
0
Share
Spring Boot で実現する クリーンアーキテクチャとそのテスト戦略
【第1回】Java Testing Challenge LT大会 での登壇資料です
Takaichi00
December 25, 2019
More Decks by Takaichi00
See All by Takaichi00
individual_or_organization
takaichi00
0
270
自分から始めるアジャイルの道 ~内発的動機をきっかけに変わった価値観~
takaichi00
0
440
Java developer introduced to Rust-ADC2022
takaichi00
0
300
野球人・落合博満さんから学ぶ、アジャイルなマインドセット・プラクティス
takaichi00
1
900
【CICD2021】デプロイメントパイプラインの原理原則を再確認する / Confirm Deployment Pipeline Principle
takaichi00
11
4.7k
【JTF2021】SonarQube をより有効活用する / Effective SonarQube
takaichi00
1
2.7k
JJUG CCC 2021 Spring-Resolving OOME with JFR
takaichi00
2
3.7k
【Yahoo! JAPAN Agile 2nd】野球人・落合博満さんから学ぶスクラムマスター / デベロッパー
takaichi00
0
2.8k
【Developers Boost 2020】凡人エンジニアの生存戦略
takaichi00
1
3.2k
Other Decks in Technology
See All in Technology
生成AI時代に信頼性をどう保ち続けるか - Policy as Code の実践
akitok_
1
220
サンプリングは「作る」のか「使う」のか? 分散トレースのコストと運用を両立する実践的戦略 / Why you need the tail sampling and why you don't want it
ymotongpoo
4
170
10サービス以上のメール到達率改善を地道に継続的に進めている話 / Continue to improve email delivery rates across multiple services
yamaguchitk333
6
1.6k
The 7 pitfalls of AI
ufried
0
210
古今東西SRE
okaru
2
180
「背中を見て育て」からの卒業 〜専門技術としてのテスト設計を軸に、品質保証のバトンを繋ぐ〜 #genda_tech_talk
nihonbuson
PRO
3
1.3k
Agent の「自由」と「安全」〜未来に向けて今できること〜
katayan
0
360
"うちにはまだ早い"は本当? ─ 小さく始めるPlatform Engineering入門
harukasakihara
6
520
Purview Endpoint DLP 動かしてみた
kozakigh
0
360
「QA=テスト」「シフトレフト=スクラムイベントの参加者の一員」の呪縛を解く。アジャイルな開発を止めないために、10Xで挑んだ「右側のしわ寄せ」解消記 #scrumniigata
nihonbuson
PRO
5
1.2k
2026-05-14 要件定義からソース管理まで!IBM Bob基礎ハンズオン
yutanonaka
0
140
みんなの考えた最強のデータ基盤アーキテクチャ'26前期〜前夜祭〜ルーキーズ_資料_遠藤な
endonanana
0
310
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
141
7.4k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
320
Paper Plane
katiecoart
PRO
1
50k
For a Future-Friendly Web
brad_frost
183
10k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Amusing Abliteration
ianozsvald
1
160
Navigating Weather and Climate Data
rabernat
0
190
Accessibility Awareness
sabderemane
1
110
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Transcript
Spring Boot で実現する クリーンアーキテクチャとそのテスト戦略 髙市 智章 (Tomoaki Takaichi) Dec, 25,
2019 【第1回】Java Testing Challenge LT大会 #jjtc
自己紹介 @Takaichi00 tomoaki.takaichi.5 ・髙市 智章(タカイチ トモアキ) ・Java でのシステム開発 ・アジャイル開発実践 ・ショップ向けシステムの開発
❏ テスト戦略を立てていないと... ❏ 人によってテストの実装方法が違う ❏ 不必要なテストや、ビジネス上重要なロジックにテス トがない ❏ テストコードのメンテナンス性悪化 テスト戦略立てていますか?
❏ 実践アジャイルテスト で書かれている内容 ❏ アジャイルテストの4象限 ❏ テストピラミッド ❏ クリーンアーキテクチャー ❏
凹型レイヤー テスト戦略を立てる上で考えていること
❏ 様々なテストは大きく以下の4分類に分けることができる ❏ 分類ごとに、自動 or 手動 or ツール でやるべきものが決定する アジャイルテストの4象限
https://notta55.hatenablog.com/entry/2015/05/03/161631 より引用
❏ どのテストを優先して自動化するか? ❏ 実行が速い/コストが低い単体テストを多く自動化する ❏ 実行が遅い/コストが高い結合テスト、GUI のテストは多く自動化しない ❏ 例: 境界値全網羅は単体テスト、業務シナリオテストは代表的なフロー数本
テストピラミッド https://notta55.hatenablog.com/entry/2015/05/03/161631 より引用
❏ 中心の「ビジネスロジック」はそのままに、それ以外は交 換可能なものとする考え方 クリーンアーキテクチャー https://blog.tai2.net/images/CleanArchitecture.jpg より引用
❏ TERASOLUNA や 「Spring入門」などでも紹介されてい る設計パターン 凹型レイヤー https://terasolunaorg.github.io/guideline/5.0.0.RELEASE/ja/_images/LayerDependencies.png より引用
❏ Controller, Service, Repository のそれぞれのレイヤ間 で完結する単体テスト ❏ レイヤ間で正しい振る舞いができているか? ❏ Domain
Model に対する単体テスト ❏ ビジネスロジックは正しいか? ❏ Controller ⇔ Repoistory ⇔ 対向先をモック という結合 テスト ❏ 結合した場合に正しい振る舞いをするか? Spring Boot テスト方針 ~REST API の場合~
❏ 実際にサンプルを実装してみました Spring Boot DEMO https://github.com/Takaichi00/spring-boot-sample-api /tree/master/spring-boot-sapmle-api
❏ Front 部分からの開発が可能になる ❏ 後ろの処理を実装していなくても Front の機能が実装可能 ❏ 「念の為の実装」をしなくて良い ❏
Controller のプロトコルが変わった、データ取得元が DB では なく REST API になった、といった場合でも Domain の変更を しなくて良い ❏ 複数レイヤを並行して開発できる ❏ ただしコミュニケーションコストがかかるためあまり実践はしていない ❏ (結果として) テスタビリティが高い この実装の良い点
❏ レイヤ間の値の詰め替えが退屈 ❏ 項目が多いほど値を詰め替える時間が膨大になり、テ ストも確認する項目が増え大変 ❏ 実装とテストが成熟してくると、例えば DB に項目を1 つ追加して画面に返すのにも結構手間がかかる
❏ 仮に REST API と画面を結合した GUI テストを実装し始 めた場合、結合テストのメンテナンスが大変になることも この実装の辛い点
❏ テストアワーグラス ❏ GUI テストのコストは低下傾向にある ❏ 結合テストはユーザーのニーズを満たしているか確 認できるだろうか? ❏ ATDD
(受け入れ駆動開発) ❏ Web 画面であれば Cucumber + Selenide を使用したテスト 次の挑戦 https://www.getautoma.com/blog/the-test-hourglass より引用
さいごに みなさんのテスト戦略もぜひ聞かせてください!!
ご清聴ありがとうございました