うさぎ組

ソフトウェア開発、チームによる製品開発、アジャイル、ソフトウェアテスト

プログラマーが「テストを書く」といい、テストエンジニアが「テストをする」という理由について

以前にGistに書いていたのですが、忘れそうなのでリンク貼りつつ、転載しておきます。

プログラマーが「テストを書く」といい、テストエンジニアが「テストをする」という理由について.md

はじめに

ここに書かれているのは、「主目的」であって、プログラマーもしくはテストエンジニアが「他のことを考慮していない」という意味ではありません。あと、僕の解釈なので一般論というわけではないないです。

プログラマー:「テストを書く」

プログラマーは基本的に「テストを書く」というと思います。実際に書いているんですけど。これ、手動テストしかなかった時代は、どうやって言っていたのかわかりませんけど、これは非常に的を得ていると思うのです。プログラマーの主眼は「要求を設計し実装すること」にあります。そしてその意志はプロダクトコードとなって表現されます。そう、プロダクトコードというのは、表現手段なんです。なので、彼らにとってテストコードというのはあくまで「要求を設計し実装すること」のある表現手段であり、それがプロダクトコード以外であるということにすぎないのではないでしょうか。


プログラマーはあふれるその思いをコードに表現する事が楽しみです。主目的である「要求を設計し実装すること」をテストというフィールドにおいて実施するというのは若干の矛盾をはらんでいて、やっていることは、「要求を設計し実装すること」をしながら確認がとれるものとして、テストコードという手段をとった。くらいのイメージです。

テストエンジニア:「テストをする」

テストエンジニアは基本的に「テストをする」というと思います。実際にはテストを書くんですけど。プログラマーはプログラミングが楽しいとは言うんですけど、コーディングが楽しいという人はあまりいないと思います。つまり、分析、設計、実装がプログラミングという言葉に含まれていて、それが本分であり、楽しいという意味です。テストエンジニアも「テストコード、テスト実施のみが楽しい」というよりは「分析、設計、実装」が楽しいと思っていてそれは「テスティング」と言っています。日本ではあまりテスティングという言葉が一般的ではないのですが。


「コーディング」が「プログラミングの一部」であるように、「テストを書く」というのは「テスティングの一部」にしかすぎません。そして、プログラミングというスタイルとテスティングというスタイルでは目的や視点が違うので、自然とテストが異なってきます。それは狙う場所だったり、量だったり、方法かもしれません。

まとめ

プログラマーは「プロダクトの設計、実装」のためにテストをするのが主目的なので、「テストコードを書く」というのは「プログラミングの一部」であり、プログラミングの一表現手段であるが、テストエンジニアは「テストの設計、実装」におけるテストをするので、「テストをする」つまり「テスティング」という言葉を使う事が多い。


どちらがよいわるいというのではないですが、目的によって言葉が違ってくる例だと思いました。テストエンジニアが考えるテストとプログラマーが考えるテストの違いについてイメージできないと「どっちでもいいじゃん」って思う人がいるとは思います。 でも、きっとそれは「コーディング」と「プログラミング」を一緒にされて嫌な思いをするプログラマーがいるように、「テストを書く」と「テストをする」を一緒にされて嫌な思いをするテストエンジニアがいるとでも思ってくだされば幸いです。