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
430
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
84
Swift macrosの入門ハードルは意外と低いかも
stoticdev
1
84
SwiftUIとMetalで簡単に作るレアカード風UI
stoticdev
1
180
PRレビューのお供にDanger
stoticdev
1
420
Other Decks in Programming
See All in Programming
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
810
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
330
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
290
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
160
Mujeres en SEO Summit 2026 - Greatest Disaster Hits en Web Performance
guaca
0
220
はてなアカウント基盤 State of the Union
cockscomb
1
1.2k
どこまでゆるくて許されるのか
tk3fftk
0
290
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
620
「AIで開発し、AIを届ける」をEvalでつなぐ 〜AIネイティブに始めるプロダクト開発の実践〜 / Connecting "Develop with AI, deliver AI" with Eval
rkaga
4
5.6k
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
180
吝嗇家のためのAI活用 / AI development for miser - ChatGPT + Issue Driven Development
tooppoo
0
140
Lessons from Spec-Driven Development
simas
PRO
0
240
Featured
See All Featured
Marketing to machines
jonoalderson
1
5.5k
Prompt Engineering for Job Search
mfonobong
0
360
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
410
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
Skip the Path - Find Your Career Trail
mkilby
1
160
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
880
Believing is Seeing
oripsolob
1
160
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
180
Optimising Largest Contentful Paint
csswizardry
37
3.7k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Automating Front-end Workflow
addyosmani
1370
210k
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 (༁) ਢాஐ೭