新人SEくんの日常

新人エンジニアが大好きなesports、音楽、プログラミングなどなど、いろんなこと書いてきます

【テスト】配属後初めてしっかりテストコードを書いている

はじめに

約4ヶ月の新人研修が終わった後、
アジャイル開発チームへ配属されました。(現在配属後から約1年経ちました)
いきなり開発させてもらえて、毎日楽しく過ごしています。

新しい機能を実装するのは好きなのですが、
テストケースを作ったり、テストの実施が嫌いでした。。
テストなんか動作確認レベルで済ませて、
どんどん機能を実装していきたい!!
って思っていました。

そんな時に新規案件(API開発)で単体レベルのテストは自動化しよう!という方針になり、
配属後初めて単体テストのコードを書くことになりました。
その中で感じたことをメモにしておきたいと思います。

単体テストとは(おさらい)

プログラムを構成する部品(関数、メソッド単位)が正しく動作することを確認するテストのことを指す。

単体テストの利点

  • 各部品を結合する前にテストを行うことで、各部品に埋め込まれた不具合を早期発見できるので、プログラムの不具合修正にかかるコストを削減できる。
  • 単体テストのコードを残しておくことで、機能改修の際にテストコードを再利用できることもある。

単体テストをどうやるか

単体テストをするためのプログラムを作成し、
プログラム上で動作検証をしていくのが一般的かと思います。
(新人研修では、JUnitを使いました。JUnit ⇨ Javaプログラムの単体テストを行うためのツール)
今回私たちのチームでは、MSTestを使用することになりました。
qiita.com

カバレッジを計測するのにAxoCoverも導入しました。
無料です!インターネットへ接続できればすぐ落とせます!
www.nuits.jp

手動で単体テストも行えますが、
テストケースを書いて、実施してエビデンス残して、、、とかやるよりコード書いちゃった方が楽だと思います。
機能拡張もなく、再利用することのないと分かっているものは、
わざわざテスト作らなくてもいいと思います。

所感

  • 動作確認にかかる時間がめっちゃ短くなった!(ボタンポチっだけで単体テストケースを全て実施できる。
  • テストコードを作成してコミットすることで、どういう観点の確認をしているかチーム内に共有できる!(テストコードもレビュー対象なので、足りない観点教えてもらえる!
  • テストコードしっかり書かなくては!という雰囲気ができてきた。(最新ソースに日次でテストを実行しており(自動化)、テストに失敗するとチーム全員に通知される。
  • テスト成功になると気持ちいいいい!(無駄に一旦流したくなる、、笑
  • 「テスト」って言葉だけで、嫌になっていたけど、めんどくさいなら自動化すればいいじゃんって思うようになってきた。

今後の課題

  • スタブを作るのが大変。(テストコード作成よりスタブ作成に時間かかってる。swagger-codegenとか使ってみようかな。。

日々精進!