ソフトウェアの品質保証(QA/Quality Assurance)は、ソフトウェア開発にとってなくてはならない役割です。ソフトウェアの品質を確保する番人のような役割を、品質保証が担っています。

ただ「ソフトウェアの品質保証」と聞いても、具体的にどんな仕事をするかイメージしにくい方も多いでしょう。品質保証とは別に品質管理という似た言葉の役割もあり、初めてこれらと関わる方にとっては違いがわかりにくいものです。

この記事では、ソフトウェアの品質保証とは何かや具体的な仕事内容を紹介します。あわせて品質管理との違いも解説するので、ソフトウェアの品質保証とは何か知りたい方は是非参考にしてください。

ソフトウェアの品質保証とは

ソフトウェアにおける品質保証とは、ソフトウェアに要求される品質が守られていることを確認・保証することです。品質保証では、事前に決められた品質目標をソフトウェアが達成しているかを確認(保証)するための情報を収集します。その上で必要に応じ、顧客やユーザーへ品質を保証する根拠となる情報を提供するのです。

品質保証の活動は、仕様の設計から実装、テスト、さらには開発終了後も続きます。全工程でソフトウェアが品質目標に達しているかをチェックし、顧客のクレームに基づき開発へフィードバックを行うのも品質保証の役割です。

品質保証の活動は、提供元側の視点だけでは行うことができません。ユーザー側の視点に立って、求められる品質を満たしているか確認・保証する必要があります。

ソフトウェアの品質管理とは?品質保証との違いは?

ソフトウェアの品質保証とよく混同されるのが、「ソフトウェアの品質管理」です。いずれもソフトウェアの品質に関わる活動である点は共通していますが、その目的や視点は異なります。

ソフトウェアの品質管理とは、文字通りソフトウェアの品質を管理するための活動です。ソフトウェアの品質管理では、以下のようなことを考え実行します。

・どのようにすればソフトウェアの不良を防げるか
・品質向上のため、どう業務を改善すればよいか

ソフトウェアの品質管理・品質保証の違い

ソフトウェアの品質管理をみてきました。次に、ソフトウェアの品質管理・品質保証の違いをみていきましょう。

両者の最も大きな違いは、ソフトウェアの品質に対する関わり方にあります。ソフトウェアに要求される品質を「実現」するための活動が品質管理であり、「保証」するための活動が品質保証ということです。

またソフトウェアの品質保証がユーザー視点で行われる活動だったのに対し、品質管理では提供者側の視点が必要となります。提供者側の組織内部から、その業務改善などを検討する必要があるためです。

ソフトウェアの品質保証と品質管理の主な違いは、以下のようにまとめられます。

ソフトウェアの品質保証ソフトウェアの品質管理
目的ソフトウェアの品質を「保証」することソフトウェアに要求される品質を「実現」すること
視点ユーザーの視点ソフトウェア提供者の視点
具体的な活動内容ソフトウェアの品質を保証するのに必要なデータの収集やチェック業務の改善など

そもそもソフトウェアの「品質」とは?

品質保証や品質管理の概念についてみてきましたが、そもそもソフトウェアにおいて品質とは何でしょうか。品質を示す言葉として、「機能性」「安定性」「操作性」「性能」などいろいろあげられます。

ただし、これらはそれぞれソフトウェア品質をはかる基準の1つずつでしかありません。もっと端的にソフトウェアの品質を説明するなら「どれだけユーザーの要求を満たしているか」と言えるでしょう。ユーザーの要求を満たすソフトウェアこそ、品質の高いソフトウェアなのです。

その上でソフトウェアの品質は、さらに「当たり前品質」や「魅力的品質」に分類できます。当たり前品質・魅力的品質の両方を備えることで、ユーザーに満足してもらえるのです。

以下、それぞれどんな品質をさすかみていきましょう。

満たされないとユーザーの不満を招く「当たり前品質」

当たり前品質とは、文字通り「当たり前に」備えているべき品質のことです。より専門的には、満たされないとユーザーの不満を招くが、仮に実現してもユーザーを喜ばせることができない品質を指します。

たとえばガンシューティングゲームでは、ユーザーが動いたり銃を撃ったりする機能のことです。これらは、ガンシューティングゲームでは「当たり前に」備えているべき機能であり、それが実現できたからといってユーザーは喜びません。

できて「当たり前」だからです。もし、これらの機能が使えなければ、ガンシューティングゲームを楽しみたいユーザーは不満を感じます。

当たり前品質を確保するためには、以下にあげる種類のテストが必要です。

単体テスト、結合テスト、システムテスト、探索的テストなど

あるとユーザーに満足してもらえる「魅力的品質」

一方、「魅力的品質」とは、なくてもユーザーから不満を受けることはありませんが、あれば喜ばれる品質です。当然備えるべき当たり前品質に、魅力的品質が加わればユーザーに満足してもらえます。

魅力的品質についても、ガンシューティングゲームで例をあげてみましょう。たとえば銃撃シーンなどの効果音が迫力満点だったり、操作性・ビジュアルが優れていたりするのが魅力的品質です。これらの価値がなくてもガンシューティングゲームとして成立はしますが、あればユーザーにより満足してもらえる可能性があります。

魅力的品質を確保するためには、ユーザーテストなどが必要です。ユーザーの意見を広く集め分析することで、魅力的品質の保証を行います。

品質保証にかかわる職種

ソフトウェアの品質保証には、QAエンジニアやテストエンジニアをはじめ複数の職種が関わっています。これら職種がそれぞれの役割を果たし、品質保証が実現できるのです。ここではソフトウェアの品質保証に携わる主な職種を紹介します。

QAエンジニア

QA(Quality Assurance)とは、ソフトウェアの品質を保証することです。その上で、QAエンジニアとは、ソフトウェアの品質保証を行う専門家を指します。

QAエンジニアの仕事は多岐にわたり一言で表現できません。主な業務は機能仕様や設計のレビュー、テストケースの設計や実行、テスト結果に基づく分析、データ収集、開発プロセスの見直しなどです。企業によってはQAエンジニアが、ソフトウェアの不具合に関する顧客からの問い合わせに対応することもあります。

テストエンジニア

テストエンジニアとは、ソフトウェアテストに関わる専門家です。テストの実行はもちろん、その設計や計画、テスト結果の分析まで担当します。

なおQAエンジニアもテストの実行や計画、分析に携わることがあることから、テストエンジニアと混同されがちです。しかしQAエンジニアはテストの実行や設計に加え、品質保証に関わるデータ収集・分析なども担当の範囲となります。

テストマネージャー

テストマネージャーとは、テストの実行側でなくマネージメントを行う役割です。具体的にはテスト方針やテスト計画の決定や見積、テスト体制の管理、課題解決(開発側と連携し実施)などが役割としてあげられます。

テスター・デバッガ―

テスターとは、あらかじめ用意された手順書(テストケース)をもとにテストを実行し、バグの有無を確認する役割です。デバッガーはバグの原因を突き止め、修正する役割を指します。

なお、ゲーム業界においてはデバッガーがテストを実行し、バグを見つける役割となるので注意して下さい。業界によって、デバッガーの役割が異なります。

※ゲーム業界におけるテスターとデバッガーの役割については以下の記事で詳しく解説しています。興味があればあわせてご覧ください。

デバッグとは?テストとの違いやゲーム業界における意味も解説!

まとめ

ソフトウェアの品質保証は開発中のソフトウェアに関するデータを収集・分析し、期待される品質を満たしているか確認・保証します。一方、ソフトウェアの品質管理は、どうすればソフトウェアの不良を防げるか、品質向上のため業務をどう改善すべきか検討する役割です。ソフトウェア提供者側の視点で行われる品質管理の活動に対し、品質保証はユーザー視点で品質のチェックをします。

ソフトウェアの品質を確保し、ユーザーの満足度を向上させるためには、「当たり前品質」と「魅力的品質」両方に着目しなくてはなりません。当たり前品質とは当然守られるべき品質を指し、確保できないとユーザーの不満を招きます。一方、魅力品質とは、あればユーザーに喜んでもらえる品質のことです。

ソフトウェアの品質保証に関わるのは、品質保証の専門家であるQAエンジニアだけではありません。ソフトウェアテストを統括するテストエンジニアやテストマネージャー、テストの実行者であるテスターなども関わります。