タグ

TestingとTDDに関するKenji_sのブックマーク (25)

  • The Difference Between TDD and BDD - Josh Davis

    The Difference Between TDD and BDD If you keep up-to-date with the latest software development practices, odds are you have heard of Test-driven development (TDD) and Behavior-driven development (BDD). This post is meant to explain what each practice means, provide examples, and then contrast the two. Let’s dig in and see what we learn. Test-Driven Development When I first heard about TDD, the ide

    The Difference Between TDD and BDD - Josh Davis
  • スタブ・モックは本当に悪者なのか?〜テスト駆動開発をやめて、なお残すべき習慣とは (2)

    技術詳細は外側へ寄せるポイントは、中心となる対象ドメインは何か?中心から排除したい要素は何か?を考慮して区分けすることです。中心のドメインから排除したい項目の代表例が、データベースアクセスや外部Webシステムやメッセージングといった詳細の技術要素です。ドメイン駆動設計の設計判断を取り入れている場合は、オブジェクトへのアクセスするためのRepositoryのインタフェースのみを中心ドメインに入れ込み、Repositoryの実装(特定のデータベース種類やSQLなど実装詳細)は外側に追いやります。同様に、インタフェースのみを中心にいれてメッセージングや他のWebシステムのアクセス等の実装の詳細は外部に追いやります。 うまく区分けできれば、中央に残った純粋なビジネスについてのルールや状態遷移についてをユニットテストやリファクタリングを継続することができます。リファクタリングによる設計改善を継続する

    スタブ・モックは本当に悪者なのか?〜テスト駆動開発をやめて、なお残すべき習慣とは (2)
  • あなたのテストの盲点はどこにある?〜テスト駆動開発をやめて、なお残すべき習慣とは(3)

    http://studiototoro.com/musukarakka-471より改変前回、スタブ・モックの使いどころの再考について触れました。そのなかで、ユニットテストのみに頼るのは、盲点が生まれるという点を指摘しました。「群盲象を評す」という寓話があります。各々の盲目の人が象の一部を触って象を語るだけでは部分でしかありませんし、盲点も消えません。 象の部分を統合して初めて全体を語れるように、一つの視点では盲点ができてしまいますが、複数の視点があればそれを防ぐことができます。 今回は、アジャイルテストの4象限を使って、テスト観点の全体像をお伝えし、次回では多重のフィードバックループについて盲点を少なくする仕組みについて解説します。 テスト駆動開発のスタイルをやめたとしても、自分たちが作り続けているプロダクトが期待通り動き続け、プロダクトがユーザや市場によりフィットしていくようにするには、

    あなたのテストの盲点はどこにある?〜テスト駆動開発をやめて、なお残すべき習慣とは(3)
  • Design how your objects talk through mocking

    What should you test with your unit tests? Some people will say that unit behaviour is best tested through it's outcomes. But what if communication between units itself is more important than the results of it? This session will introduce you to two different ways of unit-testing and show you a way to assert your object behaviours through their communications.Read less

    Design how your objects talk through mocking
  • TDD - Dependencies that cannot be mocked

  • Mock Roles, not Objects Steve Freeman, Nat Pryce, Tim Mackinnon, Joe Walnes Thought Works UK - oopsla2004.pdf

    Mock Roles, not Objects Steve Freeman, Nat Pryce, Tim Mackinnon, Joe Walnes ThoughtWorks UK Berkshire House, 168-173 High Holborn London WC1V 7AA {sfreeman, npryce, tmackinnon, jwalnes} @thoughtworks.com ABSTRACT Mock Objects is an extension to Test-Driven Development that supports good Object-Oriented design by guiding the discovery of a coherent system of types within a code base. It turns out t

  • これであなたもテスト駆動開発マスター!?和田卓人さんがテスト駆動開発問題を解答コード使いながら解説します~現在時刻が関わるテストから、テスト容易性設計を学ぶ #tdd|CodeIQ MAGAZINE

    和田卓人さんによるテスト駆動開発問題解説の寄稿です! バグのないよいコードを書くには、よいテスト設計が重要です。今回は現在時刻に関する問題と、その問題で提出された実際の解答コードを紹介しながら、どのようにテスト設計し開発していくのかを解説していきます。 ゲスト解答による解答コードも公開中! by CodeIQ運営事務局 はじめに こんにちは、和田(@t_wada)です。今日は先日出題させていただいたTDDに関する問題の総評を行いつつ、テスト容易性設計について考えてみたいと思います。 問題文 私が出した問題は、以下のようなものでした。 問1. 下記の仕様をテスティングフレームワークを使ってテストコードを書きながら実装してください。 【仕様1】 「現在時刻」に応じて、挨拶の内容を下記のようにそれぞれ返す機能を作成したい。 (タイムゾーンはAsia/Tokyoとする) 朝(05:00:00以上

    これであなたもテスト駆動開発マスター!?和田卓人さんがテスト駆動開発問題を解答コード使いながら解説します~現在時刻が関わるテストから、テスト容易性設計を学ぶ #tdd|CodeIQ MAGAZINE
  • 知らないうちにphpspecがすごいことになっていた件 - iakioの日記

    昔あったphpspecが進化したものなのかそれとも別のものなのかは知りませんが。 すごい。軽くキモい。17分の動画です。 Laracasts | PHPSpec is So Good まず、いきなり「MovieCollectionにMovieをadd()するとcountが1になること」というのスペックを書きます。MovieCollectionクラスもMovieクラスもまだ作ってません。 phpspec runを実行すると当然失敗して、「MovieCollectionクラスが無いけど作ってほしい?」と尋ねてきます。Yなら空のMovieCollectionクラスが作られます。 関係ないけどこういうスクリーンキャストを作ったりライブコーディングする人は、ターミナルの色の設定したほうがいいですね。GitHubにいろいろカラーテーマがあるので。 その後いろいろ説明を省きますが、今度は「MovieCo

    知らないうちにphpspecがすごいことになっていた件 - iakioの日記
  • TDDはテスタビリティの保証をしてくれるのかも - プログラマーの脳みそ

    TDD Boot Camp 北陸行ってきました。 TDDはテストドリブンデベロップメントの略で、自働テストを書いてから実装を書くというスタイル。ここでよく誤解されるのだけど、業務でおなじみ単体テストや結合テストといった網羅的なテストを記述してから実装を書くわけではない。目の前の1歩分、ひとつだけテストを書き、すぐさま実装を書いて自働テストをグリーンにする、というやり方をするのだ。こればかりは実際にやってみないと誤解は解けないかもしれない。 さて、深夜のテストTL - Togetterや、TDDはテスト手法か否か - Togetterで議論されている「TDDは品質保証の手法ではない」という部分に関する議論。ここでいう「品質保証」はバグがないこと、ソフトウェア品質の12の属性でいう信頼性(reliability)が高いことを指す。 TDDのスタイルには網羅的な検査をしてバグをあぶりだすようなフ

    TDDはテスタビリティの保証をしてくれるのかも - プログラマーの脳みそ
  • TDDBC Nagoya Day1

    This document discusses test-driven development (TDD) and its effectiveness. It reports on studies that measured the percentage of code covered by automated unit tests for different projects that used TDD to varying degrees. Projects with more extensive use of TDD had higher test coverage, ranging from 9% coverage up to 61% coverage. The document concludes that TDD can help improve software qualit

    TDDBC Nagoya Day1
  • テスト駆動開発チートシート - やさしいデスマーチ

    TDD(テスト駆動開発)のチートシートを作ってみた。 TDDBCでid:t-wadaさんが話している内容とかテスト駆動開発入門から引っ張ってきています。 ダウンロードはこちらからどうぞ。 PNGイメージ: http://dl.dropbox.com/u/1393956/tdd_cheatsheet.png PDFファイル: http://dl.dropbox.com/u/1393956/tdd_cheatsheet.pdf 追記 印刷・再配布などはご自由にどうぞ。 もし、元データ(OmniGraffle)が欲しいという人は、コメント欄かTwitter経由で教えていただければ差し上げます。 追記2 このチートシートは、OmniGraffleで作りました。他に使えそうなツールとしては、イラレとか。Visioでもたぶん作れると思います。

    テスト駆動開発チートシート - やさしいデスマーチ
  • TDD のこころ @ OSH2014

    at Open Seminar Hiroshima 2014 (#osh2014) 2014.02.01 (Sat) http://osh-2014.github.io/Read less

    TDD のこころ @ OSH2014
  • Martin Fowler's Bliki in Japanese - ユニットテスト

    http://martinfowler.com/bliki/UnitTest.html 2014/5/5 ソフトウェア開発において、ユニットテスティングの話題になることが多い。私がプログラムを書きはじめて以来ずっと、ユニットテスティングという言葉はおなじみだった。 しかし、ソフトウェア開発用語の常として、ユニットテスティングという用語もきちんと定義できていない。 ユニットテスティングという用語の意味を実際よりも厳密にとらえてしまったせいで、混乱してしまっている人もよく見かける。 もちろんそれ以前からもユニットテスティングはやってきていたのだが、それを人前で公表したのは、Kent Beckと仕事をして Xunit系のツールを使い始めたころのことだった (この種のテストのことは、ユニットテスティングっていうより「xunitテスティング」って呼んだほうがいいと思うんだ)。 ユニットテスティングは

    Martin Fowler's Bliki in Japanese - ユニットテスト
    Kenji_s
    Kenji_s 2014/05/21
    『ユニットテスティングという用語もきちんと定義できていない…私は、とりあえずひとつのクラスを「ユニット」として始めたいと思っているが、関連するクラス群を一括で「ユニット」と扱うこともよくある』
  • いつでも聞けるTDD入門 #TDDBC_NAGOYA

    2014/05/18 TDDBootCamp in Nagoya でkyon_mmが基調講演に使用したスライドです。org-mode -> reveal.js -> pdfで変換したのでアニメーションは切られています。BDDようそRead less

    いつでも聞けるTDD入門 #TDDBC_NAGOYA
  • TDD/BDDの思想とテスティングフレームワークの関係を整理しよう

    TDD/BDDの思想とテスティングフレームワークの関係を整理しよう:いまさら聞けないTDD/BDD超入門(2)(1/3 ページ) TDD/BDDの思想に触れ、フレームワークとしてxUnit、JBehave、xSpec、Cucumber、Turnip、TestDoxを紹介する。 前回の「テスト駆動開発/振る舞い駆動開発を始めるための基礎知識」でも紹介があったように、さまざまなテスティングフレームワークがあります。例えばTDD自体は、Kent Beck(ケント・ベック)氏が著書『テスト駆動開発入門』(ピアソンエデュケーション刊)の中で述べているように、「分析技法および設計技法であり、実際には開発全てのアクティビティを構造化するための技法」です。 TDD(テスト駆動開発)/BDD(振る舞い駆動開発)を実践することと、特定テスティングフレームワークを採用したり開発したりすることを分けて考えておかな

    TDD/BDDの思想とテスティングフレームワークの関係を整理しよう
  • テスト駆動開発/振る舞い駆動開発を始めるための基礎知識

    連載目次 2000年代初期に開発手法として確立された「テスト駆動開発」(Test Driven Development、以下「TDD」)は、その後10年もの間で普及が進み、今や珍しくない開発スタイルの1つとなっています。国内でも「アジャイルアカデミー」「TDD Boot Camp」などによる推進・普及活動が各地で活発化し、認知が広がってきました。 なおTDDは誕生からこれまでの間に、さまざまな工夫や実践上のノウハウが提唱されてきました。またTDDの普及に影響を受け、他のさまざまな「テストファースト」手法も台頭してきています。 稿では、そうしたTDDの発展や、振る舞い駆動開発(Behavior Driven Development、以下「BDD」)など他のテストファースト手法への展開についても解説します。 ※編集部注:ソフトウェアの「テスト」そのものの概要や種類について知りたい方は記事「J

    テスト駆動開発/振る舞い駆動開発を始めるための基礎知識
  • TDD/BDDにおける「振る舞い」の意味するところとは何なのか

    TDD/BDDにおける「振る舞い」の意味するところとは何なのか:いまさら聞けないTDD/BDD超入門(3)(1/3 ページ) 前回の「TDD/BDDの思想とテスティングフレームワークの関係を整理しよう」では、TDD/BDDについて、その思想と、それをサポートするテスティングフレームワークに分けて解説しました。その中で、TDD/BDDについては実際の熟練者の言葉を借り、テスティングフレームワークについては概要を触れて、その系譜をたどりました。 BDDはその名前に「Behavior」とありますが、「振る舞いとしてのテストコードを書く」とはどういうことなのでしょうか? 難しく考え過ぎる必要はありませんが、「それは振る舞いを書いていないよ」と指摘をする熟練者が何を考えているかを理解することはBDDを習熟していく中で重要な意味を持ってきます。 記事では「振る舞い」という言葉がどのような意味で使われ

    TDD/BDDにおける「振る舞い」の意味するところとは何なのか
  • 『「メソッドに対してテストをするな」という話題について』への反論 - assertInstanceOf('Engineer', $a_suenami)

    「メソッドに対してテストをするな」という話題について - その手の平は尻もつかめるさ 記事の内容が間違ってるとまでは言いませんが、これだけではミスリードしてしまう可能性が高いと思いましたので、簡単にですがアンサーエントリ書いておきます。タイトルでは「反論」と書きましたがどちらかというと「補足」に近いかもです。 前提の整理 「メソッド」という言葉が使われているため、オブジェクト指向的なパラダイムを持つ言語に限定した話であるという認識で書きます。その前提自体が間違っていたらご指摘ください。 元エントリの主張である「テストが説明的であるべきだ」ということを否定するわけではありません。ただ、それと「メソッドに対してテストをするな」という意図が異なるのではないかと主張したいだけです。 元エントリは Perl でサンプルコードで書かれているようですが、僕が Perl にそれほど明るくないため、このエン

    『「メソッドに対してテストをするな」という話題について』への反論 - assertInstanceOf('Engineer', $a_suenami)
  • 【社内勉強会レポート】 TDDへの理解を深めるため、スライド資料「TDDを実践してわかった TDDつまづくあるあると自分なりの乗り越え方まとめ」を読む会を行いました|技術ブログ|北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ

    【社内勉強会レポート】 TDDへの理解を深めるため、スライド資料「TDDを実践してわかった TDDつまづくあるあると自分なりの乗り越え方まとめ」を読む会を行いました こんにちは、unisonです。 弊社、インフィニットループでは毎週金曜日に社内勉強会を行っています。 今回は社内のTDDに対する理解を深めるために、スライド「TDDを実践してわかった TDDつまづくあるあると自分なりの乗り越え方まとめ」を読む会が行われました。 資料は、@remore氏がTDDBC in Tokyo 1.5 でLTに使用したものです。

    【社内勉強会レポート】 TDDへの理解を深めるため、スライド資料「TDDを実践してわかった TDDつまづくあるあると自分なりの乗り越え方まとめ」を読む会を行いました|技術ブログ|北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ
  • 例えば, Singleton を避ける | Born Too Late

    この記事は TDD Advent Calendar jp: 2011 の 14 日目です. 前日: TDD戦略 -TDDを導入し進化させる方法- #TDDAdventJP (@kyon_mm さん) 翌日: TDDに対して思っていること (@gab_km さん) この記事の概要 TDD で開発することで設計上の問題点に気づきやすくなる Singleton はグローバル変数である Singleton の使用はできる限り避けるべきである テスタビリティを意識しよう TDD では, 原則としてユニットテストを書いてから実際のコードを実装します. なので, 自然と「テストのしやすさ (テスタビリティ)」を意識して実装することになります. そして, TDD においては一般的に, テスタビリティを意識することで, 設計が改善されるとされています. オブジェクト指向には難しい概念がたくさん登場します.