ソフトウェアテスト

  1. Qbook+
  2. ソフトウェアテスト
  3. 「QA」とは?ソフトウェア品質を守るQAエンジニアの役割

「QA」とは?ソフトウェア品質を守るQAエンジニアの役割

「QA」とは?ソフトウェア品質を守るQAエンジニアの役割

IT業界で働き始めると、開発の仕事は幅が広いことに気づくでしょう。プログラミング言語ひとつを取ってもさまざまな言語があります。開発プロセスも、要件定義・設計・実装テスト、レビュー、各種管理など、どの部分を担うのか、どのように関わるかといった役割の違いもあります。
ITエンジニアの職種の中には「QA」と呼ばれるポジションがあります。ソフトウェアの品質管理やソフトウェアテストなどの観点でソフトウェア製品に関わっていきたい方は、QAという職種が選択肢の一つとなるでしょう。今回は、QAという職業の仕事内容や位置付けについて触れながら、QAとして活躍するにはどのようなスキルや経験が必要なのか解説していきます。

「QA」とは何?

QA(Quality Assurance)は、ソフトウェアなどの開発物の品質全体を保証すること、およびその職種を指します。

QAは、企業や組織によって、そのミッションや仕事内容が異なることが一般的ですし、QAという名称の職種を設けていない会社も少なくありません。
例えば、テスト業務を行うテストエンジニアとしての役割がメインの場合もあれば、レビューを専門に行っている職種もあります。
他にも、データを収集・分析して、開発プロセスの質、プロダクトの質にフィードバックをかける品質管理を専門にしている職種もあります。

このように、テスト、レビュー、データ収集・分析などを専門的に行っている方を、本稿では「QAエンジニア」と総称しています。

QAエンジニアがソフトウェアをテストする目的

8607-00034-2

QAエンジニアという職種について、「開発者がテストを行うから必要ないのでは?」と考える方もいるかもしれませんが、開発者の行うテストとQAエンジニアが行うテストは目的が異なります。

開発者が行うテストは、本人が開発した範囲および担当範囲内で「仕様に沿った動作をするか確認する」ことを主な目的としており、新規に開発したメソッドの単体テストや、不具合修正した際の影響範囲に基づいた結合テストという形で実施されることが多い傾向にあります。

一方のQAエンジニアは、「システム全体としてユーザーが使いやすい形になっているか」「当初保証されていたユーザーにとってのメリットを損なっていないか」という観点で、ユーザーの実際の利用想定に基づくシナリオテストや、システムの負荷テストや画面UIの検証といった方法でテストを実施します。

このように、QAエンジニアは「ソフトウェアの品質全体に対して責任を持つ」役割を担う以上、開発者が行うテストとは全く異なる視点で品質保証を行うことが特徴です。開発者はソフトウェアを作る立場からソフトウェア品質の向上を目指しますが、QAはソフトウェアのユーザー目線の立場から品質向上を図っているのです。

QAエンジニアの立ち位置と役割

8607-00034-3

QAエンジニアは、「品質保証のスペシャリスト」として開発プロセス全体に関わり、ソフトウェアの品質向上に取り組みます。
前述の章では、QAエンジニアによるテストの特徴を記載しましたが、QAエンジニアという職種の担当業務は他にもさまざまなものがあります。順に見ていきましょう。

設計段階での機能仕様の確認・評価
QAとして品質保証を行うために、機能仕様や設計内容についてもレビュー・評価を行うことがあります。仕様に漏れ抜けや曖昧な点がないか、仕様変更や設計変更による設計・実装の修正や追加の内容が妥当であるか、漏れがないか洗い出し、不具合の作り込みを回避するようにします。必要であれば開発者に対して仕様を提案することもあります。

テストケースの設計・テスト実行
テストエンジニアとしてのメイン業務と言えるのが、テストケースの設計と実行です。具体的には、ユーザーケースやシナリオを作成し、これに基づいたユースケースのフローを実施した際に、期待した通りの動作をするか確認・評価します。テスト中にバグを検知した際には、再現手順の確認からシステムの動作に関してエビデンスを取得し、開発側に報告します。

テスト結果と不具合の分析
テストを実施し、テスト結果から得られた不具合検知数や内容を分析することもQAエンジニアの仕事です。数値から不具合の傾向を見つけて開発リーダーに報告したり、再発防止策を提案・実施したりすることもあります。
テストの他、レビュー結果の分析、各工程にかかる工数の分析など、プロダクト面とプロセス面の両面で分析し、開発全体にフィードバックをかけることもします。

テスト自動化の検討
開発中に常に行うリグレッションテストや、膨大なデータを扱うテストなどに対しては、テストを自動化するという手段を取ることがあります。効率的なテスト実施の計画・手段を検討し、SeleniumやJenkinsといったツールを利用しながら自動化を実現します。
自動テストを構築し、それを運用する作業は、内容的には開発作業と全く同じです。
QAエンジニアは、製品・システムの開発者と役割は異なりますが、品質保証の面から設計・プログラミングの素養が求められることもあるのです。

開発プロセスの見直し・改善
レビューやテストの実施結果をよく分析すると、開発プロセスの問題点、改善ポイントが浮かび上がってきます。
その不具合は、なぜ作り込んだのか、その不具合は、なぜ検出できなかったのか。
その不具合を作り込まずに、最初から正しく開発するにはどうすればよかったのか、その不具合を、もっと早く、確実に検出するには、どのようにレビューしたらよかったのか、どのようにテストすればよかったのか。
このように、さまざまなデータや情報を分析し、開発プロセスを改善して生産性と品質を向上させていくことも、重要な業務です。

顧客の問い合わせ対応

顧客からの問い合わせに対応する専門窓口を設けていない状況では、顧客への仕様の回答をQAエンジニアが行う場合があります。特に、テストエンジニアは、製品全体の製品仕様を開発者よりも精通していることが多く、不具合の対応窓口を担当することもあります。
企業によっては、品質管理の面でQA部門に強い権限を持たせるとともに、市場不具合の全責任は開発部門ではなくQA部門が負う、という組織構造にしているところもあります。

QAエンジニアの適性

上記で述べてきたように、QAエンジニアは非常に幅広い業務を担うため、開発者と同様に、多様なスキルが必要です。

例えば、ソフトウェアテストを設計し実行するスキルはもちろん、数値分析や自動化のコーディングスキルなどの技術的スキルが必要になることもあります。さらに、開発プロセスの見直しや不具合削減のための施策を立てる際には、論理的に思考する能力や問題解決能力も求められます。

何よりも、ソフトウェア製品全体を総合的に捉える広い視野と柔軟な対応能力を持っているかどうかが問われます。不具合発生やシステムの動作に支障が出た際にさまざまなアプローチによって問題解決したいという人材ならば、QAエンジニアへの適性があると言えるでしょう。

まとめ

今回の記事では、QAエンジニアという職種について、その目的から仕事内容、適性についてご紹介しました。QAエンジニアは開発エンジニアに比べて知名度は低いかもしれませんが、ソフトウェア製品の品質を保証するためには重要なポジションを担っています。興味がある方は、QAエンジニアとしてのキャリアパスを検討してみてはいかがでしょうか。

資料ダウンロード

  • ソフトウェアテストの勘所

    ソフトウェアテストを始めて行うエンジニアのための勘所を抽出しガイドブックにまとめました。テストに初めて触れる方、メンバーにテストを説明する方にご利用しやすくまとめています。

  • ソフトウェア開発データ白書記載データとの比較資料

    一般的なテストプロジェクトとバルテスのテストプロジェクトを比較した冊子です。1000Hあたりの不具合検出数、実施テストケース数などを算出し、どの程度の差があるのかを比較しております。

  • 大手50サイトの診断結果から見る最新Webセキュリティの傾向 2019年版

    バルテスがセキュリティ診断を行った50サイトにおける脆弱性傾向をまとめた資料です。どういったレベルの脆弱性が見つかっているのか、その割合はどういったものなのかなどを具体的な数値としてまとめています。

Qbook+編集部
ライター:
Qbook+編集部

バルテス株式会社 Qbook+編集部。 ソフトウェアテストや品質向上に関する記事を執筆しています。

関連記事