Introduction
ソフトウェア開発を含め、モノづくりの現場には「QA(Quality Assurance:品質保証)」という言葉があります。本コラムでは、ソフトウェアのQAとは何か、その概要とQAを担うQAエンジニアの役割についてご紹介します。
目次
そもそも「QA(Quality Assurance)」とは?
「QA」とは、「Quality Assurance」の略で、日本語では「品質保証」のことを意味します。QA(品質保証)とは、単に製品に欠陥がなく、仕様通りに動作するかといった確認にとどまらず、使う人のニーズを満たし、かつ高い満足感が得られる製品・サービスを生み出す活動全般を指します。また、近年ではトラブルなく動くのは当たり前で、使い勝手や使って満足できるものが求められるようになり、品質に対する要求レベルも上がっています。そのため、開発した製品・サービスの品質をユーザー視点で評価し、ときにはその知見をもって上流工程から関与して、製品・サービスの品質を担保・向上させる活動もQA(品質保証)には含まれます。
株式会社SHIFTでは、この重要な品質保証に関して豊富な実績とテストナレッジを保有しており、あらゆるお客様のニーズを満たしたテスト・品質保証を上流~下流(テスト計画・テスト設計・テスト実行・テスト品質管理)まで一気通貫でご依頼いただけます。
>>ソフトウェアテスト・品質保証のページへ
>>導入事例ページへ
>>料金についてページへ
>>お問い合わせページへ
QC(品質管理)との違いは?
QAとしばしば混同される言葉として、「QC」があります。「QC」は「Quality Control」の略で、「品質管理」を意味しています。いずれも品質に関わる活動ではありますが、QC(品質管理)は製造・開発工程において、一定の基準を満たしているかをチェックする、いわばゲートキーパーの役割です。一方のQA(品質保証)は、場合によっては上流工程から関与して、製品・サービスの品質保証・向上を担っており、責任、業務範囲ともにQCを包括しているといえます。
あわせて読みたい
>>『QC7つ道具』とは? 手法の説明とソフトウェア開発現場における活用例
ソフトウェアのQA(品質保証)とは
昨今では、生活のあらゆる場面でデジタル化が進み、ソフトウェアに関わる立場が多様化してきています。ユーザーはもちろんのこと、運用管理者、事業担当者など、それぞれの立場におけるソフトウェアに対するニーズは日々変化しており、それに追従しようと開発サイクルも短くなっています。その結果、変化に柔軟に対応できる開発手法の導入や体制構築など、ソフトウェア開発を取り巻く環境はつねにアップデートが求められています。
ソフトウェアのQA(品質保証)とは、そのようなつねに変わりつづける開発環境に追従しながらも、ソフトウェアの特性や目標とする品質レベルを踏まえた品質保証を行うものであり、その役割を担っているのがQAエンジニアとなります。
なぜソフトウェアのQA(品質保証)が重要なのか
ソフトウェア開発においてQA(品質保証)は、多くの場合、ソフトウェアテストの文脈で語られます。そして、ソフトウェアテストは開発組織の体制に関わらず必ず実施されます。
「開発者がテストを実施する場合、QAエンジニアはいらないのでは?」と思う方もいるかもしれませんが、QA(品質保証)においてQAエンジニアという存在は必須であり、開発者とQAエンジニアが行うテストには、その「範囲」と「目的」という点で明確に違いがあります。
開発者は「本人が開発した範囲」が、「仕様通りの動作をするか確認する」ことを主な目的としているのに対し、QAエンジニアは、「ソフトウェア全体」が「目標とする品質レベルに達しているか」をあらゆる指標をもとに判断しながら、さらには「ユーザーにとって使いやすいか」といった観点まで含めたテストを実施します。
また、そもそも開発者自身がテストを実行することには以下のようなデメリットがあります。
・自分が開発したもののテストを行うのはモチベーションが下がる
・第三者性がないため、仕様の抜け漏れが発生しやすい
・開発者がテストを実行するとコストが高い
・品質のプロではないため、品質に不安が残る
そのため、品質保証を専門としたQAエンジニアがテストを推進し、独自の観点から品質を担保する必要があります。
>>開発現場で目指すべき品質保証とは~効果が最大化するテスト自動化の適用方法~
>>「品質」は誰が決めるもの?~改めて「品質」を考えてみる~
テストだけがQA(品質保証)ではない
ここまでソフトウェアのQA(品質保証)についてソフトウェアテストを中心に解説してきましたが、QA(品質保証)=テストではありません。QA(品質保証)の範囲は開発プロジェクトの上流工程から下流工程まで多岐にわたります。
具体例をいくつかあげると、上流工程から品質をつくりこむための体制構築やプロセス改善、テスト戦略の策定といった上流工程のコンサルティングを行い、品質の標準化や効率的な開発を提案したり、設計段階で仕様書の評価(インスペクション)を実施し、さらには開発者に対して仕様の提案をすることで不具合の発生や品質低下を未然に防ぐこともあります。
このようにQA(品質保証)は、開発工程全体の品質課題に対応することで、プロジェクト全体を通してソフトウェアの品質を担保しているのです。
どのように品質を担保するのか
ソフトウェア開発の全体の流れを把握するためによく用いられるのが「V字モデル」という概念図です。(近年では、開発工程を機能単位の小さいサイクルで繰り返すアジャイル開発が主流になっていますが、ここではシンプルでわかりやすい旧来のV字モデルを用いて説明します)
開発とテストはこの図のように対応しており、実際の作業プロセスは「要件定義」、「設計」、「開発」、「テスト」の順に行います。(作業プロセスについてはこちら:ソフトウェア開発とは?種類や手法、開発の流れやコツについてわかりやすく解説)
最後のテスト工程では「単体テスト」から「受入テスト」の4種類のテストを実施し、要求が正しく反映されているかを確認することで、品質を担保することができます。前述のとおり、テストだけが品質保証ではないため、「要件定義」や「設計」段階でも、品質担保のためのあらゆるつくりこみを行っていきます。
このようにプロジェクト全体を通して、品質保証を行っていきます。
あわせて読みたい
>>SHIFTが行う品質コンサルティングとは?できる課題解決とメリット、流れを紹介
>>コンポーネント(単体、ユニット)テストとは?手法などを例で紹介
>>結合テストとは?目的や観点・種類・単体テストとの違いを解説
>>システムテスト(総合テスト)とは?その目的・観点・種類、実務で使える手順について解説
>>受け入れテスト(UAT)とは?実施の目的を観点別に紹介
QAエンジニアとは
QAエンジニアの役割は前述のプロジェクト全体の品質保証を担い、ソフトウェアの品質担保・向上に取り組むことです。またその役割の広さに比例して、付随する責任は大きく、ソフトウェアをリリースした後に致命的な不具合が見つかると、社会的な信用の失墜につながることもあります。そのためQAエンジニアは、ひとつのソフトウェアだけではなく、企業や組織の信用を守るうえで非常に重要な存在なのです。
QAエンジニアの主な業務
企業や組織によってQAエンジニアの業務内容は異なりますが、ここでは一般的なQAエンジニアの業務についてご紹介します。
テストマネージャー
テストマネージャーの主な業務として「テスト計画書の作成」があります。テストマネージャーは開発チームと調整し、「このようなテストを実施して、ゴールはここに設定しましょう」といった大枠を決定します。これが「テスト計画書」と呼ばれるもので、具体的には以下のような業務を行います。
・テスト対象と範囲の決定
・テストエンジニアなどのメンバーのマネジメント
・ドキュメントや各種ルールの定義
・テストスケジュールや各種業務フローの作成
・ツール・環境などの準備
実際のテストは、テストマネージャーが策定したテスト計画に沿って実施されるため、テストマネージャーはテストを進めるうえで重要な役割を担っているといえます。
テストエンジニア
テストエンジニアはテスト計画に基づいて、ソフトウェアのどこをどのようにテストするかを決定し、具体的なテストケースを作成します。その際にはさまざまなテスト技法を用いて、効果的なテストを設計し、更には重要度やリスクを分析して、効率的なテスト順序を策定します。
そしてそのテストケースに従い、ソフトウェアが正しく動作するか、1つずつチェックを行い、正しく動作しない部分を発見した場合はエビデンスを取得し、開発チームに報告します。テストの進捗や結果を分析して、プロダクトやプロジェクトの課題を抽出するのもテストエンジニアの仕事です。
QAコンサルタント
上流工程において品質保証の規範をつくり、品質標準化や、その管理体制構築、管理ルールの策定などを担い、プロジェクト全体でソフトウェアの品質を向上させるためのさまざまな戦略・計画の策定を行います。
関連サービスについて
QA(品質保証)に関わる業務
テストそのもの以外にもQA(品質保証)に関わる業務はいくつもあります。ここでは、その一部をご紹介します。
テスト自動化の推進
近年は、急速なビジネス拡大・変革に対応するために多くの企業がアジャイル開発手法を取り入れており、柔軟でスピード感をもった開発が求められています。そのような状況下で「テストケースの設計」「テストの実施と結果の確認」「テスト進捗の管理」「レポートの作成」といった業務の一部、またはすべてをシステムが制御することを「テスト自動化」といいます。テスト自動化の導入により、問題点の早期発見が可能となるほか、人為的なミスを防いだり、リソースが不足していてもテストの実施が可能になります。
(テスト自動化についてはこちら:テスト自動化とは?メリットや導入の流れ・向いているテストを解説)
インスペクション
上流工程で実施できるQA(品質保証)の一つが「インスペクション」です。ソフトウェアの設計書、仕様書、さらにはマニュアルや説明書なども含めたドキュメントに対して、モデレーターが進行役となり、有識者が形式に基づいたプロセスでレビューを実施します。インスペクションを実施することで、品質向上だけでなくコスト削減など、下流工程で行うテストとは異なる効果が期待できます。
(インスペクションについてはこちら:IT業界のレビュー方法 ソフトウェアインスペクションとは?)
まとめ
ソフトウェアのQA(品質保証)は、開発者目線の最終チェックに留まらず、ユーザー目線の使いやすさまで含めたテストに加え、プロジェクト全体における品質の担保・向上を指します。したがって、開発エンジニアやQAエンジニアが単独で行うものではなく、組織的に取り組む必要があります。
しかし、組織の品質保証体制を整備・強化するためには目的にあった組織づくりや人材育成が必要となるため、一朝一夕でできるものではありません。そのため、外部リソースの活用も選択肢のひとつとなります。
SHIFTでは、テスト・品質保証の戦略・計画策定といったコンサルティングから、各工程でのテスト設計・実行、テストの生産性を高めるテスト自動化やテスト管理ツールの提案まで、どんな品質課題にも対応できるソリューションを提供しています。ソフトウェアの品質保証に関して、お困りごとや課題をお持ちの方はぜひSHIFTまでお声がけください。
>>ソフトウェアテスト・品質保証のページへ
>>導入事例ページへ
>>料金についてページへ
>>お問い合わせページへ