フリーランスエンジニアの情報サイト

スリーネクスト

プログラマ 設計 開発・基盤

テストコードを書く意義

投稿日:2019年3月25日 更新日:

概要

プログラミングを書いていてテストコードを必須にするところが増えてきました。
私の認識するテストコードを書く意義はデグレ防止、その一点です。

デグレとは機能を追加するためにもともとあるプログラミングコードに手を加えてしまって、
別の機能が動かなくなってエラーになってしまうことです。

テストを実行するとテストコードを仕込んだところが全部起動し、
どこでエラーが出ているのか出力されるので大変便利です。

無駄なテストコード

C君
テストコードでバグをたくさん発見できるから詳しく書いた方がいい

テストコードを作成しながら書くと早く開発できる
Cさん

Aさん
設計力がつく

上記の会話をよく聞くのですがしっくりこなくてテストコードを書くのを時間の無駄だと思っていました。
ちなみに設計とテストコードはそこまで関係ないので設計力はつかないです。

正常系のテストコードや異常系のテストコードたくさん書いているのをみたことあります。
これは機能を少し追加したら動かなくなり改修が恐ろしく大変な状態をみたことあります。

テストコード素晴らしいとかテストコード信者がたまにいますが、完璧にバグを消すためのコードも存在しないし、
自分が考えたこと以外テストはしてくれません。

テストコードを理解し正しく使う

正常系とどうしても外せない異常系だけテストコードを書けば問題ないと思います。

テストコードにできるだけ時間を使わない。
テストコードを書いたからといってバグは全部消せない。

テーブル構成が変わるとテストは動かなくなる。
これがテストを書くことによるデメリットです。

テーブル構成に影響しないテスト構成にするよう考えることや、
外部APIを使っているのであればmockを使って外部APIがテストに影響ないようにするといったことを作成しないといけないので
テストコードを書くための設計も必要になってきます。
できるだけシンプルな正常系と若干の異常系(多くても2パターン)で作成することがベストだと考えます。

上記のことをリストにすると以下になります。

  • テストコードはデグレ防止に大変役にたつ
  • テストコードにそこまで時間を書けないほうがいい
  • テストコードを書くための設計も必要になる
  • テストコードにたくさんのコードを書くと機能追加が死ぬほど辛くなる

ココがポイント

結論は「テストコードは必要だけど最小限に作るのがいい」です。

テストコードを実施するのはローカル環境だけでなく
Circle CIといったCIに盛り込んで、Gitにプッシュするたびにテスト実行するプロジェクトが多いです。

スポンサーリンク

にほんブログ村 IT技術ブログ IT技術メモへ にほんブログ村 IT技術ブログ Webエンジニアへ にほんブログ村 投資ブログ リップルへ

-プログラマ, 設計, 開発・基盤

Copyright© スリーネクスト , 2019 All Rights Reserved.