More Related Content
PPTX
世界一わかりやすいClean Architecture PDF
PDF
オブジェクト指向プログラミングのためのモデリング入門 PPTX
KEY
PDF
PPTX
PDF
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 - What's hot
PDF
PDF
強いて言えば「集約どう実装するのかな、を考える」な話 PDF
PlaySQLAlchemy: SQLAlchemy入門 PDF
100%Kotlin ORM Ktormを試してみた PDF
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PPT
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」 PDF
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割 PDF
PDF
Similar to C++でテスト駆動開発
PDF
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~ PDF
PPT
PDF
PDF
テスト駆動ゲーム開発をJava scriptで実践 in jscafe20 PPTX
PDF
KEY
PPTX
PDF
C# から java へのプログラム移植で体験したtddの効果は? PDF
Ruby初級者向けレッスン 第46回 ─── Test::Unit PDF
PDF
PDF
xUnit Test Patterns - Chapter11 PDF
KEY
テスト初心者Androiderのためのソフトウェアテスト入門 PDF
xUTP Chapter19 (2). Testcase Class PDF
PDF
PDF
More from Akineko Shimizu
PPTX
PDF
PDF
PDF
PDF
PDF
PDF
PDF
Recently uploaded
PPTX
楽々ナレッジベース「楽ナレ」3種比較 - Dify / AWS S3 Vector / Google File Search Tool PDF
流行りに乗っかるClaris FileMaker 〜AI関連機能の紹介〜 by 合同会社イボルブ PDF
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #2 PDF
20251210_MultiDevinForEnterprise on Devin 1st Anniv Meetup PDF
エンジニアが選ぶべきAIエディタ & Antigravity 活用例@ウェビナー「触ってみてどうだった?Google Antigravity 既存IDEと... PDF
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #1 C++でテスト駆動開発
- 1.
- 2.
自己紹介
HN: 秋猫
Twitter: @akineko
Blog: http://d.hatena.ne.jp/Akineko/ 絶賛更新停滞中!
職歴: ホテル→Webデザイン→ゲームプログラマ
Aimingという会社でオンラインゲームの
サーバープログラマやってます
C++とかアジャイル開発が好きです
- 3.
- 4.
- 5.
- 6.
Google Test
公式:http://code.google.com/p/googletest/
ドキュメントの翻訳: http://opencv.jp/googletestdocs/
名前の通りGoogle製のC++テストライブラリ
豊富なアサーション
http://lovejava.blog85.fc2.com/blog-entry-3.html
豊富な機能
比較的癖がなく使いやすい
- 7.
- 8.
Google Testのフィクスチャ機能
class FooTest: public ::testing::Test {
public:
FooTest() { /* テストスイート単位での初期化処理 */ }
~FooTest() { /* テストスイート単位での終了処理 */ }
protected:
virtual void SetUp() { /* テスト毎の初期化処理 */ }
virtual void TearDown() { /* テスト毎の終了処理 */ }
Foo foo;
}
TEST_F(FooTest, hogeTest) { /* fooを使ったテスト */ }
- 9.
- 10.
- 11.
Cutterのフィクスチャ機能
cut_startup()
テストスイート単位での初期化処理
cut_shutdown()
テストスイート単位での終了処理
cut_setup()
テストケース単位での初期化処理
cut_teardown()
テストケース単位での終了処理
これらをnamespace内に含めればOK
- 12.
その他
CppUnit
http://sourceforge.net/apps/mediawiki/cppunit/index.php
CxxTest
http://cxxtest.com/
QTestLib
http://developer.qt.nokia.com/doc/qt-4.8/qtestlib-manual.html
UnitTest++
http://unittest-cpp.sourceforge.net/
- 13.
モックライブラリ
GoogleMock
http://code.google.com/p/googlemock/
http://opencv.jp/googlemockdocs/index.html
Mockitopp
http://code.google.com/p/mockitopp/
- 14.
- 15.
テスト駆動開発とは?
通常の開発手法
実装を行い、それに対するテストを書く
時にはテストがないものも…
テスト駆動開発
先にテストコードを書き、
そのテストが通る実装を行なっていく開発手法
あくまで開発手法でありテスト手法ではない
- 16.
テスト駆動開発のサイクル
1. テストコードを書く
2. 実行して失敗することを確認する
3. そのテストに成功する最低限の実装コードを書く
4. 実行して成功することを確認する
5. テストが通る状態のままリファクタリングを行う
6. 1〜5をリズムよく繰り返す
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
テストのレベル
単体テスト
1つのクラスや1つの関数など
プログラムの最も小さい部品に対するテスト
単体の定義は言語により様々
Cだと関数1つ、C++だとクラス1つなど
テスト駆動開発で書くテストのレベルは主にこれ
統合テスト
単体を組み合わせた1つのサブシステムに対するテスト
Etc…
- 27.
テストの種別
ブラックボックステスト
要件や仕様に基づいてどのように振る舞うべきかのテスト
内部の実装や構造の知識を必要としない
ホワイトボックステスト
内部の実装や構造に基づいたテスト
if文やcase文などの全ての経路を通っているかなど
プログラミングの知識もある程度必要なもの
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
参考書籍
テスト駆動開発入門
http://amzn.to/wsqgW3
はじめて学ぶソフトウェアのテスト技法
http://amzn.to/zXZz8D
ソフトウェアテスト技法ドリル
http://amzn.to/zVkXLI
マインドマップから始めるソフトウェアテスト
http://amzn.to/w3BSN7
- 41.
参考文献
TDD AdventCalendar jp: 2011
http://atnd.org/events/22027
和田さんの資料
http://www.slideshare.net/t_wada
Twitter・Blog・Google検索いろいろ…
- 42.