share facebook facebook twitter menu hatena pocket slack

2018.05.15 TUE

テストする際に気を付ける点

テストし易いコードを書く為にやっていること

関数、メソッドの引数、返り値の型を制限する

public function formatPrice(int $price):string
{
return number_format($price) . "円";
}

このように引数に型を宣言することで、宣言した型の引数のみテストすれば良くなり、テストパターンを減らす事ができる。ただしPHP7からの機能です。
※関数、メソッドの引数、返り値の型を制限のテストは別で行っておく必要はあると思います。

1つのメソッドには1つの機能だけ持つようにする。

メソッド名が長くなりすぎたり、○○○And○○○見たくなってたりした場合は1つのメソッドに機能をもたせすぎている場合がある。2以上の機能があるとテストしにくい。

DBテスト用のDBを用意する

これについては別で記事を書いたので以下のURLを見ていただければと思います。
laravelでDBテストコードを書く前の設定すべきこと

DBに対しての処理はRepositoryクラスにまとめる

DBに対しての処理をRepositoryクラスにまとめることで、何度もDBに対しての処理のテストを書く必要がなくなる。またテストコードも見やすくなる。

テストコードを書きすぎない

テストコードを増やし過ぎると、1回1回のテストの処理が重くなって開発速度が下がってしまう。
また、テストを追加するのは簡単だが、テストを減らすのはそのテストを書いた人出ないと出来ないケースが多いので、テストを書く段階で本当にそのテストが必要か考えてから書くべきです。

テストのメソッド名を日本語で書く

日本語の分かるチームで開発を行っている場合は、テストのメソッドの名前を日本語でにすることで、何のテストなのかが分かりやすくなり、テストコードがそのまま仕様書の機能を果たしたりもするようににある。

まとめ

どこまでテストするかの判断

カバレッジを100%にするには、1つのメソッドに対して複数のテストをしなくては行けない場合がよくある。
しかし大概の場合、全てをテストしている時間は無いのでテストすべき箇所と、そうでない箇所とで切り分けをしなければならない。これはプロジェクトの状況に応じて、どこまでテストするかを決めなければならない。
たとえばキャンペーンなど期間限定のものであれば、手動でテストして動けば、テストコードを書く必要がはない場合もある。
逆に銀行系のシステムなどでは、ミスが許されないので、十分にテストする必要がある。

元記事はこちら

テストする際に気を付ける点

宇敷 久里也

宇敷 久里也

WEBプログラマです。WEBに関することは、なんでも興味あります。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。