テストというのは、ソースコードの冗長化だと思う

テストというのは、基本的にはソースコード冗長化だと思う。本来ならプロダクトコードだけ書けばよいところを、信頼性を高めるために複数の視点でのコードを追加する。

また、サーバーの冗長化で、2台構成を3台構成にするよりも、はるかに1台構成を2台にするのが難しいように、テストも、10本のテストを20本にするよりも、最初のテスト(プロダクトコードも含めると2本目のコード)を書くのが一番難しい。

テストがソースコード冗長化であるなら、アクセスのないサイトでサーバーをクラスタリングするのが単なる金や設定時間の無駄であるように、長期的な信頼性の求められないプロダクトにテストを書くことも金の無駄だ。
アクセスが多いのにサーバー冗長化の金を払わない顧客に対してクラスタリング構成を構築する義理がないように、信頼性が求められるのにテストの金を払わず時間も確保しない顧客のためにテストを書いてやる必要もない。もちろんこの場合、契約段階で、品質の劣化が、いかに金を払わず時間もとらない顧客のせいであるかということを明記しておく必要はあるわけだけども。あと、最低限の品質も満たせないような条件なら、その仕事は断るべき。
もちろん、品質要件が満たせないなら、テストを書かないといけない。

また、ぼくはテストについて「同じものが作れるならテストが少ないほうがエライ」というのだけど、冗長化であると考えるとわかってもらいやすいのではないか。
同じアクセス数がさばけるならサーバー台数が少ないほうがえらいのと同じだ。
あと、「うちはこれだけテスト書いてるから、みんなも同じくらいテストを書くべき」というのがナンセンスだということも。

サーバークラスタリングの台数を自慢するのではなくて、サーバークラスタリングの台数がそれだけ必要なアクセスを自慢するように、テストの数ではなくて、テストの数がそれだけ必要な品質が求められ、その品質を実現するためにコストがかけられてることを自慢したほうがいい。

2023/1/24 ここに、どのように冗長化なのかという話を書いてみました。
テストコードがコードの冗長化であることについて - きしだのHatena