SlideShare a Scribd company logo
TDD Boot Camp Tokyo
for C++ 2014-01 デモ
@imagire
お品書き
• お題説明
• 環境説明
• 作業手順
お題説明
• FizzBuzz

– 1から100までの数字を数える
•
•
•
•

3でも5でも割り切れる数字の際は “Fizz Buzz”
3で割り切れる数字の際は “Fizz”
5で割り切れる数字の際は “Buzz”
それ以外は数字をそのまま発言

– 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz,
13, 14, Fizz Buzz, 16, 17, …
Microsoft 単体テストフレームワーク
アプリケーション

.exe
Microsoft 単体テストフレームワーク
アプリケーション

呼び出し

.exe

コアロジック

応答

.lib

呼び出し

単体テスト
プロジェクト
Visual Studio から
呼べる!
.dll

応答

テスト対象のクラスは
ライブラリとして呼び
出せる形にしてテスト
進め方
•
•
•
•
•
•

アプリケーションを作成
テストプロジェクトを追加
ライブラリのプロジェクトを追加
テストプロジェクトとライブラリを紐づけ
アプリケーションとライブラリを紐づけ
TDDのループを回す
– テストを書く
– テストが成功するように実装
– リファクタリング
方針の検討
• 最終出力だけを比較するのは不適当そう

– 表示結果 = ” 1, 2, Fizz, 4, …, 98, Fizz, Buzz” ?

• まちがえそうもないところはテスト対象と
しない
– 単純な固定回数の loop のカウントは優先度低
for (int i = 1; i <= 100; i++){
string result = FizzBuzz::Calc(i);
cout << result;
こんな関数のテストが適当そう
}
進め方
•
•
•
•
•
•

アプリケーションを作成
テストプロジェクトを追加
ライブラリのプロジェクトを追加
テストプロジェクトとライブラリを紐づけ
アプリケーションとライブラリを紐づけ
TDDのループを回す
– テストを書く
– テストが成功するように実装
– リファクタリング
Win32 コンソール アプリケーションの作成
TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料
TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料
進め方
•
•
•
•
•
•

アプリケーションを作成
テストプロジェクトを追加
ライブラリのプロジェクトを追加
テストプロジェクトとライブラリを紐づけ
アプリケーションとライブラリを紐づけ
TDDのループを回す
– テストを書く
– テストが成功するように実装
– リファクタリング
TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料
ネイティブ単体テスト プロジェクトの追加

テストっぽいプロジェクト名を付けよう
テスト エクスプローラーを開けてみよう
TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料
テストの実行
テストコードを編集してみる

実行されるテストが置かれるクラス
実行されるテスト関数
失敗するテストコードの作成
失敗してみる
進め方
•
•
•
•
•
•

アプリケーションを作成
テストプロジェクトを追加
ライブラリのプロジェクトを追加
テストプロジェクトとライブラリを紐づけ
アプリケーションとライブラリを紐づけ
TDDのループを回す
– テストを書く
– テストが成功するように実装
– リファクタリング
TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料
ライブラリっぽいプロジェクト名を付けよう
TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料
進め方
•
•
•
•
•
•

アプリケーションを作成
テストプロジェクトを追加
ライブラリのプロジェクトを追加
テストプロジェクトとライブラリを紐づけ
アプリケーションとライブラリを紐づけ
TDDのループを回す
– テストを書く
– テストが成功するように実装
– リファクタリング
テストコードを開いた状態でプロパティの設定と選択
共通プロパティで参照の追加
テストプロジェクトの参照にライブラリのプロジェクトを追加
(ライブラリが更新されるとテストのプロジェクトもビルドしなおす)
構成プロパティからインクルードディレクトリの追加

この後で作成するプロジェクトのインクルードフォルダ
ライブラリディレクトリも追加
インクルードディレクトリの作成
その中にヘッダの作成

テストされるクラスの
ヘッダーファイルを置く
最低限の実装を行う
テストが通るのを確認
リファクタリング
(実装コードをcppファイルに書く)

ライブラリプロジェクト
を右クリックしてファイ
ルの追加
TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料
ライブラリプロジェクトにもパスを通す
テストプロジェクトと同じパスを追加
コードを書きかえる
テスト結果に変更がないことを確認
進め方
•
•
•
•
•
•

アプリケーションを作成
テストプロジェクトを追加
ライブラリのプロジェクトを追加
テストプロジェクトとライブラリを紐づけ
アプリケーションとライブラリを紐づけ
TDDのループを回す
– テストを書く
– テストが成功するように実装
– リファクタリング
アプリケーションプロジェクトにも
ライブラリの情報を追加
ライブラリの参照の追加
インクルードディレクトリの追加
ライブラリの追加
リンカーの入力にライブラリを追加
アプリケーションコードの作成
アプリケーションの実行
進め方
•
•
•
•
•
•

アプリケーションを作成
テストプロジェクトを追加
ライブラリのプロジェクトを追加
テストプロジェクトとライブラリを紐づけ
アプリケーションとライブラリを紐づけ
TDDのループを回す
– テストを書く
– テストが成功するように実装
– リファクタリング
進め方
•
•
•
•
•
•

アプリケーションを作成
テストプロジェクトを追加
ライブラリのプロジェクトを追加
テストプロジェクトとライブラリを紐づけ
アプリケーションとライブラリを紐づけ
TDDのループを回す
– テストを書く
– テストが成功するように実装
– リファクタリング
テストコードの追加
テストの失敗を確認
進め方
•
•
•
•
•
•

アプリケーションを作成
テストプロジェクトを追加
ライブラリのプロジェクトを追加
テストプロジェクトとライブラリを紐づけ
アプリケーションとライブラリを紐づけ
TDDのループを回す
– テストを書く
– テストが成功するように実装
– リファクタリング
テストが通る実装を行う

やりすぎかも?
3の時だけ特別な値を返すような実装を
最初はした方が良いかもね
テストが通ることを確認
アプリケーションも実行
進め方
•
•
•
•
•
•

アプリケーションを作成
テストプロジェクトを追加
ライブラリのプロジェクトを追加
テストプロジェクトとライブラリを紐づけ
アプリケーションとライブラリを紐づけ
TDDのループを回す
– テストを書く
– テストが成功するように実装
– リファクタリング
進め方
•
•
•
•
•
•

アプリケーションを作成
テストプロジェクトを追加
ライブラリのプロジェクトを追加
テストプロジェクトとライブラリを紐づけ
アプリケーションとライブラリを紐づけ
TDDのループを回す
– テストを書く
– テストが成功するように実装
– リファクタリング
テストコードの追加
テストコードの失敗の確認
コードの修正
テストが通ることの確認
アプリケーションも確認
進め方
•
•
•
•
•
•

アプリケーションを作成
テストプロジェクトを追加
ライブラリのプロジェクトを追加
テストプロジェクトとライブラリを紐づけ
アプリケーションとライブラリを紐づけ
TDDのループを回す
– テストを書く
– テストが成功するように実装
– リファクタリング
テストコードの追加
テストコードの失敗の確認
コードの修正
テストが通ることの確認
アプリケーションも実行
進め方
•
•
•
•
•
•

アプリケーションを作成
テストプロジェクトを追加
ライブラリのプロジェクトを追加
テストプロジェクトとライブラリを紐づけ
アプリケーションとライブラリを紐づけ
TDDのループを回す
– テストを書く
– テストが成功するように実装
– リファクタリング
コードをきれいにする
テストコードもきれいにする
進め方
•
•
•
•
•
•

アプリケーションを作成
テストプロジェクトを追加
ライブラリのプロジェクトを追加
テストプロジェクトとライブラリを紐づけ
アプリケーションとライブラリを紐づけ
TDDのループを回す
– テストを書く
– テストが成功するように実装
– リファクタリング
テストコードの追加
テストコードの失敗の確認
コードの修正
アプリケーションの確認
気になるところはテスト
気になるところまでokなら完了

More Related Content

PPTX
20160422_lombokについて
PDF
LinuxでZFSを使ってみた
PDF
TDDを実践してわかったTDDつまづくあるあると自分なりの乗り越え方まとめ
PDF
TDDのこれまで、そしてこれから
PDF
くじびきイテレーション
PDF
くじびきイテレーション for アジャイルサムライ横浜道場
PDF
実践的ふりかえり (SAPPORO CEDEC 2014)
PDF
TDD Boot Camp Tokyo for C++ 2014-01 補講
20160422_lombokについて
LinuxでZFSを使ってみた
TDDを実践してわかったTDDつまづくあるあると自分なりの乗り越え方まとめ
TDDのこれまで、そしてこれから
くじびきイテレーション
くじびきイテレーション for アジャイルサムライ横浜道場
実践的ふりかえり (SAPPORO CEDEC 2014)
TDD Boot Camp Tokyo for C++ 2014-01 補講

Viewers also liked (20)

PDF
The SGGX Microflake Distribution 実装
PDF
デザインパターンとともに学ぶオブジェクト指向のこころ
PDF
ハトでもわかるオブジェクト指向
PPTX
ゲームテストへの新しいアプローチ
PDF
GDC 2015 でのハイエンドグラフィックス
PPTX
SGGXマイクロフレーク分布
PDF
無料な継続的出版システム ~ t-ceremony ~
PDF
(人狼知能合宿)ビデオゲームへの人狼知能の応用について
PDF
@s_ssk13さん向けGitHub入門
PPTX
Cibc lecture imagire
PDF
すべての優先度が1の時の優先順位の決め方
PPTX
PDF
TddでFizzBuzzしてみる in Swift
PDF
Sparknize - Visualize CSV Data With Sparkline In Seconds
PDF
レッツ!Google Apps ScriptでTDD(仮)
PDF
三周遅れのXP
PPTX
部屋とワイシャツと PHPとアジャイル開発と 私
PPTX
ギガビット無線機 Siklu の製品紹介 2016
PDF
SeasarCon 2009 White TDD
PDF
my-spirit-of-tdd
The SGGX Microflake Distribution 実装
デザインパターンとともに学ぶオブジェクト指向のこころ
ハトでもわかるオブジェクト指向
ゲームテストへの新しいアプローチ
GDC 2015 でのハイエンドグラフィックス
SGGXマイクロフレーク分布
無料な継続的出版システム ~ t-ceremony ~
(人狼知能合宿)ビデオゲームへの人狼知能の応用について
@s_ssk13さん向けGitHub入門
Cibc lecture imagire
すべての優先度が1の時の優先順位の決め方
TddでFizzBuzzしてみる in Swift
Sparknize - Visualize CSV Data With Sparkline In Seconds
レッツ!Google Apps ScriptでTDD(仮)
三周遅れのXP
部屋とワイシャツと PHPとアジャイル開発と 私
ギガビット無線機 Siklu の製品紹介 2016
SeasarCon 2009 White TDD
my-spirit-of-tdd
Ad

Similar to TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料 (20)

PDF
Tddのすゝめ
PDF
「TDDはじめて物語」 #tddbc
PDF
Boost.Preprocessorでプログラミングしましょう
PDF
SetucoCMS勉強会 TDD1
KEY
テスト初心者Androiderのためのソフトウェアテスト入門
PDF
プログラミングスキルの獲得について考えてみた
PDF
"Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz...
PDF
TDDワークショップ(第2回)
PDF
AtCoder Beginner Contest 028 解説
PDF
tdd4cpp demo
PDF
C# から java へのプログラム移植で体験したtddの効果は?
PDF
時間をかけて解く FizzBuzz
PDF
TDDの原理 ~ スペック・ファースト
PPT
wankuma #28
PPTX
AtCoder Beginner Contest 034 解説
KEY
テストコードのリファクタリング
PDF
エクストリームエンジニア4
PPTX
Friendlyを使ったwindowsアプリテスト自動化
PDF
「Automated Oracle Creation Support, or: How I Learned to Stop Worrying about ...
PPTX
C++でテスト駆動開発
Tddのすゝめ
「TDDはじめて物語」 #tddbc
Boost.Preprocessorでプログラミングしましょう
SetucoCMS勉強会 TDD1
テスト初心者Androiderのためのソフトウェアテスト入門
プログラミングスキルの獲得について考えてみた
"Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz...
TDDワークショップ(第2回)
AtCoder Beginner Contest 028 解説
tdd4cpp demo
C# から java へのプログラム移植で体験したtddの効果は?
時間をかけて解く FizzBuzz
TDDの原理 ~ スペック・ファースト
wankuma #28
AtCoder Beginner Contest 034 解説
テストコードのリファクタリング
エクストリームエンジニア4
Friendlyを使ったwindowsアプリテスト自動化
「Automated Oracle Creation Support, or: How I Learned to Stop Worrying about ...
C++でテスト駆動開発
Ad

More from Takashi Imagire (17)

PPTX
『ゲームクリエイター育成会議 オフラインミーティングVol.1 「遊びと学びの研究者に聞く、ゲームデザイナーの育て方」』に参加するにあたって自分なりに考えたこと
PDF
2件のHPG18 ショートペーパーの説明
PDF
コミケでのゲームエンジン2017
PDF
同人ゲーム開発におけるゲームエンジンの現状
PPTX
Chroma blur (日本語での説明)
PDF
ソフトウェアだんどり
PPTX
卒業制作でのチームゲーム開発におけるアジャイル手法の段階的適用に関する事例
PPTX
ゲームエンジンの歴史概要
PDF
ゲーム作りから導くスクラムマネージャー
PDF
LeSS Study [2015/Dec./16] 資料(公開版)
PDF
課題探検迷子に捧ぐゲーム流価値の創造術 (公開版)
PDF
スクラム道場.10 朝会 (Game Community Summit 2013)
PDF
第11回 scrum boot camp in NII ワークショップ
PDF
つくる○アジャイル
PPTX
好きなことをしようAction! pub
PDF
CIBC workshop by imagire
PDF
CIBC 事前インストール
『ゲームクリエイター育成会議 オフラインミーティングVol.1 「遊びと学びの研究者に聞く、ゲームデザイナーの育て方」』に参加するにあたって自分なりに考えたこと
2件のHPG18 ショートペーパーの説明
コミケでのゲームエンジン2017
同人ゲーム開発におけるゲームエンジンの現状
Chroma blur (日本語での説明)
ソフトウェアだんどり
卒業制作でのチームゲーム開発におけるアジャイル手法の段階的適用に関する事例
ゲームエンジンの歴史概要
ゲーム作りから導くスクラムマネージャー
LeSS Study [2015/Dec./16] 資料(公開版)
課題探検迷子に捧ぐゲーム流価値の創造術 (公開版)
スクラム道場.10 朝会 (Game Community Summit 2013)
第11回 scrum boot camp in NII ワークショップ
つくる○アジャイル
好きなことをしようAction! pub
CIBC workshop by imagire
CIBC 事前インストール

TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料