Upgrade to Pro — share decks privately, control downloads, hide ads and more …

テストコードが増えるとバグは減るのだろうか? / Does more test code mean fewer bugs?

ring
September 21, 2020

テストコードが増えるとバグは減るのだろうか? / Does more test code mean fewer bugs?

私たちエンジニアはバグのない世界を切望し、自身のスキルに磨きをかけながら悪戦苦闘の毎日を送っています。

こと開発においてはユーザー体験の向上やサービスのグロースに目を向け、新機能の開発や既存機能の改善に多くの時間を費やしています。

一方でテストにはどれくらいの時間を費やしているでしょうか?
テストコードの実装は本当に品質の担保につながるのでしょうか?
時間を割いてまで書く目的とはなんでしょうか?

このセッションでは、私が開発に携わっているプロダクトにおいて約1年間でテストコードカバレッジがほぼ0%の状態から56.4%まで増えたことで実際にバグの減少につながったのかを中心に日々の開発でテストが実装されることで変わったこと・変わらなかったことをお話しいたします。

品質の向上や組織としての開発の効率化につながるための考え方や手法についてお伝えできればと思います。

- テストコードを書くことでバグは減るのか
- テストコードの価値と有用性
- テストコードを実装するメリット・デメリット
- テストカバレッジが上昇したことで変わったこと
- 組織・開発体制に適したテストの選択方法

ring

September 21, 2020
Tweet

More Decks by ring

Other Decks in Programming

Transcript

  1. © ZOZO Technologies, Inc. 5 ςετʹ͸ͲΕ͘Β͍ͷ࣌ؒΛඅ΍͍ͯ͠ΔͰ͠ΐ͏͔ʁ ςετίʔυͷ࣮૷͸ຊ౰ʹ඼࣭ͷ୲อʹͭͳ͕ΔͷͰ͠ΐ͏͔ʁ ࣌ؒΛׂ͍ͯ·Ͱॻ͘໨తͱ͸ͳΜͰ͠ΐ͏͔ʁ ͜ͷηογϣϯͰ͸ɺࢲ͕։ൃʹܞΘ͍ͬͯΔϓϩμΫτʹ͓͍ͯ໿೥ؒͰςετ ίʔυΧόϨοδ͕΄΅ͷঢ়ଶ͔Β·Ͱ૿͑ͨ͜ͱͰ࣮ࡍʹόάͷݮগʹͭ

    ͳ͕ͬͨͷ͔Λத৺ʹ೔ʑͷ։ൃͰςετ͕࣮૷͞ΕΔ͜ͱͰมΘͬͨ͜ͱɾมΘΒ ͳ͔ͬͨ͜ͱΛ͓࿩͍ͨ͠͠·͢ɻ ඼࣭ͷ޲্΍૊৫ͱͯ͠ͷ։ൃͷޮ཰Խʹͭͳ͕ΔͨΊͷߟ͑ํ΍ख๏ʹ͍͓ͭͯ఻͑ Ͱ͖Ε͹ͱࢥ͍·͢ɻ ϓϩϙʔβϧ
  2. © ZOZO Technologies, Inc. w ૊৫ɾ։ൃମ੍ʹదͨ͠ςετख๏ 6 ࠓ೔࿩͍ͨ͜͠ͱ w ςετίʔυ͕΄΅θϩͷϓϩμΫτʹςετίʔυ͕࣮૷

    ͞ΕΔΑ͏ʹͳͬͯײ͡ΔϝϦοτɾσϝϦοτ w ςετίʔυ࣮૷ʹࢸΔഎܠ w ςετίʔυ͕૿͑Δͱόά͸ݮΔͷͩΖ͏͔ʁ
  3. © ZOZO Technologies, Inc. 11 ։ൃମ੍ 2" ඼࣭؅ཧ෦ J04ΤϯδχΞ ࣗಈԽςετΛ͸͡ΊςετશൠΛ୲౰

    J04ΞϓϦͷػೳ։ൃΛ୲౰ ։ൃ׬ྃޙʹςετΛґཔ ෆ۩߹ใࠂ मਖ਼ͯ͠ςετΛ࠶ґཔ
  4. © ZOZO Technologies, Inc. 12 ։ൃମ੍ 2" ඼࣭؅ཧ෦ J04ΤϯδχΞ ࣗಈԽςετΛ͸͡ΊςετશൠΛ୲౰

    J04ΞϓϦͷػೳ։ൃΛ୲౰ ։ൃ׬ྃޙʹςετΛґཔ ෆ۩߹ใࠂ मਖ਼ͯ͠ςετΛ࠶ґཔ
  5. © ZOZO Technologies, Inc. 25 w ࢓༷࿙Ε͕ݟ͔ͭΔ౓ʹ֬ೝΛ͢Δ͜ͱͰ։ൃ଎౓ɾޮ཰͕௿Լ͢Δ w ։ൃऴ൫ʹ࢓༷ͷߟྀ࿙Ε͕ൃ͕֮ͨ͜͠Ε͔Βͷमਖ਼͕ࠔ೉ w

    ࢓༷Λे෼ʹཧղ͠ͳ͍··։ൃ͕׬ྃɹɹɹɹɹɹɹɹɹɹɹɹɹ ࢓༷Λे෼ཧղ͠ͳ͍··։ൃΛਐΊΔͱʜ ˠϦϦʔεޙʹෆ۩߹͕ൃ֮ FY"1*ͷϨεϙϯεͰҙਤ͠ͳ͍஋͕ฦ͖ͬͯͯ͠·͍ΞϓϦ͕ Ϋϥογϡ
  6. © ZOZO Technologies, Inc. 28 ςετίʔυ࣮૷࣌ͷϑϩʔ ࢓༷ͷཧղ ςετέʔεΛߟ͑Δ ػೳ։ൃ ςετ࣮૷

    2" ʮ͜ͷ৚݅ͷ࣌ʹ͸Ͳ͏͍͏ৼΔ෣͍Λ͢Δͷ͕ద੾͔ʁʯʮผͷ৚݅ͷ࣌ʹ͸ʁʁʯ ͳͲͱ͍ͬͨ͜ͱΛਂ͘ߟ͑ΔͨΊ݁Ռͱͯ͠࢓༷ॻͷਂ͍ཧղͱߟྀ࿙Ε͕ͳ͍͔ͷ ֬ೝʹͭͳ͕Δ
  7. © ZOZO Technologies, Inc. 29 ςετίʔυ࣮૷࣌ͷϑϩʔ ࢓༷ͷཧղ ςετέʔεΛߟ͑Δ ػೳ։ൃ ςετ࣮૷

    2" ૝ఆ௨ΓͷৼΔ෣͍Λ͢Δ͔ͷ֬ೝ ֤ςετέʔεͰࣗ෼͕ҙਤͨ͠௨Γͷڍಈ͔Λ͔֬ΊΔ
  8. © ZOZO Technologies, Inc. 30 w ࢓༷࿙Ε͕ݟ͔ͭΔ౓ʹ֬ೝΛ͢Δ͜ͱͰ։ൃ଎౓ɾޮ཰͕௿Լ͢Δ w ։ൃऴ൫ʹ࢓༷ͷߟྀ࿙Ε͕ൃ͕֮ͨ͜͠Ε͔Βͷमਖ਼͕ࠔ೉ w

    ࢓༷Λे෼ʹཧղ͠ͳ͍··։ൃ͕׬ྃɹɹɹɹɹɹɹɹɹɹɹɹɹ ˠϦϦʔεޙʹෆ۩߹͕ൃ֮ ςετίʔυͷ࣮૷ʹΑΓ࢓༷ͷཧղ͕ਂ·Δ ςετέʔεΛࣄલʹߟ֤͑έʔεͰςετίʔυΛ࣮૷͢Δ͜ͱ ͸࢓༷ͷཧղʹͭͳ͕Δ
  9. © ZOZO Technologies, Inc. 31 w ಈతςετ w ੩తςετ ςετͷछྨ

    ˠςετίʔυΛ࣮ߦͯ͠ಈ࡞֬ೝΛߦ͏ςετख๏ ˠυΩϡϝϯτ΍ιʔείʔυͳͲΛνΣοΫͯ͠ޡΓΛݕग़͢Δ ςετख๏
  10. © ZOZO Technologies, Inc. 44 w "1*Ͱҙਤ͠ͳ͍஋͕Ϩεϙϯε͞Εͨ࣌ͷڍಈ΍ීஈ͸ ͳ͔ͳ͔Ϩεϙϯε͞Εͳ͍஋ ϝϯςφϯε࣌ͷΤϥʔ ίʔυͳͲ

    ͕ฦ͖ͬͯͨ࣌ͷڍಈ֬ೝ w ໓ଟʹ࢖ΘΕͳ͍63-εΩʔϜ͕౉͞Εͨ࣌ͷڍಈ֬ೝ ϨΞέʔεͷ࠶ݱ͕༰қʹͳΔ ͳͲͳͲ
  11. © ZOZO Technologies, Inc. 66 w ςετಋೖͷྑ͍఺͕ޠΒΕ͕͕ͪͩσϝϦοτ΋͋Δ w ͳ͔ͥςετίʔυ͸ࣺͯ೉͍ ੲʹॻ͔Εͨಈ͔ͳ͍

    ςετίʔυͰ΋ͦͷ··࢒Γଓ͚Δ͜ͱ͕͋Δ w ςετಋೖͰશͯͷ໰୊͕ղܾ͢ΔΘ͚Ͱ͸ͳ͍ ςετίʔυ͸ສೳͰ͸ͳ͍
  12. © ZOZO Technologies, Inc. 82 w ݱঢ়ͷ՝୊ΛΑ͘ݟͭΊ༷ʑͳςετख๏͕͋Δத Ͱ࠷దͳςετํ๏Λબ୒͢Δ͜ͱ 1PJOU w

    අ༻ରޮՌΛҙࣝ͢Δɻςετͷಋೖ΍ӡ༻ͷίε τʹݟ߹͏ରՁΛಘΔ͜ͱ͕Ͱ͖Δͷ͔Λߟ͑Δ
  13. © ZOZO Technologies, Inc. 86 ςετίʔυ͕࠷େݶྗΛൃش͢Δʹ͸લఏ৚͕݅͋Δ w ςετίʔυʹόά͸ͳ͍͔ w ςετख๏

    6*ςετɾ6OJUςετͳͲ ͕ద੾͔Ͳ͏͔ w ςετέʔε͕ద੾ʹߟ͑ΒΕ͍ͯΔ͔ w ຊ౰ʹςετ͢΂͖Օॴʹςετ͕࣮૷͞Ε͍ͯΔ ͜ΕΒΛຬͨ͢ͱ͖ɺςετίʔυʹΑΓόά͸ݮΒͤΔ