失敗しないテストを検出する自動化された方法、最小コード カバレッジを達成するためにチェックインされていますか?
-
01-07-2019 - |
質問
私には、絶対に失敗しないテストを作成することでコード カバレッジを回避する開発者がいます。
コードはひどいものですが、テストはassert(true)なのでそれをキャッチしません。
私はコードレビューをしていますが、常に全員の仕事をすることはできません。このような人々に良いソフトウェアを作る動機を与えるにはどうすればよいでしょうか?
失敗しないテストを検出するためのビルド プラグインはありますか?
C#、mbUnit テスト。
解決
本当のモチベーションは内側から湧き出てきます。人によっては、できる限りの理由で、チャンスがあるたびにシステムを利用しようとする人もいます。単純にハッキングだからという理由でそれを行う人もいます。
つまり、あなたがマネージャーであると仮定して、開発者と「イエスに会いに来る」ミーティングを行ってください。それでもうまくいかない場合でも、扉は必ずあります。
あなたがマネージャーでない場合は、適切なチャンネルに取り上げてください。
他のヒント
ここであなた自身の質問はほぼ答えられたと思います。あなたのために誰かが働いている場合、またはあなたと一緒に働いている人がいる場合(あなたがこの開発者のマネージャーであるかどうかは明らかではありません)、その人が適切に仕事をしていない場合、その人にそのことを明確にするために利用できる手順が確実にあります。許容できる基準に沿った作品を制作していない。
開発者は TDD を初めて使用しますか?おそらく、良いテストを書くなどの指導が必要になるでしょう。そうでない場合は、彼らは腹を立てて、テストが自分が作成しているコードより重要であるかのように強調する必要があります。
そうそう、プラグインについては忘れてください。現在行っているのと同じコード レビューを行うだけで十分です。
使用している言語/フレームワークを実際に指定する必要があります。
最も単純なケースでは、簡単に検出できるはずだと思います assert(true)
シンプルな文字列 grep
-ピング。
アプリケーション構成値のガベージを使用してテスト実行をいつでも試すことができます。
合格したテストは疑わしいものですか?
失敗しないテストを探すことに時間を費やす代わりに、テストを少し拡張して、さまざまな方法でコードを失敗させてみてはいかがでしょうか。そうすれば
- より良いテストの書き方を彼に教えてください
- コードを修正するよう強制し、さらに悪いコードがチェックインされるのを防ぎます。
バグのあるコードを使用する必要がある場合は、それが機能することを確認する必要があるため、出発点としては良いでしょう...
彼がテストしているインターフェイスを最も単純な形に縮小します。言い換えれば、クラス/メソッドのシグネチャを取得し、それ以降はコンパイルに必要なコードのみを追加します。それに対してテストを実行してください。プログラムが何もしないのにテストが合格する理由を彼に尋ねてください。
すでにテストに感染している 2 人以上の開発者によるコード レビューは、おそらく、自動化された単体テストが実際にはそれほど難しくも珍しいものでもないことを問題の開発者に理解してもらう最良の方法です。各レビューに 2 人のテスト感染開発者が参加することは、彼にとって高品質の単体テストの重要性を強化することになります。また、十分にテストされている他の開発者のコードのレビューを彼に割り当てると、単体テストの方法を学ぶのに役立ちます。
いくつかやってみるといいでしょう 突然変異試験, 、弱いテストを検出します。 ネスター, (.Net に相当するもの) 道化師) は便利なツールの 1 つです。
ぜひ様子を教えてください!
アップデート:私は遭遇しました: 「なぜほとんどの開発者は単体テストを書かないのでしょうか?」 ここも読んでみると良いだろうと思いました。
まず彼に失敗するテストを書かせるように努める必要があると思います。彼にその習慣を身につけさせてみましょう。多くの場合、単体テストを初めて使用する人は、単体テストを作成するのに苦労します。
また、「考えられるすべてのコード パスを探索する」のに役立つツールがいくつかあります。見てみることをお勧めします。 PEX これにより自動テストが生成され、コードが壊れる可能性が高くなります...これは最適な解決策ではないかもしれませんが、共有コードベースの概念を促進するように努めてください。
開発者にプログラムをペアにしてもらいます。他の誰かと同じ機能で作業しているときは、「怠惰になる」のがはるかに難しくなり、コードの所有権が分散されます。」について話しているので、あなたはこれをしていないようです。彼の「コード。2 人が同じ仕事に取り組んでいると、どれだけのことができるか驚くかもしれません。品質は大幅に向上します。
また、単体テストはすべての問題を根絶する聖杯ではありません...これらは自由に使えるツールの 1 つであるはずです。
コードカバーの要件は何ですか?