システム開発を行うエンジニアの中には、QAエンジニア(またはQA)と呼ばれる職種が存在します。
令和以前の時代は、あまり目にすることのなかった職種ですが、現在では認知が広まりつつあります。
求人案件によっては、「QA」という名称でエンジニアを募集されているケースも少なくありません。
QAエンジニアとは一体何をする人たちで、QAエンジニアとして業務を遂行する際にはどのような点に注意すればよいのでしょうか。
今回は、QAエンジニアの役割と注意するべきポイントについて解説します。
目次
システム開発会社選びはプロにお任せ完全無料で全国4000社以上からご提案
システム開発のQAエンジニアとは?
そもそもQA(Quality Assurance)とは「品質保証」を意味する言葉です。
言葉の意味が示す通り、システム開発におけるQAエンジニアは「品質担当のエンジニア」のことで、ソフトウェアの成果物の品質を担保する役目を担っています。ひと口に「品質保証」と言っても、「品質」の定義は企業や成果物によって異なるため、企業や組織によってQAが担う仕事は大きく変わります。「QAエンジニアならこれをするべき」といった、必須業務は存在しません。
そのような事情も踏まえ、品質保証の仕事であっても「QA」という名称を使わないケースもしばしばです。品質保証の求人は役割によって名称が細分化されており、「バックエンドテストエンジニア」や「テストセンター管理マネージャー」など様々な名称で呼ばれています。
QAエンジニアの役割
QAエンジニアの仕事は、サービスやソフトウェアが正常に動くか、本番環境でもトラブルが発生しないかといったテストを繰り返し、ユーザーが使用しても問題なくシステムが動作するか検証することです。どのようなサービスやソフトウェアであっても、リリースした後に致命的な不具合が見つかると、ユーザーに対して謝罪や返金、社会的な信用の失墜といった損害を被ることもあります。
そのためQAエンジニアは、「企業や組織の信用」を守る上でも重要な存在なのです。
なおシステムやソフトウェアは、QAエンジニアの有無に関わらず、品質テストが行われます。しかし、システムの開発者が行う品質テストは「結果に偏りが出やすい」という欠点があります。開発者は、どのように機能を実装したかをよく理解していますが、それが仇となって「ユーザー目線のテスト」を行いにくくなるのです。結果として、「開発時点で想定できなかった不具合や脆弱性」を見落とすこともあります。
ユーザーのメリットを損なわない品質保証のためには、開発に直接関わらないQAエンジニアの存在が必要なのです。品質テストのプロとして、1人のユーザーとして、QAエンジニアは様々な観点からシステムやソフトウェアの評価を行います。
QAエンジニアの主な業務
-
品質テストの設計や実施
-
機能の確認や評価
-
品質テストの自動化の検討
-
実施したテストのフィードバック
企業や組織によって、QAエンジニアの仕事は異なりますが、以下ではQAが担う主な業務について解説します。
●品質テストの設計や実施
品質テストを実施して、製品の品質保証を担うのがQAエンジニアの役目ですが、その「品質テストの方法を考案する」のもQAエンジニアの仕事です。品質テストの質が低いと、致命的な脆弱性・不具合を見落としかねないという点で言えば、QAエンジニアの業務の中でもプロジェクトの行く末が決まる大事な工程と言えます。
●機能の確認や評価
QAエンジニアは、システムの企画段階から介入して、品質保証を担うケースも珍しくありません。テスト結果を検証して「不具合の再発防止策の提案」を行うこともあります。システム開発の企画から関わる分、QAエンジニアにはプログラミングとソフトウェア開発のスキルが求められることもあります。
●品質テストの自動化の検討
何をテストするにしても、目視や手動で行う「人力のテスト」は、人の手で行われる分「確実性に欠けやすい」のが欠点です。
そのため、品質テストの精度を向上させるべく、QAエンジニアが「テストの自動化」を担うこともあります。人の手が加わらない自動の品質テストが行えるようになれば、品質の安定性や業務効率の向上に繋がりやすくなるでしょう。「自動でテストを行う仕組みを作る」分、テストの自動化にはコストが発生します。費用対効果を元に、自動化を進めるかどうかの判断が、QAエンジニアに委ねられるケースもしばしばです。
ちなみに、「自動テスト専門のエンジニア」のことを「SET(Software in test)」と呼ぶこともあります。厳密に言えば、SETとQAエンジニアはそれぞれで異なる職種です。端的な違いを挙げれば、「システムの品質保証を担うのがQAエンジニア」で「テストの自動化を担うのがSET」という認識でも良いでしょう。SETは自動化テスト専門であるため、QAエンジニアから見ると「問題解決や生産性向上を相談・依頼できるエンジニア」という立場にもなり得ます。
●実施したテストのフィードバック
システムの開発後は、開発プロジェクトのスタッフがフィードバックを行い、今後の開発プロセスを見直します。開発プロジェクトに関わったQAエンジニアであれば、品質テストで見つかった不具合の数や内容に関するフィードバック、またはレポートの作成などを行います。このフィードバックに関して、特定の技術を要するわけではありませんが、開発やインフラの関係者を集めて提案・改善ができるレベルまで課題を言語化できるスキルが求められるでしょう。
先に挙げた通り、システム開発における「品質テスト」と言っても、QAエンジニアが担う業務は多岐に渡ります。品質テストの目的や範囲を定めることに始まり、作業方針やスケジュールの計画、品質テスト実装後の終了判定、追加テストの決定を下すのもQAエンジニアの役割です。抜け漏れのないテスト計画の立案と実施のためにも、テストの技法に明るいエンジニアが求められます。
システム開発の「QA環境」について
QAエンジニアの主な業務内容を解説したところで、QAエンジニアが業務に使用する「QA環境」についても紹介しておきましょう。
QA環境は、最終テスト用に構築した「限りなく本番環境に近い環境」のことで、「ステージング環境」とも呼ばれています。本番さながらの環境を用意して、そこで疑似的にソフトウェアを稼働させるのです。そして、QA環境でも機能がきちんと動作するか、検証漏れがないか、ユーザー体験に問題がないかといった最後の検証を行います。
端的に言えば、「システム開発における品質テストの最終工程」に使用する環境という認識でも良いでしょう。
QA環境は、動作確認用のテスト環境とは別に構築されます。テスト環境があるのに、わざわざQA環境を構築する理由は「リリース後に不具合が発生してしまった」というリスクを極力減らすためです。
例えば、開発中のシステムが「外部のサービス」や「データベース」と紐づけられている場合、単体での動作確認しかできないテスト環境だけでは発見が遅れてしまいます。QA環境は、いつでもリリースできる状態に仕上がった成果物を「本当にユーザーへ提供してもいいのか」見極める最後の砦でもあるのです。
QAエンジニアはテスターやデバッガーと何が違う?
QAエンジニアの役割は、システムやソフトウェアをリリースする前に「ユーザー目線のテスト」を実施し、致命的な不具合を見つけることです。このように聞くと「テスターやデバッガーとは何が違う?」という疑問を持つ人も多いことでしょう。
最後に、QAエンジニアとテスター、デバッガーのそれぞれの違いについて簡単に解説します。
職種 | 主な役割 |
---|---|
QAエンジニア | 品質テストの管理を包括的に担う |
テスター | バグや不具合のチェックや発見を担う |
デバッガー | バグや不具合の修正を担う |
端的に言えば、テスターは「バグや不具合のチェックや発見」を担い、デバッガーは「バグや不具合の修正を担う」という違いがあります。QAエンジニアが、品質テストの管理を包括的に担うのに対し、テスターやデバッガーは「実際にテストや修正を担う存在」なのです。デバッガーが修正したシステムを再度テストするのも、テスターの役目となります。
QAエンジニアの大きな特徴は、「テスターやデバッガーよりも広い領域の業務を任されやすい」という特徴もあります。QAエンジニアはいわば「システムの品質を担保するプロ」であり、システムの設計や仕様書作成・テスト工程の立案を担うケースも珍しくないのです。このような立ち位置から、QAエンジニアはPM(プロジェクトマネージャー)や管理職として開発に参加するケースもあります。
企業やプロジェクトによってはQAエンジニアとテスター、デバッガーを区別せず、混同して使用するケースもしばしばです。とはいえ、それぞれのおおまかな違いを把握しておけば、開発におけるコミュニケーションの齟齬も発生しにくくなるでしょう。
今回は、QAエンジニアの役割や業務について詳しく紹介しました。
ちなみに、QAエンジニアに役立つ資格として、テストの実施や管理のスキルを証明する「JSTQB認定テスト」や「ISTQB認定テスト」などの資格が存在します。システムの品質テストに必ず必要となる資格ではありませんが、これらの資格を所有しているQAエンジニアであれば、品質テストに関する知識やスキルを備えていると判断しても良いでしょう。
システム開発会社選びはプロにお任せ完全無料で全国4000社以上からご提案
■システム開発に関連した記事