テスト

テスト

プレゼンテーション

自己紹介

  • d:id:satzz
  • はてな運用チームアルバイト
  • はてなでの仕事を例にテストについて少し話します

テスト

  • テスト書いてる・書いたことある人?
  • テストって何」な人?
  • というか僕もまだまだ初心者です

テスト

はてなのジョエルテスト

仕様書を持っているか? Yes. テスト駆動開発なので、テストが動く仕様書。

はてなインターン1週間のまとめ - Gemmaの日記

テスト

テストにこけるようなモジュールは作者がやる気ないことがほとんどです。

テストが全部 FAIL しているようなモジュールはつかわない方がいいでしょう。

CPANモジュールの選び方 - モダンなPerl入門 - モダンなPerl入門

テスト

CPAN ではテストを t/ というディレクトリ以下におくのですが、このディレクトリの中身がさびしいモジュールはつかわない方がよいでしょう。

十分にテストされていないモジュールを使うことは自分の時間を浪費することにつながります。

モジュールのコード量に比例して十分な量のテストがなくてはおかしいです。

CPANモジュールの選び方 - モダンなPerl入門 - モダンなPerl入門

テスト

  • テストは仕様書でありコード
  • テストが充分なされているか
    • ソフトウェア品質の信頼の目安

テスト駆動開発(TDD)

TDDでリファクタリング

こんな感じですか?わかりません><

テストが通る?

  • 客観的に判断
t/10.twitter....ok 1 - Twitter1
ok 2 - Twitter2
ok 3 - Twitter3
ok 4 - Twitter4
ok 5 - Twitter5
1..5
ok
All tests successful.
Files=1, Tests=5,  1 wallclock secs ( 0.42 cusr +  0.17 csys =  0.59 CPU)

Perlの場合

などのモジュール

データ駆動型テスト

  • データを流し込むタイプのテスト
  • テストに仕様(入力と出力)を書くだけのかんたんなお仕事

On the Job

  • はてなダイアリーを新しいブログパーツに対応させたい!
<embed src="http://twitter.com/flash/twitter_badge.swf"  flashvars="color1=3368550&type=user&id=6287672"  quality="high" width="176" height="176" name="twitter_badge" align="middle" allowScriptAccess="always" wmode="transparent" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />

On the Job

  • はてな記法を拡張したい!
=== id notation
--- input
d:id:satzz
--- expected
<a href="http://d.hatena.ne.jp/satzz">d:id:satzz</a>

More

More

  • テスト駆動開発入門
    • メタプログラミング
      • テスティングフレームワークをテスト駆動開発で実装
      • テストを実行するためにテストツール自体を開発するのは、自分で脳手術を行うのと少し似ていて…」

More

  • 振る舞い駆動開発(BDD)というのもあるらしい…

* はてなダイアリーキーワード:テスト