QAとは、Quality Assurance(品質保証)を略した言葉です。業務においては、製品やサービスの品質管理・品質保持をつとめる立場のことを言います。
IT業界における「QA」は、システムが問題なく動作するか、ユーザーの求める品質になっているかを検証する重要なポジションです。
この記事では、IT業界におけるQAとは何か、具体的にどんな役割を持っているのかを詳しく解説していきます。
また記事の後半では、QAエンジニアとして活躍するために必要なスキルについてもご紹介しますので、ぜひ最後までご覧ください。
- もくじ
1.「QA(Quality Assurance)」とは品質保証を担う立場
QA(品質保証)とは
QA(Quality Assurance)は、ソフトウェアなどの開発物の品質全体を保証すること、およびその職種を指します。
QAは、企業や組織によって、そのミッションや仕事内容が異なることが一般的ですし、QAという名称の職種を設けていない会社も少なくありません。
例えば、テスト業務を行うテストエンジニアとしての役割がメインの場合もあれば、レビューを専門に行っている職種もあります。
他にも、データを収集・分析して、開発プロセスの質、プロダクトの質にフィードバックをかける品質管理を専門にしている職種もあります。
このように、テスト、レビュー、データ収集・分析などを専門的に行っている方を、本稿では「QAエンジニア」と総称しています。
QC(品質管理)との違い
QAに似た言葉で、QCという職種もあります。QCとは「Quality Control(品質管理)」を略した言葉です。
納品後も継続的に品質改善を行うQAに対して、QCは、企画設計から納品までの品質管理を行います。
また、高品質なシステムをいかに効率よく低コストで構築できるかという視点も求められる、こちらも重要な役割です。
品質管理を実施する際は、QC七つ道具と呼ばれるツールを用いて数値・定量的に分析していきます。
2.QAエンジニアの重要性
QAエンジニアという職種について、「開発者がテストを行うから必要ないのでは?」と考える方もいるかもしれません。
しかし、開発者の行うテストとQAエンジニアが行うテストはそもそもの目的が異なるためどちらも大切です。
開発者が行うテストは、本人が開発した範囲および担当範囲内で「仕様に沿った動作をするか確認する」ことを主な目的としています。新規に開発したメソッドの単体テストや、不具合修正した際の影響範囲に基づいた結合テストという形で実施されることが多いです。システムを詳しく知っているからこそ、テスト結果も偏りが出やすくなってしまいます。
一方のQAエンジニアは、「システム全体としてユーザーが使いやすい形になっているか」「当初保証されていたユーザーにとってのメリットを損なっていないか」という観点でテストを実施します。ユーザーの実際の利用想定に基づくシナリオテストや、システムの負荷テストや画面UIの検証を行い、より客観的にシステムの品質を確認していくのです。
このように、QAエンジニアは開発者とは全く異なる視点で品質保証テストを行っており、ソフトウェア開発において、とても重要なポジションといえます。
システムが問題なく動くか、というだけではなく、″ユーザーにとって使いやすいか″を考えて「ソフトウェアの品質全体に対して責任を持つ立場」なのです。
3.QAエンジニアの立ち位置と主な6つの役割
QAエンジニアは、「品質保証のスペシャリスト」として開発プロセス全体に関わり、ソフトウェアの品質向上に取り組みます。
前述の章では、QAエンジニアによるテストの特徴を記載しましたが、QAエンジニアという職種の担当業務は他にもさまざまなものがあります。順に見ていきましょう。
① 設計段階での機能仕様の確認・評価
QAとして品質保証を行うために、機能仕様や設計内容についてもレビュー・評価を行うことがあります。
仕様に漏れ抜けや曖昧な点がないか、仕様変更や設計変更による設計・実装の修正や追加の内容が妥当であるか、漏れがないか洗い出し、不具合の作り込みを回避するようにします。
必要であれば開発者に対して仕様を提案することもあります。
② テストケースの設計・テスト実行
テストエンジニアとしてのメイン業務と言えるのが、テストケースの設計と実行です。
具体的には、ユーザーケースやシナリオを作成し、これに基づいたユースケースのフローを実施した際に、期待した通りの動作をするか確認・評価します。
テスト中にバグを検知した際には、再現手順の確認からシステムの動作に関してエビデンスを取得し、開発側に報告します。
③ テスト結果と不具合の分析
テストを実施し、テスト結果から得られた不具合検知数や内容を分析することもQAエンジニアの仕事です。
数値から不具合の傾向を見つけて開発リーダーに報告したり、再発防止策を提案・実施したりすることもあります。
テストの他、レビュー結果の分析、各工程にかかる工数の分析など、プロダクト面とプロセス面の両面で分析し、開発全体にフィードバックをかけることもします。
④ テスト自動化の検討
開発中に常に行うリグレッションテストや、膨大なデータを扱うテストなどに対しては、テストを自動化するという手段を取ることがあります。
効率的なテスト実施の計画・手段を検討し、SeleniumやJenkinsといったツールを利用しながら自動化を実現します。
自動テストを構築し、それを運用する作業は、内容的には開発作業と全く同じです。
QAエンジニアは、製品・システムの開発者と役割は異なりますが、品質保証の面から設計・プログラミングの素養が求められることもあるのです。
⑤ 開発プロセスの見直し・改善
レビューやテストの実施結果をよく分析すると、開発プロセスの問題点、改善ポイントが浮かび上がってきます。
その不具合は、なぜ作り込んだのか、その不具合は、なぜ検出できなかったのか、その不具合を作り込まずに、最初から正しく開発するにはどうすればよかったのか、その不具合を、もっと早く、確実に検出するには、どのようにレビューしたらよかったのか、どのようにテストすればよかったのか。
このように、さまざまなデータや情報を分析し、開発プロセスを改善して生産性と品質を向上させていくことも、重要な業務です。
⑥ 顧客の問い合わせ対応
顧客からの問い合わせに対応する専門窓口を設けていない状況では、顧客への仕様の回答をQAエンジニアが行う場合があります。
特に、テストエンジニアは、製品全体の製品仕様を開発者よりも精通していることが多く、不具合の対応窓口を担当することもあります。
企業によっては、品質管理の面でQA部門に強い権限を持たせるとともに、市場不具合の全責任は開発部門ではなくQA部門が負う、という組織構造にしているところもあります。
4.QAエンジニアに求められるスキル
上記で述べてきたように、QAエンジニアは非常に幅広い業務を担うため、開発者と同様に、多様なスキルが必要です。
例えば、ソフトウェアテストを設計し実行するスキルはもちろん、数値分析や自動化のコーディングスキルなどの技術的スキルが必要になることもあります。
さらに、開発プロセスの見直しや不具合削減のための施策を立てる際には、論理的に思考する能力や問題解決能力も求められます。
何よりも、ソフトウェア製品全体を総合的に捉える広い視野と柔軟な対応能力を持っているかどうかが問われます。
不具合発生やシステムの動作に支障が出た際にさまざまなアプローチによって問題解決したいという人材ならば、QAエンジニアへの適性があると言えるでしょう。
まとめ
今回の記事では、QAエンジニアという職種について、その目的から仕事内容、適性についてご紹介しました。
QAエンジニアは開発エンジニアに比べて知名度は低いかもしれませんが、ソフトウェア製品の品質を保証するためには重要なポジションを担っています。
興味がある方は、QAエンジニアとしてのキャリアパスを検討してみてはいかがでしょうか。