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
ソフトウェアの設計を学び、メンテナンスしやすいテストを作ろう / Learn software...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Culvert
December 09, 2023
Technology
3
2.7k
ソフトウェアの設計を学び、メンテナンスしやすいテストを作ろう / Learn software design, Create tests that are easy to maintain
2023/12/9 ソフトウェアテスト自動化カンファレンス2023の発表資料です。
Culvert
December 09, 2023
Tweet
Share
More Decks by Culvert
See All by Culvert
動作する読みやすいE2Eを目指して/Aim for readable E2E
culvert
1
160
受け入れテスト駆動開発で不確実性に段階的に対処する/Addressing Uncertainty Incrementally with Acceptance Test-Driven-Development
culvert
5
1.7k
私が経験したアジャイルテスト
culvert
4
1.5k
NaITE__32_First_ML.pdf
culvert
0
410
naite31_jstqb_tm
culvert
0
560
地域の子どもを地域で育てる
culvert
0
230
モヤモヤと向き合う
culvert
0
590
デブサミに行ってきた話
culvert
0
150
Other Decks in Technology
See All in Technology
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4k
[続・営業向け 誰でも話せるOCI セールストーク] AWSよりOCIの優位性が分からない編(2026年2月20日開催)
oracle4engineer
PRO
0
110
あすけん_Developers_Summit_2026_-_Vibe_Coding起点での新機能開発で__あすけん_が乗り越えた壁.pdf
iwahiro
0
840
競争優位を生み出す戦略的内製開発の実践技法
masuda220
PRO
2
460
Eight Engineering Unit 紹介資料
sansan33
PRO
1
6.8k
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
43k
AI が Approve する開発フロー / How AI Reviewers Accelerate Our Development
zaimy
1
210
AI Coding Agentの地殻変動 ~ ai-coding.info の定点観測 ~
kotauchisunsun
0
420
Microsoft Fabric のワークスペースと容量の設計原則
ryomaru0825
2
180
EKSで実践する オブザーバビリティの現在地
honmarkhunt
2
310
opsmethod第1回_アラート調査の自動化にむけて
yamatook
0
300
もう怖くないバックグラウンド処理 Background Tasks のすべて - Hakodate.swift #1
kantacky
0
110
Featured
See All Featured
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
130
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
450
My Coaching Mixtape
mlcsv
0
61
SEO for Brand Visibility & Recognition
aleyda
0
4.3k
The SEO Collaboration Effect
kristinabergwall1
0
370
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
420
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
81
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.8k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
170
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
840
Transcript
ソフトウェアの設計を学び、 メンテナンスしやすいテストを作ろう 2023/12/9 ソフトウェアテスト自動化カンファレンス2023
2 藤原 考功(Takanori Fujiwara) ・ユーザベースの社員(SaaS事業所属のテストエンジニア) ・JSTQB(Japan Software Testing Qualification Board)技術委員
・XP祭り実行委員 自己紹介
3 メンテナンスしやすい状態を作れば、 自ずと無理なく継続的にメンテナンスできる。 それは、メンテナンスしづらい状態で 無理に頑張るよりもきっと価値がある。 はじめに テスト の話 ソフト ウェア
の話
4 ・ソフトウェア品質の測り方のひとつ ・内部品質と呼ばれたりする(顧客からは見えない) ・規格によっていろいろな定義がある メンテナンスのしやすさ≒保守性 ソフト ウェア の話
5 ・自動車や飛行機は部分ごとにメンテナンスができる ・部分の単位では複雑度が低い(≒シンプルな)作りになっている ・ある部分のメンテナンスが他に影響しないよう設計されている (影響すると大変なことになる) 分割できるとメンテナンスしやすい ソフト ウェア の話
6 粒度「大」だけを頑張ってメンテナンスしようとしていた 過去のわたしがイメージする「自動テスト」 粒度 ◯◯テスト 大 画面のテスト(≒E2Eテスト) 中 正直よくわからない (APIのテストとか?具体的なイメージはわかない
...) 小 ユニットテスト (概念は知っているけど、やっぱり具体的なイメージはわかない ...) テスト の話
7 ・大規模なサービスは、多数の「意味のあるまとまり」で構成されていた ・それぞれが責務を持ち、それぞれの「使い方」だけを知っている状態 ・テストは「意味のあるまとまり」とセットで作られていた いまのチームに来て驚いたこと テスト の話 ソフト ウェア の話
8 ・E2Eテスト:外部から見たふるまいを記述 ・ユニットテスト:内部のコンポーネントのふるまいを記述 実際の例 ユニット テスト E2E テスト ユニット テスト
E2E テスト ユニット テスト E2E テスト ※Backend For Frontendの 略。本発表では説明を割愛し ますが、そういう責務がある んだなーと思ってください。 テスト の話 ソフト ウェア の話 フロント エンド BFF(※) バック エンド
9 ・表示に関わる仕様変更:フロントエンドだけ気にすれば済む ・計算ロジックに関わる仕様変更:バックエンドだけ気にすれば済む 実際の例 ※Backend For Frontendの 略。本発表では説明を割愛し ますが、そういう責務がある んだなーと思ってください。
テスト の話 ソフト ウェア の話 ユニット テスト E2E テスト ユニット テスト E2E テスト ユニット テスト E2E テスト フロント エンド BFF(※) バック エンド
10 粒度に応じたテストだけをメンテナンスすれば良いので、無理がない 現在のわたしがイメージする「自動テスト」 粒度 ◯◯テスト 大 サービス全体にまたがるテスト (など) 責務に応じて(柔軟に)設計された、 ソフトウェアの単位に対応するテスト
中 いろいろ 小 ユニットテスト テスト の話
11 ・テスト対象を様々な粒度で捉えられるようになった ・責務に照らして、過不足のないテストを意識するようになった ・メンテナンスのしづらさは、危険を知らせるサインだと思うようになった 責務の概念を学んだ結果 テスト の話 ソフト ウェア の話
12 ・チームで取り組む ・テストを通じて良い設計を考える ・毎日やる 取り組み方 テスト の話 ソフト ウェア の話
13 ・常時ペアプロ、モブプロ ・手を動かして学ぶ、気付く ・教えようとすることで学ぶ、気付く チームで取り組む テスト の話 ソフト ウェア の話
14 ・いきなり完璧な設計をすることは難易度が高い ・テストを起点に、段階的に不確実性を下げる(≒受け入れテスト駆動開発) ・スコープを絞ることができる テストを通じて良い設計を考える テスト の話 ソフト ウェア の話
15 ・習慣になる ・無理なく強度を保つことができる ・違和感に気づきやすくなる 毎日やる テスト の話 ソフト ウェア の話
16 ソフトウェアの設計理論を学び、 実際のソフトウェアの実装に沿ったテストを構築することで メンテナンスのしやすさは格段に上がる。 理論を学ぶ方法は様々あるが、 経験豊富なSWE(ソフトウェアエンジニア)と 密にコミュニケーションできることが望ましい(と私は思います)。 まとめ