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
92
Swift macrosの入門ハードルは意外と低いかも
stoticdev
1
92
SwiftUIとMetalで簡単に作るレアカード風UI
stoticdev
1
190
PRレビューのお供にDanger
stoticdev
1
430
Other Decks in Programming
See All in Programming
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
500
How I Won Prize Money at a Hackathon Using Codex and Symphony Alpha
yasei_no_otoko
0
110
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
430
仕様駆動開発へのトライを機に チームに適合する手法を模索し続けている話
freee
PRO
0
580
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
700
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
270
Built Our Own Background Agent at LayerX
layerx
PRO
10
5.7k
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
1.1k
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
180
属人化した知識を、 AIが辿れる地図にする
pkshadeck
PRO
1
190
これって Effect でできたのでは? / TSKaigi Mashup Kansai #2
susisu
0
250
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
790
Featured
See All Featured
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
570
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
Six Lessons from altMBA
skipperchong
29
4.4k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.8k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.8k
WCS-LA-2024
lcolladotor
0
800
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
GraphQLとの向き合い方2022年版
quramy
50
15k
What does AI have to do with Human Rights?
axbom
PRO
1
2.3k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
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 (༁) ਢాஐ೭