Help us understand the problem. What is going on with this article?

単体テストの目的

More than 1 year has passed since last update.

単体テストの目的

新しく書いたコードの動作確認のため

クラスやメソッド単位で動作確認ができる。

テストコードの無いクラスは、「動作確認未実施のクラス」だと思え。

テストコードをよく書く人は、テストコードが無いと、自分が書いたコードだとしても信用できないようになるだろう。

リファクタリング前後で、仕様を満たし続けていることを確認するため

クラス内部のリファクタリングを行ったときに、リファクタリング前のテストが、リファクタリング後も成功していることで、デグレが起こってないことを確認できる。

この目的の達成のためには、「内部実装の変更によって、テストコードに影響が出る」ようなことがあってはならない。
テストコードに手が入ると、「変更前の仕様を、変更後も満たし続けていること」が証明できないためだ。

そのためには、かなりしっかりとクラス設計を考えないといけない。
実際、「テストコードに手を入れずに、全テストの成功を保ち続けること」はかなり難しい。

単体テストの目的でないもの

コードカバレッジを上げるため

コードカバレッジを上げるために単体テストを書くのは、間違っている

プロジェクトのC0コードカバレッジ率の目標値を達成させるために、「とりあえず通してみました」といったテストが量産されているのを見たことがある。

テストケースが十分に網羅できていれば、コードカバレッジは自然と上がるのだ。
コードカバレッジを上げることが目的ではない。コードカバレッジはあくまでもコードの品質を計るための手段である。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした