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

経営者を巻き込む 自動テストの広め方 [DevLove甲子園-技]

0325d2e64ff7ba85aaaeefca9cb882e5?s=47 tadyjp
August 24, 2014

経営者を巻き込む 自動テストの広め方 [DevLove甲子園-技]

DevLOVE現場甲子園2014 東日本大会
技トラック4回裏

ツールや技術だけでは解決できない「やりたいことを会社でやるための」5つのパターン

0325d2e64ff7ba85aaaeefca9cb882e5?s=128

tadyjp

August 24, 2014
Tweet

Transcript

  1. ܦӦऀΛר͖ࠐΉ ࣗಈςετͷ޿Ίํ ଟా·͞ͱ!UBEZ@KQ גࣜձࣾ͛͡Μ ੍࡞ج൫άϧʔϓϦʔμʔ  %FW-PWFݱ৔ߕࢠԂ౦೔ຊେձ ٕτϥοΫ  4BU

     
  2. ࣗݾ঺հ •  ͛͡ΜࣾΤϯδχΞ৽ଔ̍ظੜ •  ݱࡏ̎೥໨ •  ͜ͷ݄͔Βʮج൫νʔϜʯͷϦʔμʔ •  ීஈͷ࢓ࣄɿ ݱ৔

    ܦӦਞ 両⽅方から   押しつぶされる   ⽇日々 
  3. ͜ͷϓϨθϯͷϙΠϯτ πʔϧ΍ٕज़͚ͩͰ͸ղܾͰ͖ͳ͍ ʮ΍Γ͍ͨ͜ͱΛձࣾͰ΍ΔͨΊͷʯ ͭͷύλʔϯ 

  4. ࣾһߏ੒ ΤϯδχΞ ΤϯδχΞ ʢࠃ֎ࢠձࣾʣ اըʗηʔϧε σβΠφʔ ϚʔέςΟϯά 

  5. ̐छྨͷΤϯδχΞ ϚωδϝϯτΤϯδχΞ αʔϏε ΤϯδχΞ ςΫϊϩδʔΤϯδχΞ ࠃ֎ݱ஍ ΤϯδχΞ ࣄۀ෦ʗܦӦ૚ͱͷ ίϛϡχέʔγϣϯ͕ૈ͍ʂ 

  6. ೖࣾ࣌ͷিܸ  ΤϯδχΞਓ౰ͨΓͷ ՔಇαʔϏε਺  τϥοΫφϯόʔ  

  7. ೖࣾ࣌ͷিܸ ৴པͯ͠ಈ͍͍ͯΔ ςετίʔυͷߦ਺ʹ  

  8. ςετΛॻ͜͏ͱͨ͠ ϝϯόʔͷਓ਺  

  9. ࣦഊͷ೥ؒ •  3TQFDͷࣾ಺ษڧձ •  ςετͷॻ੶ͷ෍ڭ •  ࣾ಺ϥΠϒϥϦͷϥΠϒϥϦԽ •  ৽نαʔϏεͷ5%% • 

    FUD ԿΛ΍ͬͯ΋ͩΊ 
  10. ςετΛऔΓר͘'PSDFT 

  11. ࣄۀ੹೚ऀͱͷۦ͚Ҿ͖ ςετʁ ͦΜͳͷ͸खͷ։͍͍ͯΔ όΠτʹͰ΋΍Βͤͱ͚ ͪΐͬͱ଴ͬͯԼ͍͞ ๻͕΍Ζ͏ͱ͍ͯ͠Δςετ͸ ͦ͏͍͏ྨͷ΋ͷͰ͸͋Γ·ͤΜ 

  12. ։ൃϦʔμʔ͔Βͷཁٻ ςετΛॻ͘ͳΒ ΧόϨοδΛࢦඪʹ͠Α͏͔ ͪΐͬͱ଴ͬͯԼ͍͞ ΧόϨοδ͕ߴͯ͘΋ ඼࣭͕ߴ͍ͱ͍͏Θ͚Ͱ͸͋Γ·ͤΜ 

  13. ಉ྅ͱͷ୳Γ͍͋ ͓·͑ɺͦ͜·Ͱςετॻ͘ͷʁ Զʹ·ͰϓϨογϟʔ͕૿͑Δ͡Όͳ͍͔ ͪΐͬͱ଴ͬͯԼ͍͞ ςετ͸Ͱ͖Δͱ͜Ζ͔Β গͣͭ͠΍Ε͹͍͍ΜͰ͢Α 

  14. ଞ৬छ͔ΒͷϓϨογϟʔ ͋ͳͨɺ ͦΜͳ͜ͱ͢Δ༨༟͋ΔͳΒ ͬͪ͜ͷ։ൃͯ͠Α ͪΐͬͱ଴ͬͯԼ͍͞ ςετ͸ະདྷ΁ͷେ੾ͳ౤ࢿͰ͢ ༨༟͕ແ͍͔ΒςετΛ͢ΔΜͰ͢ 

  15. ࣗ෼ͱͷઓ͍ ೲظೲظೲظɺͦͯ͠ೲظ ςετͷͨΊʹ࢒ۀ͢Δͷ͔ɺԶ ͸͊ 

  16. ςετΛऔΓרͭ͘ͷྗ ࣄۀ ੹೚ऀ ։ൃ Ϧʔμʔ ಉ྅ ଞ৬छ ࣗ෼ 

  17. ͦ͏ɺݱ৔͸ఢͩΒ͚ GEMBA 

  18. Ͳ͏ͯ͜͠͏ͳͬͨʁ 

  19. ߥͿΔ࢛ఱԦ 2VBMJUZ ʜ඼࣭ $PTU  ʜඅ༻ʢ౤ೖਓ਺ʣ %FMJWFSZ ʜೲظ 4DPQF ʜػೳ਺

    Mr. Quality Mr. Cost Mr. Scope Mr. Delivery 
  20. ߥͿΔࡾఱԦ ೔ʑ։ൃͱϦϦʔε͕ଓࣗࣾ͘αʔϏεͰ͸ɺ $PTU౤ೖਓ਺Λมߋ͢Δ͜ͱ͸ ࣄ্࣮ෆՄೳ Mr. Quality Mr. Cost Mr. Scope

    Mr. Delivery 
  21. ࢒Δ̏ͭͷύϥϝʔλ ඼࣭ɾೲظɾػೳ ͜ͷ̏ͭ͸Ұݟཱ྆ͦ͠͏ʹݟ ͑Δ  ͔͠͠ɺ͜ͷ৔߹ 2VBMJUZ͸ʮະདྷ΁ͷ౤ࢿʯΛ ߟྀ͍ͯ͠ͳ͍ࣄ͕ଟ͍ Mr. Quality

    Mr. Scope Mr. Delivery ैଐม਺ ಠཱม਺ ಠཱม਺ 
  22. 4DPQF%FMJWFSZ͕ڧ͍ 2VBMJUZ͕ऑ͍ʹఆྔੑ͕௿͍ ͳͥͳΒɺ໨ʹݟ͑ͳ͍͔Βʂ ʮόά͕ແ͍ʹ඼࣭͕ߴ͍ʯͰ͸ͳ͍  

  23. +FOLJOT͕੺͘ͳͬͯ΋ɺ αʔϏεʹࢧো͕ग़ͳ͚Ε͹ ʮձࣾʯ͸Կ΋ࢥΘͳ͍ 

  24. ͡Ό͋ɺ2VBMJUZΛݟ͑ΔԽͩ 

  25. Ͱ΋ɺԿΛʁ ΧόϨοδΛݟͤͯ΋ʮձࣾʯ͸Կ΋ࢥΘͳ͍  ͱ͍͏͔ɺطଘαʔϏεͷςετԽͰ ΧόϨοδͱ͔ඇݱ࣮త  Կ͔ʮݟ͑ΔԽʯͰ͖Δ΋ͷ͸ແ͍͔ʁ  ύλʔϯ ݟ͑ΔԽύλʔϯ

    
  26. ࣾ಺ʹࣖΛ܏͚ͯΈͨ 

  27. Ϣʔβʔొ࿥ϑΥʔϜͷόϦσʔγϣϯΤϥʔ Ϟσϧͷςετ ڭՊॻతͰ΍Γ΍ͦ͢͏  Ͱ΋Կ͔Ҿ͔͔ͬΔ 

  28. ຊ౰ʹ͜ΕͰ͍͍ͷ͔ ϞσϧҎ֎ʹ΋ςετ߲໨͸ͨ͘͞Μ͋Δ ϑΥʔϜͷόϦσʔγϣϯͷมߋͱ͔Ίͬͨʹͳ ͍ 

  29. ͦ΋ͦ΋ͳͥ.PEFMͷςετ͔Βॻ͘ͷ͔ʁ ݪ఺ʹ໭ͬͯΈΑ͏ ͲͷςΩετ΋Ϟσϧͷςετ͔Βॻ͍ͯ͋Δ   トレーニングはモデルテストから   本番適⽤用ではフィーチャー(E2E)から  (;

     ・`д・´)  ナ、ナンダッテー  !?
  30. ํ਑స׵ ࣾ಺ʹϑΟʔνϟʔతͳ ςετΛॻ͘ωλ͸ͳ͍͔ʁ ύλʔϯ ܏ௌύλʔϯ 

  31. ͋ΔϚʔέ୲౰ͷͭͿ΍͖ ҎલɺϦϦʔε͢Δͱۃ·Εʹ)5.-ͷNFUBλ ά่͕ΕΔ͜ͱ͕͋ͬͨɻ ͦΕ͕յΕΔͱ4&0΍0(1ʹѱӨڹ͕ͰΔɻ ͦΕΛνΣοΫ͢ΔͨΊʹɺϦϦʔεલʹຖճ ʮιʔεΛදࣔʯͯ͠த਎Λ֬ೝ͢Δͷ͕໘౗ͩ l 

  32. ͜Εͩʂ ʮྲྀೖຖʹҟͳΔϥϯσΟϯάϖʔδ࠷దԽʯ ͷςετ  •  ϦϦʔεຖʹൃੜ͢Δखಈςετʹ᫣қ͢Δ Ϛʔέ୲౰ •  UJUMF΍NFUBͳͲͷ)5.-ཁૉͷςετ͸ ඇৗʹޮ཰͕ѱ͍

    •  σόΠεɺϦϑΝϥɺDPPLJFɺ೔࣌ͰҟͳΔ 7JFX •  ͜͏͍ͬͨςετ͸ඇৗʹΊΜͲ͍͘͞ ˍɹΤϥʔʹؾ͖ͮʹ͍͘ 
  33. ஥ؒΛ૿΍͢ Ϛʔέͷதʹ͸޿ࠂɺ4&0୲౰ऀ͕͍Δ ൴ΒΛ஥ؒʹ͢Δ͜ͱͰςετจԽΛ޿ΊͯΈΑ ͏ ظͤͣͯ͠ɺͦͯ͠ʮΤϯδχΞͷࣗݾຬ଍ʯͱ ͍͏ΠϝʔδΛ෷১ ύλʔϯ ஥ؒΛ૿΍͢ύλʔϯ 

  34. ඇٕज़ऀΛઆಘ͢ΔΩϥʔνϟʔτ ʮ͋ͳ͕ͨϦϦʔεຖʹνΣοΫ͍ͯ͠Δ߲໨͸ɺ ճ໨Ҏ߱ෆཁʹͳΓ·͢ʯ   ͔࣍Βͷϖʔδ͸ ࣮ࡍʹࣾ಺ษڧձͰ ެ։ͨ͠εϥΠυ

  35. 1回目 2回目 3回目 ・・・ N回目 機能A ◦ 機能B × 機能C

    ◦ 機能D (未実装) 機能E (未実装) 機能F (未実装) ・・・ 35
  36. 1回目 2回目 3回目 ・・・ N回目 機能A ◦ 機能B × 機能C

    ◦ 機能D (未実装) 機能E (未実装) 機能F (未実装) ・・・ テストが 必要な部分 36
  37. 1回目 2回目 機能A ◦ ◦ 機能B × ◦ 機能C ◦

    ◦ 機能D (未実装) ◦ 機能E (未実装) (未実装) 機能F (未実装) (未実装) ・・・ 37
  38. 1回目 2回目 機能A ◦ ◦ 機能B × ◦ 機能C ◦

    ◦ 機能D (未実装) ◦ 機能E (未実装) (未実装) 機能F (未実装) (未実装) ・・・ 38
  39. 1回目 2回目 3回目 ・・・ N回目 機能A ◦ ◦ × ◦

    機能B × ◦ ◦ ◦ 機能C ◦ ◦ ◦ ◦ 機能D (未実装) ◦ × ◦ 機能E (未実装) (未実装) (未実装) ◦ 機能F (未実装) (未実装) ◦ ◦ ・・・ 手動テストの場合: テスト回数 =機能数×リリース回数÷2 テストが 必要な部分 39
  40. 1回目 2回目 3回目 ・・・ N回目 機能A ◦ ◦ × ◦

    機能B × ◦ ◦ ◦ 機能C ◦ ◦ ◦ ◦ 機能D (未実装) ◦ × ◦ 機能E (未実装) (未実装) (未実装) ◦ 機能F (未実装) (未実装) ◦ ◦ ・・・ テストが 必要な部分 自動テストの場合: テスト回数 =機能数 40
  41. ۩ମతͳํ๏࿦ &YDFMʢ$47ʣΛ࢖ͬͨςετέʔεهड़ ඇٕज़ऀͰ΋࢖༻Ͱ͖Δz4QFDz &YDFMͳΒΈΜͳ͕࢖͑Δ    ཪଆ͸ +FOLJOTʴ'51αʔό 5VSOJQ

    1PMUFSHVJTU Λ͔ͭͬͨϑΟʔνϟʔ && ςετ ύλʔϯ าΈدΓύλʔϯ 
  42. ࢓૊Έ  マーケがCSVアップロード Daily  /  ⼿手動で実⾏行行 ⽇日々の開発

  43. ۩ମతͳํ๏࿦ ͻͱΓ2"νʔϜΛ݁੒  ςετिؒΛ࡞Γɺࣗ෼͕νʔϜʹೖΓࠐΉ νʔϜʹೃછΉΑ͏ʹ ʮҰਓͰ͢΂ͯ΍ͬͯ͠·͏ʯ͸/( ͋͘·Ͱ΋ɺʮݺͼਫʯͱͯ͠ ύλʔϯ ݺͼਫύλʔϯ 

  44. ෺ཧతʹ৔ॴΛม͑ͯςετΛॻ͖ʹߦ͘ 

  45. ͜Ε·Ͱͷ૯ׅ 

  46. ྑ͔ͬͨ఺ ʮςετ͕ճ͍ͬͯΔʯ ͱ͍͏ঢ়ଶ·Ͱ࠷୹ͰདྷΒΕͨ 

  47. ྑ͔ͬͨ఺ ςετΛ͍ͯ͠ͳ͍ ϝϯόʔΛר͖ࠐΊͨ 

  48. ྑ͔ͬͨ఺ ΤϯδχΞҎ֎ͷࢍಉऀ Λ࡞Δ͜ͱ͕ग़དྷͨ 

  49. ൓ল఺ ςετΛॻ͘τϨʔχϯάͱ ࣮ࡍͷςετͷ࣮૷ͷόϥϯεײ͕֮೉͍͠ 

  50. ࠓޙͲ͏ͯ͠ߦ͖͍͔ͨ •  ςετͷॏཁੑͷ෍ڭ –  ·ͩ·ͩςετͷॏཁੑΛ৺͔Βཧղ͍ͯ͠Δਓ਺͸ গͳ͍  •  ࠃڥͳ͖2"νʔϜͷ݁੒ – 

    ࣌఺Ͱࠃ֎ͷ։ൃऀͷํ͕ଟ͍  •  ୈ̎ɺୈ̏ͷʮݺͼਫʯީิͷҭ੒ –  ͍ͭ·Ͱ΋ࣗ෼͕ςετਪਐΛ͍ͯͨ͠ΒϚωδϝϯ τ͕Ͱ͖ͳ͍ 
  51. ςετΛ޿ΊΔͭͷύλʔϯ –  ਓ͸ਤࣔ͞ΕΔ͜ͱͰͦͷࣄฑͷେ͖͞Λ٬؍తʹड͚औΔ͜ͱ͕ Ͱ͖Δ  •  ܏ௌύλʔϯ –  ໰୊͸ࣗ෼͔Β཭Εͨͱ͜Ζʹస͕͍ͬͯΔ͜ͱ͕ଟ͍ 

    •  ஥ؒΛ૿΍͢ύλʔϯ –  ࣗ෼ҰਓͰղܾͰ͖ͳ͍࣌ʹ͸ɺͰ͖Δ͚ͩόοΫάϥ΢ϯυ͕ҧ ͏ਓͱ஥ྑ͘͢Δ͜ͱ  •  าΈدΓύλʔϯ –  ʮࣗ෼͕Θ͔Δ͜ͱ㱠ΈΜͳ͕Θ͔Δ͜ͱʯͱ͍͏ͷ͸͍ͭ΋๨Ε ͕ͪɻࣗ෼͕ਪਐऀͳΒ૬खʹ΋͓Έ΍͛Λ࣋ͬͯߦ͜͏  •  ݺͼਫύλʔϯ –  νʔϜͷจԽ΍ϓϩηεΛม͑ΔͨΊʹ͸ɺ࣌ʹ͸֎෦͔Βϝϯ όʔ͕ೖΓࠐΜͰɺҙࣝతʹվֵ͍ͯ͘͠Α͏ͳϩʔϧ͕ඞཁʹͳ Δ  ݟ͑ΔԽύλʔϯ ܏ௌύλʔϯ ஥ؒΛ૿΍͢ύλʔϯ าΈدΓύλʔϯ ݺͼਫύλʔϯ
  52. ͪΐͬͱʮٕʯͷ࿩ &&͕ؾܰʹͰ͖Δٕज़తͳ࿩  ͦͷαʔϏε͕͍͔ʹϨΨγʔͩΖ͏ͱɺ ֎෦͔ΒͷϒϥοΫϘοΫεςετͳͷͰ ࠷৽ͷόʔδϣϯɺϥΠϒϥϦ͕࢖͑Δɻ 

  53. ࢀߟਤॻ •  ૊৫ύλʔϯ •  ΞΠσΞΛ૊৫ʹ޿ΊΔͨΊͷͷύλʔϯ •  &WFSZEBZ3BJMT34QFDʹΑΔ3BJMTςετೖ໳ 

  54. 5IBOLZPVGPSMJTUFOJOH ݱ৔ ܦӦਞ でも、   ⼀一番美味しい