1.QAとは?

1.1そもそもQAとは?

QAはQuality Assuranceの略語で日本語では【品質保証】と訳されます。ソフトウエアなどの開発物の品質全体を保証すること及びその職種のことを指して使われる用語です。
開発物には機能的な欠陥がなく、仕様通りに動くことが求められます。更に使う人のニーズを満たし、かつ満足感を得られるようにすることも同時に求められます。それらを満たすように開発を進める活動全体を指して使われることもあります。
また、職種について言えば、製品やソフトウエアの品質に関わる業務に携わる方を指します。例えばテスト業務、各種レビュー作業、品質データ収集・分析を専門に行われている方々です。これらの業務に携わる方を指してQAエンジニアと呼ぶこともあります。

1.2 QCとの違い

QCはQuality Controlの略語で、【品質管理】を指す用語です。QCは企画設計から納品までの工程でQAが設定した品質基準を満たしているかを製品検査、テストなどで確認します。QAの場合は上流工程や納品後においても品質改善に努めることになりますので、QAの方が業務の幅が広いです。

2. QAエンジニアの重要性

開発組織の体制に関わらず、ソフトウエアテストは必ず実施されます。「開発者が自分でテストを行う場合は、QAエンジニアは必要ないのでは?」と考えられる場面があるかも知れません。しかし、開発者とQAエンジニアでは立場が違うため、違った視点でテストを行っています。
 開発者は主に自分が開発した範囲や担当する範囲において、「仕様通りに動作するか」に着目してテストを行います。また、自分が開発した部分のテストを行うことはモチベーションが下がりますし、第三者の視点がないためテストの抜け漏れが発生しやすくなってしまいます。結果として十分な障害検出がされない可能性があります。
 一方、QAエンジニアの場合は機能的な観点でのテストはもちろんのこと、システム全体が目標とする品質に達しているか、また、システム全体がユーザーにとって使いやすいかという観点でもテストを行います。結果としてシステム全体の品質を向上させることができます。

3. QAエンジニアの役割

V字モデルはシステム開発プロジェクトにおける開発工程とテスト工程の対応関係を表した1つのモデルです。QAエンジニアは下図の丸枠部分で品質向上を目的とした業務を行います。この図からQAエンジニアが幅広い領域でプロジェクトに関わることがわかります。

QAについて

QAエンジニアの主な役割を上の図で①から⑥で分けてあります。ひとつずつ順番に説明していきます。

①機能仕様の確認・評価
機能仕様や設計内容についてレビュー・評価を行います。目的は上流工程からの不具合の作りこみを回避することです。仕様の漏れや抜け、曖昧な点を洗い出します。また、仕様変更や設計変更に関わる設計・実装の変更点や追加内容に問題がないか確認します。場合によっては、開発者に対して仕様変更などを提案するケースもあります。

②テスト計画、テストケース作成及びテスト実行
テスト計画、テストケース作成及びテスト実行がQAエンジニアのメイン業務です。システムが期待通りの動作をするかどうかテストするためにユースケースや業務フローをもとにテストシナリオを作成します。これに基づいたテストを実施し、期待通りの動作をするか確認・評価します。不具合が見つかった場合はバグ票を起票し開発者に報告します。

③不具合の分析
テストを実施し得られたテスト結果や不具合を分析します。検出した不具合の傾向を分析して、開発側に不具合の再発防止策の提案などを行います。

④テスト自動化の検討・実行
ソフトウエアの変更の度に行われるリグレッションテストや大量データを使うテストを実施する際にテスト自動化ツールを活用してより効率的なテスト実施を実現します。
テスト自動化環境の構築、自動化のためのスクリプト開発、自動テスト運用を行うためにQAエンジニアには設計・プログラミングのスキルも求められます。

⑤開発プロセスの見直し
レビューやテストの結果を踏まえて、開発プロセスの見直しを図ります。例えば、なぜ不具合が作りこまれてしまったのか、なぜ検出できなかったのかなどを考慮して、開発プロセスの改善点を突き止め、品質の向上を行っていきます。

⑥顧客からの問合せ対応
専用の窓口がない場合は、QAエンジニアが問合せ対応を行う場合があります。QAエンジニアは納品したソフトウエア製品全体の仕様について、開発者以上に精通していることも多いため、問合せ対応窓口としての役割を果たすことがあります。

4.まとめ

QAとは品質保証、つまりソフトウエアの品質全体を向上させることを指しています。顧客のニーズを満たすだけでなく、満足感を得られるように要件定義~設計~開発~テスト、更に納品後までをカバーする多岐に渡る仕事です。

メインの業務としては、ソフトウエアのテストが挙げられます。QAエンジニアは開発者とは異なる視点でテストするため、顧客はより高品質で満足のいくソフトウエア製品を受け取ることができます。

QAエンジニアにはテストの設計/実行に関する能力、テスト自動化の際のコーディング能力、不具合が作りこまれてしまう原因となる開発工程の改善点を指摘する問題解決能力といった、様々なスキルが求められます。何よりもソフトウエア製品全体を見通す視野が必要になります。

現代では顧客ニーズが激しいスピードで変化していきます。そのため開発スピードを落とさずにソフトウエア品質を維持、向上させることが強く求められます。故にQAの重要性はますます高まっていると言えるでしょう。多岐にわたる能力が求められるQAエンジニアは人材市場において貴重な存在となっています。

株式会社GENZではQAエンジニアとしてキャリアアップを目指す方を募集しています。この記事を読んでQAエンジニアに興味を持った方、私たちGENZと共にお客様の製品・サービスの品質改善プロジェクトに取り組みませんか。

 

詳しい採用情報はこちら

お問い合わせ