ソフトウェア開発において、サービスの品質を保証する役割を担うのが「QA(品質保証)」です。「QAエンジニア」が、システムが問題なく動作するか、ユーザーの求める品質になっているかを検証します。
この記事では、QA(品質保証)の主な役割やQC(品質管理)との違い、具体的な仕事内容について解説していきます。
記事の後半では、QAエンジニアとして活躍するために必要なスキルについてもご紹介しますので、ぜひ最後までご覧ください。
- もくじ
1.「QA(品質保証)」とは?
まずは、QA(品質保証)とは何なのか、関連用語との違いも交えて基本事項について解説します。
1-1 QA(品質保証)とは
QAは、「Quality Assurance(品質保証)」の略称で、ソフトウェアなどの開発物の品質全体を保証すること、およびその職種を指します。
QAは、企業や組織によって、そのミッションや仕事内容が異なることが一般的であり、QAという名称の職種を設けていない会社も少なくありません。
例えば、テスト業務を行うテストエンジニアとしての役割がメインの場合もあれば、レビューを専門に行っている職種もあります。
他にも、データを収集・分析して、開発プロセスの質、プロダクトの質にフィードバックをかける品質管理を専門にしている職種もあります。
このように、テスト、レビュー、データ収集・分析などを専門的に行っている方を、本稿では「QAエンジニア」と総称しています。
1-2 QC(品質管理)との違い
名称 | 主な役割 |
---|---|
QC(品質管理) | 企画設計からリリースまでの品質管理を行う |
QA(品質保証) | リリース後も継続的に品質改善を行う |
QAに似た言葉で、QCという職種もあります。QCとは「Quality Control(品質管理)」を略した言葉です。
納品後も継続的に品質改善を行うQAに対して、QCは、企画設計から納品までの品質管理を行います。
また、高品質なシステムをいかに効率よく低コストで構築できるかという視点も求められる、こちらも重要な役割です。
品質管理を実施する際は、QC七つ道具と呼ばれるツールを用いて数値・定量的に分析していきます。
2.QAエンジニアはソフトウェア開発において重要なポジション!
QAエンジニアという職種について、「開発者がテストを行うから必要ないのでは?」と考える方もいるかもしれません。
しかし、開発者の行うテストとQAエンジニアが行うテストは、そもそもの目的が異なるためどちらも大切です。
開発者が行うテストは、本人が開発した範囲および担当範囲内で「仕様に沿った動作をするか確認する」ことを主な目的としています。新規に開発したメソッドの単体テストや、不具合修正した際の影響範囲に基づいた結合テストという形で実施されることが多いです。システムを詳しく知っているからこそ、テスト結果も偏りが出やすくなってしまいます。
一方のQAエンジニアは、「システム全体としてユーザーが使いやすい形になっているか」「当初のユーザー要求に沿っているか」という観点でテストを実施します。ユーザーの実際の利用想定に基づくシナリオテストや、システムの負荷テストや画面UIの検証を行い、より客観的にシステムの品質を確認していくのです。
このように、QAエンジニアは開発者とは全く異なる視点で品質保証テストを行っており、ソフトウェア開発において、とても重要なポジションといえます。
システムが問題なく動くか、というだけではなく、″ユーザーにとって使いやすいか″を考えて「ソフトウェアの品質全体に対して責任を持つ立場」なのです。
3.QAエンジニアの主な7つの仕事内容
3-1 仕様や設計のレビュー
QAとして品質保証を行うために、機能仕様や設計内容についてもレビュー・評価を行うことがあります。
仕様に抜け漏れや曖昧な点がないか、仕様変更や設計変更による設計・実装の修正や追加の内容が妥当であるかなどを洗い出し、不具合の作り込みを回避するようにします。
必要であれば開発者に対して仕様を提案することもあります。
3-2 テストケースの設計・テスト実行
QAエンジニアとしてのメイン業務と言えるのが、テストケースの設計と実行です。
具体的には、ユーザーケースやシナリオを作成し、これに基づいたユースケースのフローを実施した際に、期待した通りの動作をするか確認・評価します。
テスト中に不具合を検知した際には、再現手順の確認からシステムの動作に関してエビデンスを取得し、開発側に報告します。
3-3 テスト結果と不具合の分析
テストを実施し、テスト結果から得られた不具合検知数や内容を分析することもQAエンジニアの仕事です。
得られたデータから不具合の傾向を見つけて開発リーダーに報告したり、再発防止策を提案・実施したりすることもあります。
その他、レビュー結果の分析、各工程にかかる工数の分析など、プロダクト面とプロセス面の両面で分析し、開発全体にフィードバックをかけることもします。
3-4 テスト自動化の検討
開発中に常に行うリグレッションテストや、膨大なデータを扱うテストなどに対しては、テストを自動化するという手段を取ることがあります。
効率的なテスト実施の計画・手段を検討し、SeleniumやJenkinsといったツールを利用しながら自動化を実現します。
自動テストを構築し、それを運用する作業は、内容的には開発作業と全く同じです。
QAエンジニアは、製品・システムの開発者と役割は異なりますが、品質保証の面から設計・プログラミングの素養が求められることもあるのです。
3-5 開発プロセスの見直し・改善
レビューやテストの実施結果をよく分析すると、開発プロセスの問題点、改善ポイントが浮かび上がってきます。
- その不具合は、なぜ作り込まれたのか
- その不具合は、なぜ検出できなかったのか
- その不具合を作り込まずに、最初から正しく開発するにはどうすればよかったのか
- その不具合を、もっと早く、確実に検出するには、どのようにレビューしたらよかったのか、どのようにテストすればよかったのか
このように、さまざまなデータや情報を分析し、開発プロセスを改善して生産性と品質を向上させていくことも、重要な業務です。
3-6 顧客の問い合わせ対応
顧客からの問い合わせに対応する専門窓口を設けていない状況では、顧客への仕様の回答をQAエンジニアが行う場合があります。
特に、テストエンジニアは、開発者よりも製品全体の製品仕様に精通していることが多く、不具合の対応窓口を担当することもあります。
企業によっては、品質管理の面でQA部門に強い権限を持たせるとともに、市場不具合の全責任は開発部門ではなくQA部門が負う、という組織構造にしているところもあります。
3-7 品質計画の策定
QAエンジニアは「品質計画」の策定に関与するケースも少なくありません。品質計画とは、プロジェクトが達成すべきソフトウェアの品質目標や、その達成に向けたプランを明確にするプロセスのことです。
品質計画は、主にプロジェクトの初期段階で行われます。品質計画で設定した品質目標は、以降のレビューやテストにおける基準・指針となります。つまり、品質計画が正しく行われなければ、その後に実施するQA業務の方向性もぶれてしまうのです。
品質計画において達成すべき品質目標を正しく定めるためには、QAエンジニアのサポートも必要となります。
例えば過去のバグ情報に基づき、バグ関連の指標に対してアドバイスできるでしょう。QAエンジニアならではの知見や視点が求められる業務です。
4.QAエンジニアに求められるスキル
前章で述べてきたように、QAエンジニアは非常に幅広い業務を担うため、開発者と同様に、多様なスキルが必要です。
例としては以下のようなものがあります。
- テストやレビューに関する知識
- コーディングスキル
- コミュニケーションスキル
- マネジメントスキル
それぞれ解説していきます。
4-1 テストやレビューに関する知識
QAエンジニアには、テストやレビューに関する知識が必要です。
例えば、テストケースを効率的・網羅的に作成するために、さまざまなテスト技法を活用します。また、レビューの種類や進め方、チェックポイントなどを知らなければ、効果的なレビューは行えません。
こうした業務の品質・生産性を高めるためには、土台となる知識が求められます。
品質やテストの基礎を学びたい方はこちらのeラーニング講座がおすすめです。
ソフトウェア品質セミナー eラーニング版「品質とテストの基本編」
ソフトウェアテストの意義と重要性、並びにソフトウェア業務の概観と品質の考え方を体系的に把握することを目的としています。そして、基本的な発想法の講義を実施し、実業務での活用の視点を提供します。
4-2 コーディングスキル
QAエンジニアでも、ある程度のコーディングスキルは持っておくべきでしょう。
例えば、Seleniumなどのツールを用いてテストを自動化する際、コーディングを行うことがあります。
また、コーディングスキルがあれば品質データの分析を効率化したり、レビューにコード寄りの視点を取り入れたりすることも可能です。
4-3 コミュニケーションスキル
QAエンジニアにとって、コミュニケーションスキルも重要です。
開発チームと関わるレビュー、顧客からの問い合わせ対応など、QA業務には人と関わる場面が多々あります。
円滑にコミュニケーションを取れなければ、認識違いからタイムロスが生じるばかりか、相手からの信用を失うことも考えられます。
4-4 マネジメントスキル
QAエンジニアには、対象物を適切に管理するためのマネジメントスキルも必要です。
テストの進捗や品質保証で発生した課題など、QA業務には管理すべき対象が多数あります。また、仕事内容が多岐にわたる性質上、複数のタスクを抱える場面も少なくありません。
マネジメントスキルがなければ、適切に状況を把握したり、課題に対処したりすることは難しいでしょう。
何よりも、「ソフトウェア製品全体を総合的に捉える広い視野」と「柔軟な対応能力」を持っているかどうかが問われます。不具合発生やシステムの動作に支障が出た際にさまざまなアプローチによって問題解決したいという人材ならば、QAエンジニアへの適性があると言えるでしょう。
実際にQAとして働いている方の業務への取り組み方を知りたい方はこちらの連載記事をご覧ください。
5.QAエンジニアに役立つ資格
QAエンジニアとして活躍する際に役立つ資格を3つご紹介します。
5-1 JSTQB 認定テスト技術者資格
JSTQB 認定テスト技術者資格は、JSTQB が運営している認定資格です。
JSTQBはソフトウェアテストに関する国際的な資格認定団体である「ISTQB」(International Software Testing Qualifications Board)の加盟組織として認定されているため、国際資格として世界的に通用します。
資格レベルは、FL(Foundation Level)、AL(Advanced Level)があり、FL、ALテストマネージャ、ALテストアナリストが通年での受験が可能です。
ご自身やチームメンバーのスキル向上のために、資格取得を検討されてみてはいかがでしょうか。
Qbookでは、資格対策アプリ「テス友」と資格対策講座「eラーニング」を提供しています。受験をお考えの方はぜひご活用ください。
ソフトウェアテスト完全攻略ガイド「テス友」
「ソフトウェアテスト資格完全攻略 テス友」は、Qbookに登録することでご利用いただける、テスト技術者資格認定の勉強用アプリ/ウェブサービスです。
JSTQB® 認定テスト技術者資格 試験対策講座 一覧
独学だけではどこが重要かわかりにくいJSTQBのシラバス。本講座では、章ごとの真に重要なポイントを押さえて全面解説します。また、試験問題の傾向解説や模擬試験など、試験合格をきちんと意識。加えて、講義はオンライン環境で視聴回数に制限はありません。分かるまで、試験直前まで、何度でもご確認いただけます。
資格取得を目指している方はぜひご活用ください。
5-2 IT検証技術者認定試験(IVEC)
IT検証技術者認定試験(IVEC)とは、一般社団法人IT検証産業協会(IVIA)が認定するテストエンジニアの資格試験です。試験は年2回のペースで実施されています。
ソフトウェアテストの資格の中でもIVECは、テスト現場の実務を重視しており、取得することでソフトウェアテスト技術者として業界で高い評価を受けることができます。
試験レベルは以下の通りです。
1.アシスタントクラス | テストの基本とマインド、テスト技法の知識 |
---|---|
2.テスタークラス | テスト実行とテスト結果の分析スキル |
3.デザイナークラス | テスト設計とテストの実装スキル |
4.アーキテクトクラス | テスト要求分析と計画、プロジェクト管理スキル |
5.エバンジェリストクラス | 特定分野のエキスパートやスペシャリスト |
どのクラスも受験資格なしで受験可能です。
2024年から試験クラスや受験形式が変更されています。詳しくはこちらをご覧ください。
5-3 ソフトウェア品質技術者資格認定(JSTQE)
JCSQEとは、「JUSE Certified Software Quality Engineer(ソフトウェア品質技術者資格認定)」の略称であり、ソフトウェアの品質技術を高めると共に、継続的・効果的に品質向上を目指すための認定資格です。
このソフトウェア品質技術者資格認定では、「すべてのソフトウェア技術者に品質技術を身につけ、実践していくことにより、ソフトウェア品質の向上を実現すること」を目的としています。
試験は、レベル別に分かれており、現在は初級と中級のみであるものの、上級試験に関しても新設が予定されています。
スキルアップを目指している方はこちらの記事もご覧ください。
まとめ
QA(Quality Assurance)とは、ソフトウェアなどの開発物の品質全体を保証する職種を指します。
今回の記事では、QAエンジニアという職種について、その目的から仕事内容、適性についてご紹介しました。
QAエンジニアは開発エンジニアに比べて知名度は低いかもしれませんが、ソフトウェア製品の品質を保証するためには重要なポジションを担っています。
興味がある方は、QAエンジニアとしてのキャリアパスを検討してみてはいかがでしょうか。
バルテスではQAエンジニアを募集しています。QAエンジニアのキャリアに興味がある方はぜひこちらのサイトをご覧ください。