Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
経営者を巻き込む自動テストの広め方 [DevLove甲子園-技]
Search
tadyjp
August 24, 2014
Business
6
1.1k
経営者を巻き込む 自動テストの広め方 [DevLove甲子園-技]
DevLOVE現場甲子園2014 東日本大会
技トラック4回裏
ツールや技術だけでは解決できない「やりたいことを会社でやるための」5つのパターン
tadyjp
August 24, 2014
Tweet
Share
More Decks by tadyjp
See All by tadyjp
vue-onsenuiを教材に Vue2 migrationを 試してみる // migrate vue-onsenui to vue2
tadyjp
1
1.4k
「たった1行」を支える監視技術 at 2016/09/27 第一回スタートアップRails勉強会 / monitoring for "one line" service
tadyjp
2
400
テスト駆動検索のススメ [第3回Elasticsearch勉強会]
tadyjp
9
2.5k
Other Decks in Business
See All in Business
北海道スバル 会社説明(20250429)
recruithokkaidousubaru
0
140
Fantia株式会社 会社紹介資料
fantia
0
1.4k
Chemican Overview
aswdv
0
540
モノリシックな「Chatwork」から、認証基盤をどのように切り出していったか
kubell_hr
1
410
アシスト 会社紹介資料
ashisuto_career
3
110k
LW_brochure_business
lincwellhr
1
52k
会社紹介資料【ギバーテイクオール株式会社】
givertakeall
0
2.1k
Company Deck
chipee
0
740
衣笠ポイントの使い方
sanawe
0
220
カンパニーデック_20250501.pdf
ambitiouskanri
0
180
朝日新聞社 ITエンジニア キャリア採用 紹介資料
asahi_cto
0
180
日本トライスタイル採用説明資料
yamauguchishunta
0
540
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
52
7.5k
Building an army of robots
kneath
305
45k
Done Done
chrislema
184
16k
Music & Morning Musume
bryan
47
6.5k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.2k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
227
22k
A better future with KSS
kneath
239
17k
KATA
mclloyd
29
14k
Docker and Python
trallard
44
3.4k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Adopting Sorbet at Scale
ufuk
76
9.3k
Thoughts on Productivity
jonyablonski
69
4.6k
Transcript
ܦӦऀΛר͖ࠐΉ ࣗಈςετͷΊํ ଟా·͞ͱ!UBEZ@KQ גࣜձࣾ͛͡Μ ੍࡞ج൫άϧʔϓϦʔμʔ %FW-PWFݱߕࢠԂ౦ຊେձ ٕτϥοΫ 4BU
ࣗݾհ • ͛͡ΜࣾΤϯδχΞ৽ଔ̍ظੜ • ݱࡏ̎ • ͜ͷ݄͔Βʮج൫νʔϜʯͷϦʔμʔ • ීஈͷࣄɿ ݱ
ܦӦਞ 両⽅方から 押しつぶされる ⽇日々
͜ͷϓϨθϯͷϙΠϯτ πʔϧٕज़͚ͩͰղܾͰ͖ͳ͍ ʮΓ͍ͨ͜ͱΛձࣾͰΔͨΊͷʯ ͭͷύλʔϯ
ࣾһߏ ΤϯδχΞ ΤϯδχΞ ʢࠃ֎ࢠձࣾʣ اըʗηʔϧε σβΠφʔ ϚʔέςΟϯά
̐छྨͷΤϯδχΞ ϚωδϝϯτΤϯδχΞ αʔϏε ΤϯδχΞ ςΫϊϩδʔΤϯδχΞ ࠃ֎ݱ ΤϯδχΞ ࣄۀ෦ʗܦӦͱͷ ίϛϡχέʔγϣϯ͕ૈ͍ʂ
ೖࣾ࣌ͷিܸ ΤϯδχΞਓͨΓͷ ՔಇαʔϏε τϥοΫφϯόʔ
ೖࣾ࣌ͷিܸ ৴པͯ͠ಈ͍͍ͯΔ ςετίʔυͷߦʹ
ςετΛॻ͜͏ͱͨ͠ ϝϯόʔͷਓ
ࣦഊͷؒ • 3TQFDͷࣾษڧձ • ςετͷॻ੶ͷڭ • ࣾϥΠϒϥϦͷϥΠϒϥϦԽ • ৽نαʔϏεͷ5%% •
FUD ԿΛͬͯͩΊ
ςετΛऔΓר͘'PSDFT
ࣄۀऀͱͷۦ͚Ҿ͖ ςετʁ ͦΜͳͷखͷ։͍͍ͯΔ όΠτʹͰΒͤͱ͚ ͪΐͬͱͬͯԼ͍͞ ͕Ζ͏ͱ͍ͯ͠Δςετ ͦ͏͍͏ྨͷͷͰ͋Γ·ͤΜ
։ൃϦʔμʔ͔Βͷཁٻ ςετΛॻ͘ͳΒ ΧόϨοδΛࢦඪʹ͠Α͏͔ ͪΐͬͱͬͯԼ͍͞ ΧόϨοδ͕ߴͯ͘ ࣭͕ߴ͍ͱ͍͏Θ͚Ͱ͋Γ·ͤΜ
ಉ྅ͱͷ୳Γ͍͋ ͓·͑ɺͦ͜·Ͱςετॻ͘ͷʁ Զʹ·ͰϓϨογϟʔ͕૿͑Δ͡Όͳ͍͔ ͪΐͬͱͬͯԼ͍͞ ςετͰ͖Δͱ͜Ζ͔Β গͣͭ͠Ε͍͍ΜͰ͢Α
ଞ৬छ͔ΒͷϓϨογϟʔ ͋ͳͨɺ ͦΜͳ͜ͱ͢Δ༨༟͋ΔͳΒ ͬͪ͜ͷ։ൃͯ͠Α ͪΐͬͱͬͯԼ͍͞ ςετະདྷͷେͳࢿͰ͢ ༨༟͕ແ͍͔ΒςετΛ͢ΔΜͰ͢
ࣗͱͷઓ͍ ೲظೲظೲظɺͦͯ͠ೲظ ςετͷͨΊʹۀ͢Δͷ͔ɺԶ ͊
ςετΛऔΓרͭ͘ͷྗ ࣄۀ ऀ ։ൃ Ϧʔμʔ ಉ྅ ଞ৬छ ࣗ
ͦ͏ɺݱఢͩΒ͚ GEMBA
Ͳ͏ͯ͜͠͏ͳͬͨʁ
ߥͿΔ࢛ఱԦ 2VBMJUZ ʜ࣭ $PTU ʜඅ༻ʢೖਓʣ %FMJWFSZ ʜೲظ 4DPQF ʜػೳ
Mr. Quality Mr. Cost Mr. Scope Mr. Delivery
ߥͿΔࡾఱԦ ʑ։ൃͱϦϦʔε͕ଓࣗࣾ͘αʔϏεͰɺ $PTUೖਓΛมߋ͢Δ͜ͱ ࣄ্࣮ෆՄೳ Mr. Quality Mr. Cost Mr. Scope
Mr. Delivery
Δ̏ͭͷύϥϝʔλ ࣭ɾೲظɾػೳ ͜ͷ̏ͭҰݟཱ྆ͦ͠͏ʹݟ ͑Δ ͔͠͠ɺ͜ͷ߹ 2VBMJUZʮະདྷͷࢿʯΛ ߟྀ͍ͯ͠ͳ͍ࣄ͕ଟ͍ Mr. Quality
Mr. Scope Mr. Delivery ैଐม ಠཱม ಠཱม
4DPQF%FMJWFSZ͕ڧ͍ 2VBMJUZ͕ऑ͍ʹఆྔੑ͕͍ ͳͥͳΒɺʹݟ͑ͳ͍͔Βʂ ʮόά͕ແ͍ʹ࣭͕ߴ͍ʯͰͳ͍
+FOLJOT͕͘ͳͬͯɺ αʔϏεʹࢧো͕ग़ͳ͚Ε ʮձࣾʯԿࢥΘͳ͍
͡Ό͋ɺ2VBMJUZΛݟ͑ΔԽͩ
ͰɺԿΛʁ ΧόϨοδΛݟͤͯʮձࣾʯԿࢥΘͳ͍ ͱ͍͏͔ɺطଘαʔϏεͷςετԽͰ ΧόϨοδͱ͔ඇݱ࣮త Կ͔ʮݟ͑ΔԽʯͰ͖Δͷແ͍͔ʁ ύλʔϯ ݟ͑ΔԽύλʔϯ
ࣾʹࣖΛ͚ͯΈͨ
ϢʔβʔొϑΥʔϜͷόϦσʔγϣϯΤϥʔ Ϟσϧͷςετ ڭՊॻతͰΓͦ͢͏ ͰԿ͔Ҿ͔͔ͬΔ
ຊʹ͜ΕͰ͍͍ͷ͔ ϞσϧҎ֎ʹςετ߲ͨ͘͞Μ͋Δ ϑΥʔϜͷόϦσʔγϣϯͷมߋͱ͔Ίͬͨʹͳ ͍
ͦͦͳͥ.PEFMͷςετ͔Βॻ͘ͷ͔ʁ ݪʹͬͯΈΑ͏ ͲͷςΩετϞσϧͷςετ͔Βॻ͍ͯ͋Δ トレーニングはモデルテストから 本番適⽤用ではフィーチャー(E2E)から (;
・`д・´) ナ、ナンダッテー !?
ํస ࣾʹϑΟʔνϟʔతͳ ςετΛॻ͘ωλͳ͍͔ʁ ύλʔϯ ௌύλʔϯ
͋ΔϚʔέ୲ͷͭͿ͖ ҎલɺϦϦʔε͢Δͱۃ·Εʹ)5.-ͷNFUBλ ά่͕ΕΔ͜ͱ͕͋ͬͨɻ ͦΕ͕յΕΔͱ4&00(1ʹѱӨڹ͕ͰΔɻ ͦΕΛνΣοΫ͢ΔͨΊʹɺϦϦʔεલʹຖճ ʮιʔεΛදࣔʯͯ͠தΛ֬ೝ͢Δͷ͕໘ͩ l
͜Εͩʂ ʮྲྀೖຖʹҟͳΔϥϯσΟϯάϖʔδ࠷దԽʯ ͷςετ • ϦϦʔεຖʹൃੜ͢Δखಈςετʹқ͢Δ Ϛʔέ୲ • UJUMFNFUBͳͲͷ)5.-ཁૉͷςετ ඇৗʹޮ͕ѱ͍
• σόΠεɺϦϑΝϥɺDPPLJFɺ࣌ͰҟͳΔ 7JFX • ͜͏͍ͬͨςετඇৗʹΊΜͲ͍͘͞ ˍɹΤϥʔʹؾ͖ͮʹ͍͘
ؒΛ૿͢ Ϛʔέͷதʹࠂɺ4&0୲ऀ͕͍Δ ൴ΒΛؒʹ͢Δ͜ͱͰςετจԽΛΊͯΈΑ ͏ ظͤͣͯ͠ɺͦͯ͠ʮΤϯδχΞͷࣗݾຬʯͱ ͍͏ΠϝʔδΛ১ ύλʔϯ ؒΛ૿͢ύλʔϯ
ඇٕज़ऀΛઆಘ͢ΔΩϥʔνϟʔτ ʮ͋ͳ͕ͨϦϦʔεຖʹνΣοΫ͍ͯ͠Δ߲ɺ ճҎ߱ෆཁʹͳΓ·͢ʯ ͔࣍Βͷϖʔδ ࣮ࡍʹࣾษڧձͰ ެ։ͨ͠εϥΠυ
1回目 2回目 3回目 ・・・ N回目 機能A ◦ 機能B × 機能C
◦ 機能D (未実装) 機能E (未実装) 機能F (未実装) ・・・ 35
1回目 2回目 3回目 ・・・ N回目 機能A ◦ 機能B × 機能C
◦ 機能D (未実装) 機能E (未実装) 機能F (未実装) ・・・ テストが 必要な部分 36
1回目 2回目 機能A ◦ ◦ 機能B × ◦ 機能C ◦
◦ 機能D (未実装) ◦ 機能E (未実装) (未実装) 機能F (未実装) (未実装) ・・・ 37
1回目 2回目 機能A ◦ ◦ 機能B × ◦ 機能C ◦
◦ 機能D (未実装) ◦ 機能E (未実装) (未実装) 機能F (未実装) (未実装) ・・・ 38
1回目 2回目 3回目 ・・・ N回目 機能A ◦ ◦ × ◦
機能B × ◦ ◦ ◦ 機能C ◦ ◦ ◦ ◦ 機能D (未実装) ◦ × ◦ 機能E (未実装) (未実装) (未実装) ◦ 機能F (未実装) (未実装) ◦ ◦ ・・・ 手動テストの場合: テスト回数 =機能数×リリース回数÷2 テストが 必要な部分 39
1回目 2回目 3回目 ・・・ N回目 機能A ◦ ◦ × ◦
機能B × ◦ ◦ ◦ 機能C ◦ ◦ ◦ ◦ 機能D (未実装) ◦ × ◦ 機能E (未実装) (未実装) (未実装) ◦ 機能F (未実装) (未実装) ◦ ◦ ・・・ テストが 必要な部分 自動テストの場合: テスト回数 =機能数 40
۩ମతͳํ๏ &YDFMʢ$47ʣΛͬͨςετέʔεهड़ ඇٕज़ऀͰ༻Ͱ͖Δz4QFDz &YDFMͳΒΈΜͳ͕͑Δ ཪଆ +FOLJOTʴ'51αʔό 5VSOJQ
1PMUFSHVJTU Λ͔ͭͬͨϑΟʔνϟʔ && ςετ ύλʔϯ าΈدΓύλʔϯ
Έ マーケがCSVアップロード Daily / ⼿手動で実⾏行行 ⽇日々の開発
۩ମతͳํ๏ ͻͱΓ2"νʔϜΛ݁ ςετिؒΛ࡞Γɺ͕ࣗνʔϜʹೖΓࠐΉ νʔϜʹೃછΉΑ͏ʹ ʮҰਓͰͯͬͯ͢͠·͏ʯ/( ͋͘·Ͱɺʮݺͼਫʯͱͯ͠ ύλʔϯ ݺͼਫύλʔϯ
ཧతʹॴΛม͑ͯςετΛॻ͖ʹߦ͘
͜Ε·Ͱͷ૯ׅ
ྑ͔ͬͨ ʮςετ͕ճ͍ͬͯΔʯ ͱ͍͏ঢ়ଶ·Ͱ࠷ͰདྷΒΕͨ
ྑ͔ͬͨ ςετΛ͍ͯ͠ͳ͍ ϝϯόʔΛר͖ࠐΊͨ
ྑ͔ͬͨ ΤϯδχΞҎ֎ͷࢍಉऀ Λ࡞Δ͜ͱ͕ग़དྷͨ
ল ςετΛॻ͘τϨʔχϯάͱ ࣮ࡍͷςετͷ࣮ͷόϥϯεײ͕͍֮͠
ࠓޙͲ͏ͯ͠ߦ͖͍͔ͨ • ςετͷॏཁੑͷڭ – ·ͩ·ͩςετͷॏཁੑΛ৺͔Βཧղ͍ͯ͠Δਓ গͳ͍ • ࠃڥͳ͖2"νʔϜͷ݁ –
࣌Ͱࠃ֎ͷ։ൃऀͷํ͕ଟ͍ • ୈ̎ɺୈ̏ͷʮݺͼਫʯީิͷҭ – ͍ͭ·Ͱ͕ࣗςετਪਐΛ͍ͯͨ͠ΒϚωδϝϯ τ͕Ͱ͖ͳ͍
ςετΛΊΔͭͷύλʔϯ – ਓਤࣔ͞ΕΔ͜ͱͰͦͷࣄฑͷେ͖͞Λ٬؍తʹड͚औΔ͜ͱ͕ Ͱ͖Δ • ௌύλʔϯ – ͔ࣗΒΕͨͱ͜Ζʹస͕͍ͬͯΔ͜ͱ͕ଟ͍
• ؒΛ૿͢ύλʔϯ – ࣗҰਓͰղܾͰ͖ͳ͍࣌ʹɺͰ͖Δ͚ͩόοΫάϥϯυ͕ҧ ͏ਓͱྑ͘͢Δ͜ͱ • าΈدΓύλʔϯ – ʮ͕ࣗΘ͔Δ͜ͱ㱠ΈΜͳ͕Θ͔Δ͜ͱʯͱ͍͏ͷ͍ͭΕ ͕ͪɻ͕ࣗਪਐऀͳΒ૬खʹ͓Έ͛Λ࣋ͬͯߦ͜͏ • ݺͼਫύλʔϯ – νʔϜͷจԽϓϩηεΛม͑ΔͨΊʹɺ࣌ʹ֎෦͔Βϝϯ όʔ͕ೖΓࠐΜͰɺҙࣝతʹվֵ͍ͯ͘͠Α͏ͳϩʔϧ͕ඞཁʹͳ Δ ݟ͑ΔԽύλʔϯ ௌύλʔϯ ؒΛ૿͢ύλʔϯ าΈدΓύλʔϯ ݺͼਫύλʔϯ
ͪΐͬͱʮٕʯͷ &&͕ؾܰʹͰ͖Δٕज़తͳ ͦͷαʔϏε͕͍͔ʹϨΨγʔͩΖ͏ͱɺ ֎෦͔ΒͷϒϥοΫϘοΫεςετͳͷͰ ࠷৽ͷόʔδϣϯɺϥΠϒϥϦ͕͑Δɻ
ࢀߟਤॻ • ৫ύλʔϯ • ΞΠσΞΛ৫ʹΊΔͨΊͷͷύλʔϯ • &WFSZEBZ3BJMT34QFDʹΑΔ3BJMTςετೖ
5IBOLZPVGPSMJTUFOJOH ݱ ܦӦਞ でも、 ⼀一番美味しい