システム開発のテストで大切なことは?【技法が先行するとテストにならない】

こんにちは。

システム開発で最も重要な作業は「テスト」です。

作成したシステムが、仕様どうり正常に動作するか、間違った動作をした時に、間違いを判断できるかを確認します。

テストは、大きく分けると、項目書の作成と実施に分けられます。

特に、テストの実施は、項目が多いと退屈な作業になってしまうことがよくあります。

場合によっては、テストがおろそかになり、重大な不具合を見落としてしまうこともあります。

私も、経験があります。

何千件もある同じようなテストを実施するのは、退屈な作業と感じていた時期がありました。

しかし、本来、テストは、作成したシステムの品質を上げるために重要な作業なのです。

テストの実施は、細かいところまで、きちんと確認されなければいけまん。

では、なぜ、テストの作業が退屈だと感じてしまうのでしょうか?

おそらく、プログラマにとってテストは、動くはずのものを確認していると感じているからでしょう。

そのマインドが、テストを退屈な作業にしてしまっているのです。

なので、今回は、テストの項目の作成や、テストの実施で、プログラマが持っている必要のあるマインドについて書いて行きます。

なお、今回は、テストの技法(境界値テスト、マトリクステストなど)には言及しません。

テストは不具合を探す作業

テストを専門に行う人をテスタと言ったりします。

そのテスタが、不具合を見つけた時、プログラマへ申し訳なさそうに報告するのを、これまで何度も見てきました。

おそらく、テスタは、不具合を見つけてしまって、忙しいプログラマの作業を増やしてしまうと思ってしまうのでしょう。

でも、テスタは、不具合を探し出すのが仕事なのです。

なので、テスタは、プログラマに申し訳なさそうに報告するのではなく、見つけてやったくらいの気持ちで報告して良いのです。

なぜなら、その不具合が見つからなかったら、リリース後に重大な不具合となっていたかもしれないからです。

なので、テストの項目を作成する人も、どこに不具合が隠れているかを想像しながら項目を作成する必要があります。

闇雲に試験項目を作成しても、不具合を探し出すことはできません。

そう言えば、私がテスタをしていた頃、仕様に書かれている内容だけを書いた項目書を見たことがあります。

その時は、私がランダムテストを行って、不具合を大量に出しました。

その時、項目書を作成していたのは、そのシステムを作成した人で、とても忙しい人でした。

そのため、正常に動くだろうと考えていたのです。

システム開発は、時に短い期間で行わないといけない場合があります。

テストの行程は、あとの行程なので、期間が削られることもよくあります。

しかし、不具合を出さないようなテスト項目書は、テストではないのです。

なので、いくら期間が短くても、不具合を探し出すという気持ちで、項目の作成や実施をする必要があります。

テスト技法にとらわれない

プロジェクト(企業によるのかもしれませんが)によっては、このテスト技法を行って不具合が出なければ大丈夫というプロジェクトもあります。

しかし、これは、とても危険なテストです。

そもそも、テスト技法は、特定の不具合を見つけ出す方法であって、全ての不具合を探し出す方法ではないからです

実は、これも私は、経験があります。

そのプロジェクトでは、境界値テストのみを実施するようになっていたのですが、条件や状態のパターンに不具合が隠されていました。

つまり、境界値テストのみを行っていたら、リリース後に大きな不具合が発生するところだったのです。

これは、テスト技法のみが先行し、テストの本来の意味「テストで不具合を探す」という意識が低いパターンです。

確かに、短い期間でテストするには、全てのテスト技法を試すことはできません。

また、境界値に不具合が隠れていることはよくあります。

しかし、テスト技法は、不具合を探し出す方法なので、テスト技法が先行してはダメです。

常に、テストは、不具合を探し出すことが使命と考えるようにしましょう。

修正後のデグレに注意

不具合の修正後のデグレには、十分に注意する必要があります。

特に、プログラミングとテストの担当が違う場合は注意が必要です。

不具合の報告を受けたプログラマは、修正箇所の影響範囲を調査した上で修正を行う必要があります。

しかし、忙しいプログラマは、影響範囲の調査を自分の頭の中で行い、不具合の修正を行う人がいるのです。

聴いていると冗談にように思えるかもしれませんが、実際に、そう言うプログラマは多いのです。

これも、私の経験をお話しします。

私がプログラマをしていた頃(まだ若かった頃)、不具合の報告を受けて、影響範囲をソースコードで確認せずに修正した経験があります。

その時は、テスタが影響がありそうな項目を再テストしてくれたので、デグレに気付いてくれました。

よく確認すると、自分の機能は影響していなかったのですが、呼び出しもとで影響が出ていたのです。

つまり、私は、自分の開発したソースコードのことしか考えていなかったのです。

今考えると、その時のテスタは、とても優秀だったと思います。

このように、不具合を修正した後も、テストでは修正により別の箇所に不具合がないか探す必要があるのです。

テスト項目に囚われずに、テストを行うことも、とても重要と言うことです。

まとめ

今回は、システム開発のテストで大切なことについて書いてきました。

システム開発のテストは、不具合を探し出す重要な作業です。

現実的には、全ての不具合を見つけ出すことは不可能でしょう。

しかし、「不具合を見つけ出すぞ!」と言うマインドで作業すれは、十分な品質のシステムになります。

システム開発のテストには、いろんな技法があります。

でも、テスト技法が先行してしまうと、重要なテストが単なる作業となってしまいます。

それでは、不具合を見つけ出すことはできませんよね。

最も注意しないといけないのは、プログラマが修正した後です。

プログラマがきちんと影響範囲を確認したのか分かりません。

なので、テスト項目に囚われずに、影響がありそうな処理をテストし、不具合を探しましょう。

テストが十分に行われたシステムは、品質の良いシステムになります。

品質のよりシステムをリリースすることができれば、十分な信頼を勝ち取ることができるのです。

では、今日はこの辺で。

ーーー<システム開発工程の記事>ーーー

●要件定義については、以下のブログで詳しく書いてます。
>>>システム開発の要件定義は、顧客と話して作りましょう【顧客に寄りそうシステム開発が成功の近道】

●設計については、以下のブログで詳しく書いてます。
>>>システム開発で設計書は必要なの?【アジャイル開発でも設計書は必要!!】

ーーー

コメント

タイトルとURLをコピーしました