ソフトウエアテストの失敗を避けるには、最低限知っておくべき知識がある。例えば「品質」という言葉。何となく使っている人が多いと思うが、改めて考えると曖昧で捉えにくい概念だ。あるSIベンダーの若手社員「ワカテくん」は困って、先輩社員「センパイさん」に相談したようだ。

ワカテ:役員に「品質は我が社の生命線だ。しっかりたのむ」と言われたのですが、そもそもソフトウエアの品質って何でしょう。とにかくバグをつぶせばいいんですか。

センパイ:いいところに気が付いたね。実は品質には色々な要素があるんだ。バグがないというのはもちろんなんだけど、使いやすさや性能、互換性も品質なんだよ。そうそう、最近話題のセキュリティなんかも品質として考えておかないといけないね。

ワカテ:なるほど。購入ボタンを押してもなかなか反応しないショッピングサイトをときどき見ますが、あれは「品質が悪い」ということなんですね。確かにまた買おうという気がなくなりますよね。

センパイ:その通り。使う人の気持ちや作り手の都合、経営者の思いなど色々な視点が必要なんだ。視点の網羅では「ソフトウエア品質特性」という便利な標準があるよ。

 なぜソフトウエアやシステムをテストするのか。すぐに思い浮かぶのは「仕様と違った動きや、動作不良につながるような欠陥を見つけ出すため」だろう。これは、バグつぶしのことだ。実はこれは正解の半分にすぎない。テストにはもう1つ重要な役割がある。「ソフトやシステムの品質を可視化して、より良い品質の実現に向け、何をなすべきか示す」ということだ。

 厄介なのが「品質」という言葉だ。日常の様々な場面で色々な意味合いで使われる。そのため、そのときの文脈や使い手の立場によって意味が変わる。人によって解釈が異なるままプロジェクトを進めてしまうと、テストが失敗に終わる可能性がある。

「品質」の解釈が揺らぐ理由

 品質という言葉の解釈が揺らぐ代表的な要因として、「システムの種類」と「関係者の立場」がある。

 まず、システムの種類ごとに市場の要求や使う人の期待が違う。そのため、重視すべきことも異なってくる。例えばゲームソフトには楽しさが求められる。ゲームソフトの品質には、「面白さ」や「目新しさ」が含まれているだろう。Webサービスでは、競合よりも早くサービスを提供できることが重要だ。そのため「素早くリリースできる仕組み」の出来が品質という言葉の裏に隠れている。

 金融や物流といった業務の基幹系システムでは、多くの場合、ゲームソフトやWebサービスで挙げたような品質は求められない。一方で運用開始後にトラブルを発生させない、仮に発生しても拡大させないことはとても重要だ。この文脈で品質を議論するときは、ソフトウエアそのものだけでなく「メンテナンスの仕組みと体制」も含んでいるケースが多い。

 さらに、関係者の立場によって品質に対する考えが異なる。例えば、経営者は「会社の基準の順守こそが重要」、開発者は「変更に柔軟に対応できるアーキテクチャーの採用が重要」と品質を高めるために考えている前提がまるで違っている可能性がある。この横でテスト担当者は「クレームを減らすためにリスクを重視したテストをしたい」と別のことを考えているかもしれない。

品質への考え方は立場で違う
[画像のクリックで拡大表示]

 システムの種類、関係者の立場の違いといったギャップを解消せずにテストを実施すると、トラブルを招く可能性が高まる。テストの目的が不明確なまま進んでしまうからだ。最終テスト終了後のリリース判定会議の場で、ユーザー側の責任者が「こんなひどい品質ではリリースすることはできない。テスト担当者は一体何を検証していたのだ」と怒り出すかもしれない。テストの目的を明確にするには、まずはソフトウエアの品質とは何かを押さえる必要がある。

この先は有料会員の登録が必要です。今なら有料会員(月額プラン)は12月末まで無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら