S is For Spec at RubyKansai25
-
Upload
shintaro-kakutani -
Category
Technology
-
view
2.868 -
download
0
description
Transcript of S is For Spec at RubyKansai25
![Page 1: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/1.jpg)
スはスペックのス~RSpecによるテスト駆動開発の実演~
第25回Ruby@関西; 2008-4-12(土)
角谷 信太郎“S is for Spec”:Test Driven Development w/ RSpec
日本Rubyの会(株)永和システムマネジメント [email protected]
KAKUTANI Shintaro; Eiwa System Management,Inc.; Nihon Ruby-no-kai
![Page 2: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/2.jpg)
角谷 信太郎✓ (株)永和システムマネジメント
✓ テスト駆動開発者✓ 日本Rubyの会理事✓ http://kakutani.com
![Page 3: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/3.jpg)
![Page 4: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/4.jpg)
よろしくお願いします
![Page 5: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/5.jpg)
テスト・クラブ
TEST CLUB
Red, Green, Refactoring
![Page 6: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/6.jpg)
諸君 テスト・クラブへようこそ
![Page 7: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/7.jpg)
テスト・クラブ 第1のルール
![Page 8: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/8.jpg)
クラブのことを口外するな
![Page 9: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/9.jpg)
1. クラブのことを口外するな2. クラブのことを口外するな3. “ちょっといいかな”の声で ドライバとナビゲータは交代4. コーディングは1対1のペア5. いちどに1つのテストケース6. メッセとTwitterは切る7. 書くテストに制限はない
![Page 10: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/10.jpg)
8番目、最後のルール
![Page 11: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/11.jpg)
“部員は入会した初日に――”
![Page 12: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/12.jpg)
“必ずテストを書く”
![Page 13: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/13.jpg)
テスト・クラブ
TEST CLUB
Red, Green, Refactoring
![Page 14: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/14.jpg)
本日の目的
![Page 15: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/15.jpg)
テストへの認識を変える
![Page 16: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/16.jpg)
✓ 他人からやらされる✓ あとで書く✓ つらい
今日までの”テスト”
![Page 17: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/17.jpg)
✓ 自分からやる✓ さきに書く✓ たのしい
明日からの”テスト”
![Page 18: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/18.jpg)
1. テスト駆動開発(TDD)の ポイントを知る2. Ruby用のツールである RSpecを簡単に紹介3. RSpecでTDDの実演
本日のお品書き
![Page 19: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/19.jpg)
今日のまとめ✓ TDDは設計技法であり、 開発の進め方である✓ いちどにひとつずつ✓ 不安をテストで表現する✓ リズムとフィードバック
![Page 20: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/20.jpg)
テスト駆動開発Test Driven Development
![Page 21: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/21.jpg)
✓ 1つのゴール✓ 1つのテーマ✓ 2つの主張✓ 2つのルール✓ 3つのモード✓ 4つのモード
![Page 22: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/22.jpg)
1つのゴール
![Page 23: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/23.jpg)
TDD by Example
![Page 24: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/24.jpg)
偉大な書籍は偉大な1行から
はじまる
![Page 25: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/25.jpg)
Clean code that works, in Ron Jeffries’ pithy phrase, is
the goal of Test-Driven Development(TDD).
「動作するきれいなコード」、
このRon Jefferiesの簡潔な言葉こそが
TDDのゴールである。
![Page 26: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/26.jpg)
動作するきれいなコード“Clean code that works”
![Page 27: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/27.jpg)
1つのテーマ
![Page 28: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/28.jpg)
“The translation of a feeling into a test is a
common theme of TDD.”
感情をテストにすることが、TDDのテーマである。
![Page 29: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/29.jpg)
感情をテストにする
![Page 30: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/30.jpg)
✓ 不安だ✓ 何かがおかしい✓ これでいい✓ 退屈だ✓ テストを構造化する✓ 書くのを止める
感情をテストにする
![Page 31: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/31.jpg)
2つの主張
![Page 32: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/32.jpg)
1. 設計の技法2. 開発の進め方
TDDの2つの主張:TDDは、
![Page 33: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/33.jpg)
テスト駆動開発Test Driven Development
![Page 34: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/34.jpg)
(1)
![Page 35: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/35.jpg)
設計の技法
![Page 36: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/36.jpg)
ソフトウェア設計とは何か?What is Software Design?
By Jack W. Reeves
![Page 37: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/37.jpg)
村上 雅章さんによる翻訳
http://www.biwa.ne.jp/~mmura/SoftwareDevelopment/WhatIsSoftwareDesignJ.html
![Page 38: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/38.jpg)
ソフトウェア設計とは何か?
✓ 設計: ソースコード✓ 製造: ビルド
![Page 39: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/39.jpg)
コーディングは設計であり、テスティングとデバッギングも設計の一部であり、私たちが一般的にソフトウェア設計と呼んでいるものもやはり設計の一部なのです。
![Page 40: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/40.jpg)
ソフトウェア設計はコーディングが完了し、「かつ」テストされるまでは完璧にならないのです。そして、テスティングは設計の検証と洗練を行うプロセスにおける礎となるものです。
![Page 41: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/41.jpg)
設計の技法
![Page 42: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/42.jpg)
(2)
![Page 43: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/43.jpg)
開発の進め方
![Page 44: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/44.jpg)
テストの分類✓ Developer Testing✓ 開発者が行う、開発促進のためのテスト
✓ Customer Testing✓ お客様と機能の確認のために用いる、 進捗管理のためのテスト
✓ QA Testing✓ 品質保証のためのテスト
![Page 45: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/45.jpg)
Developer Testing✓ プログラマの、✓ プログラマによる、✓ プログラマのための、✓ プログラムとして書く、✓ プログラミングを進めていくための、✓ テスト
![Page 46: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/46.jpg)
開発の進め方
![Page 47: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/47.jpg)
テスト駆動開発Test Driven Development
![Page 48: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/48.jpg)
クは駆動のクD is for Driven
![Page 49: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/49.jpg)
1. 設計の技法2. 開発の進め方
TDDの2つの主張:TDDは、
![Page 50: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/50.jpg)
2つのルール
![Page 51: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/51.jpg)
1. テストに失敗し たときだけコー ドを書く2. 重複を取り除く
![Page 52: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/52.jpg)
3つのモード
![Page 53: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/53.jpg)
✓ Red✓ テストに失敗している状態
✓ Green✓ コードが動作している状態
✓ Refactoring✓ コードの意味を変えずにきれいにする
2つのルールが導くもの
![Page 54: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/54.jpg)
終了花畑
動かない
きれい
汚ない
動く
現実理想
GREEN
REDRefactoring
![Page 55: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/55.jpg)
いま、どのモードなのかを意識するのが大事
![Page 56: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/56.jpg)
4つのモード
![Page 57: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/57.jpg)
3つのモード
![Page 58: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/58.jpg)
RED
GREEN
Refactoring
![Page 59: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/59.jpg)
3つのモードで明示されていないモードを追加
![Page 60: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/60.jpg)
The Art of Agile Development
![Page 61: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/61.jpg)
Think
RED
GREEN
Refactoring
![Page 62: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/62.jpg)
TDDのマントラ
![Page 63: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/63.jpg)
シンクレッドグリーンリファクタシンクレッドグリーンリファクタシンクレッドグリーンリファクタシンクレッドグリーンリファクタシンクレッドグリーンリファクタシンクレッドグリーンリファクタシ
![Page 64: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/64.jpg)
✓ 1つのゴール✓ 1つのテーマ✓ 2つの主張✓ 2つのルール✓ 3つのモード✓ 4つのモード
![Page 65: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/65.jpg)
今日のまとめ✓ TDDは設計技法であり、 開発の進め方である✓ いちどにひとつずつ✓ 不安をテストで表現する✓ リズムとフィードバック
![Page 66: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/66.jpg)
RSpec
![Page 67: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/67.jpg)
RSpecとは✓「テスト」が設計であることを強調するテスティングフレームワーク✓ Rubyを使って、プログラムの振舞の本質に集中できる書き方を可能にしている
![Page 69: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/69.jpg)
Rubyist Magazine 0021号“スはスペックのス”(第1回)
http://jp.rubyist.net/magazine/?0021-Rspec
![Page 70: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/70.jpg)
Rubyist Magazine 0023号“スはスペックのス”(第2回)
http://jp.rubyist.net/magazine/?0023-Rspec
![Page 71: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/71.jpg)
RSpecのインストール
$ gem install rspec
![Page 72: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/72.jpg)
スペックファイルの構造describe Class, "コンテキスト" do before(:each) do # コンテキストのお膳立て end
it "期待する振舞いの名前" do # ここに期待する振舞いを書く endend
![Page 73: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/73.jpg)
簡単な例describe Array, "with some entries" do before(:each) do @array = %w(A B C) end
it "should not be nil" do @array.should_not be_nil end
it "should last element is 'C'" do @array.last.should == 'C' endend
![Page 74: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/74.jpg)
実行(-cオプション)$ spec -c array_spec.rb..
Finished in 0.00812 seconds
2 examples, 0 failures
![Page 75: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/75.jpg)
期待する振舞の書き方
@array.should_not be_nil# @array.nil? がfalseであることを期待
@array.last.should == 'C'# @array.last が 'C' と等しいことを期待
✓ Object#should(matcher)
✓ Object#should_not(matcher)
![Page 76: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/76.jpg)
さまざまなマッチャ✓ 演算子マッチャ✓ ==, ===, <, <=, =~, >, >=✓ ビルトインのマッチャ✓ change,raise_error, satisfy, be_close...✓ be_xxxマッチャ✓ be_true / be_false✓ have_xxx マッチャ✓ ユーザ定義のマッチャ
![Page 77: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/77.jpg)
続きは
![Page 78: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/78.jpg)
“るびま”で!
http://jp.rubyist.net/magazine/
![Page 79: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/79.jpg)
実演
![Page 80: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/80.jpg)
ボウリングのスコア算出
![Page 81: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/81.jpg)
Bowling Game Kata
Object Mentor, Inc.
fitnesse.orgCopyright 2005 by Object Mentor, Inc
All copies must retain this page unchanged.
www.junit.org
www.objectmentor.com
blog.objectmentor.com
The Bowling Game Kataby Robert C.Martin(Uncle Bob)
http://butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata
![Page 83: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/83.jpg)
✓ 空手の「型」✓ 単純な定型を反復✓ 素振り✓ カラダでおぼえる
コード=カタ
http://codekata.pragprog.com/
![Page 84: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/84.jpg)
ボウリングのスコア✓ 1フレームで2投するのが基本✓ 1ゲームは10フレーム✓ ストライクは、次の2投をボーナス加算✓ スペアは、次の1投をボーナス加算✓ 10フレーム目で10ピン倒せば 最大で3投できる
![Page 85: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/85.jpg)
今回の仕様
✓ 1ゲーム(10フレーム、最大21投)の 投球をすべて記録してから、✓ 最後にまとめてスコアを算出する
![Page 86: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/86.jpg)
4
5
54
14
6
29
5
49 60
10
61
7
77
6
97 117
2 6
133
19
受入テストケース
1,4,4,5,6,4,5,5, 10, 0,1,7,3,6,4,10,2,8,6
![Page 87: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/87.jpg)
使用するツール✓ Ruby 1.8.6 p114✓ RSpec 1.1.3✓ CarbonEmacs 22.1.50.1✓ ZenTest 3.9.2✓ AutoTestを使いたい✓ autotest.el
![Page 88: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/88.jpg)
作戦1. スコアを集計する2. ストライクの場合のボーナス3. パーフェクトゲーム4. スペアの場合のボーナス5. 受入テスト
![Page 89: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/89.jpg)
今日のまとめ✓ TDDは設計技法であり、 開発の進め方である✓ いちどにひとつずつ✓ 不安をテストで表現する✓ リズムとフィードバック
![Page 90: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/90.jpg)
✓ “他人からやらされる”から “自分からやる”へ✓ “あとで書く”から “さきに書く”へ✓ “つらい”から“たのしい”へ
テストへの認識を変える
![Page 91: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/91.jpg)
参考文献
![Page 92: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/92.jpg)
参考文献1. テスト駆動開発2. リファクタリング3. オブジェクト設計4. デザインパターン
![Page 93: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/93.jpg)
テスト駆動開発
![Page 94: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/94.jpg)
リファクタリング
![Page 95: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/95.jpg)
オブジェクト設計
![Page 96: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/96.jpg)
デザインパターン
![Page 97: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/97.jpg)
ご清聴ありがとうございました
![Page 98: S is For Spec at RubyKansai25](https://reader034.fdocuments.in/reader034/viewer/2022051817/548114b9b4795950578b4823/html5/thumbnails/98.jpg)
use Rspec.
Tyler Durden says...