SlideShare una empresa de Scribd logo
1 de 21
テスト駆動開発と RSpec スはスペックのス
目次     Rspec とは なぜ Rspec なのか メリットと Test::Unit との違い テスト駆動開発 Rspec の使い方 Rspec と Cucumber テストの高速化  Cucumber の並列処理ライブラリ まとめ
Rspec とは テスティングフレームワーク プログラムの振る舞い (behaviour) を記述するための ドメイン特化言語 (DomainSpecificLanguage:DSL) を提供 arr = [] arr.empty? # ⇒ 振る舞いとして、 true を返す。 振る舞い ✿ テストが設計であることを強調 ✿ Ruby を使い、プログラムの振舞の本質に集中できる書き方 特徴 DSL 特定の領域 ( ドメイン ) を記述するために設計された言語。 「開発対象のプログラムの振舞を記述する」という領域。
Rspec と Test::Unit の違い Test::Unit クラスやメソッ ドを定義する require 'test/unit'  class ArrayTest < Test::Unit::TestCase def setup @empty_array = []  end  def test_empty? assert(@empty_array.empty?) end def test_size assert_equal(0, @empty_array.size) end def teardown  @empty_array = nil  end  end   describe Array, &quot;when empty&quot; do before do @empty_array = [] end it &quot;should be empty&quot; do @empty_array.should be_empty end it &quot;should size 0&quot; do @empty_array.size.should == 0 end  after do @empty_array = nil end end RSpec ブロック付きメソッド呼び出しなど、  Ruby  スクリプトになっている
なぜ Rspec なのか  Test::Unit との違い Rspec は、統合テスティング環境であることを目指している テスト駆動開発の考え、つまりテストは設計である という考え方を全面に押し出している。 Test::Unit  RSpec 「テストケース」 実行可能なサンプル  (example) 「テストクラス」 テストケースのまとまり 振舞  (behaviour) アサート  (assert) コードの検証 エクスペクテーション  (expectation) テストメソッド
まとめ RSpec は以下のことを目指している ✿ プログラマにテストコードが設計であることを明確に意識させること ✿ プログラマがテストコードをスムーズに記述し実行できるようになること ✿ 振舞定義用の  DSL  を提供し、様々なテスト関連ライブラリや周辺ツールとの   連携を積極的に行い、「統合テスティング環境」となること
テスト駆動開発 (TDD) とは ✿ 設計技法であり、開発の進め方 ✿ コーディングは設計であり、テスティングとデバッギングも設計の一部であり、私たちが一般的にソフトウェア設計と呼んでいるものもやはり設計の一部である ✿ ソフトウェア設計は、コーディングが完了し、かつテストされるまでは完璧にならない ✿ テスティングは、設計の検証と洗練を行うプロセスにおける基礎となる ✿ TDD とは BDD であり、 BDD とは TDD である TDD  のプログラミングの進め方が「テストというよりは設計である」ということを強調する考え方を、 振舞駆動開発  (Behaviour Driven Development:BDD) と呼ぶ
テスト駆動開発 (TDD)  テストの分類 ✿ Developer Testing : 開発者が行う、開発促進のためのテスト プログラマの、プログラマによる、プログラマのための、プログラムとして書く、プログラミングを進めていくための、テスト ✿ Customer Testing : お客様と機能の確認の為に用いる、進捗管理のためのテスト ✿ QA Testing : 品質保証のためのテスト
テスト駆動開発 (TDD) 1つのゴール  =  動くか不安 何かがおかしい これでいいよね めんどくさいって思ったときは、 テストを構造化するか、書くのをやめる。 1つのテーマ  =  動作するきれいなコードを書くこと 感情をテストにする:
テスト駆動開発 (TDD) ① 設計の技法: 設計とはソースコードを書くこと。テストもデバッグも設計。 設計が終わるのは、コーディングが完了しかつテストが通るまで。 ② 開発の進め方: テストが開発を駆動する。テストが開発を引っ張る。 クは駆動のク。駆動っていうのが大切。 この2つを押さえておくだけで大丈夫 ①  テストに失敗したときだけコードを書く ② 重複を取り除く 2つの主張 2つのルール :
テスト駆動開発 3つのモード + 1 失敗->通過->きれいに Red :  テストに失敗している状態 Green :  コードが動作している状態 Refactoring : コードの意味を変えずに綺麗に。動いた状態を維持して中身を綺麗に Think 作るための作戦などをまず考える。 そしてテストを書き、通るようにコードを書き、リファクタリングで綺麗にしてまた考える。 think -> red -> green -> refactoring  の繰り返し。 今、どのモードなのかを意識するのが大切 3つのモードでは明示されていない4つ目のモードがある。
テスト駆動開発 今、どのモードなのか意識 どんなルートをたどるか 順番に行い、理想を目指す 動く 動かない 汚い 綺麗 Think Red Green Refactoring
テスト駆動開発 3つの技法   サイクルをまわす ✿ Fake it : いんちき。テストをだまして Green に持っていく ボーリングで全部ガタ―で0点にする場合、メソッドが0を返すようにする ✿ Triangulate : 二方向から挟み撃ち。2つのテストを書いて実装を決める 全部ガタ―と全部1ピンの両方が通るようにする ✿ Obvious implementation : ふつうに実装
テスト駆動開発  しっかり身につけるためには コード=カタ カタとは、空手などの型 単純な定型を反復する。素振りみたいなもの 体で覚えるまでやる 簡単なものができないと、難しいものはできない
Rspec の使い方 インストール $ sudo gem install rspec describe Class, &quot; コンテキスト ( どういう状態の時に )&quot; do    before(:each) do      #  コンテキストのお膳立て    end    it &quot; 期待する振る舞いの名前 &quot; do      #  ここに期待する振る舞いを書く    end end コード
Rspec の使い方 テストを実行
Rspec の使い方
Rspec と Cucumber gem install cucumber webrat インストール 顧客に対して「このアプリケーションは要求仕様を満たしています」と言うことは RSpec だけでは無理だった Cucumber のテストコードは比較的自然語彙に近い形で記述できる 顧客の要望をほぼそのままテストコードに落とすことができる 基本的にはユニットテストなので,ある Model 単体のテスト,ある Controller 単体のテストとなるのが普通 内部仕様を RSpec で,外部仕様を Cucumber でテストする
テストの高速化 test/spec/cucumber を並列実行できるライブラリ  parallel_tests Ruby / Rails  のテストが約 3 倍速になって超快適に!!
まとめ ✿ TDD は設計技法で開発の進め方 ✿ 一度にひとつずつ ✿ 感情をテストにする  不安だ  何かがおかしい  これでいい  退屈だ⇒テストの構造化・書くのをやめる ✿ リズムとフィードバック  テスト->コーディング->リファクタリング 早くできるようになるまで簡単なものを繰り返し行う。
結論 Rspec は素晴らしい

Más contenido relacionado

Similar a Kubo100903

開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理慎一 古賀
 
【XDev】A-2 アジリティ向上のためのツール活用
【XDev】A-2 アジリティ向上のためのツール活用【XDev】A-2 アジリティ向上のためのツール活用
【XDev】A-2 アジリティ向上のためのツール活用智治 長沢
 
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】 Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】 智治 長沢
 
少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発lnial
 
RAD Studioで実践する継続的インテグレーション アプリとデベロッパーの価値を拡張するエッセンス #dcamp_jp
RAD Studioで実践する継続的インテグレーション アプリとデベロッパーの価値を拡張するエッセンス #dcamp_jpRAD Studioで実践する継続的インテグレーション アプリとデベロッパーの価値を拡張するエッセンス #dcamp_jp
RAD Studioで実践する継続的インテグレーション アプリとデベロッパーの価値を拡張するエッセンス #dcamp_jp智治 長沢
 
pytest × TDD テスト駆動開発のススメ
pytest × TDD テスト駆動開発のススメpytest × TDD テスト駆動開発のススメ
pytest × TDD テスト駆動開発のススメiRidge, Inc.
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから真吾 吉田
 
IDEを目指す開発者コンソール
IDEを目指す開発者コンソールIDEを目指す開発者コンソール
IDEを目指す開発者コンソールminoaw
 
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6健太 田上
 
phpspecで始めるBDD
phpspecで始めるBDDphpspecで始めるBDD
phpspecで始めるBDDYuuki Takezawa
 
JAWS FESTA Kansai 2013 | ビジネスに貢献する戦略的なITのためのDevOps
JAWS FESTA Kansai 2013 | ビジネスに貢献する戦略的なITのためのDevOpsJAWS FESTA Kansai 2013 | ビジネスに貢献する戦略的なITのためのDevOps
JAWS FESTA Kansai 2013 | ビジネスに貢献する戦略的なITのためのDevOps智治 長沢
 
Rubyプログラミング教育に対する取り組みと事例紹介
Rubyプログラミング教育に対する取り組みと事例紹介Rubyプログラミング教育に対する取り組みと事例紹介
Rubyプログラミング教育に対する取り組みと事例紹介Yasushi Ishikawa
 
DrupalでBDDテストを実施してみる①
DrupalでBDDテストを実施してみる①DrupalでBDDテストを実施してみる①
DrupalでBDDテストを実施してみる①iPride Co., Ltd.
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入Yu Nobuoka
 
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニアSHIFT Inc.
 
TDDはじめる前に
TDDはじめる前にTDDはじめる前に
TDDはじめる前にYasui Tsutomu
 
Web App Framework at SwapSkills vol28
Web App Framework at SwapSkills vol28Web App Framework at SwapSkills vol28
Web App Framework at SwapSkills vol28光一 原田
 
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~Rakuten Group, Inc.
 
デザイン領域へiOS / Android開発
デザイン領域へiOS / Android開発デザイン領域へiOS / Android開発
デザイン領域へiOS / Android開発baroqueworksdev
 

Similar a Kubo100903 (20)

開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
 
【XDev】A-2 アジリティ向上のためのツール活用
【XDev】A-2 アジリティ向上のためのツール活用【XDev】A-2 アジリティ向上のためのツール活用
【XDev】A-2 アジリティ向上のためのツール活用
 
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】 Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
 
少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発
 
RAD Studioで実践する継続的インテグレーション アプリとデベロッパーの価値を拡張するエッセンス #dcamp_jp
RAD Studioで実践する継続的インテグレーション アプリとデベロッパーの価値を拡張するエッセンス #dcamp_jpRAD Studioで実践する継続的インテグレーション アプリとデベロッパーの価値を拡張するエッセンス #dcamp_jp
RAD Studioで実践する継続的インテグレーション アプリとデベロッパーの価値を拡張するエッセンス #dcamp_jp
 
pytest × TDD テスト駆動開発のススメ
pytest × TDD テスト駆動開発のススメpytest × TDD テスト駆動開発のススメ
pytest × TDD テスト駆動開発のススメ
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから
 
IDEを目指す開発者コンソール
IDEを目指す開発者コンソールIDEを目指す開発者コンソール
IDEを目指す開発者コンソール
 
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
 
phpspecで始めるBDD
phpspecで始めるBDDphpspecで始めるBDD
phpspecで始めるBDD
 
JAWS FESTA Kansai 2013 | ビジネスに貢献する戦略的なITのためのDevOps
JAWS FESTA Kansai 2013 | ビジネスに貢献する戦略的なITのためのDevOpsJAWS FESTA Kansai 2013 | ビジネスに貢献する戦略的なITのためのDevOps
JAWS FESTA Kansai 2013 | ビジネスに貢献する戦略的なITのためのDevOps
 
Rubyプログラミング教育に対する取り組みと事例紹介
Rubyプログラミング教育に対する取り組みと事例紹介Rubyプログラミング教育に対する取り組みと事例紹介
Rubyプログラミング教育に対する取り組みと事例紹介
 
DrupalでBDDテストを実施してみる①
DrupalでBDDテストを実施してみる①DrupalでBDDテストを実施してみる①
DrupalでBDDテストを実施してみる①
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
 
TDDはじめる前に
TDDはじめる前にTDDはじめる前に
TDDはじめる前に
 
Web App Framework at SwapSkills vol28
Web App Framework at SwapSkills vol28Web App Framework at SwapSkills vol28
Web App Framework at SwapSkills vol28
 
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
 
デザイン領域へiOS / Android開発
デザイン領域へiOS / Android開発デザイン領域へiOS / Android開発
デザイン領域へiOS / Android開発
 
Rspec
RspecRspec
Rspec
 

Más de kubo

Aries Kubo081219
Aries Kubo081219Aries Kubo081219
Aries Kubo081219kubo
 
Speed Reading
Speed ReadingSpeed Reading
Speed Readingkubo
 
Speed Reading
Speed ReadingSpeed Reading
Speed Readingkubo
 
Speed Reading
Speed ReadingSpeed Reading
Speed Readingkubo
 
Aries Kubo081125
Aries Kubo081125Aries Kubo081125
Aries Kubo081125kubo
 
Aries Kubo081125
Aries Kubo081125Aries Kubo081125
Aries Kubo081125kubo
 
Aries Kubo081024
Aries Kubo081024Aries Kubo081024
Aries Kubo081024kubo
 
Aries Kubo080822
Aries Kubo080822Aries Kubo080822
Aries Kubo080822kubo
 

Más de kubo (8)

Aries Kubo081219
Aries Kubo081219Aries Kubo081219
Aries Kubo081219
 
Speed Reading
Speed ReadingSpeed Reading
Speed Reading
 
Speed Reading
Speed ReadingSpeed Reading
Speed Reading
 
Speed Reading
Speed ReadingSpeed Reading
Speed Reading
 
Aries Kubo081125
Aries Kubo081125Aries Kubo081125
Aries Kubo081125
 
Aries Kubo081125
Aries Kubo081125Aries Kubo081125
Aries Kubo081125
 
Aries Kubo081024
Aries Kubo081024Aries Kubo081024
Aries Kubo081024
 
Aries Kubo080822
Aries Kubo080822Aries Kubo080822
Aries Kubo080822
 

Kubo100903

  • 2. 目次     Rspec とは なぜ Rspec なのか メリットと Test::Unit との違い テスト駆動開発 Rspec の使い方 Rspec と Cucumber テストの高速化  Cucumber の並列処理ライブラリ まとめ
  • 3. Rspec とは テスティングフレームワーク プログラムの振る舞い (behaviour) を記述するための ドメイン特化言語 (DomainSpecificLanguage:DSL) を提供 arr = [] arr.empty? # ⇒ 振る舞いとして、 true を返す。 振る舞い ✿ テストが設計であることを強調 ✿ Ruby を使い、プログラムの振舞の本質に集中できる書き方 特徴 DSL 特定の領域 ( ドメイン ) を記述するために設計された言語。 「開発対象のプログラムの振舞を記述する」という領域。
  • 4. Rspec と Test::Unit の違い Test::Unit クラスやメソッ ドを定義する require 'test/unit' class ArrayTest < Test::Unit::TestCase def setup @empty_array = [] end def test_empty? assert(@empty_array.empty?) end def test_size assert_equal(0, @empty_array.size) end def teardown @empty_array = nil end end describe Array, &quot;when empty&quot; do before do @empty_array = [] end it &quot;should be empty&quot; do @empty_array.should be_empty end it &quot;should size 0&quot; do @empty_array.size.should == 0 end after do @empty_array = nil end end RSpec ブロック付きメソッド呼び出しなど、 Ruby スクリプトになっている
  • 5. なぜ Rspec なのか  Test::Unit との違い Rspec は、統合テスティング環境であることを目指している テスト駆動開発の考え、つまりテストは設計である という考え方を全面に押し出している。 Test::Unit RSpec 「テストケース」 実行可能なサンプル (example) 「テストクラス」 テストケースのまとまり 振舞 (behaviour) アサート (assert) コードの検証 エクスペクテーション (expectation) テストメソッド
  • 6. まとめ RSpec は以下のことを目指している ✿ プログラマにテストコードが設計であることを明確に意識させること ✿ プログラマがテストコードをスムーズに記述し実行できるようになること ✿ 振舞定義用の DSL を提供し、様々なテスト関連ライブラリや周辺ツールとの   連携を積極的に行い、「統合テスティング環境」となること
  • 7. テスト駆動開発 (TDD) とは ✿ 設計技法であり、開発の進め方 ✿ コーディングは設計であり、テスティングとデバッギングも設計の一部であり、私たちが一般的にソフトウェア設計と呼んでいるものもやはり設計の一部である ✿ ソフトウェア設計は、コーディングが完了し、かつテストされるまでは完璧にならない ✿ テスティングは、設計の検証と洗練を行うプロセスにおける基礎となる ✿ TDD とは BDD であり、 BDD とは TDD である TDD のプログラミングの進め方が「テストというよりは設計である」ということを強調する考え方を、 振舞駆動開発 (Behaviour Driven Development:BDD) と呼ぶ
  • 8. テスト駆動開発 (TDD)  テストの分類 ✿ Developer Testing : 開発者が行う、開発促進のためのテスト プログラマの、プログラマによる、プログラマのための、プログラムとして書く、プログラミングを進めていくための、テスト ✿ Customer Testing : お客様と機能の確認の為に用いる、進捗管理のためのテスト ✿ QA Testing : 品質保証のためのテスト
  • 9. テスト駆動開発 (TDD) 1つのゴール  =  動くか不安 何かがおかしい これでいいよね めんどくさいって思ったときは、 テストを構造化するか、書くのをやめる。 1つのテーマ  =  動作するきれいなコードを書くこと 感情をテストにする:
  • 10. テスト駆動開発 (TDD) ① 設計の技法: 設計とはソースコードを書くこと。テストもデバッグも設計。 設計が終わるのは、コーディングが完了しかつテストが通るまで。 ② 開発の進め方: テストが開発を駆動する。テストが開発を引っ張る。 クは駆動のク。駆動っていうのが大切。 この2つを押さえておくだけで大丈夫 ① テストに失敗したときだけコードを書く ② 重複を取り除く 2つの主張 2つのルール :
  • 11. テスト駆動開発 3つのモード + 1 失敗->通過->きれいに Red : テストに失敗している状態 Green : コードが動作している状態 Refactoring : コードの意味を変えずに綺麗に。動いた状態を維持して中身を綺麗に Think 作るための作戦などをまず考える。 そしてテストを書き、通るようにコードを書き、リファクタリングで綺麗にしてまた考える。 think -> red -> green -> refactoring の繰り返し。 今、どのモードなのかを意識するのが大切 3つのモードでは明示されていない4つ目のモードがある。
  • 12. テスト駆動開発 今、どのモードなのか意識 どんなルートをたどるか 順番に行い、理想を目指す 動く 動かない 汚い 綺麗 Think Red Green Refactoring
  • 13. テスト駆動開発 3つの技法   サイクルをまわす ✿ Fake it : いんちき。テストをだまして Green に持っていく ボーリングで全部ガタ―で0点にする場合、メソッドが0を返すようにする ✿ Triangulate : 二方向から挟み撃ち。2つのテストを書いて実装を決める 全部ガタ―と全部1ピンの両方が通るようにする ✿ Obvious implementation : ふつうに実装
  • 14. テスト駆動開発  しっかり身につけるためには コード=カタ カタとは、空手などの型 単純な定型を反復する。素振りみたいなもの 体で覚えるまでやる 簡単なものができないと、難しいものはできない
  • 15. Rspec の使い方 インストール $ sudo gem install rspec describe Class, &quot; コンテキスト ( どういう状態の時に )&quot; do   before(:each) do     # コンテキストのお膳立て   end   it &quot; 期待する振る舞いの名前 &quot; do     # ここに期待する振る舞いを書く   end end コード
  • 18. Rspec と Cucumber gem install cucumber webrat インストール 顧客に対して「このアプリケーションは要求仕様を満たしています」と言うことは RSpec だけでは無理だった Cucumber のテストコードは比較的自然語彙に近い形で記述できる 顧客の要望をほぼそのままテストコードに落とすことができる 基本的にはユニットテストなので,ある Model 単体のテスト,ある Controller 単体のテストとなるのが普通 内部仕様を RSpec で,外部仕様を Cucumber でテストする
  • 19. テストの高速化 test/spec/cucumber を並列実行できるライブラリ parallel_tests Ruby / Rails のテストが約 3 倍速になって超快適に!!
  • 20. まとめ ✿ TDD は設計技法で開発の進め方 ✿ 一度にひとつずつ ✿ 感情をテストにする  不安だ  何かがおかしい  これでいい  退屈だ⇒テストの構造化・書くのをやめる ✿ リズムとフィードバック  テスト->コーディング->リファクタリング 早くできるようになるまで簡単なものを繰り返し行う。