ソフトウェア開発には、
要件定義、設計、プログラム、テスト
の4ステップがありますが、
今回は最後の工程「テスト」のお話です。

プログラムで実際に動くソフトウェアを
作った後に、そのソフトウェアが
正しく動作しているか否かを
確認するのが「テスト」ですが
このテストも、なかなか奥が深いです。

正しく動作しない
プログラムの不具合を
「バグ」(英語の bug [虫] が由来)
と言ったりしますが、
この業界では
「バグのないプログラムはない。」
と言われてします。

そういう訳で
テストをしたからと言って
全てのバグを取るのはなかなか難しいです。

なぜなら、全てのケースをカバーした
完璧なテストは存在しないからです。

例えば、実数のパラメータ一つとっても
0, -1, 1, 2, 1.1, 0.001, 1000, 999999, 3.14, …
など、いくらでも数字が出てきますし
On/Off 等の2通りしかないパラメータでも
それが10個出てくると
全ての組み合わせは 2の10乗で
1024 通りのケースが考えられます。

ですからテストというのは
どこかで妥協して
打ち切らないといけません。

ですが、ユーザーに損害を与えたり
作業がストップしてしまう様な
重大な不具合は
予めテストで見つけておいて
提供する前に解消しておく事が肝心です。

どこまでテストをやるかというのは、
そのソフトの目的や普及度によって
異なってきます。

例えば、銀行のシステムでしたら
多くの人の財産に関わってくるので
念入りにテストをしておく必要がありますが、
個人がちょっとの作業で使うものでしたら
数ヶ月もかけてテストするというのは
あまり生産的ではありません。

テストの手法もいろいろあるのですが、
それについては、
今後の機会にお伝えしていきたいと思います。