SlideShare a Scribd company logo
1 of 22
Download to read offline
Copyright Drecom Co., Ltd. All Rights Reserved.
社内テストファースト勉強会
2015/01/15
@sue445
Copyright Drecom Co., Ltd. All Rights Reserved.
sue445 @ドリコム
● ツール、ライブラリ、課金周り、サーバサイド全般
○ ドリコムを支える中間ポイントシステム - くりにっ
き http://sue445.hatenablog.
com/entry/2014/12/01/000000
● PO (Precure Ojisan)
● RubyKaja 2014
自己紹介
Copyright Drecom Co., Ltd. All Rights Reserved.
ワタシハ テスト チョットデキル
https://suzuri.jp/sue445/62900/t-shirt/s/brightgreen
Copyright Drecom Co., Ltd. All Rights Reserved.
● テストの分類
● テスト駆動開発(Test Driven Development)とは
● テストファーストとは
● テストファースト、自動テストを導入するという事について
● テストを書くべきところ、そうでないところ
● 僕がテストファーストをする理由
Agenda
Copyright Drecom Co., Ltd. All Rights Reserved.
http://www.slideshare.net/t_wada/the-spirit-of-tdd/14
テストの分類
Copyright Drecom Co., Ltd. All Rights Reserved.
http://www.slideshare.net/t_wada/the-spirit-of-tdd/14
テストの分類
開発者視点でのテスト
・ユニットテスト:プログラムの正しい
振る舞いをコードで示す
Copyright Drecom Co., Ltd. All Rights Reserved.
http://www.slideshare.net/t_wada/the-spirit-of-tdd/14
テストの分類 顧客(弊社だとPOやディレクターな
ど)が望んでいる機能を満たしている
かのテスト
Copyright Drecom Co., Ltd. All Rights Reserved.
http://www.slideshare.net/t_wada/the-spirit-of-tdd/14
テストの分類
・開発者も顧客も想定していないよう
なバグ
・セキュリティ(XSS, SQLインジェク
ションなど)
・パフォーマンス(クソクエリ、レスポン
スが遅いとか)
・チートの穴
を防ぐ
Copyright Drecom Co., Ltd. All Rights Reserved.
http://www.slideshare.net/t_wada/the-spirit-of-tdd/14
テストの分類
今日話すのは主にこれ
Copyright Drecom Co., Ltd. All Rights Reserved.
http://www.slideshare.net/t_wada/the-spirit-of-tdd/26
テスト駆動開発(Test Driven Development)とは
Copyright Drecom Co., Ltd. All Rights Reserved.
http://www.slideshare.net/t_wada/the-spirit-of-tdd/27
テスト駆動開発(Test Driven Development)とは
Copyright Drecom Co., Ltd. All Rights Reserved.
● プロダクトコードを書くよりも前にテストコード
を書くこと
● TDD ≒ テストファースト
○ RedとGreenを細かいサイクルで回してい
れば後にテスト書いてもTDD。(だと思う)
○ 卵が先か鶏が先かの些細な違い
○ 後からテストを書いてもいいじゃない、人
間だもの
テストファーストとは
Copyright Drecom Co., Ltd. All Rights Reserved.
● テストファースト、自動テストを導入するという
事について(@社内勉強会)
○ http://www.slideshare.net/KyonMm/ss-
41785717
詳しいこと
Copyright Drecom Co., Ltd. All Rights Reserved.
全てのコードにテストを書く必要はない
● 半年以上メンテする必要があるコードはテストコードが必須
○ 半年以上前の自分は他人
● 逆に言えば使い捨てのコードに対しては不要(重要度による
が)
○ 使うのが1回だけだとテストコードを書くコストの方がでか
くなるので割に合わない
○ 経験上半年くらいで最初に書いたテストの元がとれるよう
になる
● 機械でチェックするのが困難なものは不要(というか無理)
○ デザイン崩れとか目で見ないと分からない
● どこから書くか迷ったら書きやすいところから書く
○ Model, Utility
テストを書くべきところ、そうでないところ
Copyright Drecom Co., Ltd. All Rights Reserved.
僕がテストファーストをする理由
Copyright Drecom Co., Ltd. All Rights Reserved.
楽をするため
Copyright Drecom Co., Ltd. All Rights Reserved.
テストを書くことを前提としていないコードに対して後から無理矢
理テストを注入する方が難しい(と思う)
● 例:テストが一切無いレガシーコードのリファクタリング
○ 規模が大きな既存のプロダクトコードをなるべく変更しな
いようにピンポイントにテストコードだけ書くのは難しい
○ 爆弾処理なみの慎重さが要求される
● 後からテストを書く方が難しいので先にテストを書く
○ →簡単なので楽をできる
テストを先に書く方が楽
Copyright Drecom Co., Ltd. All Rights Reserved.
テストコードを先に書くことで、何を作りたいかを明確にできる
● テストコードを書く時には「入力(引数)」「出力(戻り値)」「処
理の概要」が決まってないと書けない
○ ある意味設計と変わらない
○ 実装する前に設計することを自分自身に強いる
● テストコードを書いてると PullRequest や MergeRequest で
どこまで考慮して実装してるのかをレビュアーに伝えやすく
なる
● 認識の齟齬で後から大きく手戻りするくらいならテストファー
ストを通して設計をしっかり固めた方が楽
テストコードは動く仕様書
Copyright Drecom Co., Ltd. All Rights Reserved.
● TDDしてれば自然と(カバレッジだけなら)網羅性の高いテス
トは書ける
○ 「カバレッジが高いこと」と「意味のあるテスト」をしてるか
は別問題
● ある程度ユニットテストが整備されていると常にリグレッション
(再帰)テストを流せるので、凡ミスがすぐ見つかる
○ 常日頃から命綱を編んでおく
○ 何かあってから命綱を編むのは手遅れ
● テストが多いとCIもやりやすくなる
○ Jenkins動かすにしてもテストが少ないと効果は薄い
● TDDだけで全部の問題は解決できない
○ TDDそのものよりもその副産物の方が重要
TDDは銀の弾丸ではない
Copyright Drecom Co., Ltd. All Rights Reserved.
● テストファースト、自動テストを導入するという事について(@
社内勉強会)
○ http://www.slideshare.net/KyonMm/ss-41785717
● テストとリファクタリングに関する深い方法論 #wewlc_jp
○ http://www.slideshare.net/KyonMm/wewlcjp/32
● 「いまさら聞けないTDD/BDD超入門」最新記事一覧 -
ITmedia Keywords
○ http://www.atmarkit.co.jp/ait/kw/tdd_bdd.html
参考URL
Copyright Drecom Co., Ltd. All Rights Reserved.
● 基本から学ぶソフトウェアテスト
○ http://www.amazon.co.jp/dp/4822281132
● 知識ゼロから学ぶソフトウェアテスト 【改訂版】
○ http://www.amazon.co.jp/dp/4798130605
● ソフトウェアテスト293の鉄則
○ http://www.amazon.co.jp/dp/482228154X
● ソフトウェアテスト技法ドリル―テスト設計の考え方と実際
○ http://www.amazon.co.jp/dp/4817193603
参考書籍
Copyright Drecom Co., Ltd. All Rights Reserved.
● TDD のこころ @ OSH2014
○ http://www.slideshare.net/t_wada/osh2014-sprit-
of-tdd
○ 47枚目以降にユースケース毎のおすすめ書籍が載って
る
● ソフトウェアテストの書籍まとめ 2013 #SWTestAdvent — う
さぎ組
○ http://kyon-mm.bitbucket.
org/blog/html/2013/12/27/swtest_books.html
参考書籍

More Related Content

What's hot

【Saitama.js】Denoのすすめ
【Saitama.js】Denoのすすめ【Saitama.js】Denoのすすめ
【Saitama.js】Denoのすすめ虎の穴 開発室
 
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜	【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜 虎の穴 開発室
 
QAエンジニアを通じて 弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
QAエンジニアを通じて弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜QAエンジニアを通じて弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
QAエンジニアを通じて 弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜gree_tech
 
虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料 虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料 虎の穴 開発室
 
愛せよ、さもなくば捨てよ。
愛せよ、さもなくば捨てよ。愛せよ、さもなくば捨てよ。
愛せよ、さもなくば捨てよ。Sho Yoshida
 
[デブサミ2015] スクラムならうまくいく? 〜グリーのネイティブゲーム作りの歴史をひもとく、 そして未来へ〜
[デブサミ2015] スクラムならうまくいく?〜グリーのネイティブゲーム作りの歴史をひもとく、そして未来へ〜[デブサミ2015] スクラムならうまくいく?〜グリーのネイティブゲーム作りの歴史をひもとく、そして未来へ〜
[デブサミ2015] スクラムならうまくいく? 〜グリーのネイティブゲーム作りの歴史をひもとく、 そして未来へ〜gree_tech
 
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦Sho Yoshida
 
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechconYosaku Toyama
 
Kotlinではじめる Webアプリケーション入門
Kotlinではじめる Webアプリケーション入門Kotlinではじめる Webアプリケーション入門
Kotlinではじめる Webアプリケーション入門虎の穴 開発室
 
RUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践SmalltalkRUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践SmalltalkSho Yoshida
 
位置情報を常に取得するのはつらいよ
位置情報を常に取得するのはつらいよ位置情報を常に取得するのはつらいよ
位置情報を常に取得するのはつらいよDrecom Co., Ltd.
 
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜gree_tech
 

What's hot (12)

【Saitama.js】Denoのすすめ
【Saitama.js】Denoのすすめ【Saitama.js】Denoのすすめ
【Saitama.js】Denoのすすめ
 
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜	【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
 
QAエンジニアを通じて 弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
QAエンジニアを通じて弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜QAエンジニアを通じて弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
QAエンジニアを通じて 弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
 
虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料 虎の穴ラボ エンジニア採用説明資料
虎の穴ラボ エンジニア採用説明資料
 
愛せよ、さもなくば捨てよ。
愛せよ、さもなくば捨てよ。愛せよ、さもなくば捨てよ。
愛せよ、さもなくば捨てよ。
 
[デブサミ2015] スクラムならうまくいく? 〜グリーのネイティブゲーム作りの歴史をひもとく、 そして未来へ〜
[デブサミ2015] スクラムならうまくいく?〜グリーのネイティブゲーム作りの歴史をひもとく、そして未来へ〜[デブサミ2015] スクラムならうまくいく?〜グリーのネイティブゲーム作りの歴史をひもとく、そして未来へ〜
[デブサミ2015] スクラムならうまくいく? 〜グリーのネイティブゲーム作りの歴史をひもとく、 そして未来へ〜
 
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦
情熱Smalltalker SmalltalkとAWSでクラウドサービスを実現するための挑戦
 
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
 
Kotlinではじめる Webアプリケーション入門
Kotlinではじめる Webアプリケーション入門Kotlinではじめる Webアプリケーション入門
Kotlinではじめる Webアプリケーション入門
 
RUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践SmalltalkRUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践Smalltalk
 
位置情報を常に取得するのはつらいよ
位置情報を常に取得するのはつらいよ位置情報を常に取得するのはつらいよ
位置情報を常に取得するのはつらいよ
 
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
 

Similar to 社内テストファースト勉強会

Jupyter勉強会 20160701 at NII
Jupyter勉強会 20160701 at NIIJupyter勉強会 20160701 at NII
Jupyter勉強会 20160701 at NIIaxsh co., LTD.
 
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」Hiroyuki Ohnaka
 
iOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめようiOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめようToshiyuki Hirata
 
ソフトウェアテスト入門
ソフトウェアテスト入門ソフトウェアテスト入門
ソフトウェアテスト入門Preferred Networks
 
TDDはじめる前に
TDDはじめる前にTDDはじめる前に
TDDはじめる前にYasui Tsutomu
 
ノンプログラマのためのSelenium de DDTはじめの一歩
ノンプログラマのためのSelenium de DDTはじめの一歩ノンプログラマのためのSelenium de DDTはじめの一歩
ノンプログラマのためのSelenium de DDTはじめの一歩Satsuki Urayama
 
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]David Buck
 
はじめてのテスト技法
はじめてのテスト技法はじめてのテスト技法
はじめてのテスト技法Tatsuya Saito
 
Test-Driven Development for [Embedded] C by James Grenning at Agile Japan 2013
Test-Driven Development for [Embedded] C by James Grenning at Agile Japan 2013Test-Driven Development for [Embedded] C by James Grenning at Agile Japan 2013
Test-Driven Development for [Embedded] C by James Grenning at Agile Japan 2013Yohei Onishi
 
Stac2013 opening-koukai
Stac2013 opening-koukaiStac2013 opening-koukai
Stac2013 opening-koukaiKumiko Ohmi
 
「Agileごっこ」で終わらせないために(仮)
「Agileごっこ」で終わらせないために(仮) 「Agileごっこ」で終わらせないために(仮)
「Agileごっこ」で終わらせないために(仮) Taku Yajima
 
自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips
自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips
自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTipsShou Takenaka
 
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalkBIGLOBE Tech Talk
 
Et west テスト自動化_公開版
Et west テスト自動化_公開版Et west テスト自動化_公開版
Et west テスト自動化_公開版Noriyuki Mizuno
 
事業会社で働くエンジニアのマインドセット - DevLOVE関西
事業会社で働くエンジニアのマインドセット - DevLOVE関西事業会社で働くエンジニアのマインドセット - DevLOVE関西
事業会社で働くエンジニアのマインドセット - DevLOVE関西Tomoyuki Sugita
 
JIRA Agileを活用したアジャイル開発実践事例 #AUGJ
JIRA Agileを活用したアジャイル開発実践事例 #AUGJJIRA Agileを活用したアジャイル開発実践事例 #AUGJ
JIRA Agileを活用したアジャイル開発実践事例 #AUGJ満徳 関
 
NTTデータにおけるScrumの組織的導入
NTTデータにおけるScrumの組織的導入NTTデータにおけるScrumの組織的導入
NTTデータにおけるScrumの組織的導入shibao800
 
TDDをやってみた
TDDをやってみたTDDをやってみた
TDDをやってみたYuta Kawadai
 

Similar to 社内テストファースト勉強会 (20)

Jupyter勉強会 20160701 at NII
Jupyter勉強会 20160701 at NIIJupyter勉強会 20160701 at NII
Jupyter勉強会 20160701 at NII
 
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
 
iOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめようiOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめよう
 
ソフトウェアテスト入門
ソフトウェアテスト入門ソフトウェアテスト入門
ソフトウェアテスト入門
 
TDDはじめる前に
TDDはじめる前にTDDはじめる前に
TDDはじめる前に
 
RSpec Performance Turning
RSpec Performance TurningRSpec Performance Turning
RSpec Performance Turning
 
ノンプログラマのためのSelenium de DDTはじめの一歩
ノンプログラマのためのSelenium de DDTはじめの一歩ノンプログラマのためのSelenium de DDTはじめの一歩
ノンプログラマのためのSelenium de DDTはじめの一歩
 
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
 
はじめてのテスト技法
はじめてのテスト技法はじめてのテスト技法
はじめてのテスト技法
 
Test-Driven Development for [Embedded] C by James Grenning at Agile Japan 2013
Test-Driven Development for [Embedded] C by James Grenning at Agile Japan 2013Test-Driven Development for [Embedded] C by James Grenning at Agile Japan 2013
Test-Driven Development for [Embedded] C by James Grenning at Agile Japan 2013
 
Stac2013 opening-koukai
Stac2013 opening-koukaiStac2013 opening-koukai
Stac2013 opening-koukai
 
「Agileごっこ」で終わらせないために(仮)
「Agileごっこ」で終わらせないために(仮) 「Agileごっこ」で終わらせないために(仮)
「Agileごっこ」で終わらせないために(仮)
 
自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips
自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips
自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips
 
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
 
Fuel php活用事例
Fuel php活用事例Fuel php活用事例
Fuel php活用事例
 
Et west テスト自動化_公開版
Et west テスト自動化_公開版Et west テスト自動化_公開版
Et west テスト自動化_公開版
 
事業会社で働くエンジニアのマインドセット - DevLOVE関西
事業会社で働くエンジニアのマインドセット - DevLOVE関西事業会社で働くエンジニアのマインドセット - DevLOVE関西
事業会社で働くエンジニアのマインドセット - DevLOVE関西
 
JIRA Agileを活用したアジャイル開発実践事例 #AUGJ
JIRA Agileを活用したアジャイル開発実践事例 #AUGJJIRA Agileを活用したアジャイル開発実践事例 #AUGJ
JIRA Agileを活用したアジャイル開発実践事例 #AUGJ
 
NTTデータにおけるScrumの組織的導入
NTTデータにおけるScrumの組織的導入NTTデータにおけるScrumの組織的導入
NTTデータにおけるScrumの組織的導入
 
TDDをやってみた
TDDをやってみたTDDをやってみた
TDDをやってみた
 

More from Go Sueyoshi (a.k.a sue445)

gemの複数バージョンカジュアルテスト #shibuyarb
gemの複数バージョンカジュアルテスト #shibuyarbgemの複数バージョンカジュアルテスト #shibuyarb
gemの複数バージョンカジュアルテスト #shibuyarbGo Sueyoshi (a.k.a sue445)
 
プリキュアのRuby実装の紹介 (2015 ver) #MeguroStartup
プリキュアのRuby実装の紹介 (2015 ver)  #MeguroStartupプリキュアのRuby実装の紹介 (2015 ver)  #MeguroStartup
プリキュアのRuby実装の紹介 (2015 ver) #MeguroStartupGo Sueyoshi (a.k.a sue445)
 
ドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkinsドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkinsGo Sueyoshi (a.k.a sue445)
 
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarb
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarbitamae + Serverspecで テスト駆動インフラやってみた #shibuyarb
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarbGo Sueyoshi (a.k.a sue445)
 
サザエ実況を支える技術 #sst_history
サザエ実況を支える技術 #sst_historyサザエ実況を支える技術 #sst_history
サザエ実況を支える技術 #sst_historyGo Sueyoshi (a.k.a sue445)
 
Paraductをエクストリームリリースします #428rk01
Paraductをエクストリームリリースします #428rk01Paraductをエクストリームリリースします #428rk01
Paraductをエクストリームリリースします #428rk01Go Sueyoshi (a.k.a sue445)
 
GemoireというYARDホスティングアプリを作った #shibuyarb
GemoireというYARDホスティングアプリを作った #shibuyarbGemoireというYARDホスティングアプリを作った #shibuyarb
GemoireというYARDホスティングアプリを作った #shibuyarbGo Sueyoshi (a.k.a sue445)
 
Githubエコシステムを活用したイマドキの趣味開発
Githubエコシステムを活用したイマドキの趣味開発Githubエコシステムを活用したイマドキの趣味開発
Githubエコシステムを活用したイマドキの趣味開発Go Sueyoshi (a.k.a sue445)
 
プリキュアのRuby実装の紹介 #RubyHiroba
プリキュアのRuby実装の紹介 #RubyHirobaプリキュアのRuby実装の紹介 #RubyHiroba
プリキュアのRuby実装の紹介 #RubyHirobaGo Sueyoshi (a.k.a sue445)
 
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hack
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hackプリキュアハッカソン2 参加者アンケート集計結果 #cure_hack
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hackGo Sueyoshi (a.k.a sue445)
 
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコムResemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコムGo Sueyoshi (a.k.a sue445)
 
Rubyでプリキュアを作った #cure_advent #shibuyarb
Rubyでプリキュアを作った #cure_advent #shibuyarbRubyでプリキュアを作った #cure_advent #shibuyarb
Rubyでプリキュアを作った #cure_advent #shibuyarbGo Sueyoshi (a.k.a sue445)
 

More from Go Sueyoshi (a.k.a sue445) (20)

ドリコムのインフラCI
ドリコムのインフラCIドリコムのインフラCI
ドリコムのインフラCI
 
gemの複数バージョンカジュアルテスト #shibuyarb
gemの複数バージョンカジュアルテスト #shibuyarbgemの複数バージョンカジュアルテスト #shibuyarb
gemの複数バージョンカジュアルテスト #shibuyarb
 
プリキュアのRuby実装の紹介 (2015 ver) #MeguroStartup
プリキュアのRuby実装の紹介 (2015 ver)  #MeguroStartupプリキュアのRuby実装の紹介 (2015 ver)  #MeguroStartup
プリキュアのRuby実装の紹介 (2015 ver) #MeguroStartup
 
ドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkinsドリコムを支える課金ライブラリを支えるJenkins
ドリコムを支える課金ライブラリを支えるJenkins
 
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarb
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarbitamae + Serverspecで テスト駆動インフラやってみた #shibuyarb
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarb
 
サザエ実況を支える技術 #sst_history
サザエ実況を支える技術 #sst_historyサザエ実況を支える技術 #sst_history
サザエ実況を支える技術 #sst_history
 
プリキュアのRuby実装の紹介 #tqrk08
プリキュアのRuby実装の紹介 #tqrk08プリキュアのRuby実装の紹介 #tqrk08
プリキュアのRuby実装の紹介 #tqrk08
 
Paraductをエクストリームリリースします #428rk01
Paraductをエクストリームリリースします #428rk01Paraductをエクストリームリリースします #428rk01
Paraductをエクストリームリリースします #428rk01
 
GemoireというYARDホスティングアプリを作った #shibuyarb
GemoireというYARDホスティングアプリを作った #shibuyarbGemoireというYARDホスティングアプリを作った #shibuyarb
GemoireというYARDホスティングアプリを作った #shibuyarb
 
Githubエコシステムを活用したイマドキの趣味開発
Githubエコシステムを活用したイマドキの趣味開発Githubエコシステムを活用したイマドキの趣味開発
Githubエコシステムを活用したイマドキの趣味開発
 
プリキュアのRuby実装の紹介 #RubyHiroba
プリキュアのRuby実装の紹介 #RubyHirobaプリキュアのRuby実装の紹介 #RubyHiroba
プリキュアのRuby実装の紹介 #RubyHiroba
 
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hack
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hackプリキュアハッカソン2 参加者アンケート集計結果 #cure_hack
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hack
 
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコムResemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
 
Rubyでプリキュアを作った #cure_advent #shibuyarb
Rubyでプリキュアを作った #cure_advent #shibuyarbRubyでプリキュアを作った #cure_advent #shibuyarb
Rubyでプリキュアを作った #cure_advent #shibuyarb
 
JavaScript TDD紹介 #agilesamurai
JavaScript TDD紹介 #agilesamuraiJavaScript TDD紹介 #agilesamurai
JavaScript TDD紹介 #agilesamurai
 
First step of Rails Contribute‎ #shibuyarb
First step of Rails Contribute‎ #shibuyarbFirst step of Rails Contribute‎ #shibuyarb
First step of Rails Contribute‎ #shibuyarb
 
勉強会を始めるまで #java_ja
勉強会を始めるまで #java_ja勉強会を始めるまで #java_ja
勉強会を始めるまで #java_ja
 
アニメ実況実践入門
アニメ実況実践入門アニメ実況実践入門
アニメ実況実践入門
 
技術書へのいざない
技術書へのいざない技術書へのいざない
技術書へのいざない
 
ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料
 

社内テストファースト勉強会

  • 1. Copyright Drecom Co., Ltd. All Rights Reserved. 社内テストファースト勉強会 2015/01/15 @sue445
  • 2. Copyright Drecom Co., Ltd. All Rights Reserved. sue445 @ドリコム ● ツール、ライブラリ、課金周り、サーバサイド全般 ○ ドリコムを支える中間ポイントシステム - くりにっ き http://sue445.hatenablog. com/entry/2014/12/01/000000 ● PO (Precure Ojisan) ● RubyKaja 2014 自己紹介
  • 3. Copyright Drecom Co., Ltd. All Rights Reserved. ワタシハ テスト チョットデキル https://suzuri.jp/sue445/62900/t-shirt/s/brightgreen
  • 4. Copyright Drecom Co., Ltd. All Rights Reserved. ● テストの分類 ● テスト駆動開発(Test Driven Development)とは ● テストファーストとは ● テストファースト、自動テストを導入するという事について ● テストを書くべきところ、そうでないところ ● 僕がテストファーストをする理由 Agenda
  • 5. Copyright Drecom Co., Ltd. All Rights Reserved. http://www.slideshare.net/t_wada/the-spirit-of-tdd/14 テストの分類
  • 6. Copyright Drecom Co., Ltd. All Rights Reserved. http://www.slideshare.net/t_wada/the-spirit-of-tdd/14 テストの分類 開発者視点でのテスト ・ユニットテスト:プログラムの正しい 振る舞いをコードで示す
  • 7. Copyright Drecom Co., Ltd. All Rights Reserved. http://www.slideshare.net/t_wada/the-spirit-of-tdd/14 テストの分類 顧客(弊社だとPOやディレクターな ど)が望んでいる機能を満たしている かのテスト
  • 8. Copyright Drecom Co., Ltd. All Rights Reserved. http://www.slideshare.net/t_wada/the-spirit-of-tdd/14 テストの分類 ・開発者も顧客も想定していないよう なバグ ・セキュリティ(XSS, SQLインジェク ションなど) ・パフォーマンス(クソクエリ、レスポン スが遅いとか) ・チートの穴 を防ぐ
  • 9. Copyright Drecom Co., Ltd. All Rights Reserved. http://www.slideshare.net/t_wada/the-spirit-of-tdd/14 テストの分類 今日話すのは主にこれ
  • 10. Copyright Drecom Co., Ltd. All Rights Reserved. http://www.slideshare.net/t_wada/the-spirit-of-tdd/26 テスト駆動開発(Test Driven Development)とは
  • 11. Copyright Drecom Co., Ltd. All Rights Reserved. http://www.slideshare.net/t_wada/the-spirit-of-tdd/27 テスト駆動開発(Test Driven Development)とは
  • 12. Copyright Drecom Co., Ltd. All Rights Reserved. ● プロダクトコードを書くよりも前にテストコード を書くこと ● TDD ≒ テストファースト ○ RedとGreenを細かいサイクルで回してい れば後にテスト書いてもTDD。(だと思う) ○ 卵が先か鶏が先かの些細な違い ○ 後からテストを書いてもいいじゃない、人 間だもの テストファーストとは
  • 13. Copyright Drecom Co., Ltd. All Rights Reserved. ● テストファースト、自動テストを導入するという 事について(@社内勉強会) ○ http://www.slideshare.net/KyonMm/ss- 41785717 詳しいこと
  • 14. Copyright Drecom Co., Ltd. All Rights Reserved. 全てのコードにテストを書く必要はない ● 半年以上メンテする必要があるコードはテストコードが必須 ○ 半年以上前の自分は他人 ● 逆に言えば使い捨てのコードに対しては不要(重要度による が) ○ 使うのが1回だけだとテストコードを書くコストの方がでか くなるので割に合わない ○ 経験上半年くらいで最初に書いたテストの元がとれるよう になる ● 機械でチェックするのが困難なものは不要(というか無理) ○ デザイン崩れとか目で見ないと分からない ● どこから書くか迷ったら書きやすいところから書く ○ Model, Utility テストを書くべきところ、そうでないところ
  • 15. Copyright Drecom Co., Ltd. All Rights Reserved. 僕がテストファーストをする理由
  • 16. Copyright Drecom Co., Ltd. All Rights Reserved. 楽をするため
  • 17. Copyright Drecom Co., Ltd. All Rights Reserved. テストを書くことを前提としていないコードに対して後から無理矢 理テストを注入する方が難しい(と思う) ● 例:テストが一切無いレガシーコードのリファクタリング ○ 規模が大きな既存のプロダクトコードをなるべく変更しな いようにピンポイントにテストコードだけ書くのは難しい ○ 爆弾処理なみの慎重さが要求される ● 後からテストを書く方が難しいので先にテストを書く ○ →簡単なので楽をできる テストを先に書く方が楽
  • 18. Copyright Drecom Co., Ltd. All Rights Reserved. テストコードを先に書くことで、何を作りたいかを明確にできる ● テストコードを書く時には「入力(引数)」「出力(戻り値)」「処 理の概要」が決まってないと書けない ○ ある意味設計と変わらない ○ 実装する前に設計することを自分自身に強いる ● テストコードを書いてると PullRequest や MergeRequest で どこまで考慮して実装してるのかをレビュアーに伝えやすく なる ● 認識の齟齬で後から大きく手戻りするくらいならテストファー ストを通して設計をしっかり固めた方が楽 テストコードは動く仕様書
  • 19. Copyright Drecom Co., Ltd. All Rights Reserved. ● TDDしてれば自然と(カバレッジだけなら)網羅性の高いテス トは書ける ○ 「カバレッジが高いこと」と「意味のあるテスト」をしてるか は別問題 ● ある程度ユニットテストが整備されていると常にリグレッション (再帰)テストを流せるので、凡ミスがすぐ見つかる ○ 常日頃から命綱を編んでおく ○ 何かあってから命綱を編むのは手遅れ ● テストが多いとCIもやりやすくなる ○ Jenkins動かすにしてもテストが少ないと効果は薄い ● TDDだけで全部の問題は解決できない ○ TDDそのものよりもその副産物の方が重要 TDDは銀の弾丸ではない
  • 20. Copyright Drecom Co., Ltd. All Rights Reserved. ● テストファースト、自動テストを導入するという事について(@ 社内勉強会) ○ http://www.slideshare.net/KyonMm/ss-41785717 ● テストとリファクタリングに関する深い方法論 #wewlc_jp ○ http://www.slideshare.net/KyonMm/wewlcjp/32 ● 「いまさら聞けないTDD/BDD超入門」最新記事一覧 - ITmedia Keywords ○ http://www.atmarkit.co.jp/ait/kw/tdd_bdd.html 参考URL
  • 21. Copyright Drecom Co., Ltd. All Rights Reserved. ● 基本から学ぶソフトウェアテスト ○ http://www.amazon.co.jp/dp/4822281132 ● 知識ゼロから学ぶソフトウェアテスト 【改訂版】 ○ http://www.amazon.co.jp/dp/4798130605 ● ソフトウェアテスト293の鉄則 ○ http://www.amazon.co.jp/dp/482228154X ● ソフトウェアテスト技法ドリル―テスト設計の考え方と実際 ○ http://www.amazon.co.jp/dp/4817193603 参考書籍
  • 22. Copyright Drecom Co., Ltd. All Rights Reserved. ● TDD のこころ @ OSH2014 ○ http://www.slideshare.net/t_wada/osh2014-sprit- of-tdd ○ 47枚目以降にユースケース毎のおすすめ書籍が載って る ● ソフトウェアテストの書籍まとめ 2013 #SWTestAdvent — う さぎ組 ○ http://kyon-mm.bitbucket. org/blog/html/2013/12/27/swtest_books.html 参考書籍