最終更新時刻:2008年10月10日(金) 23時50分

-

レグレッション・テストに逆ギレ

公開日時:
2006/08/08 14:39
著者:
kenn

どうも更新が滞りがちですが、いよいよ新サービスのリリース・カウントダウンが始まりました。寝ても覚めても開発とバグ取りにいそしむ中毒状態で、メールにさえろくに返事ができておらず、ゴメンなさい!いましばらくご辛抱下さい!

近況としては、IRS(米国税局)から「キミはちゃんと確定申告を期日までに行わなかったからペナルティじゃ」という、折り目正しくきちんと納税した人間に対してありえない通告があったので、先方が真っ先に小切手を振り出した記録をこれでもかと全部コピーして送りつけて、お前たちはドロボーかと詰問して謝罪をとりつけたり、相棒のダニーが唐突に投票権を持つ米国民の義務であるJury Duty(陪審員義務)に駆り出されて一週間まるまる留守になったり、歯医者に行ってチェックアップしてもらったら$800/月もの医療保険に加入しているにもかかわらず$4,000という高額な治療費の見積もりをもらって開いた口が塞がらないでいると日本人の係の人に「まだ日本で保険が残ってるのなら日本で治療したほうがいいですよ」と耳打ちされたり、相変わらずアメリカという国にビックリ驚きおののきつつ奮闘中です。

そんな日々ですが、またひとつ、過ちを重ねてしまいましたので、懺悔を兼ねて今回はそのお話。

最近、Ruby on Railsのテストフレームワークを使ってレグレッション・テストを行っているのですが、ぼくのローカルの開発環境+ブラウザでは動いていて、でもなぜかテストでは失敗してしまうというソースをコミットして帰ってしまいました。その日は朝8時から夜10時までぶっ通しでガリガリと書いていたので、テストのコードも読んだのだけど問題も見あたらず、それ以上追い込む気力もなく、まぁ動いているのだからいいだろうというわけで帰ってしまったのです。

すると、われらがアーキテクトのダニーが、「おめでとう。あなたはテストに失敗するようなソースをコミットしてしまった最初の人間です。その栄冠を次の人に渡せるよう、すみやかに修正してください。」という嫌みたっぷりなメールをよこしてきたのです。

そこでぶち切れですよ。「テストごときに失敗していようと、実際には動いているんだからいいじゃないか。現実のアプリのユーザエクスペリエンスに集中させてくれ。俺はマシンに食わせるためにコードを書いてるわけじゃない。」と、このあたりでやめておけばいいものを、「こんなテストならやめちまえ」みたいな話まで持っていってしまったのです。

テストフレームワークといっても、よく言われるように、開発者自身が思いつきで書くアサーションなんてのは所詮は八百長というか、ヒューマンリーダブルなコメント未満みたいなのばかりで、本質的にはテストっていうのは実運用を初めてから発見された「変な」ケースを追加したり(これはFlickrのCal Hendersonも言ってた)、開発者の裏をかくようなことを思いつく専門職の人間にやらせないと実効性はほとんどなくて、つまりテストに通るようにテスト自体を書き換えることもできちゃうような状況なのです。だから、まだリリースする前の現時点でのテストの効力については常々疑問があって、テストフレームワークそのものを学習するためだけに費やす時間も左脳的なテストケースを考えるために右脳を使う時間を減らすのもバカバカしい、かける時間にもテストコードの量にも価値が見合ってない、テストドリブンなんて欺瞞だ、Design by ContractなんてStatically Typed Languageのものだ、エンタープライジーだ、Overkillだ!!と、深夜のナチュラル・ハイをいいことに、メールでありったけぶちまけてしまったのです。

そして翌早朝、返信が。

「以下の手順を実際やってみろ。1.トップページに行く、2.ログイン、3.エラー。まさに今お前が全力で否定しようとしているテストのおかげで、バグの再現手順まで特定できた。」

そう、実際にそれはバグだったのです。なぜ、ぼくのブラウザ環境ではそのとき動いていたかは定かではありません。しかし、現時点でやってみると、たしかにエラーなのです。同じ頃に届いたデザイナーのクリスからのメールも猛反発。コテンパンですよ、ええ。大恥ですよ。

急いでバグを特定して、自宅でSVNにコミットしてから出社。スタックトレースを読めばすぐに気がつき修正できるバグでした。でも、前日には動いていたから疑わなかったわけです。ダニーに会って、「昨日は動いてたんだ、ブラウザでは。」「コードにもテストコードにもどちらも問題はなさそうだったし、実際ブラウザでは動いていたのだから、テストフレームワーク自体のバグか何かだろうとたかをくくって、それ以上追わなかった」などと色々と言い訳をして自己弁護してしまう自分。。。自分の弱さを感じながら。

で、色々と激論になったのですが、最後にダニーから一言。「過去のことは過去のことだ。同じ失敗を二度起こさなければそれでいい。今回の件で、お前はテストの有用性を学んだだろう?」

現時点でのテストの有用性にはいまだ疑問を持ち続けていても、今回の結果が示しているのはその有用性です。

くやしいけれど、残念ながら、完敗でした。返事は「イエス」でした。

恥をかくことでしかできない種類の成長というものがある。今回の件を通じて、印象論ではなく、リアルなものとしてレグレッション・テストの価値を真剣に考えました。考えて考えて考え抜きました。その結果、全否定するでもなく、全依存するでもなく、今ぐらいの予備的な運用は結構いい線をいっているかも知れない、実際に大規模運用を始める前のウォーミングアップとして十分価値があるかも知れない、と思うようになってきました。

失敗は、早く犯すに限る。泣きそうなほど悔しい思いを噛みしめながら、またひとつ階段をのぼったのでした。

Maroon 5 vs Beyonce / This Naughty Love (The weirdest mashup ever!)

※このエントリは CNET Japan ブロガーにより投稿されたものです。シーネットネットワークスジャパン および CNET Japan 編集部の見解・意向を示すものではありません。

このエントリーへのコメント

11

ナルシストですか?IT系には、経営者として大成したいのか、タレント志望なのか分からん人が多いですね。

  あの on 2006/08/24

10

komuroさんて人良いこと言うね。

  tamago on 2006/08/21

9

失敗はやり直せば良い。
まあ、力まずにやれ。

  tamago on 2006/08/21

8

テストフレームワークは、本当に大事なUser Experienceに開発者が集中するためにこそ必要。
「それ以前」のバグでUser Experienceを台無しにするのは最悪。

テストフレームワークでできないことを「考え、確かめる」のが開発者の仕事。
テストフレームワークにやらせればよいものをいつまでも開発者にやらせるのは怠慢。

開発者がした仕事はそれを受け取る人が安心して受け取れるもの。
開発者は世の中を幸せにするためにいる。自分の幸せは後からついてくる。

・・・なんてね。良い話だったので、つい。

  komuro on 2006/08/17

7

スゲーいい話と思って読んでましたよ。よい相棒、ダニーってステキですねー。:)

  ゾフィ on 2006/08/15

6

江島さん、お久です。
BloggerでBlog、再開してみました。今度は力を抜いて。
「グーグル Google」(文春文庫)で江島さんの記事も紹介されていて面白かったですよ。

  Yasu on 2006/08/13

5

いいわけばっかだな。
人の命がかかってたりすると手は抜けないんだよ。
自分勝手にこの辺でいいやと線引いてんだよ。

  a on 2006/08/12

4

TeamKNOxさん

m(_ _)m マイリマシタ
すごいっす。かっこいいっす。
ギークへの道のりは、かくもはてしない。。。

  kenn on 2006/08/11

3

江島さん、こんばんは

 なかなか更新されていないのでどうしたのかな?と
 少し心配しました。
 ユーザエクスペアリエンスって甘美な響きですよね。
 折角、作ったんですから早く実践投入したいですよね。
 最近はこんなことやってます。
 http://www.teamknox.com/EZ-CNC/EZ-CNCj.html

 工作機械の改造なんですけど、ちゃんとテストしないと
 マジやばいんですよ。最高2500RPMで回転している
 ダイヤモンドの次の次?位に硬い刃が折れて
 飛んでくるかもしれないんです。
 で、テストスクリプトをシコシコ書いて、
 色々とやっています。それも繰り返し。ええ。

 失敗したら、命は無いぞ!!みたいな気持ちで
 やるとテストガンガンやるようになりますよ。

では

 

  TeamKNOx on 2006/08/09

2

ありがとうございます。よしおかさんにエールいただけるとはとっても光栄です。早く自虐ネタを卒業して「人並み」になりたい。。。

  kenn on 2006/08/09

1

いい感じですね。一歩一歩プロフェッショナルに近付いて
いく姿に共感を覚えます。

リグレッションテストは無駄だというエントリーでしたら
釣られて、渾身のチカラを込めてコメントしようと思った
のですが、そうでもないようなので、ひとつ階段をのぼっ
た江島さんにエールをこめて。

  hyoshiok on 2006/08/09

ブログにコメントするにはCNET_IDにログインしてください。

この記事に対するTrackBackのURL: 

このブログについて

ブロガープロフィール

アーカイブ

カテゴリ

ブログネットワーク

アルファブロガー

外資系エグゼクティブの日々I am Jamming!
外資系エグゼクティブの日々
クロサカタツヤの情報通信インサイトグッバイ、レバレッジ!(1)
クロサカタツヤの情報通信インサイト
末吉隆彦 ロケーションウェアの「空」と「実」9月イベントお知らせ
末吉隆彦 ロケーションウェアの「空」と「実」
ケータイ時代のスタンダードiPhonista Nightの事後報告
ケータイ時代のスタンダード
江島健太郎 / Kenn's Clairvoyance新サービスをローンチしました
江島健太郎 / Kenn's Clairvoyance
鈴木健の天命反転生活日記パラレルワールドとしての電脳コイル
鈴木健の天命反転生活日記

読者ブロガー

将来のPC業界パワーバランスPCを自作してみた
将来のPC業界パワーバランス
おやじのちょっとユビキタス東芝からネットブック
おやじのちょっとユビキタス
電子政府パブリックコメントの抜粋2010 年代の電波政策(意見募集)
電子政府パブリックコメントの抜粋
ナチュラルケアーズがITを使ったらナチュラルケアーズを美容系ポータルサイトに登録
ナチュラルケアーズがITを使ったら

企画特集

ネットと家電をつなぐチャレンジ「Life-X」
第一題:ライフログ・シェアリングサービス「Life-X」の第一印象は?
エンタメCGM「gooメーカー☆メーカー」エンタメCGM「gooメーカー☆メーカー」
【第2回】メーカー/占いのコンテンツを作ってみた!

新着コメント

おもしろそうですね。次回から見てみようと思います。...
「ブラッディ・マンデイ」を考察する
投稿者:きむこう
全く人ごとではなくリアルに体感出来るご指摘かと存じます。早期に収益化のは......
グッバイ、レバレッジ!(1)
投稿者:尊仁
メカに詳しいというか、パソコン操作に若干詳しい主婦ですが モテモテどころ......
メカに強いということ(iPhoneから遠くはなれて)
投稿者:加藤和江
インターネットにはすごく時間をとられる気がします。...
月5000円を得るための代償
投稿者:バナークリッコ
porepore90さん、コメントありがとうございます。もちろん、単純に民営化すれ......
福祉国家の失敗〜40年前の「断絶の時代」を読む(3)
投稿者:mugendai

ブログネットワークとは?

CNET Japan ブログネットワークは、元はCNET Japanの一読者であった読者ブロガーと、編集部の依頼により執筆されているアルファブロガーたちが、ブログを通じてオンタイムに批評や意見を発信する場である「オピニオンプレイス」、また、オピニオンを交換するブロガーたちが集うソサエティです。

広い視野と鋭い目を持ったブロガーたちが、今日のIT業界や製品に対するビジョンや見解について日々熱く語っています。

あなたもブログを書いてみませんか?

CNET Japanやその他サイトが提供するITニュースやコンテンツへの意見や分析、 ビジネスやテクノロジーに対するビジョンや見解について語っていただける方を 募集しています。ご応募はこちらから

ブログの投稿・管理

ブログの投稿はこちらから(※ブロガー専用)

ブログアワード2007開催決定!

今年最も活躍したブロガーを表彰します。詳細はこちらから

αマークって?

これは、CNET Japan 編集部の依頼に基づいて執筆されているCNET Japan アルファブロガーによるブログの印です。

Good!って?

CNET Japan ブログネットワーク内で拍手の代わりに使用する機能です。ブログを読んで、感激した・役に立ったなど、うれしいと思ったときにクリックしてください。多くGood!を獲得した記事は、より多くの人に読まれるように表示されます。

レビュー

今週の新製品総チェック:新PS3が登場!ニコンが発表した映像製品「UP」とは?
「東京ゲームショウ2008」が10月9日から開催され、新PS3やXboxの新作ゲームなど、ゲーム機の大型発表が相次
[レビュー]2011年画質を備えた高画質、多機能Blu-ray--ソニー「BDZ-X95」
ソニーのBlu-ray Discレコーダー新製品が登場した。2007年から引き継がれる「やりたいことから選ぶ」シリー
今週の新製品総チェック:よりモバイルPCとして進化した「Let's note」が登場
松下電器産業の「Let's note」、デルのデスクトップPCとPC新製品が数多く登場した。Let's noteは9時間駆動
今週の新製品総チェック:フルサイズCMOS搭載のキヤノン「EOS 5D Mark II」が登場
キヤノンからもフルサイズCMOSセンサを搭載した「EOS 5D Mark II」が登場した。合わせてコンパクトデジカメ