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.8k
サムザップにおけるNotionの 活用事例とPHPでのNotionAPIを利用した仕組み構築の紹介
sgeengineer
0
2k
Laravel OctaneをどうしてもPharで運用したい話
sgeengineer
2
2.6k
大規模Unityゲーム開発の設計事例 〜ドメイン駆動設計とDIコンテナを導入した一年を振り返る〜 / cedec2021-ddd
sgeengineer
2
15k
ロボットを動かすビジュアルプログラミングでできることはPHPでもできる!
sgeengineer
0
1.7k
PHP8版!Swooleのフレームワークを比べてみた
sgeengineer
1
2.8k
「戦国炎舞 -KIZNA-」で行ったAWSのコスト最適化の話
sgeengineer
0
1.9k
AirtestとPocoとOpenSTFによるUnity製スマートフォン向けゲームの実機自動テスト環境構築とその利用方法
sgeengineer
0
5.1k
PHPでgRPCって どこまでいけるの?
sgeengineer
0
4.9k
Other Decks in Programming
See All in Programming
AIに安心して任せるためにTypeScriptで一意な型を作ろう
arfes0e2b3c
0
320
リッチエディターを安全に開発・運用するために
unachang113
1
340
Vibe coding コードレビュー
kinopeee
0
390
大規模FlutterプロジェクトのCI実行時間を約8割削減した話
teamlab
PRO
0
410
What's new in Adaptive Android development
fornewid
0
130
ZeroETLで始めるDynamoDBとS3の連携
afooooil
0
140
Workers を定期実行する方法は一つじゃない
rokuosan
0
140
バイブコーディングの正体——AIエージェントはソフトウェア開発を変えるか?
stakaya
5
620
No Install CMS戦略 〜 5年先を見据えたフロントエンド開発を考える / no_install_cms
rdlabo
0
410
AI Agent 時代のソフトウェア開発を支える AWS Cloud Development Kit (CDK)
konokenj
6
1k
Dart 参戦!!静的型付き言語界の隠れた実力者
kno3a87
0
160
ご注文の差分はこちらですか? 〜 AWS CDK のいろいろな差分検出と安全なデプロイ
konokenj
5
740
Featured
See All Featured
For a Future-Friendly Web
brad_frost
179
9.9k
Visualization
eitanlees
146
16k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
870
Gamification - CAS2011
davidbonilla
81
5.4k
The Pragmatic Product Professional
lauravandoore
36
6.8k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Become a Pro
speakerdeck
PRO
29
5.5k
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年 現在
・他セクションの理解を得られないと導入が進ま ない ・とにかく書いてテストコードのメリットを体験しな いと本当には理解してもらえない ・見える化大事 ・カバレッジを増やすことにモチベーションを持てる 人を味方につけると進捗が早い ・諦めない心と強い信念が必要 ・テストコードは安定化させるための一つの手段 でしかない(これだけじゃ安定しないよ)
まとめ。
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ