企業が製品を作る際は「一定の品質を保っているか」を確認するために、品質検査という工程を経て出荷します。テストエンジニアとは、ソフトウェアの品質を担保するために脆弱性の有無を検査したり、意図した通りに動くか確認するための動作テストを行ったりするほか、テスト計画の立案、テスト計画および結果のレビューを担う職種です。
多くのソフトウェア開発の現場で必要とされていますが、AIの進歩や高性能な開発ツールの普及が進むことで近い将来テストエンジニアに求められるスキルが変わってくる可能性があります。
この記事では、今後のキャリアについて考えている若手テストエンジニアに向けて、テストエンジニアの将来性や今後身につけていくべきスキル、キャリアパスなどについて解説します。
テストエンジニアの将来性について
まずは、IT業界が直面している変化をふまえながら、テストエンジニアの将来性を考察していきます。
IT業界が直面する大きな変化
現在、IT業界はAIやIoTなどの先端技術の開発と利用が拡大しています。たとえばIoTでは、従来インターネットに接続されていなかったセンサー機器や家、車などがインターネットを通じてサーバーやクラウドサービスなどと接続されます。
これによって、自販機内の在庫数が遠隔で分かったり、車の不具合をリアルタイムで把握したりすることができるようになりました。つまり、従来はコンピューターやソフトウェアを中心としたIT業界の開発が、車や電化製品、家などさまざまなものにまで開発範囲が広がってきています。
また、AIの発達によりデザイン設計やコーディングなど、従来エンジニアが担当していた業務が機械に置き換わってきています。ほかにも、AIを搭載したソフトウェア開発など、AI活用を前提とした開発が急速に増えています。
こうした変化は、第4次産業革命ともいわれるほど大きなものです。
テストエンジニアの市場需要
IT業界が直面している大きな変革は、テストエンジニアの仕事にも影響を与え始めています。その一つが、AIによるテストの自動化です。
テストだけのテストエンジニアは需要が縮小
従来のテスト業務では、テストケースが組み合わせによって何万ケース、数十万ケースと膨大にあるため、特に重要なケースのみを取捨選択してテストを実施していました。しかし、AIによるテストの自動化により、網羅的なテストが可能になったり(品質向上)、労働コストの削減に繋がったりしています。
また、大規模開発の現場では、大手ベンダー製、あるいはグループ企業の開発支援ツールを取り入れていることがとても多いです。これまでは、規模が大きい案件ほど、テストエンジニアを必要としてきましたが、テストを自動化・効率化するツールが普及し、開発支援アプリケーションの性能も日々進歩していることから、テスト工程だけを担当するテストエンジニアの需要は今後増える可能性が低いでしょう。
今後のテストエンジニアに必要なのは「情報力」と「コミュ力」
テスト工程は、設計や開発工程よりも早い段階でAIに代替されていく工程だと言われているものの、ここ1〜2年で、テストエンジニアの業務がすべてAIに代わるとは考えにくいです。
例えば、Google社がテックブログ「Google Testing Blog」において、自社が現在システムのテストに関してどういうふうに取り組んでいるかを詳しく紹介しています。
記事の中で、「Googleではテストのみをおこなう役割はいない」と書かれており、開発チーム内では、開発エンジニアとテスターというような形で、明確な分業がされていないと述べられています。その代わりに、テストのノウハウやツールなどを共有する仕組みを作っているとも述べています。
テストに重点をおいた役割のエンジニアに対しては、「開発担当よりも広い視野を持つこと」、「テストに関する知識や環境の共有」が求められると述べられています。(※1)
またIBM社も、社内におけるテストについて紹介しています。同社も同様に、「情報共有」そして「質の高いコミュニケーション」が重要であると述べています。(※2)
上記大手2社の動きからもわかるように、人間が行う作業に関しては自動化が進んでいるようです。しかしながら、テストエンジニアには依然として需要があり、高い情報力とコミュニケーションスキルがテストエンジニアというポジションにとって非常に重要なスキルになっていることがうかがえます。
※1 Google Testing Blog By James Whittaker 「How Google Tests Software – Part One」より。(2020年9月11日アクセス)
※2 IBM Business Operations By Chip Davis 「Test management best practices: How to improve your testing efforts」より。(2020年9月11日アクセス)
テストエンジニアが今後活躍できる場
開発現場では、テスト工程だけを担当するエンジニアはあまり多くないのが現状です。プログラマーがテスト工程を兼ねていることも少なくありません。
ただし、コミュニケーションを必要とする業務やチームのマネジメントは自動化が難しいため、どうしても人間が行わなければいけません。また、属人化している領域であったり、10〜20年前から稼働しているシステムの場合、長期間そのシステムに携わったエンジニアでなければ対応できないケースも多いです。こういった現場では、テストエンジニアでも引き続き活躍できるでしょう。
したがって、今後は「テストエンジニアとしてのスキル+α」を持っているエンジニアが高い市場価値を持つようになります。長年現場でシステムに携わり、幅広い知識のあるベテランメンバーや、チームリーダーとしてマネジメント経験のあるメンバー、さらにはテスト以外の工程も担当可能な専門知識を持っているエンジニアは、今後も活躍し続けられるでしょう。
テストエンジニアが「きつい」「やめとけ」といわれる理由
テストエンジニアの仕事はきついと言われることがあります。それはなぜでしょうか。
納期が厳しく追われていると感じやすい
システム開発には納期があります。設計変更などで設計工程や実装工程に遅れが発生すると、テスト工程にしわ寄せが来ることになります。最終的な納期を後ろ倒しにすることが難しいからです。そうなると、必然的に業務が忙しくなり残業が多く発生することになります。
単調な作業にストレスを感じることがある
テストエンジニアの仕事はテスト仕様書通りに、ひたすら単純な作業を繰り返して行うというものです。本来、エンジニアはクリエイティブで自由なイメージですが、テストエンジニアには自分で考えてものを創り出すというよりも、指示された通りに動くことが求められます。単純作業が苦にならないという人には向いていますが、自分の裁量で仕事をしたい人には苦痛に感じるかもしれません。
テストエンジニアとして活躍し続ける上で求められるスキル
テスト計画の立案スキル
多くの現場ではシステム設計、開発(コーディング)を経てテスト工程へと順番に進んでいく「ウォーターフォール型」という開発手法が取り入れられています。
この開発手法では、一つの工程の遅れが後続にまで影響が出てしまうことから、スケジュール通りに進めていくことが重要とされています。
一般的にテストと呼ばれる工程は「単体テスト」、「結合テスト」、「総合テスト」など、いくつかの段階に分かれており、全体の工程として見るとテストが占める割合は少なくありません。
これらの理由から、テストエンジニアにはテストだけでなく全体のスケジュールを意識し、システムを俯瞰的に捉えた上で立案や提案をしていくスキルも求められます。
そして、テストの実施においては対象となるシステムの要件、要求レベルに応じて必要なテストの種類や具体的な実施手順などを提案する必要があります。
セキュリティ要件として代表的なのはSQLインジェクションやクロスサイトスクリプティングへの対策、パフォーマンス要件では応答時間や処理件数、最大同時接続数などが挙げられます。
以上の例以外にも様々な要求をされるため、テストエンジニアは要件を把握したうえでテスト実施工数やリソースの見積もりを出し、テストがスケジュール通り円滑に進められるように計画するためのスキルが求められます。
テスト結果の分析スキル
テストで確認をするのはバグが出なかったという結果だけではありません。実施するにあたり「テスト項目」というものが設けられています。
「設計通りの動作をしているか」、「想定している操作パターンでも正常に動くか」、「求められている性能に達しているか」などが試験仕様書などで細かく定められているため、テストエンジニアはこれらを正確に実施しエビデンス(証跡)をまとめます。
バグを発見し原因箇所の特定や情報共有を速やかに行うことができれば、デバッグ作業やテスト以前の工程の見直しがあったとしてもスムーズに進めやすくなります。
バグを報告する際には、「ただバグを発見した」という報告だけでなくバグ同士の関連性やバグ発生条件の仮説などの分析を添えることでその後のバグの改修作業を円滑にできることがあります。
口頭での報告やテキストだけでなく、ログや画面キャプチャーなども合わせて共有することでより有意義な情報になるでしょう。
このような場面でもプロジェクトへの貢献をすることができるため、テスト結果の分析はテストエンジニアにとってやりがいのある業務のひとつと言えます。
マネジメントスキル
大規模開発の現場に限ったことではありませんが、テスト工程では業務が膨大な量になることもしばしばあります。そうなったとき、テストエンジニアチームのリーダーや経験値の高いメンバーにはマネジメントスキルも求められてきます。
ミーティングなどで全体の意識合わせやスケジュール確認を定期的に実施していたとしても、一番チームを把握できているのはチームリーダーやベテランメンバーです。そのため作業が膨大であったり難易度が高い、時間や工数がかかる業務などを適確に割り振ったりスケジュール調整をしていくことは重要なスキルです。
テスト工程では一見簡単そうに見えるテストであってもテスト環境の構築や必要な操作やデータがわからないことも起こり得るため、知識の共有や環境整備なども合わせてマネジメントしていけるスキルは大きな強みとなってきます。
テストエンジニアのキャリアパス
テストエンジニアに必要がスキルを確認したうえで、こちらでは、テストエンジニアのキャリアパスについて解説します。テストエンジニアには、主に「スペシャリスト(テスター)」「テストマネージャー」「テストアナリスト」という3つのキャリアパスがあります。これらを詳しくみていきましょう。
経験を活かしたキャリアアップ
ひとつの現場でのベテランとなったテストエンジニアは、テスト工程だけでなくシステム全体の知見があるため重要なメンバーとしてテスト工程を任されることもあるでしょう。逆に様々な現場を経験している場合は、デバッグツールやテストパターン、開発環境などに関する幅広い知識やテスト経験を持った即戦力として期待されます。
以下に挙げているのはそういった高いスキルを要求されるテストエンジニアのポジションです。
スペシャリスト(テスター)
製品が期待した動作、パフォーマンスを発揮しているかなどをチェックするには、精度の高いテスト計画の作成や分析を行うことで、検査すべき項目に漏れがないようにする必要があります。初級のテストエンジニアはテストを実行する立場ですが、スペシャリストではテストの設計やテスト方法の提案、結果の判定、報告といった業務を担当します。
テストマネージャー
テストは多くの場合、個人ではなくチームとして行います。マネージャーは、テストチーム全体を統括、管理し、設計したテスト計画に基づいて業務が遂行されるよう監督する仕事です。
また、テストを行う上で、顧客への利用ケースのヒアリングや協力要請なども大切な仕事に含まれます。ヒアリングは重要な業務で、顧客やエンドユーザーには、開発担当のエンジニア側と違った観点からアプローチしなくてはいけません。想定外の操作をきっかけにリリース後のバグが発生することもあるため、テストマネージャーにはそういったバグなどを未然に防ぐための確認、検討をするスキルが求められます。
テストマネージャーは、一般的に、テスターを経てからキャリアアップで就く職種です。
テストアナリスト
テストアナリストは、製品の仕様や環境を深く理解している必要があります。その上で、どのようなテストが必要か定義したり、テスターが作成したテスト計画やテストケースを分析したりします。
品質を担保するには、テストケースに漏れがないことが大前提となりますし、テスト方法が不適切でも品質を担保できません。テストアナリストは、深い知識と豊富な経験をもとに分析や改善計画の立案などを行います。
テストアナリストは顧客やエンドユーザーが求める機能や性能を把握する必要があるため、いわゆる上流工程で必要となる設計関連の知識も必要となってきます。要件や設計の内容を踏まえた上でテスト計画を立てたり結果の分析を進めていくようなスキルが必要です。
プログラマーへの転職もキャリアパスのひとつ
設計や製造工程に携わりたくなったとしても同じ職場や現場でテストエンジニアから職域変更できる場合は多くありません。しかし転職を視野に入れることで上流工程のキャリアを積める可能性が高まります。
テストエンジニアの実務経験があったとしてもプログラマーへ転職する場合は業界未経験者同様に書籍やプログラミングスクールなどでスキルを身につける必要がありますが、昨今は書籍やスクールだけでなく学習サイトも充実しているためパソコンさえあれば基礎から学習をすることができます。
また、「実際の開発現場でソースコードに触れている」「独自ソフトや開発ツールを扱ってきた」というテストエンジニア時代に培った経験は全く無駄にならないため、プログラミングスキルを身につければ転職活動は未経験者に比べて非常に有利になります。
テスト工程はプログラマーが担当することが多いためテストエンジニアの経験を活かしやすい、というのがプログラマーへの転職における一番の強みですが、個人では扱えない高価なソフトウェアやミドルウェア、データベースなどを扱った開発経験や、金融系、勘定系、物流系などで多く存在する業界特有の用語や言い回しの知識もあればさらにアピールできます。
プログラマーへの転職をより有利に進めるため、プログラミング学習と合わせて資格を取得
できれば効率的です。学習に役立つのは勿論、習得レベルの目安となったり学習意欲のアピールができます。
プログラマー以外の業種への転職
プログラマーへの転職は実務経験をアピールして生かせる一方、テストエンジニアとしての経験を生かせる異業種というのは非常に少ないです。
しかし、VBAのスキルであったりコミュニケーションスキル、スケジュール管理やミスの少ない作業を得意としているのであればデスクワーク系、営業事務などの業務に適性があるかもしれません。
全く異なる業種からの転職が現代では珍しくないため、テストエンジニアの経験がありPCを扱うことへの苦手意識などがなければ選択肢は豊富にあります。
まとめ
この記事では、テストエンジニアの将来性や今後求められるスキルに加え、キャリアパスやスキルアップに役立つ資格について解説しました。昨今は企業のシステム投資が盛んなことから、テストエンジニアは一定需要を維持していますが、中長期的には一部の作業がAIなどのツールに代替される可能性があります。大切なのは、AIに代替される領域、今後も人間が担う領域を見極めた上で、求められるスキルを習得し続けることです。
IPAや経済産業省、各種資格の運営機関は、必要なスキルや将来展望に関する情報を随時発信しています。日々これらの情報を得て将来設計をしていきましょう。
\ 記事をシェアする /