最終更新日: 2024年2月19日

ソフトウェアの「品質保証(QA/Quality Assurance)」は、ソフトウェア開発にとって、なくてはならない役割です。
ただ「ソフトウェアの品質保証」と聞いても、具体的にどんな仕事をするかイメージしにくい方も多いでしょう。品質保証とは別に品質管理という似た言葉もあり、初めてこれらと関わる方にとっては違いがわかりにくいものです。
この記事では、ソフトウェアの品質保証とは何か、そして具体的な仕事内容や品質保証に関わる職種についてご紹介します。あわせて品質管理との関係についても解説いたしますので、参考になれば幸いです。

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

ソフトウェアにおける品質保証(Quality Assurance/QA)とは、ソフトウェアに要求される品質が満たされていることを確認・保証する活動のことを指します。そもそも品質とはなんでしょうか。JSTQBでは次のように定義しています。

コンポーネント、システム、プロセスが、指定された要求、ユーザ、顧客のニーズ、期待を満たす度合

つまり、上記を一定のレベルで満たすことを保証することが、品質保証となります。

品質保証(QA)=テストという使われ方をする場合もありますが、厳密には、品質保証の中にテストも含まれるものの、イコールではありません。JSTQBのシラバスでは、

品質保証とテストは、関連してはいるが同じではない。さらに大きな範囲を表す品質マネジメントという概念 が両者を結び付けている。

としています。品質マネジメントについては、次章にて解説します。

その上で、品質保証は、

一般的に、品質が適切なレベルに確実に到達するよう、適切なプロセスを遵守することに重点を置く。

としています。
テストも含めたプロセスを適切に遂行することによって、成果物は一般的に高い品質を維持します。これにより欠陥を防ぐことができます。さらに、

根本原因分析を使用して欠陥の原因の検出と除去を行い、プロセスを改善するために振り返りミーティングでの発見事項を適切に利用することが、 品質保証の有効性を高めるために重要である。

ともあります。単にテストによって欠陥を発見し、取り除くことだけではなく、その根本原因分析をし、その後発生しないような体制を作っていくことも含めて、品質保証の活動となります。

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

品質保証と共によく使われるのが、「品質管理」です。
そもそも「品質管理」という言葉を整理していきましょう。英語の「Quality Management/QM」と「Quality Control/QC」は、どちらも「品質管理」と訳すことができるため、文脈や場面によってどちらを指しているかは異なります。品質マネジメント(QM)のほうは広義の概念、品質コントロール(QC)のほうは狭義の概念となり、品質マネジメントの中に、品質保証と品質コントロールが含まれます。現在では、QMを品質マネジメントと訳し、QCを品質管理と訳すことが一般的です。本記事では、用語の混同を避けるために、QCは品質コントロールと記載します。

JSTQBのシラバスでは、

品質コントロールには、テスト活動を含め、適切なレベルの品質を達成するために役立つさまざまな活動が含まれる。

また、

品質マネジメントは、品質に関して組織の方針を示し、組織をコントロールするための活動をすべて含む。

とあります。
つまり、品質マネジメントとは、品質計画、品質コントロール、品質改善、品質評価、リスク管理などを含み、組織全体で品質を管理するアプローチのことです。
品質マネジメント(QM)、品質コントロール(QC)、品質保証(QA)はいずれも、ソフトウェアの品質を満たすための活動という目的は同じですが、含まれる範囲が違います。ただし、すべて同じような意味で使われるケースも多いことも留意しておきましょう。まとめると、次の通りです。

品質マネジメント(QM)品質に関して組織の方針を示し、組織をコントロールするためのすべての活動。
品質コントロール(QC)テスト活動を含め、適切なレベルの品質を達成するために役立つさまざまな活動。
品質保証(QA)品質が当初設定したレベルに確実に到達するよう、適切なプロセスを遵守するための活動。

三者の関係を図に表すと、以下のようになります。

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

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

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

その上でソフトウェアの品質は、「当たり前品質」と「魅力的品質」に分類できます。当たり前品質・魅力的品質の両方を備えることで、ユーザーに満足してもらうことができるのです。以下、それぞれどんな品質を指すかみていきましょう。

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

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

たとえばガンシューティングゲームの場合は、ユーザーが動いたり銃を撃ったりする機能のことを指します。これらは、ガンシューティングゲームでは「当たり前に」備えているべき機能であり、それが実現できたからといってユーザーは喜びません。できて「当たり前」だからです。もし、これらの機能が使えなければ、ガンシューティングゲームを楽しみたいユーザーは不満を感じます。

当たり前品質を確保するためには、以下に挙げる種類のテストが必要です。
・単体テスト
・結合テスト
・システムテスト
・探索的テスト など

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

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

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

魅力的品質を確保するためには、ユーザーテストなどが必要です。ユーザーの意見を広く集め分析することで、魅力的品質の保証を行います。ちなみにAIQVE ONEでは、魅力的品質を向上させるのに役立つ「FunQA」というユーザー体験の品質保証サービスをご用意しています。FunQAは、50,000人以上のモニターとゲーマーに楽しんでもらいながら行う新しいQAです。FunQAではユーザー調査によって課題・改善点を洗い出し、レポートにまとめてお客様に提出いたします。
サービスの詳細やサマリーレポート例については、以下のページにてご覧いただけます。
https://www.aiqveone.co.jp/service/funqa/

【関連記事】魅力的品質とは?当たり前品質との違いと注意すべきポイントも解説

品質保証にかかわる職種

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

QAエンジニア

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

テストエンジニア

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

テスト自動化エンジニア

テスト自動化エンジニアの役割は、文字通りテスト自動化を実現することです。テスト自動化の提案や設計、自動化ツールの構築、他ツールとの連携などが具体的な業務として挙げられます。テスト自動化エンジニアには、プログラミングの知識が不可欠です。
ただし、企業によって呼び方は様々で、テスト自動化エンジニアの役割をQAエンジニアが担うこともあります。

テストマネージャー

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

テスター・デバッガ―

テスターとは、あらかじめ用意された手順書(テストケース)をもとにテストを実行し、バグの有無を確認する役割です。デバッガーはバグの原因を突き止め、修正する役割を指します。
なお、ゲーム業界においてはデバッガーがテストを実行し、バグを見つける役割となるので注意して下さい。業界によって、デバッガーの役割が異なります。

ゲーム業界におけるテスターとデバッガーの役割については以下の記事で詳しく解説しています。
【関連記事】デバッグとは?テストとの違い、ゲーム業界における意味も解説!

まとめ

ソフトウェアにおける品質保証(Quality Assurance/QA)とは、ソフトウェアに要求される品質が満たされていることを確認・保証する活動のことを指します。共によく使われる言葉に「品質管理」がありますが、英語の「Quality Management/QM」と「Quality Control/QC」は、どちらも「品質管理」と訳すことができ、文脈や場面によってどちらを指しているかは異なりますので注意しましょう。ただし、品質コントロール(QC)を「品質管理」と訳すことが一般的です。品質コントロール(QC)は、テスト活動を含め、適切なレベルの品質を達成するために役立つさまざまな活動のことを指します。いずれも、ソフトウェアの品質を満たすための活動という目的は同じです。

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

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