本連載では、ソフトウエアテストで押さえておきたい知識を解説する。今回はソフトウエア品質の考え方と、テストエンジニアの役割を取り上げる。テストの土台となる知識だが、意外と誤解したままになっている人が多い。ツボを押さえておくと、ソフトウエアテストで失敗することもなくなる。

 ソフトウエアテストの失敗を避けるには、最低限知っておくべき知識がある。本連載では、実務にすぐに役立つテスト知識のツボを紹介する。今回は誤解しがちな「品質」の考え方と、テストエンジニアの役割と必要な能力を説明しよう。

誤解しがちな「品質」の考え方
8つの品質特性を押さえる

 品質は改めて考えると曖昧で捉えにくい概念だ。システム開発の現場を見ても「品質」という言葉を感覚的に使っている人が少なくない。SIベンダーの若手社員「ワカテくん」は品質をどう捉えるとよいのか迷い、先輩社員「センパイさん」に相談した。

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

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

ワカテ:なるほど。検索しにくいECサイトをときどき見ますが、あれは「品質が悪い」ということなんですね。確かに、また使おうという気がなくなります。

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

 テストの目的は、狙った品質通りにソフトウエアが作られているかどうかを確認すること。ただ、ここにある「品質」という言葉が厄介だ。この言葉は日常生活でも様々な意味合いに使われる。そのため、文脈や使い手の立場によって意味が変わる。言葉の解釈が揺らぐ代表的な要因が、「システムの種類」と「関係者の立場」だ。

 まず、システムの種類ごとに市場の要求や利用者の期待が違う。例えば、ゲームには楽しさが求められる。ゲームの品質では「面白さ」や「目新しさ」が重要な要素となる。一方、基幹系業務システムでは、ゲームのような面白さや目新しさは求められない。重要なのは、運用開始後にトラブルを発生させないこと。そして、仮に発生しても拡大させないことだ。基幹系業務システムで「品質」というと、メンテナンスの仕組みと体制まで含んでいる場合が多い。

 さらに、関係者の立場によって品質に対する考えが異なる(図1)。例えば、品質向上という同じ目標を持っていたとしても、経営者は「会社標準の順守こそが重要だ」、開発者は「変更に柔軟に対応できる新しいアーキテクチャーが要る」と発想の前提が違っていたりする。この横でテスト担当者は「リスクを重視したテストをすれば、クレームを減らせそうだ」とまた別のことを考えているかもしれない。

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

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

国際規格もあるソフトウエアの「品質」

 ソフトウエアの品質とは「システムやサービスを使う人の要求をどれだけ満足させるか」ということだ。しかし、システムの種類や関係者の立場によって要求や考え方は様々。要求を漫然と並べるだけだと、考慮不足や矛盾のある要求一覧になってしまう。

 要求の整理に役立つのが、ソフトウエア品質の評価に関する国際規格「ISO/IEC 25010:2011」である。この規格では、ソフトウエアの品質特性を8つに分類している(表1)。ただ、表1に示した定義だけでは、表現の抽象度が高く理解が難しい。そこで、スマートフォン向けのECサイトを例に品質特性のイメージを説明しよう。なお、以下はECサイトに求められる品質を網羅しているわけではない点は注意してほしい。

表1●ISO/IEC 25010:2011が示す8つの品質特性
JIS X 25010:2013,p7 図4を基に筆者作成
[画像のクリックで拡大表示]

 (1)機能適合性とは、利用者が買い物をするために必要な機能が過不足なく備わっていることだ。(2)性能効率性は、ユーザーが購入ボタンや決済ボタンを押下したときに、適切なタイミングで応答があること。商品検索の応答時間も同様だ。(3)互換性は、様々な機種のスマートフォンからアクセスしても同じように使用できることを指す。(4)使用性は、年齢や性別、システムへの慣れなどに関係なく、商品検索や購入をスムーズにできることだ。

 (5)信頼性とは、購入合計金額の計算や決済が間違いなく行われること。システム障害が起こらないことも信頼性の重要な要素だ。(6)セキュリティは、登録してある個人情報の流出・不正利用がないこと。(7)保守性は、システムやソフトウエアに不具合が発生した際に、原因の特定と修正を速やかに行えること。(8)移植性は、スマートフォンの新しい機種やOSに速やかに対応できることを指す。

 曖昧としていた品質に対するイメージも、8つの品質特性を使って分類して整理すると分かりやすくなるはずだ。開発するシステムには、必ず目指すべき品質がある。これを曖昧に表現するのではなく、8つの品質特性で検討するといい。

この先は有料会員の登録が必要です。「日経SYSTEMS」定期購読者もログインしてお読みいただけます。有料会員(月額プラン)は登録月無料!

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