White Box技術部

WEB開発のあれこれ(と何か)

「テストを書く文化がないからテストがないんです」

それは怠慢だろうが!いい加減にしろ!!

じゃあテストコードはこのプロジェクトなくていいのか?と問えば、ある方がいいと思うと答えてくるが、 じゃあなぜ書かないのかと問えば、文化が・・・と答えてくる。

中には、画面で実際にオペレーションをしてテストをしているからテストコードの必要性は感じないと、 使い慣れたそろばんがあるから使い方の分からない電卓はいらない、というようなことを言い、 どんなバグが多いのかと問えば(動的型付け言語での)タイプミスデグレと回答が返ってくる。

不思議なのは、そういう人もテストコードがあることでそういうバグが防ぎやすいということを、 「知識として持っている」と言ったりするということです。

だからそれを防ぐためにテストコードを書こうよ!と言うと、

  • 今まで書いてこなかったから
  • プロジェクトがテストの書き辛い構造になっているから
  • テストを書く工数を貰っていないから
  • テストの書き方がわからないから

そして最後には、テストを書く文化がないから・・・

言わせて貰っていいでしょうか。

「だから!それは!!お前の怠慢だ!!!」

テストを書く文化()

そもそも何なのでしょうか、テストを書く文化って。

テストを書くことに文化が必要なのでしょうか?
書いたら「良くもこんなもの作りやがって!」と、袋叩きにでも合うのでしょうか?

そうだとしたら、早めにその環境から脱出することをお奨めします。

書いたらいいじゃないですか。
テストという概念を知っている、現代のソフトウェアエンジニアであれば。

テストを書きやすい環境

これならわかります。

プロジェクト内でテストコードが動作するように環境構築されているとか、 リポジトリにコードをプッシュすると自動でテストが実行され、その結果がチャットツールに通知されるとか、 進んだところではテストコードの書き方や指針があるかもしれませんね。

ですが、これがなかろうがテストを書くことはできますし、可能な範囲で環境作りを始めることもできるはずです。

工数の話

ちゃんと取ってください。リスクを認識している人には、リスクの説明と警告の責任があるはずです。

そもそもテストコードを書くためのライブラリがない

この状況であれば流石に怠慢とは言えないですね。申し訳ないです。

ですが、そのまま開発を続ける前にテストフレームワークのある言語への見直しをお勧めします。

もうわからないんです

別に今までテストがなかったコード全部に対して書けと言っているわけでもないですし、 今回追加・修正した部分で、書きやすいところからでいいから書いてみようという話なのですが、 頑なに文化がないから少しずつやっていきたいという人がいます。

私は、一体、これ以上、何を妥協したらいいのでしょうか・・・

あれでしょうか、達人になるまで戦場には出ないと言うやつなのでしょうか。気の長い話ですね。

なぜ怠慢と言っているのか

怠慢とは『なまけて、仕事や義務をおこたること』という意味だそうです(Google検索)。

未だにテストコードの重要性に関して説明が必要であれば、正直目眩を覚えるのですが、 少しでも気を紛らわせながら説明するのであれば、それは食事をして食器を洗わないようなものだとイメージして貰えるとわかりやすいのではないでしょうか。

食事を得るためには

自分で食事を作ろうと考えたのであれば、始めに献立を作成し、次に調理法の調査を行い、食材の調達に出かけ、調理を行うことで食事を用意することができるますが、食事が終わった後には食器の洗浄(料理後には調理器具の洗浄)も行わなければいけません。

もし洗浄の工程を行わなければ、洗われない調理器具や食器は流しに溜まり、 次の調理は難しくなり、次第に使える食器も不足して、最後には調理を諦めて、 インスタントや出来合いのものを食べるしかなくなってしまいます。

調理のテストと言う意味では『味見』という工程が正解なのでしょうが、あくまでやらなければいけない工程を省いたときのイメージと言う話でご了承ください。 『食事』を『リリース』と考えると、食事までの流れでは、工程的にテストの位置がおかしいですしね。

テストコードの重要性

テストコード作成は必要な手間なのです。

誰もテスト自体が無くて良いとは言わないように、テストの重要さは明らかなのですが、テストコードが重要視されていないのは、 テストという工程が他の工程よりも柔軟性が高いがために、テストコードを省略した方法でも一時的には目的が達成できてしまっているからでしょう。

だからテストコードが必要な手間なようには見えないのかもしれませんが、水で流すだけの食器を使い続けてたらどうなるのかとか、そういう話ではないかなと思います。料理の味が変わるだけならいいですが、知らずに繁殖した細菌を取り込んでから後悔するのでは遅いですから。

自信を持って自分の成果物を届けていくためにも、テストコードを書いていきましょう!

別の考え

それでも、どうしても、テストコードが書きたくないというのであれば、自分達で開発することは止めて、 誰かが作ったものを使うか、外注業者に頼むのがいいでしょう。
高めのお金を出して、味の好みはおまかせの、納得感がそこそこのものを食べるのもありなのかもしれません。

なぜなら私の家にはガスコンロすらないので。