87-プログラマとテスターが協力してできること

プログラマが知るべき97のこと」の87個目のエピソードは、テストに関する話です。テストは、ソフトウェア開発で避けて通れない重要なプロセスです。しかし、テストというものは予想以上に難しいものです。プログラミングにたくさんの手法や考え方があるように、テストにも非常に多くの手法や考え方があります。経験の浅い開発者や直接的に開発に携わらない人は「プログラミングができるならば、当然、テストもできる」と誤解していることもしばしばあります。プログラミングとテストには共通点もありますが、まったく異なるスキルが必要であると認識することは重要です。
テスターとは、文字通りテストを専門に行うエンジニアです。しかし、専門のテスターが開発チームにいるケースはあまりありません。ほとんどの開発では、プログラマがテスターを兼ねるでしょう。このエピソードでは、プログラマとテスターがどのようにつきあっていくかについて書かれているため、プログラマーがテスターを兼ねる場合にはあまり役に立たないとも思えます。しかし、そのような場合でも、プログラマとテスターのロールを使い分け、このエピソードに書かれている事を意識すると、より品質の高いソフトウェアを開発できると思います。
そのために、最初にやるべき事は、テストについて学ぶ事です。プログラミングについては学ぶ事はあっても、テストについて興味を持たないプログラマがいます。しかし、ソフトウェア開発全体を見たならば、各プロセスがどのように関連し、どのような専門性を持っているかを知ることは重要な事です。プログラマはテストについて学ぶ事で、品質について意識が変わります。プログラマであれば、品質の高いソフトウェアを提供したいと誰もが思うでしょう。それならば、品質を高めるためにテストについて知識を得ることは、新しいプログラミング言語を覚えることと同じくらい重要なのです。とはいえ、最初から品質保証のテストを学ぶ事は難しいものです。最初は、プログラミングに近いユニットテストから学んでいくとハードルが低いでしょう*1
また、プログラマーの帽子とテスターの帽子をかぶり分けるという意識を持つべきです。開発プロセスの中でも構わないですし、ペアプログラミングでナビゲータがテスターとなるというやり方でも良いと思います。テスターの帽子を被ったならば、品質向上の事を第一に考えます。それは、プログラマの書いたバグを見つける作業となるでしょう。ドキュメントに関する指摘かもしれません。そのような事を指摘されたプログラマはあまり良い気分ではないかもしれません。しかし、テスターが早い段階で「こうあるべきだ」という振る舞いを提案したり、「このようなテストが必要だね」と指摘したならば、プログラマはより修正が少ないコードを書くことが出来ます。また、プログラマもテスターに対し、自分たちの考えるソフトウェアの振る舞いを説明することで、テスターが気付かなかった事に気付いたり、それが要求を満たしているかを実装する前に確認することが出来ます。このエピソードにあるように、プログラマとテスターの帽子を被ったプログラマがうまく協調関係を築くことができるのが望ましい姿です。
プログラマがテスターの帽子を被るのであれば、テスターはプログラマの気持ちが解るため、プログラマと上手くやっていく事が簡単と言えます。プログラマに必要な事はプロのテスターとなる為の訓練です。

プログラマが知るべき97のこと

プログラマが知るべき97のこと

*1:ユニットテスト自体は品質を向上させるわけではないが、テストを学んでいく最初のステップとしては重要