「QAエンジニアって、そもそも何?」 「テストエンジニアとの違いや、具体的な役割は?」 と思うことはありませんか?
QAエンジニアは、サービスやアプリケーションの質に関わるエンジニアのこと。しかし具体的な役割や仕事内容など、詳しいところがよくわからない方もいるのではないでしょうか。
そこで今回は、
• QAエンジニアとは?• QAエンジニアの役割・仕事内容
• QAエンジニアはなぜ必要?
• QAエンジニアに求められるスキル
• QAエンジニアに役立つ資格
• QAエンジニアの年収の目安
の流れで、QAエンジニアの定義や役割などについて解説します。
記事の最後に「QAエンジニアの将来性」についても解説しているので、ぜひ最後までお読みください。
1. QAエンジニアとは?
QAエンジニアについて、
- QAエンジニアの定義
- QAエンジニアとテストエンジニアの違い
を解説します。
1.1 QAエンジニアの定義
QAとは、「Quality Assurance」の略で、ソフトウェアの品質全体を管理する職業のこと。QAエンジニアはその名の通り、Quality Assurance(品質保証)をリードする存在です。
要件定義・設計などの上流工程から、下流工程のテストまで「ファーストユーザー」として開発全体に関わっています。テスト以外でも品質にかかわる作業であれば、実施していくことも。
たとえば開発プロセスを改善するため、コーディング規約を自動でチェックする仕組みを導入するなど、その業務は多岐にわたります。開発プロセス全てに関わっていくのが、特徴です。
似たエンジニアに、「テストエンジニア」があります。
1.2 QAエンジニアとテストエンジニアの違い
QAエンジニアは、
- 要件定義
- 設計
- 実装
- テスト
など、開発業務すべてに関わり、品質保障にかかわる業務を行います。
一方でテストエンジニアは、開発における「テスト」に特化したエンジニアです。プログラムが正常に動作するか、不具合がないかといった観点でテストを行います。
たとえば、
• 変数の戻り値やクラスの動作を確認する単体テスト
• 関数同士の連携や動作を確認する結合テストといった業務などを行うイメージです。
まとめると、
- QAエンジニア:品質保証に関わる業務全般
- テストエンジニア:テストに関わる業務全般
といった違いがあります。
2. QAエンジニアの役割・仕事内容
QAエンジニアの役割・仕事内容について解説します。
特にKPI(数値目標)にバグ発生率を入れて、改善を進めていく主担当者としての役割もあります。
なお、厳密にはQAエンジニアの担当業務は「SIerのQAエンジニアか」「自社サービス開発企業のQAエンジニアか」によっても少しずつ異なります。より詳しく、各企業ごとのQAエンジニアの役割について知りたい方は以下で解説する仕事内容に加えて、各社のコーポレートサイトのQAエンジニア関連の採用要件もセットでチェックすると良いでしょう。
2.1 機能の設計内容の確認
アプリケーション開発は、要件定義・設計などの上流工程が最初のステップです。このフェーズでも、QAエンジニアは活躍します。
具体的に言うと、
• 要件定義:課題を解決できる機能が網羅されているかチェック
• 設計:設計の中に要件の漏れ(機能の漏れ)などはないかチェックといったことを第三者の視点で確認し、品質に関わる漏れがあった場合は指摘しながら開発を進めます。
上流工程にズレが生じると、
• クライアントが求めていたもの
• 実際に開発したアプリケーションのギャップが生まれてしまい、クライアントからの信頼を失いかねません。その点でも、QAエンジニアの存在は大きいでしょう。
2.2 テスト計画の策定
テストと一口に言っても、「アプリケーションが正しく動くこと」を確認するだけではありません。なぜなら仮にエラーなどが出ていなくても、顧客と決めた要件を満たしていないケースなどがあるから。
そのため、
- 要件定義
- 基本設計
- 詳細設計
のレベルでそれぞれテストを計画し、それぞれ意図した動作になるか確認しなければなりません。特に基本設計や要件定義レベルのテストでは、顧客へのユーザーテストなども実施する必要が出てきます。
ユーザーテストでは顧客との調整も必要となるため、その点も含めて計画を立てなければなりません。
2.3 テストケースの設計
テスト計画でスケジュール・概要などができたところで、具体的な設計をしていきます。テストケースを設計する際は思いつきでケースを考えるのではなく、レベル感も決めておく必要があります。
具体的に言うと、「カバレッジ」と呼ばれる考え方があります。たとえば数値を入れたときに、それぞれ次のようなメッセージが出るとします。
■サンプル
2:登録失敗(数値の箇所に文字を入れてしまった)
3:登録失敗(理由不明)
このとき、「正しく登録できること」とテストケースを作ってしまった場合は、「1」を入力した成功のケースだけ確認すれば、「登録できること」は確認できます。しかし「2」「3」の数値を入力した時に、システムエラーで画面が表示されないバグが見つかってしまう可能性も。
そのため1、2、3でそれぞれ確認し、動作が問題ないこと(エラーの場合は、エラーメッセージが正しく表示されること)も確認する必要があるのです。こういったケースを踏まえて、テストケースの検討が必要となります。
2.4 テストの実行と結果の分析
テストケースができたら、実際にテストを実行していきます。テスト仕様書などを作成し、作成したテストケースの手順に沿ってテストを実施する流れです。
ただ、上手くいった場合、エラーになった場合も含めて結果を残さなければなりません。さらに、エラーが出てしまった場合は「いつどのタイミングで直すか」といった点も事前に決めておき、対処が必要です。
また顧客へのユーザーテストを依頼する際は、「実際の業務に近いテストを依頼」することになります。手順があいまいになっていることもあるので、テスト結果報告書で書いていただく内容は事前に決めておきましょう。
「エラーが出て動かなくなった。でも、どうやったかはわからない。」となってしまっては、エラーを再現するのに時間がかかるからです。このように、実施に際しスムーズに進むよう考えておくと良いでしょう。
2.5 レポーティング
テストの結果は、レポートなどでまとめる流れになります。その際、単純にエラーの数などをまとめるだけでなく、
• よくあるエラーの傾向
• 時間のかかるテストの自動化検討
• バグを作らない開発体制・環境の検討
など、次につながる情報をまとめることも多いです。品質保証をリードするQAエンジニアの強みが、活かせるポイントかもしれません。
ただ、ここまで聞いて「確かに役割やあるべきことはわかったけど、専門のエンジニアとしている必要はあるの?」と思った方もいるのではないでしょうか。続いて、QAエンジニアが必要な理由について見ていきいましょう。
3. QAエンジニアはなぜ必要?
QAエンジニアが必要な理由について、株式会社GA technologies(GAテクノロジーズ)の「GAのQAエンジニアとして働く魅力を聞いてみた」の記事を参考にしながら解説します。
3.1 開発者ではなく「使用者の視点」に立ったサービス改善
QAエンジニアだからこそ、開発しているときに見えない視点で改善につながることも。たとえば次のように、QA目線についての意見も。
日々業務で意識していることは、どんな些細なことでも違和感を感じたら違和感の原因は何かを考えることですね。これをQA目線って言うのかもしれません。不具合や違和感に気づく目線を持てるよう意識しています。それにはユーザーとしての客観的な目線も不可欠になるので日々モノゴトをいろんな角度でみるよう癖付けています。
出典:GAのQAエンジニアとして働く魅力を聞いてみた/GAテクノロジーズ|Wantedly
第三者の目線で見るからこそ、不具合や違和感に気づけるというわけです。早期にバグを見つけたり、仕様が漏れていたりすることに気づきやすいといった価値があります。
3.2 正確な技術理解に基づいた改善計画を策定できる
品質保証をリードするQAエンジニアだからこそ、正確な技術に基づいた改善計画を立てられることも。例えば、次のようなケースも。
ただ、品質を構成する要素はたくさんあって、例えば不具合の出方を統計学的観点から分析し、開発上のどのプロセスで問題が起きたのかなどを見つけたり
出典:GAのQAエンジニアとして働く魅力を聞いてみた/GAテクノロジーズ|Wantedly
品質に関わる手法や知識のあるQAエンジニアだからこそ、開発者では思いつきづらいような視点で改善計画を立てられます。
3.3 開発プロセスの改善点の多面的な検証
品質保証をリードするQAエンジニアだからこそ、開発プロセスの改善点を多面的に検証できることも。たとえば、次のような改善につながることもあります。
開発プロセスの設計や業務の回し方を変えるだけで出来上がるプロダクトの質がガラリと変わったりするので、そういったテスト以外の部分でも、品質をあげていくための取り組みを積極的に行うことがQAの仕事です。
出典:GAのQAエンジニアとして働く魅力を聞いてみた/GAテクノロジーズ|Wantedly
たとえば、「なるべく無駄なエラーがでないよう、実装したい」といった問題があったとします。コーディング規約をドキュメントで作って確認する方法もあれば、コーディング時点で自動でチェックする仕組みもあります。
品質改善するための手法に長けたQAエンジニアの強みが、大きく影響する部分なのではないでしょうか。以上の3つが、QAエンジニアが必要な理由でした。
4. QAエンジニアに求められるスキル
QAエンジニアに求められるスキルを5つ解説します。
4.1 コミュニケーションスキル
ソフトウェア開発では、ソフトウェアを売る「セールス」と開発する「エンジニア」が敵対関係になっていることも。実際に以下のように、同じ会社でも返信に1週間以上かかるケースもあるようです。
リアル面を担う社員とTech面を担うエンジニアの仲が悪い会社だと、本当に組織が分断してしまっているような感覚で、システムの仕様に関する質問をしても1週間以上返答がなかったり、露骨に嫌な態度を取られたりするなど情報のやり取りすら難しかったりするんです。
出典:GAのQAエンジニアとして働く魅力を聞いてみた/GAテクノロジーズ|Wantedly
QAエンジニアは第三者の視点で動ける点が特徴なので、橋渡し的存在となることも。そのためには、コミュニケーションスキルが必須となるでしょう。
4.2 アジャイル開発やウォーターフォール開発の知識
品質保証をリードするQAエンジニアは、開発手法にも詳しくなければなりません。なぜなら開発手法によって見るべき点が変わってくるから。
たとえば、アジャイル開発を例にとって考えてみましょう。アジャイル開発では、スピード感を求められます。そのためスピードを重視して、テストケースを洗い出しながらテストを実行する「探索的なテスト」が多くなりがちです。
確かに開発スピードは上がるかもしれませんが、
• バグが見つかる可能性
• ノウハウが貯まらないといった問題が残ります。
仮にRedmineやJIRAなどのチケットにメモを残し「あとで整理しよう」と思っても、スピード感を求められるためまとめるまで手が回らないことも。次第に、テスト自体がネックになってしまう可能性もあります。
そのため開発手法について深く理解し、改善に繋がる案を提案できるようになっておくことが重要です。
4.3 品質管理
品質と一口に言っても、色々な要素があります。
たとえば、
• 統計的な視点で不具合を確認し、どの開発プロセスで問題が起きたか分析
• 開発プロセスの設計や業務の回し方を変更して質を上げられないか分析などです。
このように品質管理に関わる知識は、必須と言えるでしょう。
4.4 統計学
「バグによっては、10回に1回だけ発生する」といったケースも。このとき仮に問題を特定して、プログラム修正を行ったとします。
しかし実際にテストするとき、「何回テストしたらよいの?」といった問題が出て来ることも。確率的に発生するバグの場合は、回数が気になるところです。
さらにバグが発生しなかったとしても、「たまたま発生しなかっただけ」な可能性もあります。こういった判断しにくいケースでは、指標が必要です。
具体的に言うと、「統計学的な視点で何回テストを実施すれば良いか」を決めておくと良いでしょう。それを元にテストの回数を算出すれば、一定の品質を担保できるのではないでしょうか。
このように、統計学的な知識も必要です。
4.5 プログラミングスキル
QAエンジニアは、開発の各工程に合わせて品質をリードする役割を担います。そのため開発の流れである、仕様や設計内容に対して評価を行うスキルが必要です。
具体的に言うと、
• 要件定義書などを読み解くスキル
• 設計書などから実際のプログラムがイメージできるスキルなどです。
そのため、開発で使われた言語に関する知識(プログラミングスキル)が必要です。また、脆弱性や不具合を発見した際に修正を加えたり、膨大なデータを扱ったテストの分析自動化ツールを作成したりする場合もあります。プログラミングスキルは身につけておくと良いでしょう。
5. QAエンジニアに役立つ資格
QAエンジニアに役立つ資格を3つご紹介します。
5.1 ソフトウェア品質技術者資格認定
資格名称 | ソフトウェア品質技術者資格認定 |
---|---|
試験概要 | ソフトウェアの品質向上に関する知識を効率的に身につける資格 |
2021年のスケジュール | ・2021年6月12日(土)10:30~11:30 ・2021年11月13日(土)10:30~11:30 |
料金 | 11,000円(税込) |
開催場所 | 東京、名古屋、大阪、福岡 他(予定) |
公式サイトには、以下のように資格の詳細が解説されています。
ソフトウェアの品質向上に関する知識を効率的に身につける一つの手段として、資格認定制度の利用があります。私たちSQiPは、日本のソフトウェア産業から品質事故を根絶し安全・安心な社会を実現するために、ソフトウェア品質に関する資格認定制度を開始しました。
出典:資格認定制度の創設にあたって|日本科学技術連盟
品質事故を起こさないために、おすすめの資格です。
5.2 JSTQB認定テスト技術者資格
資格名称 | JSTQB認定テスト技術者資格 |
---|---|
試験概要 | ソフトウェアテスト技術者資格 |
2021年のスケジュール | 2021年2月13日(土) 15:00~16:00 |
料金 | 22,000円(税込) |
開催場所 | 札幌、東京、名古屋、大阪、福岡、那覇 |
特にテスト計画、テスト設計、テスト実施時の注意点など、テストに関する知識を身につけたい方におすすめの資格です。
5.3 IT検証技術者認定試験
資格名称 | IT検証技術者認定試験 |
---|---|
試験概要 | 一般社団法人IT検証産業協会(IVIA)が認定するテストエンジニアの資格試験 |
2021年のスケジュール | ※執筆時点では、記載なし。2020年は以下。 ・春期:2020年5月24日(日) ・秋期:2020年11月29日(日) |
料金 | ・レベル1:19,800円(税込) ・レベル2:22,000円(税込) ・レベル3,4,5:25,300円(税込) |
開催場所 | 5月:東京、名古屋、札幌、岩手(予定) 11月:東京、名古屋、札幌、岩手、大阪、沖縄(予定) ※その他地区でも、ご要望に応じて臨時開催 |
テストの現場における実務を重視した問題が出るため、テストの実務に活かすスキルを身につけたい方におすすめです。
6. QAエンジニアの年収の目安
転職支援サービス「マイナビエージェント」では、QAエンジニアの平均年収について以下のように提示されていました。
参照:品質管理・QA/平均年収ランキング|マイナビエージェント
dodaがまとめた「平均年収ランキング(平均年収/生涯賃金)【最新版】」によると、全職種の平均年収は「409万円」となっていました。これだけ聞くと、平均年収よりも低いと感じるかもしれません。
しかし実際にdodaでQAエンジニアの案件を調べてみると、600万以上の案件が190件もありました。
このことから、高年収を目指せることがわかります。統計学の知識、テストに関する知識など、スキルが高ければ高単価も目指しやすいかもしれませんね。
7. QAエンジニアの将来性
QAエンジニアの将来性について解説します。
7.1 「品質保証とスケジュール管理を両輪で回すこと」へのニーズはなくならない
QAエンジニアはこれまでお伝えした通り、
• 統計学などの視点を含めた改善
• 開発プロセスなども考慮した改善 などの品質保証だけでなく、改修を含めたスケジュールの管理能力が求められます。なぜならいくら品質が高くても、納期までに間に合わなければ信頼を落としてしまうから。逆に言うと、品質保証とスケジュール管理をセットで進められるQAエンジニアは重宝されます。重宝されるQAエンジニアを目指すには、以下の視点でテストを進めることが重要です。
• バグの洗い出しが網羅的で、改修後にテスト不足がみつからないか
• エラー結果でバグをつぶすだけでなく、根本原因を分析できるか
• 確率的にバグが発生しなかったケースを考慮できるか
こういったスキルがあれば、どの開発現場に言っても重宝されやすいでしょう。
7.2 テストプロセスの高速化に向けた工夫には余地がある
納期までにテストを間に合わせるためには、高速化や自動化が必要不可欠です。
• システムテストに、これまでのしわ寄せが全部集まってボトルネックになる
• テスト工数が確保できないため、リリースを延ばさないといけない
• 品質とスケジュールを守る、具体的な方法がわからない
といった問題に目を向けて、改善方法を考える人が必要です。そういった意味で、QAエンジニアはこれからも必要とされるでしょう。
またシステムテストが最終的なボトルネックになってしまうと、QAエンジニアと開発現場が対立して険悪なムードになってしまうことも。QAがボトルネックとならないよう、テストプロセスの高速化・自動化も進めていくことが重要です。
7.3 「高い技術力を持つマネージャー」に役割が近づいていく?
QAエンジニアの軸は、品質管理と統計的な視点です。そのためプログラマーやエンジニアと比べて、実際にプログラムを書く機会は少ないでしょう。
むしろ、マネジメントなどの上位のレイヤーに進んでいく可能性の方が高いです。実際に開発プロセスの設計や見直しをする業務もあり、高い技術力を持つマネージャーに近い役割となっていくことが予想されます。
「QAエンジニア」ではなく、「QAマネージャー」といったマネージャー・ディレクターなどと役割が一体化することもあるかもしれません。
8. まとめ
QAエンジニアは、ソフトウェアの質に大きくかかわります。スキルによって、質が変わるといっても過言ではありません。
統計学の知識、テストの知識、プログラミングスキルなど求められるスキルは多いですが、その分やりがいのある仕事です。少しでも興味を持った方は、ご紹介した資格などを受けてみてはいかがでしょうか。 今回の記事が、QAエンジニアに興味がある人の参考になれば幸いです。