Pro Yearly is on sale from $80 to $50! »

費用対効果の高いテストコードを書くために意識したこと.pdf

4edb44c4292fa5bd1cbe463d0e80ecbd?s=47 Kaoru Hotate
December 16, 2019

 費用対効果の高いテストコードを書くために意識したこと.pdf

2019/12/16 年末だよ Android/iOS Test Night - 2019
https://testnight.connpass.com/event/155429/

4edb44c4292fa5bd1cbe463d0e80ecbd?s=128

Kaoru Hotate

December 16, 2019
Tweet

Transcript

  1. අ༻ରޮՌͷߴ͍ ςετίʔυΛॻͨ͘Ίʹߟ͑ͨ͜ͱ ,BPSV)PUBUF!QVSVOLBPSV  ೥຤ͩΑ"OESPJEJ045FTU/JHIU UFTU@OJHIU 1

  2. อཱ֜ ,BPSV)PUBUF  5XJUUFS!QVSVOLBPSV  ϝυϐΞגࣜձࣾ ‣ 3VCZ೥൒ ‣ J04೥

    ‣ "OESPJEϲ݄ ࣗݾ঺հ 2
  3. ͖͔͚ͬ 3 6OJU5FTU͔Βॻ͍͍ͯ͜͏ .PEFM΍7JFX.PEFM͔Β ॻ͖·͠ΐ͏ ॻ͚ΔՕॴ͔Βॻ͍͍ͯ͜͏ όάͷଟ͍Օॴ͔Βॻ͜͏ શ෦ਖ਼ͦ͠͏ ˞ͦͷϓϩδΣΫτͷঢ়گͰ͸

  4. ͖͔͚ͬ 4 ςετͷʮԿΛ΍Δ͔ʯʮԿ͔Β΍Δ͔ʯ͸ɺ ϓϩδΣΫτʹΑͬͯҟͳΔͷͰ͸ʁ ‣ ΞϓϦͷۀछɾαʔϏεͷ಺༰ ‣ ϓϩμΫτϥΠϑαΠΫϧ ‣ खಈςετͰͷ୲อͷ࢓ํ

    ςετίʔυΛॻ͘໨త͔Βɺ ͲͷςετΛॻ͘΂͖͔൑அ͠ͳ͍ͱɺ ςετͷఆண͸࣮ݱͰ͖ͳͦ͞͏
  5. ࠓ೔࿩͢͜ͱ 5 ๻͕୲౰͍ͯ͠ΔαʔϏεʹɺ ͔ΒςετίʔυΛॻ͘͜ͱʹͳΓ·ͨ͠  ʮඅ༻ରޮՌͷߴ͍ςετίʔυʯͱ͸Կ͔ʁʹ͍ͭͯߟ͑ɺ ࣮ફͨ݁͠Ռىͬͨ͜͜ͱΛ࿩͠·͢

  6. ΞδΣϯμ 6 ϓϩδΣΫτͷঢ়گΛ೺Ѳ͢Δ ςετίʔυͷ໨తΛߟ͑Δ ςετίʔυͷํ਑Λ·ͱΊΔ ࣮ࡍʹى͖ͨ͜ͱΛৼΓฦΔ

  7. ͓࿳ͼ 7 ࿩ͷ಺༰্ɺࣗ෼ͷϓϩδΣΫτͷઆ໌͕ଟ͘ͳ͍ͬͯ·͢ ڵຯͳ͍ਓ΋͍Βͬ͠ΌΔͱࢥ͍·͕ྃ͢͝ঝ͍ͩ͘͞

  8. ϓϩδΣΫτͷঢ়گΛ೺Ѳ͢Δ 8

  9. αʔϏεઆ໌ 9

  10. ͬ͘͟Γͷػೳઆ໌ 10 B ձһొ࿥ɾϩάΠϯػೳ C ΧϝϥͰࡱӨͨ͠ॲํᝦͷૹ৴ػೳ D ϓογϡ௨஌डऔΓػೳ E νϟοτϝοηʔδૹड৴ػೳ

    "OESPJE͸.77.Λ࠾༻ 7JFX7JFX.PEFM3FQPTJUPSZ.PEFM
  11. αʔϏεͷϓϩμΫτϥΠϑαΠΫϧ 11 IUUQTCJ[IJOUKQLFZXPSEΑΓ ͜ͷลʁ ˞͋͘·Ͱ΋ϓϩδΣΫτ಺Ͱͷओ؍తͳҙݟͰ͢

  12. ςετίʔυͷ໨తΛߟ͑Δ 12

  13. 13 ςετΛॻͭ͘ͷ໨త Jਖ਼͘͠ಈ͘͜ͱΛ୲อ͢Δ JJ։ൃ࣌ͷಈ࡞ݕূΛ୹͘͢Δ JJJϨϏϡʔ࣌ؒΛ୹͘͢Δ JWΤϯδχΞ͕ײ͡Δਫ਼ਆతෛ୲ΛݮΒ͢  ˞ίʔυͷ࣭Λ୲อ͢Δɾ࢓༷Λ໌จԽ͢ΔͳͲɺଞͷཧ༝΋ߟ͑ΒΕΔ͕ɺ ςετΛॻ͘෭࣍తͳϝϦοτͩͱߟ͑ͨͷͰɺআ֎͍ͯ͠·͢

  14. Jਖ਼͘͠ಈ͘͜ͱΛ୲อ͢Δ 14 ໨త ‣ όά͕ϦϦʔε͞ΕΔ֬཰ΛݮΒ͢ ‣ όάൃੜʙमਖ਼׬ྃʹ͔͚Δ࣌ؒΛݮΒ͢ ‣ σάϨΛ๷͙ 

    ςετίʔυͷಛ௃ ‣ աڈͷόάൃੜස౓ͷߴ͍Օॴ͔Βॻ͘ ‣ ෳࡶͳΫϥε΍ը໘͔Βॻ͘ ‣ ݺͼग़͞ΕΔॲཧ͕ଟ͍Օॴ͔Βॻ͘
  15. Jਖ਼͘͠ಈ͘͜ͱΛ୲อ͢Δ 15 ͲΜͳϓϩδΣΫτʹద͍ͯ͠Δ͔ <>௕͘ଓ͚Δ༧ఆͷαʔϏεͰ͋Δ <>ҙਤͨ͠ڍಈʹͳΒͳ͍࣌ͷӨڹ౓ɾӨڹֹ͕େ͖͍ <>ػೳमਖ਼͕ଟ͍ <>ϥΠϒϥϦͷΞοϓσʔτΛ͢Δස౓͕ߴ͍ <>2"νʔϜ͕͍ͳ͍ ˓ º

    º ˚ ˓
  16. JJ։ൃ࣌ͷಈ࡞ݕূΛ୹͘͢Δ 16 ໨త ‣ ࣮ػͰͷಈ࡞ݕূ͕໘౗ͳՕॴʹରͯ͠ɺ ςετίʔυͰͷڍಈ֬ೝΛߦ͏ ‣ ֬ೝ࿙ΕΛ๷͙  ΍Δ͜ͱ

    ‣ ಈ࡞ݕূ͕໘౗ͳ෦෼ͷ6OJU5FTUΛॻ͘ Τϥʔॲཧ΍ϨΞέʔεͷڍಈ୲อͳͲ
  17. JJ։ൃ࣌ͷಈ࡞ݕূΛ୹͘͢Δ 17 ͲΜͳϓϩδΣΫτʹద͍ͯ͠Δ͔ <>"1*ͷNPDL؀ڥ͕ͳ͍ <>ෳࡶͳભҠέʔε͕ଟ͍ <>ΤϯδχΞ͕ಈ࡞ݕূΛαϘΓ͕ͪ ˓ ˚ ˚

  18. JJJϨϏϡʔ࣌ؒΛ୹͘͢Δ 18 ໨త ‣ ϨϏϡʔ࣌ʹɺςετίʔυͰ୲อ͞Ε͍ͯΔՕॴͷ खಈνΣοΫΛߦ͏࣌ؒΛ୹͘͢Δ  ΍Δ͜ͱ ‣ ෳࡶͳॲཧ΍ɺݟ͚ͨͩͰࣗ໌Ͱͳ͍Օॴ͔Β6OJU5FTUΛॻ͘

  19. JJJϨϏϡʔ࣌ؒΛ୹͘͢Δ 19 ͲΜͳϓϩδΣΫτʹద͍ͯ͠Δ͔ <>ϨϏϡʔจԽ͕͋Δ ଞʹ΋ཁҼ͋Γͦ͏͚ͩͲɾɾɾ º

  20. JWΤϯδχΞ͕ײ͡Δਫ਼ਆతෛ୲ΛݮΒ͢ 20 ໨త ‣ ϦϦʔε࣌ʹɺΤϯδχΞʹ͔͔Δա౓ͷۓுΛ΄͙͢ ‣ ςετͰ୲อ͞Ε͍ͯΔͱ͍͏҆৺ײΛ༩͑Δ  ΍Δ͜ͱ ‣

    ࣦഊ࣌ʹӨڹ౓ͷେ͖͍Օॴ͔Βɺ6*5FTU6OJU5FTUΛॻ͘
  21. JWΤϯδχΞ͕ײ͡Δਫ਼ਆతෛ୲ΛݮΒ͢ 21 ͲΜͳϓϩδΣΫτʹద͍ͯ͠Δ͔ <>ҙਤͨ͠ڍಈʹͳΒͳ͍࣌ͷӨڹ౓ɾӨڹֹ͕େ͖͍ <>ϦϦʔεલʹυΩυΩ͢Δ <>ϦϦʔεલʹख͕਒͑Δ <>ϦϦʔεલʹ޴ׇ͕͘ ˓ ˓ ˓

    ˓
  22. ςετίʔυͷํ਑Λ·ͱΊΔ 22

  23. 23 ςετΛॻͭ͘ͷ໨త Jਖ਼͘͠ಈ͘͜ͱΛ୲อ͢Δ JJ։ൃ࣌ͷಈ࡞ݕূΛ୹͘͢Δ JJJϨϏϡʔ࣌ؒΛ୹͘͢Δ JWΤϯδχΞ͕ײ͡Δਫ਼ਆతෛ୲ΛݮΒ͢

  24. 24 ςετΛॻͭ͘ͷ໨త Jਖ਼͘͠ಈ͘͜ͱΛ୲อ͢Δ JJ։ൃ࣌ͷಈ࡞ݕূΛ୹͘͢Δ JJJϨϏϡʔ࣌ؒΛ୹͘͢Δ JWΤϯδχΞ͕ײ͡Δਫ਼ਆతෛ୲ΛݮΒ͢

  25. 25 ԿΛ΍Δ͔ʢϨΠϠʔ͝ͱͷ੾Γ෼͚ʣ ਖ਼͘͠ಈ͘͜ͱΛ ୲อ͢Δ ಈ࡞ݕূΛ ୹͘͢Δ ਫ਼ਆతෛ୲Λ ݮΒ͢ 7JFX ˚

    º ˚ 7JFX.PEFM ˓ ˚ ˚ 3FQPTJUPSZ ˓ ˓ ˓ .PEFM ˓ ˚ ˓ 3FQPTJUPSZ͸ɺඞͣ6OJU5FTUΛॻ͘ .PEFM͸ɺෳࡶͳ෦෼͔Β6OJU5FTUΛॻ͘
  26. 26 ԿΛ΍Δ͔ʢػೳ͝ͱͷ੾Γ෼͚ʣ ਖ਼͘͠ಈ͘͜ͱΛ ୲อ͢Δ ಈ࡞ݕূΛ ୹͘͢Δ ਫ਼ਆతෛ୲Λ ݮΒ͢ ձһొ࿥ ˓

    ˓ ˕ ॲํᝦը૾ૹ৴ ˓ ˚ ˓ ௨஌डऔΓ ˚ ˓ ˚ ϝοηʔδૹड৴ ˚ ˚ º ʮձһొ࿥ʯ͸6*5FTU6OJU5FTUΛ໢ཏ͢Δ ʮॲํᝦը૾ૹ৴ʯ͸6OJU5FTUΛ໢ཏ͢Δ
  27. 27 ԿΛ΍Δ͔ʢ·ͱΊʣ ্͔Βॱʹߦ͏ J3FQPTJUPSZͷ6OJU5FTUΛॻ͘ JJʮձһొ࿥ʯͷ6OJU5FTU6*5FTUΛॻ͘ JJJෳࡶͳ.PEFMͷ6OJU5FTUΛॻ͘ JWʮॲํᝦը૾ૹ৴ʯͷ6OJU5FTUΛॻ͘

  28. ࣮ࡍʹى͖ͨ͜ͱΛৼΓฦΔ 28

  29. 29 ԿΛ΍Δ͔ʢ·ͱΊʣ ্͔Βॱʹߦ͏ J3FQPTJUPSZͷ6OJU5FTUΛॻ͘ JJʮձһొ࿥ʯͷ6OJU5FTU6*5FTUΛॻ͘ JJJෳࡶͳ.PEFMͷ6OJU5FTUΛॻ͘ JWʮॲํᝦը૾ૹ৴ʯͷ6OJU5FTUΛॻ͘ ձһొ࿥ϑϩʔม͑Α͏

  30. 30 ײͨ͜͡ͱ ಛʹ࠷ॳͷϑΣʔζ͔ΒςετΛॻ͍͍ͯ͘৔߹͸ɺ ϏδωεαΠυͱ΋ίϛϡχέʔγϣϯΛͱͬͯɺ ࠷ળͷςετํ਑Λࡦఆ͍ͯ͜͠͏ɻ ઌਓͷ஌ܙʹԊͬͯɺී௨ʹ࣮૷͍͚ͯ͠͹ ͍͍ײ͡ͷςετํ਑͕ݐͯΒΕͨؾ͕͢Δɻ ςετίʔυΛఆணͤ͞Δͱ͍͏͜ͱΛॏࢹ͢ΔͷͰ͋Ε͹ɺ ͳͥ΍Δ͔Λɺ୲౰ऀ͕͖ͪΜͱཧղ͍ͯ͠Δ΂͖ɻ

  31. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ 31