プログラムの品質UPのためにPHPUnitでテストコードを習慣化

最近のシステム開発において、テストを書く事は必須な風潮ですよね。

TaNA
私がエンジニアとして働き始めた年(約10年前)はテストを書く文化って、あんま普及してなかったと思いますが、今はテスト書くのが当たり前になってます(とは言え文化がない現場も結構ある気がします)

また開発後にテストを書くのではなく、TDD採用の作り込みながら開発するスタイルもあります。

上の本はテスト駆動開発で有名な書籍なので、近い内に読んでみたい!!

私も最近ようやく重い腰をあげ、テストコードを書くようになりました。

意見はそれぞれですが、テストコードを書いて開発する方が品質もスピードも上がった気がします。

CakePHP3にPHPUnit導入

単体テストで有名なものに「XUnit」がありますが、PHPの場合はPHPUnitになります。

CakePHP3開発において、JSON-APIを作る機会があったので、早速導入してみました。

composerは別途導入が必要。

コントローラのテスト

JSONレスポンスを返すAPIコントローラのテストについて。

まずは各コントローラで使う定数など定義した基底クラスでIntegrationTestCaseを継承。

IntegrationTestCaseを継承していれば、APIの呼び出しやassert系メソッドも利用可能。

各コントローラテストクラスは基底クラスを継承し、最低限以下観点で試験。

・HTTPステータスコードが200

・DB処理が正しく行われているか

モデル系のテスト

DB処理やバリデーションテストはTestCaseを継承。

composerで導入も楽だし、保守メンテを意識すると、絶対テストコードは必須かなと感じます。

ちなみにテストにいて以下記事が詳細に書いて下さっています。

テストカバレッジ100%を追求しても品質は高くならない理由と推奨されるカバレッジの目標値

「カバレッジが高ければ、ソースコードの品質が高い」という訳ではなく、正しくは…

POINTカバレッジが高く、テストケースの品質が高ければ、ソースコードの品質が高い!!

テストコードを書くのは当たり前!!

+αでTDD含め、ここらへんの理解も深めて品質を上げていきたいですね。