0

私は少しテストを始めましたが、アプリでなぜそれを行う必要があるのか​​ まだわかりません。私はこのクラスを持っているとしましょう

class Human

  attr_accessor :age

  def initialize
    @age = 0
  end
end

そしてこのテスト

describe Human do
  kid = Human.new
  kid.age.should == 0
end

テストに合格しました。みんな幸せです。しかし、私たちは本当に何を達成したのでしょうか? これはもちろん非常に単純な例ですが、私の言いたいことを表現しています。このようなテストで得られる情報は何ですか?

4

1 に答える 1

3

あなたの例では、コードは非常に簡単であるため、テストは価値があるよりもはるかに面倒です。非常に単純なアプリケーションを作成する場合 (それで問題が解決する場合は問題ありません)、それで問題ありません。

ただし、現実の世界ではほとんどの場合、いくつかの理由でテストを作成する必要があります。

  • 自分でコードが期待どおりに動作することを確認してください。
  • バグが発生した場所を特定するのに役立ちます。テストを見て、呼び出しチェーンに沿ったどのコンポーネントが完全にテストされているかを確認し、そうでないものを見つけることができます (当面の場合)。これは、エラーを再現し、その原因を特定するのに役立ちます。
  • 自動化を可能にします。記述したテストは、継続的インテグレーション サーバーによって永久に実行できます。このようにして、途中で行った変更によって、以前は機能していたものが壊れていないことがわかります。
  • ドキュメンテーション。人々があなたのプロジェクトに参加するとき、または数か月前に行ったことをなぜ行ったかを思い出す必要があるときは、読むのが退屈でおそらく最新ではない多くのドキュメント テキストよりも、コードを確認する方がはるかに優れています。テストは、コンポーネントがどのように機能し、相互作用するかを示しています。
  • コードを書きたいときに、どのように見えるべきか、API がどうあるべきか、実際にはわからないことがあります。最初にテストを書くことで、その API を洗い出し、何をする必要があるかを理解することができます。

もちろん、機能が進化するにつれてテストを破棄できるように、テストは安価に作成する必要があります。また、高速で実行する必要があり、その方法に関する文献はたくさんあります。多くのチームはテストが下手なので、面倒になり、やめてしまいます。難しいことではありませんが、上手になれば、テストは非常に強力です。

それが役立つことを願っています。

于 2013-10-27T15:27:33.477 に答える