Python テストのカバー率 許容範囲

Python学習【365日チャレンジ!】186日目のマスターU(@Udemy11)です。

久しぶりにチャーシューを作ったのですが、めっちゃ美味しすぎて食べ過ぎちゃいました。

ほんとチャーシューって美味しいですよね。

とはいえ最近は年のせいで、次の日の胃もたれがすごくて後々後悔してしまいます。

いい年なんだから、きちんと自分の食欲をコントロールして、体調を崩さないようにしないといけませんね。

それでは、今日もPython学習をはじめましょう!

昨日の復習

昨日は、テストのカバー率について確認ができるpytest-covを学習しました。

pytest-covを使えば、すべてのコードをテストできているかどうかのカバー率を調べることができました。

テストの条件によってスキップされるコードがテストされない場合、バグが残る可能性があるので、テストのカバー率をチェックすることは大切です。

pytest-covの詳細については、昨日の記事を参考にしてください。

今日は、テストをどこまでカバーするのかテストのカバー率の許容範囲について考えてみます。

どこまでテストするのか?

昨日は、最初のカバー率が86%だったテストを100%になるようにコードを書き換えました。

基本的にテストのカバー率は100%が望ましいわけですが、メインのファイルに加えてカバー率を100%にするテストファイルを作成するのは時間もコストもかかります。

ベンチャー企業などがクライアントの場合は、資金が十分でないため、最小限のテストのみでプログラムをリリースすることがあったり、大企業や官公庁の場合は100%のカバー率を求められたり、どこまでテストするのかはクライアント次第です。

バグが生じてからパッチを当てることが増えてもテストを最小限に抑えるのか、できるだけパッチを当てる回数を減らすため、カバー率を上げるのかは、必ずトレードオフが必要になるということです。

平均的なテストのカバー率は80%以上にすることが求められるようですが、テストをしなくても問題のないコードがあるからです。

必要のないテスト

テストを実施しなくても問題のないコードはどのようなものがあるでしょう?

例えば__init__で名前を決めて、プロパティーで名前を取得する関数があったとしても、この関数をテストする必要はありません。

class TestCal(object):
    
    def __init__(self, name='test'):
        self._name = name
    
    @property
    def name(self):
        return self._name

この関数がテストするまでもないのは、初期化で得たnameをプロパティーに入れてnameを返すだけだからです。

つまり、このような関数をテストする必要はないということです。

ちょっと一息

Pythonを毎日学習していると、ちょっと一息つきたいときもあります。

とはいえ、一度休んでしまうと、そこから雪崩のように、休みたい欲求が湧き出して学習がストップしてしまうのは間違いありません。

現在継続しているPython学習は、これまでの3ヶ月という最長記録を大きく更新して、6ヶ月続けることができています。

ただ、気分の乗らないときは、軽い学習で済ますことも継続学習の秘訣といえます。

今回はサボったような感じですが、これもPython学習を継続するためと自分に言い聞かせています。

それでは明日もGood Python!

現在私が学習しているPythonのUdemy講座がこちら

Udemy講師 酒井さん プログラミング Python

超おすすめの講座です。