1ヶ月でWebデザイン・プログラミングスキルをオーダーメイドのカリキュラムで学べるスクール、それがWebCamp。

子供の想像力を伸ばしアイデアを形にする小学生向けプログラミング教室「プロスタキッズ」

あなたも書いてない?テストコードのアンチパターン6選!

Pocket

はじめに

テストをどれぐらい重要だと思っていますか?

ソフトウェアの品質を保つためには、テストが必要不可欠です。
テストされていないコードは存在していないも同じ、という方もいるぐらいです。
プログラムはとても複雑ですから、人間が一発で間違いのないコードを書くことはほとんど不可能でしょう。どんな有能な人物でもバグを避けることはできません。

この記事では、テストを書いているプログラマーの方のために、テストコードで陥りやすいアンチパターン(悪い例)についてお伝えしていきます。
ぜひご一読して、アンチパターンにはまらないようにしましょう。

不必要なテストがある

ありがちなのが、テストのためのテストになっていることです。
テストを書くことが目的になっていて、意味のないテストを書いてしまうことがあります。
無意味なテストは、テストの実行時間を伸ばすだけなので削除しておきましょう。

特に、絶対に失敗しないテストはほとんど無価値です。
エクストリームプログラミングのプラクティスである、テストファーストを実践すると無意味なテストが生まれるのを阻止できます。

必要なことがテストされていない

テストケースに抜けがあり、必要なことがテストされていないパターンです。
事前にテスト仕様書を作成するなどして、どんなテストが必要になるのかリストアップしておきましょう。テストには漏れや重複がないことが理想です。
ソフトウェアの品質を担保できるテストコードを作成しましょう。

テスト前に大量の準備コードが必要になる

基本的に、テスト前には対象のオブジェクトをセットアップするなど、テストを実行する準備が必要です。少量であれば問題ありませんが、テストの準備にあまりに大量のコードが必要になるようでは問題です。テストがやりづらくなるだけでなく、テストの意図がわかりにくくなってしまうでしょう。

テストの準備に大量のコードが必要になる原因は、テスト対象に関連するオブジェクトが多すぎるか、テスト対象に機能を詰め込みすぎている可能性が高いです。
テスト対象を複数クラスに分割するなどして、もっとシンプルにテストしやすくしましょう。

ひとつのテスト対象に膨大なテストがある

ひとつのテスト対象に膨大なテストコードがあり、テストの見通しが悪くなっている場合があります。
これは上記の問題と同じで、テスト対象に機能を詰め込みすぎている可能性が高いです。
巨大過ぎる万能クラスを複数のクラスに分割し、テストの見通しをよくしましょう。
クラスには関連性が強い機能のみを持たせるべきです。関連性の薄い機能は別のクラスに分離しておきましょう。

テストコードが内部実装に依存している

実装コードを書く人とテストコードを書く人が同じだと起きがちなのが、テストコードが内部実装に依存してしまう問題です。
テストコードが内部実装に依存していると、リファクタリングをした時にテストが壊れてしまいます。
テストも直す羽目になると、生産性が落ちてしまうため、最初から内部実装に依存しないテストにしておきましょう。
このようなテストをブラックボックステストといいます。

テストを実行するのに時間がかる

コードベースが成長し、テストが増えてくると、テストに時間がかかるようになってきます。
もちろん、コード量はどんどん増加するため、テスト時間が長くなるのは仕方のないことなのですが、あまりに時間がかかりすぎるテストは頻繁に実行できなくなり、バグの発見が遅れてしまいます。

テストが遅くなるよくある原因は、データベースやネットワーク、ファイルなどの時間がかかるリソースにアクセスしていることです。状況にもよりますが、テストに時間がかかりすぎるようであれば、これらをテスト対象から外すことも検討しましょう。

まとめ

テストは、

テストすること”が目的ではありません。あくまでもソフトウェアの品質を保つことが目的です。

テストコードは製品の一部といってもいいものなので、プロダクションコードと同等に扱い、見通しの良い、壊れにくいテストにしておきましょう。

あなたのテストはアンチパターンにはまっていませんか?

投稿者:プロスタ編集部

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

初心者がプログラミングで挫折しない学習方法を無料動画で公開中。オンラインに特化したプログラミングスクール「TechAcademy(テックアカデミー)」が解説。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

ページ上部へ戻る