メルマガでソフトウェアテストの重要性が高まっているという記事が配信された。
ソフトウェアのテストで何が最も重要か、それはエラー発生時のテストだと考えている。
設計に基づくユニットテストのカバレージと検出したエラーによるシステムの挙動だ。
exceptionをトライキャッチしていないからダメなコードだともっともらしくいう浅薄な意見が聞かれることもある。
確かにexceptionを捉えていないのは良くないが、発生しうる全てのexception種別に応じて適切な処理がされるようなコードを書いているかを判断しなければ、意味がないと考える。
どんな例外が発生したのかはスタックトレースをログに出力するのだから良いのだと考える人もいるだろう。
だが、一概に例外発生と言っても通常運用のユーザー操作で起こり得るものも多くある。
サーバクライアントシステムではクライアントが処理を中断する操作もあり得るわけだから、ioexceptionは記録だけ残して必要なロールバックがされるだけで十分。
一方でヌルポが発生したらそれは明らかなバグか、そうでなけれはシステムの重大な障害が原因なので、例外発生は特に面倒だ。
今までの経験上、テストの着眼点は正常運用動作確認が最優先でエラーについては工数の割に効果が低いと捉えられがちで、重大障害が発生したら大騒ぎして、テストの不備を批判する人が多い。
テストの自動化についても、30年以上前からこれで解決みたいなことが言われているが、バッチリハマったとは聞いたことがない。
ソフトウェア業界の人間は、山師が多いということだろうか。