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
組織にテストコードを書く文化を 根付かせるためにやってきたこと
Search
CyberAgent SGE Engineer
June 29, 2017
Programming
1
4.4k
組織にテストコードを書く文化を 根付かせるためにやってきたこと
組織にテストコードを書く文化を 根付かせるためにやってきたこと
@Next game engineer_summit
CyberAgent SGE Engineer
June 29, 2017
Tweet
Share
More Decks by CyberAgent SGE Engineer
See All by CyberAgent SGE Engineer
SREチームの立ち上げから5年間とこれから
sgeengineer
0
1.9k
サムザップにおけるNotionの 活用事例とPHPでのNotionAPIを利用した仕組み構築の紹介
sgeengineer
0
2.1k
Laravel OctaneをどうしてもPharで運用したい話
sgeengineer
2
2.6k
大規模Unityゲーム開発の設計事例 〜ドメイン駆動設計とDIコンテナを導入した一年を振り返る〜 / cedec2021-ddd
sgeengineer
2
15k
ロボットを動かすビジュアルプログラミングでできることはPHPでもできる!
sgeengineer
0
1.8k
PHP8版!Swooleのフレームワークを比べてみた
sgeengineer
1
2.8k
「戦国炎舞 -KIZNA-」で行ったAWSのコスト最適化の話
sgeengineer
0
1.9k
AirtestとPocoとOpenSTFによるUnity製スマートフォン向けゲームの実機自動テスト環境構築とその利用方法
sgeengineer
0
5.2k
PHPでgRPCって どこまでいけるの?
sgeengineer
0
5k
Other Decks in Programming
See All in Programming
タスクの特性や不確実性に応じた最適な作業スタイルの選択(ペアプロ・モブプロ・ソロプロ)と実践 / Optimal Work Style Selection: Pair, Mob, or Solo Programming.
honyanya
3
140
Le côté obscur des IA génératives
pascallemerrer
0
120
iOSアプリの信頼性を向上させる取り組み/ios-app-improve-reliability
shino8rayu9
0
150
Чего вы не знали о строках в Python – Василий Рябов, PythoNN
sobolevn
0
160
CSC509 Lecture 02
javiergs
PRO
0
410
非同期jobをtransaction内で 呼ぶなよ!絶対に呼ぶなよ!
alstrocrack
0
540
Pythonスレッドとは結局何なのか? CPython実装から見るNoGIL時代の変化
curekoshimizu
4
1.3k
Signals & Resource API in Angular: 3 Effective Rules for Your Architecture @BASTA 2025 in Mainz
manfredsteyer
PRO
0
100
CSC305 Lecture 04
javiergs
PRO
0
250
猫と暮らすネットワークカメラ生活🐈 ~Vision frameworkでペットを愛でよう~ / iOSDC Japan 2025
yutailang0119
0
220
Reduxモダナイズ 〜コードのモダン化を通して、将来のライブラリ移行に備える〜
pvcresin
2
690
Advance Your Career with Open Source
ivargrimstad
0
350
Featured
See All Featured
Designing for Performance
lara
610
69k
The Pragmatic Product Professional
lauravandoore
36
6.9k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Docker and Python
trallard
46
3.6k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
45
2.5k
Code Reviewing Like a Champion
maltzj
525
40k
What's in a price? How to price your products and services
michaelherold
246
12k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.5k
Visualization
eitanlees
148
16k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Building Adaptive Systems
keathley
43
2.8k
A Modern Web Designer's Workflow
chriscoyier
697
190k
Transcript
組織にテストコードを書く文化を 根付かせるためにやってきたこと 2017/06/29 塚原 裕也 @Next Game Engineer Summit
塚原 裕也 (つかはら ゆうや) 株式会社グレンジ リードエンジニア / マネージャー
2008/04 SIのベンチャーでエンジニア始める 2012/02 サイバーエージェントグループのゲーム系子会社 CyberX入社 2014/11 グレンジへ合流し、現在に至る
2011/02/01 設立 グレンジって? ※絶賛新規仕込み中 提供アプリ ポコロンダンジョンズ
リリース - iOS:2014年6月 - Android:2014年8月 ダウンロード数 - 1000万突破 ポコダンって?
なぞって、えい!
改めて、今日話すこと。 組織にテストコードを書く文化を 根付かせるためにやってきたこと 運用中のタイトルに導入して カバレッジを90%以上にした話
みなさん、 テストコード書いてますか? まずは・・・
None
・リリースして10ヶ月くらい ・テストコードは”ゼロ” ・不具合が多く不安定 ・テストがないのにリファクタリングと いう名目で実装が行われる ・”祈る”開発 - 影響範囲が未知で自信ない 導入前の状況。
・1年間でカバレッジ90%超 (現在のカバレッジは95%) ・生産性が上がった ・テストコードがないと不安 ・”祈らない”開発 - コードに自信が持てている 導入後の状況。
・忙しくてテストを書く時間はない ・よくわかんないけど、面倒くさそう ・テスト書く時間あったら他の機能 を実装して欲しい 越えないといけない反発。 余計に反発強め テストコード経験なし 運用中のサービス ×
他セクション向け の取り組み。 (もちろんエンジニアにもする話)
「テスト書く時間あったら他の機能 を実装して欲しい」 ・工数が余計にかかることはない (必要な時間という認識) ・無駄な手戻りが減り円滑に進む スケジュール面でアピール。
・品質が見える化する ※テストを書いたら品質が上がるわ けではなく、品質はリファクタリング などで上がる。テストはその布石。 品質面でアピール。
・生産性があがる - 開発スピードが上がる - 仕様変更に強くなる - エンジニアが自信を持って開発 したコードの方が安心 もっと仕事するアピール。
エンジニア向けの 取り組み。
・理解者を増やす(根気が必要) ・「時間がない」のはテストを書かな いから ・テストコードの工数も含めて見積 もりする(時間がないを言い訳にさせない) ・時間はあげるから書いてくれ 理解してもらう。
・推進する人を立てる ・カバレッジを見える化して煽る (穴埋めするのを楽しむ) ・TDDに拘らない ・新規ファイルはテストを必ず書く (本当にどうしても時間ないときは後から書く) ・既存ファイルは空いた時間or機 能改修する時に書く 進め方。
海外版開発チームからテストコードの ベース部分を逆輸入。 とにかく導入する。 メンバーが合流するのを機に押し進めた。
"require-dev": { "phpunit/phpunit": "3.7.*", "squizlabs/php_codesniffer": "~2.3", "sebastian/phpcpd": "~2.0", "phpmd/phpmd": "~2.2",
"phing/phing": "~2.11" } 使用ライブラリ。 composer.json
・Jenkinsの利用 - Gitのpushをトリガーに実行 - カバレッジ計算 - コード規約チェック - 冗長なコード検出を行う 自動化。
カバレッジ見える化。 半年 1年 現在
・他セクションの理解を得られないと導入が進ま ない ・とにかく書いてテストコードのメリットを体験しな いと本当には理解してもらえない ・見える化大事 ・カバレッジを増やすことにモチベーションを持てる 人を味方につけると進捗が早い ・諦めない心と強い信念が必要 ・テストコードは安定化させるための一つの手段 でしかない(これだけじゃ安定しないよ)
まとめ。
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ