[解決済み] ユニットテストは努力に値するか?[クローズド]
質問
私が所属するチームでは、ユニットテストを開発プロセスに統合しようと取り組んでいますが、懐疑的な人もいます。チーム内の懐疑的な開発者にユニットテストの価値を納得させる良い方法は何でしょうか?私の具体的なケースでは、機能追加やバグの修正に合わせてユニットテストを追加しています。残念ながら、私たちのコードベースは簡単にテストできるようなものではありません。
どうすればいい?
私たちの会社では、毎日こんなやりとりがあります。
<ブロッククオート私はユニットテストが大好きなんです。
細部は日々変わるが、心情は変わらない。ユニットテストとテスト駆動開発(TDD)には、明白な利点だけでなく、隠れた個人的な利点がたくさんあり、実際にやってみるまでは、誰かに説明することはできません。
しかし、そんなことはお構いなしに、私の試みはこうだ!
-
ユニットテストは、コードに大きな変更をすばやく加えることを可能にします。テストを実行したからには、それが動作することが分かっているわけで、必要な変更を加えるときには、再びテストを動作させる必要があります。これは時間の節約になります。
-
TDDは、コーディングをやめるべきタイミングを悟るのに役立ちます。テストをすることで、「もうこれで十分だ」と自信を持ち、手を加えるのをやめて次のことに移ることができるのです。
-
テストとコードが連動して、より良いコードを実現する。あなたのコードは悪い/バグだらけかもしれません。テストが悪い/バギーである可能性があります。TDDでは、以下の可能性に賭けています。 両方 バグの可能性は低くなります。多くの場合、修正が必要なのはテストの方ですが、それでも良い結果です。
-
TDDはコーディングの便秘を解消します。大きくて大変な仕事を前にしたとき、テストを書くことですぐに動き出すことができます。
-
ユニットテストは、あなたが作業しているコードの設計を本当に理解するのに役立ちます。何かをするためにコードを書くのではなく、コードに課されるすべての条件と、そこから期待される出力の概要を説明することから始めるのです。
-
ユニットテストでは、視覚的なフィードバックを即座に得ることができます。とても満足感があります。また、中断した後、中断したところから再開するのも簡単です。というのも、次の赤信号を修正する必要があるかどうかがわかるからです。
-
一般的に信じられていることとは異なり、ユニットテストは、2倍のコードを書くことや、より遅いコーディングを意味するものではありません。一度コツをつかめば、テストなしでコーディングするよりも速く、より堅牢になります。テストコード自体は、通常、比較的些細なものであり、あなたが行っていることに大きなオーバーヘッドを追加することはありません。これは、実際にやってみないとわからないことです :)
-
ファウラーだったと思うが、「不完全なテストを頻繁に実行することは、全く書かれない完璧なテストよりもずっと良い」と言った。私はこれを、たとえ私のコードカバレッジの残りがひどく不完全であったとしても、最も有用と思われる場所にテストを書くことを許可してくれていると解釈しています。
-
優れたユニットテストは、何かが何をすべきかを文書化し定義するのに役立ちます。
-
ユニットテストは、コードの再利用に役立ちます。あなたのコード と テストを新しいプロジェクトに移します。テストが再び実行できるようになるまで、コードをいじってください。
私が関わっている多くの仕事は、ユニットテストがうまくいきません(ウェブアプリケーションのユーザーインタラクションなど)が、それでもこの店では全員がテスト感染者で、テストが結びついたときが一番幸せなのです。このアプローチはとてもお勧めできるものではありません。
関連
-
[解決済み】Javaプロジェクト。ApplicationContextのロードに失敗しました
-
[解決済み] フェイク、モッキング、スタビングの違いとは?
-
[解決済み] C# "internal "アクセス修飾子でユニットテストを行う場合
-
[解決済み] データベース駆動型アプリケーションのユニットテストに最適な戦略とは?
-
[解決済み】ユニットテストと機能テストの違いは何ですか?
-
[解決済み】Unit Testsの一般的な命名規則にはどのようなものがありますか?[クローズド]。
-
[解決済み] いつモックすればいい?
-
[解決済み] モッキングフレームワークにおけるモッキングとスパイの比較
-
[解決済み] 既存のプロダクションプロジェクトにユニットテストをうまく追加することができますか?もしそうなら、どのように、そして、それは価値があるのでしょうか?
-
[解決済み] ファイルシステムに依存するコードの単体テスト
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Javaプロジェクト。ApplicationContextのロードに失敗しました
-
[解決済み】Assert.Fail()はバッドプラクティスとみなされるか?
-
[解決済み] Gradleを使用して1つのユニットテストクラスのみを実行する方法
-
[解決済み】Angular 2 Unit Tests。名前 'describe' が見つからない
-
[解決済み] モックオブジェクトは何のためにあるのか?
-
[解決済み] クロームの拡張機能をテストするには?
-
[解決済み] ユニットテストはゲッターとセッターのために書くべきですか?
-
[解決済み] Goでテストカバレッジを測定する方法
-
[解決済み] GTestとCMakeを使った作業の始め方
-
[解決済み] スタブとは?