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.3k
組織にテストコードを書く文化を 根付かせるためにやってきたこと
組織にテストコードを書く文化を 根付かせるためにやってきたこと
@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.6k
サムザップにおけるNotionの 活用事例とPHPでのNotionAPIを利用した仕組み構築の紹介
sgeengineer
0
1.8k
Laravel OctaneをどうしてもPharで運用したい話
sgeengineer
2
2.3k
大規模Unityゲーム開発の設計事例 〜ドメイン駆動設計とDIコンテナを導入した一年を振り返る〜 / cedec2021-ddd
sgeengineer
2
13k
ロボットを動かすビジュアルプログラミングでできることはPHPでもできる!
sgeengineer
0
1.5k
PHP8版!Swooleのフレームワークを比べてみた
sgeengineer
1
2.5k
「戦国炎舞 -KIZNA-」で行ったAWSのコスト最適化の話
sgeengineer
0
1.7k
AirtestとPocoとOpenSTFによるUnity製スマートフォン向けゲームの実機自動テスト環境構築とその利用方法
sgeengineer
0
4.9k
PHPでgRPCって どこまでいけるの?
sgeengineer
0
4.7k
Other Decks in Programming
See All in Programming
Swift Testingのモチベを上げたい
stoticdev
2
140
React 19アップデートのために必要なこと
uhyo
8
1.5k
ナレッジイネイブリングにAIを活用してみる ゆるSRE勉強会 #9
nealle
0
160
5分で理解する SOLID 原則 #phpcon_nagoya
shogogg
1
380
Better Code Design in PHP
afilina
0
180
Amazon Bedrockマルチエージェントコラボレーションを諦めてLangGraphに入門してみた
akihisaikeda
1
140
良いコードレビューとは
danimal141
3
540
kintone開発を効率化するためにチームで試した施策とその結果を大放出!
oguemon
0
170
Rubyと自由とAIと
yotii23
6
1.8k
ABEMA iOS 大規模プロジェクトにおける段階的な技術刷新 / ABEMA iOS Technology Upgrade
akkyie
1
220
コミュニティ駆動 AWS CDK ライブラリ「Open Constructs Library」 / community-cdk-library
gotok365
2
250
推しメソッドsource_locationのしくみを探る - はじめてRubyのコードを読んでみた
nobu09
2
330
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
4
430
Producing Creativity
orderedlist
PRO
344
40k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
650
We Have a Design System, Now What?
morganepeng
51
7.4k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.2k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Rebuilding a faster, lazier Slack
samanthasiow
80
8.9k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.1k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.8k
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
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年 現在
・他セクションの理解を得られないと導入が進ま ない ・とにかく書いてテストコードのメリットを体験しな いと本当には理解してもらえない ・見える化大事 ・カバレッジを増やすことにモチベーションを持てる 人を味方につけると進捗が早い ・諦めない心と強い信念が必要 ・テストコードは安定化させるための一つの手段 でしかない(これだけじゃ安定しないよ)
まとめ。
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ