skillup

技術ブログ

プログラミング全般

テストコードを読みやすくする

投稿日:

リーダブルコードも最終章に近づいてきましたね。

今回はテストコードについて。

以前のプロジェクトではテストコードを書いていたのですが、今携わっているプロジェクトでは書いてないです・・・

テストを書く目的ですが、単純にテスト工数を減らす以外に「本物のコードの動作と使い方を示した非公式の文書」という見方もありますね。先輩からも「仕様書の一種」といわれていたので、単純な動作確認以上の目的があるようです。

ポイントとしては下記のようなことが挙げられています。

重要な情報を目立つようにする

仕様がすぐにわかるような情報を書く、ということですね。

最適なエラーメッセージを書く

ディフォルトのExceptionのエラーメッセージに任せるのではなくて、エラー内容をわかりやすくカスタマイズしたメッセージを出力しよう、ということですね。これはテストコードだけではなく、普段のプログラムでもそうですねぇ・・・

テスト入力値は単純で網羅性のあるものにする

テストパターンの網羅ですが、下記3点が大切ですね。

  • 漏れがないこと
  • なるべく単純であること
  • 一度に複数の仕様をチェックするよりは、複数に分ける

テストコードを意識した、コードにする

普段コードを書いているときから、テストコードを書きやすいコードを意識することが大事と書いてあります。

ポイントとしてはよく言われますが、疎結合にすることですね。プログラムがお互いに依存している場合、テストがとても面倒で大変になります。細かい部品群にわけてあればそれだけテストをするのが楽になります。

テストしにくいソースの特徴

  • グローバル変数を使う
  • 外部コンポーネントへの依存
  • 各プログラムへの依存度が高い

テストしやすいソースの特徴

  • クラスが小さい。内部状態を持たない
  • クラスや関数が1つのことをしている
  • クラスや関数が独立している

まとめ

これらがテストしやすいソースの特徴ですね。ただし、ほどほどに、ということはリーダブルコードでも書かれていますね。

私が依然かかわっていたプロジェクトでもテストコードのために時間を取られるという本末転倒な事象がおこっていました。どんなことでもバランスが大切です。

 

-プログラミング全般
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

メモリに関して 静的領域、スタック、ヒープなど

実務でメモリの調査をしましたが、肝心のメモリについてほとんどわかっていないのでメモ。 メモリの領域を大きく分けると静的、スタック、ヒープに別れる。 Contents1 静的2 スタック3 ヒープ4 そ …

no image

オブジェクト指向 ドメインモデル

本日も引き続き「現場で役立つシステム設計の原則」を読み進めてます。 本日は主にドメインモデルの考え方について。 Contents1 ドメインモデルの考え方1.1 要点1.2 感想 ドメインモデルの考え …

no image

Excelでのテストデータ作り

ExcelVBAでテストデータを作るときに役に立った関数などを紹介させていただきます。 user_id time 2143 2017/1/16 3:35 6724 2017/1/2 6:05 4528 …

no image

フレームワークのマイナーバージョンチェンジの影響に関して

ここ1年ぐらいPHPのフレームワークはLaravelを使っていますが、マイナーバージョンの影響に悩まされることがたまにあります。 以前、遭遇した事象としてはログイン連携が急にできなくなりました。 La …

no image

コードの分割

今回はリーダブルコードの8章。コードの分割について。 ポイントとしては1行に情報を詰め込みすぎているような場合は分割して、意味がわかりやすい区切りにまとめよう、といったことでしょうか。つまりは「困難は …