システムテスト

システムテストについてちょっと考えて見たいと思います。といっても、品質は仕様作成の時から作りこむんだとか、ユーザの視点でテストを行うんだとか、第三者によるテストが必要なんだとか、そういった話とはちょっと違って、何をテストするのかという話です。

「そんなもん、システムテストっちゅうくらいやから、システムをテストするにきまってるやんか」と思われるかもしれません。でも、システムをテストするってどういうことでしょうか。

良くやってしまう間違いとして、システムではなくプログラムをテストしてしまう、というのがあります。プログラムのテストなんてのは単体テストや結合テストと言った、システムテストより前段階でやるものであって、システムテストの主たる対象ではないのですね。

とするとシステムとは何か、というやや哲学的な思索を行わなければなりませんが、思索の過程はすっ飛ばすとして、結局のところ人と人との関わり方、という点に帰着します。例えばシステムテストのテストケースを考える場合は、このシステムはどういった人がどういった時にどういう風に使うのか、という想定を行うわけですが、その際どの程度変な(想定外の)テストケースを考えられるかによって、テストの規模(丁寧さ)が大きく変わって来ます。「この場面では当然こういう操作をするでしょう」という"当然"をどの程度排除できるか、「ここでは普通こうやるよね」という"普通"をどの程度排除できるかが、テストケース作成者のセンスとなるとなるわけです。

つまりは、そのシステムを使うユーザの挙動をテストするわけであり、同時にそうしたユーザの挙動をどれくらい考えているのか、という開発者たちの思考をテストするわけです。

そういう意味ではシステムテストのテストケースを考える人(システムテストをする人も)はシステムを作る人よりも、より広範な、より柔軟な思考ができなければなりません。新人さん(できたてのプログラマ)ではなく、経験豊富なシステムエンジニアの仕事であると考えるべきでしょう。でもそういう人材は普通は開発する側にしかいないんですね。開発する側にもいなかったりして。


目次  談話室  PoisonSoft