ソフトウェア開発とテスト

ソフトウェアは形を持たないため、「ソフトウェアを定量的に評価する」という事が困難です。このため、ソフトウェア開発ではテストを通して、主に品質を評価しています。しかし、建物を作ると言っても超高層ビルから犬小屋まであるように、ソフトウェア開発といっても様々な形態・規模があります。ソフトウェア開発にはどんな規模があるか、どの程度のテストが求められているかを整理してみます。

書き殴りのスクリプト

パソコンを使って少しだけプログラマティックな処理を行いたいような場合、スクリプト言語などで簡単なプログラムを書くことがあります。このようなケースではほとんどテストを行いません。プログラムは、プログラマが自分のために作るものであり、規模も数行から数十行程度であるため、テストを行おうという動機はあまりないでしょう。

自分または部署などで使うちょっとしたツール

プログラムを使って便利で何度も使うようなツールを作るような場合、ほとんどテストは行わないでしょう。書き殴りのスクリプトと同様に自分や自分と同じ部署の人間の為に作ったプログラムであるため、不具合があってもすぐに直せますし、責任を負うような事にもならないからです。しかし、長くそのツールを使っていくのであればテストを書いておけばメンテナンス性が高くなるなどのメリットはあると思います。

自社で利用するソフトウェア

プログラムの規模がやや大きくなり、それが自社の業務で使われるようになると、テストを行わないことが不安となってきます。「もし、不具合が起きて業務に支障がでたら・・・」と考えると、ある程度は品質を担保する事が必要となるわけです。

自社で運営するサービス

依然として自社で責任を持つプログラムではありますが、利用する一般ユーザがいるケースです。このタイプのシステムがテストを必要とするかは難しい所です。ある所では、「課金系にバグさえなければ、多少の不具合はどうでもいい」と言われたこともあります。スピードを重視するところではある程度は仕方ありませんが、長く続くサービスになった時、テストを行っていないツケは払う必要があります。ユーザからどの程度の利用料をとっているか、自社の信用問題にならないか、などを総合的に判断して、テスト無しからシステムテストまで行うかなどを判断する必要があります。

顧客から請け負ったシステム

請負のシステムでは、テストがないということはあり得ません。設計図無しでマイホームを建てるような勇者はいないように、顧客はシステムが正しく動いていることを保証して欲しいと思うのは当然です。それでもテストがおざなりになったり、省略されたりすることもありますが、絶対にあってはならないと思います。

ミッションクリティカルなシステム

医療機器、航空機、銀行の勘定系システムなど原則として止まってはいけないようなシステムの場合、特にテストは厳密に行う必要があるでしょう。設計開発よりもテストが重要になってくる事もあるため、テストの専門家が必要な領域かもしれません。コストもリソースも他とは比べものにならないほど多くさく必要がある領域です。

まとめ

と、当たり前のようなことかもしれませんが、ソフトウェア開発におけるテストは条件によって性質も異なります。特に最近多い「自社サービス」についてテストがどの程度のウェイトを占めるかは、会社の方針にもよると思います。自社サービスはテスト不要と、スピードリリースの言い訳にしている会社もありますが、本当にそれで良いのでしょうか?
プログラマであるならば、自己責任でテストをしない事はあっても、他者に責任を持つことがあるならば、テストを行ってその証明とするべきでしょう。