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
なぜ、あすけんiOSでテスト戦略を導入したのか?
Search
Takuya Ohsawa
March 26, 2025
260
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
なぜ、あすけんiOSでテスト戦略を導入したのか?
Takuya Ohsawa
March 26, 2025
More Decks by Takuya Ohsawa
See All by Takuya Ohsawa
Kotlin補完計画 〜KMP(Kotlin Multiplatform)とAIが導く越境と補完の未来〜
takuyaosawa
0
730
iOSでスクリーンショットテストを導入した話
takuyaosawa
0
230
技術選定 askenでの取り組み Kotlin Multiplatform編
takuyaosawa
0
180
SwiftUIで単方向アーキテクチャを導入して得られた成果
takuyaosawa
0
520
Firebaseイベントログの動作確認を効率化する話
takuyaosawa
0
690
iOS18とヘルスケアの睡眠対応
takuyaosawa
0
510
効率アップ! モバイルアプリの開発プロセス における自動化
takuyaosawa
0
270
with_iosで開発をスムーズにするためにやったこと
takuyaosawa
0
120
サーバサイドswift動かして見た
takuyaosawa
0
99
Featured
See All Featured
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
420
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
440
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
290
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Darren the Foodie - Storyboard
khoart
PRO
4
4k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
540
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
GraphQLとの向き合い方2022年版
quramy
50
15k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.7k
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
Documentation Writing (for coders)
carmenintech
77
5.6k
Are puppies a ranking factor?
jonoalderson
2
4k
Transcript
© asken.inc なぜ、あすけんiOSで テスト戦略を導入したの か? 品質の危機からの学び 25/03/26 Mobile勉強会 ウォンテッドリー ×
チームラボ × Sansan #19 Takuya Osawa
© asken.inc 2 自己紹介 Takuya Osawa 株式会社asken モバイルテックリード 主な仕事 食事管理アプリ「あすけん」のiOS開発を担当
趣味 野球観戦
© asken.inc 3 アジェンダ 導入前の課題 どうテスト戦略を導入したか? 成果 まとめ
© asken.inc 4 前提 iOS担当4名 QA担当1名 週に1回のリリースサイクル
© asken.inc 5 導入前の課題
© asken.inc 6 2024年10月
© asken.inc 7 アプリリリース直後で不具合が頻発 1ヶ月で緊急リリースを3回実施 -> ほぼ毎週不具合対応 ユーザーからお問い合わせが急増
© asken.inc 8 何が問題だったのか? 品質をチームごととして捉えていなかった • 個人任せ ◦ ユニットテストの範囲や書き方も不明確 コード変更時に既存機能が壊れても気づけない
• 品質担保できているか不透明 ◦ テストコードがない ◦ 手動テストの実施や範囲が不十分
© asken.inc 9 方針がないので 作りましょう!
© asken.inc 10 どうテスト戦略を導入した か?
© asken.inc 11 全体の戦略を定義 https://developer.android.com/training/testing/fundamentals/strategies?hl=ja Scope Fidelity Time = 品質保証にかかる時間
結合 分離
© asken.inc 12 優れたテスト戦略 優れたテスト戦略では、自動テストを活用して、 重要なメリットであるデベロッパーの生産性 に集中できます。 https://developer.android.com/training/testing/fundamentals/strategies?hl=ja
© asken.inc 13 優れたテスト戦略の特徴 問題をできるだけ早い段階で検出します。 迅速に実行されます。 修正が必要な場合に明確な指示を表示します。 https://developer.android.com/training/testing/fundamentals/strategies?hl=ja
© asken.inc 14 ユニットテストの範囲を明確化 Model部分は原則ユニットテストを追加 -> 早い段階での不具合検知 テストが書けない部分はリファクタを推奨 ユニットテストで担保できないケース ->
手動テストでどのように担保するか明確にする
© asken.inc 15 ユニットテストのガイドラインを整備 iOSメンバーでの認識を揃え、 誰でも同じような質でテストをかけるように整備
© asken.inc 16 ユニットテスト技術スタック サポートバージョン iOS16以降 XCTestが多数 Swift Testingが10%ぐらい 新規や書き換えはSwift
Testingを推奨
© asken.inc 17 テストメソッドを日本語 struct CalculationTests { @Test func testAddition()
{ let calculation = Calculation() let result = calculation.addition(1, 2) #expect(result == 3) } } struct CalculationTests { @Test func 加算できること() { let calculation = Calculation() let result = calculation.addition(1, 2) #expect(result == 3) } }
© asken.inc 18 Given/When/Thenパターン Given(前提) - テスト対象 を準備。mockなどを準備 When(実行) -
メソッドを実行。 Then(検証) - #expect を使い、期待値と実際の値を比較。
© asken.inc 19 // Given: 計算用のインスタンスを用意 let calculation = Calculation()
let a = 1 let b = 2 // When: additionメソッドを実行 let result = calculation.addition(a, b) // Then: 結果が期待通りであることを検証 #expect(result == 3)
© asken.inc 20 メソッド名を Given/When/Thenパターン @Test fun <Given>_<When>_<Then>() 何をテストしているか明確化
© asken.inc 21 func 与えられた2つの数値を_加算したとき_合計が返される()
© asken.inc 22 ユニットテストの数値の可視化 xcresultをCIを使って、コードカバレッジの可視化 -> ファイル単位と全体の数値を可視化。 カバーできていないファイルを検知
© asken.inc 23 基準値は 模索中
© asken.inc 24 成果
© asken.inc 25 成果 リリース前に不具合検知可能なった -> 10月をピークに緊急リリースは減少した。 2024年12月以降は緊急リリースなし ユーザーから問い合わせ減少
© asken.inc 26 新たな取り組み
© asken.inc 27 コードレビューガイドライン VRT (Visual Regression Testing) E2Eテスト自動化 生成AIの活用...
続きはテックブログで!!
© asken.inc 28 品質危機からチームで一丸となって、問題に対応できた まずは、チームで認識を揃えるところから始めましょう まとめ
© asken.inc 29 Thank you