愛車:マツダアテンザ
Webを中心とした、ビジネス&テクノロジーに関する思いつき
by F-shin
[ このサイトについて ] [ F-shinについて ] [ トップ ]
author:えふしん
photo_20.jpg
藤川真一について


モバツイの中の人
人の良いジョンカビラと言われます。ソフト哲学者を目指します。
AMN sponsor rolls
応援します!
ツイッターやるなら
for iPhone App
Google Friend Connect
このカテゴリ[Web系]の最新30件
ワーナー作品のオンデマンド配信サービス「ワーナーオンデマンド」 動画ベーススライドプレゼンよりも、スライドベース動画プレゼンの方がWeb向き。 mixiアプリやるならAmazon EC2 モバツイが月間1億PV到達の見通し ツイッターとはなんぞや?のわかりやすい回答 ツイッターか?ブログか?思考の整理学 【Best Mobile Based Twitter App】モバツイッターがTOP5にノミネートされました。投票のご協力を!【敵はtweetie2】 【Best Mobile Based Twitter App】モバツイッターのOpen Web Awardsへの投票のご協力をお願いします! モバツイッターが日経ビジネスアソシエに掲載されました。 ネットビジネスで商標は大事です。 twitterによって世界が集約され心の戦争が起きる おまとめマンxTwitterキャンペーン セカイカメラは、21世紀のネットスケープになるか?! 「食事中なう」が無意味だと?あれ?ライフログってなんだか意味わかってる? 岡田有花さんに取材された! EC2のロードバランサーのIPアドレスが変わる罠 twitterの「つぶやき」の有効期間は2分 究極のスモールスタートの方法 自宅サーバからEC2へ 技術や用語に興味ないユーザーを「一般ユーザー」と括るのキケン アマゾンEC2 ナイトセミナ 第 2 回に出演します。 モバツイッターの政治家アカウント一時サスペンドの話 【twitter話】ネットを使う人には2種類のタイプがある ビバ☆ヒウィッヒヒーは、ネットコミュニケーションの問題をズバリ突いている うっかりしてたらモバツイの延べ登録ユーザー数が10万人を超えていました。 POPitがカラメルの商品紹介&アフィリエイトに対応! twitterは「みんなのもの」じゃない。 入力フォームの美学と現実 日本人にとって一番使われてるハッシュタグ ツイッターはステートレスなコミュニケーションでありつづけて欲しい。 夜のプロトコル「NO_04「We love twitter & tumblr.」~あの娘、ぼくがリブログ決めたらどんな顔するだろう~」に参加した。
[このカテゴリをもっと見る]
F's Garage関連
Powered by
Movable Type
■お知らせ
モバツイッターが、Open Web AwardsのBest Mobile Based Twtter Appを受賞しました!

May 06, 2008

ユニットテストって奴ですか?実は、そういうテストフレームワークをまだ使ったことがない。

テスト処理がフレームワーク化されてると良いなーと思ったのは、

マイカラメルのブクマ処理
スケーラブルWebサイトに書いてあった、flickrでメールのエラーケースを蓄積していくくだりの記述を読んだとき。
・CPANモジュールなどのインストールを見ていて。

あたりかな。マイカラメルのブックマーク機能は、pookmarkのコードを流用してるんだけど、Amazonや楽天を想定したブックマーク以外に、カラメルサイト内のブックマークだったり、アフィリエイトコードが含まれたURLの処理だったりと、いろいろ拡張してるんですが、これが思ったより結構複雑になって、最初は何かを修正したらアレが動かない、コレが動かない、なんてことが多少あった。

そうするとテストケースが複雑になって、何度もテストをするのが大変なので、ここはテストフレームワークを使って簡単に繰り返しテストができると楽ちんだし安全だとは思う。

これは「スケーラブルWebサイト」に書いてあったflickrでのメール処理のトラブル対処でも同じ事をが言える。

また、ビジネスロジックを担うクラスが、viewとは違う世界に存在する場合に切り離してテストしたいというのは自然なことだから、そういうケースに限られるのかな。


ローカルな開発でロジックレベルのテストってのは、「F's Garage:どのレベルのフレームワークが一番良いのか。」ではあってもなくても良いってのを書いた。

フレームワークを覚えるのは、その利便性よりも遙かに面倒くさいというのはあると最近思うようになってきたのでぶっちゃけてしまうが、テスト処理なんて必要だったら自分で書けばいいじゃんと思っている。

多分、僕がテストフレームワークを全然覚える気が起きないのは必要としていないからだと思う。

必要とした時に便利なテストフレームワークがあるから使ってみるのは、大変良いことであるが、別に過去に良いテストフレームワークがなかったからと言って、テストをしなくてよかったわけじゃない。

Java ServletでMVCアーキテクチャというものに触れたときに、まず最初にやったのはデザインを組み込む前に、データロジックのテストをしましょう、ということだった。

Modelのコードを、コマンドラインのプログラムから実行することができるのは良いなぁと思ったものだ。

OOPを勉強して最初に、いわゆるO/Rマッパーを自作したんですね。あの頃は、SQL文なるセマンティックな文法を手書きで書いてテストするのが嫌だったから、その部分は自動化したかった。(それはHibernateも多分、存在してなかったころのJava固有の不便があったからで、PHPなどではSQLは自分で書いた方が早いと思ってる)

だから、いわゆるCRUDのコードを簡単に呼び出せたらうれしいじゃないですか、と言うことで、DBアクセスのフレームワークを作ったんですね。

ただし、JavaBeansはecliseを使ってたものの結局は手打ちだし、where句以降はメソッドの引数と連動して手打ちだったし、1:Nの関係性などもあるし、フレームワークに連動するひな形のコードを用意して、そいつをカスタマイズするというアプローチだった。

確か開発が一ヶ月ぐらいしか時間がなくて、各機能パート毎でDBアクセスをまかなうロジックを3日ずつで作る人と、できあがったロジックを使って画面制御を作る人とで分業しましょう、みたいなスケジュールだった。しかも、後者の仕事は新たに人を採用するというリスキーな状況。

だからロジックを作る人のクオリティの担保は重要だったし、画面を使うことなくテストが必要だったので、コマンドラインのjavaプログラムでテストコードを書いてもらった。ダミーデータをinsertして、selectして同じデータになることを確認して、変更反映確認して、最後にデータ削除してOK?みたいなシナリオで。

そもそもデザイン工程が混乱していて、画面のHTMLが上がってくるのが遅れていたから、ロジック部分だけ先に開発しましょう、というのが理由だったと思う。


ただ、そうするとテストプログラムにカラム名の即値が書かれてしまうのでDBの設計変更が起きるたびにテストプログラムを書き換えなきゃいけない。特に数値型の変更なんかあった日にゃ、型違いのエラーになってしまうので、結構面倒くさい。

最初だけ作ってたけど、画面ができてからは使わなくなってた。

そんなところが僕の記憶にあって、テストケースを必要とするのは、入力値によって挙動が変わるケースが多数ある場合に、機能追加や修正後に互換性チェックを行う時に限られるのかなと思っています。

テストケースのメンテナンスが面倒であまりやってないとかってのは、どんなフレームワークを使ってもあるんじゃないかと思うんですがどうなんでしょ。

ということでユニットテスト自体が、イマイチ、ピンと来ないんですよね。


みなさんはWEB開発でユニットテストってやってますか?
どんなときに、あぁこれがあって良かった、と思いましたか?

■同じカテゴリ[Web系]のエントリー
<<前の記事 SELECT * fromについての話
>>次の記事 検索「ツイッター」、でモバツイッターが一切出てこない
■このblogの書き込み最新3件
グッドデザイン賞に出てたおしゃれなサイクロン掃除機がなんと半額以下。 SEOには、運用のSEOと設計のSEOの2つのフェーズがある。 ワーナー作品のオンデマンド配信サービス「ワーナーオンデマンド」
この記事への提案、提言一覧
この記事への提案、提言









あなたの情報を保存しますか?