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
SwiftTestingによる_モダンなiOSテスト手法とBDD.pdf
Search
coconala_engineer
October 29, 2025
0
350
SwiftTestingによる_モダンなiOSテスト手法とBDD.pdf
20251021【4社共催!】After iOSDC & DroidKaigi 2025にて登壇した資料
coconala_engineer
October 29, 2025
Tweet
Share
More Decks by coconala_engineer
See All by coconala_engineer
マルチロールEMが実践する「組織のレジリエンス」を高めるための組織構造と人材配置戦略
coconala_engineer
3
970
『誰の責任?』で揉めるのをやめて、エラーバジェットで判断するようにした ~感情論をデータで終わらせる、PMとエンジニアの意思決定プロセス~
coconala_engineer
2
2k
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
1.5k
「守りのIT」から「攻めの基盤」へ!上場前後でやりきった情シス・モダナイゼーション
coconala_engineer
0
120
障害対応訓練、その前に
coconala_engineer
0
330
生成AI時代を勝ち抜くエンジニア組織マネジメント
coconala_engineer
0
47k
AI時代を生き抜く 新卒エンジニアの生きる道
coconala_engineer
1
730
SRE × マネジメントレイヤーが挑戦した組織・会社のオブザーバビリティ改革 ― ビジネス価値と信頼性を両立するリアルな挑戦
coconala_engineer
0
1.1k
SIEMを利活用した信頼性向上プロセスと実践
coconala_engineer
0
76
Featured
See All Featured
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
130
The World Runs on Bad Software
bkeepers
PRO
72
12k
What's in a price? How to price your products and services
michaelherold
247
13k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
410
The Invisible Side of Design
smashingmag
302
51k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
400
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
1.9k
Everyday Curiosity
cassininazir
0
180
Designing for Performance
lara
611
70k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8k
Facilitating Awesome Meetings
lara
57
6.8k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
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