[解決済み】ユニットテストとは何ですか?[クローズド]
質問
特定の言語でユニットテストを行うための「方法」を尋ねる質問は多く見受けられますが、「何を」「なぜ」「いつ」行うかを尋ねる質問は見当たりませんでした。
- それは何ですか?
- どんな効果があるのですか?
- なぜ使う必要があるのですか?
- どのような場合に使用するのか(また、どのような場合に使用しないのか)?
- よくある落とし穴や誤解は?
どのように解決するのか?
ユニットテストとは、大雑把に言うと、コードの断片をテストコードで分離してテストすることです。すぐに思いつく利点は、以下の通りです。
- テストの実行が自動化され、繰り返し実行できるようになります。
- GUIによるポイント&クリックテストよりも、はるかに細かいレベルでのテストが可能です
テストコードがファイルに書き込んだり、データベース接続を開いたり、ネットワーク上で何かを行う場合は、統合テストに分類する方が適切であることに注意してください。統合テストは良いことですが、ユニットテストと混同してはいけません。ユニットテストのコードは、短く、甘く、素早く実行できるものであるべきです。
ユニットテストのもう一つの見方は、テストを先に書くということです。これはテスト駆動開発(略してTDD)と呼ばれるものです。TDDはさらなる利点をもたらします。
- 将来必要になるかもしれない憶測のコードを書かない -- テストをパスするのに必要なコードだけを書く
- 書いたコードは必ずテストでカバーされる
- テストを先に書くことで、コードをどのように呼び出すかを考えざるを得なくなり、通常、長い目で見てコードの設計が改善されます。
もし、今、ユニットテストをやっていないなら、始めることをお勧めします。xUnitの本であれば、どんな本でも構いません。
ユニットテストを書くことが苦痛になることがあります。そのようなときは、助けてくれる人を探して、"ただクソコードを書け"という誘惑に耐えてください。ユニットテストは、皿洗いのようなものです。いつも楽しいわけではありませんが、あなたの比喩的なキッチンをきれいに保つことができます。)
編集部:そんなによくあることなのかどうかわかりませんが、ひとつ誤解を思い浮かべました。プロジェクトマネージャーが、「ユニットテストのせいでチームはすべてのコードを2回書かされた」と言っているのを聞いたことがあります。もしそう見えるし、そう感じるとしたら、まあ、やり方が間違っているのでしょう。テストを書くことは通常、開発をスピードアップさせるだけでなく、他の方法では得られない便利な "now I'm done" インジケータを提供するのです。
関連
-
[解決済み】Assert.Fail()はバッドプラクティスとみなされるか?
-
[解決済み] フェイク、モッキング、スタビングの違いとは?
-
[解決済み] ユニットテストの妥当なコードカバレッジは何%ですか(とその理由)?[クローズド]です。
-
[解決済み] ユニットテストは努力に値するか?[クローズド]
-
[解決済み] C# "internal "アクセス修飾子でユニットテストを行う場合
-
[解決済み] ユニットテストとインテグレーションテストの違いは何ですか?[重複あり]
-
[解決済み] データベース駆動型アプリケーションのユニットテストに最適な戦略とは?
-
[解決済み】典型的なテストディレクトリ構造でunittestを実行する
-
[解決済み】Angular / TypeScriptのプライベートメソッドのユニットテストをJasmineで記述する方法
-
[解決済み] 例:無効なutf8文字列?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] MOCKITOとは何か、Junitとはどう違うか
-
[解決済み] Pythonの "assert "はどのように使うのですか?
-
[解決済み] プライベートメソッドをテストすべきか、パブリックメソッドのみをテストすべきか?[クローズド]
-
[解決済み】ユニットテスト、インテグレーションテスト、スモークテスト、リグレッションテストとは何ですか?終了
-
[解決済み】mochaのテスト用ディレクトリを指定するには?
-
[解決済み】Angular 2 Unit Tests。名前 'describe' が見つからない
-
[解決済み] いつモックすればいい?
-
[解決済み] 抽象クラスのテスト
-
[解決済み] ユニットテストとは、どのようなもので、どのように行うのですか?[重複あり]
-
[解決済み] スタブとは?