タグ

programmingとtestに関するmizogucheのブックマーク (23)

  • RSpecによるユニットテストの書き方 — recompile.net

    2012年04月19日 最近、新人のテストコードを見る機会があり、ユニットテストの書き方について考える機会があった。ユニットテストはテンプレートみたいなものがあるので、それさえ押さえれば、誰でも簡単に書くことができる。 ここでは、その方法について紹介したい。サンプルはRSpecで書くが、その他のユニットテストフレームワークでも、応用ができるとおもう。 はじめにごく単純化すると、テスト対象は状態を持ち、入力を与えると何らかの出力を行なうものである。入力が変われば出力は変化するし、状態が変化すると入力が同じでも出力が変わる(かもしれない)。 ユニットテストは、テスト対象の状態を操作し、与えた入力によって意図通りの出力を得られるかを確認する作業のことをいう。なので、ユニットテストを書くときには、オブジェクトの状態ごとにメソッド単位で入力と出力を確認するようにする。 RSpecの疑似コードで書くと

    RSpecによるユニットテストの書き方 — recompile.net
  • テストが間違ってたら? - 日々常々

    「テストが間違ってたらどうするんだ」 自動テストの話をするとよく言われます。テストが間違ってたらわからないじゃないか。手動テストであれば、注意深く目で確認していれば間違いに気づけると言う主張です。 「目で確認していれば気づける」のは間違いではありません。必ず気付けるわけではありませんが、十分な知識を持った人が、十分な集中力と責任感をもってエビデンスを確認すれば、誤りに気付ける可能性は高いと思います。 品質(主に機能性)を目的とした自動テストでも、それを行う必要があります。それがテストコードのレビューです。 手動テストの場合、テスト実施前に手順や確認項目のレビュー、実施中の確認、実施後のエビデンス確認と、人が確認するタイミング*1が三カ所あります。 これに対し自動テストの場合、テストが書かれた時のみ。実行中は勿論、実行結果の確認に注意はありません。ただ成功か失敗かだけなので。ならば、テストコ

    テストが間違ってたら? - 日々常々
  • よい単体テストの特徴と、書くためのヒント - builder by ZDNet Japan

    Alan Cooper氏著の「The Inmates Are Running the Asylum」(邦題「コンピュータは、むずかしすぎて使えない!」)で、同氏は「軍艦にコンピュータが導入されたら何が起こるか」という問いを発している。同氏は、米国のミサイル巡洋艦ヨークタウンが大西洋で艦隊行動を行っていた際に起きた事件を例に挙げた。その時、海軍の技術者は燃料バルブを調整しており、艦上管理コンピュータの1つにゼロを入力した。すると、プログラムは入力されたゼロの値で別の数を割ろうとして(この解は数学では未定義となる)、ドカン!制御システム全体が完全にクラッシュしてしまい、海岸に曳航できるようになるまで、何時間も水上で立ち往生してしまったのだ。 この艦の管理システム全体が、設置前にはまったくテストされず、なんらかの形のテスト運用も行われなかったというのは考えにくいことだ。このシナリオは、「当に?