システム開発を行うエンジニアの中には、QAエンジニア(またはQA)と呼ばれる職種が存在します。令和以前の時代は、あまり目にする機会がなかった職種ですが、現在では認知が広まり、それとともに需要も高まっています。求人案件によっては、「QA」という名称でエンジニアを募集されているケースも少なくありません。
本記事では、近年需要が高まっているQAエンジニアの役割や注意するべきポイント、求められるスキル、業務内容などについて詳しく解説します。
目次
システム開発会社選びはプロにお任せ完全無料で全国5000社以上からご提案
システム開発のQAエンジニアとは?
QA(Quality Assurance)とは「品質保証」を意味する言葉です。言葉の意味が示すとおり、システム開発におけるQAエンジニアは品質担当のエンジニアのことを指し、ソフトウェアの成果物の品質を担保する役目を担っています。一言で「品質保証」といっても、「品質」の定義は企業や成果物によって異なるため、企業や組織によってQAが担う仕事は大きく異なります。「QAエンジニアならこれをするべき」といった、必須業務は存在しません。
上記のようなことから、品質保証の仕事であっても「QA」という名称を使わないケースも見受けられます。品質保証の求人は役割によって名称が細分化されており、「バックエンドテストエンジニア」や「テストセンター管理マネージャー」など様々な名称で呼ばれています。
QAエンジニアの役割の重要性
QAエンジニアの仕事は、サービスやソフトウェアが正常に動くか、本番環境でもトラブルが発生しないかといったテストを繰り返し、ユーザーが使用しても問題なくシステムが動作するか検証することです。どのようなサービスやソフトウェアであっても、リリースした後に致命的な不具合が見つかると、ユーザーに対して謝罪や返金、社会的な信用の失墜といった損害を被ることも起こり得ます。
そのため、QAエンジニアは、企業や組織の信用を守るうえで重要な役割を担っているといえます。
●ユーザー目線の品質テストが求められている
システムやソフトウェアの開発においては、QAエンジニアの有無にかかわらず、品質テストを行います。しかし、システムの開発者が行う品質テストは「結果に偏りが出やすい」という欠点が挙げられます。開発者は、どのように機能を実装したかを深く理解している一方で「思い込み」が入ってしまいがちになり、「ユーザー目線のテスト」を行うことが困難になる傾向にあります。そのため、「開発時点で想定できなかった不具合や脆弱性」を見落とすことも起こりかねません。
QAエンジニアは開発に携わってはいますが、仕様を決めて実装をしている当事者ではないからこそ、不具合や脆弱性などについて気づける視点を持っています。実際にシステムやサービスを使うのはユーザーであるため、仕様や実装を知らないユーザーが使えるのか、という「ユーザーの立場からの視点」が重要になります。
また、近年システム開発において、UXの視点の重要性が高まっています。UXとは、ユーザーエクスペリエンス(User experience)の略称で、システムやサービスの快適な利用体験を提供することを指します。それに伴い、開発手段も多様化し、テストにも柔軟性が求められています。仕様書に記載されたシステム要件やエラーが発生しないということだけではなく、ユーザーにとって使いにくくないかのテストが必要なのです。QAエンジニアは、品質テストのプロとして、1人のユーザーとして、様々な観点からシステムやソフトウェアの評価を行います。
●開発手段の多様化によりテストにも柔軟性が求められている
システム開発の手法には様々な方法があります。従来は開発したいシステムの全体像を決めて要件定義、開発、テスト、リリースといった開発プロセスを順番に進めるウォーターフォール開発の採用が一般的でした。
しかし近年は、柔軟かつ迅速な仕様変更に対応できるアジャイル開発を採用するケースが増加・定着しています。アジャイル開発は、機能単位でトライアンドエラーを繰り返すため、それに合わせて品質テストも柔軟かつスピード感を持って行うことが求められています。QAエンジニアは、新しい品質テストの仕組みづくりに重要な役割を担っています。
QAエンジニアの主な業務
企業や組織によって、QAエンジニアの業務内容は異なりますが、主な業務として以下の4つが挙げられます。
-
品質テストの設計や実施
-
機能の確認や評価
-
品質テストの自動化の検討
-
実施したテストのフィードバック
●品質テストの設計や実施
まず、品質テストの設計や実施が挙げられます。開発プロジェクト計画の起案段階より、システムの特性を考慮したテスト計画を作成します。テストの準備として必要な機器や人的リソースの手配を行うために、テストの観点や確認内容を早い段階で洗い出しておきます。
品質テストを実施して、製品の品質保証を担うのがQAエンジニアの役目ですが、その「品質テストの方法を考案する」こともQAエンジニアの業務の1つです。品質テストのクオリティが低い場合、致命的な脆弱性や不具合を見落としかねません。品質テストの設計や実施は、数あるQAエンジニアの業務の中においても、プロジェクトの成功に大きな影響を与える業務だといえます。
●機能の確認や評価
QAエンジニアがシステムの企画段階から介入し、品質保証を担うケースも珍しくありません。テスト結果を検証して「不具合の再発防止策の提案」を行うこともあります。また、QAエンジニアは、品質保証のために仕様書を確認し、テストで用いる仕様を検証します。仕様書の不明瞭な点や漏れ、誤りを特定し、必要に応じて開発者に改善を提案します。このプロセスは、後続の工程における品質向上につながります。システム開発の企画からかかわる分、QAエンジニアにはプログラミングとソフトウェア開発のスキルが求められることもあります。
●品質テストの自動化の検討
どのような内容のテストにおいても、目視や手動で行う「人力のテスト」は、人の手で行う分、ヒューマンエラーが起こりやすく「確実性に欠けやすい」というデメリットが生じます。
そのため、品質テストの精度向上を目的に、QAエンジニアが「テストの自動化」を担うケースもあります。人の手が加わらない自動の品質テストが行えるようになれば、品質の安定性や業務効率の向上にもつながります。自動でテストを行う仕組みを作る分、テストの自動化にはコストが発生します。費用対効果をもとに、自動化を進めるかどうかの判断がQAエンジニアに委ねられるケースも起こり得ます。
「自動テスト専門のエンジニア」のことを「SET(Software in test)」と呼ぶこともあります。厳密にいえば、SETとQAエンジニアは異なる職種です。端的な違いを挙げれば、「システムの品質保証を担うのがQAエンジニア」で「テストの自動化を担うのがSET」という認識です。SETは自動化テスト専門であるため、QAエンジニアから見ると「問題解決や生産性向上を相談・依頼できるエンジニア」という立場にもなり得ます。
●実施したテストのフィードバック
QAエンジニアは、開発途中での「不具合の防止」のほか、システムが出来上がってきたタイミングで、計画・設計に沿った品質テストも行います。品質テスト実施後には、結果の集計を行い、開発者にフィードバックします。フィードバックする内容には、集計結果を分析し、ソフトウェア品質の評価や問題に共通した傾向、強化の必要なポイントの抽出と対策の立案も求められます。
フィードバック業務に関しては、特定の技術は要しませんが、開発やインフラの関係者を集めて提案・改善ができる程度に課題を言語化できるスキルが必要です。
先に挙げたとおり、システム開発における「品質テスト」といっても、QAエンジニアが担う業務は多岐に渡ります。品質テストの目的や範囲を定めることに始まり、作業方針やスケジュールの計画、品質テスト実装後の終了判定、追加テストの決定を下すのもQAエンジニアの役割です。遺漏がないテスト計画の立案と実施のためには、テストの技法に深い知識を持つ人材が求められます。
QAエンジニアに求められるスキル
QAエンジニアはシステムやサービスなどの開発において「品質を保証する」という重要な役割を担う職種であるため、一般的には未経験からQAエンジニアに就くことは難しいです。
プログラマーやシステムエンジニアなどを経験し、スキルの習得を経てキャリアアップの選択肢の1つとして挙がる職種です。そのため、QAエンジニアに求められるスキルとして、以下の5つが挙げられます。
-
プログラミングスキル
-
ソフトウェアの開発スキル
-
品質テストの技法に関するスキル
-
プレゼンテーションのスキル
-
コミュニケーションスキル
●プログラミングスキル
QAエンジニアの主な業務の項目でも触れたとおり、QAエンジニアはソフトウェアに実装されている各機能の品質保証を行ううえで、機能仕様や設計内容に関してレビューや評価を行います。また、QAエンジニアは問題が生じたプログラムを直接修正したり、膨大なデータを扱うテストを行う際には、業務効率化のためのテスト自動化ツールをプログラミングして作成したりすることもあります。そのため、QAエンジニアにはプログラミング言語ごとの構造や特徴についての幅広い知識やプログラミングのスキルが求められます。
●ソフトウェアの開発スキル
QAエンジニアの業務には、品質テストの設計や計画、結果分析、改善案提案をすることも含まれます。例えば、テストの結果をもとに不具合の再発防止策の提案を行うためにはソフトウェア開発に対する知見が必要になります。また、テスト結果を報告する際には、開発プロセスの問題点、改善ポイント、工程の見直しを開発プロジェクト全体にフィードバックすることも求められるため、開発がどのように行われているか、十分に理解しておくことが大切です。プログラマーやエンジニアを相手に業務を行うため、同等のソフトウェア開発に関する知識が求められます。
●品質テストの技法に関するスキル
QAエンジニアは、テスト技法に基づいた品質テスト計画の立案と実行、品質管理を行うため、品質テスト技法に関する知識も必要です。
テスト技法には様々な種類があり、境界値分析、状態遷移テスト、ストレステストなどが挙げられます。また、開発するシステムやサービスによって実施すべきテスト内容は異なり、テスト対象の内容に合わせたテスト技法を判断しなければなりません。
すべてのケースや組み合わせでテストすることはリソース的に難しいため、限りあるリソース内で必要なテストを実施できるような設計したうえで、各テストにおける品質評価基準を数値として設定することが求められるケースもあります。さらに、品質テスト実施時には開発現場独自の専用ツールを使用するケースも少なくありません。その際には、専用ツールを使いこなすスキルも必要です。
●プレゼンテーションのスキル
QAエンジニアの業務の中には、テストの結果をまとめてレポートを作成したり、さらにその内容をプレゼンテーションで開発者に発表したりすることもあります。そのため、発表の際には表計算ソフトや文書作成ソフト、プレゼンテーションソフトなどを用いて結果をまとめたレポートを作成し、プロジェクト関係者にプレゼンテーションするスキルが求められます。
●コミュニケーションスキル
QAエンジニアに必要なスキルとして、コミュニケーションスキルも重要な要素です。品質保証の仕事と聞くと、1人で黙々とテストや検証を繰り返す仕事をイメージしがちですが、実際はシステムやサービスを開発する様々な部署や関係者とかかわる仕事です。スムーズに開発を進めるためにもコミュニケーションスキルが求められます。
品質テストはシステムやサービスのリリース直前に行うことが多いため、限られた時間でも開発現場全体の状況を把握できるような視野の広さや、イレギュラーが発生した際に柔軟に対応できるスキルも必要です。
また、開発対象のシステムやサービスがどのような機能を持つのか確認したり、品質保証のためのテスト結果をエンジニアに伝えたりといった、コミュニケーションや意見交換が必要となる場面も多くあります。エンジニアの中では管理に携わるポジションになることが多いためコミュニケーションスキルも必要になります。
QAエンジニアの業務において役立つ資格
QAエンジニアの業務において役立つ資格として、テストの実施や管理のスキルを証明する「JSTQB認定テスト技術者資格」や「ISTQB認定テスト技術者資格」などの資格などが挙げられます。システムの品質テストに必ず必要となる資格ではありませんが、これらの資格を所有しているQAエンジニアであれば、品質テストに関する知識やスキルを備えていると判断できます。
ここでは、QAエンジニアの業務において役立つ資格について詳しくご紹介します。
●JSTQB認定テスト技術者資格
JSTQBとは、日本におけるソフトウェアテスト技術者資格認定の運営組織です。JSTQBが実施しているJSTQB認定テスト技術者資格は、ソフトウェアテストについての技術や知識を認定する資格のことです。ソフトウェア技術者がテスト技術を向上させるきっかけとして、認定制度が開始されました。
JSQTBは2005年4月に、各国のソフトウェアテスト技術者認定組織が参加しているISTQB(International Software Testing Qualifications Board)の加盟組織として認定されています。
ISTQBの加盟組織の各国団体は、資格および教育・訓練組織認証について相互認証を行っているため、JSTQBが運営するソフトウェアテスト技術者資格は海外においても有効な資格です。
JSTQB認定テスト技術者資格は、「Foundation Level(FL)」と「Advanced Level(AL)」という2つのレベルに分けられます。「Expert Level」という最上位の資格もありますが、日本ではまだ展開されていません。
Foundation Level(FL)は、Foundationという言葉が「基礎」という意味を表すとおり、ソフトウェアテストの基礎的な知識が網羅的に問われるレベルです。難易度は高くないため、合格率は過半数を超えることが多いです。
Advanced Level(AL)は、「テストマネージャ」「テストアナリスト」「テクニカルテストアナリス」の3つに分けられます。
テストマネージャは、ソフトウェアテストの計画や提案、マネジメントを行う役割です。テストアナリストとは、テストケースの選択や実施に関する分析を行う役割を指します。
Advanced Level(AL)のテストでは、Foundation Levelにおいて問われるソフトウェアテストの基礎知識を踏まえたうえで、それぞれの領域の専門知識が求められます。そのため、受験資格としてFoundation Levelを合格していることや、テストマネージャとして3年以上の業務経験があることが定められています。Foundation Level(FL)と比較すると、いずれも難易度が高く、合格率も低いです。
●ISTQB認定テスト技術者資格
ISTQB(International Software Testing Qualifications Board)は国際ソフトウェアテスト資格認定委員会のことで、ソフトウェアテストに関する国際的な資格認証を行う非営利団体です。ISTQBは、2002年11月にエジンバラで設立され、ベルギーで合法的に登録されました。
ISTQBには各国のソフトウェアテスト技術資格認定運営組織が加盟しており、前項でも触れたとおり日本からはJSTQBが加盟しています。
ISTQB認定テスト技術者資格とは、ISTQBが提供するテストエンジニアのための資格のことです。ISTQBの資格は、「Agile」「Core」「Specialist」の3つに分けられ、Coreはさらに、「Foundation」「Advanced」「Expert」という3つのレベルに分けられます。
ISTQB認定テスト技術者資格とJSTQB認定テスト技術者資格の違いとして、まず運営組織による受験方法や言語の違いが挙げられます。JSTQB認定テスト技術者資格はシラバスや問題などすべてが日本語で、受験場所は日本国内です。その一方でISTQB認定テスト技術者資格はすべてが英語であり、海外での受験も可能です。
また、受験が可能な試験の種類にも違いがあります。先述のとおり、JSTQB認定テスト技術者資格はFoundation Level(FL)、Advanced Level(AL)のうちのテストマネージャ、テストアナリストの合計3種類の試験に分かれています。
ISTQB認定テスト技術者資格では、JSTQB認定テスト技術者資格において受験可能な3種類の試験のほか、Advanced Levelの「Technical Test Analyst」や「Agile Technical Tester」といった試験、特定のテストに特化したSpecialist向けの試験、さらにハイレベルな「Expert Level」の試験があります。
●ソフトウェア品質技術者資格認定
ソフトウェア品質技術者資格認定とは、一般財団法人日本科学技術連盟が主催する、ソフトウェア品質に関する知識を身につけた技術者を認定するものです。英語で表すと「JUSE Certified Software Quality Engineer」となるため、「JCSQE」と表記されることもあります。
ソフトウェア品質技術者資格認定は、すべてのソフトウェア技術者が品質技術を身につけ、実践していくことにより、ソフトウェア品質の向上を実現することを目的としており、品質保証部門だけではなく、開発者、テストエンジニアなどソフトウェアに携わるすべての方を対象とした試験です。
初級、中級、上級の3段階によって構成されており、初級は年2回(6月と11月)、中級は年1回(11月)に定期的に実施されています。上級については今後新設される予定です。
●IT検証技術者認定試験(IVEC)
IT検証技術者認定試験(IVEC)とは、一般社団法人IT検証産業協会(IVIA)が認定するテストエンジニアの資格試験です。テストの現場における実務を重視していることが特徴です。
IT検証技術者認定試験(IVEC)では、独立行政法人情報処理推進機構(IPA)が策定した組込スキル標準(ETSS)のフレームワークをベースに、7つのキャリアレベルに分かれて構成されています。
2017年まではキャリアレベルごとに知識試験と実務試験を設け、両方の試験の合格者が当該レベルの認定者でしたが、2018年以降のIVEC試験においては実務力を問う記述式試験に一本化され、記述式試験の合格者が認定者に変更されています。
QAエンジニアの業務内容「品質テスト」を内製と外注どちらを選ぶ?
QAエンジニアの業務内容である「品質テスト」を行う場合、内製と外注の2つの方法が挙げられます。内製と外注のそれぞれにメリットがあるため、しっかりと把握して選択することが大切です。
ここでは、品質テストを外注するパターンと社内で内製するパターンのメリットについてご紹介します。
●品質テスト業務を外注するパターン
品質テスト業務を外注する場合は、テスト会社や第三者検証会社へ依頼する方法が一般的です。品質テストを外注する際のメリットとして、まず社内リソースを確保できることが挙げられます。社内で品質テストを行う場合は、テストを行う人員を確保する必要があります。社内の開発チームのリソースに余裕がない場合、品質テストを外注することで開発に専念できます。それだけでなく、外注の場合は人員のリソースも柔軟に対応ができます。例えば今月は品質テスト担当者が10人必要だが来月はテストがないので人員不要、というようなケースでもコントロールが可能です。
また、テスト会社の専門的な知見や経験、蓄積された情報の活用が得られるため、発見が難しい不具合やエラーの発見や信頼性が高るというようなメリットもあります。
●社内で品質テストを行うパターン
社内にQAエンジニアがいる場合は、社内で品質テストを行えます。QAエンジニアが在籍しているのであれば、外注のコストが浮くことがメリットとして挙げられます。しかし、QAエンジニアが在籍していない場合は、テスト教育やテスト実施者の選定などから始めなければならないため、人的コストや教育のリソースなど様々な面でデメリットが生じます。
近年は、生活の基盤であるインフラ業界から、生活を便利に彩るWebサービスまで、ソフトウェアは幅広い分野で役立っています。ソフトウェアやWebサービスの品質は重要な要素であり、品質テストは重要な役割を担っています。品質テストをより客観的な知見や視点に基づいた検証を行うために、自社に適した人材がいない場合はQAエンジニアが在籍している外部の第三者検証会社へ依頼しましょう。
システム開発の「QA環境」について
QAエンジニアが業務に使用する「QA環境」とは、最終テスト用に構築した「限りなく本番環境に近い環境」のことで、「ステージング環境」とも呼ばれています。本番さながらの環境を用意して、疑似的にソフトウェアを稼働させます。そして、QA環境でも機能がきちんと動作するか、検証漏れがないか、ユーザー体験に問題がないかといった最後の検証を行います。わかりやすくいうと「システム開発における品質テストの最終工程」に使用する環境という認識です。
QA環境は、動作確認用のテスト環境とは別に構築されます。テスト環境があってもわざわざQA環境を構築する理由は「リリース後に不具合が発生してしまった」というリスクを極力減らすためです。
例えば、開発中のシステムが「外部のサービス」や「データベース」と紐づけられている場合、単体での動作確認しかできないテスト環境だけでは発見が遅れてしまいます。QA環境は、いつでもリリースできる状態に仕上がった成果物を「本当にユーザーへ提供しても良いのか」見極める最後の砦でもあります。
QAエンジニアはテスターやデバッガーと何が違う?
QAエンジニアの役割は、システムやソフトウェアをリリースする前に「ユーザー目線のテスト」を実施し、致命的な不具合を見つけることです。そのため、テスターやデバッガーと混在しやすい傾向にあります。
QAエンジニアとテスター、デバッガーのそれぞれの役割は以下のとおりです。
職種 | 主な役割 |
---|---|
QAエンジニア | 品質テストの管理を包括的に担う |
テスター | バグや不具合のチェックや発見を担う |
デバッガー | バグや不具合の修正を担う |
テスターは「バグや不具合のチェックや発見」を担い、デバッガーは「バグや不具合の修正を担う」という違いがあります。QAエンジニアが、品質テストの管理を包括的に担うのに対し、テスターやデバッガーは「実際にテストや修正を担う存在」だといえます。デバッガーが修正したシステムを再度テストするのも、テスターの役目となります。
●QAエンジニアは包括的なテスト業務を任されやすい
QAエンジニアの大きな特徴は、「テスターやデバッガーよりも広い領域の業務を任されやすい」という特徴があります。QAエンジニアはいわば「システムの品質を担保するプロ」であり、システムの設計や仕様書作成・テスト工程の立案を担うケースも珍しくありません。このような立ち位置から、QAエンジニアはPM(プロジェクトマネージャー)や管理職として開発に参加するケースもあります。
●テスターやデバッガーと区別されないこともある
企業やプロジェクトによってはQAエンジニアとテスター、デバッガーを区別せず、混同して使用するケースも起こり得ます。しかし、それぞれのおおまかな違いを把握しておけば、開発におけるコミュニケーションの齟齬が発生しにくくなるため、役割についてはしっかり把握しておきましょう。
私たちの生活に欠かせないソフトウェアやWebサービスにおいて、品質テストは重要な要素です。品質テストを行うQAエンジニアは、重要な役割を担っており、QAエンジニアの働きによってユーザーや顧客の印象は大きく左右されるといっても過言ではありません。
自社にQAエンジニアがいない場合は、QAエンジニアが在籍しているテスト会社や第三者検証会社に品質テストを外注するのがおすすめです。
QAエンジニアをお探しであれば発注ナビへご依頼ください。発注ナビであれば、全国5000社以上の開発会社の中から、ご要望や案件内容に合ったテスト会社や第三者検証会社を厳選してご紹介可能です。「自社に合った開発会社がわからない」「選定にできるだけ時間をかけずにスムーズに外注を導入したい」とお考えのご担当者様はぜひ一度ご検討してみてはいかがでしょうか。
システム開発会社選びはプロにお任せ完全無料で全国5000社以上からご提案
■システム開発に関連した記事