テストコード

昔、姫路インフラ勉強会に参加した時に「テストコード」についての話題があった時に書こうと思って下書きのまま放置されていたので、振り返りながら少し考えてみました。
(話題的にインフラとは違いますが…)

議論の中であったのは、
「そもそも、テストコードを書いても保守されない」
という意見でした。
テストコードは、機能を増やした後でテストをする際に、自動的に合否を確認してくれるので、改修時に非常に便利なのですが、他のメンバーが、このテストコードを書いてくれない…
書いてくれない理由を考えてみると、
・テストコードを書く習慣がない
・テストコードを知らない(書き方や使い方など)
・メリットが理解できない
の3つに絞られそうです。
それでは、これらを打開するにはどうすればいいのでしょうか?
・教育をする
・そもそも書かない
という意見がありました。
やるかやらないか…
みたいな投げやりな意見になりそうですが、実際のところ、今まで勤めてきたところでは
「良いのは分かっているけど、よく分からないし、今回は納期まで短いからパス!」
みたいなやりとりが多かったです。
とか言う自分もテストコードの書き方以前に実際にテストを実装する際に色々とつまずいてしまっていました。
例えば、Privateで内部処理を隠して使ってほしい入口の処理だけ公開していたのですが、本当はテストしたい内部処理がテストできない。と言うことが今の自分の考え方では発生してしまいます。
でも、それは実は誤っていて、処理を公開して、処理ごとに完結しているものを作るべき、という指摘がありました。
プログラムの設計方法が間違っているということは衝撃でしたが、言われてみれば確かにその通りだと思いました。
それから現在、プログラムの作り方を見直していますが、実際にやってみて何だかおかしいなぁと疑問に思わないと、この時に質問すら出てこなかったと思います。
やはり小さなことでも聞くだけではなくて実際にやってみることは大切だと感じました。
テストの実装はまだマスターできていませんが、未熟なコードをさらけ出して指摘をもらえる良い時代だと思うので、どんどん経験を積みたいなと思います。