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
Swift Testingのモチベを上げたい
Search
stotic-dev
March 04, 2025
Programming
420
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Swift Testingのモチベを上げたい
Swift愛好会 vol92の談義資料
stotic-dev
March 04, 2025
More Decks by stotic-dev
See All by stotic-dev
低コストで始めるiOSアプリ開発のVRT
stoticdev
0
83
Swift macrosの入門ハードルは意外と低いかも
stoticdev
1
78
SwiftUIとMetalで簡単に作るレアカード風UI
stoticdev
1
180
PRレビューのお供にDanger
stoticdev
1
420
Other Decks in Programming
See All in Programming
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
190
Modding RubyKaigi for Myself
yui_knk
0
920
「エンジニアインターン、どうやって取った?」準備のリアルを語るLT会 Progate BAR
akiomatic
0
130
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
680
AIチームを指揮するOSS「TAKT」活用術 / How to Use “TAKT,” an OSS Tool for Orchestrating AI Teams
nrslib
6
880
A2UI という光を覗いてみる
satohjohn
1
130
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
0
220
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
230
Contextとはなにか
chiroruxx
0
290
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
160
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
150
スマートグラスで並列バイブコーディング
hyshu
0
120
Featured
See All Featured
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
Code Reviewing Like a Champion
maltzj
528
40k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
160
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
300
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
840
Producing Creativity
orderedlist
PRO
348
40k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
Transcript
Swift TestingϞνϕΛ্͍͛ͨ 2025/03/04 SwiftѪձ vol.92
ࣗݾհ ໊લࠤ౻ଡҰ झຯϦΫΨϝؑ גࣜձࣾ13&7&/5 ৬ۀJ04ΤϯδχΞ (JU)VCIUUQTHJUIVCDPNTUPUJDEFW 2JJUBIUUQTRJJUBDPNTUPUJDEFW 9IUUQTYDPNTF T
ΞδΣϯμ • Ϟνϕʔγϣϯ • Swift Testingͱ • ͲΜͳ՝ΛղܾͰ͖Δͷ͔ • ಋೖʹ͋ͨͬͯͷݒ೦
• ·ͱΊ
Ϟνϕʔγϣϯ ۀͰSwift TestingΛಋೖ͍ͨ͠!
Swift Testingͱ [Ҿ༻] " Swift Testing ɺSwift ίʔυͷςετΛ؆୯ʹ͢Δදݱྗ๛͔Ͱײతͳ API Λඋ͑ͨύοέʔδͰ͢ɻ
" https://github.com/swiftlang/swift-testing
Swift Testingͷಛ ςετʹ༻͢ΔAPI͕ײతʹͳͬͨ(ֶशίετ͕͍) https://developer.apple.com/documentation/testing/migratingfromxctest#Check-for-expected-values-and-outcomes
Swift Testingͷಛ ύϥϝλϥΠζυςετ͕ϑϨʔϜϫʔΫͰαϙʔτ͞ΕΔΑ͏ʹͳͬͨ https://developer.apple.com/documentation/testing/parameterizedtesting
Swift Testingͷಛ https://qiita.com/stotic-dev/items/f9fe0211f34b7c04c440 ଞʹͨ͘͞Μͷಛ͕ʂʂ
ղܾͰ͖Δ՝ • ςετͷ࣮ߦ • ςετͷՄಡੑɾอकੑ • ςετͷ৴པੑ
ςετͷ࣮ߦ • Swift TestingσϑΥϧτͰฒྻ࣮ߦ͞ΕΔ • ύϥϝλϥΠζυςετͷ࣮ߦฒྻ࣮ߦʹͳΔ • Swift TestingͱXCTestͷฒྻ࣮ߦʹҎԼҧ͍͕͋Δ •
XCTest: ෳϓϩηεͰҰͭͷςετΛ࣮ߦ͢Δ • Swift Testing: ҰͭͷϓϩηεͰฒྻ࣮ߦ͢Δ ϓϩηε1 ϓϩηε2 ϓϩηε3 7 6 5 4 1 2 3 ϓϩηε1 1 2 3 7 6 5 4 XCTestͷฒྻςετख๏ Swift Testingͷฒྻςετख๏ ϓϩηεͷ্ཱͪ͛ϝϞϦͰΦʔόʔϔου
ςετͷՄಡੑɾอकੑ ςετέʔεߏԽ͞Ε͍ͯΔํ͕ݟ͍͢
ςετͷՄಡੑɾอकੑ ΤοδέʔεΛݕূ͢ΔͨΊͷόϦΤʔγϣϯͷςετέʔε͕ɺ 1ͭͷέʔεͰॻ͚Δ
ςετରͷमਖ਼͕ೖͬͯɺςετίʔυͷϝϯς͕ೖͬͯ͜ͷέʔεΛ मਖ਼͢Δ͚ͩͰ͢Ή
ςετͷ৴པੑ ӕΛ͔ͭΕΔͱ৴པͰ͖ͳ͘ͳΔ ςετίʔυِཅੑͱ͍͏ܗͰӕΛͭ͘ ௨৴ ࣮ߦॱং ڞ༗ґଘ ϦϑΝΫλϦϯά
ςετͷ৴པੑ [Ҿ༻] " ͠ɺਖ਼ͳཧ༝ͳ͘ςετ͕ࣦഊ͢ΔΑ͏ʹͳΔͱɺϓϩμΫγϣϯɾίʔυͷʹରԠ ͢Δ։ൃऀͷೳྗͱҙࢥΛऑΊΔ͜ͱʹͳΔɻͳͥͳΒɺςετରͷίʔυ͕ਖ਼͘͠ৼΔͬ ͔͔ͯΘΒͣɺςετ͕ࣦഊ͢ΔΑ͏ͳ͜ͱ͕ଓ͘ͱɺ։ൃऀͦͷ͜ͱʹ׳Εͯ͠·͍ɺςε τ݁ՌΛॏཁࢹ͠ͳ͘ͳΔ͔ΒͰ͋Δɻ " " ຊདྷਖ਼ͳৼΔ͍Ͱ͋Δͷʹ͔͔ΘΒͣɺςετ͕සൟʹࣦഊ͍ͯ͠Δͱɺςετʹର͢
Δ৴པ͕ঃʑʹࣦΘΕ͍ͯ͘ɻͦͷ݁Ռɺςετͷ͜ͱΛ৴པͰ͖ΔηʔϑςΟɾωοτͱͯ͠ ݟΒΕͳ͘ͳΓɺςετΛߦ͏ҙຯ͕ബΕͯ͠·͏ɻ " ୯ମςετͷߟ͑ํ/͍ํ p99 (ஶ) Vladimir Khorikov (༁) ਢాஐ೭
ςετͷ৴པੑ [Ҿ༻] " ୯ମςετΛߦ͏͜ͱͷඪɺιϑτΣΞ։ൃʹؔ͢ΔϓϩδΣΫτͷΛ࣋ଓՄೳͳ ͷʹ͢Δɺͱ͍͏͜ͱͰ͋Δɻ " ୯ମςετͷߟ͑ํ/͍ํ p24 (ஶ) Vladimir
Khorikov (༁) ਢాஐ೭
ςετͷ৴པੑ ཧͱͯ͠શͯͷFlakyςετमਖ਼ͯ͠৴པͰ͖Δςετʹ͖͢ ͨͩ؆୯ʹमਖ਼Ͱ͖Δ͔ΓͰͳ͍ɺɺ ৴པੑΛ୲อ͢Δݱ࣮తͳҊͱͯ͠ɺ ৴པͰ͖Δςετͱͦ͏Ͱͳ͍ςετΛ͚Δ ୯७ʹमਖ਼͢Δ࣌ؒͳ͍ɺɺ
ςετͷ৴པੑ Swift TestingͷλάͷػೳΛ༻͍ͯɺ৴པͰ͖Δςετͱͦ͏Ͱͳ͍ςετΛ͚Δ
ಋೖʹ͋ͨͬͯͷݒ೦ & ҙ • ಋೖ͕େมͦ͏ • XCTestͱڞଘͰ͖Δ͔Βେৎʂ • Xcode16͔Βඪ४ͰΈࠐ·Ε͍ͯΔʂ(Xcode15ҎԼͰSPMͰಋೖ͢Δඞཁ͋Γ) •
Xcode16ະຬͷ߹ͰSPM͔ΒಋೖՄೳʂ • UITest(XCUIApplication)ੑೳςετ(XCTMetric)Swift Testingͷαϙʔτ֎ͳͷͰɺ Ҿ͖ଓ͖XCTestΛ͏ඞཁ͕͋Δ • ύϥϝλϥΠζυςετΛཚ༻͢ΔͱՄಡੑ͕Լ͕Γͦ͏ • OSS ϩάformatterͰςετ݁Ռ͕Ұ෦ग़ྗ͞Εͳ͍
ύϥϝλϥΠζυςετͷҙ έʔε໊͕நతͰɺinputʹରͯ͠ͲΜͳOutputʹͳΔͷ͔Θ͔ΓͣΒ͍
ύϥϝλϥΠζυςετͷҙ ݁ՌͷछྨʹΑͬͯέʔεΛ͚ͨํ͕ɺέʔε໊ͷந͕Լ͕ͬͯ ԿͷৼΔ͍Λݕূ͠Α͏ͱ͍ͯ͠Δͷ͔͕Θ͔Γ͍͢
OSS ϩά formatterͰςετ݁Ռ͕ग़ྗ͞Εͳ͍ xcprettyฒྻςετʹରԠ͍ͯ͠ͳ͍
OSS ϩά formatterͰςετ݁Ռ͕ग़ྗ͞Εͳ͍ xcbeautifyฒྻςετΛαϙʔτ͍ͯ͠Δ ύϥϝλϥΠζυςετදࣔͰ͖͍ͯͳ͍
OSS ϩά formatterͰςετ݁Ռ͕ग़ྗ͞Εͳ͍ Ϩϙʔτͷใ͕ཉ͍͠߹ɺxcresult͔Βऔಘ͢Δඞཁ͕͋Γͦ͏
·ͱΊ • Swift TestingWWDC24Ͱൃද͞Εͨ৽͍͠SwiftͷςετϑϨʔϜϫʔΫ • Swift TestingΛಋೖ͢ΔͱҎԼͷԸܙΛಘΒΕΔ͔͠Εͳ͍ • ୯ମςετ࣮ߦͷߴԽ •
ςετίʔυͷՄಡੑ্ • ςετίʔυͷอकੑ্ • ςετͷ৴པੑ্
·ͱΊ • Swift TestingΛಋೖ͢Δʹ͋ͨͬͯͷݒ೦ • ύϥϝλϥΠζυςετͷཚ༻ʹΑΔՄಡੑͷԼ • ਖ਼ৗܥͱҟৗܥͰέʔεΛ͚ΔͳͲɺέʔε͔Βݕূ͢ΔৼΔ͍͕ಡΈऔΕΔཻͰ׆ ༻͢Δ •
OSS formatterͰSwift Testingͷςετ݁ՌΛग़ྗͰ͖ͳ͍έʔε͕͋Δ • xcresultΛιʔεʹѻ͏Α͏ʹ͢Δ • ΫϦςΟΧϧͳݒ೦جຊͳ͍ͷͰɺಋೖ͍ͨ͠ʂʂ
ࢀߟ • https://developer.apple.com/videos/play/wwdc2024/10179 • https://developer.apple.com/videos/play/wwdc2024/10195/ • https://developer.apple.com/documentation/testing/de f iningtests •
https://developer.apple.com/documentation/testing/parameterizedtesting • https://developer.apple.com/documentation/testing/migratingfromxctest#Check-for-expected-values-and-outcomes • https://leocoout.medium.com/welcome-swift-testing-goodbye-xctest-7501b7a5b304 • https://developer.apple.com/documentation/testing/parallelization • https://github.com/xcpretty/xcpretty/issues/295 • https://github.com/swiftlang/swift-testing • https://qiita.com/bsj-k-hashikawa/items/603b7b842fede13942ca • https://qiita.com/yonetty/items/ 447cd47fe5d37473cb2d#%E6%A7%8B%E9%80%A0%E5%8C%96%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3 %82%8Bstructured • ୯ମςετͷߟ͑ํ/͍ํ (ஶ) Vladimir Khorikov (༁) ਢాஐ೭