「テストをやらない」はテストをやっているとも言える

最近、「テストをしない」という判断に関する相談を受ける機会が多いです。

この記事では、それに対する私の見解を述べたいと思います。

テストをしないの意味について

「テストをしない」という言葉は、多くの場合、「テスト実行をしない」という意味合いで用いられていると解釈できると思います。

さらに、「テスト実行をしない」という判断は、その準備段階であるテスト分析やテスト設計を行わないということになるかもしれません。

テスト実行を省略する理由としては、単に「テスト実行がめんどくさい」、あるいは「テスト実行みたいな仕事はやりたくない」といった個人的な動機も考えられます。

しかし一方で、特定のコンテキスト、限定的な修正範囲、あるいは特定の実装に対して、意図的にテスト実行しないという判断がされることもあり得ると考えています。

「テストをしない」という言葉の多様な意味合い

「テストをしない」、あるいは「テスト実行をしない」という表現一つをとっても、その背景には多様な意味合いが存在します。

例えば、継続的インテグレーション(CI)の仕組みは稼働しているものの、そのCIに組み込むテストの修正や追加をしないというケースが考えられます。
他方で、システムテスト環境におけるテスト実行を見送るという判断もあり得ます。
あるいは、システムテスト環境でのテスト実行はするものの、専門のテストエンジニアによるテスト実行自体は行わないという意味である可能性もあります。

このように、「テストをしない」という言葉は、そのコンテキストによって様々な実態を表していることがあります。

「テスト実行をしない」はテストをやっている。

私は、「テスト実行を行わない」という明確な意思決定は、テストをやっていることと同義であると考えます。
ここで言う「テスト」とは、単なるテスト実行に留まらず、テストマネジメント全般を含む概念です。
この観点からすると、一定のリスクを許容した上で、敢えて「テスト実行を行わない」という判断は、テストマネジメントの成熟を示すものと捉えることもできます。

すなわち、「テストをしない」という判断は、合理的な根拠に基づいた結論である場合は、それは「テスト実行を行わないがテストマネジメントを行なっている」と言えるのです。

もちろん、この意思決定が誤っている可能性もあります。

しかし、意思決定の誤りはテストに限らず、プログラミング設計、仕様検討など、あらゆる開発工程において起こり得ます。

チームやステークホルダー全体が納得した上で「テスト実行を行わない」という選択肢を選ぶことは別に違和感のない選択だと思いました。

本当にテスト実行は不要か

ただし、本当にテスト実行が不要であるか否かについては、慎重に検討する必要があると思います。

例えば、製品に対して批判的な視点を持つ人や、悲観的な状況を想定する人がチーム内にいない場合が考えられます。

正直って、開発者が自ら作り上げたものに対して、客観的で批判的視点を持つことは難しいと考えます。

自分たちが「合理的である」と判断したとしても、無意識のうちに自己の利益や安易な解決策に偏った意思決定をしてしまう可能性は否定できません。
したがって、「テスト実行をしない」という判断は、慎重に行われるべきです。

一方で、テストマネジメントの考え方の一つとして、テスト実行を行わない、いわゆる「テストをしない」という判断は決して不自然ではありません。

どこかでテスト実行はしておいてほしい

しかしながら、変更を加えたプロダクトコードを実際に動作させて検証するという行為、つまりテストは、コードに変更を加えたならば、開発に関わる誰かが実施するべきだと考えます。テストを実施しないに対してよくあるのは、「テストの専門家はテスト実行をしない」あるいは「日常的に実施しているテストの中でリスクが極めて低い部分のみをテスト実行しない」さらには、「これまで行ってきた逐次的なテスト設計プロセスを省略し、探索的テストやアドホックテストといった手法で代替する」です。

テスターとして、全くテスト実行をせずにプロダクトコードを顧客に提供することは避けたいです。

一方で、現在の状況に合わせて必要十分なテストを実施し、その結果を適切に説明し、責任を果たすことができると判断した上でリリースするのであれば、一部のテストを省略したり、簡略化したりすることは積極的に検討していきたいと思います。

私は、「やりたくない」「面倒くさい」という安易な理由で「テストをしない」ということには反対です。しかし、合理的な判断に基づき「テストをやらない」という決断をすることは、テスターとして必要な能力の一つであると考えます。