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
1
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
SRE × マネジメントレイヤーが挑戦した組織・会社のオブザーバビリティ改革 ― ビジネス価値と信頼性を両立するリアルな挑戦
coconala_engineer
0
250
SIEMを利活用した信頼性向上プロセスと実践
coconala_engineer
0
30
Cursorを使って 新機能開発してみて 感じたこと
coconala_engineer
0
140
社内にAIレビューツール導入してみた
coconala_engineer
0
130
犯人はE2Eテスト? 並列実行で開発チームを救え!
coconala_engineer
0
54
サービスを止めるな! DDoS攻撃へのスマートな備えと最前線の事例
coconala_engineer
2
300
SREの次のキャリアの道しるべ 〜SREがマネジメントレイヤーに挑戦して、 気づいたこととTips〜
coconala_engineer
2
5.9k
ココナラiOSチームの生成AI利用
coconala_engineer
0
48
AIと向き合う若手エンジニアの責任
coconala_engineer
0
58
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
331
21k
Practical Orchestrator
shlominoach
190
11k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Building Adaptive Systems
keathley
44
2.8k
Building Better People: How to give real-time feedback that sticks.
wjessup
369
20k
A Tale of Four Properties
chriscoyier
161
23k
Mobile First: as difficult as doing things right
swwweet
225
10k
The Cult of Friendly URLs
andyhume
79
6.6k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.2k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
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