開発を効率化するテストのデザインパターン
by
Kuniwak
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
։ൃΛޮԽ͢Δ ςετͷσβΠϯύλʔϯ
Slide 2
Slide 2 text
"CPVUNF
Slide 3
Slide 3 text
4XJGUϲ݄ͷਓؒ ࢦఠɾΞυόΠεܴʂ
Slide 4
Slide 4 text
ࠓհ͢Δύλʔϯ
Slide 5
Slide 5 text
ܕʹΑΔޚ
Slide 6
Slide 6 text
ςετ ༰қઃܭ
Slide 7
Slide 7 text
ςετͷ ߏԽ
Slide 8
Slide 8 text
σόοάͷ ޮԽ
Slide 9
Slide 9 text
લͷͷ΄ͲΦεεϝ
Slide 10
Slide 10 text
࣮ྫ͋Γ·͢
Slide 11
Slide 11 text
No content
Slide 12
Slide 12 text
No content
Slide 13
Slide 13 text
ܕʹΑΔޚ
Slide 14
Slide 14 text
ͦͦςετͬͯ ޮతͳͷͩΖ͏͔ʁ
Slide 15
Slide 15 text
ߏจϋΠϥΠτ Ϧϯτ ੩తܕݕࠪ ୯ମɾ݁߹ςετ &&ςετ खಈಈ࡞֬ೝ όά9Λݟ͚ͭͨॴ όά9
Slide 16
Slide 16 text
ߏจϋΠϥΠτ Ϧϯτ ੩తܕݕࠪ ୯ମɾ݁߹ςετ &&ςετ खಈಈ࡞֬ೝ όά" ্ͷํͰࢭ·Δͱ ॴཁ͕͍࣌ؒ όά# ςετͩͱ͕࣌ؒ ͔͔Δ
Slide 17
Slide 17 text
ͳΔ͘ςετલʹ όάΛݟ͚͍ͭͨ ͜Ε͕ޮత
Slide 18
Slide 18 text
Semantic Type σβΠϯύλʔϯ
Slide 19
Slide 19 text
จࣈྻͱͯ͠ͷૢ࡞ ඞཁͳ͍ͷͰӅ͢ ҙຯʹΑΔಠࣗܕ 5FTUBCMF%FTJHO&YBNQMF(JU)VC(JU)VC6TFSTXJGU--
Slide 20
Slide 20 text
Ϣʔβʔ໊Λड͚औΕΔ ؔʹ͔ͤ͠ͳ͍ 5FTUBCMF%FTJHO&YBNQMF(JU)VC(JU)VC3FQPTJUPSZTXJGU--
Slide 21
Slide 21 text
ؒҧͬͨॲཧΛॻ͖ͮΒ͍ Մಡੑߴ·Δ
Slide 22
Slide 22 text
Registration Token σβΠϯύλʔϯ
Slide 23
Slide 23 text
ඞཁͳࣄલͷॲཧΛ Εͳ͍Α͏ʹ͢Δύλʔϯ
Slide 24
Slide 24 text
5PLFO͕ඞཁ 5BCMF7JFX$FMMΛ࡞Δؔ 5FTUBCMF%FTJHO&YBNQMF.WD"SDIJUFDUVSF4UBSHB[FST4UBSHB[FS$FMMTXJGU--
Slide 25
Slide 25 text
উखʹ࡞Εͳ͍ ొ͢ΔͱೖखͰ͖Δ 5FTUBCMF%FTJHO&YBNQMF.WD"SDIJUFDUVSF4UBSHB[FST4UBSHB[FS$FMMTXJGU--
Slide 26
Slide 26 text
ඞཁͳࣄલͷॲཧΛΕΔͱ ܕݕࠪʹ௨Βͳ͍
Slide 27
Slide 27 text
ςετ ༰қઃܭ
Slide 28
Slide 28 text
ਓؒςετ༰қͳ ͷ͔͠ςετͰ͖ͳ͍
Slide 29
Slide 29 text
ViewController Factory σβΠϯύλʔϯ
Slide 30
Slide 30 text
3FOBNFͳͲͰ 4UPSZCPBSEͱͷ߹ੑ ؆୯ʹյΕΔ 5)&ݫ͍͠
Slide 31
Slide 31 text
7JFX$POUSPMMFSͷ࡞ؔ 'PSDF6OXSBQܕ͜͜Ͱଋറ 5FTUBCMF%FTJHO&YBNQMF.WD"SDIJUFDUVSF4UBSHB[FST4UBSHB[FST.WD$PNQPTFSTXJGU--
Slide 32
Slide 32 text
͜͜Ͱ׆͖Δ 7JFX$POUSPMMFSͱ4UPSZCPBSEͷ߹ੑΛݕূ 5FTUBCMF%FTJHO&YBNQMF5FTUT.WD"SDIJUFDUVSF4UBSHB[FS.WD$PNQPTFS5FTUTTXJGU
Slide 33
Slide 33 text
͠࡞Εͳ͔ͬͨΒҟৗ ࣮ࡍʹදࣔ·Ͱ࣮ߦ 5FTUBCMF%FTJHO&YBNQMF5FTUT/BWJHBUPS5FTU/BWJHBUPSTXJGU
Slide 34
Slide 34 text
State-Machine Model σβΠϯύλʔϯ
Slide 35
Slide 35 text
.7 ͷ.PEFMͷ ཏςετ͍͠ ཏ͖͠Εͳ͍ʂ
Slide 36
Slide 36 text
.PEFMͷঢ়ଶભҠΛ੍ݶ ͔ͩΒ
Slide 37
Slide 37 text
.firstFetching .fetched(.success(x)) .fetching(.success(x)) .fetched(.failure(e)) .fetching(.failure(e)) FOVN͕ศར 5FTUBCMF%FTJHO&YBNQMF.WD"SDIJUFDUVSF4UBSHB[FST4UBSHB[FST.PEFMTXJGU--
Slide 38
Slide 38 text
ͦΕͧΕͷҹΛ ςετ͢Δ͚ͩͰΑ͍
Slide 39
Slide 39 text
.firstFetching .fetched(.success(x)) .fetching(.success(x)) .fetched(.failure(e)) .fetching(.failure(e)) ͜ͷྫͰຊͰཏ 5FTUBCMF%FTJHO&YBNQMF.WD"SDIJUFDUVSF4UBSHB[FST4UBSHB[FST.PEFMTXJGU--
Slide 40
Slide 40 text
ঢ়ଶ͕രൃ͢Δલʹ ঢ়ଶΛ੍ݶͯ͠ѹతཏ
Slide 41
Slide 41 text
ςετͷ ߏԽ
Slide 42
Slide 42 text
ςετ͕૿͑ΔʹͭΕ ςετࣗମͷอकੑ͕ॏཁʹͳΔ
Slide 43
Slide 43 text
Parameterized Test σβΠϯύλʔϯ
Slide 44
Slide 44 text
ྨࣅͨ͠ςετέʔε͕ ଟ͍߹ͷύλʔϯ
Slide 45
Slide 45 text
ςετέʔεΛ σʔλߏʹམͱ͢ ෳͷςετέʔεΛ·ͱΊΔ 5FTUT.JSSPS%J⒎,JU5FTUT%J⒎BCMF4FU5FTUTTXJGU- ˞͍͍ྫ͕αϯϓϧʹͳ͔ͬͨͷͰผ͔Βर͍ͬͯ·͢ɻ
Slide 46
Slide 46 text
ςετέʔεϧʔϓͰ࣮ߦ͢Δ 5FTUT.JSSPS%J⒎,JU5FTUT%J⒎BCMF4FU5FTUTTXJGU- ˞͍͍ྫ͕αϯϓϧʹͳ͔ͬͨͷͰผ͔Βर͍ͬͯ·͢ɻ
Slide 47
Slide 47 text
ςετέʔεΛྔ࢈Ͱ͖Δ 5FTUT.JSSPS%J⒎,JU5FTUT%J⒎BCMF4FU5FTUTTXJGU- ˞͍͍ྫ͕αϯϓϧʹͳ͔ͬͨͷͰผ͔Βर͍ͬͯ·͢ɻ
Slide 48
Slide 48 text
MJOFΛLFZʹ͢Δͱ ॴ͕Θ͔Γ͍͢ 5FTUT.JSSPS%J⒎,JU5FTUT%J⒎BCMF4FU5FTUTTXJGU- ˞͍͍ྫ͕αϯϓϧʹͳ͔ͬͨͷͰผ͔Βर͍ͬͯ·͢ɻ
Slide 49
Slide 49 text
Promisified Test σβΠϯύλʔϯ
Slide 50
Slide 50 text
ඇಉظςετΈ͕ଟ͍ ಡΈͮΒ͍͜ͱ͕ଟ͍
Slide 51
Slide 51 text
No content
Slide 52
Slide 52 text
Ұํ+4քͰ1SPNJTFʹ ΑΔඇಉظςετ͕༏ ඇಉظͳͷऔಘͷσβΠϯύλʔϯ
Slide 53
Slide 53 text
J04Ͱ͍͍ͨʜ
Slide 54
Slide 54 text
No content
Slide 55
Slide 55 text
BTZODͱ͍͏ ؔͰแΉ ςετέʔε 1SPNJTFΛฦ͢ 5FTUBCMF%FTJHO&YBNQMF5FTUT(JU)VC(JU)VC"QJ5FTUTTXJGU
Slide 56
Slide 56 text
9$5FTU$BTF ͏·͘ϒϦοδ 1SPNJTF͕ղܾ͞ΕͨΒςετޭ غ٫͞ΕͨΒςετࣦഊ 5FTUBCMF%FTJHO&YBNQMF5FTUT"TZODTXJGU
Slide 57
Slide 57 text
ಡΈ͍͢ ॻ͖͍͢
Slide 58
Slide 58 text
σόοάͷ ޮԽ
Slide 59
Slide 59 text
Diff Assertion σβΠϯύλʔϯ
Slide 60
Slide 60 text
Α͋͘Δςετ .JSSPS%J⒎,JU3&"%.&NE
Slide 61
Slide 61 text
ಡΊ͵
Slide 62
Slide 62 text
։ൃ͠·ͨ͠
Slide 63
Slide 63 text
͜͏͢Δͱʜ .JSSPS%J⒎,JU3&"%.&NE
Slide 64
Slide 64 text
No content
Slide 65
Slide 65 text
.JSSPSͱ͍͏3FqFDUJPO"1*Λ ͬͯɺߏతͳEJ⒎Λܭࢉ
Slide 66
Slide 66 text
ͬͯΈ͍ͯͩ͘͞ʂ ˒Β͑Δͱخ͍͠Ͱ͢ʂ
Slide 67
Slide 67 text
·ͱΊ ͞·͟·ͳύλʔϯΛۦͯ͠ ޮతʹ։ൃ͠·͠ΐ͏
Slide 68
Slide 68 text
Φεεϝͷࢿྉ ςετքͰ༗໊ͳ σβύλຊ ϞοΫεύΠελϒͷ ఆٛɺࠓհͨ͠ ύλʔϯͷൃݩ͕ ͨ͘͞Μࡌͬͯ·͢