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
SwiftTestingによる_モダンなiOSテスト手法とBDD.pdf
Search
coconala_engineer
October 29, 2025
470
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SwiftTestingによる_モダンなiOSテスト手法とBDD.pdf
20251021【4社共催!】After iOSDC & DroidKaigi 2025にて登壇した資料
coconala_engineer
October 29, 2025
More Decks by coconala_engineer
See All by coconala_engineer
マルチロールEMが実践する「組織のレジリエンス」を高めるための組織構造と人材配置戦略
coconala_engineer
3
1.6k
『誰の責任?』で揉めるのをやめて、エラーバジェットで判断するようにした ~感情論をデータで終わらせる、PMとエンジニアの意思決定プロセス~
coconala_engineer
2
3.1k
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
2k
「守りのIT」から「攻めの基盤」へ!上場前後でやりきった情シス・モダナイゼーション
coconala_engineer
0
150
障害対応訓練、その前に
coconala_engineer
0
400
生成AI時代を勝ち抜くエンジニア組織マネジメント
coconala_engineer
0
51k
AI時代を生き抜く 新卒エンジニアの生きる道
coconala_engineer
1
1.1k
SRE × マネジメントレイヤーが挑戦した組織・会社のオブザーバビリティ改革 ― ビジネス価値と信頼性を両立するリアルな挑戦
coconala_engineer
0
1.4k
SIEMを利活用した信頼性向上プロセスと実践
coconala_engineer
0
100
Featured
See All Featured
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
500
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
It's Worth the Effort
3n
188
29k
The agentic SEO stack - context over prompts
schlessera
0
940
Embracing the Ebb and Flow
colly
88
5.2k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
520
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
390
Chasing Engaging Ingredients in Design
codingconduct
0
310
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
420
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
300
Google's AI Overviews - The New Search
badams
0
1.6k
Transcript
Copyright coconala Inc. All Rights Reserved. SwiftTestingによる モダンなiOSテスト手法と BDD 小林 慎吾 Shingo
(ごん : GON)
Copyright coconala Inc. All Rights Reserved. ※ここに注釈テキストが入れられます。 マーケットプレイス事業部 iOSエンジニア 小林 慎吾
自己紹介 2 業務 - iOSチームエンジニア - ココナラに転職して 6ヶ月 - 好きなココナラ サービス「ロゴ作成」 - 行ってみたい旅行先!! ハワイ! 🏝 プライベート - 1児の父 - SIer → フィットネスベンチャー →フリーランス等経て現職 - 子供と電車博物館に旅行 🚃
Copyright coconala Inc. All Rights Reserved. 3
Copyright coconala Inc. All Rights Reserved. 4 99.75 % クラッシュフリーレート基準値
Copyright coconala Inc. All Rights Reserved. ・ココナラは多数のサービスが一体化した 巨大アプリ ・機能もドメインも異なり、全体仕様の把握 が困難
・仕様が人に依存していたのが課題 ココナラ- プロが集まる日本最大のスキルマーケット 5
Copyright coconala Inc. All Rights Reserved. ① 大規模アプリで仕様が見えづらい → 当初テストカバレッジが少なく、動作確認は
E2Eや人に依存 ② PresenterからViewModelへ再設計 → テストしやすく、状態管理をシンプルにしている ③ ViewModelテストを書き始めるも → XCTestでは読みにくく、仕様として残せない ④ SwiftTestingで “仕様として読めるテスト ” を目指す → @Testで仕様を日本語化、 BDDスタイルで明文化 大規模アプリならではの悩み 6
Copyright coconala Inc. All Rights Reserved. 関数名から意図が読みづ らい 並列実行の仕組みが標準 ではなく、時間がかかる。
ネストが深く可読性が悪い XCTestでは読めなかった仕様 7 テストから仕様を読むのは難しかった
Copyright coconala Inc. All Rights Reserved. SwiftTestingで“読める”テストに 8 コードで仕様を語り、日本語で伝わるテストへ 読める:@Suite
@Test #expectで仕様がそのまま伝 わる 整理できる: @SuiteでInput 配下を階層化 BDDに最適 :Given/When/Thenと自然に 合体
Copyright coconala Inc. All Rights Reserved. 特徴 ・動作駆動開発 ユーザー視点での動作を重視した記述 ・「Given(前提)– When(操作)–
Then(結果)」で記述しております。 ・テストがそのまま仕様書になる BDDとは? ― 仕様をチームで “共有できる ”開発手法 9
Copyright coconala Inc. All Rights Reserved. → 例: onAppear() //
画面を表示した時 onTapNext() // 「次へ」をタップした時 実際のアプリ使用シナリオに基づいたテストが可能に ViewModel設計と行動の一致 10 ViewModelのInput=行動
Copyright coconala Inc. All Rights Reserved. SwiftTesting × BDD 11
BDDで仕様書のように読む
Copyright coconala Inc. All Rights Reserved. 🧩 行動設計 └ onTapNext()
←→ 「次へ」をタップした時 🧩 BDD └ Given / When / Then → 仕様書のように “読む” 🧩 SwiftTesting └ @Suite / @Test → 振る舞いを自然言語で表現 テストが仕様を語る世界へ 12 SwiftTesting × BDD × 行動設計
Copyright coconala Inc. All Rights Reserved. ・「書かされているテスト」から「設計を語るテスト」へ変わった 最初は義務感で書き始めたが、書くほど仕様を整理する時間になった。 ・自然言語で書けるからレビューがしやすい テスト名を読むだけで「どんな動きを担保しているか」がチームで共有できた。
・高カバレッジ=安心感ではなく、理解の透明化 数字よりも、仕様とコードの対応関係が明確になったことが一番の成果。 “テストを書く=仕様を残す ”という意識が定着した 私含む新規参加者がテストから仕様を理解できるようになった。 実装してみて感じたこと 13 SwiftTesting × BDD × 行動設計
Copyright coconala Inc. All Rights Reserved. ② テストしやすいような実 装設計 ①
SwiftTesting × BDD によ る“読める”テスト ③テストカバレッジを上げ る まとめ - 品質を支える 3つの取り組み 14 今日の交流会では、現場あるあるや苦難 工夫を語りたいです! 仕様が複雑な中で、 ViewModel のInputを「行動」として設計。 onAppear や onTapNext など、 ユーザー行動単位でテストを整 理できた。 Given / When / Then の流れ で、テストが仕様書のように読め る。 @Suite / @Test によって自然言 語的に書けるようになった。 数字よりも、テストを書くことで設 計が明確になる実感。 テストが「守り」ではなく、理解と 品質を高める手段になった。 99.75 %を支える取り組み
Copyright coconala Inc. All Rights Reserved. おしまい ご清聴ありがとうございました! 15