Slide 1

Slide 1 text

What's New in Testing

Slide 2

Slide 2 text

What's New in Testing 2018

Slide 3

Slide 3 text

ࣗݾ঺հ ۄ৓৴ޛ iOS Engineer Appium

Slide 4

Slide 4 text

Agenda 1. Code Coverage 2. Test Selection and Order 3. Parallel Testing

Slide 5

Slide 5 text

Code Coverage

Slide 6

Slide 6 text

Code CoverageʢXcode 9.3ʣ • ΧόϨοδදࣔ·Ͱͷ࣌ؒ୹ॖ • Xcode9ͱൺ΂95%ߴ଎Խ • ΧόϨοδϑΝΠϧͷαΠζμ΢ϯ • Xcode9ͱൺ΂1/10ҎԼ • C++ʹ͓͚ΔϔομϑΝΠϧʹهड़͞Ε࣮ͨ૷ͷΧόϨοδ ऩू͕Մೳʹ

Slide 7

Slide 7 text

Code CoverageʢXcode 9.3ʣ • λʔήοτͷબ୒ • ΧόϨοδऩूͷର৅Λλʔήοτ୯ҐͰબ୒Մೳ • ex) ϥΠϒϥϦͷαϯϓϧίʔυͷΧόϨοδͷ৘ใ͸ ཉ͘͠ͳ͍

Slide 8

Slide 8 text

xccov • ΧόϨοδσʔλΛѻ͏CLIπʔϧ • Coverage data • xccovreport: ֤λʔήοτɺιʔεϑΝΠϧɺ͓Αͼؔ਺ ͷΧόϨοδͷׂ߹ͳͲؚ͕·ΕΔ • xccovarchive: Ϩϙʔτ಺ͷ֤ϑΝΠϧͷੜͷ࣮ߦճ਺͕ ؚ·ΕΔ

Slide 9

Slide 9 text

xccov • xccov view hoge.xccovreport Name Coverage ---------------------------------------------------------------------------------- ------------- SampleLib.framework 100.00% (3/3) /Users/you/SampleLib/Classes/SampleLib.swift 100.00% (3/3) static SampleLib.SampleLib.foo() -> Swift.String 100.00% (3/3)

Slide 10

Slide 10 text

xccov • xccov view hoge.xccovreport --json | jq { "coveredLines": 3, "lineCoverage": 1, "targets": [ { "coveredLines": 3, "lineCoverage": 1, "files": [ { "coveredLines": 3, "lineCoverage": 1, "path": "/Users/you/SampleLib/Classes/SampleLib.swift", "functions": [ { "coveredLines": 3, "lineCoverage": 1, "lineNumber": 11, "executionCount": 1, "name": "static SampleLib.SampleLib.foo() -> Swift.String", "executableLines": 3 } ], "name": "SampleLib.swift", "executableLines": 3 } ], "name": "SampleLib.framework", "executableLines": 3, "buildProductPath": "/Users/you/Library/Developer/Xcode/DerivedData/.../SampleLib.framework/SampleLib" } ], "executableLines": 3 }

Slide 11

Slide 11 text

Test Selection and Order

Slide 12

Slide 12 text

Test Selection and Order • εΩʔϜຖʹλʔήοτͷςετΛࣗಈ௥Ճ͢Δ͔Ͳ͏͔બ ΂ΔΑ͏ʹͳͬͨ • ςετͷ࣮ߦॱΛϥϯμϜʹग़དྷΔ༷ʹͳͬͨ • ࣮ߦॱংʹґଘͨ͠ςετΛݕग़͠΍͘͢ͳΔ • ґଘΛແ͘͠setup/teardownΛ࢖ͬͯඞཁͳঢ়ଶ͸࡞Γ ·͠ΐ͏

Slide 13

Slide 13 text

Parallel Testing

Slide 14

Slide 14 text

!

Slide 15

Slide 15 text

Parallel Testing • ͜Ε·Ͱͷฒྻςετ • ෳ਺ͷγϛϡϨʔλͰશͯͷςετΛ࣮ߦ • xcodebuild͔ΒͷΈαϙʔτ͍ͯͨ͠

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

Parallel Distributed Testing • ಉҰγϛϡϨʔλͰͷςετͷฒྻ࣮ߦ͕Մೳʹͳͬͨ • Xcodeͱxcodebuildͷ྆ํͰߦ͑Δ • ςετΫϥε୯ҐͰ෼ࢄ͞ΕΔ • ςετ͸ࢦఆͨ͠γϛϡϨʔλͷΫϩʔϯ͕ඞཁͳ͚ͩىಈ ࣮͠ߦ͞ΕΔ

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

Ҏ্

Slide 20

Slide 20 text

͓·͚

Slide 21

Slide 21 text

man xccov xccovͷ࢖͍ํΛৄࡉʹ஌Γ͍ͨ৔߹͸man xccovΛݟͨํ͕ྑ ͍ xccov help΍xccov help viewͰදࣔ͞ΕΔ৘ใ͸؆ૉʹॻ͔Ε ͍ͯΔ

Slide 22

Slide 22 text

xcrunলུ͍ͨ͠ xcrunൈ͖Ͱxccovୟ͖͍ͨͳΒ /Applications/Xcode.app/Contents/Developer/usr/bin/ ʹύε௨͠·͠ΐ͏ simctlͳͲͷଞͷ։ൃऀπʔϧΛ࢖͏ͷʹ΋ศརͰ͢ɻ

Slide 23

Slide 23 text

xcodebuild option ฒྻςετ༻ͷΦϓγϣϯ͕૿͑·ͨ͠ //ฒྻςετͷϫʔΧʔ਺ͷࢦఆ -parallel-testing-worker-count n //ฒྻςετͷ࣮ߦΦϓγϣϯ -parallel-testing-enabled YES | NO

Slide 24

Slide 24 text

ࢀߟURL What's New in Testing https://developer.apple.com/videos/play/wwdc2018/403/ xccov: Xcode Code Coverage Report for Humans https://medium.com/xcblog/xccov-xcode-code-coverage- report-for-humans-466a4865aa18