「...のためにユニットテストを書きません」-言い訳

TDD方法論(テストによる開発)は、実際にその利点を実際に見てきたように、私は深く信じています。 ソフトウェア開発を新しいレベルの品質と成熟度に引き上げますが、まだ普及していません。 機能、時間、品質のいずれかを選択するときが来ると、常に品質が低下します。 通常、テストに時間を費やしたり、リリースされた機能の量を譲歩したりすることは望ましくありません。 プロジェクトの最初からTDDテクニックを使用する予定がなかった場合、それに切り替えることは非常に困難です。

みんな聞いた 誰かがTDDを使用しない理由はたくさんありますが、「 Pragmatic Bookshelf 」シリーズの「 JUnitを使用したJavaでのプラグマティックユニットテスト 」よりも優れた選択肢が1箇所に集められています。 私は数年前にこの本を読みましたが、この本を読んだ後に責任のある開発者が一人もいないことは、単体テストが開発者の仕事の最も重要な側面の1つであると感じずにはいられないと思いました。

私が聞いた最も心配な言い訳は、「 私のコードはテストするのが難しすぎる 」ということです 。 これには2つの説明があります。 1つのことは、ほとんどのコードがUI(ユーザーインターフェイス)を描画し、UIテストの自動化が複雑すぎることです。 UIテストの自動化は難しい(可能ですが)ことに同意しますが、可能な限りすべてを自動化する必要があります。回帰テストについて考えてください。 UIを含む完全に自動化されたテストスイートがある場合、コードに新しい変更を加えることができ、何も破損していないことを完全に確信できます。

コードをテストするのが非常に難しい理由の2番目の説明は、設計が複雑すぎるということです。 おそらく、ロジックとUIコードは非常に密接に関連しているため、自動UIテストがない場合、この依存関係はあなたの人生を複雑にします。 これは、ユニットテストが優れたデザインの作成に役立つ場所です。 JUnitの使用は非常に簡単なので、ロジックを持つ別のレイヤーのみを選択してテストを作成できる場合は、UIが使用するすべてのロジックを自動的にテストできます。 なに? ドメインモデルがありませんか? 次に、モックオブジェクトを使用します。これには多くのライブラリがあります。

この本をまだ読んでいない人のために、人々がユニットテストを使用しない理由の簡単な概要を説明します。



他の言い訳はこの本にリストされています。 しかし、これらは基本的なものです。 どんな言い訳を聞きましたか?

Source: https://habr.com/ru/post/J112685/


All Articles