2014/02/12の楽天Tech Talkに登壇させてもらったときの発表スライドです。 2013年に発表したいくつかの内容をまとめました。 基本的に、ソフトウェアテストの絶望を聞きたい人向けです。Read less
http://blog.testdouble.com/posts/2014-01-25-the-failures-of-intro-to-tdd.html 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約7時間前 Test Double社がブログで、TDD (テスト駆動型開発) を教える場合のアプローチを提案しています。 TDDについて、同じ用語やツールを使っていても、「モックオブジェクトがありすぎて、ひどい。」「モックオブジェクトがあふれていて素晴らしい!」という異なる見解に至るケースがでてしまっているのは、理想的なゴールに至る道筋を統一したかたちで教えきれてないからだと指摘しています。 TDDの一番の効果はコードのデザインの改善であり、コードのクオリティの担保は、うまくいけば二次的な効果、まかり間違えば幻想
2012年08月21日 ソフトウェア開発でのテストとは何かを単純に言うと、成果物が期待通りであるかを検証する作業といえる。こう動作してほしいという期待を入力に、成果物がその通りに動作するかを検証するのがテストである。 となると、成果物とは何で、期待とは何かが問題になるのだけれど、これが一筋縄ではない。というのも、システムは十分に複雑なので、ある部分を複数の部分に分けることもできるし、その部分をより大きな部分のパーツにすぎないとみなすこともできるからだ。 だからといって、一番大きな単位でもって期待通りにあるかどうかを検証すれば済む話かというとそういうわけでもない。というのも、大きな単位には大きな単位なりの期待が、小さな単位には小さな単位なりの期待というものが存在するからだ。 システム開発は、ひとつのものさしではかることができない。システムをつかって業務を遂行できるかという検証と、その部品であ
Railsエンジニアになってから1年半くらいが経ち、社内のRailsのプロジェクトを全部で5つくらい触って、今やってるAbilie*1でようやく人並みにテストを書いてる気がしてきたので、現時点でやってるテストの方法をまとめておく。 テストのルール的なの rspecでは必ずモデルのテストは書くようにしてる。ヘルパーも大体書いてるけど、コントローラやルーティングのテストはあまり書いてない。 というのも、コントローラーのコードを極力短くしてモデルを太らせているのでコントローラのテストはあんまり意味が無い気がしていて、その代わりにCapybaraでテストを書いておけば十分なんじゃないかなと思ってきたから。Capybaraは書いてるので、そういう意味では書いてるとも言える。 社内の管理者だけが使える管理画面も作ってるけど、そっちはテストあんまり書いてない。ここは動かなくなっても一般ユーザーには影響が
とにかく楽に、お気軽に。お気軽にテストを追加できて、お気軽にテストを実行できる。というのがなによりも重要です。 追加しようとおもったときに「どう追加したらいいかわからない」という状況になりがちなので、あらかじめいろいろな構成要素ごとにテストをひととおりかいてみるというのも重要だとおもいます。O/R Mapper のクラスのテストとか、model のテストとか、コントローラのテストとか、JSON API のテストとか。。 ExtUtils::MakeMaker でテストをうごかさないExtUtils::MakeMaker を素でつかうと blib/ とかつかってきてうざいので、Makefile.PL に以下のような hack をほどこしてあります。ウェブアプリケーションで blib/ とかにコピーする必要ないですよね。実運用でも blib/ でうごかさないし、インストールもしませんし。 #
テストが膨大になっていくと,あるテストでは時間がかかったりして「そのテストはもう成功することがわかっとるっちゅうねん;失敗するテストだけ再テストしたいっちゅうねん」ってことになったりします。そんなときに使えるのが prove コマンドの --state オプションです。 --state オプションに failed という引数をわたすと,「テストの対象は前回 fail したテストスクリプトのみ対象」という意味になります。ステートを保存する save と併用して指定してみます。 % prove --state failed,save No saved state, selection will be empty Files=0, Tests=0, 0 wallclock secs ( 0.00 usr + 0.00 sys = 0.00 CPU) Result: NOTESTS「No save
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
以下の設定ファイルでGrowlを有効にしたautotestは、テスト結果をGrowlメッセージとして教えてくれるのでとても快適なのだが、いくつか気になる点も出てきた。 # autotest設定ファイル: ~/.autotest require 'autotest/growl' 現状では、failuresやerrorsが発生した時は毎回Growlメッセージが通知されるが、テストが成功を繰り返す場合は何も通知されない。 成功している状態は当然の状況なのだから、この仕様は無駄が無くて良いのだが、テストに不慣れな現状では、毎回テスト結果を通知して欲しい気分だ。 通知されるGrowlメッセージは「Test Failed」か「Test Passed」なので、failuresとerrorsの件数はターミナルのテスト結果を見るまで確認できない。 Growlメッセージにも「1 tests, 1 assert
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
IntroTestMore - A Perl Testing Tutorial 目次 ■なぜテストするのか ■恐れないで! ■ベーシックテスト ■Test::Simple とその API ■開発過程にテストを盛り込む ■Test::More の API について A Perl Testing Tutorial chromatic (http://wgz.org/chromatic/) (http://wgz.org/chromatic/perl/IntroTestMore.pdf) 英語がそのまま残ってる部分は意味がわからなかっとこなので、 適当に補完してね。 ■なぜテストするのか コードが仕様どおりの動きをすることを確認する。 o 実装忘れの防止 o アクシデントに対する動き o 全てのテストにパスすれば完成 境界条件のチェック o 不正な入力をどう扱うか o イジワルな操作にどう対処す
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
2006年10月25日15:25 カテゴリLightweight Languages テキストエディタさえあればできるTDD なんかえらい誤解されているのだけど、私も舌足らずだったかもしれない。 Perl Testing Ian Langworth / Chromatic 『WEB+DB PRESS Vol.35』:実演! テスト駆動開発 - 角谷HTML化計画 (2006-10-24)TDDはハッカーのための技術ではない。ハッカーにTDDは要らない。ただただハックすればよい。偉大なプログラマは偉大なプログラミングをすればよい。だが、ハッカーならぬ凡百たる私のような"普通の"プログラマはそうはいかない。TDDは我々が日々の仕事に自信を持ち、誇りを持って定時に帰るための思想だ。 私が言いたかったのは、Test Driven Development (TDD)に関しては、JavaよりPerlを
はじめまして。Vox 開発エンジニアの谷本です。 突然ですが、Vox の開発はいつから始まったのでしょうか。当ブログの以前のエントリーにもありますが、Vox はプレビュー版として3月にサービスが開始されていることからもわかるように、開発は去年から行われていました。となると、もうそれなりに期間の長いプロジェクトですし、アプリケーションの規模でも今では弊社の他の製品に引けを取らないほどになっています。 私が Vox の開発に加わったのは今年の8月なのですが、既に大きく成長していたアプリケーションを前に、最初は「Vox を壊してしまわないだろうか…」という不安を抱えていました。しかし大量のテストコードのおかげで既存のアプリケーションを壊さずに、簡単、確実に機能を追加していくことができたのです。(実際にはテストのおかげで壊れているのが発覚したりしたのですが…) 前置きはこれぐらいにして、Vox は
Test::Perl::Critic で PBP 準拠なコードを自動テスト Perl Best Practices 日本語版発売記念ということで、Plagger のユニットテストに Test::Perl::Critic を組み込んでみました。 Perlベストプラクティスposted with amazlet on 06.08.24Damian Conway クイープ オライリー・ジャパン (2006/08/24) Amazon.co.jp で詳細を見る 組み込むといっても実装は簡単で、t/99-perlcritic.t なファイルをつくって、以下のように書き込むだけ。 use strict; use Test::More; eval { require Test::Perl::Critic; Test::Perl::Critic->import(-profile => "t/perlcri
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
Chapter1の後半戦は、Test::More。 Perl Testing: A Developer's Notebook (Developers Notebook) Test::MoreはTest::Simpleのスーパーセットで完全に置き換えて使ってOK、モジュールをただしく読み込めたかどうかなどのテスト関数も含めいろんな機能あるでよ、とのことです。 早速。 package AnalyzeSentence; use strict; use warnings; use base qw/Exporter/; our $WORD_SEPARATOR = qr/\s+/; our @EXPORT_OK = qw($WORD_SEPARATOR count_words words); sub words { my $sentence = shift; return split $WORD_SE
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く