Slide 1

Slide 1 text

Swift TestingϞνϕΛ্͍͛ͨ 2025/03/04 SwiftѪ޷ձ vol.92

Slide 2

Slide 2 text

ࣗݾ঺հ ໊લࠤ౻ଡҰ झຯϦΫΨϝؑ৆ גࣜձࣾ13&7&/5 ৬ۀJ04ΤϯδχΞ (JU)VCIUUQTHJUIVCDPNTUPUJDEFW 2JJUBIUUQTRJJUBDPNTUPUJDEFW 9IUUQTYDPNTF T

Slide 3

Slide 3 text

ΞδΣϯμ • Ϟνϕʔγϣϯ • Swift Testingͱ͸ • ͲΜͳ՝୊ΛղܾͰ͖Δͷ͔ • ಋೖʹ͋ͨͬͯͷݒ೦఺ • ·ͱΊ

Slide 4

Slide 4 text

Ϟνϕʔγϣϯ ۀ຿Ͱ΋Swift TestingΛಋೖ͍ͨ͠!

Slide 5

Slide 5 text

Swift Testingͱ͸ [Ҿ༻] " Swift Testing ͸ɺSwift ίʔυͷςετΛ؆୯ʹ͢Δදݱྗ๛͔Ͱ௚ײతͳ API Λඋ͑ͨύοέʔδͰ͢ɻ " https://github.com/swiftlang/swift-testing

Slide 6

Slide 6 text

Swift Testingͷಛ௃ ςετʹ࢖༻͢ΔAPI͕௚ײతʹͳͬͨ(ֶशίετ͕௿͍) https://developer.apple.com/documentation/testing/migratingfromxctest#Check-for-expected-values-and-outcomes

Slide 7

Slide 7 text

Swift Testingͷಛ௃ ύϥϝλϥΠζυςετ͕ϑϨʔϜϫʔΫͰαϙʔτ͞ΕΔΑ͏ʹͳͬͨ https://developer.apple.com/documentation/testing/parameterizedtesting

Slide 8

Slide 8 text

Swift Testingͷಛ௃ https://qiita.com/stotic-dev/items/f9fe0211f34b7c04c440 ଞʹ΋ͨ͘͞Μͷಛ௃͕ʂʂ

Slide 9

Slide 9 text

ղܾͰ͖Δ՝୊ • ςετͷ࣮ߦ଎౓ • ςετͷՄಡੑɾอकੑ • ςετͷ৴པੑ

Slide 10

Slide 10 text

ςετͷ࣮ߦ଎౓ • 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ͷฒྻςετख๏ ϓϩηεͷ্ཱͪ͛΍ϝϞϦͰΦʔόʔϔου

Slide 11

Slide 11 text

ςετͷՄಡੑɾอकੑ ςετέʔε͸ߏ଄Խ͞Ε͍ͯΔํ͕ݟ΍͍͢

Slide 12

Slide 12 text

ςετͷՄಡੑɾอकੑ ΤοδέʔεΛݕূ͢ΔͨΊͷόϦΤʔγϣϯͷςετέʔε͕ɺ 1ͭͷέʔεͰॻ͚Δ

Slide 13

Slide 13 text

ςετର৅ͷमਖ਼͕ೖͬͯɺςετίʔυͷϝϯς͕ೖͬͯ΋͜ͷέʔεΛ मਖ਼͢Δ͚ͩͰ͢Ή

Slide 14

Slide 14 text

ςετͷ৴པੑ ӕΛ͔ͭΕΔͱ৴པͰ͖ͳ͘ͳΔ ςετίʔυ΋ِཅੑͱ͍͏ܗͰӕΛͭ͘ ௨৴໰୊ ࣮ߦॱং ڞ༗ґଘ ϦϑΝΫλϦϯά

Slide 15

Slide 15 text

ςετͷ৴པੑ [Ҿ༻] " ΋͠ɺਖ਼౰ͳཧ༝΋ͳ͘ςετ͕ࣦഊ͢ΔΑ͏ʹͳΔͱɺϓϩμΫγϣϯɾίʔυͷ໰୊ʹରԠ ͢Δ։ൃऀͷೳྗͱҙࢥΛऑΊΔ͜ͱʹͳΔɻͳͥͳΒɺςετର৅ͷίʔυ͕ਖ਼͘͠ৼΔ෣ͬ ͔͔ͯΘΒͣɺςετ͕ࣦഊ͢ΔΑ͏ͳ͜ͱ͕ଓ͘ͱɺ։ൃऀ͸ͦͷ͜ͱʹ׳Εͯ͠·͍ɺςε τ݁ՌΛॏཁࢹ͠ͳ͘ͳΔ͔ΒͰ͋Δɻ " " ຊདྷ͸ਖ਼౰ͳৼΔ෣͍Ͱ͋Δͷʹ΋͔͔ΘΒͣɺςετ͕සൟʹࣦഊ͍ͯ͠Δͱɺςετʹର͢ Δ৴པ͕ঃʑʹࣦΘΕ͍ͯ͘ɻͦͷ݁Ռɺςετͷ͜ͱΛ৴པͰ͖ΔηʔϑςΟɾωοτͱͯ͠ ͸ݟΒΕͳ͘ͳΓɺςετΛߦ͏ҙຯ͕ബΕͯ͠·͏ɻ " ୯ମςετͷߟ͑ํ/࢖͍ํ p99 (ஶ) Vladimir Khorikov (༁) ਢాஐ೭

Slide 16

Slide 16 text

ςετͷ৴པੑ [Ҿ༻] " ୯ମςετΛߦ͏͜ͱͷ໨ඪ͸ɺιϑτ΢ΣΞ։ൃʹؔ͢ΔϓϩδΣΫτͷ੒௕Λ࣋ଓՄೳͳ΋ ͷʹ͢Δɺͱ͍͏͜ͱͰ͋Δɻ " ୯ମςετͷߟ͑ํ/࢖͍ํ p24 (ஶ) Vladimir Khorikov (༁) ਢాஐ೭

Slide 17

Slide 17 text

ςετͷ৴པੑ ཧ૝ͱͯ͠͸શͯͷFlakyςετ͸मਖ਼ͯ͠৴པͰ͖Δςετʹ໭͢΂͖ ͨͩ؆୯ʹमਖ਼Ͱ͖Δ໰୊͹͔ΓͰ΋ͳ͍ɺɺ ৴པੑΛ୲อ͢Δݱ࣮తͳҊͱͯ͠ɺ ৴པͰ͖Δςετͱͦ͏Ͱͳ͍ςετΛ෼͚Δ ୯७ʹमਖ਼͢Δ࣌ؒͳ͍ɺɺ

Slide 18

Slide 18 text

ςετͷ৴པੑ Swift TestingͷλάͷػೳΛ༻͍ͯɺ৴པͰ͖Δςετͱͦ͏Ͱͳ͍ςετΛ෼͚Δ

Slide 19

Slide 19 text

ಋೖʹ͋ͨͬͯͷݒ೦఺ & ஫ҙ఺ • ಋೖ͕େมͦ͏ • XCTestͱڞଘͰ͖Δ͔Βେৎ෉ʂ • Xcode16͔Β͸ඪ४Ͱ૊Έࠐ·Ε͍ͯΔʂ(Xcode15ҎԼͰ͸SPMͰಋೖ͢Δඞཁ͋Γ) • Xcode16ະຬͷ৔߹Ͱ΋SPM͔ΒಋೖՄೳʂ • UITest(XCUIApplication)΍ੑೳςετ(XCTMetric)͸Swift Testingͷαϙʔτ֎ͳͷͰɺ Ҿ͖ଓ͖XCTestΛ࢖͏ඞཁ͕͋Δ • ύϥϝλϥΠζυςετΛཚ༻͢ΔͱՄಡੑ͕Լ͕Γͦ͏ • OSS ϩάformatterͰςετ݁Ռ͕Ұ෦ग़ྗ͞Εͳ͍

Slide 20

Slide 20 text

ύϥϝλϥΠζυςετͷ஫ҙ఺ έʔε໊͕ந৅తͰɺinputʹରͯ͠ͲΜͳOutputʹͳΔͷ͔Θ͔ΓͣΒ͍

Slide 21

Slide 21 text

ύϥϝλϥΠζυςετͷ஫ҙ఺ ݁ՌͷछྨʹΑͬͯέʔεΛ෼͚ͨํ͕ɺέʔε໊ͷந৅౓͕Լ͕ͬͯ ԿͷৼΔ෣͍Λݕূ͠Α͏ͱ͍ͯ͠Δͷ͔͕Θ͔Γ΍͍͢

Slide 22

Slide 22 text

OSS ϩά formatterͰςετ݁Ռ͕ग़ྗ͞Εͳ͍ xcpretty͸ฒྻςετʹରԠ͍ͯ͠ͳ͍

Slide 23

Slide 23 text

OSS ϩά formatterͰςετ݁Ռ͕ग़ྗ͞Εͳ͍ xcbeautify͸ฒྻςετΛαϙʔτ͍ͯ͠Δ ύϥϝλϥΠζυςετ͸දࣔͰ͖͍ͯͳ͍

Slide 24

Slide 24 text

OSS ϩά formatterͰςετ݁Ռ͕ग़ྗ͞Εͳ͍ Ϩϙʔτͷ৘ใ͕ཉ͍͠৔߹͸ɺxcresult͔Βऔಘ͢Δඞཁ͕͋Γͦ͏

Slide 25

Slide 25 text

·ͱΊ • Swift Testing͸WWDC24Ͱൃද͞Εͨ৽͍͠SwiftͷςετϑϨʔϜϫʔΫ • Swift TestingΛಋೖ͢ΔͱҎԼͷԸܙΛಘΒΕΔ͔΋͠Εͳ͍ • ୯ମςετ࣮ߦ଎౓ͷߴ଎Խ • ςετίʔυͷՄಡੑ޲্ • ςετίʔυͷอकੑ޲্ • ςετͷ৴པੑ޲্

Slide 26

Slide 26 text

·ͱΊ • Swift TestingΛಋೖ͢Δʹ͋ͨͬͯͷݒ೦఺ • ύϥϝλϥΠζυςετͷཚ༻ʹΑΔՄಡੑͷ௿Լ • ਖ਼ৗܥͱҟৗܥͰέʔεΛ෼͚ΔͳͲɺέʔε͔Βݕূ͢ΔৼΔ෣͍͕ಡΈऔΕΔཻ౓Ͱ׆ ༻͢Δ • OSS formatterͰ͸Swift Testingͷςετ݁ՌΛग़ྗͰ͖ͳ͍έʔε͕͋Δ • xcresultΛιʔεʹѻ͏Α͏ʹ͢Δ • ΫϦςΟΧϧͳݒ೦͸جຊͳ͍ͷͰɺಋೖ͍ͨ͠ʂʂ

Slide 27

Slide 27 text

ࢀߟ • 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 (༁) ਢాஐ೭