「こだわらない」から始めるテストの話 / The story of the test starting from "don't care"

44f37c1fe3a6a56376bb41a338741355?s=47 ahiru
October 14, 2020

「こだわらない」から始めるテストの話 / The story of the test starting from "don't care"

iOSDC Japan 2020 では「テストコードが増えるとバグは減るのだろうか?」というタイトルで発表をいたしました。

大変ありがたいことに多くの反響をいただいたため、もっと深掘りして弊社ZOZOテクノロジーズのZOZOTOWN iOSチームのテストの取り組みについてお話いたします。

- テストにおいて「こだわらない」ことの良さ
- 私の所属するチームではどんな所に「優先的に」テストを書いているのか

プロダクトのフェーズや組織体制などによって変わってくる部分はあると思いますが、一つの事例としてみなさんのご参考になれば幸いです。

44f37c1fe3a6a56376bb41a338741355?s=128

ahiru

October 14, 2020
Tweet

Transcript

  1. ʮͩ͜ΘΒͳ͍ʯ͔Β࢝ΊΔςετͷ࿩ ;0;0508/J04ͷςετࣄྫ גࣜձࣾ;0;0ςΫϊϩδʔζ ;0;0508/෦J04νʔϜ ໊औ߂ฏ Copyright © ZOZO Technologies, Inc.

     8FE  J045FTU5FB5JNF
  2. © ZOZO Technologies, Inc. גࣜձࣾ;0;0ςΫϊϩδʔζ ;0;0508/෦ J04νʔϜ ໊औ߂ฏ 2019೥2݄ΑΓݱ৬ ZOZOTOWN

    iOSΞϓϦͷ։ൃΛ͍ͯ͠·͢ɻ ޷͖ͳ৯΂෺͸ʮʯɻ௨ࢉ৯੷͸300ഋҎ্ɻ 2
  3. © ZOZO Technologies, Inc. 3 ͓͢͢Ίͷ͔͖ණ԰͞Μ͸ઋ୆ʹ͋Δʮᑓ͘Βʯ w ͔͖ණഋԁ͘Β͍ w Ձ஋؍͕͔ΘΔ

  4. © ZOZO Technologies, Inc. 4 J04%$+BQBOͰ͸ԼهςʔϚͰൃද 63-IUUQTTQFBLFSEFDLDPNBIJSVEPFTNPSFUFTUDPEFNFBOGFXFSCVHT

  5. © ZOZO Technologies, Inc. 5 J04%$+BQBOͰͷτʔΫͷ֓ཁ ςετίʔυ΄΅θϩͷϓϩμΫτʹҰఆྔͷςετίʔυ͕࣮૷͞Εͯ ʮόά͸ݮͬͨͷ͔ʯ ʮͲΜͳϝϦοτɾσϝϦοτ͕͔͋ͬͨʯ ʮνʔϜͱͯ͠ͲΜͳมԽ͕͔͋ͬͨʯ

    ͱ͍࣮ͬͨମݧͷ͓͸ͳ͠
  6. © ZOZO Technologies, Inc. 6 ଟ͘ͷํͷ໨ʹͱ·Δ

  7. © ZOZO Technologies, Inc. 7 ଟ͘ͷํͷ໨ʹͱ·Δ

  8. © ZOZO Technologies, Inc. 8 ࠓ೔࿩͍ͨ͜͠ͱ Ͳ͜ʹʮ༏ઌతʹʯςετΛॻ͘ͱྑ͍͔ ςετʹ͓͍ͯʮͩ͜ΘΒͳ͍͜ͱʯͷྑ͞  

    ˞ϓϩμΫτͷϑΣʔζ΍૊৫ͷମ੍ͳͲʹΑͬͯมΘͬͯ͘Δ෦෼͸͋Δͱࢥ͍·͢ Ұͭͷࣄྫͱָ͓ͯ͠͠Έ͍ͩ͘͞
  9. © ZOZO Technologies, Inc. 9 ☕ ߚ஡Ͱ΋ҿΈͳ͕Βͭ͘Ζ͍Ͱ͓ฉ͖͍ͩ͘͞

  10. © ZOZO Technologies, Inc. 10 ςετʹ͓͍ͯʮͩ͜ΘΒͳ͍͜ͱʯͷྑ͞ 

  11. © ZOZO Technologies, Inc. 11 ςετʹ͓͍ͯʮྑ͍ҙຯͰʯͩ͜Θͬͯͳ͍͜ͱ͕ଟ͍

  12. © ZOZO Technologies, Inc. 12 w ςετඞਢͰ͸ͳ͍ ྫ͑͹ w ςετத৺ͷ։ൃͰ͸ͳ͍

    w ແཧͷͳ͍ൣғͰʮࠓ͋Δ՝୊ʯʹண࣮ʹ औΓ૊ΜͰ͍Δ
  13. © ZOZO Technologies, Inc. 13 ཧ૝ ݱ࣮ w ςετ͸࿙Εͳ͘ਖ਼͍͠ w

    ࣮ߦ଎౓͕଎͍ w ద੾ʹࣗಈԽ͞Ε͍ͯΔ w ಠཱੑ w ந৅ߏจ໦͕มԽ͢Δ࣌͸ ςετඞཁ ɾɾɾ w ςετ͕͋ͬͨΓͳ͔ͬͨΓ w ςετ׬ྃʹ͕͔͔࣌ؒΔ w ࣗಈԽ͍ͯ͠Δ͕ۮʹࣦഊ w ςετͷ࣮૷͕ࠔ೉ͳॴ΋ w ςετ͕յΕͨݪҼͷௐࠪɾ मਖ਼ʹ͕͔͔࣌ؒΔ ɾɾɾ Ұൠతʹ͸
  14. © ZOZO Technologies, Inc. 14 ʮ࠷ॳ͔Βશͯ΍Ζ͏ʯͰ͸ͳ͘໨ͷલͷ՝୊ʹ޲͖߹ ͍ͳ͕Β্ख͘ʮ༏ઌॱҐʯ෇͚Λ͢Δ͜ͱͰ ʮςετʯʹ଍ΛҾͬுΒΕΔ͜ͱͳ͘։ൃΛਐΊΔ͜ ͱ͕Ͱ͖Δ ςετʹ͓͍ͯͩ͜ΘΒͳ͍͜ͱͷྑ͞

  15. © ZOZO Technologies, Inc. 15 ฐνʔϜࣄྫ ༏ઌॱҐ

  16. © ZOZO Technologies, Inc. 16 Ͳ͜ʹʮ༏ઌతʹʯςετΛॻ͘ͱྑ͍͔ 

  17. © ZOZO Technologies, Inc. 17 ࣄྫ ෆ۩߹ͷमਖ਼Օॴ

  18. © ZOZO Technologies, Inc. 18 J04։ൃνʔϜ ଞνʔϜ͔Βௐࠪґཔɾෆ۩߹ใࠂΛ͏͚Δ (PPHMF"OBMZUJDTͰૹͬͯ ͍Δσʔλ͕ؒҧͬͯͦ͏ ͳͷͰ֬ೝ͓ئ͍͠·͢

    ʓʓͷ࣌ʹϨΠΞ΢τ͕ ่Ε͍ͯΔͷͰमਖ਼Λ ͓ئ͍͠·͢ "1*ͷϦΫΤετύϥ ϝʔλͷ֬ೝΛ͓ئ͍͠ ·͢
  19. © ZOZO Technologies, Inc. 19 FY (PPHMF"OBMZUJDTͷϢχοτςετ ΋͏Կ೥΋લʹ࣮૷͞Εͨ΋ͷͰʮద੾ͳৼΔ෣͍ʯ΋෼͔Βͳ͍͕ςετΛॻ͘͜ͱͰ੔ཧ͞Εɺ ʮਖ਼͍͠࢓༷ʯ͕ϓϩμΫτʹ࢒Γଓ͚Δ͜ͱʹͳΔ

  20. © ZOZO Technologies, Inc. 20 ෆ۩߹ͷमਖ਼ՕॴʹςετΛॻ͘Ըܙ աͪΛ܁Γฦ͞ͳ͍ ෆ۩߹͕ى͜ΔյΕ΍͍͢ ˠςετʹΑׂͬͯͱૣ͍ஈ֊Ͱෆ۩߹ݕ஌Ͱ͖Δ͜ͱ΋ 

    
  21. © ZOZO Technologies, Inc. 21 ࣄྫ ৽ن࣮૷͔ͭ࢓༷͕ෳࡶͳՕॴ

  22. © ZOZO Technologies, Inc. 22 ;0;0."5 w ͓٬͞·ͷ଍Λ%Ͱܭଌ͢ΔͨΊʹ։ൃ ͞Εͨܭଌ༻Ϛοτ w

    ܭଌ৘ใΛ΋ͱʹɺۺͷਪ঑αΠζΛఏҊ w ೥य़ΑΓ/*,&΍$0/7&34&ͳͲ໿ ΞΠςϜʹରԠ ର৅঎඼͸ॱ֦࣍ॆ༧ ఆ
  23. © ZOZO Technologies, Inc. 23 աڈʹߪೖͨ͠γϡʔζͷϨϏϡʔ ˞ঢ়ଶભҠਤͷҰ෦Λൈਮ

  24. © ZOZO Technologies, Inc. 24 աڈʹߪೖͨ͠γϡʔζͷϨϏϡʔ ˞ঢ়ଶભҠਤͷҰ෦Λൈਮ ࢓༷͕ෳࡶͰɺ΋͠ػೳΛΞοϓσʔτ͢Δͱ͖͸஫ҙ͕ඞཁ

  25. © ZOZO Technologies, Inc. 25 ͦ͏͍͏ॴʹ͸ςετॻ͘

  26. © ZOZO Technologies, Inc. 26 աڈʹߪೖͨ͠γϡʔζͷϨϏϡʔͷςετͷҰྫ

  27. © ZOZO Technologies, Inc. 27 ৽ن࣮૷͔ͭ࢓༷͕ෳࡶͳՕॴʹςετΛॻ͘Ըܙ ௥Ճػೳͷ࣮૷΍࢓༷มߋͷࡍʹطଘͷৼΔ෣͍͕ ਖ਼͍͜͠ͱΛ֬ೝ͠ͳ͕Β։ൃΛਐΊΒΕΔ ৽ن࣮૷ͳͷͰςετ࣮૷Λҙࣝͨ͠ઃܭ͕Ͱ͖Δ 

    
  28. © ZOZO Technologies, Inc. 28 ࣄྫ ϦϑΝΫλϦϯάͷ࣌

  29. © ZOZO Technologies, Inc. 29 ྫ͑͹ɺ63-εΩʔϜͷ؅ཧΫϥεͷϦϑΝΫλϦϯάͷ࣌

  30. © ZOZO Technologies, Inc. 30 ϦϑΝΫλϦϯάͱ͸ʁ ϓϩάϥϜͷ֎෦͔ΒݟͨৼΔ෣͍Λม͑ͣʹ ಺෦ߏ଄Λ੔ཧ͢Δ͜ͱ Ҿ༻8JLJQFEJB

  31. © ZOZO Technologies, Inc. 31 ϦϑΝΫλϦϯάͱ͸ʁ ϓϩάϥϜͷ֎෦͔ΒݟͨৼΔ෣͍Λม͑ͣʹ ಺෦ߏ଄Λ੔ཧ͢Δ͜ͱ Ҿ༻8JLJQFEJB

  32. © ZOZO Technologies, Inc. 32 Ұൠతʹ͸ɺطଘͷςετΛಈ͔ͯ͠ʮ֎෦͔ΒͷৼΔ෣͍ʯ Λ֬ೝͭͭ͠ϦϑΝΫλϦϯάΛਐΊΔͱޮ཰త ಛʹର৅ͷ֎ଆʹςετ͕͋ΔͱΑΓྑ͍

  33. © ZOZO Technologies, Inc. 33 ;0;0508/J04ͷྺ࢙ ؆қ൛ ೥ ݱࡏʹࢸΔ ೥

    ॕɾJ04ΞϓϦϦϦʔε ೥ ςετ͕Μ͹Γ࢝ΊΔ
  34. © ZOZO Technologies, Inc. 34 ;0;0508/J04ͷྺ࢙ ؆қ൛ ೥ ݱࡏʹࢸΔ ೥

    ॕɾJ04ΞϓϦϦϦʔε ೥ ςετ͕Μ͹Γ࢝ΊΔ ۭനͷʮ೥ʯ
  35. © ZOZO Technologies, Inc. 35 ;0;0508/J04ͷྺ࢙ ؆қ൛ ೥ ݱࡏʹࢸΔ ೥

    ॕɾJ04ΞϓϦϦϦʔε ೥ ςετ͕Μ͹Γ࢝ΊΔ ۭനͷʮ೥ʯ ͭ·Γɺςετ͕ॻ͔Εͯͳ͍ͱ͜Ζ͕ଟʑ͋Δ
  36. © ZOZO Technologies, Inc. 36 ౰࣌ͷ࢓༷ॻΛ୳͢ طଘͷςετ͕ͳ͍··ϦϑΝΫλϦϯάΛਐΊΔ৔߹ J04ɾ"OESPJEͷࠩ෼Λ֬ೝ ଞνʔϜʹ࢓༷Λ֬ೝ

  37. © ZOZO Technologies, Inc. 37 Έͳ͞Μɺ΋͏͓ؾ͖ͮͰ͢ΑͶʁ

  38. © ZOZO Technologies, Inc. 38 ౰࣌ͷ࢓༷ॻΛ୳͢ طଘͷςετ͕ͳ͍··ϦϑΝΫλϦϯάΛਐΊΔ৔߹ J04ɾ"OESPJEͷࠩ෼Λ֬ೝ ଞνʔϜʹ࢓༷Λ֬ೝ ༧Ίςετ͕ଘࡏ͢Δͱɺ͜ΕΒͷ࡞ۀͷେ൒͸ෆཁͱͳΓ

    ϦϑΝΫλϦϯά͕ޮ཰తʹਐΉ
  39. © ZOZO Technologies, Inc. 39 ϦϑΝΫλϦϯάͷࡍʹςετΛॻ͘Ըܙ ΋͠طଘͷςετ͕ͳ͍৔߹͸ɺςετΛॻ͘͜ͱͰ কདྷతʹ୭͔ͷ໾ʹཱͭ͜ͱ͕͋Δ ͋ͳ͕ͨࠓॻ͍͍ͯΔςετ΋͖ͬͱ୭͔ͷ໾ʹཱͭ͸ͣ

  40. © ZOZO Technologies, Inc. 40 ࠷ޙʹ

  41. © ZOZO Technologies, Inc. 41 Έͳ͞ΜͷςετͷऔΓ૊ΈΛڭ͍͑ͯͩ͘͞ʂ ʮ͜͏͍͏ͷ΍ͬͯΔ͚ͲΑ͔ͬͨʯ ʮࠓ͜͏͍͏͜ͱʹ௅ઓ͍ͯ͠Δʯ ͳͲੵۃతʹҙݟަ׵ͯ͠ςετք۾Λ੝Γ্͍͖͛ͯ·͠ΐ͏ʂ