2010-12-10 5 views
1

私はまだルビー/レールのスペースのなかで自分のことを少しは考えていましたが、どのようにしてレールアプリをテストしたいと思うかについて興味を持っています。使用といつ。私の現在の方針は、私が行っているプロジェクトの流れに沿って行くことですが、それはテクノロジーとカバレッジレベルの両方で一貫性のない結果をもたらしました。唯一の一貫性はテストの最初の開発スタイルにあります。Ruby/Railsテストプラクティス

コントローラ、モデル、ヘルパー用のRspec、ファンクション用のキュウリ(テストの最初の開発を容易にするため)、トリッキーなコードのためのTest :: Unitをバックフィルしますか?キュウリを持つすべての機能?放棄テスト::ユニット?テスト::モデルとヘルパーのユニット、そして他のすべてのためのキュウリ?

ご意見をお寄せください。

答えて

3

テストアプリケーションに関しては、テストフレームワークや方法論よりも重要なことの1つは、テスト可能なコードを書くことです。

テスト駆動型の開発アプローチを使用している場合は、当然テスト可能なコードを書く傾向がありますが、それでも自分自身に適切な機能を与えることに重点を置く必要があります。目標は透明なアプリケーションを作成することです。集中する

事のいくつかは以下のとおりです。

  • 特定の機能に焦点を当て、あなたの方法を維持し、1つの方法と他の間で明確なハンドオフ・ポイントを提供します。
  • 不必要に情報をあまりにも多く露出させることなく、ユニットレベルのオブジェクトの内部に十分なイントロスペクションを提供します。
  • 一貫性のある用語と命名規則を適用して、コントローラとモデル空間をより密接にマッピングする方法で構造化されたHTML文書を作成する。

私はいつもテストは魔術師のことと似ていると考えています。魔術師は、彼らが何をしているのか、結果は何かを明確にしますが、プロセス自体は必ずしも説明されていません。これは、結果を知りたいソフトウェアのようですが、実装の詳細には関係しません。

典型的な魔法のルーチンは、パフォーマーが帽子をかぶっているような、そして帽子が空であること、袖の上に何もないこと、帽子が頑丈で重さがほとんどないこと何とかウサギを帽子から引き抜くことになるだろう。

個人的に私は単体テストを書くことに重きを置く傾向があり、コントローラーを薄くして機能テストに重点を置かないようにしています。機能テストは、ページをレンダリングする際にシステムが非常に多くの状態になる可能性があるため、正しく取得するのは非常に難しい場合があります。これらのうちのほんの一部しかテストできないので、検証の優先順位を付ける必要があります。

インテグレーションテストは、明確に定義され、欠陥のコストが非常に高い成熟アプリケーションではうまく機能しますが、品質管理の徹底的で厳格なアプリケーションよりも作成に時間がかかることがあります。不正な統合テストを行うと、誤ったセキュリティ感覚が得られ、実際にアプリケーションの品質が低下する可能性があります。

完全な回帰テストの構築と維持に専念できる専任のQA部門がある場合は、統合テストが有益です。しかし、平均的な開発者にとっては、それは努力の重複を生み出し、生産性を著しく損なう可能性があります。多くのことと同様、トレードオフです。

+1

良い点、魔術師の素晴らしいアナロジー。私は、成熟したアプリケーションだけでなく、フローを稼働させるために、統合テスト(キュウリ)に大きく依存しています。外部はキュウリで、RSpecのテストモデル(時にはコントローラーが伝統的なコントローラーよりも優れている場合もあります)がありますが、それぞれの仕様は食べ物のチェーンの下部にある行動や隠れている部分に関するものです。 – iain